自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

anribras的专栏

小杯水

  • 博客(36)
  • 收藏
  • 关注

原创 win10 wsl配置

新购置了Sangsum 860evo 512G ssd,打算替换原笔记本机械盘.机器: Thinkpad X260, 单机械硬盘 512G, 已安装win10+ubuntu16.04.保底目标: 无缝迁移原hdd到ssd上,特别ubuntu16.04作为工作环境,不能有影响.更精致的目标: windows重装, ubuntu个人部分到ssd, 工作部分到外接的hdd(当移动硬盘用咯),这样插...

2019-02-02 13:15:57 7702 1

原创 理解cookie和session

Cookie和Session都是保存用户状态的机制,又可理解为一种数据结构.Cookie存在客户端(浏览器).Session存在服务端.Cookiehttp无状态,简单,减轻服务器压力。但如用户登录后的访问,如果每个页面都让客户端带登录状态,也很烦。Cookie机制来了。客户端先第1次请求,服务端的在respone header里,Set Cookie字段带1个服务端给这次访问分配的某...

2019-02-02 13:09:37 399

原创 nginx配置websocket反向代理

设置nginx增强理解nginx增加下面的配置: location /ver { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; #default Nginx set...

2019-02-02 13:08:35 1298

原创 ab和locust性能测试对比

测试的内容是以ContentType: multipart/form-datapost方式提交的某文件ab为了提交命名都费了很大劲:ab -n 100 -c 100 -p ab-test.mp3 -T "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" http://localhost/vo这还没完...

2019-02-02 13:07:39 669

原创 python rabbitmq使用

基本概念broker RabbitMQ Server就是Message Broker,包含了exchange和queue的实体.producer 生产者exchange 发往queue的路由,不同type决定了不同的路由方式,有fanout,direct,topic,headersqueue:队列 ,存储producer发来的消息的实体consumer:消费者,连接到不同的queue消费...

2019-02-02 13:06:46 251

原创 python celery使用总结

celery projectcelery overview archtecture and how it workscelery doccelery userguideMQ?RPC?Task Queue?任务队列是逻辑模型, 解决多个tasks如何更好的执行, 可以基于MQ实现RPC 实现了远程任务的框架,同样可以基于MQ实现MQ 是异构系统间最好的通信模型,封装了通信,消...

2019-02-02 13:04:40 1569 1

原创 彻底搞清楚python的编码问题

基本概念字符(串)是让人理解的符号,但存储到计算机,只能用二进制(字节)序列,从字符到字节称为encode,反之为decode.ascii:最基本的英文符号0-9,a-Z,±*/%这些的编码,范围0-0x7F,比如0用0x30表示.但全球其他语言的符号无法表现了.lattin-1: 类似ascii,不过范围扩充了0x80-0xFF,加入了拉丁字符,仍是1个字节存储unicode:是符号的规...

2019-02-02 13:02:53 520

原创 观察1次ssl认证的过程

SSLssl的基础知识,趁最近的项目又再熟悉下:单向的意思是仅客户端验证服务端证书,而不需要客户端也给证书给服务端去验证.wireshark抓取, 访问微信webapiwx.qq.com/jslogin协议:TLSv1.2Client hellorandom: 生成会话密钥用Cipher suites:声明支持的算法Server hello,Certificate,Server...

2019-02-02 13:02:12 812

原创 websocket心跳应用

websocket 稳定push设计方案User story1000台客户端同时在线, 突然发现bug, 导致大面积瘫痪, server使用websocket做更新推送.版本紧急修复后,上线实现步骤:修复版本admin 登录portal上传当前补丁信息, 设置发布条件: push时间, 车机id, 地理限制, 人数限制, push频率…等等.设置完成后, 页面显示push目标人数...

2019-02-02 13:00:30 682

原创 python ctypes总结

核心概念ctypes官方类型一览ctypes是python定义的为实现类型转换的中间层,是纯python数据类型与c类型通信的桥梁.除了None,integer,string,bytes,(隐式转换), 其他都需要转换成ctypes类型作为参数.None -->NULLstring bytes -- > char* wchar_t*integer -- > i...

2019-02-02 12:59:39 7960

原创 linux静态链接

基本概念预编译—>编译—>汇编—>链接宏定义代替,预编译命令,文本去注释—>.S—>.O—>ELF文本变成中间文件, 也就是编译+汇编的过程:词法分析,语法分析,语义分析,中间过程优化ELF文件ELF是一种二进制可执行文件.目标文件(*.obj)和最终可执行文件(ELF格式)统称为ELF文件.另外*.a *.so coredump文件也都是EL...

2019-02-02 12:57:49 998

原创 linux-elf装载过程

装载装载到哪里?内存,进程上看,是映射到了虚拟进程空间.装载谁? 程序运行的实体代码,数据,来自elf,共享库,OS等.怎么装载?利用程序局部性原理: 运行某段程序时,很可能也要运行最近的1个代码块,于是先提前装载到内存.内存肯定不够用,不过通过页映射,需要时(缺页异常),再从磁盘load到内存,做替换.管理这个装载过程的,就是os的存储管理器(MMU).具体过程:1. 建立虚拟进程...

2019-02-02 12:57:19 1627

原创 linux x86_64函数栈帧

ubuntu-x86_64int func(int a, int b, int c, int d, int e ,int f, int g){ int h=10; int i; return a+b;}int main(int argc, char* argv[]){ func(1,2,3,4); return 3;}0000000000...

2019-02-02 12:56:29 598

原创 python实现leetcode的笔记

用jupyter_notebook记录,github保存, csdn展示,完美。

2019-01-04 15:42:03 322

原创 设计模式笔记

参考: http://blog.csdn.net/column/details/design.html http://blog.csdn.net/zhengzhb/article/details/7278174 http://blog.csdn.net/column/details/mydesignpattern.html面象对象间的关系设计6大准则单一职责Liscov里氏替换原则面向

2017-08-30 19:05:38 546

原创 c++ primer CH15 文本布尔查询程序

TextQueryOOP实现Query智能指针的引入参考理解了下,实现上有不同。 http://blog.csdn.net/zhaoxy_thu/article/details/3799516 自己实现的代码地址: https://github.com/anribras/QueryOopTextQuery最开始仅是查询某个单词所在的行数。 文本存储到内存,选择vector map数

2017-08-23 17:15:57 337

原创 rabbit-mqtt +pmqtt协议+ paho库尝鲜 (ubuntu 16.04)

步骤1 下载安装rabiit-mq mqtt-server 就用deb包 另需要 sudo apt-get install erlang2 启动 sudo /etc/init.d/rabbitmq-server restart3 mqtt-3.1协议支持 rabbitmq-plugins enable rabbitmq_mqtt 4 开启动web管理 rabbitmq-plugins e

2017-08-04 16:08:37 1711

原创 timerfd实现多线程定时器

基本原理参考了一段别人的代码.修改了更稳健,同时增加单例模式 复用io刷新timerfd map存申请的fd,key排序,发生的一定是最小的.代码timerRunner.cpp/** * @file timer_poll.cpp * @brief * @author * @version * @date 2017-05-05 */#include <stdlib.h>

2017-07-31 17:44:35 1353

原创 this指针和虚函数理解

this指针vptr和vtbl小技巧示例加注释this指针就是对象的首地址. 无虚函数时,即第1个成员变量的地址. 有虚函数,第1个成员变量为修正为vptr,指向vtbl 调用成员函数时,如函数里要使用成员变量,编译器根据this指针的偏移来寻访各成员变量的值. 这就是成员变量or函数都隐含this的含义.vptr和vtblvptr指向虚函数表的指针 在构造对象完成后才产生.vptr

2017-07-31 15:42:41 2839

原创 c++11 文本查询练手小程序

查询文本,输入单词,打印文件中出现该单词的次数,以及行号, 同一行出现多次,仅算做1次 单词不区分大小写 文本标点暂时只有. , !#include <memory>#include <stdio.h>#include <string>#include <iostream>#include <fstream>#include <string.h>#include <algorith

2017-07-28 01:47:15 390

原创 c++小根堆数组实现

主要功能最小堆排序(大到小): void order(); 删除首元素: Type fetch_root(); 插入元素: void insert_item(const Type & item); void insert_item_faster(const Type & item);//快速版本关键向下调整比较关键,即从start结点到end结点逐个调整最小堆: void shift

2017-07-05 10:59:09 736

原创 基于setitimer实现允许单进程多次调用的定时器

原理setitimer不能在进程中多次调用,考虑用链表管理调用。每个节点包含当前事件还剩余多少时间,回调等,每次有新节点时,重新更新节点时间。在计数到来后,重新恢复节点初始时间实现重复计时,删除相对简单,挪掉节点即可。函数原型int set_timer(struct own_timer **t, struct timeval val, callback* cb, void* arg) ;int f

2017-04-21 07:41:43 1725 1

原创 shell读写ini文件

实现了读,写以及读取ini文件段的功能,还可以更丰富,仅当抛砖引玉。代码readIni() { file=$1;section=$2;item=$3; val=$(awk -F '=' '/\['${section}'\]/{a=1} (a==1 && "'${item}'"==$1){a=0;print $2}' ${file}) echo ${val}}writeIn

2017-04-07 23:07:42 11283 5

原创 简易线程池实现

其实也就是任务分发器,池子里预先跑着N个线程,可以往池子里提交任务。相对线程不断创建和销毁,特别对于大量的短时任务,线程池显然是很节省资源的。直接上代码:#include #include #include #include #include #include typedef void* (*job)(void*);#define THREAD_PROC(i) (threa

2017-03-22 14:33:42 467

原创 linux tmux 解决复制到系统剪切板

tmux 复制到系统剪切板的方法tmux是很方便,但没想到复制到系统剪切板这么难用tmux v2.1.参考这篇文章 .1 安装xclip sudo apt-get install xclip2 增加tmux 配置重新映射了copy mode下的选择/中止选择文本.和vi一致,v开始 y结束 增加如下配置到.tmux.conf: bind-key -t vi-copy ‘v’ begin-

2017-01-01 12:45:09 6498

原创 win10 ubuntu16.04 恢复grub引导

两篇参考:http://www.linuxidc.com/Linux/2015-01/111797.htmhttp://jingyan.baidu.com/article/454316ab6efc05f7a7c03a33.html双系统本来正常, 重置BIOS后直接进入win10了,但引导还是在的,需要查看EFI分区, 查看方法:以管理员身份运行cmd,输入

2016-12-14 14:08:28 2954

原创 结合CSerialPort类,实现完整的串口收发功能

最近的的项目软件,需要增加串口的收发,因需要统一到同一个通讯通讯框架,(之前已有USB,读卡器等)从API上看,我最希望其能简化成如下的简洁形式:  bool UartRcvData(LPCBYTE data,DWORD len)  bool UartSendData(LPCBYTE data,DWORD len)  为了达到次目的,吃苦不少。一开始采用了MSCOMM的控件,该控件将w

2016-12-05 10:05:56 6875 1

原创 MFC的来龙去脉-----消息处理,找处理函数

一、处理函数的源头  对于对话框程序,(无论是模式还是非模式),在注册窗口的时候,会指定其窗口过程处理函数WinProc;当消息找到了对应的窗口,DispatchMessage便开始让内核user32.dll执行WinProc,它负责调用真正的消息处理函数;if (pState->m_msgCur.message != WM_KICKIDLE && !AfxPreTranslateMe

2016-12-05 10:05:53 772

原创 MFC的来龙去脉-----热身开胃汤

现在是2013年12月份。对MFC这个老人来讲,这个年代早已是年轻人的天下。但我还是要看看你走过的路,体会你曾经的光荣。  在剖析MFC之前,一定要先搞懂几个问题:1.消息机制  windows系统的soul,无需多言,也没能力多言...2.消息及消息队列  首先要清楚消息分两种,一种是要进入消息循环的的队列消息;一种是不进消息循环的非队列消息;在讨论消息循环时,一定是针对队列

2016-12-05 10:05:50 351

原创 MFC的来龙去脉-----消息循环,找处理场所

一、MFC应用程序如何启动,并进入消息循环?-启动的核心:  建立主线程,进入程序的main函数,然后进入消息循环。-路径:  定义全局theApp对象->调用类默认构造函数->调用MFC库自动link的winmain初始化,及入口->调用AfxWinMain函数->启动消息循环  以下文章介绍了在theApp对象构造后,如何执行到afxwinmain的:     ht

2016-12-05 10:05:47 423

原创 android usb 异步请求理解

先贴这个adbtest的例子,用android的usb sdk传输adb协议数据,将android的logcat信息打印再屏幕上。 我研究这个例子的目的是为了实现usb传输tcpip数据,需要借用adb。 http://www.java2s.com/Code/Android/Hardware/USBdevicethatsupportstheadbprotocol.htm这例子具体有几个类:a

2016-03-09 10:25:48 1556

原创 Bravo!Java学习笔记(3)---多线程

多线程解决的问题不管是Linux、Java、还是Windows,多线程都是解决线程如何创建、使用、销毁,以及线程之间如何同步的问题。 1. 场景1 某个数据A被多个线程值改变,可能是增加,或者减少。比如A=A+15,再给A增加15前,如何确保A没有被再增加过、减少过? Load register , A Add register , 15 Mov A, register2.

2016-03-08 07:31:11 481

原创 全志A20平台Android编译环境

安装jdk6.45下载jdk-6u45-linux-x64.bin; 在下载目录执行 sudo chmod u+x jdk-6u45-linux-x64.bin sudo ./jdk-6u45-linux-x64.bin sudo mv jdk1.6.0_45 /opt sudo update-alternatives –install “/usr/bin/j

2016-02-13 19:42:34 1059

原创 Ubuntu12配置gvim的youcompleteme插件过程记录

在ubuntu12.04上想使用gvim的youcompleme神器,但需要升级到7.4; 安装youcompleme插件前,需要安装clang+llvm、cmake;安装gvim7.4下载解压gvim74到~目录下,在vim74目录下 执行脚本 ./configure –with-features=huge \ –enable-rubyinterp=yes \ –enable-p

2016-02-13 18:44:06 425

原创 Bravo!Java学习笔记(1)---接口、抽象类、对象克隆、内部类

接口接口是为了实现java的“对修改封闭,对扩展开放 ”原则,某个对象声明了某个接口类方法,它便具备接口的功能,把功能部分封装出来,自然很好扩展。 例如,某个类要使用排序,但排序一定有比较大小。于是该类一定要实现Comparable接口中的Compare接口,才能使用Sort方法。 使用接口的示例: 1. 定义1个接口 interface,规定某些功能; 2. 在需要使用接口功能的类A里

2016-02-13 18:12:08 560

原创 Bravo!Java学习笔记(2)---泛型程序设计

开始好好在CSDN记录学习过程。 今天大年初一。 参考: Java核心技术卷1 第12章 泛型程序设计 [http://blog.csdn.net/lonelyroamer/article/details/7864531] 1. 为什么需要Java泛型类似C++的模板概念,泛型程序设计(Generic Programming)意味着编写的代码可以被很多不同类型的对象所重用,或

2016-02-06 17:37:39 411

空空如也

空空如也

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

TA关注的人

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