摘要: 很强大的命令。sort [-bcfMnrtk][源文件][-o 输出文件] -b忽略每行前面开始出的空格字符。-c检查文件是否已经按照顺序排序。-f排序时,忽略大小写字母。-M将前面3个字母依照月份的缩写进行排序。-n依照数值的大小排序。(number?)-o将排序后的结果存入指定的文件。-r以相反... 阅读全文
posted @ 2014-04-14 00:03 优雅的c 阅读(709) 评论(0) 推荐(0) 编辑
摘要: 表分区 partition当一张表的数据非常多的时候,比如单个.myd文件都达到10G, 这时,必然读取起来效率降低.可不可以把表的数据分开在几张表上?1: 从业务角度可以解决. (分表)比如, 通过id%10 , user0 , user1....user9, 这10张表根据不同的余数,来插入或查询某张表.2: 通过mysql的分区功能mysql将会根据指定的规则,把数据放在不同的表文件上.相当于在文件上,被拆成了小块.但是,给客户的界面,还是1张表.常用的规则:根据某列的范围来分区, 也可以某列的散点值来分区.示例: 按列的范围来分区以用户表为例, uiduid [1,10) ---> 阅读全文
posted @ 2014-02-24 19:03 优雅的c 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 下载安装mysql_proxy:http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz解压后, 该目录包含已经编译好的二进制文件 .可以通过mysql-proxy --help查看帮助1: 利用mysql_proxy实现负载均衡执行mysql_proxy./mysql-proxy-path/bin/mysql-proxy \--proxy-backend-addresses=192.168.1.199:3306 \--proxy-backend- 阅读全文
posted @ 2014-02-24 19:01 优雅的c 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 一:主从机器a:192.168.1.100机器b: 192.168.1.1011,给a :my.cnf添加以下配置server-id=100log-bin=mysql-binbinlog-format=mixed |row|statement2,在a上新建帐号grant replication slave,replication client on *.* to 'repl'@'192.168.1.%' identified by 'repl';3,给b:my.cnf添加以下配置server-id=101relay-log=mysql-relay 阅读全文
posted @ 2014-02-24 18:53 优雅的c 阅读(766) 评论(0) 推荐(0) 编辑
摘要: Shc可以用来对shell脚本进行加密,可以将shell脚本转换为一个可执行的二进制文件。经过shc对shell脚本进行加密后,会同时生成两种个新的文件,一个是加密后的可执行的二进制文件(文件名以.x结束),另一个是C语言的原文件(文件名以.x.c结束)。下面就说明一下shc的安装,参数,以及使用示例:下载安装:(官网下载地址: http://www.datsi.fi.upm.es/~frosal/sources/)# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz# cd shc-3.8.7# make# make 阅读全文
posted @ 2014-02-21 11:01 优雅的c 阅读(1539) 评论(0) 推荐(0) 编辑
摘要: 功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include #include int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int s... 阅读全文
posted @ 2014-02-14 10:20 优雅的c 阅读(1717) 评论(0) 推荐(0) 编辑
摘要: 经过wireshark抓包分析,得出结论如下。记录以便记忆。A和B分别位于两个节点之间。A和B第一次通信,A向B的默认端口发起tcp三次握手。如果防火墙允许,则A和B建立tcp链接。A发送给B请求的数据。B启动一个子进程,开另外一个端口,并把端口号告诉A,说:我们之后用这个端口通信。然后B结束tcp链接,四次挥手。A开启一个新的端口,和B的新端口建立tcp.然后开始通信。 阅读全文
posted @ 2014-01-22 18:38 优雅的c 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 角色 积分 排名1 100 2 130 3 134 4 131 5 123 6 103 7 104 每日按照积分重新排名一次,计算按照积分的排名前50常规思路: 1、select * from xxx order by 积分 desc limit 50 2、程序里计算 逐个update 排名 = yyy where 角色 = 。。。不借助额外临时表的情况下,还有更简便的方法么?经过折腾试验一番,总结了一条sql:update xxx as t1,(selec... 阅读全文
posted @ 2014-01-09 16:46 优雅的c 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 最近,项目中的所有crond定时尽量取消,改成触发式。比如每日6点清理数据。原来的逻辑,写一个crond定时搞定现在改为触发式6点之后第一个玩家/用户 进入,才开始清理数据。出现了一个问题1 如何确保第一个玩家触发?update xxx set shijian = date('Y-m-d',time()-6*3600) 返回为0 则表示已有人触发过 返回1 表示第一个玩家 触发这又出现了一个问题:第一个人进入,触发清理数据。第二个人进入,进入正常数据操作,但是第一个人触发的清理数据操作也许并未完成。第二个玩家操作的数据可能被清理数据清理掉,如何防止??最后总结了一套比较可行的方 阅读全文
posted @ 2014-01-09 16:41 优雅的c 阅读(192) 评论(0) 推荐(0) 编辑
摘要: /*** author:lingd* date:2013-12-5*/#include#include#define String char*void get_next(String ,int* );int str_pos(String ,String ,int );void get_nextval(String T,int* next);int main(void){ int next[100],len,i; String s = "ababababdcabababababdc"; String t = "abababc"; printf(" 阅读全文
posted @ 2013-12-05 11:46 优雅的c 阅读(305) 评论(0) 推荐(0) 编辑