自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (4)
  • 收藏
  • 关注

原创 Git 中对象模型和文件的详细视图

Git 中存在的三种状态:工作目录、索引和对象库。目录中存在两个文件,且经过一次提交,所以现在是同步的。对 file1编辑,更改为quue。状态如下:接下来执行git add file1将其添加进索引库中。提交:虚拟树对象转换成一个真实的树对象后,以SHA1命名,然后放在对象库中。创建新的提交对象master分支的引用移动至新创建的对象,成为新的master HEAD

2015-03-30 20:00:28 912

原创 二叉树的递归遍历和非递归(循环)遍历实现

struct BinTree{ int data; BinTree * left; BinTree * right;};递归版本void PreOrder(BinTree * root){ if(root != nullptr) { cout << root->data; PreOrder(root->left);

2015-03-30 17:09:29 673

原创 Python IDLE 清屏问题

在学习和使用python的过程中,少不了要与Python IDLE打交道。但使用 Python IDLE都会遇到一个常见而又懊恼的问题——要怎么清屏?答案是为IDLE增加一个清屏的扩展ClearWindow就可以了.步骤:下载clearwindow.py(右击-目标另存为,格式为py结尾,直接点击会打开脚本内容)。拷贝clearwindow.py文件,放在Python安装目录Python XXX

2015-03-27 00:12:22 1043

原创 matplotlib绘图--完整-基础教程(一)

matplotlib的安装在之前的博客里有提到,可以去找找看折线图在同一张图中显示多个线条是因为hold属性是默认打开的,将属性关闭那么新的绘制将把之前的线条覆盖。interactive是打开交互模式,随时可以观测线条的变化。Adding a gridHandling axes默认坐标轴自适应,可以限制显示方式。还有这几种方式控制坐标轴的变化:plt.axis([xmin, xmax, ymin,

2015-03-26 20:58:58 2029

原创 简析TCP的三次握手与四次分手

TCP 协议层次及报文格式我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层;在第二层上的数据,我们把它叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。 同时,我们需要简单的知道,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端。这个基本的

2015-03-24 10:16:57 821

原创 详解C++ 类的前置声明的使用

刚开始学习c++的人都会遇到这样的问题: 定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样://a.h #include "b.h" class A { .... private: B b; }; //另一个头文件 b.h #include "a.h" class B {

2015-03-20 16:15:30 924

原创 减少C++代码编译时间的方法

c++ 的代码包含头文件和实现文件两部分, 头文件一般是提供给别人(也叫客户)使用的, 但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间,假如你做的工程比较大(比如二次封装chrome这类的开发),重新编译一次的时间就会浪费上班的大部分时间,这样干了一天挺累的, 但是你的老板说你没有产出,结果你被fired, 是不是很怨啊, 如果你早点看到这段文章,你就会比你的

2015-03-20 16:01:59 729

原创 常见的编程问题(一)少大数加减

存储区的概念常见的存储区域可分为:栈由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。堆由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,程序会一直占用内存,导致内存泄漏,在程序结束后,操作系统会自动回收。由malloc等分配的内存块,它和堆是十分相似的,不过

2015-03-19 16:18:47 851

原创 TCP/IP 网络编程(六)

进程模型:线程模型:线程的创建和执行流程#include <pthread.h>int pthread_create(pthread_t * restrict thread, const pthread_attr_t * restrict attr,void * (* start_routine)(void *), void * restrict arg); // 成功返回0, 失败返回其他值~

2015-03-17 16:56:56 785

原创 TCP/IP 网络编程(五)

优于 select 的 epoll (I/O 复用)select 速度慢的原因调用select后针对所有文件描述符的循环每次调用函数时都需要向该函数传递监视对象信息select并不是把发生变化的文件描述符单独集中到一起,而是通过观察作为监视对象的fd_set函数的变化,因此不能避免对所有监视对象的循环语句。而且,监视对象变量会发生变化,在调用select函数之前要复制并保存原有信息,并在每次调

2015-03-17 15:41:17 726

原创 条件触发和边缘触发 及 epoll 的优点

条件触发: 只要输入缓冲有数据就会一直通知该事件边缘触发: 输入缓冲收到数据时仅注册1次该事件,即使输入缓冲中还留有数据,也不会再进行注册水平触发(level-triggered,也被称为条件触发):只要满足条件,就触发一个事件(只要有数据没有被获取,内核就不断通知你)边缘触发(edge-triggered): 每当状态变化时,触发一个事件举个读socket的例子,假定经过长时间的沉默后,现

2015-03-17 15:40:28 1436

原创 TCP/IP 网络编程(四)

套接字和标准 I/O标准 I/O 函数的优点具有良好的可移植性可以利用缓冲提高性能创建套接字时,操作系统将生成用于 I/O 的缓冲。此缓冲在执行 TCP 协议时发挥重要作用。若使用标准函数,将会获得额外的另一缓冲的支持。函数缓冲是为了提高传输性能,套接字缓冲是为了实现协议,如窗口控制、重传等。通过以下两个角度考虑性能的提高:传输的数据量数据向输出缓冲移动的次数标准函数的缺点:不容易进行

2015-03-17 09:37:38 838

原创 TCP/IP 网络编程 (三)

服务器端未处理高并发请求通常采用如下方式:多进程:通过创建多个进程提供服务多路复用:通过捆绑并统一管理 I/O 对象提供服务多线程:通过生成和客户端等量的线程提供服务多进程服务器端#include <unistd.h>pid_t fork(); // 成功返回进程 ID, 失败返回-1fork函数将创建调用的函数副本。子进程将使用新的内存空间复制当前函数的环境。父进程:函数返回子进程ID

2015-03-16 21:20:32 898

原创 当在浏览器中输入Google.com并且按下回车之后发生了什么?(超详细)

本文试图回答一个古老的面试问题:当你在浏览器中输入Google.com并且按下回车之后发生了什么?不过我们不再局限于平常的回答,而是想办法回答地尽可能具体,不遗漏任何细节。这将是一个协作的过程,所以深入挖掘吧,并且帮助我们一起完善它。仍然有大量的细节等待着你来添加,欢迎向我们发送Pull Requset!我们从回车键按下开始。回车键按下为了从头开始,我们选择键盘上的回车键被按到最低处作为起点。在这个

2015-03-14 12:27:32 4499

原创 你刚在淘宝上买了一件衣服---详细解析技术流程(淘宝首页显示一个页面的过程)

声明:文章是之前在网络中看到并保存在电脑里的文档,原地址也无从找到。在此声明。向互联网工程师致敬!你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com。这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的IP地址很可能是不一样的,这首先涉及到负载均衡的第一

2015-03-14 11:14:02 987

原创 Nagle 算法(TCP中用于拥塞控制)详解

算法适应的情况和原理在广域网上,小分组会增加拥塞的可能性,一种简单且好用的方式是使用Negla算法。该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到来之前不发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来之时以一个分组的形式发送出去。这样,就能够减少网络中小分组的数量,提高数据包的利用率。算法优势:自适应,确认到达的越快,数据发送也就越快。关闭算法有时

2015-03-13 16:53:27 1550

原创 TCP三次握手和Time-Wait状态

第一次握手:建立连接时,客户端发送syn包和一个随机序列号seq=x到服务器,并进入SYN_SEND状态,等待服务器进行确认。(syn,同 步序列编号)。第二次握手,服务器收到syn包,必须确认客户的SYN,然后服务器发送一个ACK=1, SYN=1, seq=y的随机数和ack=x+1的确认数的包发送回去。第三次握手是客户端收到服务器端的SYN+ACK包,然后向服务器端发送确认包 ack=y+

2015-03-13 16:37:21 1812

原创 TCP/IP 网络编程(二)

用户数据包协议(User Datagram Protocal, UDP),UDP服务器端和客户端均只需要 1 个套接字。在TCP中向 10 个客户端提供服务,则除了守门的服务器套接字之外,还需要 10 个服务器端套接字。UDP不保存连接状态,因此每次传输数据都要添加目标地址信息。#include <sys/socket.h>ssize_t sendto(int sock, void *buf, si

2015-03-13 16:26:46 809

原创 TCP/IP 网络编程入门(一)

网络编程中接受连接请求(服务器端)的套接字创建过程:调用socket函数创建套接字调用bind函数分配IP地址和端口号调用listen函数转为可接收请求状态调用accept函数受理连接请求基于 Linux 中的文件操作打开文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char

2015-03-12 16:21:08 1217

原创 将本地代码库和Github同步

安装及初始化到这里下载软件,安装时全部默认设置 下载gitbash运行桌面上产生的Git Bash,会出现命令框,进行下面的设置 ssh-keygen -t rsa -C “your_email@youremail.com” 会提示SSH Public Keys的存放位置,默认就好,按一下Enter; 接下来会出现两次输入密码,可设空密码,即按两下Enter 出现The key fing

2015-03-10 12:14:13 1362

原创 程序员电话面试问答Top 50

详细解析今年是2015年,在过去几年中,电面(电话面试)是筛选程序员职位候选人的最流行的方式。它让雇佣双方很容易互相了解对方,候选人不需要去未来雇主的所在地,面试官也不用做额外的安排。这是我介绍程序员面试问题的文章的第二部分。我得到反馈说第一部分过于偏重编码的题了,许多程序员希望我针对电面问题列一个类似的列表。为了顺利通过电面进入下一轮,你必须足够好地回答与你工作要求相关的全部问题。在大多针对Jav

2015-03-05 11:52:36 1027

原创 UNIX多进程 - 销毁僵尸进程 - wait()和waitpid()函数

#include <sys/types.h>#include <sys/wait.h>pid_t wait(int *status); pid_t waitpid(pid_t pid, int *statusPtr, int options);现在要知道调用wait或waitpid的进程可能会发生什么情况:如果其所有子进程都在运行,则阻塞。如果一个子进程已经终止,正在等待的父进程获取到终止

2015-03-04 19:56:46 733

原创 UNIX多进程 - 销毁僵尸进程 - wait()和waitpid()函数

#include <sys/types.h>#include <sys/wait.h>pid_t wait(int *status); pid_t waitpid(pid_t pid, int *statusPtr, int options);现在要知道调用wait或waitpid的进程可能会发生什么情况:如果其所有子进程都在运行,则阻塞。如果一个子进程已经终止,正在等待的父进程获取到终止

2015-03-04 19:24:26 672

原创 std::sort源码剖析

文章参考:源码这篇文章在一个偶然的机会看到,我原先也是知道sort函数效率高,但终究没有去了解原因,读了这篇文章更加钦佩C++大师积年累月智慧的结晶和对效率的极致追求,看到很多地方不禁暗暗称奇。也还是感慨原文作者对技术的追求和细致的讲解,下面的内容大多来自作者的文章,其中加入了自己的理解,也不枉费大半个下午的时间。从事程序设计行业的朋友一定对排序不陌生,它从我们刚刚接触数据结构课程开始便伴随我们左右

2015-03-04 15:44:38 1139

原创 Synergy 一套键鼠同时控制多台电脑的神器!超级方便!

想必很多人都拥有多台电脑,譬如台式机+笔记本,很多时候我们都会同时打开它们工作。可是你有没发现,如果桌子上摆放着多台电脑多套键盘鼠标,不停来回切换使用是否很累呢?如果说现在可以只用一套键鼠,就能同时控制你全部的电脑,你会否兴奋?Synergy 正是为此而生的好工具!它可以让你的多台电脑共享一套键鼠,甚至还可以共享剪贴板,而你只需动动鼠标,指针就可以轻松地在各台电脑屏幕之间来回穿梭,就像一台电脑使用多

2015-03-02 10:42:02 2068

SSH框架整合实例

完整的ssh框架整合实例,真的是完整的,不要积分

2014-08-28

排列生成算法

对排列生成算法的很好的总结,很详细,有着丰富的例子,理解起来不是问题

2013-11-23

数据库 分析了解图书信息管理的创建过程

库表的建立,这是很容易实现的,希望对大家会有作用,谢谢

2011-06-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除