- 博客(66)
- 资源 (1)
- 收藏
- 关注
原创 Linux 常用命令(持续更新)
tcpdump 参数 常用关键字 类型 host/port 方向 src/dst 协议 tcp/udp/ip 逻辑 and/or/not 常用参数 -i 指定网卡 -s 指定包长度 -s0 抓取完整包 -c 指定抓包数量 -n 以数字的方式显示ip/port -A 以ASCII格式显示 -x 以十六进制显示 -X 以十六进制ASCII显示 -w 将抓取的数
2016-08-02 22:02:16
575
原创 SI 添加SVN
SVN Log option->Custom Commands 添加一个命令 名字:SVN Log (随便自己写) 运行:”C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe” /command:log /path:%f /notempfile /closeonend TortoiseProc.exe的目录以自己电脑上的为是。SVN Dif
2016-07-27 11:32:37
509
原创 extern与static的一些用法
extern 类型 变量名 用来引入外部的全局变量extern “C” 按照C语言的形式去编译相关内容static 限制变量的作用范围,仅限于当前文件. 延长变量的生存周期,不会随着函数的消亡而消亡. 在类中使用static变量,该变量脱离具体的对象,为类所共有.
2016-07-25 21:58:36
341
原创 代码容错性及设计的一些小技巧(持续更新)
程序容错性的一些小技巧(持续更新)do-while的使用#ifndef _BEGIN_DO_WHILE_#define _BEGIN_DO_WHILE_ do{#define _END_DO_WHILE_ }while(false);#endif具体代码中的使用_BEGIN_DO_WHILE_xxxif 出错 break;xxx_END_DO_WHILE_
2016-07-25 13:27:43
4346
转载 Git基础操作<三>
git pushpush命令用来将本地分支的更新推送的远程仓库,该命令的格式如下:git push :通过"git push"更新、创建远程分支通过"git push"删除远程分支省略分支信息的"git push origin"通过这种方式push的时候,报出了一个警告,提示"push.default"没有设置。在Git中push有
2015-11-08 21:46:34
688
转载 Git基础操作<二>
在代码版本控制工具中,都会有branch的概念。刚开始建立版本仓库的时候,我们只有一个主分支(master branch),我们不可能把日常的新功能开发、代码优化以及bug修复等概念工作全都放在主分支上,这样会使主分支很难维护。这就是为什么会有branch。 分支的创建及删除分支的创建在Git中,branch的创建很简单,我们可以通过下面的命令创建一个"releas
2015-11-08 20:16:31
408
转载 Git基础操作<一>
Git基本概念在开始Git的使用之前,需要先介绍一些概念,通过这些概念对Git有些基本的认识,这将会对我们后面的操作有很大的帮助。在Git中,每个版本库都叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录中发生的所有更新。现在我们已经知道什么是repository(缩写repo
2015-11-07 23:00:15
471
原创 listen->backlog
To understand the backlog argument, we must realize that for a given listening socket, the kernel maintains two queues :要明白backlog参数的含义,我们必须明白对于一个listening socket,kernel维护者两个队列:1.An incomplete
2015-08-30 10:40:46
632
转载 SQL注入攻防入门详解
SQL注入攻防入门详解=============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口。这几天把sql注入的相关知识整理了下,希望大家多多提意见。(对于sql注入的攻防,我只用过简单拼接字符串的注入及参数化查询,可以说没什
2015-08-26 11:02:46
1108
转载 为什么多线程读写 shared_ptr 要加锁?
为什么多线程读写 shared_ptr 要加锁?陈硕(giantchen_AT_gmail_DOT_com)2012-01-28最新版下载:http://chenshuo.googlecode.com/files/CppEngineering.pdf我在《Linux 多线程服务端编程:使用 muduo C++ 网络库》第 1.9 节“再论 shared_ptr 的线程安全”中写
2015-08-23 22:24:48
704
转载 HTTP协议
HTTP协议漫谈简介 园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解。 HTTP的定义和历史 在一个网络中。传输数据需要面临三个问题: 1.客户端如何知道所求内容的位置? 2.当客户端知道所求内容的位置后
2015-08-23 16:42:18
652
原创 常用排序算法总结
#includeusing namespace std;//show arrayvoid show(int *ar, int len){ for(int i=0; i<len; ++i) { cout<<ar[i]<<" "; } cout<<endl;}//bubbleSort//冒泡排序是一种稳定的排序算法//最好时间复杂度为O(n)平均时间复杂度为O(n^2)最
2015-08-23 09:30:24
742
1
转载 MySQL索引与优化
索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要
2015-08-22 15:32:11
396
转载 MySQL索引原理及慢查询优化
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问
2015-08-22 10:34:25
543
转载 进程间通信-信号详解
一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强
2015-08-21 20:03:29
513
转载 进程间通信的特点
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点:它
2015-08-21 10:21:35
2152
2
转载 三大WEB服务器对比分析(apache ,lighttpd,nginx)
1. lighttpdLighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。Lighttpd使用fastcgi方式运行php,它会使用
2015-08-19 20:16:51
548
转载 Linux下fork()、vfork()、clone()和exec()的区别
前三个和最后一个是两个类型。前三个主要是Linux用来创建新的进程(线程)而设计的,exec()系列函数则是用来用指定的程序替换当前进程的所有内容。所以exec()系列函数经常在前三个函数使用之后调用,来创建一个全新的程序运行环境。Linux用init进程启动其他进程的过程一般都是这样的。 下面说fork、vfork和clone三个函数。这三个函数分别调用了sys_fork、sy
2015-08-19 16:45:33
566
转载 海量数据处理:十道面试题与十个海量数据处理方法总结
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率
2015-08-19 08:13:55
363
转载 linux tcpdump命令详解
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tc
2015-08-18 14:47:17
380
原创 Linux文件系统相关知识整理
1. 磁盘的物理结构盘面:磁盘是由一叠盘面组成磁头(Heads):每个磁头对应一个盘面,负责该盘面上的数据的读写磁道(Track):每个盘面会围绕圆心划分出多个同心圆圈,每个圆圈叫做一个磁道柱面(Cylinders):所有盘片上的同一位置的磁道组成的立体叫做一个柱面扇区(Sector):以磁道为单位管理磁盘仍然太大,所以计算机前辈们又把每个磁道划分出了多个扇区磁盘
2015-08-18 11:30:33
843
转载 linux文件系统十问
Linux文件系统十问--关于文件系统,你知道吗? 关于文件系统,相信大家都不陌生。身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢。那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧:1、机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的?2、touch一个新的空文件占用磁盘空
2015-08-18 09:15:25
708
转载 Linux的SOCKET编程详解
1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(message)、共享存储区(shared memory
2015-08-17 23:17:05
498
原创 Daemon守护进程
Daemon守护进程在linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程,都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。
2015-08-17 22:43:14
793
转载 可重入函数与线程安全函数
可重入函数与线程安全函数 线程安全函数 • 概念: 线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 • 确保线程安全: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈
2015-08-17 21:35:32
443
转载 linux进程间通信
整理自网络Unix IPC包括:管道(pipe)、命名管道(FIFO)与信号(Signal) 管道(pipe)管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;实现机制:管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条。管道的一端连接一个进程的输出。这个进
2015-08-17 20:33:33
488
原创 何时使用条件变量? 我们有互斥锁不是就够了么?
先来看看两者的概念:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在
2015-08-17 19:46:30
2275
原创 HTTP协议
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个
2015-08-17 16:54:15
728
原创 Linux下的五种I/O模型
阻塞I/O(blocking I/O)非阻塞I/O (nonblocking I/O)I/O复用(select 和poll) (I/O multiplexing)信号驱动I/O (signal driven I/O (SIGIO))异步I/O (asynchronous I/O (the POSIX aio_functions))前四种都是同步,只有最后一种才是异步IO
2015-08-17 11:26:59
833
原创 c++中几种0值的比较问题
1. 整型值if(val == 0) / if(val != 0)2. bool值if(flag) / if(!flag)3. floatconst float accuracy = 0.000001;if(val > -accuracy || val4.NULLif(p == NULL) / if(p != NULL)
2015-08-16 23:15:15
5690
转载 Nginx内存管理
1.源代码位置 头文件:http://trac.nginx.org/nginx/browser/nginx/src/core/ngx_palloc.h源文件:http://trac.nginx.org/nginx/browser/nginx/src/core/ngx_palloc.c 2.数据结构定义先来学习一下nginx内存池的几个主要数据结构:
2015-08-14 19:43:10
585
原创 TIME_WAIT 与 CLOSE_WAIT
1.服务器保持了大量TIME_WAIT状态这种情况比较常见,一些爬虫服务器或者WEB服务器(如果网管在安装的时候没有做内核参数优化的话)上经常会遇到这个问题,这个问题是怎么产生的呢?从上面的示意图可以看得出来,TIME_WAIT是主动关闭连接的一方保持的状态,对于爬虫服务器来说他本身就是“客户端”,在完成一个爬取任务之后,他就会发起主动关闭连接,从而进入TIME_WAIT的状态,然
2015-08-12 15:34:06
561
转载 I/O复用机制
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用
2015-08-09 16:18:53
474
转载 I/O复用之epoll模型
开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?先简单回顾下如何使用C库封装的3个epoll系统调用吧。
2015-04-19 22:51:55
445
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人