- 博客(18)
- 收藏
- 关注
原创 shell脚本初试--至少三个数求最大、最小、平均值
至少三个数求最大、最小、平均值 需要判断 传⼊入的数字是否⾜足够,否则输出警告信息。平均值保留两位⼩小数像这类算法估计以前都接触过,有各种版本可以实现,我想跟大家分享我初学的shell脚本实现实现部分:实现结果: 我输入 6 7 8 三个数这个逻辑比较简单,希望刚接触到shell 的可以练练手
2017-03-28 11:35:07 9704
原创 shell脚本下小程序初试-进度条
相信进度条大家都不陌生,每次下载东西的或软件的时候都会有提示当前下载任务达到多少,当然可以有不同语言来实现,今天我就 用shell脚本实现进度条首先需要知道的是,进度条分为进度、显示百分比,和动态的进度演示(旋转条)一般进度条是一百为单位,所以可以用循环来实现至于动态旋转就可以用可数组来实现实现:分析: 1) lable 数组就是动态旋转部分,(就是这里不能给实现
2017-03-28 11:26:51 1076
原创 剑指offer--两个栈实现一个队列
题目:两个栈实现一个队列分析:方法一: s1是入栈的,s2是出栈的。入队列,直接压到s1是就行了出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中缺点:有大量元素要push和pop,效率不高方法二: s1表示入队的,s2表示出队列的,保证所有元素在一个栈中 入队列:如果s
2017-03-16 21:30:36 773
原创 剑指offer--据前序和中序遍历重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析:此时不由得想起前序遍历的顺序是根--左--右#include #include #include using namespace st
2017-03-16 18:55:18 788
原创 剑指offer--指定链表逆序打印
题目:输入一个链表,从尾到头打印链表每个节点的值。 首先分析这个题,如果面试官没有指定说明不允许改变链表结构,首先会想到的是将链表的头部和指针方向改变,但如果面试官说了不能改变链表结构,就得考虑别的方法,此刻你有没有想到一种结构先进后出,对没错,就是栈,如果将链表顺序遍历一遍,将链表中的元素一一PUSH进栈中,然后再将数据一个个拿出来访问,此刻,顺序就逆置了,然而还有优化
2017-03-14 22:58:20 722
转载 存储映射I/O
一个进程拥有独立并且连续虚拟地址空间,在32位体系结构中进程的地址空间是4G。不过,内核在管理进程的地址空间时是以内存区域为单位。内存区域是进程整个地址空间中一个独立的内存范围,它在内核中使用vm_area_struct数据结构来描述。每个内存区域都有自己访问权限以及操作函数,因此进程只能对有效范围的内存地址进行访问。存储映射I/O是一种基于内存区域的高级I/O操作,它将磁盘文件与进程地址空间
2017-03-14 17:29:19 842 1
原创 linux内存映射函数mmap
内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间用户空间两者之间需要大量数据传输等操作的话效率是非常高的。内存映射过程就是依据进程PCB控制块中内容找到内存单元的相应地址通过页表映射到物理内存中,是一个把普遍文件映射到用户空间的内存区域的示意图。
2017-03-14 17:16:27 866 1
原创 了解身边的超线程、双核、双cpu
一、从三者的工作原理和概念理解: (1)超线程(HT): 超线程(Hyperthreading Technology)技术就是通过采用特殊的硬件指令,可以把两个逻辑内核模拟成两个物理芯片,在单处理器中实现线程级的并行计算,同时在相应的软硬件的支持下大幅度的提高运行效能,从而实现在单处理器上模拟双处理器的效能。其实,从实质上说,超线程是一种可以将CPU内部暂时闲置处理资源充分
2017-03-14 16:52:59 1789 5
原创 浅谈对协程的理解
首先我了解了在linux下线程是轻量级进程,那么我要告诉你,协程是一种用户态的轻量级线程。 从硬件发展来看,从最初的单核单CPU,到单核多CPU,多核多CPU,似乎已经到了极限了,但是单核CPU性能却还在不断提升。server端也在不断的发展变化。如果将程序分为IO密集型应用和CPU密集型应用,二者的server的发展如下: IO密集型应用: 多进程->多线程->事件驱动
2017-03-14 16:41:00 1087
原创 剑指offer--判断规则二维数组是否存在一个指定数
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:从左至右递增、从上至下在递增 可以以左下角的那个元素为起点,指定个元素与其相比较,做相应移动class Solution {public: bool Find(int targe
2017-03-11 20:31:09 1226
转载 Makefile经典教程
该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和profession
2017-03-08 09:52:47 474
原创 vim命令集合
命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件文件命令打开单个文件vim file同时打开多个文件vim file1 file2 file3 ...在vim窗口中打开一个新文件
2017-03-08 09:16:55 610 2
原创 TCP首部中的URG和PSH的区别和联系
1、URG推送位紧急数据的起始点=序号;紧急数据的终止点=序号+紧急指针;(综上,紧急指针就是记录紧急数据的字节数,紧急指针永远为正数)1)在紧急数据后面的数据为普通数据,需要按序缓存2)窗口为0也可以发送紧急数据3)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。
2017-03-06 22:11:19 1240
原创 路由表的建立和形成
以下内容可翻阅第六版谢希仁版的《计算机网路》和《路由与交换技术》书查看具体协议信息首先路由表有以下几项形成•网络号•下一跳地址 •接口 •Metric:跳数、延迟、费用例如:路由表项特定主机路由 前缀长度为32比特的路由表项。网络前缀路由 前缀长度为1~31比特的路由表项。缺省路由 前缀长度为0比特的路由表项。减少路由表所占用的空间
2017-03-06 21:43:18 23489 1
原创 NAT技术
一、概述 NAT技术,又名为网络地址转换。该技术产生的原因:IPv4地址危机,在Internet上应用广泛的IPv4技术,由于其先天性不足,在九十年代初期时,已经预计到了IPv4地址不足,从而开始开发IPv6技术。但开发IPv6需要足够的时间(需要换较多的网络设备),为了延长IPv4技术的使用时间,产生了NAT技术。 二、工作原理 修改IP数据包中的源IP地址,或目的
2017-03-06 20:16:34 1289
原创 CRC校验
奇偶校验码(PCC)只能校验一位错误,循环冗余校验码(CRC)的检错能力更强,可以检出多位错误1. CRC校验原理 CRC校验原理看起来比较复杂,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这
2017-03-04 23:02:11 1583
原创 创建守护进程为什么fork两次
守护进程(daemon进程)是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。其特点是: 1)其父进程是一号进程,通常以d结尾 2)在后台运行,独立于终端,周期性的以某种任务或等待处理某些发生的事 3)自成进程组,自成会话,不受登陆注销等影响 4)一般是孤儿进程 daemon函数存在的原因是因为控制终端由于某些原
2017-03-04 22:06:24 2176 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人