记一个asio实现代理功能的设计思路

23 Jul 2018 | C/CPP, asio |

问题描述

最近在设计一个类似shadowsocks的小东西,在写local部分的时候,考虑了一下这个问题。这个设计场景非常简单:local proxy监听本地端口,一旦有client连接,则会创建一个对远端固定server的连接,将client的数据经过加密后,转发到server上;同时,从server上收到的数据,也会经过解密后转发给client。

Continue Reading →

char类型的一个小坑

06 Dec 2017 | C/CPP |

我们知道,在C中,整数类型(short,int,long)分为有符号和无符号两种,以int为例,单纯一个int代表有符号整型signed int,这里signed可以省略;无符号整型需要显示指明unsigned int

然而char是个例外。当然,C语言中,字符类型也分signed charunsigned char,然而单写char的时候,究竟是有没有符号的?答案是不确定。

Continue Reading →

DPDK non-EAL线程环境下的使用

13 Nov 2017 | DPDK |

最近群里有人问,在non-EAL环境下使用DPDK有什么不同。自己对这一部分的实现原理了解的也不多,所以查找、总结了一下DPDK中的lcore实现原理。

首先,关于non-EAL,并不是说整个程序完全不使用EAL(这样的话几乎所有DPDK功能都不可用)。程序本身还是要执行rte_eal_init()来对EAL初始化,通过参数-l-c或者--lcores来指定使用哪些cpu lcore,在每一个管辖的lcore上绑定一个线程待命,这些线程由EAL管理,即为EAL线程。除此之外,也可以手工利用pthread运行新的线程,这些线程不受EAL控制,就是所谓的non-EAL线程。由于EAL线程与lcore的绑定关系,很多地方用lcore指代其上的EAL Thread。

Continue Reading →

博客还是不能丢的

12 Nov 2017 | 生活, 博客, 随笔 |

一年多没更新了,这不是我想要的。

这段时间发生了太多的事,颓废过,也迷茫过。朋友圈基本上没更新,算是在很多人眼里“消失”了;心情最复杂的时候,在微博里写了两个不知所云的打油诗;知乎继续骗赞,收藏夹大小从100长到了500。不得不说,知乎虽然水答案的人越来越多,但是依旧是高质量文本最多的社交网站,可以说是我这两年精神能量的最大来源了。也慢慢的接触到了各种群体,接触到了和自己情况一样的一些人,孤独感减少了很多。有句话深得我心:

祈求上天赐予我平静的心,接受不可改变的事;给我勇气,改变可以改变的事;并赐予我,分辨此两者的智慧。

于是,座右铭改成了:

纵然是个loser,也要做个积极向上的loser!

我也知道了有些仗注定打不赢,敌人强大到全世界没人打得赢。但是还是要亮剑啊……

不过总的来说,生活明朗了许多,临近毕业了,期待第一份工作,期待未来的转机。

荒废这么久,现在域名已经到期,多说已经坚持不住挂掉了。去Godaddy续了费,又用友言代替了多说(感觉uyan还是撑不久的样子,没办法disqus国内被墙,Coding-comments这种又非要注册,我的读者不能全都是程序员吧)。

不知不觉26岁了……开始和朋友讨论中年危机……

努力活下去吧,生活还是挺精彩的

Continue Reading →

一个特殊的无锁算法

07 Jun 2016 | 无锁, 原子操作 |

前言

一般的无锁算法都是基于原子读写、原子CAS等原子操作指令实现的,其原子性通过LOCK#指令前缀锁住总线来保证,并且起到读写屏障的效果。其实在某些特定平台(比如x86)和特定应用条件下可以只利用普通读写+编译屏障来实现完全的无锁。最近在阅读论文Scalable, High Performance Ethernet Forwarding with CUCKOOSWITCH,文中提到了一个在x86平台,”multiple-reader, single writer”和”read-heavy workload”条件下,只通过普通读写和编译屏障实现的无锁哈希表,在这里简单学习一下其中的无锁算法,如果理解有误欢迎留言指出。

Continue Reading →

OpenSUSE Leap在线更新到Tumbleweed小记

04 Jun 2016 | Linux, OpenSUSE |

之前在这台笔记本上装了OpenSUSE Leap 42.1之后就没动过,确实如坊间传言一般,非常稳定。不过最近有一件事却让我很不爽,Leap的GNOME是3.16的,而我喜欢的Zuki系主题只支持最新的3.18和3.20。作为一个一万年的Arch党来说,一切版本号引起的问题都不能忍,于是一怒之下把系统从Leap稳定版升到Tumbleweed滚动版。

Continue Reading →

1 2