- 博客(68)
- 资源 (8)
- 收藏
- 关注
原创 静态库、动态库回顾
回顾一下库相关的知识点,总结备忘一下。在某种情况下,你有了如下的代码,结构如下假设,pra和test分别代表第三方动态库。小白需要让编译上述代码并运行,编译过程如下。
2024-05-02 17:24:44
606
原创 openssl 生成自签名证书以及CA证书链
这里涉及到一个server.ext,这是为了适应现代浏览器SSL证书标准。和root.ext类似,需要手动创建,内容如下。这里涉及到一个ca_intermediate.ext,和root.ext类似,需要手动创建,内容如下。执行命令后,会提示你输入一些内容,请按照提示输入,每一项输入的内容需要自己记住。中间证书的制作过程与根证书类似,这里直接将命令贴上。中间证书的制作过程与根证书类似,这里直接将命令贴上。进一步输入一下命令进行验证。结果中必须包含如下类容。执行结果应该和下面一致。输出结果应该如下所示。
2023-06-18 16:52:38
1987
1
原创 python的一些东西
python安装依赖内网环境中,无法直接pip安装的情况,可以通过如下方式a. git clone xxx.git 获取待安装的包例如requests包`git clone git://github.com/kennethreitz/requests.git`b. 将下载下来的包导入内网机器中的/usr/lib/pythonXXX/site-packages/cp -r requests /usr/lib/python3.6/site-packages/接下来你就可以直接用了解决pyth
2021-06-03 21:19:58
106
原创 谈谈数据库的隔离方式
说起数据库的隔离方式,首先回答下为啥会有数据库的隔离。提到隔离,那隔离是什么意思呢,简单来说就是你看不见我,我看不见你。比如澡堂里洗澡的时候,通常两个龙头之间会有一个不透明的玻璃墙及一块门帘,两个人洗澡的时候,不用坦诚相对。这个是澡堂里面的隔离,被隔离的对象是两个洗澡的人。那数据库场景的隔离以及被隔离的对象又是什么呢?我们说数据库里面被隔离的对象,是指两个正在准备操作数据库的连接,数据库场景的隔离,其实就是针对这两个连接的隔离。 两个连接为啥要隔离呢?很简单,两个连接都是操作同一个数据库,但是两个连接可.
2021-04-04 23:26:52
2227
原创 想到啥写啥
转眼已经2021年3月份16日了,精确到日子,大多数人会认为这是个值得纪念的东西吧,其实不是,只是我脑子在徜徉,刚好优快云的默认标题就是时间,我就写下了这个日期。 3月份是个特殊的时间,犹记得15年的3月份,正直硕士毕业的时间,很可惜,我这个学渣,没能正常毕业,顺延到了6月份;12年的3月份,那是个开心的时光,研究生录取考试结束了,我考中了,9月份入学,于是那段时间,我找了一份实习,赚点生活费和住宿费。再之前,就不记得有什么3月份了。。。 最近很忙,天天加班,我发现我是个不擅长管理时...
2021-03-06 22:24:44
315
2
原创 centos配置vim c++开发环境
好久没从0开始配置vim环境了,今天搞了一下,发现碰到好多问题,整理一下,以便下个环境能继续用。我的操作系统是redhat,centos7.2vim代码自动提示插件YouCompleteMe需要vim8和python3版本,centos7.2自带的vim和python都不符合要求,需要重新安装。环境安装涉及以下几步1、删除旧的vim配置yum remove vim-enhanced vim-common vim-filesystem vim-minimal2、从github上下载安装pyth
2020-09-28 19:20:36
1334
原创 c++ stl 一些东西
std::map: 其key是基于比较运算符的,因此自定义类型需要为该类型设定比较运算符操作class A {public: bool operator < (const A & b) { return mm < b.mm; } private: int mm; } std::map<...
2019-09-22 21:22:44
185
原创 C++常用的库
opencv.lib-turbojpeg: jpeg sim加速解码imagemagicffmpeggflags:https://github.com/gflags/gflagsglog : https://github.com/google/gloggtest: https://github.com/google/googletestsnappy: https://github.c...
2019-06-17 16:41:07
407
原创 selec, poll, epoll实践
poll例子#include <iostream>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <string.h>#include <unistd.h&g
2018-10-31 19:53:43
171
原创 andriod开发
搭建环境篇 官网下载最新andriod studio, 无脑安装。 建立helloworld项目。 注意改掉buildscript脚本buildscript { repositories { jcenter{ url 'http://jcenter.bintray.com'//原来这里是jcenter(),需要改成这个样子 ...
2018-09-16 20:06:23
215
原创 google protobuf存储原理及一些底层api应用
google protobuf编码原理核心基础是Varints。它用一个或者多个字节表示一个数字,值越小的数字字节数越小。 比如要存储一个int32 类型的数字,通常是4个字节。但是Varints最少只需要一个字节就可以了。 怎么做到呢? Varints规定小于128的数字都可以用一个字节来表示,比如10, 它就会用一个字节 0000 1010 来存储。 对于大于128的数字,则用...
2018-04-11 16:06:56
2031
原创 git 小结
git git pull remote branch to local and create new local branch git checkout -b xxxx –track origin/tsk#100_aaagit create branchgit branch aagit switch to new branchgit checkout aagit delete branchg
2017-12-22 15:13:47
225
原创 C++ 算法系列之贪婪算法
贪婪算法的本质活动选择问题。假设有n个活动,这些活动有起止时间,这些活动都要使用同一个如教室这样的资源。每次只能有一个活动使用该资源。我们定义两个活动起止时间不相交,则称这两个活动是相容的。求一个最大相容活动。 这个问题如果用暴力解法,则对于n个活动,复杂度为2的n次方. 我们采取的策略是始终选取结束时间最早的活动作为我们的解集合成员。这个策略就是贪婪选择的结果。 那么解释一下,为什么选择结束
2017-12-09 22:58:29
6132
6
原创 C++ 算法系列之动态规划
动态规划,是为了避免递归中出现重复计算的一种策略。核心思想是自底向上的解决问题。因此解决这类问题的关键是,从n=1开始解决,递推到n=N,求得最终值 基本操作分为三步 1. 寻找最优子结构 2. 列出递归方程,自底向上的对每个新产生的子问题仅解一次并将解保存在一个表格,需要时在表中查找. 3. 根据计算出的最优解的值构造相应的最优解example 1有一个高度为10级台阶的楼梯,从下往上走
2017-12-09 20:43:55
1315
原创 C++算法系列之排序
插入排序#include<iostream>#include<algorithm>#include<random>#include<ctime>#include<vector>#include<iterator>const int M = 1000;const int N = 1000;template<typename Iterator, typename Comparator>
2017-11-30 17:08:41
290
原创 C++primer薄片系列之特殊工具与技术
new 和 deleteclass A{public: A() { } ~A() { }};A *s =new A();new 的具体操作过程分三步 1. 调用标准库函数operator new申请足够大的,原始的,未命名的内存空间 2. 编译器运行A的构造函数构造对象,并为其传入初始值 3. 返回构造完成后的对象的指针 delete
2017-11-24 17:34:09
358
原创 C++ primer 薄片系列之大型程序的工具
捕获异常class A{public: A() { } ~A() { std::cout << "I am done" << std::endl; }};void test(){ try { A a; throw std::runtime_error("sdss");//捕获异常能
2017-11-24 14:43:33
367
原创 python完整实现发送邮件流程
最近需要写个监控程序,需要用将结果以邮件的形式将结果进行通知. 这里把完整的实施过程给整理一下. 第一步,自然是先准备个用于发送邮件的邮箱了 这里,我去163邮箱注册了一个邮箱地址.这里为了在客户端发送邮件,需要对注册好后的邮箱进行设置一下.163邮箱很容易设置. 网页端登进邮箱主页后,点击设置选项后,在下拉菜单里面点击POP3/SMTP/IMAP.这时,左侧页面会有客户端授权密
2017-11-21 11:25:02
8375
1
原创 C++primer 薄片化系列之标准库特殊实施
std::tupletuple 可以将一些数据组合成单一对象.构造函数是explicit 的std::tuple<int,double> s = {1,2.5};//错误std::tuple<int,double> s(1,2.5);//正确访问成员std::tuple<int,double> s(1,2.4);std::get<0>(s);//获取s的第一个元素std::get<1>(s);
2017-11-20 17:30:37
330
原创 C++primer 薄片系列之模板
非类型模板参数template<int t1>void test(const int(&p)[t1]) //非类型模板参数{ for(auto i = 0; i < t1; i++) { std::cout << p[i] << " "; } std::cout <<std::endl;}int main(){ int p[10] =
2017-11-14 17:19:11
253
原创 C++实时处理不断被写入的文件
最近业务上需要实现一个解析远程终端输出结果的指令,通过ssh将远程服务器终端结果重定向 到本地,再解析终端输出,提取有用的信息做下一步的处理。由于终端会不停的输出,因此重定向的文件也会不断的更新。目前采用的机制是轮训的办法,记录已经读取的文件位置,不断获取当前文件的最新位置并更新读取位置。具体代码如下#include<iostream>#include<fstream>#include<stri
2017-11-10 14:37:47
4522
原创 C++调用外部so文件
利用extern “C” 构建一个外部C库//testlibc.cpp#include<iostream>extern "C" void test(){ std::cout << "this is a test log" << std::endl;}//编译成动态库g++ -std=c++11 testlibc.cpp -shared -fPIC -o libtest.soC 文件
2017-11-10 13:20:26
11194
原创 C++primer薄片系列之OOP
基类中的某些函数,基类希望派生类定义适合自己的版本,这些函数则被声明为虚函数,virtual。动态绑定发生在基类指针(或者引用)调用虚函数的时候。通常基类的析构函数被定义为虚函数,解析过程发生在运行期。如果基类把一个函数声明成虚函数,则函数在派生类中也是虚函数。 调用虚函数时,会调用距离其类最近的实现虚函数的类。class A{public: virtual void test()
2017-11-05 21:33:42
277
原创 C++ primer 薄片系列之重载运算符
重载运算符函数也是函数,所以参数数量和该运算符的运算对象数量一样多。当运算符是成员函数时候,它的第一个(左侧)运算对象绑定到隐式的this指针上,所以成员运算符函数的显式参数数量比运算符的运算对象总数少一个。 硬性规定:对于一个运算符函数来说,它或者是类的成员函数,或者至少含有一个类类型的参数。 不能重载的运算符 一、:: 二、.* 三、 . 四、?: 通常情况下,不应该重载逗号,取地址,
2017-11-05 21:18:34
252
原创 C++ primer 薄片系列之移动构造
移动构造函数为啥要有移动构造函数, 个人浅见,为避免调用成员的复制构造函数造成额外的开销,毕竟复制指针要来的更方便快捷,因而产生的。比如一个string对象,普通的拷贝赋值或者拷贝构造函数的方式中,我们是在内存空间里创建一个新的string对象,并将原string的char数组一个一个复制到新的string对象。移动构造或者移动赋值的时候,我们先假定原来的string,我们已经不需要用了。但是原来s
2017-11-05 11:59:23
379
原创 C++ primer 薄片系列之拷贝控制
拷贝构造函数如果没有为一个类定义拷贝构造函数,编译器会为我们定义一个合成拷贝构造函数。合成的拷贝构造函数会将参数的成员逐个拷贝到正在创建的对象中,编译器从给定的对象中依次将非static成员拷贝到正在创建的对象中。 –类成员调用其拷贝构造函数 –内置类型直接拷贝,虽然数组不能直接拷贝,但是会逐元素的拷贝一个数组类型的成员。如果数组类型是类成员,则使用元素的拷贝构造函数来进行拷贝拷贝初始化的发
2017-11-02 17:26:36
282
原创 C++ primer 薄片系列之 智能指针
shared_ptr引用次数和交换操作 std::shared_ptr<A> a(new A); std::cout << a.use_count() << std::endl; // 输出 1 std::shared_ptr<A> b; std::cout << b.use_count() << std::endl; // 输出 0 a.swap(b);
2017-11-02 14:35:02
222
原创 C++ primer 薄片系列之 map 三两事
map 向map中写入一个pair,如果这个pair的关键字已经存在在这个map中,则原map不受写入影响。 std::map<int,int> am1 = {{1,2}}; auto it = am1.insert({1,5}); std::cout << it.first->first << " "<< it.first->second << " " << it.seco
2017-11-01 17:23:53
259
原创 C++ primer 薄片系列之 STL 容器和迭代器
容器的比较vector:元素保存在连续空间中。可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除可能很慢 list:双向列表,只支持顺序访问。在任何位置插入或删除都很快 forward_list:单项列表,只支持单向顺序访问。在链表任何位置插入或者删除都很快 deque:双端队列,支持快速随机访问,在头尾插入,删除很快 string :元素保存在连续空间中。和vect
2017-10-31 17:28:00
289
原创 std::lock_guard 和 std::unique_lock的区别
大部分情况下,两者的功能是一样的,不过unique_lock 比lock_guard 更灵活. unique_lock提供了lock, unlock, try_lock等接口. lock_guard没有多余的接口,构造函数时拿到锁,析构函数时释放锁 lock_guard 比unique_lock 要省时.class A{public: std::mutex
2017-09-15 13:40:41
5621
1
原创 Sublime 插件
SublimeLinter:提示语法错误pretty json: ctrl+command+j 可以格式化json字符串ApplySyntax: 快速语法检测 Alignment:代码格式的自动对齐 AdvancedNewFile:增强的创建文件插件,点某个项目后按cmd+option+n输入文件路径即可创新 Clipboard History:粘贴板历史记录,方便使用复制/剪切的内容 Su
2017-07-28 14:39:05
294
原创 C++11 time相关函数用法
最近有用到时间方面的东西,看了一点C++11 关于时间相关的资料,做了一下小结,以备日后查询 头文件主要在chrono里面#include<std::chrono>using namespace std;using namespace std::chrono;system_clock::now()// 获得当前时间点time_t now=system_clock::to_time_t(sys
2017-07-21 09:00:25
1296
原创 Ubuntu解决eclipse CDT 不能识别C++11 shared_ptr 等特性
解决 eclipse CDT 启动 找不到 jre jdk的解决方法: 在eclipse.ini 文件的开头添加 两行:-vm/usr/local/java/jdk-8u131-linux-x64/jre/bin解决C++ 文件中#include<iostream>报错的问题C/C++ General -> Paths and Symbols ->Includes -> Add->Fi
2017-06-11 19:06:43
2358
原创 Ubuntu 添加应用程序快捷方式
以添加sublime3为例 官网下载sublime3,解压后得到名为sublime_text_3的文件夹 “mv sublime_text_3 /usr/local/lib/ln -s /usr/local/lib/sublime/sublime_text /usr/bin/sublime3软链接的目的是为了方便在终端敲sublime3就可以直接打开配件桌面快捷方式 Ubuntu系统默认D
2017-06-09 09:32:43
348
转载 把vim打造成C++ IDE
前辈整理的,留作收藏备注 http://blog.youkuaiyun.com/doc_sgl/article/details/47205779
2017-06-08 13:27:24
279
原创 更快的memcpy
先做个对比#define SMARTCOPY memcpy(destination,source,65536);#define DUMBCOPY for(i=0;i<65536;i++) \ destination[i]=source[i]main(){ char source[65536],destination[65536];
2017-05-03 15:52:01
440
AXMLPrinter2反编译错误
2018-05-08
C#入门经典
2016-12-11
Go语言编程
2015-07-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人