- 博客(510)
- 资源 (13)
- 收藏
- 关注
原创 brpc : example-echo-c++
https://github.com/brpc/brpc/tree/master/example/echo_c%2B%2B这里学习下brpc的example:echo-c++。先学会使用brpc,载了解了brpc的基本特性之后,再去深入研究。client https://github.com/brpc/brpc/blob/master/docs/cn/client.md...
2018-07-19 22:42:02 2309
原创 SNMP
参考 http://www.net-snmp.org/wiki/index.php https://www.cnblogs.com/sddai/p/5911031.html https://www.cnblogs.com/oloroso/p/4599501.html https://blog.csdn.net/hepeng597/article/details/87828...
2018-05-31 17:06:27 1871
原创 enable_shared_from_this 分析
http://monkeycn.iteye.com/blog/1135901 http://vyloy.iteye.com/blog/1808547
2018-05-29 16:55:33 521
原创 C++ string类的简单实现 (2)
参考 https://coolshell.cn/articles/10478.html#jtss-tsina分析如果一个class带有指针类型的数据成员,那么请思考默认的copy ctor和copy assign是否合适。如果你需要深拷贝那么默认的行为就不合适了(默认为浅拷贝)。并且如果你的编译器支持c++11,可以考虑是否可以利用右值引用来提高效率,这时需要实现move cto...
2018-05-25 14:50:40 593
原创 Linux kernel 3.10 sg 驱动分析
源码地址 https://elixir.bootlin.com/linux/v3.10/source/drivers/scsi/sg.c主设备号 https://elixir.bootlin.com/linux/v3.10/source/include/uapi/linux/major.h#L40#define SCSI_GENERIC_MAJOR 21fil...
2018-05-14 14:33:17 1437
原创 The Linux generic SCSI driver
前言 https://elixir.bootlin.com/linux/v3.10/source/drivers/scsi/sg.c本文的分析的内核版本为Linux kernel 3.10, 上面为驱动的源码The Linux generic SCSI driver http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/index....
2018-05-14 10:41:42 4734
原创 动态规划
相关题目最大连续子序列和 dp[i] 表示以a[i]结尾的子序列最大和,那么状态转移方程为:dp[i] = max(a[i], dp[i-1] + a[i])上台阶问题 有一段楼梯有N级台阶,规定每一步只能跨一级或两级,要登上第N级台阶有几种不同的走法?dp[i] 表示i级台阶的走法数量,那么 dp[i] = dp[i-1] + dp[i-2];正则匹配 htt...
2018-04-29 11:46:05 245
原创 assert() : 如何正确的使用
请先阅读一下man page,不要急躁。ASSERT(3) Linux Programmer's Manual ASSERT(3)NAME assert - abort the program if assertion is falseSYNOPSIS ...
2018-04-24 09:59:07 6879
原创 Perf: Performance analysis tools for Linux
参考 https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/gperftools 是Google开发的profile工具,这里介绍的perf是Linux上的性能分析工具。// 以后需要用到时再补充心得...
2018-03-30 11:22:55 317
原创 gperftools
安装$ git clone https://github.com/gperftools/gperftools.git$ cd gperftools$ ./autogen.sh$ ./configure$ make$ sudo make install使用CPU Profile https://gperftools.github.io/gperftools/...
2018-03-29 16:06:27 780
原创 Go: Gin
0. 简介Gin是一个使用golang编写的HTTP web框架,主页在此: https://github.com/gin-gonic/gin1. 使用记录1.1 POSTbinding tag 加入太多tab会有问题,目前只加一个空格没有什么问题,就是格式上有点丑,尚不清楚原因。1.2 Database http://www.01happy.co...
2018-03-29 16:00:55 565
原创 listen : backlog
listenNAME listen - listen for connections on a socketSYNOPSIS #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int listen(int soc...
2018-03-22 16:58:31 225
原创 Go : OAuth2.0
引用 http://blog.csdn.net/wangshubo1989/article/details/77980316引文以google为例子,这里使用github为例子(访问google有问题T_T)。获取 oauth2$ go get golang.org/x/oauth2如果出现错误(被墙?),请参直接使用github下载即可。$ mkdir ...
2018-03-08 15:59:27 2207
原创 PNP : Work Cound & Frequence
问题问题很简单,shell的几个命令就可以搞定。但是,如果输入文件很大不能一次载入内存呢? 文件分布在多个机器上呢?文件可以全部载入内存文件太大不能一次载入内存对于此类问题,即大数据问题,可以使用MapReduce两个MapReduce 第一个MapReduce: WordCount把每个单词映射成Key-Value pair (Map)把key相同的value加起来 (Reduce)此
2017-11-27 21:46:19 400
原创 PNP : Distributed mean and median
分布式的平均数和中位数。 求平均数比较简单。怎么求第k大的数字呢?先猜一个数guess,然后统计与这个数相等的数字的个数记为same,小于这个数的个数记为smaller然后调整guess,直到 smaller < k and smaller+same >= k具体点说,先猜一个guess,然后让10台机器告诉我,guess在第i台机器上的same和smaller,然后将same求和,smal
2017-11-23 20:53:11 364
原创 PNP : Remote Procedure Call (RPC)
RPCRPC是构建分布式系统的基础。 RPC不会限制所使用的语言,跨语言。 brpc : https://github.com/brpc/brpcprotobuf提供了message passing的能力,可以在此基础之上实现一个RPC框架。type表示消息类型,是请求还是响应 id用来标识一个请求service是一个string, 表示客户端想要调用哪个class method,表示客
2017-11-23 20:36:34 618
原创 PNP : Paralle N-queens puzzle
多机数据处理单机解决多线程多个机器负载均衡N皇后问题:每一行只能有一个皇后,每一列只能有一个皇后,每一条对角线(反对角线)只能有一个皇后。求解的个数。一种解法:求全排列,然后去掉非法情况代码简洁,但是效率低回溯法回溯法,就是在失败点选择其他值进行试探,直到成功。通过将错误情况,过早的减枝,可以排除掉很多非法情况。所以相对上面的全排列方法要快很多。思路就是使用位数组,columns表示那些列被
2017-11-15 20:41:22 363
原创 PNP : TCP relay & Socks4a
TCP relayTCP中继。 带宽不匹配问题怎么应对?TCP half-closedmuduo的做法是: TcpConnection::shutdown() –> shutdown(sockfd, SHUT_WR) Keep read(sockdf) uitil it return 0, then close(sockfd)有可能数据没有读完,此时如果使用close关闭连接,那么TCP会发送
2017-11-07 22:19:12 1318
原创 PNP : Chat server
将某个连接上的消息发送到其他连接上。BroadcastingIP广播不支持TCP。需要自己实现 Pub/Sub。要考虑单台故障不影响其他机器。pub, hub, sub. 其中hub收到pub的消息,发送到sub上。使用shared_ptr实现copy on write : example/asio/chat/server_thread_efficient.cpp使用thread_local: ex
2017-11-07 20:32:14 444
转载 C++ : Object Model
原文: http://spockwangs.github.io/2011/01/31/cpp-object-model.html参考: http://lifegoo.pluskid.org/upload/doc/object_models/C++%20Object%20Model.pdfThe g++ implementation of C++ Object ModelJa
2017-10-20 09:45:25 522
转载 C++ : Memory model in c++11
https://stackoverflow.com/questions/6319146/c11-introduced-a-standardized-memory-model-what-does-it-mean-and-how-is-it-gFirst, you have to learn to think like a Language Lawyer.The C++ specification d
2017-10-20 09:40:57 510
原创 PNP : Sudoku solver
Line protocolRequest : [id:]<81digits>\r\n Response: [id:]<81digits>\r\n [id:]NoSolution\r\nLibrary or service?Cross process boundary, some overhead of courseCross LanguageIndepend
2017-10-19 22:42:09 406
原创 Libevent : queue.h evbuffer bufferevent
Libevent源码中queue.h包含了链表的实现。在学习前参考了内核链表的设计,基本理解了queue.h的设计初衷。0 内核链表 内核链表: https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/内核的链表(List, 双向链表)为了“通用性”,避免了为每个数据项类型定义自己的链表的麻烦,将链表节点结构“嵌入”到需要链表的st
2017-08-14 15:53:39 486
原创 PNP : procmon
数据的收发交给网络库,业务逻辑才是网络编程的重点。侵入式 : 做成一个库,使用者连接这个库。能够看到程序的内部状态,但是需要使用同一种语言,需要重新编译。非侵入时:无需重新编译,但是无法看到程序的内部状态,只能看到cpu使用率,内存使用量等信息。如何画图 独立的画图服务器JavaScript: jqPlot flot使用libgdCPU使用率:一段时间内cpu的占空比。 比如让cpu是20
2017-08-07 15:43:46 453
翻译 raw socket in linux
0 前言 http://www.binarytides.com/raw-sockets-c-code-linux/ In normal sockets when any data is send over the network, the kernel of the operating system adds some headers to it like IP header and
2017-06-28 13:52:44 887
原创 PNP: memcached
memcached1.2.8版本可以用作学习版本。内存密集型(CPU密集型, IO密集型,隔离度递增 ) memcached 本质上是一个远程的哈希表。数据结构的选择1. hash_map<string, value>lock()val = theMap.get(key)send(*val)unlock()//考虑并发(同时get set),send需要在临界区里面执行。2. typede
2017-06-22 19:21:51 519
翻译 C++ non type template parameters
模板中的非类型参数 可以在模板中定义非类型参数(non type parameter), 一个非类型参数表示一个值而非一个类型. (C++ Primer 5th P580)那么非类型参数可以是哪些呢? 书中的例子是以int为非类型参数, 那么string呢?用户自定义类型呢?带着这样的疑问找到了下面的回答: https://stackoverflow.com/questions/55478
2017-06-22 09:42:16 1123
翻译 C++ istream_iterator
From: https://stackoverflow.com/questions/16727125/how-does-stdcopy-work-with-stream-iteratorsFirst, note that in this case, there’s no real need to use std::copy at all. You can just initialize the v
2017-06-21 15:05:01 1036
原创 名字查找与继承
直到了上面得到名字查找过程,再来理解隐藏(hide)和覆盖(override)就容易多了。此外还要记得:名字查找先于参数检查。来看一个例子。#include <iostream>class Base { public: virtual int fcn() { std::cout << "int Base::fcn()" << std::endl; }};c
2017-06-16 15:43:54 610
原创 PNP: non-blocking IO
Save remaining data in some buffer Never call write() when buffer is not empty, it reorders dataAlternatively, always send from bufferStart watching POLLOUT event Meanwhile, any write() should appe
2017-06-15 19:14:39 509
原创 PNP: NetCat
阻塞式IO是带限速的。比如nc从/dev/zero读取数据,然后写到某个socket,如果接收socket速度慢,那么从/dev/zero读取也会慢
2017-06-05 19:24:39 407
翻译 How To Use gflags (formerly Google Commandline Flags)
From: https://gflags.github.io/gflags/TODO: 翻译
2017-05-22 11:01:23 412
翻译 How To Use Google Logging Library (glog)
From: http://rpg.ifi.uzh.ch/docs/glog.html TODO: 翻译
2017-05-22 10:51:01 507
原创 Openssl : thread safety
https://www.openssl.org/docs/man1.0.2/crypto/threads.html OpenSSL can safely be used in multi-threaded applications provided that at least two callback functions are set, locking_function and thre
2017-05-12 12:53:40 1357
原创 Linux : screen
https://www.ibm.com/developerworks/cn/linux/l-cn-screen/ https://unix.stackexchange.com/questions/7453/how-to-split-the-terminal-into-more-than-one-view
2017-05-08 10:18:03 432
原创 TCP/IP Problem Collector
Connect: Cannot assign requested address出现原因:客户端机器没有空闲端口可以使用了,可能是客户端建立的大量的连接占用了所有可用的端口,或者是客户端主动close连接后的TIME_WAIT状态,导致一些端口还没被回收。(TCP/IP中port为16bit,范围是0~65535。)查询、修改文件描述符限制:# ulimit -n1024 /
2017-03-15 10:22:38 652
原创 Lock-Free Programming
参考: http://preshing.com/20120612/an-introduction-to-lock-free-programming/ http://blog.csdn.net/lifesider/article/details/6582338 http://blog.poxiao.me/p/spinlock-implementation-in-cpp11/ h
2017-02-10 15:02:42 677
转载 从tcp原理角度理解Broken pipe和Connection Reset by Peer的区别
原文: http://lovestblog.cn/blog/2014/05/20/tcp-broken-pipe/ 作者:你假笨@JVM 以前我们经常会碰到Broken pipe或者Connection reset by peer之类的异常,但是tcp实现里什么情况下会抛出这些异常呢,以前我给对方的回答都是模棱两可的,自己说实话都没把握,因为自己也没有验证过,对它们的
2017-02-09 11:00:09 2312
原创 非阻塞connect
预备知识套接字默认是阻塞的,那么使用阻塞的套接字进行connect时自然会阻塞当前的程序流。TODO:阻塞的connect最长会阻塞会阻塞多长时间?connect、accept与三次握手的关系图:非阻塞connect该怎么写 非阻塞的套接字通常与IO-multiplexing结合使用。创建non-block的socket使用connnect进行连接 判断connect的返回值r。分为三种情况
2017-01-15 11:14:37 754
meandmyshadow-0.4-bin.tar
2013-10-23
tslib1.3.tar.gz
2013-10-11
Slope One Predictors for Online Rating-Based Collaborative Filtering
2013-09-06
推荐系统实践
2013-09-06
mini2440 定时器中断实验源代码
2012-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人