- 博客(25)
- 资源 (1)
- 收藏
- 关注
转载 mysql 源码安装
转自:http://www.linuxdiyf.com/linux/14453.html(1)安装编译源码需要的包sudo apt-get install make cmake gcc g++ bison libncurses5-dev必备的包和工具 gcc/g++ :MySQL 5.6开始,需要使用g++进行编译。 cmake :MySQL 5.5开始,
2016-03-26 17:22:08
543
转载 TCP/IP详解--滑动窗口与内核缓冲区之间的关系
原文链接:http://blog.youkuaiyun.com/yusiguyuan/article/details/28625129?utm_source=tuicool&utm_medium=referral在有关TCP连接的很多配置中,有很多选项有的配置net.ipv4.tcp_rmem:这个参数定义了TCP接收缓冲(用于TCP接收滑动窗口)的最小值、默认值、最大值net.ipv
2016-02-26 20:44:24
2242
转载 Nagle 与 SO_SNDBUF的问题(转载)
摘要:当使用TCP传输小型数据包时,程序的设计是相当重要的。如果在设计方案中不对TCP数据包的延迟应答,Nagle算法,Winsock缓冲作用引起重视,将会严重影响程序的性能。这篇文章讨论了这些问题,列举了两个案例,给出了一些传输小数据包的优化设计方案。背景:当Microsoft TCP栈接收到一个数据包时,会启动一个200毫秒的计时器。当ACK确认数据包发出之后,计时器会复位
2016-01-04 00:08:55
715
转载 如何创建守护进程
守护进程 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。 守护进程,也就
2015-09-10 23:00:42
690
原创 Manacher 算法讲解 O(N)复杂度的 最长回文子串求解
求解最长回文子串的方法很多,有几种常见的O(N^2)的最长回文子串求解方法,比如说枚举中心位置向两边扩展,动态规划等,大部分朋友应该都比较熟悉。Manacher算法相比于上面两种方法,时间复杂度是O(N),空间复杂度也是O(N),可以说是快速求解决回文子串的利器。下面介绍这一算法的思想,以及在文末给与它的实现。我们以
2015-08-29 14:09:59
846
原创 KMP 讲解 和 KMP的 strstr 实现
网上关于KMP的讲解已经够多了,但我感觉很多的文章对于一些关键点的解释还不够清晰,如果你还不知道KMP算法,那建议你先百度了解一番KMP,如果了解完后感觉大脑还是塞塞的,思路不够清晰的话再来看看我这篇文章。这里就不再对KMP从头到尾讲述了。毫无疑问,KMP的关键点就是求next数组,我只针对如下两点做解释以及给与数学证明。针对字符串str求它的next数组:1 next[i]的意义:n
2015-08-25 21:09:20
1084
原创 C++ List 双向链表 实现 会用也要会写
这次的代码比较长,原因是比之前的Vector实现增加了许多的操作,而且毕竟指针操作嘛,处理起来稍微麻烦一点。List实现中非常重要的一点,就是定义一个头指针和一个尾指针,这样可以避免对很多的特殊情况的处理,当链表为空时就是头指针指向尾指针,另外一个就是迭代器的实现,list的迭代器的实现比vector要麻烦许多,因为内存不连续,所有采用了内部嵌套类的方式,重载了*(解引用),++EXP(前
2015-08-25 15:49:43
1066
原创 C++ Vector 简单实现 会用也要会写
我们知道,内存块的大小是不能改变的,因此数组的大小不能改变。但是STL的vector让我们摆脱了这种困扰,它可以帮我们动态的管理数组的大小。诚然,STL的vector底层还是通过动态数组来实现的,当数组大小不够时,就申请一块更大的内存,同时将原来的元素的值拷贝过去,再删掉原来那块小内存,当然这一操作的带价是非常高的,包括了一次申请内存和释放内存,以及元素的初始化。(更多的一些注意问题可以查看之
2015-08-24 21:17:03
4405
1
原创 Linux进程间通信 共享内存+信号量+简单例子
每一个进程都有着自己独立的地址空间,比如程序之前申请了一块内存,当调用fork函数之后,父进程和子进程所使用的是不同的内存。因此进程间的通信,不像线程间通信那么简单。但是共享内存编程接口可以让一个进程使用一个公共的内存区段,这样我们便能轻易的实现进程间的通信了(当然对于此内存区段的访问还是要控制好的)。共享内存实现进程通信的优点:共享内存是进程通信方式中最快速的方式之一,它的快速体现在,为
2015-08-19 16:42:06
8476
2
转载 C++ 排序函数 sort(),qsort()的用法
转自http://blog.youkuaiyun.com/zzzmmmkkk/article/details/4266888/在STL中就自带了排序函数sort,qsort,总算把自己解脱了~所以自己总结了一下,首先看sort函数见下表: 函数名功能描述sort对给定区间所有元素进行排序stable_sort对给定区间所有元素
2015-08-14 22:38:36
530
原创 用信号量和Posix线程操作来实现双线程高速下载
什么是信号量?信号量是一个受保护的变量。对两个或多个进程共享的资源可以提供限制访问的方法。信号量有2个基本操作,一个是释放,一个是获取,如果某个进程获取到了该信号量,并且信号量的值小于等于0时,其它想要获取该信号量的进程,将会被阻塞,知道有进程释放了该信号量,信号量的值加1,才会唤醒被阻塞的某个进程。信号量可以实现线程和进程间的通信,通过它我们可以轻易实现对临界资源和共享资源的
2015-08-12 13:56:17
1067
原创 linux pthread 多线程操作
简要说明一下进程和线程的区别,以及为何有了进程还需要线程。一句话概括,进程是系统资源分配的最小单位,线程是CPU调度的最小单位。一个进程可以有多个线程,每个线程有自己的堆栈he
2015-08-04 12:40:20
847
原创 一个简单的socket客户端和服务端的例子
网络编程中最基础的就是socket的操作,这里记录一下socket的基础操作有哪些,分别是什么作用,最后以一个简单的客户端和服务端例子收尾。socket是什么?socket起源于Unix,秉承着一切皆文件的思想,socket也是 打开 -读写- 关闭 这样的模式的一个实现。socket用于不同主机间进程的通信,而每个进程由 所使用的协议,Ip,端口号,三者决定,有兴趣的可以百度
2015-08-01 14:19:01
10838
原创 stl的一些事
写c++代码,stl用起来开发效率非常高,但是有些事项不注意的话,很可能会我们写出的代码,执行效率非常低。下面就一些常见的“坑”做一个记录。这里只是对顺序容器做一个简单的归纳。1 容器的选择上1 如果只是要求随机访问的话,vector或者deque容器最好,deque其实是基于vector实现的2 如果程序需要频繁的在容器的内部(非尾部和首部)插入和删除元素的话,l
2015-07-25 22:39:48
791
转载 (转)理解MySQL——索引与优化
原文:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不
2015-06-24 15:25:52
531
1
原创 SQL(2)
MYSQL表的基本操作创建数据表CREATE TABLE tb_name( column_name data_type, ....)例子CREATE TABLE tb1( usernmae VARCHAR(20), age TINYINT UNSIGNED, salary FLOAT(8,2) UNSIGNED);查
2015-06-19 11:44:39
451
原创 SQL(1)
SQL语句规范1 关键字和函数全部大写2 数据库名称和表,字段的名称全部小写3 每个sql语句必须以分号来结尾登录mysql -u root -p root 【-P 3306 -h 127.0.0.1】-u用户-p密码-P端口号-h IP地址-P和-h可省略,默认值就是上面所写的4个基本函数VERSION() 服务器版本NO
2015-06-19 11:03:09
494
转载 C++中namespace的使用
原文地址:http://blog.sina.com.cn/s/blog_986c99d601010hiv.html命名空间(namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中。标准C++库(不包括标准C库)中所包含的所有内容(包括常量、变量、结构、类和函数等)都被定义在命名空间std(standard标准)中了。
2015-06-18 15:10:13
454
转载 (转)Linux进程池的实现
原文地址: http://m.blog.youkuaiyun.com/blog/yhc13429826359/39258067通过动态创建子进程(或者子线程)来实现并发服务器的。这样做有如下缺点: 1、 动态创建进程(或线程)是比较耗费时间的,这将导致较慢的客户响应。 2、动态创建的子进程(或子线程)通常只用来为一个客户服务(除非我们做特殊处理),这将导致系统上产生大量的细微
2015-06-09 15:20:39
940
1
转载 一个Linux下C线程池的实现(转)
1.线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程
2015-05-31 13:52:13
601
原创 udp的一些简单记录
UDP首部字段如下图所示UDP是无连接的传输协议,为什么有了面向连接的可靠数据传输协议TCP,还要有UDP呢?1 应用层可以高度控制要发送的数据 和发送的时间。 这里解释一下,难道tcp不可以吗? tcp也可以,通过设置 TCP_NODELAY 选项来取消nagle算法,nagle算法是tcp用来拥塞控制的算法,这里就不多扯了,看官可以自行去百度一下。
2015-05-24 21:20:37
758
转载 socket编程中write、read和send、recv之间的区别
一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write函数了。ssize_t write(int fd, const void*buf,size_t nbytes);write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,
2015-05-22 21:27:08
2553
1
原创 TCP的一些简单记录
主要是记录一下,自己对于所了解的一些知识点。所以上一个tcp报文段的包头的结构吧。一个个解释吧源端口号,目的端口号,2byte一个,这个显而易见,就不多说了。(那么源IP,目的IP呢?那是网络层的事呢,由IP协议负责将这些信息封装进报文段中,成为数据报)序号和确认号一起说明,它们2个合伙用来实现可靠数据传输。首先当我们创建套接字socket的
2015-05-22 00:46:47
580
转载 (精辟)socket阻塞与非阻塞,同步与异步,select,poll,epoll
socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做
2015-05-20 11:04:55
4714
原创 linux select学习
记录自己的linux学习之旅。参考文章:http://blog.youkuaiyun.com/leo115/article/details/8097143首先大概谈一下对select的理解,select用于检测传入的文件描述符的状态,是一个多路I/O就绪通知的一个方法。select 函数原型:#includeint select(int maxfd,fd_s
2015-05-06 10:18:46
497
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人