最近我接连犯了两个比较重大的失误,非常的低级,低级到我无法原谅我自己。 一个是数据删除操作,因为采用全新的框架,不是很熟悉流程,所以在删除前进行了一些断点测试,查看参数调用情况,一直跟踪到核心代码,最后一次测试的时候,字段名没有传入,事实上这完全是我的故意,因为我想知道,字段名没有传入到底框架会给出什么样的错误提示,写了一个这样的SQL语句 DELETE FROM post WHERE ’123456′ AND ‘ 456789′ 这是执行这个语句花了一份多钟,我还以为发生错误了,因为是周六晚上调试的,周日早上睡大觉,运营的同学打电话给我们系统管理员,很多用户反映日志丢失了,我猜想我完了,就昨天我发布了新的功能,因为周末太闲。在mysql 的bin log中查到一条类似如上的SQL语句,转念一想,这个WHERE根本就没用,没有字段的where查询,后面都是true,相当于: DELETE FROM post WHERE true AND true 执行了之后的结果是,整个表被清空!还好我们采用的是分库分表的策略,我删除的不过几百个表中的一个,丢掉近一万个用户数据,最后劳烦我们万能的系统管理员花开同学 从备份中给找回来了。这其中得到神仙的协助, 虽然没有任何人批评或指责我,我永远记得这个教训。 第二个是关键词匹配系统,主要用来查找包含关键字的垃圾文章(spam)。这个是写的第一个完全不需要模板的程序,说白了,就是命令行运行的东西,但还算不上真正意义上CLI程序,关键字存在一个表的一个字段中,以回车分割每个字符,这个是通过另外的一套WEB界面输入的,我提取关键词的方法是explode(‘\n’, $str),结果运行了好几十次,查到的匹配文章少的可怜,今天晚上(2009-03-10)老魏告诉我,每天的spam远远大于我查找的数量,我查到的几乎可以忽略不计,这下我汗颜了,我一直以为是我们所有的用户都非常纯洁,所以才只有那么几个spam,原来是我程序出问题了,之前我都是直接增加一个常用的词进行测试的,比如“的”,查找非常准确,所以我深信我的程序没有问题,最后在刚哥(我刚到Bus时被指定的师傅,一位做了8年开发的牛人)的排查下,原来是windows下的换行和Linux下的换行根本就不是一回事,windows下是以 \r ,Linux下是\n,在将每个关键字trim一下之后,搜20个表就搜了近千篇垃圾文章。 我应该好好检讨我自己,无知有时候真的会害死人,因为不知道,所以死了也不知道怎么死了!
Posts Tagged: BlogbusDEV
解决RouterOS CPU Load 100%问题
Routeros version :2.9.6 解决办法:卸载wireless 模块 命令: /system package uninstall wireless 靠,MD,困扰我近一个月的问题居然就这样解决的 update:2009-02-20 刚刚看到有人评论说命令不行,如果你是用winbox管理ROS的话,请做如下步骤: 1、用winbox登录ROS(这是废话,不登录怎么管理啊) 2、左边栏中点击“system”,各个版本可能为止不一样,我的从上往下数是第七个菜单 3、点击system之后会有个下拉菜单,选择“packages” 4、这时会弹出一个package list 选中里面的wireless,点击上面的最右上角红X,然后这个模块会变成灰色 5、重启路由器
mysql 删除表中的重复记录,只保留其中一条
MySQL中漏掉了40%左右的数据,寻找这个错误的代价是花了三天,将所有的代码重新检查了一遍,由于代码不是我写的,看得晕头转向,上苍保佑,我还不算太笨,最终找到了原因,不过接着就碰到另外一个问题,找回的数据中存在重复,而且在无法在重复的健上建立唯一,于是我想了一个最笨的方法 SELECT * FROM sub_new WHERE email IN ( SELECT email FROM sub_new GROUP BY email HAVING COUNT(email) > 1 ) 这种算法是最傻也是最没出息的算法,在数量在1W的时候还可以接受,到10W就要两分钟了,到50W就死在那里了,所以告诫那些跟我一样天资不算聪明的人,数据量比较大的时候千万别用这种方法,这种类似冒泡排序的算法复杂度是O(n^2),如果你有10W条记录,你自己乘一下吧 接着又想了另外一个方法,虽然机械了点,不过效率非常之高,分三步走: CREATE TABLE tmp AS SELECT * FROM youtable GROUP BY name DROP TABLE youtable ALTER TABLE tmp… Read more »
vista不能自动获取ip解决办法
上午折腾了一下Ubuntu,换到Windows下发现不能联网了,汗,难道我的网卡折腾坏了?仔细检查了之后确认网卡没坏,本地连接是好的,于是又检查了一下网线,弄得一身灰之后发现依然有问题,于是乎我有尝试了一边所有的关于网络的DOS命令,结果依然不行,最后弄了一台电脑,Google之后得知,原来是Vista的问题,郁闷。 此问题是由 Windows Vista 和 Microsoft Windows XP Service Pack 2 (SP2) 之间的设计差异造成的。具体来说,在 Windows XP SP2 中,DHCP 探索数据包中的 BROADCAST 标志设置为 0(禁用)。而在 Windows Vista 中,并未禁用 DHCP 探索数据包中的 BROADCAST 标志。因此,某些路由器或非 Microsoft DHCP 服务器将无法处理 DHCP 探索数据包。 解决方案: 单击“开始” 收起这个图片展开这个图片 ,在“开始搜索”框中键入 regedit,然后单击“程序”列表中的“regedit”。 收起这个图片展开这个图片 如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID} 在此注册表路径中,单击与连接到网络的网络适配器相对应的“(GUID)”子项。 在“编辑”菜单上,指向“新建”,然后单击“DWORD (32 位)值”。 在“新值 #1”框中,键入 DhcpConnEnableBcastFlagToggle,然后按 Enter。 右键单击 DhcpConnEnableBcastFlagToggle,然后单击“修改”。 在“数值数据”框中,键入 1,然后单击“确定”。 关闭注册表编辑器… Read more »
TCP和UDP的区别
中午吃饭的时候,有位老兄,突然从QQ中跳出来,冒出一句:TCP和UDP的区别是什么?我草草的回答了一句,一个是有连接的一个是无连接的。现具体描述如下: TCP/IP 传输层 OSI 和 tCp/Ip 模型在传输层定义两种传输协议:tCp(或传输控制协议)和 UDp(或用户数据报协议)。 UDP UDp 与 tCp 的主要区别在于 UDp 不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误地到达目的地。UDp 在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用 UDp。ICQ 短消息使用 UDp 协议发送消息。 许多程序将使用单独的 tCp 连接和单独的 UDp 连接。重要的状态信息随可靠的 tCp 连接发送,而主数据流通过 UDp 发送。 TCP TCP 的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。 为 确保正确地接收数据,TCP 要求在目标计算机成功收到数据时发回一个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要 时丢弃它。
统计一下自己最常用的命令
车大人在MSN给我发过来一个链接,打开一看,发现是小花学习Linux日志分析的一些命令的笔记,刚好小曹也出去了,没人玩,统计了一下专题服务器的error log 发现了问题基本上都是non object这个老大难问题,这个问题并不是程序问题,而是程序需要查询的表被锁了,返回的对象是空。 好吧,统计自己最常用的命令是这样的: history | awk {‘print $4′} | sort | uniq -c | sort -k1 -rn | head 得到的结果是: 330 cd 225 sudo 199 ls 54 exit 33 ll 27 grep 15 man 12 tail 11 whois 8 vi 似乎这个有点乱,用到主要知识是Linux 管道(pipe),awk,sort 简单点说Linux管道是从一个程序进程向另一个程序进程单向传递信息的一个方式和技术 它的主要特点是:单向 管道是将一个进程的输出作为另外一个进程输入,在接收进程信息前,系统临时保留信息 当然这是我自己关于管道的理解,不一定对 关于awk,sort等命令的使用知识可以参阅车大人的笔记:GUN工具箱,不再赘述 不过神仙同学的脚本更加厉害,连命令后的参数都统计出来了 history | perl -n -e… Read more »
Recent Comments