下载最新 wps 安装包 官网下载 下载 libpng12-0_1.2.54-1ubuntu1_amd64.deb 下载字体wps-office-fonts_1.0_all.deb 执行命令 sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb 执行命令 sudo dpkg -i wps-office_10.1.0.5707~a21_amd-64.d... 作者:weixin_36888577 发表于 2018/08/07 21:23:00 原文链接 https://blog.csdn.net/weixin_36888577/article/details/81488861 阅读:38 继续阅读 >>


吕子健 18/08/07 21:23:00
选择gettimeofday()函数的原因:精度比timer()函数高很多,time函数只精确到秒,而gettimeofday精确到微妙,足以满足各种所需,虽然有精度比它更高的,但是它的系统调用开销相对更小 函数原型 #include<sys/time.h> int gettimeofday(struct timeval* tv, struct timezone* tz... 作者:weixin_36888577 发表于 2018/08/03 17:16:10 原文链接 https://blog.csdn.net/weixin_36888577/article/details/81391326 阅读:134 继续阅读 >>


吕子健 18/08/03 17:16:10
今天敲了这样一段代码 class t { public: vector<shared_ptr<thread> > t1; public: t() { for (int i = 0; i < 3; i++) { t1.push_back(make_shared& 作者:weixin_36888577 发表于 2018/07/25 09:40:43 原文链接 https://blog.csdn.net/weixin_36888577/article/details/81196448 继续阅读 >>


吕子健 18/07/25 09:40:43
 c++11增加了一个新的类型--右值引用,而移动语义是通过右值引用来匹配临时值的.  尽管不能将一个右值引用直接绑定到一个左值上,但可以通过move将一个左值显示的转换为对应的右值引用类型  move,这是一个具有迷惑性的名字,实际上,move函数并没有真正的移动对象,他只是将该对象从一个左值转换为一个右值   #include <iostream> #include &... 作者:weixin_36888577 发表于 2018/06/23 22:42:42 原文链接 https://blog.csdn.net/weixin_36888577/article/details/80787782 继续阅读 >>


吕子健 18/06/23 22:42:42
学习epoll反应堆发现网上的epoll反应堆都是同一份代码框架… 自己理解、梳理一遍,思路在注释里 #include <stdlib.h> #include <stdio.h> #include <stdio.h> #include <sys/socket.h> #include <sys/epoll.h> #include <arpa/inet.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <time.h> #define MAX_EVENTS 1024 #define BUFLEN 128 #define SERV_PORT 8080 /* * status:1表示在监听事件中,0表示不在 * last_act 继续阅读 >>


吕子健 18/06/02 21:03:51
以下示例来自Ubuntu17.10 (1)安装tesseract sudo apt-get install tesseract-ocr (2)如果想用 Tesseract 对图像进行识别,还需要对应的语言文件。所谓的语言文件是 Tesseract 识别某种语言的文字图像时需要的一些资源,这些东西也可以通过包管理器获取。 sudo apt-get install tesseract-ocr-eng tesseract-ocr-chi-sim 这里就下了:eng是英语,chi_sim是中文 (3)安装tesseract-ocr编译必须的包。autoconf 可以帮助你写出款平台编译的程序,而automake则主要是帮你更好的完成跨 平台编译这件事情。编译需要用到各种编译器命令,因为不想手动的执行这些命名出现了 Makefile,又因为不想手动的编写Makefile出现了automake这类的工具,它让你可以 只提供源文件的名称便替你生成 Makefile,这也着实省下不少的麻烦。 继续阅读 >>


吕子健 18/05/27 17:07:14
先占坑,总结到目前为止的所学和观点,留待日后学到新的知识或者有新的认知了再回来更新 (先吐槽,网上搜定时器和时间轮,那些博客的代码居然基本上都是Linux高性能上的,虽然我也是…感叹一下看来这本书很厉害,是不是目前讲这方面的书很少,只有它啊…) 定时器 定时器就是一个数据结构,他最主要的成员是回调函数和超时时间,等到超时时间到期,自动执行这个函数。 定时器的实现 单线程实现 单线程实现类似于在一个循环线程里用epoll和usleep等待接口实现超时回调 多线程实现 /* 日后再说 */ 时间轮 本质就是一个定时器容器,可以更具效率的管理定时器,下面贴的代码也是出自《Linux高性能》,以数组实现了一个时间轮,只有一个”轮子“ (1)定时器的简单实现 //升序定时器链表 #ifndef LST_TIMER_H #define LST_TIMER_H #include <netinet/in.h> #include <stdio.h> #inclu 继续阅读 >>


吕子健 18/05/24 22:38:52
源码 https://github.com/lzj112/C-Plus-Plus/tree/master/%E8%BD%AF%E4%BB%B6%E6%9D%AF/blockchain/test1 block.h定义区块数据结构 #ifndef _BLOCK_H_ #define _BLOCK_H_ #include <iostream> using namespace std; struct BlockHead //区块头 { string PreHash; //前一区块哈希 //string MrekleTreeRoot; 梅克尔树根哈希 string Data; //简化操作,Data表示数据,本应该是梅克尔树根哈希值 string TimeStamp; //时间戳 int Index; //索引 }; class Block : public BlockHead { public: //int size; //区块 继续阅读 >>


吕子健 18/05/18 18:02:35
为什么使用动态内存 程序不知道自己需要多少对象; 程序不知道对象的准确类型; 程序需要在多个对象之间共享数据; 动态内存在哪里 程序有静态内存、栈内存。静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量。栈内存用来保存定义在函数内的非static对象。分配在静态或栈内存中的对象由编译器自动创建或销毁。对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,在程序结束时销毁。 除了静态内存和栈内存,每个程序还拥有一个内存池。这部分内存被称作自由空间或堆。程序用堆来存储动态分配的对象——即,那些在程序运行时分配的对象。动态对象的生存期由程序来控制,也就是说,当动态对象不再使用时,我们的代码必须显式的销毁它们。(c++ primer P400) 自由存储区和堆 自由存储是c++中通过new和delete动态分配和释放对象的抽象概念,通过new来申请的内存区域可称为自由存储区 堆是操作系统维护的一块内存 虽然c++编译器默认使 继续阅读 >>


吕子健 18/05/07 21:08:07
https://github.com/lzj112/C-Plus-Plus/tree/master/%E8%BD%AF%E4%BB%B6%E6%9D%AF/Merkle_Tree_test1 作者:weixin_36888577 发表于 2018/04/18 21:19:10 原文链接 https://blog.csdn.net/weixin_36888577/article/details/79997040 阅读:255 继续阅读 >>


吕子健 18/04/18 21:19:10