自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

andylau00j的专栏

linux c++ golang

  • 博客(136)
  • 收藏
  • 关注

原创 thrift TNonblockingServer 内 iothread workthread 执行逻辑

文章内有借鉴别人,也有自己分析,权且当做转载吧,并不重要了thrift优点不再多说,说说个人理解的缺点:1.    如何判断TSocket IsOpen 是否断开?内部只是判断是否已经连接过,如果网络断开,只查看套接字是否有效无法判断连接状态。优化方法:增加个ping空接口,定时调用下,如果调用失败,自然就是断网2.    select实现的线程通知机制现状:该函数内部实现不好...

2018-10-08 16:55:02 928

转载 Thrift结构分析(时序图画的很棒,强烈推荐看懂!)及增加取客户端IP功能实现

      获取客户端 IP 地址为取得客户端IP,有三个办法:1)      thrift客户端跟nginx通讯,nginx处做一个upstream插件,该插件接收到thrift请求后,解析thrift请求,增加一个参数,该参数的tagid=32767, 自己拼接上客户端发来的ip地址,那么我们用插件新增一个参数,势必nginx使用thrift文件跟后端服务器使用同一个thrift文件,...

2017-09-21 19:13:20 990

转载 图文详解 -- HTTPS站点的SSL证书 ,扩展SSL证书,密钥交换和身份验证机制汇

在客户端(这里指浏览器,下同)与 facebook 网站服务器进行 SSL 握手的过程中(现在称为TLS 握手,进行TLS握手前的TCP 三次握手必不可少,这里描述的场景假设已经完成了 TCP 三次握手):首先两者协商使用什么协议连接:第一次“往”:由客户端在一个类型为 Client Hello 的 TLS 握手包中携带客户端运行的TLS 协

2017-02-21 18:58:36 3768

转载 CentOS6.5下openssl加密解密及CA自签颁发证书详解

前言   openSSL是一款功能强大的加密工具、我们当中许多人已经在使用openSSL、用于创建RSA私钥或证书签名请求、不过、你可知道可以使用openSSL来测试计算机速度?或者还可以用它来对文件或消息进行加密。正文   openssl是一个开源程序的套件、这个套件有三个部分组成、一是libcryto、这是一个具有通用功能的加密库、里面实现了众多的加密库、二是libssl、这个

2017-01-17 20:14:07 4189

原创 golang sort.Search的坑

{ arrInts := []int{13, 35, 56, 79} findPos := sort.Search(len(arrInts), func(i int) bool { return arrInts[i] == 35 }) fmt.Println(findPos) return }mai'ge'guan'zi...

2021-05-30 00:37:12 862 2

原创 适配网闸

### 跟网闸合作项目现象:发现我方代理发起大并发连接后,重启代理,发现对方网闸服务,无法处理请求系统中跟网闸之间tcp连接很多 FIN_WAIT2 状态原因:1.重新翻了翻,,TCP 四次挥手 文档, 关闭连接逻辑有问题2. 我方关闭FIN后,进入 FIN_WAIT2状态,对方一直未发送 FIN 包,TCP/IP 协议栈会认为该连接,没有彻底关闭,相当于资源泄露;3. FIN_WAIT2 状态,经测试,可以一分钟后,自动消失;测试代码:ser...

2021-01-12 16:17:34 377

原创 muduo -- AsyncLogging分析

文章目录1. 为啥vector容器中存储的是std::unique_ptr?2. 为啥?1. 为啥vector容器中存储的是std::unique_ptr?std::vector<std::unique_ptr> BufferVector为啥不用原始指针,std::unique_ptr 有啥好处?2. 为啥?

2020-07-22 11:35:35 375

原创 github 图片显示失败,解决办法;

文章目录管理员权限打开 C:\Windows\System32\drivers\etc\hosts新增如下内容# GitHub Start192.30.253.112 http://github.com192.30.253.119 http://gist.github.com151.101.100.133 http://assets-cdn.github.com151.101....

2020-04-27 12:12:17 398

原创 fasthttp 线程池

文章目录1. fasthttp携程池关键结构体1. fasthttp 协程池背景2. fasthttp socket侦听逻辑3. fasthttp1. fasthttp携程池关键结构体去掉了部分不重要成员;type workerPool struct { // Function for serving server connections. // It must leave ...

2020-02-09 00:53:47 814

转载 ceph 阅读笔记

转自:http://blog.sina.com.cn/s/blog_704836f40102wqei.html1.2.参考资料:很棒的分析,推荐https://www.cnblogs.com/bodhitree/p/4832176.htmlhttp://blog.sina.com.cn/s/blog_704836f40102wqe...

2019-05-28 16:44:30 245

原创 sm2公私钥

1.SM2为国家密码管理局公布的公钥算法,其加密强度为256位2. SM2公钥64字节,私钥32字节3. 加解密、签名验签过程,掺杂随机数导致,结果长度在一定范围内变长。 签名长度70-72字节不等。SM2签名算法支持多大的数据量,签名结果为多少字节?签名原始数据量长度无限制,签名结果为64字节,但是由于签名后会做ASN.1编码,实际输出长度为7...

2019-03-29 11:05:26 35615 7

原创 nginx反向代理frps frpc穿透

frps 和 nginx 在同一台机器,假设ip=192.168.166.171. frps服务器端配置测试时,frps服务器跟nginx在同一台机器(192.168.166.17),理论上可以不在同一台机器,nginx可以代理http请求,发给frps服务端。frps.ini # frps.ini [common] bind_port = 7000 vhost_http_...

2019-01-21 17:26:01 4102

原创 muduo -- eventloop分析1

几个问题:currentActiveChannel_-&amp;amp;amp;gt;handleEvent(pollReturnTime_);如果handleEvent内某个事件响应函数很慢或者卡住,岂不是会影响后续事件处理延迟,且影响该eventloop thread的poll执行。muduo 对虚基类接口,类似如下定义class ICallBcak {public: virtual ...

2018-12-27 15:45:38 522

原创 tinyproxy使用分析

安装方式一:yum -y install tinyproxy  /   apt-get install tinyproxy方式二:1. 到github上下载源码2.  执行 autogen.sh &amp;&amp; configure &amp;&amp; make &amp;&amp; make install 出现编译错误:*** a2x (asciidoc) is r...

2018-12-04 12:32:02 3607

原创 muduo -- TcpServer分析

测试输出:20181126 12:09:43.678496Z 24491 INFO pid = 24491, tid = 24491 - main.cpp:22220181126 12:09:43.680307Z 24491 INFO epollfd_=3 - EPollPoller.cc:4820181126 12:09:43.680378Z 24491 INFO wakeu...

2018-11-26 20:37:23 293

原创 muduo -- Channel分析

Channel的作用和成员变量1. Channel fd 封装类,封装套接字、timefd等fd。2. Channel类一般不单独使用,它常常包含在其他类中(Acceptor、Connector、EventLoop、TimerQueue、TcpConnection)使用。Channel对象生存期由这些类控制。3. Channel类有EventLoop的指针 loop_,通过这个指...

2018-11-23 18:49:25 769

原创 muduo -- Buffer分析

/// A buffer class modeled after org.jboss.netty.buffer.ChannelBuffer////// @code/// +-------------------+------------------+------------------+/// | prependable bytes |  readable bytes  |  writa...

2018-11-23 18:05:54 572

原创 muduo -- base分析

1. Atomic.h // 原子操作接口封装,C++11已经实现 atomic 相关接口,更简洁些,推荐使用C++11内实现std::atomic&lt;std::int64_t&gt; cur_max_sqlId_;参考:https://zh.cppreference.com/w/cpp/atomic/atomic2. CountDownLatch.h // 作类似于起跑线机制,值...

2018-11-23 17:48:39 444

原创 boost::weak_ptr 观察者

boost::weak_ptr 作为 boost::shared_ptr 的观察者,更像是助手,观察 shared_ptr 对象是否内存有效。boost::weak_ptr内几个重要成员函数:1. 成员函数use_count() 观测资源引用计数2. 成员函数expired() 功能相当于 use_count()==0  表示被观测的资源(也就是shared_ptr的管理的资源)是否被...

2018-11-19 22:21:14 480

原创 ngrok使用/踩坑分析-tcp代理

上一个文章分析的是ngrok http代理编译、安装、配置。以及证书生成。1. ngrok server client 编译 安装 证书生成基本相同。2. tcp代理 跟http代理 客户端配置文件格式不太一样。remote_port  是指 ngrok server 端口proto 是指 要代理的协议,此处是 tcp ssh:  remote_port: 1122  pr...

2018-11-01 14:27:32 2603

原创 ngrok使用/踩坑分析-http代理

研究了下 ngrok 的使用,坑还是挺多,随后再看看源码吧,看是否能做些修改和定制疑问1: 是否能支持 ecc 证书,目前用的脚本生成的自签RSA证书经过测试ngrok客户端+服务器支持 ecc证书。疑问2: 性能如何?需要分析源码,完善优化 好了,开始吧。1.   当前git上开源的代码版本,号称是1.0x版本,其实是2.1.7const (    Pro...

2018-10-26 12:26:41 7806 3

原创 select epoll原理分析

 select原理分析1.   从用户空间拷贝fd_set到内核空间;2.   注册回调函数__pollwait;3.   遍历所有fd,对全部指定设备做一次poll(这里的poll是一个文件操作,它有两个参数,一个是文件fd本身,一个是当设备尚未就绪时调用的回调函数__pollwait,这个函数把设备自己特有的等待队列传给内核,让内核把当前的进程挂载到其中);4.   当设备就绪时...

2018-10-21 11:35:05 498

原创 centos 6.9 安装protobuffer2.6.1

 0.   执行 [root@cf07b5394847 protobuf-2.6.1]# ./autogen.sh 会报错,提示 需要gtest1.5未安装1.   下载 https://github.com/google/googletest/tree/release-1.5.0 googletest-release-1.5.0.zip解压该之该zip文件,后,把解压后目录移...

2018-10-16 10:26:26 874

转载 OpenSSL ECC 常用结构体+实例

以下内容是根据openssl1.1.0+版本实现OpenSSL实现的ECC 算法,包括三部分: ECC 算法(crypto/ec)、椭圆曲线数字签名算法 ECDSA (crypto/ecdsa)以及椭圆曲线密钥交换算法 ECDH(crypto/dh)。密钥数据结构密钥数据结构定义在openssl-1.1.0c\crypto\ec\ec_lcl.h文件中。struct ec_key_...

2018-10-12 12:30:25 3467

转载 Thrift解读(六)——客户端基本RPC逻辑

 我们在Thrift声明的服务叫XXX,RPC调用的函数名叫YYY,而且不是oneway方法。Thrift会生成XXXClient类,这个类包括三个方法,YYY、send_YYY、recv_YYY。程序员会显示的声明一个XXXClient的对象c,然后调用c.YYY。c.YYY顺次调用c.send_YYY和c.recv_YYY。前者是发送函数名,和参数,后者是接收返回值。整个流程如下:1....

2018-10-08 18:31:58 370

转载 thrift解读(三)——TNonblockingServer 内的 IO线程 和 work线程之间数据流处理逻辑

         一言概之   IO线程 负责跟客户端 通讯,IO线程读取一个完整的请求后,任务封装成(class TNonblockingServer::TConnection::Task)投递给work线程,work线程读取解析数据,处理业务逻辑完成后,把结果notify给IO线程,后者负责返回结果给客户端。TNonblockingServer内 N个IO thread、N个work thre...

2018-10-08 18:01:18 2442

转载 Thrift解读(二)——TNonblockingServer I/O线程

TNonblockingServer的I/O线程是TNonblockingIOThread对象。每个TNonblockingIOThread保存服务的server指针,同时记录监听的套接字。他并不是真正的pthread,所以线程号是额外指定的,在构造方法中指定。TNonblockingIOThread注册两类事件,一类是监听套接字,回调函数注册为TNonblockingIOThread::li...

2018-10-08 18:00:00 443

转载 Thrift解读(一)——TNonblockingServer Connection类/Connection::Task类分析

TNonBlockingServer,和他搭配的Transport选用TFrameTransport。该类包含几个辅助类。1. TNonblockingServer::TConnection::Task要注意,Thrift有很多类都包括Task类,这里提到的Task类是TConnection的内部类。Task是Server端处理业务逻辑的地方,他继承自Runnable,遵守类似Java的线...

2018-10-08 17:56:28 636

转载 Thrift解读(五)——server端RPC接收与返回值的回送

Thrift框架主要分为四层:Service,Protocol,Transport,Server。前述介绍的TNonBlockingServer就是一种Server,除此之外,还有很多别的Server,比TNonBlockingServer要简单的多,以后会简要介绍其中的一两个。Service由程序员自己编写,是实际的RPC调用体。还剩中间俩:Protocol是对函数调用的名称、参数、返回值的序列...

2018-10-08 17:52:30 1892

转载 thrift源码分析--transport类体系架构

 transport类体系架构与TProtocol类体系架构一样,所以这里就不重复叙述了,想了解可转去TProtocol类体系架构分析那篇。 下面将对transport层的几种transport类进行介绍:1、TSocket 阻塞型socket, 用于客户端,采用系统函数read和write进行读写数据;2、TServerSocket 非阻塞型socket, 用于服务器端, accecp...

2018-10-08 13:09:05 788

原创 TBinaryProtocolT代码分析

TBinaryProtocolT是Thrift支持的默认二进制协议,(TCompactProtocol 和 TBinaryProtocol 的区别主要是, TCompactProtocol 对整数类型使用了 ZigZag 压缩算法,比如 i32 类型的整数本来是4个字节, 可以压缩成 1~5 字节不等。而 i64类型的整数本来是8个字节。可以压缩成 1~10 字节不等。)它以二进制的格式写所有的数...

2018-10-06 21:18:07 1039

转载 Signal protocol 开源协议理解

   安全和简洁 真是互斥。。。Signal protocol是真正的端到端的通讯加密协议,号称是世界上最安全的通讯协议,任何第三方包括服务器都无法查看通讯内容,热门应用facebook messenger,whatsapp,singal app都采用的此协议。而我们所熟知的telegram的默认会话模式并不是端到端加密,服务器是可以获取用户私钥并解密聊天内容的,虽然目前报道表明telegra...

2018-09-27 17:50:58 12303 1

转载 多路归并 大数据处理--分析思路

问题一:输入:给定一个文件,里面最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数),且其中每个数都小于等于n,n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在5分钟以下,10秒为最佳结果。分析文件大小:10^7 = 1000,0000 = 10,000,000一个数据=1B...

2018-09-26 21:09:13 2919

转载 数组算法--分析思路

1. 一个数组中有若干整数,其中只有一个数只出现奇数次,其他数都出现偶数次,找出现奇数次的数。O(n)      解题思路:O(n) 循环遍历数组每个元素,执行异或操作,最后结果就是出现奇数次元素,原理:相同为零,不同为自己2. 统计一个字符串中出现次数最多的字符     解题思路:count[a[i]]++;最后遍历count3. 求一个无序数组中的第K大的元素/K个最大元素...

2018-09-13 09:42:03 650

转载 链表操作--分析思路

转载:http://blog.csdn.net/walkinginthewind/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,...

2018-09-09 01:16:25 290

转载 二叉树操作--分析思路

转载 http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当...

2018-09-08 14:00:37 304

原创 快排,快排

i                j6  1  2  7  9这段代码原作者注道:“顺序很重要,要先从右往左找”,这句话让我纠结了许久。由于算法将基准数temp设置成了a[left],假若如下图所示我们先从右往左走,小人会停到7(注意循环的条件,当a[i]&lt;=temp &amp;&amp; i&lt;j时小人在2,但由于符合这个条件i还会++小人会跑到7),同理右边的小人j最多只能到7...

2018-09-07 21:52:43 504

转载 DH秘钥交换算法

图片说明,清晰明了上图很经典它的数学基础就是离散对数这个数学难题。用它进行密钥交换的过程简述如下:选取两个大数p和g并公开,其中p是一个素数,g是p的一个模p本原单位根(primitive root module p),所谓本原单位根就是指在模p乘法运算下,g的1次方,2次方……(p-1)次方这p-1个数互不相同,并且取遍1到p-1;对于Alice(其中的一个通信者),随机产生一个整...

2018-08-29 09:49:14 7738

原创 muduo -- TimerQueue分析

  定时器  时序图 对于定时任务的原理:muduo采用timerfd_*将超时任务转换成文件描述符进行监听 当时间一到,timerfd变为可读,相应的Channel调用回调函数(TimerQueue::handleRead) 回调函数中将所有在TimerQueue中的超时任务找出,一次调用其回调函数 对于周期性定时任务,再添加回TimerQueue中   ...

2018-07-03 20:46:39 347

原创 muduo库的 poller 接口类和Channel分析

muduo库内的 timerfd eventfd socketfd 等文件描述符,一般注册读写事件一般通过以下流程:当一个fd想要注册可读事件时,首先通过Channel::enableReading()-&gt; Channel::update(this)-&gt; EventLoop::updateChannel(Channel)-&gt; Poller::updateChanne...

2018-07-03 19:02:50 542 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除