September 24, 2015
brew安装mysql为系统服务
"默认情况下,使用brew install mysql 安装完mysql以后,需要手动启动mysql。为了方便以后使用,这里将mysql安装成系统服务。\nbrew info mysql 已经给了.plist文件,只需要load一下就可以,plist文件名不一定是com.mysql.mysqld.plist, 可以先到 `brew –prefix mysql` 目录看下。具体如下:\nmkdir -p ~/Library/LaunchAgents cp `brew --prefix mysql`/com.mysql.mysqld.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist 其实 http://stackoverflow.com/questions/8014500/autostart-mysql-on-boot-from-terminal 这里有说。\ncp `brew --prefix mysql`/*mysql*.plist …"
September 19, 2015
Xcode7 使用NSURLSession发送HTTP请求出错
"控制台打印:\nApplication Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.\n在iOS9 中,苹果将原http协议改成了https协议,使用 TLS1.2 SSL加密请求数据。\n解决方法:\n在info.plist中添加 NSAppTransportSecurityNSAllowsArbitraryLoads 官方文档:\nhttps://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-DontLinkElementID_13"
September 19, 2015
xcode7下安装Alamofire第三方网络基础库
"1.安装类库管理工具\nCocoaPods安装和使用教程 去中心化的依赖管理器Carthage (这里没有使用这个库)\n2.安装Alamofire\nhttps://github.com/Alamofire/Alamofire\n以下为在使用Cocopods管理Alamofire类库的前后项目结构图,项目名称为CocoaPodsDemo"
September 10, 2015
git中 gitignore 文件的正确用法
"使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中。理解 gitignore 的 pattern 规则十分重要。\nPattern 规则 关于 Pattern 规则,可以查看 git 的相关文档: http://git-scm.com/docs/gitignore,大致有以下几点:\n空行不匹配任何内容,所以可以作为块分隔符; # 开头表示注释,如果相匹配 #,可以在前面加一个反斜杠,即 \\#; 除非加了反斜杠,否则一连串的空格会被忽略; 如果在匹配的内容前面加上 !,则这些匹配过的部分将被移出,如果要匹配以 ! 开头的内容,需要加上反斜杠,如 \\!important.txt; 如果一个匹配 pattern 后面有一个斜杠,如 foo/,则默认会匹配所有(包含父子文件夹)中的 foo 文件夹内容,并且它不会匹配单个的文件; 如果一个匹配 pattern 不包含斜杠,如 foo,Git 会将其作为一个 shell 的查找命令匹配内容。 需要注意的**: …"
August 10, 2015
Mysql Innodb的两种表空间方式
"要说表空间,Mysql的表空间管理远远说不上完善。换句话说,事实上Mysql根本没有真正意义上的表空间管理。Mysql的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间。只要在my.cnf里面增加innodb_file_per_table=1就可以从共享表空间切换到独立表空间。当然对于已经存在的表,则需要执行alter table MY_TABLE engine=innodb命令迁移数据。\n共享表空间方式 由于是默认的方式,就暂且理解为Mysql官方推荐的方式。相对而言所有的数据都在一个(或几个)文件中,比较利于管理,而且在操作的时候只需要open这一个(或几个)文件即可,相对来说代价很低。\n但问题是在数据达到以G为单位来计算的时候优劣逆转。一个大小惊人的文件很不利于管理,而且对于一个如此巨大的文件来说,读写它需要耗费的资源一样巨大。更加令人费解的是,MySQL竟然将索引和数据保存于同一个文件中,索引和数据之间尚存在资源争用,不利于性能的提升。你当然可以通过innodb_data_file_path的配置规划多个表空间文件,但MySQL的逻辑是“用满后增 …"
August 10, 2015
[MySQL优化案例]系列 — 索引、提交频率对InnoDB表写入速度的影响
"本次,我们通过对比,明明白白的知道索引、提交频率对InnoDB表写入速度的影响,了解有哪些需要注意的。\n先直接说几个结论吧:\n1、关于索引对写入速度的影响: a、如果有自增列做主键,相对完全没索引的情况,写入速度约提升 3.11%; b、如果有自增列做主键,并且二级索引,相对完全没索引的情况,写入速度约降低 27.37%; 因此,InnoDB表最好总是有一个自增列做主键。\n2、关于提交频率对写入速度的影响(以表中只有自增列做主键的场景,一次写入数据30万行数据为例):\na、等待全部数据写入完成后,最后再执行commit提交的效率最高; b、每10万行提交一次,相对一次性提交,约慢了1.17%; c、每1万行提交一次,相对一次性提交,约慢了3.01%; d、每1千行提交一次,相对一次性提交,约慢了23.38%; e、每100行提交一次,相对一次性提交,约慢了24.44%; f、每10行提交一次,相对一次性提交,约慢了92.78%; g、每行提交一次,相对一次性提交,约慢了546.78%,也就是慢了5倍; 因此,最好是等待所有事务结束后再批量提交,而不是每执行完一个SQL就提交一次。\n曾经 …"
August 10, 2015
[MySQL FAQ]系列 — 什么情况下会用到临时表
"MySQL在以下几种情况会创建临时表:\n1、UNION查询; 2、用到TEMPTABLE算法或者是UNION查询中的视图; 3、ORDER BY和GROUP BY的子句不一样时; 4、表连接中,ORDER BY的列不是驱动表中的; 5、DISTINCT查询并且加上ORDER BY时; 6、SQL中用到SQL_SMALL_RESULT选项时; 7、FROM中的子查询; 8、子查询或者semi-join时创建的表; EXPLAIN 查看执行计划结果的 Extra 列中,如果包含 ** Using Temporary** 就表示会用到临时表。\n当然了,如果临时表中需要存储的数据量超过了上限( tmp-table-size 或 max-heap-table-size 中取其大者),这时候就需要生成基于磁盘的临时表了。\n在以下几种情况下,会创建磁盘临时表:\n1、数据表中包含BLOB/TEXT列; 2、在 GROUP BY 或者 DSTINCT 的列中有超过 512字符 的字符类型列(或者超过 512字节的 二进制类型列,在5.6.15之前只管是否超过512字节); 3、 …"
August 10, 2015
[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
"我们先了解下InnoDB引擎表的一些关键特征:\nInnoDB引擎表是基于B+树的索引组织表(IOT);\n每个表都需要有一个聚集索引(clustered index);\n所有的行记录都存储在B+树的叶子节点(leaf pages of the tree);\n基于聚集索引的增、删、改、查的效率相对是最高的;\n如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择其作为聚集索引;\n如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引;\n如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。\n综上总结,如果InnoDB表的数据写入顺序能和B+树索引的叶子节点顺序一致的话,这时候存取效率是最高的,也就是下面这几种情况的存取效率最高:\n使用自增列(INT/BIGINT类型)做主键,这时候写入顺序是自增的,和B+数叶子节点分裂顺序一致;\n该表不指定自增列做主键,同时也没有可以被选为主键的唯一索引(上面的条件),这 …"
July 30, 2015
用shell分析nginx日志里的访问最多的IP地址
"# $3的位置是IP地址,可按情况修改,如: # [30/Sep/2012:19:14:47 +0800] 110.75.176.58 www.example.com \u0026#34;GET / HTTP/1.1\u0026#34; 200 3629 \u0026#34;-\u0026#34; \u0026#34;Yahoo! Slurp China\u0026#34; cat nginx.log | awk \u0026#39;{print $3}\u0026#39; | sort | uniq -c | sort -nr | less #输出: # 120 189.17.37.109 # 96 12.15.61.22 # 95 12.20.29.33 # 。。。 。。。 "
July 24, 2015
安装apache+php(fastcgi)
"最近有下二次开发的程序,由于源程序使用了zend压缩,提示需要安装 Zend Guard Loader 扩展。而安装zend guard 7后,发现在phpinfo()里检测不到,后来才发现原来zend guard只能使用nfs非安全线程的php,没有办法,重新下载NFS版本的php版本。以下为安装要点:\n我用的是WampServer集成环境,于是就想到了把 Apache 换成 FastCGI 模式来跑 PHP5.3 nts 版,这样就可以使用Zend Guard Loader 扩展了。\n1、下载 PHP5.3.28 ,解压到 F:/php5.3.28nts ,配置好 php.ini,也顺便把 Zend Guard Loader 扩展配置好。\n2、下载 mod_fcgid-2.3.6-win32-x86.zip 或 http://www.apachelounge.com/download/ 解压 manual、modules 目录中的文件到 f:\\wamp\\bin\\apache\\apache2.2.22 对应目录里去。\n3、打开 Apache …"