[置顶] protobuf入门教程

1、简介和安装2、消息类型3、proto3 与 proto2 的区别4、常用序列化/反序列化接口5、repeated限定修饰符6、枚举(enum)、包(package)7、导入定义(import)...
阅读(115) 评论(0)

[置顶] 为什么你要写博客?

我知道现在可能说这话有点不合时宜,毕竟博客时代都已经过去了,再号召大家用过就好像时的东西是不是有点逆流而上? 我曾经也问过自己这个问题,但是我觉得,博客时代过去跟我们要开博客是没有多大关系的,就好像你的读书时代已经过去你就不再读书一样。 判断一件事情值不值得去做有一个方法:在一张白纸的左边写不值得做的原因,然后在右边写值得做的原因,写完一比较,一权衡,自然能够得出结果。 大家都成年人了,你会觉得这样思考分析总结的过程才是正确的思考的方法吧? 所以,我在这里列出要写(独立)博客的原因,供大家去选择,然后填在你...
阅读(1353) 评论(4)

[置顶] 一步步学习Linux多任务编程

01、什么是系统调用? 02、Linux系统调用之I/O操作(文件操作) 03、文件描述符的复制:dup(), dup2() 04、进程的介绍 05、Linux可执行文件结构与进程结构 06、多进程实现多任务(一):fork() 07、多进程实现多任务(二):vfork() 08、进程的控制:结束进程、等待进程结束 09、Linux特殊进程之僵尸进程 10、Linux特殊进程之孤儿进程 11、Linux特殊进程之守护进程 12、进程替换:exec函数族...
阅读(6044) 评论(5)

[置顶] Linux高级网络开发奇妙之旅

01、Linux网络编程1——网络协议入门 02、Linux网络编程2——无连接和面向连接协议的区别 03、Linux网络编程3——编程准备:字节序、地址转换 04、Linux网络编程4——套接字的介绍 05、Linux网络编程5——C/S和B/S架构的区别 06、Linux网络编程6——UDP编程 07、Linux网络编程7——广播...
阅读(3285) 评论(9)

[置顶] 一步步学习Linux开发环境搭建与使用

00、Linux开发环境搭建与使用1——Linux简史 01、Linux开发环境搭建与使用2——Linux系统( ubuntu )安装方案 02、Linux开发环境搭建与使用3——通过虚拟机安装系统( ubuntu ) 03、Linux开发环境搭建与使用4——ubuntu更新设置 04、Linux开发环境搭建与使用4——Linux必备软件之Samba 05、Lin...
阅读(2649) 评论(5)

[置顶] C语言也能做界面:踏上GTK+学习之旅

00、背上行囊1——程序员学习之道 01、背上行囊2——GUI概述 02、背上行囊3——GTK简介 03、背上行囊4——GTK环境搭建( Linux ) 04、背上行囊5——GTK环境搭建( windows ) 05、踏上旅途1——一个简单的空白窗口 06、踏上旅途2——控件的添加 04、踏上旅途1——一个简单的空白窗口 05、踏上旅途2——控件的添加 06、踏上旅途3——布局容器之水平布局 07、踏上旅途4——布局容器之垂直布局 08、踏上旅途5——布局容器之表格布...
阅读(2369) 评论(3)

C++11:初始化

类内成员初始化class Mem { public: Mem(int i): m(i){} //初始化列表给m初始化 int m; }; class Group { public: Group(){}private: int data = 1; // 使用"="初始化非静态普通成员,也可以 int data{1}; Mem mem{2}; // 对...
阅读(12) 评论(0)

C++11:类型推导

autoauto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。从这个意义上讲,auto并非一种“类型”声明,而是一个类型声明时的“占位符”,编译器在编译时期会将auto替换为变量实际的类型。通过auto的自动类型推导,可以大大简化我们的编程工作:#include #include #include using namespace...
阅读(19) 评论(0)

C++11:lambda表达式

lambda基础使用lambda 表达式(lambda expression)是一个匿名函数,lambda表达式基于数学中的 λ 演算得名。C++11中的lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。lambda表达式的基本构成: ① 函数对象参数 [],标识一个lambda的开始,这部分必须存在,不能省略。函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参...
阅读(14) 评论(0)

C++11:std::bind

std::bind是这样一种机制,它可以预先把指定可调用实体的某些参数绑定到已有的变量,产生一个新的可调用实体,这种机制在回调函数的使用过程中也颇为有用。C++98中,有两个函数bind1st和bind2nd,它们分别可以用来绑定functor的第一个和第二个参数,它们都是只可以绑定一个参数,各种限制,使得bind1st和bind2nd的可用性大大降低。在C++11中,提供了std::bind,它绑...
阅读(24) 评论(0)

C++11:std::function

在C++中,可调用实体主要包括:函数、函数指针、函数引用、可以隐式转换为函数指定的对象,或者实现了opetator()的对象。C++11中,新增加了一个std::function类模板,它是对C++中现有的可调用实体的一种类型安全的包裹。通过指定它的模板参数,它可以用统一的方式处理函数、函数对象、函数指针,并允许保存和延迟执行它们。#include #include <func...
阅读(16) 评论(0)

C++ 闭包(closure)

本文转自:http://www.cnblogs.com/Aion/p/3449756.html什么是闭包闭包有很多种定义,一种说法是,闭包是带有上下文的函数。说白了,就是有状态的函数。更直接一些,不就是个类吗?换了个名字而已。一个函数,带上了一个状态,就变成了闭包了。那什么叫 “带上状态” 呢? 意思是这个闭包有属于自己的变量,这些个变量的值是创建闭包的时候设置的,并在调用闭包的时候,可以访问这些变...
阅读(23) 评论(0)

C++11:互斥量

为什么需要互斥量在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。#include // std::cout #include // std::threa...
阅读(28) 评论(0)

C++11:线程

在C++11之前,C/C++一直是一种顺序的编程语言。顺序是指所有指令都是串行执行的,即在相同的时刻,有且仅有单个CPU的程序计数器执行代码的代码段,并运行代码段中的指令。而C/C++代码也总是对应地拥有一份操作系统赋予进程的包括堆、栈、可执行的(代码)及不可执行的(数据)在内的各种内存区域。而在C++11中,一个相当大的变化就是引入了多线程的支持。这使得C/C++语言在进行线程编程时,不比依赖第三...
阅读(31) 评论(0)

C++11:可变参数的模板

概述在C++11之前,类模板和函数模板只能含有固定数量的模板参数。C++11增强了模板功能,允许模板定义中包含0到任意个模板参数,这就是可变参数模板。可变参数模板和普通模板的语义是一样的,只是写法上稍有区别,声明可变参数模板时需要在typename或class后面带上省略号“…”:template void func(T ... args)//T叫模板参数包,args叫函数...
阅读(447) 评论(0)

C++11:常量表达式

常量表达式主要是允许一些计算发生在编译时,即发生在代码编译而不是运行的时候。这是很大的优化:假如有些事情可以在编译时做,它将只做一次,而不是每次程序运行时都计算。使用constexpr,你可以创建一个编译时的函数:constexpr int GetConst() { return 3; }int main() { int arr[ GetConst() ] = {0}; en...
阅读(25) 评论(0)

C++11:用户定义字面量

本文转至:https://www.devbean.net/2012/05/cpp11-literals/用户自定义字面值,或者叫“自定义后缀”更直观些,主要作用是简化代码的读写。long double operator"" _mm(long double x) { return x / 1000; } long double operator"" _m(long double x) { retur...
阅读(23) 评论(0)

C++11:强类型枚举

C++ 11引入了一种新的枚举类型,即“枚举类”,又称“强类型枚举”。声明请类型枚举非常简单,只需要在enum后加上使用class或struct。如:enum Old{Yes, No}; // old style enum class New{Yes, No}; // new style enum struct New2{Yes, No}; // new style“传统”...
阅读(21) 评论(0)

C++11:智能指针

C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针(smart pointer),定义在 memory 中。可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。unique_ptrunique_ptr持有对对象的独有权,同一时刻只能有一个unique_ptr指向给定对象(通过禁止拷贝语义、只有移动语义来实现)。unique_p...
阅读(31) 评论(0)

C++11:std::move和std::forward

标准库函数 std::move既然编译器只对右值引用才能调用转移构造函数和转移赋值函数,而所有命名对象都只能是左值引用,如果已知一个命名对象不再被使用而想对它调用转移构造函数和转移赋值函数,也就是把一个左值引用当做右值引用来使用,怎么做呢?标准库提供了函数 std::move,这个函数以非常简单的方式将左值引用转换为右值引用。int a; int &&r1 = a; // 编译失...
阅读(34) 评论(0)

C++11:移动语义

为什么需要移动语义#include using namespace std;class Test { public: Test(int a = 0) {//普通构造函数 d = new int(a); cout << "构造函数\n"; } Test(const Test & tmp) {//拷贝构造函数...
阅读(36) 评论(0)

C++11:右值引用

左值、右值在C语言中,我们常常会提起左值(lvalue)、右值(rvalue)这样的称呼。一个最为典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则称为“右值”。如:int b = 1; int c = 2; int a = a + b;在这个赋值表达式中,a就是一个左值,而b + c则是一个右值。不过C++中还有一个被广泛认同的说法,那就是可以取地址的、有名字的就...
阅读(32) 评论(0)

成功并不难,在于少犯错!

链接:http://www.jianshu.com/p/526581dcf06d 來源:简书你好!今天我们先用有关成年人教育的话题,来聊聊过一个好的生活是否有捷径。今天很多人看到北京,上海等城市那么高的生活成本开始担心,以今天自己的这点工资,何时才能买得起房子。假如一对清华和北大毕业的学生加在一起有50万的年收入,扣除个人所得税还有40万,然后再扣除各种花销,能剩下20万就不错了。今天北京四环附近...
阅读(46) 评论(0)

商业大佬最后悔的事

本文转自:http://finance.sina.com.cn当腾讯马化腾苦于没有用户变现渠道想卖掉QQ向搜狐创始人张朝阳求助时,张朝阳果断拒绝了小马哥,临了,还不忘在马化腾的伤口上撒盐:你这东西我找几个大学生不超过3个月做得比你还好,根本就不值50万。如果面对张朝阳的冷嘲热讽,马化腾当初轻言放弃,那现在也就不会有市值3000亿美元的腾讯了。风水轮流转,当马云找上门求马化腾投资阿里巴巴时,也被马化腾...
阅读(98) 评论(0)

学校的作用

本文转自:http://www.ljsw.cc/thread-185146-1-1.html你有没有想过一个问题——学校的教学形式为什么都是老师在上面讲,学生围坐在下面听?这种形式,从小学到大学,从古至今,从中国的孔夫子到古希腊雅典的学园,都是这样。那这种形态的学校,为什么到今天还没有消失呢?在古代,孔夫子或者雅典学园时代,教育当然只能采取这种形式。那时候,师生之间传播信息几乎只有老师当面讲授这一个...
阅读(76) 评论(0)

placement new的用法及用途

本文转自:http://www.cppblog.com/kongque所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可。举例来说:class foo{}; foo* pfoo = new foo;pfoo指向的对象的地址你是不能决定的,因为new已经为你做了这些工作。第一步分配内存,第二步调用类的构造函数。而place...
阅读(88) 评论(0)
295条 共15页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:460915次
    • 积分:8514
    • 等级:
    • 排名:第2289名
    • 原创:229篇
    • 转载:61篇
    • 译文:9篇
    • 评论:265条
    相关声明
    博客专栏
    最新评论