总结
wshelly
业精于勤荒于嬉行成于思毁于随三千年读史不外功名利禄九万里悟道终归诗酒田园
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
golang 一行一行读文件
package mainimport ( "bufio" "fmt" "os")func main() { counts := make(map[string]int) files := os.Args[1:] if len(files) == 0 { count转载 2017-04-11 19:33:26 · 6319 阅读 · 0 评论 -
kernel: TCP: time wait bucket table overflow错误的解决办法
kernel: TCP: time wait bucket table overflow错误的解决办法现象为message日志报如下错误:Feb 27 10:53:36 web kernel: __ratelimit: 5 callbacks suppressedFeb 27 10:53:36 web kernel: TCP: time wait bucket tabl转载 2014-03-14 18:45:50 · 5064 阅读 · 0 评论 -
有空分析下,链表很牛逼
/*********************** Licence: MIT* Author: Leo Ma* Date: 2014-03-01*********************/#include #include struct sk_link { struct sk_link *next, *prev;};static inline voidskip_list转载 2014-03-12 19:01:15 · 802 阅读 · 0 评论 -
linux 下磁盘满问题
df -h显示/home空间被占用100G,但是du -sh统计出来的结果却是/home分区下所有文件总共只占用2G的大小。 非常奇怪的情况。 后来用lsof /home | grep -i delete 查找了一下终于发现问题的关键所在。 存在很多已被删除的文件占用磁盘。 造成这种情况的原因是什么呢原创 2014-02-19 19:01:40 · 920 阅读 · 0 评论 -
20140208完成博客
字符串分割 总结 std::string::size_type spos = 0, epos = 0; int len = strlen(SYSTEM_UID_SPLIT); std::string tmp_uids(""); while ( (epos = systemuids.find(SYSTEM_UID_SPLIT, spos)) != std::转载 2014-02-08 15:07:57 · 846 阅读 · 0 评论 -
linux 下mysql忘记密码
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态。最安全的状态是到服务器的Console上面操作,并且原创 2014-01-20 17:48:33 · 744 阅读 · 0 评论 -
记录
http://www.cnblogs.com/catch/p/3161403.html 无锁队列原创 2013-11-19 18:17:24 · 845 阅读 · 0 评论 -
linux下 mysql data目录迁移
错误提示 100716 3:35:54 [Warning] Can't create test file /home/data/mysql/localhost.lower-test100716 3:35:54 [Warning] Can't create test file /home/data/mysql/localhost.lower-test/usr/sbin/mysqld:转载 2014-01-09 19:24:52 · 4934 阅读 · 0 评论 -
深入浅出DDoS攻击防御
http://www.kuqin.com/security/20120730/323531.html转载 2013-11-15 11:11:19 · 727 阅读 · 0 评论 -
Centos 安装常用软件
以前没安装过软件,试过一次才知道安装MySQL。[root@sample ~]# yum -y install mysql-server ← 安装MySQL配置MySQL[root@sample ~]#vim /etc/my.cnf ← 编辑MySQL的配置文件[mysqld]datadir=/var/lib/mysqlsocket=/var/lib原创 2013-04-08 23:13:02 · 875 阅读 · 0 评论 -
linux下TIME_WAIT过多的解决办法(ip_local_port_range)(转)
p.s. 最近nginx不正常,表现为首次打开的时候会很慢或者干脆打不开,要刷新下才能继续。fast-cgi的TIME_WAIT比较多5百左右,占到总连接 4分之1。试试是不是ip_local_port_range问题,原则就是不与本地已经使用的端口范围冲突,设置端口 2**** 到 4**** 。 (重启系统需要重新设置)如 果使用了nginx代理,那么系统TIME_WAIT的数量会转载 2014-03-14 18:14:30 · 11932 阅读 · 0 评论 -
Copy-On-Write 写时复制原理
linux内核在使用fork创建进程时,基本上会使用Copy-On-Write(COW)技术。这里解释一下COW技术以及为什么在fork中使用。WIKI上对COW的解释:Copy-on-write (sometimes referred to as "COW") is an optimization strategy used in computer programming.原创 2014-04-01 19:10:54 · 18027 阅读 · 3 评论 -
数据结构(C实现)------- 图的邻接矩阵表示
http://blog.youkuaiyun.com/jesson20121020/article/details/42467797转载 2015-01-07 13:43:46 · 797 阅读 · 0 评论 -
golang chan 使用例子
type TcpListeners struct { conns chan *net.TCPConn closing chan bool wait *sync.WaitGroup}func NewTcpListeners(addrs []string) (v *TcpListeners, err error) { v = &TcpListeners{转载 2017-03-24 18:31:07 · 769 阅读 · 0 评论 -
golang 线程池下载
type GoroutinePool struct { 2 Queue chan func() error 3 Number int 4 Total int 5 6 result chan error 7 finishCallback func() 8 } 9 10 // 初始化11 func (self *Goro转载 2017-03-24 17:30:11 · 590 阅读 · 0 评论 -
golang 线程池
package mainimport "fmt"func worker(id int, jobs chan int, results chan int) { for j := range jobs { fmt.Println("worker", id, "procesing job", j) results <转载 2017-03-24 17:12:58 · 1381 阅读 · 0 评论 -
golang json处理
package mainimport ( "encoding/json" "fmt" "os")type ConfigStruct struct { Host string `json:"host"` Port int `json:"port"` AnalyticsFile string `json转载 2017-03-24 16:04:57 · 732 阅读 · 0 评论 -
golang使用信号量热更新
package mainimport ( "encoding/json" "fmt" "io/ioutil" "log" "os" "os/signal" "sync" "syscall")//用json配置测试type Config struct { Test1 string `json:"Test1:`转载 2017-03-20 18:25:46 · 2302 阅读 · 0 评论 -
golang LRU实现(使用双向链表实现)
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。lru.gotype Key interface{}type entry struct { key Key value interface{} } type Cache Str转载 2017-03-27 17:27:08 · 1638 阅读 · 1 评论 -
socket 访问百度
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-06-14 18:10:10 · 1425 阅读 · 0 评论 -
linux select例子
#include #include #include #include #include #include #include #include #include #define MYPORT 1234 // the port users will be connecting to#define BACKLOG 5 // how many pending con转载 2015-12-16 12:31:03 · 453 阅读 · 0 评论 -
分析能力亟待加强
问题:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA打印10行A, 每行递增一个,最后一行10个A我的解决方案:package mainimport "fmt"func main() { str := "A" for i := 0; i < 1原创 2015-04-27 17:14:21 · 603 阅读 · 0 评论 -
Centos 搭建golang环境,vim高亮go关键字设置
Centos 搭建golang环境,vim高亮go关键字设置原创 2015-01-19 18:32:15 · 9652 阅读 · 2 评论 -
ping 原理
假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢? 首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以原创 2013-10-09 19:38:20 · 1087 阅读 · 0 评论 -
动手写快排
自己写了一篇才知道,原来的理解是错误的并不是high指针和low指针交换,而是直接赋值一直理解错误,郁闷#include #define SIZE_OF_ARRAY(x) (sizeof(x)/sizeof(x[0]))void print_array(int array[], int len){ //printf("%d\n", SIZE_OF_原创 2013-10-08 19:35:52 · 918 阅读 · 0 评论 -
时常告诫自己
【易被未来淘汰的几种人】1、没有想法。2、不懂合作。3、适应力差。4、犹豫不决。5、不愿沟通。6、不重资讯。7、没有礼貌。8、只会妒忌。9、知识面窄。10、忽视健康。11、消极思维。12、自我设限。 [你会沟通吗?】1、与老人沟通,不要忘了他的自尊。2、与男人沟通,不要忘了他的面子。3、与女人沟通,不要忘了她的情绪。4、与上级沟通,不要忘了他的尊严。5、与年轻人沟通,不要忘了他的直原创 2013-08-06 11:11:20 · 1026 阅读 · 0 评论 -
linux启动过程
启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也原创 2013-07-25 19:01:06 · 955 阅读 · 0 评论 -
二分查找及扩展
面试常让写二分查找或其扩展的程序,以前总觉得很简单,但是真动手写起来,细节很多,容易出错的地方也很多,真是秒杀眼高手低的利器,本节就二分查找以及相关扩展程序都实现一下,同时将可能出错的地方以及需要注意的细节也一并说明,水平有限,欢迎补充。内容如下:1)二分查找元素key的下标,如无 return -12)二分查找返回key(可能有重复)第一次出现的下标,如无return -原创 2013-07-05 15:04:12 · 1040 阅读 · 0 评论 -
一万小时定律
作家葛拉威尔在《异数》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。只要经过1万小时的锤炼,任何人都能从平凡变成超凡。”他将此称为“一万小时定律”。要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作四个小时,一周工作五天,那么成为一个领域的专家至少需要十年。这就是所谓的一万小时定律。霸曰:“学不在多,在乎原创 2013-07-05 10:25:48 · 1566 阅读 · 2 评论 -
coolshell陈皓建议
不要找借口。这一条路走下来并不容易,不要给自己找借口。我最不喜欢听到的就是“很忙,没有时间”这样的借口。我以前在银行做项目,早9点到晚10点,周一到周六,我一样可以每天抽1个小时来看书和专研,一年下来也能精读5、6本书。我现在的工作项目和招聘任务很紧张,刚生的小孩只有自己和老婆两人带,还需要准备讲课,但是我还是能够找到时间看文章写文章维护酷壳。所以,我可以告诉你,“时间就像乳沟,只要你肯挤,就一定原创 2013-07-04 18:16:42 · 4429 阅读 · 0 评论 -
优雅地使用链表
优雅地使用链表 链表是编程中经常要用到的数据结构,结构体描述时分为数据域和指针域,本没有什么好讲。但有没有想过教科书上的这种方式有什么问题?通过这种方式定义和使用链表,对于不同的链表类型,都要定义各自的链表结构,繁琐的很。linux kernel中链表的用法才应该是教科书中出现的。 基本思想:在Linux内核链表中,不是在链表结构中包含数据,而是在数据结原创 2013-06-27 11:42:21 · 1394 阅读 · 0 评论 -
笔记本创建wifi热点
http://jingyan.baidu.com/article/e8cdb32b87a4aa37042bad6b.html原创 2013-06-18 17:52:09 · 721 阅读 · 0 评论 -
进程线程与cpu绑定
CPU AffinityCPU亲合力就是指在Linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行.一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行.在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能.一个CPU的亲合力掩码用一个cpu_set_t结构体来表示一个CPU集合,下面的几个宏分别对这个掩码集进行操作:CPU_ZERO()原创 2013-05-06 18:38:49 · 1251 阅读 · 0 评论 -
Linux下计算程序运行时间
#includeint gettimeofday(structtimeval*tv,structtimezone*tz);strut timeval{ longtv_sec;/*秒数*/ longtv_usec;/*微秒数*/};gettimeofday将时间保存在结构tv之中.tz一般我们使用NULL来代替.#include#include#includ原创 2012-09-20 17:16:37 · 907 阅读 · 0 评论 -
网站遭遇DDOS简易处理
网站遭遇DDOS攻击netstat -an | grep ESTABLISHED我们看到有大量的链接存在着,并且都是ESTABLISHED状态for i in `netstat -an | grep -i ‘:80 ‘|grep ‘EST’ | awk ‘{print $5}’ | cut -d : -f 1 | sort | uniq -c | awk ‘{if($1 > 50) {原创 2013-08-19 18:29:35 · 1186 阅读 · 0 评论 -
讲故事励志
故事一我知道一个小男孩立志成功的故事。小男孩的父亲是位马术师,他从小就必须跟着父亲东奔西跑,一个马厩接着一个马厩,一个农场接着一个农场地去训练马匹。由于经常四处奔波,男孩的求学过程并不顺利。初中时,有次老师叫全班同学写作文,题目是长大后的志愿。那晚他洋洋洒洒写了7张纸,描述他的伟大志愿,那就是想拥有一座属于自己的牧马农场,并且仔细画了一张200亩农场的设计图,上面标原创 2013-08-22 11:17:38 · 1583 阅读 · 0 评论 -
每天添加
改掉坏的习惯1: 抽烟2:生活习惯邋遢3:东西乱扔乱放4:电脑放床上5:睡觉前不洗脸刷牙6:衣服不整洁7:频繁接触色情读物尽快戒除上述习惯2013-07-08 早上起来抽烟了原创 2013-07-08 10:41:43 · 745 阅读 · 0 评论 -
名人名言
在我加入贝尔实验室一年多后,我开始和Ken Thompson一起在开发一个针对由Gerard Holzmann设计的很小的图形化交换语言的即时编译器上做结对编程。我打字比较快,所以我坐在电脑前,Ken站在我身后看我编程。我们开发的很快,但经常会遇到问题,而且可以看出来出错了——毕竟这是一个图形化的编程语言。当程序出错时,我本能的一头扎进问题,检查报错跟踪信息,添加调试打印语句,启动调试器,等等,但原创 2013-08-22 19:41:25 · 903 阅读 · 0 评论 -
异步 与非阻塞概念
老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪转载 2013-09-11 19:44:29 · 763 阅读 · 0 评论 -
线程存储pthread_key_create
下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意义?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的。这就是线程存储的意义。原创 2013-08-16 18:45:37 · 1025 阅读 · 0 评论
分享