- 博客(23)
- 资源 (12)
- 问答 (2)
- 收藏
- 关注
原创 C 结构体内存对齐原则
这个地方总会忘,自己写一遍就记住了关于结构体内存对齐(在没有#pragma pack宏的情况下)数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素
2017-12-02 19:06:36
320
转载 线程池实现
thread.h#ifndef __THREAD_H #define __THREAD_H #include <vector> #include <string> #include <pthread.h> using namespace std; /** * 执行任务的类,设置任务数据并执行 */ class CTask
2017-11-28 14:23:56
304
原创 redis 扩容(非集群)
场景生产环境有1台redis,主备结构,因数据量增大,需要额外增加两台redis思路:由于使用的非redis集群,hash问题需要自己处理。可以在客户端与redis服务器之间增加一台twenproxy做代理,使用twenproxy的hash策略,可以避免客户端修改代码。 另外一个问题是原有redis的数据由于采用了新的hash策略,必然造成一部分数据miss。解决这个问题可以有两种思路: 1.
2017-11-15 12:40:48
509
转载 linux top 命令参数详解
简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU
2017-11-07 12:33:53
316
原创 shell 按行读取文件的问题
有个需求需要在shell中按行读取一个文件,文件类似于11111 222222 33334444 55556666 7777 8888 999使用for in 语句读的时候,发现$line中的数据是按空格来划分的,并不是完整的一样for line in $(<test.log)do echo $linedone读出来的结果: 11111 222222 3333
2017-11-03 12:31:59
510
原创 大根堆排序结果为升序
之前一直存在的误区,认为大根堆可以是用来降序排列的,因为大根堆总是可以先输出最大的元素堆顶(从这个角度来说,也确实可以完成降序排列~)。实际情况是对排序分为两部 1. 建堆 2. 堆排序 列如给个序列 6 5 3 2 4 1 7 建大根堆后得到的序列为 7 5 6 2 4 1 3第一次排序: 6 5 3 2 4 1 7 第二次排序: 5 4 3
2017-10-29 17:08:59
16766
8
原创 NULL ,nullptr,nullptr_t,0 区别
先看NULL的定义#ifndef __cplusplus#define NULL ((void *)0)#else /* C++ */#define NULL 0c语言中将NULL定义为空指针,而在c++中直接定义为0,这是因为C++是强类型的,void *是不能隐式转换成其他指针类型的。 既然NULL被定义成0,就存在二义性 c++ 中我们写这样一个函数 1test(classA a
2017-10-29 16:21:40
3727
原创 shell脚本查询mysql
接到统计需求,需要对一批对一批uid过滤,只保留10月1日之后注册的uid,用户注册时间可以从mysql里面拿,写了个shell脚本 ps:用户信息使用十库十表存储,像 12345这个uid存储在5这个库中的4这个表里面 #! /bin/bashhostip="107.0.0.1"port=6304username="net_budao_root"pwd="123456"database=
2017-10-20 16:12:55
1540
原创 孤儿进程与僵尸进程
概念孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程控制块PCB仍然保存在系统中,这种进程称之为僵尸进程。危害 如果父进程进程不调用
2017-10-18 21:31:42
228
原创 const 参数重载与const 成员函数重载
const 参数重载《C++ primer》一书中这样描述:“可基于函数的引用形参是指向 const 对象还是指向非 const 对象,实现函数重载。将引用形参定义为 const 来重载函数是合法的,因为编译器可以根据实参是否为 const 确定调用哪一个函数。”但是这一段描述并没有给出引用、指针和值传递前加const的实质区别是什么。在用非const的指针,引用和值均可转化为const的。
2017-10-18 20:59:01
1675
原创 内联函数与宏定义的区别
使用宏和内联函数都可以节省在函数调用方面所带来的时间和空间开销。二者都采用了空间换时间的方式,在其调用处进行展开: 不同之处在预编译时期,宏定义在调用处执行字符串的原样替换。在编译时期,内联函数在调用处展开,同时进行参数类型检查。内联函数首先是函数,可以像调用普通函数一样调用内联函数。而宏定义往往需要添加很多括号防止歧义,编写更加复杂(边际效应)宏定义是没有类型检查的,无论对还是错都是直接替
2017-10-18 20:22:53
359
转载 IO多路复用之select
1. 基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: 1. 当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 2. 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 3. 如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。
2017-10-15 23:17:26
291
转载 IO多路复用之epoll
1. 基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次?不太理解这句话。2、epoll接口 epoll操作过程需要三个接口,分别如下:#include
2017-10-15 23:09:11
187
原创 TCP连接与断开
TCP 连接与断开1. TCP 状态LISTEN:侦听来自远方的TCP端口的连接请求SYN-SENT:再发送连接请求后等待匹配的连接请求SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认ESTABLISHED:代表一个打开的连接FIN-WAIT-1:先前的连接中断请求的确认,等待的是fin的确认,通过发送第一个fin触发FIN-WAIT-2:等待另一方的终端请求
2017-10-15 22:17:23
1543
原创 16进制char 转换 string
网上查了下相关内容。乱七八糟,还不如自己写 string cTstr(char* c){ char h=c>>4; if(h>=0&&h9){ h=h+0x30; }else if(h>9&&h15){ h=h+'a'-10; }else{return "";}
2014-09-03 18:25:14
974
转载 GetWindowRect和GetClientRect
GetWindowRect和GetClientRect原文:http://blog.chinaunix.net/u/25372/showart_304363.htmlGetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(不包括非客户区)在客户
2014-01-11 13:16:55
548
转载 VMware安装失败 “Failed to create the requested registry key Key:installer Error:1021" .
问题描述:安装虚拟机VMWare Workstation7.1时出现failed to create the requested registry key key installer error 1021点击“确定”后退出 解决方法:在注册表(开始--运行--输入regedit)中找到HKEY_LOCAL_MACHINE ------------> SOFTWARE--------
2013-10-14 15:35:33
818
原创 sqlite数据库使用
使用.NET操作SQLLITE先下载ADO.NET2.0 Provider for SQLite。下载binaries zip版就可以了。下载完后解压缩,可以在bin目录下找到System.Data.SQLite.DLL。在vs2008中用Add Reference功能把System.Data.SQLite.DLL加到工程里就可以了。运行下面代码试试:string datasource =
2013-08-21 18:04:13
716
原创 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况
在app.config配置文件中添加新节点如果当程序在.NET4.0环境下要使用.NET2.0及.NET3.5的程序时就必须将useLegacyV2RuntimeActivationPolicy设置为true在使用sqlite时会遇到这个问题,原因是System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,201
2013-08-21 17:56:46
1080
原创 委托实现窗口间同步传值
看到网上很多人问关于怎么实现串口间的同步传值,写一个简单的方法供大家参考子窗口: public delegate void send(string str);//创建带参数委托 public event send sd; public Form2() { InitializeComponent();
2013-08-09 14:30:57
650
转载 sql经典语句
转载自:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html有时间在自己整理
2013-05-07 20:57:39
819
原创 sql多表查询语句的学习
经过几天的面试,发现公司最注重的是对数据库的熟练程度,小天不幸一次又一次的死在了数据库上,今天决定,恶补数据库。1. [SQL语句] UNION [SQL语句]合并两个SQL语句中的结果集,去除重复。[SQL语句] UNION ALL [SQL语句]合并两个SQL语句中的结果集,允许重复。注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似
2013-05-07 20:54:14
893
原创 全局键盘钩子与线程键盘钩子获取键码的不同方式
对于钩子函数hookproc(int nCode, int wParam, int lParam)参数的解码,可以得到按键值,钩子类型不同,获取键码的方式也不同。。1,若全局键盘钩子SetWindowsHookEx(13,hookproc, IntPtr.Zero,0);创建格式化类[StructLayout(LayoutKind.Sequential)]//格式化类的布局方式 p
2013-04-22 22:33:11
2376
4
图片中隐藏文件
2013-11-17
UDP广播发送与监听(源码只为初学者)
2013-04-20
获取系统所有进程(源码只为初学者)
2013-04-20
实用的选择题自测工具,只为实用
2012-04-09
选择题考试系统源码
2012-01-13
MThings modbus-tcp服务器,能否支持多个连接同时请求
2022-02-17
openGL中 glMatrixMode()函数未定义
2014-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人