自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (8)
  • 收藏
  • 关注

原创 openssl 生成自签名证书以及CA证书链

这里涉及到一个server.ext,这是为了适应现代浏览器SSL证书标准。和root.ext类似,需要手动创建,内容如下。这里涉及到一个ca_intermediate.ext,和root.ext类似,需要手动创建,内容如下。执行命令后,会提示你输入一些内容,请按照提示输入,每一项输入的内容需要自己记住。中间证书的制作过程与根证书类似,这里直接将命令贴上。中间证书的制作过程与根证书类似,这里直接将命令贴上。进一步输入一下命令进行验证。结果中必须包含如下类容。执行结果应该和下面一致。输出结果应该如下所示。

2023-06-18 16:52:38 1258 1

原创 FFMPEG centos 安装指南

ffmpeg

2022-10-20 15:45:28 4005 1

原创 一些python问题

直接easyinstallpip装的pip和python版本有可能不匹配。

2022-07-27 20:01:35 273

原创 【python】vscode下解决Unable to import XXX的问题

python 小技巧

2022-06-16 16:16:21 1091

原创 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 83

原创 谈谈数据库的隔离方式

说起数据库的隔离方式,首先回答下为啥会有数据库的隔离。提到隔离,那隔离是什么意思呢,简单来说就是你看不见我,我看不见你。比如澡堂里洗澡的时候,通常两个龙头之间会有一个不透明的玻璃墙及一块门帘,两个人洗澡的时候,不用坦诚相对。这个是澡堂里面的隔离,被隔离的对象是两个洗澡的人。那数据库场景的隔离以及被隔离的对象又是什么呢?我们说数据库里面被隔离的对象,是指两个正在准备操作数据库的连接,数据库场景的隔离,其实就是针对这两个连接的隔离。 两个连接为啥要隔离呢?很简单,两个连接都是操作同一个数据库,但是两个连接可.

2021-04-04 23:26:52 2067

原创 想到啥写啥

转眼已经2021年3月份16日了,精确到日子,大多数人会认为这是个值得纪念的东西吧,其实不是,只是我脑子在徜徉,刚好CSDN的默认标题就是时间,我就写下了这个日期。 3月份是个特殊的时间,犹记得15年的3月份,正直硕士毕业的时间,很可惜,我这个学渣,没能正常毕业,顺延到了6月份;12年的3月份,那是个开心的时光,研究生录取考试结束了,我考中了,9月份入学,于是那段时间,我找了一份实习,赚点生活费和住宿费。再之前,就不记得有什么3月份了。。。 最近很忙,天天加班,我发现我是个不擅长管理时...

2021-03-06 22:24:44 258 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 1234

原创 c++ stl 一些东西

std::map: 其key是基于比较运算符的,因此自定义类型需要为该类型设定比较运算符操作class A {public: bool operator < (const A & b) { return mm < b.mm; } private: int mm; } std::map&lt...

2019-09-22 21:22:44 157

原创 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 369

原创 selec, poll, epoll实践

poll例子#include &lt;iostream&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;netinet/in.h&gt;#include &lt;string.h&gt;#include &lt;unistd.h&g

2018-10-31 19:53:43 145

原创 andriod开发

搭建环境篇 官网下载最新andriod studio, 无脑安装。 建立helloworld项目。 注意改掉buildscript脚本buildscript { repositories { jcenter{ url 'http://jcenter.bintray.com'//原来这里是jcenter(),需要改成这个样子 ...

2018-09-16 20:06:23 181

原创 google protobuf存储原理及一些底层api应用

google protobuf编码原理核心基础是Varints。它用一个或者多个字节表示一个数字,值越小的数字字节数越小。 比如要存储一个int32 类型的数字,通常是4个字节。但是Varints最少只需要一个字节就可以了。 怎么做到呢? Varints规定小于128的数字都可以用一个字节来表示,比如10, 它就会用一个字节 0000 1010 来存储。 对于大于128的数字,则用...

2018-04-11 16:06:56 1961

原创 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 185

原创 C++ 算法系列之贪婪算法

贪婪算法的本质活动选择问题。假设有n个活动,这些活动有起止时间,这些活动都要使用同一个如教室这样的资源。每次只能有一个活动使用该资源。我们定义两个活动起止时间不相交,则称这两个活动是相容的。求一个最大相容活动。 这个问题如果用暴力解法,则对于n个活动,复杂度为2的n次方. 我们采取的策略是始终选取结束时间最早的活动作为我们的解集合成员。这个策略就是贪婪选择的结果。 那么解释一下,为什么选择结束

2017-12-09 22:58:29 5998 6

原创 C++ 算法系列之动态规划

动态规划,是为了避免递归中出现重复计算的一种策略。核心思想是自底向上的解决问题。因此解决这类问题的关键是,从n=1开始解决,递推到n=N,求得最终值 基本操作分为三步 1. 寻找最优子结构 2. 列出递归方程,自底向上的对每个新产生的子问题仅解一次并将解保存在一个表格,需要时在表中查找. 3. 根据计算出的最优解的值构造相应的最优解example 1有一个高度为10级台阶的楼梯,从下往上走

2017-12-09 20:43:55 1251

原创 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 182

原创 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 322

原创 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 321

原创 python完整实现发送邮件流程

最近需要写个监控程序,需要用将结果以邮件的形式将结果进行通知. 这里把完整的实施过程给整理一下. 第一步,自然是先准备个用于发送邮件的邮箱了 这里,我去163邮箱注册了一个邮箱地址.这里为了在客户端发送邮件,需要对注册好后的邮箱进行设置一下.163邮箱很容易设置. 网页端登进邮箱主页后,点击设置选项后,在下拉菜单里面点击POP3/SMTP/IMAP.这时,左侧页面会有客户端授权密

2017-11-21 11:25:02 8227 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 268

原创 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 219

原创 C++实时处理不断被写入的文件

最近业务上需要实现一个解析远程终端输出结果的指令,通过ssh将远程服务器终端结果重定向 到本地,再解析终端输出,提取有用的信息做下一步的处理。由于终端会不停的输出,因此重定向的文件也会不断的更新。目前采用的机制是轮训的办法,记录已经读取的文件位置,不断获取当前文件的最新位置并更新读取位置。具体代码如下#include<iostream>#include<fstream>#include<stri

2017-11-10 14:37:47 4288

原创 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 10996

原创 C++primer薄片系列之OOP

基类中的某些函数,基类希望派生类定义适合自己的版本,这些函数则被声明为虚函数,virtual。动态绑定发生在基类指针(或者引用)调用虚函数的时候。通常基类的析构函数被定义为虚函数,解析过程发生在运行期。如果基类把一个函数声明成虚函数,则函数在派生类中也是虚函数。 调用虚函数时,会调用距离其类最近的实现虚函数的类。class A{public: virtual void test()

2017-11-05 21:33:42 235

原创 C++ primer 薄片系列之重载运算符

重载运算符函数也是函数,所以参数数量和该运算符的运算对象数量一样多。当运算符是成员函数时候,它的第一个(左侧)运算对象绑定到隐式的this指针上,所以成员运算符函数的显式参数数量比运算符的运算对象总数少一个。 硬性规定:对于一个运算符函数来说,它或者是类的成员函数,或者至少含有一个类类型的参数。 不能重载的运算符 一、:: 二、.* 三、 . 四、?: 通常情况下,不应该重载逗号,取地址,

2017-11-05 21:18:34 220

原创 C++ primer 薄片系列之移动构造

移动构造函数为啥要有移动构造函数, 个人浅见,为避免调用成员的复制构造函数造成额外的开销,毕竟复制指针要来的更方便快捷,因而产生的。比如一个string对象,普通的拷贝赋值或者拷贝构造函数的方式中,我们是在内存空间里创建一个新的string对象,并将原string的char数组一个一个复制到新的string对象。移动构造或者移动赋值的时候,我们先假定原来的string,我们已经不需要用了。但是原来s

2017-11-05 11:59:23 335

原创 C++ primer 薄片系列之拷贝控制

拷贝构造函数如果没有为一个类定义拷贝构造函数,编译器会为我们定义一个合成拷贝构造函数。合成的拷贝构造函数会将参数的成员逐个拷贝到正在创建的对象中,编译器从给定的对象中依次将非static成员拷贝到正在创建的对象中。 –类成员调用其拷贝构造函数 –内置类型直接拷贝,虽然数组不能直接拷贝,但是会逐元素的拷贝一个数组类型的成员。如果数组类型是类成员,则使用元素的拷贝构造函数来进行拷贝拷贝初始化的发

2017-11-02 17:26:36 255

原创 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 190

原创 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 222

原创 C++ primer 薄片系列之 STL 容器和迭代器

容器的比较vector:元素保存在连续空间中。可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除可能很慢 list:双向列表,只支持顺序访问。在任何位置插入或删除都很快 forward_list:单项列表,只支持单向顺序访问。在链表任何位置插入或者删除都很快 deque:双端队列,支持快速随机访问,在头尾插入,删除很快 string :元素保存在连续空间中。和vect

2017-10-31 17:28:00 263

原创 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 5549 1

原创 Sublime 插件

SublimeLinter:提示语法错误pretty json: ctrl+command+j 可以格式化json字符串ApplySyntax: 快速语法检测 Alignment:代码格式的自动对齐 AdvancedNewFile:增强的创建文件插件,点某个项目后按cmd+option+n输入文件路径即可创新 Clipboard History:粘贴板历史记录,方便使用复制/剪切的内容 Su

2017-07-28 14:39:05 248

原创 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 1234

原创 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 2292

原创 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 320

转载 把vim打造成C++ IDE

前辈整理的,留作收藏备注 http://blog.csdn.net/doc_sgl/article/details/47205779

2017-06-08 13:27:24 253

原创 更快的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 373

原创 C++ 返回指向数组指针的函数

数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用。 理由:会造成不必要的开销。因为数组的复制将导致连续的内存读与内存写,其【时间】开销取决于数组长度,有可能会变得非常大。C语言的函数参数传递只有pass by value这一种形式,由于拷贝数组开销巨大,因此C语言使得当数组作为实参传递给函数的时候,将退化为同类型的指针,然后对那个指针pass by value。函数指针: i

2017-04-26 23:31:33 3703

原创 C++ 局部变量

先看一个小程序#include<iostream>#include<stdlib.h>#include<cstring>using namespace std;char *test(){ char buffer[20]="1234"; return buffer;}int main(){ cout<<test()<<endl;//什么都没有}局部变量(

2017-04-26 15:55:37 1641

AXMLPrinter2反编译错误

java.lang.ArrayIndexOutOfBoundsException: 128 at android.content.res.StringBlock.getShort(StringBlock.java:231) at android.content.res.StringBlock.getString(StringBlock.java:91) at android.content.res.AXmlResourceParser.getName(AXmlResourceParser.java:140) at test.AXMLPrinter.main(AXMLPrinter.java:56)

2018-05-08

tcp/ip 卷1,2,3

tcp/ip 卷1,2,3 非常好的一本tcp ip 基础书籍教程. 高清

2017-10-10

面试和算法心得

编程之法,面试和算法心得,很不错的一本书籍,覆盖面较广,留作存档

2017-01-09

C#入门经典教材

一部很好的学习C#的入门教材

2016-12-12

Programming_Windows_程式开发设计指南

windows 编程

2016-12-11

C#入门经典

2016-12-11

Go语言编程

Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点: 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感 觉起来比典型的面向对象语言更轻量级。 Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。

2015-07-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除