- 博客(87)
- 资源 (1)
- 收藏
- 关注
原创 序列排序总结之比较排序算法
这里我们着重讲解插入排序,冒泡排序,归并排序,快速排序,堆排序插入排序基本思路是 将无序集合的元素插入到有序集合中,每次插入元素的时候保持有序集合的有序性。 步骤:默认单个元素的集合是有序选择无序集合中的一个元素在有序集合中寻找适当的位置将选择出的元素插入到适当的位置迭代执行步骤2-4的内容,直到无序集合为空#include <stdlib.h>#include <stdio.h>v
2016-11-24 15:31:25
998
原创 C语言基础(三)之控制流
C语言控制流主要是顺序,分支,循环。这三种方式基本上是语言学上必须提供的三种方式,还有一种特殊的方式是在函数层面,就是递归。本以为控制流部分其实没有什么好说的,三种基本控制方式都是显而易见的,但是,最近一直研究NFA,发现真是难懂,但是代码写出来就是基本的控制流组成的,后来又想起KMP算法,排序算法,发现这些都是基本控制流组成的。于是我猜想控制流不是简单的表面上的东西,这东西和算法是紧密相关的。在没
2016-11-24 11:35:19
3627
原创 KMP算法总结
/* * KMP 算法一直以来都是我不好理解的算法之一 * 不好理解主要是有几个考量,这个算法只要我有一段时间不去接触它,我就会遗忘 * 不知道如何再复现这个算法。究其本质原因还是个人对这个算法得理解不深刻 * 最近这段时间,我一直从一个初学者的角度来思考这个算法的本质性的问题 * 我不用画图,一旦使用了图形就意味着理解的程度肯定是上了一个层次, * 线性的理解方式,是最自然的方式。
2016-11-24 10:30:10
429
原创 乱序字符串的问题
其实乱序字符串的实质是考察排序的问题,乱序字符串经过适当的转化就会变成一个排序问题,至于你使用什么排序方法就会有多种选择,插入,快速,堆。当然,如果采用建立HASH表的方式也是可以的,不过需要书写好的hash函数。问题: 题目描述:给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。样例:对于字符串数
2016-11-23 15:19:26
1013
原创 C语言基础(一)
参看: 《C程序设计语言》第二版上面的参考书籍是主要的学习手段,下面只是针对一些特定的问题进行论述,这些特定的问题,书中可能没有提到。 一个对象的类型决定着该对象可取值的集合以及可以对该对象施行的运算。问题:我们知道基本的数据类型有四种char,int,float,double。 类型修饰符也有四种short, long, signed, unsigned。 类型修饰符和基本数据类型的组合并不
2016-11-18 11:32:24
395
原创 LINUX 下编写C程序代码的工具
编辑工具—vim编译工具—gcc调试工具—gdbgcc和gdb的版本上面必须保持同步性质,否则低版本的gdb不能够很好的工作在高版本的gcc上(http://www.gnu.org/software/gdb/ 这是新的gdb的下载地址)。
2016-11-17 17:59:49
946
原创 C语言的输入输出模型
参考:http://blog.youkuaiyun.com/shrdlu/article/details/48929865其实对于计算机器的理解,难点是为什么会有这个模型的建立,也就是模型建立的实际意义,另外还有一点,这个模型的形象化表示,如果能理解这个模型的形象化表示,就可以更深刻的理解模型。 网络或者书籍往往不能这样去解释模型的意义以及模型的形象化表示,所以学习计算机的初期,你或许会有点进步,但是学到最后
2016-11-15 17:33:44
2494
原创 多条件输入模型
概述:当我们有几种不同的输入格式,但是我们使用同一个输入函数这个问题可以扩大化,比如,我们可能有多个输入条件,我们应该如何处理?这两个问题,我们可以采用同样的模型。下面举个例子:比如:我们输入 mm/dd/yy 和 yy-mm-dd 这两种格式的日期,我们如何处理输入?
2016-11-14 17:04:21
536
原创 函数的参数不确定的编写方式
通过《C程序设计语言》第二版第7章的介绍,我们知道标题准确翻译或许是“变长变元表”,这个无可厚非,我们只要知道我们要编写一个函数参数个数不确定的函数,如何编写?形式:int printf(char *fmt, ...);从形式上出发,我们需要处理的部分是”…”。这部分的处理,我们可以这样设计: 首先“…”表示的是一个变元表,这个表我们可以理解成是一个链表,对于链表的处理,我们往往需要一个指针指向当
2016-11-14 16:22:49
740
原创 僵死进程的意义
看了很多关于僵死进程的目的,都没有一个形象化的解释,这里结合自己个人的经验,来说明一下个人的理解。我们假设根本不存在僵死进程,那么会发生什么?我们来进行一个CASE设计:父进程记录所有子进程的pid记录下来,后来父进程需要查看某个子进程的信息,这里我们只能通过该子进程pid来获取进程信息,可是,如果没有僵死进程,我们能否判定这个pid是个有效的pid?这就是一个很典型的异步问题
2016-11-14 13:17:55
895
原创 TCP 回射程序(处理子进程的SIGCHLD信号)
客户端的代码;/************************************************************************* > File Name: tcpcli.c > Author: mhsheng > Mail:981065720@qq.com > Created Time: Wed 09 Nov 2016 10:55:40 AM CST
2016-11-14 11:46:09
482
原创 TCP回射程序
服务器端的代码如下:/************************************************************************* > File Name: tcpserv.c > Author: mhsheng > Mail:981065720@qq.com > Created Time: Wed 09 Nov 2016 09:59:55 AM
2016-11-09 14:50:05
523
原创 子进程和父进程是否共用同一个全局变量
/************************************************************************* > File Name: test_g_var.c > Author: mhsheng > Mail:981065720@qq.com > Created Time: Wed 09 Nov 2016 11:36:09 AM CST ***
2016-11-09 13:19:32
13284
原创 TCP的时间获取客户程序和时间获取服务器程序
需要使用root权限/************************************************************************* > File Name: daytimetcpcli.c > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 08 Nov 2016 04:
2016-11-08 18:19:32
1339
原创 读《UNIX 网络编程》有感
首先虽然整本书我还没有读完,但是根据前11章的话题,我基本上了解了网络编程的一个实质性的问题。如果网络通信和缓冲区读写都能正常进行,那么网络编程是没有这么多的问题的网络编程的复杂度主要来源于网络的不稳定性,以及网络传输数据的流量控制问题,也就是说,一个终端在没有任何消息的前提下是不可能知道另一个终端的信息的,所以,网络编程中经常会有所谓的反馈这个行为的出现,比如错误报告的返回。从上一段
2016-11-03 10:00:55
581
原创 信号
首先,信号这个概念不好理解,因为它本身涉及到了“中断”这个概念。“中断”概念的形象化描述(个人理解,可能会有偏差):CPU正在运行某个程序,突然,中断信号到达CPU指挥中心,CPU切换上下文,执行中断处理函数,中断处理函数执行完毕,CPU切换上下文,继续执行被中断的指令。其中,中断处理函数就是信号处理函数,信号可以有进程产生,也可以由内核产生。信号的目的地可以是进程本身,也
2016-11-01 14:44:03
226
转载 void (*signal(int sig, void (*func) (int))) (int)理解
转自:http://blog.youkuaiyun.com/sever2012/article/details/82812711.signal( int sig, void (*func)(int))signal是一个函数,有2个参数,第一个是int类型,第二个参数是一个函数指针2.void (*signal(int sig, void (*func) (int))) (int)signa
2016-11-01 13:35:19
620
原创 LINUX 进程查看指令
网络编程除了需要关心如何实现终端到终端的连接问题,还要关心内核和应用进程的数据传输问题,这方面就会涉及到操作系统的进程管理。这里我们以CENTOS为例,来介绍主要的用于查询进程的状态的指令。(参考《鸟哥的LINUX私房菜》第3版 17.3节)ps:这个是获取静态的进程状态信息的指令,常用的组合有:ps -l : 仅仅查看自己的bash相关的进程ps aux
2016-11-01 13:15:36
398
原创 小端字节序和大端字节序
这个字节的排列顺序主要就是小端和大端。网络传输使用的是大端字节序,主机有可能是小端字节序,也有可能是大端字节序,这个依照情况而定。举个例子:0x1234存储器地址: 小-------> 大小端字节序的排列: 4 3 2 1大端字节序的排列: 1 2 3 4
2016-10-31 18:46:44
387
原创 为什么TIME_WAIT的时间是2MSL
MSL指的是任何IP数据报能够在因特网上存活的最长时间。TIME_WAIT的状态是为了等待连接上所有的分组的消失。单纯的想法,发送端只需要等待一个MSL就足够了。这是不够的,假设现在一个MSL的时候,接收端需要发送一个应答,这时候,我们也必须等待这个应答的消失,这个应答的消失也是需要一个MSL,所以我们需要等待2MSL。(更多的内容参考 《UNIX 网络编程》第3版 2.7 节)
2016-10-31 11:21:09
5029
原创 Centos7搭建简单的FTP服务器
备注:本来这篇技术的文章是不该发表在QQ空间的,主要原因是博客被封了,莫名其妙!!!参考网站:http://jingyan.baidu.com/article/86fae346d536023c48121a50.html,http://blog.51yip.com/linux/1672.html1.安装vsftpd#yum -y install ftp vsftpd*2.
2016-10-29 15:37:26
1965
转载 netstat 基本用法
转自:https://linux.cn/article-2434-1.htmlNetstat 简介Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管
2016-10-28 10:15:11
1233
原创 C语言 结构对齐
字节对齐一直困扰着我,具体为什么需要字节对齐也不是特别清楚,貌似是因为什么CPU的读取相关的问题导致的。我最近研究了一下,发现一个非常简单的对齐计算方式。假设其实地址是0,那么以后的每个变量的开始地址必须是其自身的长度的整数倍,还有,为了保证结构体中套用结构体的方式,所以结构体本身的长度需要是其最长元素的整数倍。struct A{short a;in
2016-10-27 18:56:08
342
原创 PYTHON 获取csdn的博客文章标题和描述
#!/usr/bin/pythonimport requestsfrom bs4 import BeautifulSoupimport sysimport reimport threadingreload(sys)sys.setdefaultencoding('utf-8')def deal_i(tag): title = tag.a.text.strip() desc
2016-06-14 23:26:09
640
原创 Python 获取百度的预览图片
#!/usr/bin/pythonimport requestsfrom bs4 import BeautifulSoupimport sysimport reimport jsonreload(sys)sys.setdefaultencoding('utf-8')class PicFromWeb: def set_url(self, url_pic): self.
2016-06-14 23:25:18
797
原创 Powershell 中直接运行 Python 的文件
首先, 这个问题并不是太难,但是这个问题困扰了我一个下午,我觉得有必要记录一下困扰的过程!我一直不明白为什么Powershell中可以直接启动.bat和.exe的文件,只要的我的系统Path的路径是设置好的,但是为什么不能直接云心.py的文件呢? 这个是涉及到原理性的东西,所以百度并不好使。后来想到一个问题“如何在Powershell终端执行Python文件”,也许这个问题可以带来一些答案,果不其
2016-05-20 18:59:38
13522
1
原创 FOR LEI LEI
#include <cassert>#include <cstdio>#include <cstring>#include <cstdlib>int num_cmp(const void * e1, const void * e2){ return (*(int *)e1) - (*(int *)e2);}void GetMinMax(const char * input, cha
2016-04-23 13:05:46
394
原创 C++ 构造函数
Class A { public: A(); ~A(); A(const A &other); A & operator=(const A &other); }
2016-03-17 13:59:50
358
原创 Python 实用技巧
切换到当前py文件的目录:os.chdir(os.path.split(os.path.realpath(file))[0])
2016-02-18 10:15:44
309
原创 Python的学习感悟
首先,我要说的是Python并不适合初学者!虽然它标榜自几易学! 不适合的原因就是太高端了,很多应该懂得的东西都被隐藏了!!!如果你不懂这些东西,你就不知道计算机是如何运行的,你不知道计算机是如何运行的,你就不知道怎样写的代码才算是好的!!!简单的说,就是你不知道自己写的代码是不是高效的! 不过Python语言的设计还是符合语言学的,这点比Shell强多了!Shell 在我看来不能算是一门语言,
2016-01-15 14:11:03
3946
原创 Python编程的例子----股票数据接口
如果你要同时查询多个股票,那么在URL最后加上一个逗号,再加上股票代码就可以了;比如你要一次查询大秦铁路(601006)和大同煤业(601001)的行情,就这样使用URL: http://hq.sinajs.cn/list=sh601003,sh601001查询大盘指数,比如查询上证综合指数(000001): http://hq.sinajs.cn/list=s_sh000001
2016-01-13 14:41:38
40084
原创 获取天气信息的脚本
代码是使用python写的 核心部分是拼凑URL和HEADERS,这个URL是我个人对中国天气网的观察总结出来的!!!#!/usr/bin/python#--conding:utf-8--import requestsimport sysimport reimport times = str(time.time())s = re.sub(r'\.', '', s)if (len(s)
2016-01-13 00:01:26
894
原创 UNIX 回射程序
必需感慨一下,网络程序的细节真的是太多了,任何一个步骤都有可能出现问题!而且还要处理所遇到的问题!!!服务器:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>
2016-01-11 17:01:05
342
原创 VS DEBUG
vs 如何调式我就不说了,这里主要写一些我在工作的过程中遇到的一些问题!!!stl::map 中的 clear 在 Release 版本中运行会很快,但是,在Debug 中调式会很慢,我在google上找到了解决的方案,原文如下:`Trying setting the environment variable _NO_DEBUG_HEAP=1 in the program’s initial e
2016-01-06 11:25:57
416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人