- 博客(60)
- 收藏
- 关注
原创 用Hexo-GithubPages-CodingPages搭建自己的个人博客
本博文最初发表在博主个人博客上,可以点击这里阅读。 首先声明:这并不是一篇教程。这不是一篇教程,原因有4个:博主太懒了,而且文笔也很差。写教程需要把之前的过程再过一遍,博主没有时间也没有耐心。中间要在github上创建个人的github.io库,而这个库每个账号只能有一个。为了写教程再去申请账号太麻烦了。最后一点,也是最重要的一点:网上的教程已经很多了,而且有的文章写的确实不错。我的博
2017-09-05 10:19:59 1584 2
转载 Cookie与Session的区别-总结很好的文章
本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示。1. cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用cook
2017-08-02 16:08:43 707
转载 HTTP1.0,HTTP1.1,HTTP2.0,SPDY,HTTPS你应该知道的一些事
作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处还请指出。1. HTTP1.0 web始祖HTTPHTTP全称:超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来
2017-08-02 15:56:51 2283
转载 HTTP 长连接和短连接是什么?
一些问题 1.HTTP协议与TCP/IP协议的关系?HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2.如何理解HTTP协议是无状态
2017-08-02 15:37:18 929
转载 从日常开发说起,浅谈HTTP协议是做什么的
引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二。比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧。其实session会话就是HTTP协议中的一个header属性cookie所支持的,在你了解了HTTP协议之后,其实这些都非常容易理解。 本文会尝试从各位的日常开发去解释一下HTTP到底是做什么的,文章篇幅有限,如果有什么
2017-08-02 15:13:38 1045
转载 IO多路复用之select、poll、epoll详解
IO多路复用 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。如果一个服务器即要处理TCP,又要处理UDP,
2017-08-02 14:58:56 638
原创 linux:快速得到某目录下代码大小
代码量是判断程序员编程水平的重要标准。本文将用正则表达式和awk工具,快速计算出linux系统中某目录下的代码大小。很简单,只有一行:嗯,比较长的一行。。。正则表达式和awk果真强大。。
2017-07-31 18:23:55 706
原创 shell脚本初探——概念篇
ForeWord 本文介绍了shell脚本的一些基础知识。Key Point:Shell概念及发展历史shell执行脚本shell变量Shell特殊字符使用(` $() [] [[]]等) tips:全文阅读需8minPart1:Concept&History 1. Concept1.Shell概念我们知道,通常计算机程序要经过编译和链接成为计算机可解读的格式,然后才能运
2017-07-18 10:08:36 1519 1
原创 shell脚本进阶—语法篇
ForeWordQuestion:如果把C语言的各种数据类型、指针、结构体、联合体等结构全都去掉,还剩下什么?…… 没错,还有条件判断、循环、一维数组(因为没有指针)以及部分函数。 而这些,正是shell语法结构中包含的所有内容。所以我们可以看出,shell语法学习起来远比C语言容易得多。 那么本文就简单总结下shell语法的内容及其具体使用方法。Key Points:条件判断
2017-07-14 17:13:45 1579
原创 vim多行注释与取消
神操作 在vim中编写代码,常常会遇到多行注释和取消注释的情况,在VS中我们可以用默认的快捷键或者在设置中自定义快捷键来解决这个问题。vim既然这么强大,必然也是有快捷键来完成的。下面给出具体步骤:Step 1:在命令行模式下,将光标固定在第一列,按Ctrl+V快捷键进入VB可视化模式:Step 2:上下移动光标,选择你想要注释的行:Step 3: 选择好之后,按**大写的**I键进入inse
2017-07-14 12:49:49 14431
原创 C++程序—逗你玩
ForeWord 这里是一个逗你玩的程序,要在60秒内输入“你是猪”,不然程序就会关机。温馨提示:不要发给女朋友。。。Code以下是整蛊代码:#include<iostream>#include<stdlib.h>#include<string.h>#include<Windows.h>using namespace std;void douniwanFunc(){ char
2017-07-11 19:08:14 774
原创 I/O多路转接之poll
ForeWord 本文介绍了实现I/O多路转接模型的poll接口。Key Point:poll的接口函数介绍代码实例:用poll监控终端输入输出 ~tips:全文阅读需5min~poll 1.接口函数linux系统提供了poll来实现IO多路复用模型,下面是其接口函数及参数解释:timeout是一个定时器,单位是ms,不同的值有不同的含义,如下表: timeo
2017-07-09 15:33:34 683
原创 图解TCP—3次握手&4次挥手
ForeWord博主上一篇博文中提到TCP协议以面向连接的通讯方式保证了数据传输的可靠性。小伙伴们可以点击 →这里,详细了解(o゚▽゚)o 那么本篇博文就详细描述它是如何通过面向连接保证数据传输可靠性的。Key Ponit:3次握手4次挥手过程图解通讯过程中的滑动窗口机制~tips:全文阅读需8min~ 3次握手&4次挥手 下面以一次TCP通讯的时序图为例,详解通信过程。在这
2017-07-09 10:49:48 849
转载 总结TCP协议中的定时器
ForeWord 上回说到TCP协议保持数据传输可靠性的一种手段就是定时器(详情戳小白的福音—秒懂UDP协议&TCP协议。那么本文就总结一下TCP协议中用到的定时器及其作用。~tips:全文阅读仅需3min~**TimerTCP协议共有四种定时器(Timer,也称为“计时器”) 1.超时重传计时器:Retransmission Timer为了控制丢失的报文段或丢弃的报文段,也就是对报文段
2017-07-08 19:27:31 1214
原创 详解TCP协议中控制位及URG&PSH的区别
ForeWord 博主上篇博文介绍了TCP数据段格式,详情请戳这里(✺◟(∗❛ัᴗ❛ั∗)◞✺)。并没有对其中的6个控制位做详细解释。那么本文就给大家介绍这6个控制位的作用,并总结其中两个控制位URG&PSH的区别。~tips:全文阅读需3min~详解 6个控制位TCP数据段中有6个控制位,他们的作用如下: 控制位 作用 ACK 置1时表示确认号合法,为0的时候表示数据段不
2017-07-08 18:45:24 2273
原创 小白的福音—秒懂UDP协议&TCP协议
ForeWord 本文介绍了UDP\TCP协议的基础知识,主要内容有:UDP\TCP协议在TCP/IP协议栈中的位置和作用UDP\TCP协议数据段格式TCP协议如何保证数据传输的可靠性tips:全文阅读需5min 小伙伴们燥起来(づ。◕ᴗᴗ◕。)づTCP/IP协议栈 TCP/IP⽹网络协议栈分为应⽤用层(Application)、传输层(Transport)、⽹网络层(Network
2017-07-08 15:10:57 1698
原创 linux:文件描述符重定向dup&dup2
ForeWord 本文介绍了对输入文件描述符重定向的函数dup&dup2,并用代码验证其功能。~**tips:全文阅读需5min**~Before 在没有duo&dup2,之前,要实现文件描述符重定向(输入)是这样做的:先关闭1号文件描述符,再打开文件完成重定向。代码:运行:dup dup是系统提供的进行文件描述符重定向的接口:其中: 1. odfd是当前文件描述符的一份拷贝
2017-07-08 12:51:18 1222
原创 socketpair创建双向pipe
ForeWord 本文介绍了域间套接字socketpair的概念,并用其实现了进程间的双向通信。tips:全文阅读需3minsocketpair我们知道,进程通信中,pipe用来创建管道,但是单个管道只能单向通信,一端用于读,而另一端用于写。 如果要实现进程双向通信,必须创建一对管道。而socketpair则可以用来创建双向通信的管道,实现进程间双向通信。Code下面是该函数的函数体:其
2017-07-08 12:48:47 705
原创 IO概念&5种IO模型介绍
ForeWord 本文介绍了IO概念和5种IO模型,希望能以最轻松的方式让大家理解这两个知识 ٩(๑>◡<๑)۶ 开始啦。。。。。。。 ~tips:全文阅读需3min~Concept IO叫做输入输出,我们可以将IO理解为两步:等待IO事件就绪数据就绪后进行真正意义上的IO(真正的数据搬迁)所以,IO的过程一是等,然后才是输入输出。进而,我们可以得到评价IO是否高效的标准:
2017-07-05 18:41:13 3444 2
原创 网络端口服务(PortsService)介绍
ForeWord 本文介绍了关于网络通信的重要概念:端口号,并调研了网络端口服务的分类。Key Point:端口号概念网络端口服务调研 tips:全文阅读仅需3min ٩(๑❛ᴗ❛๑)۶开车ヾ(◍°∇°◍)ノ゙~啥是端口号什么是端口号? 我们知道,在网络数据传输中,目的主机收到数据包后。要经过各层协议栈最后到达应用程序。整个过程可以总结为下图:自底向上的过程描述如下:Step1:以太
2017-07-03 19:07:56 2258 1
原创 XShell初体验—连接VMware虚拟机
ForeWord XShell是一个强大的安全终端模拟软件。可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。这么一个强大的软件博主最近才开始使用,还真有点小遗憾呢。本文将介绍如何用XShell连接Centos虚拟机 (。◕ˇ∀ˇ◕)Steps Step1:下载XShellXShell有免费版可以使用,直接在浏览器搜索XShell。就会有下载
2017-07-03 18:45:41 1116
原创 NAT&代理服务器技术调研
ForeWord 相信用过facebook等其他国外社交网站的小伙伴,都离不开一个东西——翻墙软件。 为什么不能直接通过网络连接访问这些网站,而要借助于翻墙软件呢?这个嘛,你懂得。。。本文将介绍其背后的机制:NAT&代理服务器技术Key Point:引言:为什么需要NAT&代理服务器技术2者概念及区别 tips:全文阅读需**3min**引言 如果一个组织内部组建了局域网,那么IP地址
2017-07-02 18:18:03 1032
原创 MAC协议之CRC校验码
ForeWordEverybody,我胡汉三又回来了ヾ(●´∀`●) ヾ 又到了我装逼的时间了,今天我才发现。学习真的会使人快乐。这不,刚才舍友找我开黑,我谈定的回了一句: 毕竟我这样的好学生已经不多了,嗯,目测以后工作了也会是个好员工٩(๑>◡<๑)۶ 。感觉胸前的红领巾又鲜艳了呢。。。 好了,闲话少说,还是回到正题,今天介绍的是CRC校验码。分别从以下几个方面来阐述:1. CRC是什么
2017-07-01 18:24:10 7217 2
原创 用arp.sh脚本文件抓取局域网内所有主机的IP和MAC地址
ForeWord大家好,又是我ヾ(◍°∇°◍)ノ゙博主这几天沉迷于学习无法自拔,一天发几篇博客也不在话下٩(๑❛ᴗ❛๑)۶。。。 那么本篇博文主要介绍以下内容:1. ARP协议简介 2. 小程序:抓取局域网内所有主机的IP和MAC地址终于要开始装逼了,你是不是也迫不及待了呢。举起你们的双手让我看到你们好吗( ̄▽ ̄)/( ̄▽ ̄)/( ̄▽ ̄)/tips:全文阅读需5minARP协议 Conc
2017-07-01 15:14:36 3479 1
原创 linux:作业控制&作业规划进程crond
ForeWord 本文介绍了作业控制的相关命令,并调研了作业规划进程crond及crontab命令。KeyPoint:与作业控制有关的命令及其对应信号(Code)作业规划进程crond&crontab ...tips:全文阅读需很长时间。。。(嗯,就是这样,没毛病)...Job Control 1. Concept“Shell可以同时运行⼀个前台进程和任意多个后台进程”这种说法其实
2017-06-30 10:53:29 773
原创 linux:守护进程&模拟实现mydaemon
ForeWord 本文介绍了守护进程的概念及其模拟实现Key Point:守护进程(Daemon)概念模拟实现守护进程(Code): 调用函数模拟实现mydaemon 调用系统接口实现~tips:全文阅读需要5min~Daemon 守护进程(精灵进程( Daemon)):一种没有控制终端的linux系统服务进程,父进程为pid为1的init进程,随系统启动。不能直接和用户交互,不受
2017-06-29 18:16:48 895 1
原创 linux:终端(Terminal)基本概念&终端登录过程详解
ForeWord 本文主要介绍了终端的基本概念和终端在系统中登录的过程。Key Point:基本概念及访问终端的方法(Code)终端登录过程详解……Expand - Knowledge……1.处理终端设备的模块:硬件驱动程序&线路规程(Line Discipline)2.linux启动级别~tips:全文阅读需要3min~Terminal 在UNIX/LINUX系统中,用户通过
2017-06-29 10:16:21 14849 4
原创 linux:进程组&作业&会话—concept&distinction&contact
Foreword 本文介绍了linux中进程组、作业、会话的基本概念,并分别对其进行代码举例分析。主要内容有:3者基本概念3者间的区别与联系tips:全文阅读需要5minConcept NO.1 进程组(Process Group)事实上,每个进程除了有一个进程ID(pid)之外,还属于一个进程组。进程组是一个或多个进程的集合,每个进程组有一个唯一的进程组ID(pgid)。此外
2017-06-27 16:46:39 1114 2
原创 使用gdb调试多进程与多线程程序
高能预警本文主要介绍了如何使用linux环境下的代码调试工具—gdb来调试多进程与多线程程序,主要内容有:1. 问题引入2. 调试方法介绍及代码实例3. gdb常用命令总结4. 一些大神们关于此主题的介绍并附链接——>全篇阅读(不包括链接)大概需要8min读完本文后,你可以用简单的方法调试多线程多进程程序。对几种调试方法也会有一种宏观认识。问题引入先
2017-06-18 11:22:46 844 1
原创 C语言实现小游戏——三子棋(Three Peices Chess)
前言相信不少小伙伴都玩过五子棋,其实三子棋和它的游戏规则一样,谁在行/列/对角线上连成直线,谁就获得胜利。接下来用C语言实现它Code and Explain首先为了方便代码编写,实现系统试编程。在工程里定义3个文件:其中,tpc.h是用来存放宏定义和函数声明的头文件tpc.c是头文件中声明函数的具体实现test.c则是用来测试代码的源文件。下面给出各个模块的代码并解释:首先,tcp.h:#ifnd
2017-06-17 20:23:45 773 2
原创 C语言应用题——如何确定跳水排名
问题描述问题是这样的:思考首先,某人比赛的名次一定可能是1-5中的任意一个。所以得用5个for循环来实现。其次,这5个人的话都不是只关于自己,而且还有关于别人的。所以上边的5个for循环一定不能是各自独立的。他们得相互嵌套起来,形成约束。最后,每个人的话都只说对了一半,所以可以用if语句来判断。这样,我们就可以写出代码了。Code (v1.0)#define _CRT_SECURE_NO_WARNI
2017-06-17 18:59:05 800
原创 C语言——确定某数比特位中1的个数并打印其32位比特数值
思想其实也谈不上什么思想,这个题目相对还是简单的。首先,你得知道怎么判断某位是不是1,这个用模2就可以解决,比如:其它数字也是如此,因此就可以得出结论:模2为0的,其最低位就是0.反之为1接下来就是要判断所有比特位的数值了,这个可以用右移操作来实现,直观地说就是不断除2,这样使得要判断的每一个比特位最终都移到最后一位,再用上边的办法判断即可。最后再加上count计数器,就可以轻松实现1个数的统计了。
2017-06-17 18:33:21 5292
原创 C语言应用题——谁是凶手?
Question问题描述如下:为啥是日本呢,真的不是有意的,我发四。。。Solution解决办法很简单,只要判断条件就好了,代码如下:#include<stdio.h>#include<Windows.h>int main(){ int killer = 'A';//用ASCII码直接转换,A,B,C,D的数值是相连的 for (; killer <= 'D'; killer++
2017-06-17 18:06:46 2109
原创 C语言实现9-9乘法表
前言9-9乘法表是小学数学老师教给我们的,现在想起来还有满满的回忆呢。。现在可以用代码实现,不知道数学老师看到了会是什么反应……Code话不多说,直接上代码:#include<iostream>#include<Windows.h>using namespace std;int main(){ for (int i = 1; i < 10; ++i) { for
2017-06-17 17:58:52 989
原创 linux信号系列文终结篇:信号的捕捉(含mysleep的实现)
高能预警本文主要介绍了信号捕捉的概念和方法,并用相关函数实现了与系统sleep函数功能类似的mysleep程序。本文主要内容有:1.信号捕捉的概念及其在内核中的实现机制2.信号捕捉相关函数介绍3.mysleep的实现(1.0版)拓展知识: 竞态条件(mysleep 2.0版)————>全文阅读大概需要8min(我真的发四)<——信号捕捉本系列文第一篇和第二篇中都讲到了进程对信号递达后的三种处理方式
2017-06-16 11:44:50 660
原创 linux:进程中信号的“3种状态 And 3张表”
高能预警本文主要介绍了信号在进程pcb中的表示方法并用代码验证其真实性。主要内容有:1.信号在进程中的表示方法:3种状态—3张表2.对上述方法进行代码验证,包括:信号集(sigset_t)和信号屏蔽字(Signal Mask)及信号集操作函数的介绍代码验证(pending表)————>全文阅读大概需要5min(我发四)<————3种状态 And 3张表在博主上篇博文中降到进程收到信号后,其可选
2017-06-14 19:04:07 2485
原创 linux信号基本概念及如何产生信号
阅前须知本文的主要内容有:1.信号的基本概念(包括进程对信号的3种处理方式)2.特殊信号举例:写代码证明信号存在,并实现信号的简单捕捉3.如何产生一个信号(代码举例:mykill的实现)其中拓展知识有:1.前台进程与后台进程(代码举例)2.核心转储core dumped的概念及其在代码调试中的作用(代码举例)——>全篇阅读大概需要5分钟<——信号的基本概念首先,我们可以用kill -l命令查看系统中
2017-06-14 09:34:21 11330 3
原创 10分钟搞定linux编辑器vim的配置
前言Vim是linux操作系统的一款非常强大的编辑器,配置Vim就是要让其形成一个像VS一样的IDE集成环境。所以为了能在linux下实现高效编程和开发,Vim的配置是必须要完成的一项任务。然而,对linux初学者而言,这无非是一个难度不小的挑战。但几乎每个初学者接触linux时,都会被要求配置vim,在网上搜索“vim配置”就会出现很多文章:网上诸如此类的教程有很多,给出的效果图也很高大上(所有在
2017-06-12 09:17:10 2095 2
原创 volatile关键字的作用
volatile关键字volatile关键字是C/C++众多关键字中的一个,但不常用。我们知道,为了提高程序程序执行的效率。大多数编译器都会对齐进行优化。优化级别由低到高分为:-O0~ -O3。但有时候,编译器的这种优化也会导致内存和CPU(寄存器)中数据不一致的问题,volatile关键字就是用来解决这种问题的。Code接下来我们以linux中的gcc编译器为例,编写一段代码证明volatile关
2017-06-12 09:09:38 554
原创 可重入函数与线程安全
一个问题为了理解可重入函数的概念,我们先来看这样一个例子:main函数调用insert函数向链表中头插节点node1,插入操作分为两步。假设它刚做完第一步的时候。由于硬件中断使进程切换到内核。再次回用户态之前检查到有信号待处理,于是切换到sighandler函数,sighandler也调用insert函数向同一个链表中头插节点node2。把插入操作的两步都做完之后从sighandler返回内核态,再
2017-06-11 12:30:15 472
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人