一个后台的自我学习
文章平均质量分 66
丿咫尺天涯
这个作者很懒,什么都没留下…
展开
-
数据库的索引
数据库建立索引的原则 1,确定针对该表的操作是大量的查询操作还是大量的增删改操作。 2,尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 3,尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。 4,对于小型的表,建立索引可能会影响性能 5,应该避免对具有较少值的字段进转载 2017-03-28 20:51:47 · 362 阅读 · 0 评论 -
Linux 目录结构及主要内容 1
“/”根目录部分有以下子目录: /usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscape。 /var 目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等 /home 目录包含用户的文件:参数设置文件、个性化文件、文档、数据转载 2016-10-20 00:11:34 · 348 阅读 · 0 评论 -
http长链接实现浅析
keepalive当然,在nginx中,对于http1.0与http1.1也是支持长连接的。什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来网络流量。当然,当连接断开后,也会有四次的交互,当然转载 2016-10-03 10:21:52 · 1453 阅读 · 0 评论 -
gcc -l参数和-L参数
-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-lte转载 2016-11-06 10:22:53 · 330 阅读 · 0 评论 -
strace命令,跟踪系统调用以及库依赖
简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义root@ubuntu:/usr# strace ca转载 2016-09-28 00:34:00 · 2334 阅读 · 0 评论 -
C++ 头文件顺序和隐含依赖
今天编写一个程序,拷贝另外一个文件的头文件时,没有注意头文件之间的内在依赖关系,导致编译出错,浪费了不少时间去定位和分析,才发现是头文件顺序不对导致的编译问题,这也给自己以后编写可靠代码时提供了一个主意项,准备参考google C++编程风格的头文件顺序。google C++编程风格对头文件的包含顺序作出如下指示:(1)为了加强可读性和避免隐含依赖,应使用下面的顺序:C标准转载 2016-11-04 00:17:54 · 5146 阅读 · 0 评论 -
HTTPS的压力测试工具 -- httperf
今天需要对cgi进行压力测试,选择了httperf模拟请求,访问CGI,在使用的过程中,发现到rate和conn-num较小时,测试返回HTTP返回码200,当rate和conn-num较大时,HTTP返回码大部分是50X,不知道是CGI的性能问题,还是其他参数配置问题,感觉不能很好的进行压测。(后期有需要再用用看,适当增加--num-calls数,默认值为1)使用方法:httperf转载 2016-10-12 23:56:28 · 5460 阅读 · 1 评论 -
项目常用的linux命令
ifconfig: 显示和设置网络的接口,可以打开或者关闭某一个网络接口。ex:::::ifconfig up /down eth0netstat: 显示网络状态,整个网络情况,显示socket,tcp,udp等的连接情况。ps -aus:显示瞬间进程的动态top:实时显示process的动态free: 显示内存的使用情况,包括实体内存,虚拟内存,共享内存区段route:查原创 2015-07-29 22:57:30 · 378 阅读 · 0 评论 -
fiddler学习(一)
Fiddler的官方网站: www.fiddler2.com Fiddler官方网站提供了大量的帮助文档和视频教程, 这是学习Fiddler的最好资料。 Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进转载 2016-09-21 00:32:57 · 818 阅读 · 0 评论 -
gdb常用调试命令
一.gdb常用命令:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号选择栈帧info(或i) locals查看当前栈帧局部变量的值list(或l)转载 2016-11-02 00:17:51 · 410 阅读 · 0 评论 -
gdb调试coredump文件
现在说下gdb+coredump的调试流程 在实机上先打开产生core文件的设置,ulimit -c unlimited ,这将使程序在遇到断错误的时候保留下当时的堆栈信息,而这个core文件的大小没有进行限制,当然,还可以更改core文件的产生路径,具体可以google下。 之后运行断错误程序,获取产生的core文件。 运用平台指定的gdb程序 调用arm转载 2016-11-02 00:23:36 · 1131 阅读 · 0 评论 -
const分别在C和C++语言里的含义和实现机制
简单地说:const在C语言中表示只读的变量,而在c++语言中表示常量.C语言const是constant的缩写,是恒定不变的意思,也翻译为常量,但是很多人都认为被const修饰的值都是常量,其实这是不精确的.因为,精确来说应该是只读的变量,其值在编译的时候不能被使用,因为编译器在编译的时候不知道其存储的内容.或许当初这个关键字应该被替换为readonly.C语言中cons转载 2017-05-06 16:24:44 · 474 阅读 · 0 评论 -
gcc常用编译参数说明
gcc编译参数:-g:为了gdb调试使用,默认加上有利于后期直接定位coredump-O2:优化选项:O0 -->> O1 -->> O2 -->> O3-O0 不进行优化处理。 -O 或 -O1 优化生成代码。 -O2 进一步优化。 -O3 比 -O2 更进一步优化,包括 inline 函数-pipe:使用管道代替编译中临时文件,加速编译-wall:显原创 2017-05-06 15:41:29 · 801 阅读 · 0 评论 -
rsync命令
如果你是一位运维工程师,你很可能会面对几十台、几百台甚至上千台服务器,除了批量操作外,环境同步、数据同步也是必不可少的技能。说到“同步”,不得不提的利器就是rsync,今天就来说说我从这个工具中看到的同步的艺术。[不带任何选项]我们经常这样使用rsync:$ rsync main.c machineB:/home/userB1 只要目的端的文件内容和源端不一样,转载 2017-03-06 20:25:10 · 397 阅读 · 0 评论 -
strace 命令中的Linux命令
1.getsockopt(12, SOL_SOCKET, SO_ERROR, [-35232114945294336], [4]) = 0 setsockopt(7, SOL_SOCKET, SO_RCVTIMEO, "\0\0\0\0 N\0\0", 8) = 0 功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接原创 2017-02-07 21:11:00 · 441 阅读 · 0 评论 -
netcat----linux工具
netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。下面是一些使用net转载 2016-11-21 23:35:10 · 512 阅读 · 0 评论 -
JsonCpp的简单实用
JsonCpp 是一个C++用来处理JSON 数据的开发包。下面讲一下怎么使用JsonCpp来序列化和反序列化Json对象,以实际代码为例子。反序列化Json对象比如一个Json对象的字符串序列如下,其中”array”:[...]表示Json对象中的数组:{“key1″:”value1″,”array”:[{"key2":"value2"},{"key2":"value3"},{"key转载 2016-11-18 00:24:43 · 388 阅读 · 0 评论 -
nohup
用途:LINUX命令用法,不挂断地运行命令。 语法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。转载 2016-11-16 23:58:36 · 349 阅读 · 0 评论 -
Linux终端下后台运行程序被Stopped的原因以及解决
一、问题以及原因将一个可执行文件,放到后台运行时,一会就stoped,/AP_Connect &终端打印此信息:[1]+ 已停止 ./AP_Connect然后使用 top 命令查看进程AP_Connect的状态为T,即Stopped该段程序的main.cpp,如下:[cpp] view plain转载 2016-11-16 23:11:04 · 11848 阅读 · 0 评论 -
nginx中的数据结构----ngx_str_t
ngx_str_t(100%)在nginx源码目录的src/core下面的ngx_string.h|c里面,包含了字符串的封装以及字符串相关操作的api。nginx提供了一个带长度的字符串结构ngx_str_t,它的原型如下:typedef struct { size_t len; u_char *data;} ngx_str_t;转载 2016-10-10 00:10:19 · 627 阅读 · 0 评论 -
tc 网络流量控制
一、TC原理 Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。 接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择: *如果接收包的目的主机是本主机,那么将该包送给上层处理,否则需要进行转发,将接转载 2016-09-23 00:21:54 · 1078 阅读 · 0 评论 -
Linux中的libc和glibc
一、libc库Linux平台提供的C标准库包括:一组头文件,定义了很多类型和宏,声明了很多库函数。这些头文件放在哪些目录下取决于不同的编译器,stdarg.h和stddef.h位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录下,stdio.h、stdlib.h、time.h、math.h、assert.h位于/usr/include目录原创 2016-09-07 00:33:10 · 15495 阅读 · 2 评论 -
gcc生成静态库和动态库,及参数介绍
gcc 生成 .a静态库和 .so动态库 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。在创建函数库转载 2016-09-03 00:46:41 · 2259 阅读 · 0 评论 -
svn基本操作
文章摘要:SVN 基本操作:SVN是什么 Svn是一个离线的代码管理,可以多个人一起修改,然后再将修改的内容提交到Svn中。 每一个svn服务器中的数据存储单位叫做存储,但是你不仅仅可以把整个存储当作你维护的内容,也可以将其中的某个分支目录像根存储一样的使用。 Svn是严格区分大小写的,存储中路径的名字只有大小写不同,也会当作不同的 SVN基本操作:SVN是什么 Svn是一个离线的代码管理转载 2016-09-14 00:41:52 · 389 阅读 · 0 评论 -
cgi的流程(未完成)
在公司大量使用cg可以,从cpp到一个可以执行的文件。其中,经历了预编译,编译,汇编,装载目标文件就是源代码编译后未进行链接的中间文件(Windows下的.obj和Linux下的.o),它跟可执行文件的内容和结构相似,所以一般跟可执行文件一起采用一种格式存储。不只是可执行文件,动态链接库和静态链接库(Windows下的.lib、.dll和Linux下的.a、.so)都按照可执行文件原创 2016-09-02 00:37:11 · 294 阅读 · 0 评论 -
svn简介(未完成)
由于对svn update出现的冲突随意处理,将别人发到现网的特性覆盖掉,导致别人的特性出现了回滚,一定程度上影响到了外网用户,可见对于SVN的原理学习,在实际的开发过程中还是很有必要的。概述什么是SVN分支?假设你需要在你的电脑上维护一份被分离的文档,一个手册或是别的什么.某天要求你对同份文档做一个不同的修改分离,但分离后他们两者只有一小部分不同,因此只有轻微的不同.你将怎么解决原创 2016-09-13 00:38:44 · 400 阅读 · 0 评论 -
安装mingw
很早以前用过这个Windows下的linux环境,这里主要用来查看一些Linux下的命令,执行下简单的命令;安装使用较为简单,但是还是不如VPN到Linux服务器方便;下面贴下mingw的安装流程,主要是要记得在Windows环境变量中添加mingw的bin目录即可;1.首先我们先来到这个网址下载MinGW的下载程序,百度搜索官网即可。下载之后安装一下(注意:这个安装并没有安装MinG原创 2016-09-01 00:22:41 · 788 阅读 · 0 评论 -
Linux命令c++filt
一个简单的linux命令, 确实不值得大费周折, 但是, 在实际的开发过程中,却帮助很大,在编译cgi,修改函数的调用之后获得函数的符号名,就可以看到这个函数的定义。C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。如果用backtrace之类的函数打印堆栈时,显示的就是被编译器修改过的名字,比如说_Z3foov 。 那么原创 2016-08-31 00:27:55 · 1671 阅读 · 0 评论 -
objdump的使用
一、objdump的使用objdump是gcc工具,用来查看编译后目标文件的组成。常用命令:objdump -x obj:以某种分类信息的形式把目标文件的数据组成输出;objdump -t obj:输出目标文件的符号表()objdump -h obj:输出目标文件的所有段概括()objdump -j ./text/.data -S obj:输出指定段的信息(反汇编源代码原创 2016-08-30 00:26:42 · 7187 阅读 · 0 评论 -
Linux -----mmap进行内存映射的原理(未完成)
mmap系统调用的最终目的是将,设备或文件映射到用户进程的虚拟地址空间,实现用户进程对文件的直接读写,这个任务可以分为以下三步:1.在用户虚拟地址空间中寻找空闲的满足要求的一段连续的虚拟地址空间,为映射做准备(由内核mmap系统调用完成) 每个进程拥有3G字节的用户虚存空间。但是,这并不意味着用户进程在这3G的范围内可以任意使用,因为虚存空间最终得映射到某个物理存储空间原创 2016-08-29 00:22:07 · 801 阅读 · 0 评论 -
gcc链接顺序
1 gcc/g++链接时.o文件以及库的顺序问题 1.1 写在前面最近换了xubuntu12.4,把原来的项目co出来编译的时候报“undefined reference to”。猜测是gcc的版本问题,用-v跟踪一下,发现gcc-4.6默认开 启了ld的–as-needed选项。关闭该选项(–no-as-needed)后编译正常。深 入挖掘发现还是一个比较有意思的问题转载 2016-09-03 00:56:09 · 3336 阅读 · 0 评论 -
Linux命令详解-----ls,find
一、简单的ls命令最常用ll -ltr,按修改时间排序,方便查找最近更新的文件;ls -a,查找当前所有文件,包括隐藏文件,例如.vimrcls -l ,按列显示;这里是如何读取输出 :第1列第一个字母d意味着内容是目录或者文件。如果是'-'(减号),这意味着它的内容是文件。当它是l(小写l字符),意味这内容是链接文件。下面的9个字原创 2016-08-25 00:28:03 · 2154 阅读 · 0 评论 -
OOM killer
今天服务器OOM告警,准备ssh登上去看看服务日志,找找内存泄漏位置。然后一直ssh不成功,最后网上搜了一下,发现可能触发了OOM killer机制,选择性的kill掉一些进程,这就有可能会kill掉sshd,这样就会导致ssh登不上。Linux下有一种OOM KILLER 的机制,它会在系统内存耗尽的情况下,启用自己算法有选择性的kill 掉一些进程。一、为什么会有OOM转载 2016-10-09 00:32:47 · 354 阅读 · 0 评论 -
初识ProtocolBuf------了解使用阶段
初识ProtocolBuf 对于ProtocolBuf的一些情况:“google公司发布的一套开源编码规则,基于二进制流的序列化传输,可以转换成多种编程语言,几乎涵盖了市面上所有的主流编程语言。”枚举类型数据定义://操作类型enum e_MsgOper_PRO{ E_ADD_PRO= 0;原创 2016-08-27 00:06:15 · 3904 阅读 · 0 评论 -
linux命令-----netstat , tcpdump
1.netstat基本使用方式,netstat -ntl | grep 10020 显示是否有在10020端口监听的tcp服务 ;-t:显示TCP连接-u:显示UDP连接-a:显示所有连接在 netstat 输出中显示 PID 和进程名称 netstat -p找出程序运行的端口,netstat -ap | grep ssh,查找进程ssh监听的端口原创 2016-08-26 00:16:41 · 563 阅读 · 0 评论 -
svn与git的区别
SVN系列(一)--SVN版本控制原理Apache Subversion是过去普及度最高的版本控制工具,即使是现在大量的公司也还在使用SVN,即便Git现在正在与其竞争。本文将介绍利用SVN搭建版本控制系统的基本步骤。首先,SVN是一种集中式的版本控制工具。所有的客户端将自己的代码上传到中央服务器,中央服务器的版本数据库会保存上传的各个版本的代码转载 2016-09-19 00:27:17 · 791 阅读 · 0 评论 -
c++ STL 算法set_union和sort
灵活使用STL中的相关算法,对C++开发是必备的,这里记录下最近用到的两个STL算法。1.set_union合并集合S1US2,得到并集,这里有个前提是S1和S2是set集合的迭代器,这就意味着这些集合是排过序的,可以有重复值,这就可以接受set\multiset作为参数;template class InputIterator1, class InputIterator2,原创 2016-09-06 00:29:17 · 1755 阅读 · 1 评论 -
gcc编译的背后
看过程序员自我修养的应该对程序的编译连接过程有不少的了解,但是平时不会真去关注这些,如果程序编译出现问题,通过看提示找到问题的所在就行。了解下处理过程中使用到的各个命令的,对于认识gcc的编译流程有很好的帮助。 平时在Linux下写代码,直接用"gcc -o out in.c"就把代码编译好了,但是这后面到底做了什么事情呢?如果学习过编译原理则不难理解,一般高级语言程序编译的过程莫转载 2016-09-04 23:59:52 · 412 阅读 · 0 评论 -
svn原理----revert,回滚
一、子命令Svn revert — 取消所有的本地编辑。下面我们来看一下子命令Svn revert例子:丢弃对一个文件的修改:$ Svn revert foo.cReverted foo.c如果你希望恢复一整个目录的文件,可以使用--depth=infinity选项:$ Svn revert --depth=infinity .Reverted newdir/afi原创 2016-09-16 13:42:52 · 15840 阅读 · 0 评论 -
extern "c"用法解析
这是由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。extern "原创 2016-09-04 00:46:43 · 349 阅读 · 0 评论