- 博客(40)
- 收藏
- 关注
原创 Shell 之 无法进入某一目录解决 No such file or directory.
Shell 之 无法进入某一目录解决问题:shell 脚本中通过读取 文件中的路径,进入到某一目录,但是提示:path: No such file or directory.while read linedo cd xxx/path/${line}done < path分析:很有可能是 path文件格式是doc(即在windows 下编辑过)可以通过vim指令: set ff 查看dos–》为 windows 下创建修改unix --》为 linux 下创建修改两者的不同
2021-04-16 09:23:40 879
原创 Shell之使用 cut 提取 文件中特定内容
Shell之使用 cut 提取 文件中特定内容!# /bin/bashwhile read linedo echo $line | cut -d '"' -f 4done < file name读取文件的每一行,用 双引号分割每一行,取第四段。
2021-04-16 09:14:56 1352
原创 shell 之字符串操作
shell 之字符串操作1. 按指定字符分割字符串并提取所需内容:-> echo “abc def abd”|tr -s " " | cut -d " " -f 2-> output:deftr -s " ": 将字符串中的多个指定字符压缩成一个cut -d :以指定字符分割字符串cut -f :提取指定 index的子字符串...
2021-04-06 16:07:40 142
原创 数据结构之链表翻转(递归法)
数据结构之链表翻转翻转之前:翻转之后:分析:对链表的操作最终都会反映到对单个元素的操作。对于单链表中的每个元素本身的属性比较简单,就两个域,一个是value,一个是指针域 next。所以,解决链表问题,就是轮询链表中的每个节点,在轮询过程中处理需要处理的节点。框架如下:void Link::foreach(header){ if(终止条件) { 终止时需要的action } // 需要正序遍历时的动作加到这里 action 1;
2020-12-02 08:14:42 505
原创 数据结构之单链表插入,遍历(递归实现)
单链表插入,遍历单链表的插入简单来说就是找到位置,然后将元素插入。如何找? 循环遍历找位置,因为链表的每个节点在内存中的存储位置是非连续的,所以不能像数组那样通过下标位移找到每个元素,而是需要借助元素的 next 域挨个找到目标位置。数据结构中的遍历分为两种,一种是循环,比如 while(…),for (…),一种是递归,没错,递归就是一种遍历。递归法插入代码如下:void Link::insert(int value, int location){ insert(value, loc
2020-11-30 22:34:09 2165
原创 Python之读取文件指定字符串
Python之读取文件指定字符串打开文件pmcdr,按行读取,取出以changeset:开头的行并保存到文本文件 out.txt 中import ref = open('out.txt','w')with open('pmcdr','rU') as file_object: for line in file_object.readlines(): g = re.search("changeset:*", line) if g: prin
2020-10-10 14:21:07 2695 1
转载 你必须知道的八大数据结构面试题!
瑞士计算机科学家Niklaus Wirth在1976年写了一本书,名为《算法+数据结构=编程》。40多年后,这个等式仍被奉为真理。这就是为什么在面试过程中,需要考察软件工程师对数据结构的理解。几乎所有的问题都需要面试者对数据结构有深刻的理解。无论你是初入职场的新兵(刚从大学或者编程培训班毕业),还是拥有几十年经验的职场老鸟。有些面试题会明确提及某种数据结构,例如,“给定一个二叉树。”而另一些...
2020-03-06 12:42:32 1094
原创 C++ -- 构造函数 赋值函数 拷贝构造函数
C++ 基础知识1. 类的声明,构造函数,拷贝构造函数,赋值函数代码实现class String{ public: String(const char* initChar); String(const String& str); String& operator = (const String& str); private: ...
2020-02-01 11:26:55 274
原创 python之执行 shell命令
subprocess 模块这个模块是用来代替几个老的模块:os.systemos.spawn*os.popen*popen2.*commands.*实例:#!/usr/bin/python ...
2019-09-10 22:37:50 151
原创 python 之文件目录操作
code:print("hello")import globfor name in glob.glob(r'./*'): print (name)note:windows下测试好使,可以打印出当前目录的所有文件。知识点:字符串前面加个 r: 表示 非转译字符串:与普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常...
2019-09-09 22:40:20 159
原创 Python之字符串操作
1. 字符串替换string.replace(str1, str2, num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.var1 = 'hello world'var2 = var1.replace('world', 'raind', 1)print var1print var22. s...
2019-09-06 13:39:28 145
原创 python之自动登录Telnet并执行command
code:#!/usr/bin/pythonimport telnetlibimport sysimport timeimport loggingclass TelnetClient(): def __int__(self,): self.tn = telnetlib.Telnet() def login_host(self, host_ip, u...
2019-09-06 13:09:50 1404
原创 Linux网络编程之UDP
1. UDP 的 特点无连接:内部不维护链接状态,也不需要三次握手。基于消息的数据传输服务:不会有 粘包问题,数据包之间是有边界的不可靠:数据包可能丢失,重复,乱序,缺少流量控制。一般情况下比TCP更高效:2. UDP 客户/服务器模型3. UDP 的 特点UDP 报文可能丢失,重复UDP报文可能乱序UDP缺乏流量控制UDP 协议报文可能被截断。如果发送的...
2019-06-23 18:06:13 798
原创 Linux网络编程之select与poll比较
1. select 能够达到的并发数限制–>一个进程能打开的最大文件描述符的限制–>select 中的 fd_set 集合容量的限制 (FD_SETSIZE)。2. 如何改善这两点限制呢?对于文件描述符的限制,可以通过调制内核参数来对限制扩展。通过command “ulimit -n” 可以查看 当前系统的最大文件描述符的限制。$ ulimit -n1024程序中可以通...
2019-06-22 18:44:34 194
原创 Linux 网络编程之 close与 shutdown
1. close 与 shutdown的 区别close – 是关闭本进程的 套接字,其他进程还是可以使用这个套接字发送接收数据。换句话说,调用close 只是将socket id 引用计数减 1, 等减 到 0 时,才真正 发送 FIN,关闭 connection。shutdown – 可以指定关闭 发送链路还是接收链路,因为 TCP 连接是全双工的,还有就是 调用 shutdown之后会立...
2019-06-22 12:51:01 204
原创 Linux网络编程之 Select实现 并发 server
1. 使用 select 实现的 并发 TCP server 端 小程序。有一点需要注意的是在 调用 select 函数之前 输入的 形参。比如 第二个形参 readfds,是一个输入输出参数。输入的是(ˇˍˇ) 想监听的 read 描述符,输出的是实际发生变化的 read 描述符。所以 第二次调用 select的时候 不能将第一次返回的 实参继续作为第二次的输入,否则会造成其他描述符监控...
2019-06-22 09:05:18 284
原创 Linux网络编程之I/O模型 Select function
1. Unix可用的五种 I/O 模型:堵塞式I/O非堵塞式 I/OI/O 复用信号驱动式 I/O异步 I/O1-4 都是同步 I/O。2. 什么是同步与异步?同步:发出一个功能调用,然后一直等待调用返回 。异步:发出一个功能调用,不会马上知道结果,调用方也不会一直等待,而是继续往下执行,等有结果了通过回调通知 我 。3. 什么是堵塞式 I/O?应用进程调用系统调用 ...
2019-06-21 08:13:23 183
原创 Linux网络编程之TCP状态转换及SIGPIPE信号产生
TCP 从建立连接到 close 连接,中间会经过11个状态的转换。TCP establish connection的过程。TCP close connection的过程。CLOSING 状态的出现。netstat command:用于生成 本机 IP TCP, UDP,ICMP 等相关协议统计信息。SIGPIPE 信号产生...
2019-06-17 22:46:28 250
原创 Linux网络编程之利用信号量防止僵尸子进程
1. 问题由来?TCP server 端通过为每一个新来的连接创建新的子进程,从而达到支持 multi connection的目的,在某个连接close 掉的时候,就意味着 相应的子进程 退出,这时候就需要在父进程中做一些善后处理,防止产生僵尸进程。2. 僵尸进程是如何产生的?当一个子进程退出后,并不是立即释放所以的资源,而是通知父进程,由父进程继续后续工作,子进程通知父进程通过产生信号(S...
2019-06-16 22:40:28 248
原创 Linux网络编程之TCP粘包问题3
1.解决TCP粘包问题的另一种解决方案是在应用层实现数据包之间的分离。比如下面的例子,以 字符 “\n”作为两个数据包之间的分隔符。TCP server:在这里插入代码片...
2019-06-16 18:59:44 226
原创 Linux网络编程之 TCP 粘包问题
TCP 为什么会有粘包问题?TCP 是一种 流式连接,不会区分不同数据报之间的界限。如何解决呢?2.1 可以使用固定长度发送数据包2.2 在包头加上包体长度2.3 使用应用层协议来解决粘包?2.4 你的系统是怎么解决粘包问题的???...
2019-06-16 11:35:53 152
原创 Linux网络编程之简单TCP客户端服务器端实现
下面的 代码有两个问题:server 端code:#include <sys/socket.h>#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#includ...
2019-06-12 07:36:53 351
原创 Linux网络编程之 Socket
1.什么是socket?Socket 可以看成是用户进程与内核网络协议栈的编程接口。Socket 既可以用于本机的进程间通信,也可用于网络上不同主机的进程间通信。Socket可用于异构系统之间的通信,异构系统是指不同的架构系统或不同的操作系统,所以在微服务架构下,不同APP之间更多的采用Socket通信机制(或者封装了Socket 通信的上层进程间通信机制)。...
2019-06-06 07:06:35 167
原创 计算机网络之路由表,路由选路原则
1. 路由表如何查看?Linux下可以用 route指令 查看,route -n[root@localhost ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 192.168.1....
2019-06-04 07:15:01 3301
原创 数据结构与算法之算法基础
什么是算法?算法是为解决特定问题的步骤的描述,在计算机中表示为指令的有限序列,每条指令表示一个或多个操作。算法有五个特性:输入,输出,有穷性,确定性,可行性。好的算法具有 可读性,健壮性,时间效率高和存储低的特点。如何度量算法的效率呢?事后统计方法与事前分析估算方法两种。事后统计方法意义不大,一个是有些算法测试起来比较困难,而是测试结果依赖硬件的好坏。所以一般采用事前分析估算方法,高...
2019-06-02 12:47:25 198
原创 数据结构与算法之逻辑结构与物理结构
什么是逻辑结构与物理结构?逻辑结构是指数据对象中数据元素之间的相互关系。分为:集合结构:线性结构:树状结构:图形结构:每个圆圈代表一个数据元素。连线代表元素之间的 逻辑关系,并且这种关系是建立在具体问题之上的。物理结构是指逻辑结构在计算机内存中的存储形式。有两种存储形式:顺序存储结构:数据元素被存放到连续的存储单元中,数据间的逻辑关系和物理关系是一致的。链式存...
2019-06-02 11:13:57 1180
原创 程序员的自我修养之静态链接
静态链接一般分两步进行:第一: 空间和地址分配,这一步做的工作是扫描所有的输入目标文件,将所有的符号表归类到全局符号表中,并合并。第二:符号解析与重定位,重定位 是 链接过程的核心。总结为: 合并目标文件—分配虚拟地址1. 链接过程对C++ 进行了哪些处理?消除重复代码引用外部库函数将全局构造函数及析构函数分别放到 .init 与 。fini 段。 在执行 main函数之前 会首...
2019-05-31 07:34:59 189
原创 程序员的自我修养之目标文件
1. 什么是目标文件?目标文件是经过预处理,编译,汇编后生成的文件。目标文件经过链接后变为可执行文件。目标文件与可执行文件格式几乎一模一样,linux 中统称为 ELF 文件。2. 目标文件是什么样的呢?|.text段| 执行语句编译生成的机器代码 ||.data段|已初始化的全局变量和局部静态变量|| .bss |未初始化的全局变量和局部静态变量 |3. 目标文件这样分段存...
2019-05-30 22:51:15 191
原创 程序员的自我修养之编译和链接
一个程序的源代码到变成可执行程序,要经过 --预处理—编译—汇编–链接四个过程。1. 预处理都做了啥?指令: gcc -E hello.c -o hello.i预处理主要处理源代码中以“#”开头的预编译指令,主要包括:将所有的“#define”删除并展开所有的宏定义。 处理所有条件预编译指令,比如“#if”"#ifdef""#else"“endif”处理#include预编译指令...
2019-05-26 15:55:28 543
原创 编译链接之线程
1. 什么是线程?线程被称为轻量级的进程,一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成,各个线程之间共享程序的内存空间(包括代码段,数据段,堆)。线程通常有三种状态线程都拥有自己的优先级,高优先级的线程会更早的执行。多线程控制数据并发的方式:锁。具体细分为:二元信号量多元信号量互斥量:与信号量用法类似,唯一的不同是,同一个信号量可以被系统中的一个线程获取...
2019-05-26 14:56:32 244
原创 计算机网络--面向连接的运输:TCP
概述TCP协议运行于端系统中,中间路由器对TCP连接完全视而不见,他们看到的是数据报,而不是连接。TCP是点对点通信,即是发生在单个发送方与单个接收方之间的通信。在实际编程中,接收缓存与发送缓存可通过setsockopt设置SO_SNDBUF、SO_RCVBUF。 getsockopt 可用于查看当前系统的发送与接收缓存的大小。系统的默认socket 发送缓冲区(SO_SNDBUF)的大小...
2019-05-26 10:41:43 450
原创 计算机网络-传输层-go-back-N and selective repeat
Go-back-N![在这里插入图片描述](https://img-blog.csdnimg.cn/20190524215353481.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzg5Nw==,siz...
2019-05-24 23:17:23 6562 1
原创 关于传输层那点事
1. 传输层是干啥的?传输层协议为运行在不同主机上的应用进程之间提供逻辑通信(logic communication), 使通信双方不用关心对方的物理位置。运输层协议是在端系统中而不是在路由器中实现的。![数据往外发送的历程](https://img-blog.csdnimg.cn/20190522071243971.png)2. 运输层与网络层啥关系?网络层提供的主机之间的逻辑通信,而...
2019-05-24 21:48:32 227
原创 Node.js程序编写环境搭建
Node.js 程序编写环境搭建Node.js 程序使用JavaScript编写,运行在webserver上,而webserver一般是Linux系统,Linux系统可用的编辑器其实很少,至少远没有 windows下的丰富多彩。javascript 编辑器 个人认为 visual studio code是一个不错的选择 (确实是微软的良心之作)。visual studio code 除了 ...
2019-01-08 22:42:31 201
原创 VoIP 视频通话 --Node.js 安装
VoIP 视频通话 --Node.js 安装网上关于Node.js的教程一抓一大把,我找到一本写的比较好的。总结一下基本流程。准备环境:安装Node.js 有Window,Linux,Mac 三个版本可以选择,这里选择的是 linux版本。 因为一般的 webserver 都是 Linux系统。在Virtual box 中安装一个CentOS 系统。 CentOS 系统选择的是 se...
2019-01-06 08:23:27 1303
原创 VOIP 语音视频通话 ---总述
VOIP 语音视频通话实现的功能分两个phase。phase 1 要实现的功能:–两个浏览器之间实现视频 语音 文本交流。phase 2 要实现的功能:–实现桌面 APP, 网页端, Android APP 端 视频 语音互通。涉及到的工具(技术栈)Node.js–> 用作 https web server,承载 网页 客户端的 内容。–> 选择的理由是 Node...
2019-01-05 07:42:53 3872
原创 webrtc 前期准备工作
webrtc 前期准备工作:chrome浏览器。web server for chrome (chrome 插件)–&gt;插件的安装需要chrome 浏览器能够访问到 chrome 商店,要访问 chrome 商店可以通过安装chrome访问助手。参考链接http://www.cnplugins.com/zhuanti/ggfwzs-install-course.html...
2018-12-16 18:04:23 215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人