![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 92
Hical_W
阁下,你能找到这里,说明你天赋异凛、骨骼精奇,有经天纬地之才,包藏宇宙之志,实乃旷世之奇才,治世之能臣也!
展开
-
浅谈几种服务器端模型——epoll
引言:上一篇说到线程池方式来处理服务器端的并发,并给出了一个线程池的方案(半同步,半异步方式)。再来说下同步异步,阻塞非阻塞区别:同步和异步针对应用程序来,关注的是程序中间的协作关系;阻塞与非阻塞更关注的是单个进程的执行状态。同步有阻塞和非阻塞之分,异步没有,它一定是非阻塞的。阻塞、非阻塞、多路IO复用,都是同步IO,异步必定是非阻塞的,所以不存在异步阻塞和异步非阻塞的说法。真正的异步原创 2017-11-10 16:54:54 · 518 阅读 · 0 评论 -
Linux安装JSON-C
0、JSON简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 跟XML相比,JS转载 2017-10-26 09:51:15 · 1676 阅读 · 0 评论 -
linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
PATH和LD_LIBRARY_PATH本质都是变量,所谓变量的意思就是由别人赋值产生的,直觉往往会让我们添加和减少这个变量本身的某些路径,实际上这是不正确的。正确的做法是我们要去修改赋予这个变量数值的那些配置文件,加一条路径或者减一条。说到底变量只关乎显示,不关乎其用于显示的内容。PATH: 可执行程序的查找路径查看当前环境变量:echo $PATH 设置:转载 2017-10-26 11:02:37 · 232 阅读 · 0 评论 -
多路I/O转接服务器
多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。主要使用的方法有三种select1.select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开的文件描述符个数并不能改变select监听文件个数2.解决1024以下客户端时使用selec原创 2017-10-18 21:37:39 · 417 阅读 · 1 评论 -
线程池代码
#ifndef __THREADPOOL_H_#define __THREADPOOL_H_typedef struct threadpool_t threadpool_t;/** * @function threadpool_create * @descCreates a threadpool_t object. * @param thr_num thread num * @原创 2017-11-18 15:36:47 · 1027 阅读 · 2 评论 -
浅谈几种服务器端模型——多线程并发式(线程池)
引言:上篇文章说到多进程并发式的服务端模型,正如上章所述,进程的频繁创建会导致服务器不堪负载,本章主要讲:线程模型和线程池的方式来提高服务端的负载能力。同时比较一下不同的模型的好处与坏处。这里不过多的强调怎样利用线程等来创建执行体以及其他的系统调用怎样使用的。服务端的线程使用方式一般分为三种:(1)原创 2017-11-09 21:52:10 · 3759 阅读 · 1 评论 -
linux下压缩和解压缩命令-----tar命令详解
tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirNamegz命令 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .tgz 解压:tar z原创 2017-11-15 10:31:59 · 249 阅读 · 0 评论 -
使用cJSON创建JSON字符串
在Linux下,使用C语言编程,开始JSON字符串的创建。我们还是一步步来,逐渐由简单到复制。 1,下载源码可以从如下网站来下载:https://sourceforge.net/projects/cjson/ 。2,包含cJSON的源码下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数 中包含头文件(#include “cJS原创 2017-12-07 20:45:17 · 2164 阅读 · 0 评论 -
使用cJSON解析JSON字符串
一、为何选择cJSON 我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串 的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一 步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。 基于方便引用的考虑,我们希望这个JSON解析库是用C语言实现的。同时,为了避免太 过原创 2017-12-07 20:47:47 · 951 阅读 · 3 评论 -
浅谈几种服务器端模型——多进程并发式
引言:上篇文章讲到同步阻塞迭代式的进程方式,此篇文章讲述一下关于处理单进程阻塞于系统调用的情况。使用方式是多进程的方式,可以减少很大一部分的因为进程阻塞所带来的服务器无法响应问题。 基本思想是这样,如上篇文章所述,单进程阻塞在read() 系统调用的时候,会导致服务器无法响应其他客服端的连接请求,那么我们可以通过在服务器fork() 出很多子进程来处理业务,而主进程负责 accep原创 2017-11-09 21:35:22 · 603 阅读 · 0 评论 -
浅谈几种服务器端模型——同步阻塞迭代
引言:似乎现在阻碍服务端大部分情况下都属于IO瓶颈,硬盘的转速等,而计算的瓶颈大部分云端计算采用分布式计算,如基于GFS的MapReduce模型,网格计算或者其他的一些分布式处理。所以,现在服务端的服务衡量指标基本集中在并发量,QPS,响应速度,稳定性等。其中一部分也不乏大量的计算,属于CPU密集型的,根据业务的不同应该做相应的调整。下面浅谈一下几种常用的IO模型。 理解IO 模型原创 2017-11-09 21:30:29 · 464 阅读 · 0 评论 -
shell基本语法(二)
变量按照惯例,Shell变量通常由字母加下划线开头,由任意长度的字母、数字、下划线组成。有两种类型的Shell变量:1. 环境变量环境变量可以从父进程传给子进程,因此Shell进程的环境变量可以从当前Shell进程传给fork出来的子进程。用printenv命令可以显示当前Shell进程的环境变量。2. 本地变量只存在于当前Shell进程,用set命令可以显原创 2017-10-18 21:06:25 · 244 阅读 · 0 评论 -
正则表达式(四)
以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义。其实grep还可以找出符合某个模式(Pattern)的一类字符串。例如找出所有符合xxxxx@xxxx.xxx模式的字符串(也就是email地址),要求x字符可以是字母、数字、下划线、小数点或减号,email地址的每一部分可以有一个或多个x字符,例如abc.d@ef.com、1_2@987-6.54,当然符合这个模原创 2017-10-18 21:12:23 · 365 阅读 · 0 评论 -
grep和find(五)
grep1. 作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep原创 2017-10-18 21:25:47 · 207 阅读 · 0 评论 -
高并发服务器
多进程并发服务器使用多进程并发服务器时要考虑以下几点:1. 父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)2. 系统内创建进程个数(与内存大小相关)3. 进程创建过多是否降低整体服务性能(进程调度)server/* server.c */#include #include#include#原创 2017-10-18 21:32:24 · 342 阅读 · 0 评论 -
滑动窗口 (TCP流量控制)
问题:如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。TCP协议通过“滑动窗口(Sliding Window)”机制解决这一问题。看下图的通讯过程:1. 发送端发起连接,声明最大段尺寸是1460,初始序号是0,窗口大小是4K,表示“我的接收缓冲区还有4K字节空闲,你发的数据不要超过4原创 2017-10-18 21:44:19 · 704 阅读 · 0 评论 -
Shell脚本语法(三)
条件测试命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:itcast@ubuntu:~$ var=2itcast@ubuntu:~$ test$var -gt 1itcast@ubuntu:~$ echo $?原创 2017-10-18 21:08:50 · 348 阅读 · 0 评论 -
sed(六)
sed意为流编辑器(StreamEditor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。sed命令行的基本格式为sed option 'script'file1 file2 ...sed option原创 2017-10-18 21:27:51 · 227 阅读 · 0 评论 -
awk(七)
sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件。awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义,比如/etc/passwd文件的每一行有若干个字段,字段之间以:分隔,就可以重新定义awk的列分隔符为:并以列为单位处理这个文件。awk实际上是一门很复杂的脚本语言,还有像C语言一样的分支和循环结构,但是基本原创 2017-10-18 21:29:48 · 246 阅读 · 0 评论 -
linux之sort用法
linux之sort用法sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序。参 数: -b 忽略每行前面开始出的空格字符。 -c 检查文件是否已经按照顺序排序。 -f 排序时,忽略大小写字母。转载 2017-10-20 15:51:28 · 296 阅读 · 0 评论 -
shell编程学习(一)
shell历史Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是原创 2017-10-18 21:04:03 · 255 阅读 · 0 评论