摘要:
C++11中增加了一个新的类型,即右值引用(R-value reference),标记为T&& 。而它的目的就是去消除不必要的深拷贝,提高性能。 概念性的东西就不多说了。直接用代码体现其优势。 实现一个MyString类: move语义是用来将左值转换为右值,这样的目的只是改变了对象的控制权而并没有 阅读全文
摘要:
lambda来源于函数式编程的概念,也是现代语言编程的特点。 首先看看lambda的基本用法: 其中, capture 是捕获列表(即闭包中的自由变量): [] 不截取任何变量 [&] 截取外部作用域中所有变量,并作为引用在函数体中使用 [=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用 [ 阅读全文
摘要:
现在我们来看看go中的template代码实现 这俩函数就可以了,其他的函数就不细说了。至此,问题解决。 阅读全文
摘要:
前段时间,有个任务:对一批go文件进行处理,提取go代码里面的GET、POST方法中的url以及调用方法名,比如这样 需要提取文件中类似这样的语句,这个可以用正则搞定,然后用提取的关键字去匹配模板,生成代码,这里用到了template。首先说说template的语法。 Go语言的模板通过{{}}来包 阅读全文
摘要:
最近有一个需求,就是需要从内网服务器的一个端口请求数据,问题是这个内网端口不能被外网访问到,所以需要做一个转发代理服务。原理就是当请求到达时,将本机的地址替换成目标地址,然后其他格式不变,待目标请求返回后,又将目标的报文头及报文返回给客户端。具体代码如下: 至此,一个简单的代理服务完成。 阅读全文
摘要:
通常在启动项目服务程序的时候,需要判断该服务是否已经被启动,一般的做法有两种,其一是每次启动后将pid写入文件中,启动的时候读取这个文件,如果里面有数值,就表示服务已启动;另一种是通过shell命令查找: 很多语言都可以直接执行这行命令;偏偏go语言不行,因此,我们可以利用go中提供的一些方法实现它 阅读全文