
读书整理
gongzhxu
喜欢编程
展开
-
数据库范式
第一范式的意思是:数据表中的字段都是不可分割的,原子的。第一范式是最简单的,也是必需的。我想你应该明白。第二范式:在第一范式的基础上,数据表中各字段和主键之间不存在部分依赖。例如:数据表中存在字段组成,其中组合在一起构成主键。如果学生的姓名不重复的情况下,那么就存在部分依赖。第三范式:第二范式的基础上,不存在传递依赖。 所谓传递依赖是指:例如:数据表中存在字段组成,其中是主键。如果学生的姓名不重复转载 2017-11-01 09:14:52 · 346 阅读 · 0 评论 -
git命令
git clone -b 分支版本名 --depth 1 git地址原创 2017-11-01 13:47:31 · 400 阅读 · 0 评论 -
探讨CMake中关于RPATH的使用
最近研究CMake,发现CMake对于RPATH的管理也非常人性化。官方说法是当动态库的编译也和执行档在同级目录下的时候,CMake会自动给执行档加入适当的RPATH.具体可以通过readelf -d executable来查看相关的RPATH路径。所以有的时候用QMake编译之后还得手动加一把LD_LIBRARY_PATH,而用CMake编译之后,直接执行执行档就可以了。 相关RP转载 2017-12-19 14:54:09 · 3863 阅读 · 0 评论 -
TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项
基本概念:SO_REUSEADDR套接字选项能起到以下4个不同的功用:(1)SO_REUSEADDR允许启动一个监听服务器并捆绑众所周知端口,即使以前建立的该端口用作它们的本地端口的连接仍存在。这个条件通常是这样碰到的:a)启动一个监听服务器;b)连接请求到的,派生一个子进程来处理这个客户;c)监听服务器终止,但子进程继续为现有的连接上的客户提供服务;d)重启监听服务器...转载 2019-03-18 15:46:13 · 347 阅读 · 0 评论 -
Linux下找不到动态库解决,添加rpath
添加rpath路径$$ORIGIN,然后把so和可执行文件放一个目录关于rpath转载 2019-03-18 15:45:28 · 711 阅读 · 0 评论 -
虚析构函数
#include <stdio.h>#include <memory>#include <string>using namespace std;struct Base{public: Base(const std::string & name):m_name(name) { printf("Create ...原创 2019-03-18 15:44:37 · 184 阅读 · 0 评论 -
程序如何影响VIRT(虚存)和RES(实存/常驻内存)
在Linux命令行中执行top命令,可以查询到所有进程使用的VIRT虚拟内存、RES常驻内存和共享内存SHR。那么,什么是VIRT虚拟内存、RES常驻内存和共享内存SHR?我们编写的Linux C++程序如何影响它们呢?查阅资料后,归纳一下。VIRT:1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;2、假...原创 2019-03-18 15:45:17 · 1771 阅读 · 0 评论 -
僵尸,孤儿进程探秘
正常程序:#include <sys/wait.h>#include <stdlib.h>#include <unistd.h>#include <stdio.h>#include <errno.h>#include <string.h>int main(){ printf("this is ma...原创 2019-03-18 15:43:20 · 170 阅读 · 0 评论 -
最近在排查一个core问题,对dmesg的时间戳,做了一个转化工具
#!/bin/bashuptime_ts=`cat /proc/uptime | awk '{ print $1}'`#echo $uptime_tsdmesg | awk -v uptime_ts=$uptime_ts 'BEGIN { now_ts = systime(); start_ts = now_ts - uptime_ts; #...原创 2017-10-30 10:27:19 · 1149 阅读 · 0 评论 -
最少操作次数
之余看到pongo网上有这么一题,便想了一下,其实比我想象的要简单。不是学生,没有在pongo网上测试题目:给定两个字符串,仅由小写字母组成,它们包含了相同字符。 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头。 例如给定两个字符串“abcd" "bcad" ,输出:2,因为需要操作2次才能把"abcd"变成“bcad" ,方原创 2014-02-17 11:00:42 · 4229 阅读 · 2 评论 -
Linux进程同步简单介绍
Linux系统包含众多的同步机制,包括一下:1.信号量(semaphone)2.自旋锁(spinlock)3.原子操作(atomic operation)4.读写(rwlock)5.RCU(Read-copy update)6.seqlock每种机制应用在不同的场合,这些机制的发展伴随Linux从单处理器到对称多处理器的过渡,从非抢占式内核到抢占式内核的过渡,锁机制越来原创 2012-05-31 21:30:33 · 774 阅读 · 0 评论 -
螺栓
螺栓是基类参数化的一个应用#include using namespace std;class Mixed{public: virtual void F1()=0;};templateclass Demo: public T{public: void F1() { cout<< "Demo F1" <<endl; } void F2() { cout原创 2012-05-16 14:38:39 · 610 阅读 · 0 评论 -
CRTP应用一
#include using namespace std;templateclass Base{public: void deal() { static_cast(this) -> deal(); }};class Derived: public Base{public: void deal() { cout<< "Derived modified" <<e原创 2012-05-16 14:45:26 · 655 阅读 · 0 评论 -
SFINAE应用一
SFINAE(substitution failure is not an error),即匹配失败不是错误#include using namespace std;struct Test{ typedef int type;};template void f(typename T::type){ cout<< "one" <<endl;}templatevoid原创 2012-05-16 15:38:06 · 548 阅读 · 0 评论 -
SFINAE应用二
templatebool is_class(int T::*){ return true;}templatebool is_class(...){ return false;}class Test{};void main(){ if(is_class(0)) { cout<< "is the class" <<endl; } else { cout<原创 2012-05-16 16:29:52 · 542 阅读 · 0 评论 -
SFINAE应用三
#include using namespace std;templateclass IsClass{private: typedef char One; typedef struct{char x[2];} Two; template static One is_class(int U::*); template static Two is_class(.原创 2012-05-16 16:30:43 · 713 阅读 · 0 评论 -
以太网类型码(Ethernet type codes)
以太网类型码(Ethernet type codes)EthernetExp. EthernetDescriptiondecimalHexdecimaloctal00000000-05DCIEEE802.3LengthField02570101-01FF转载 2012-06-05 21:41:34 · 18001 阅读 · 0 评论 -
char,string,CString相互转换
本文摘抄自http://blog.sina.com.cn/s/blog_7c1a82970100qmwk.html本人并未对以下所有方法进行测试,仅仅是为了给大家一个参考。 Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994转载 2012-09-18 12:45:49 · 791 阅读 · 0 评论 -
在RHEL/CentOS 5.5里安装使用Chrome/Chromium浏览器
http://www.ha97.com/2681.html当年一直盼Google Chrome出Linux版。Google Chrome Linux 正式版最终出来的时候,偶却发现CentOS用不起Chrome。Google Chrome Linux版在RHEL/CentOS 5上无法安装,太多的依赖包无法解决。有人联系过Google Chrome Linux版转载 2012-10-18 10:02:30 · 1060 阅读 · 0 评论 -
简单内存泄漏检测方法,解决Detected memory leaks!问题
工作环境:WIN7,VS2005:最近一个项目中,程序退出后,每次都出现内存泄漏,每次退出的时候泄露的内存块都是1654,1650。Detected memory leaks!Dumping objects ->{1654} normal block at 0x01CC1B28, 40 bytes long. Data: 54 00 69 00 63 00 6B 00 65 0转载 2012-12-11 18:29:40 · 719 阅读 · 0 评论 -
VC 的工程文件说明
dsw, aps, clw, plg这些文件都可以删除。只保留 H,C,CPP,DSP,RC,剩余文件去除只读属性,其余全部删除。然后打开DSP 有提示选 YES,就可以了。 *.dsp(DeveloperStudio Project):是VC++的工程配置文件,比如说你的工程包含哪个文件,你的编译选项是什么等等,编译的时候是按照.dsp的配置来的。 *.dsw(Devel转载 2012-12-19 14:09:22 · 518 阅读 · 0 评论 -
STL容器的适用情况
一.各种容器的特性vector典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取、修改具有常数时间复杂度,在序列尾部进行插入、删除是常数时间复杂度,但在序列的头部插入、删除的时间复杂度是O(n),可以在任何位置插入新元素,有随机访问功能,插入删除操作需要考虑。deque序列转载 2012-12-22 10:10:03 · 512 阅读 · 0 评论 -
可变参数及可变参数宏的使用
我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,这里将介绍可变函数的写法以及原理.* 1. 可变参数的宏一般在调试打印Debug 信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC 也支持可变参数宏, 但是两种在细节上可能存在区别.1. __VA_ARGS____转载 2013-08-23 14:11:23 · 624 阅读 · 0 评论 -
模板--模板元编程
将进行类型参数代替作为一种方便的方法,这意味着产生了一种支持编译时编程的机制,这样的程序称为模板元程序(template metaprogram)(因为正在"为一个程序进行编程"),事实证明可以用它做很多事情。实际上,模板元编程就是完全的图灵机(Turing complete),因为它支持选择(if-else)和 循环(通过递归)。从理论上讲,可以用它执行任何计算。下面看几个例子。注: 图转载 2012-03-03 19:38:41 · 1450 阅读 · 0 评论