Linux
文章平均质量分 92
小林coding
公众号 : 「小林coding」 专注图解计算机基础,期待你的关注,保证把你图解的明明白白。
展开
-
你知道跟 TCP三次握手息息相关的半连接队列和全连接队列吗?
前言网上许多博客针对增大 TCP 半连接队列和全连接队列的方式如下:增大 TCP 半连接队列的方式是增大 /proc/sys/net/ipv4/tcp_max_syn_backlog;增大 TCP 全连接队列的方式是增大 listen() 函数中的 backlog;这里先跟大家说下,上面的方式都是不准确的。“你怎么知道不准确?”很简单呀,因为我做了实验和看了 TCP 协议栈的内核源码,发现要增大这两个队列长度,不是简简单单增大某一个参数就可以的。接下来,就会以实战 + 源码分析,带大家原创 2020-05-30 22:27:39 · 4362 阅读 · 5 评论 -
写了Bug,误执行 rm -fr /*,我删删删删库了,要跑路吗?
每日英语,每天进步一点点(偷笑):前言临近五一节,想到有 5 天假期,小林开始飘了。写个简单的 Bash 脚本都不上心了,写完连检查都不检查,直接拖到到实体服务器跑。结果一跑起来,发生不对劲,怎么一个简单脚本跑了 10 秒还没结束,于是立马直接 ctrl + c 一顿操作停掉了运行中脚本。接着,习惯性的输入了 ls,结果 what? 找不到 ls 命令?瞬间背后一凉,慌慌张张打开...原创 2020-04-30 16:55:43 · 3122 阅读 · 7 评论 -
Linux性能调优 | 01 平均负载的理解和分析
01 uptime命令通常我们发现系统变慢时,我们都会执行top或者uptime命令,来查看当前系统的负载情况,比如像下面,我执行了uptime,系统返回的了结果。[root@lincoding ~]# uptime 08:31:49 up 27 min, 1 user, load average: 0.07, 0.04, 0.00前几列的信息,相信大家都很熟悉,它们分别是当前时间、...原创 2019-11-05 20:25:20 · 1775 阅读 · 2 评论 -
C++ 深入浅出工厂模式(进阶篇)
本文进阶篇,主要是将工厂类的封装性提高,达到新增产品时,也不需要修改工厂类,不需要新增具体的工厂类。封装性高的工厂类特点是扩展性高、复用性也高。原创 2019-09-15 21:25:59 · 1543 阅读 · 0 评论 -
C++ 深入浅出工厂模式(初识篇)
工厂模式的实现方式可分别简单工厂模式、工厂方法模式、抽象工厂模式,每个实现方式都存在优和劣。原创 2019-09-15 21:21:07 · 1667 阅读 · 0 评论 -
C++ 并发编程之互斥锁和条件变量的性能比较
介绍本文以最简单生产者消费者模型,通过运行程序,观察该进程的cpu使用率,来对比使用互斥锁 和 互斥锁+条件变量的性能比较。本例子的生产者消费者模型,1个生产者,5个消费者。生产者线程往队列里放入数据,5个消费者线程从队列取数据,取数据前需要判断一下队列中是否有数据,这个队列是全局队列,是线程间共享的数据,所以需要使用互斥锁进行保护。即生产者在往队列里放入数据时,其余消费者不能取,反之亦然。...原创 2019-09-01 10:33:14 · 2047 阅读 · 0 评论 -
Linux C 后台服务程序单进程控制
介绍通常后台服务器程序都必须有且只有一个进程,那么如何单进程呢?本例子是通过flock函数对/var/run/myserver.pid记录pid文件的进行加锁若加锁不正常,说明后台服务进程已经在运行了,这时则直接报错退出若加锁成功,说明后台服务进程没有在运行,这时可以正常启用进程后台服务程序单进程控制详细不多说,直接看代码#include <stdio.h>#in...原创 2019-08-31 16:45:01 · 1541 阅读 · 0 评论 -
C++ 线程安全的单例模式总结
什么是线程安全?在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。如何保证线程安全?给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用。让线程也拥有资源,不用去共享进程中的资源。如: 使用threadlocal可以为每个线程的维护一个私有的本地变量。什么是单例模式?单例模式指在整个系...原创 2019-08-30 21:29:36 · 2361 阅读 · 0 评论 -
C/C++ 修改系统时间,导致sem_timedwait 一直阻塞的问题解决和分析
修改系统时间,导致sem_timedwait 一直阻塞的问题解决和分析介绍最近修复项目问题时,发现当系统时间往前修改后,会导致sem_timedwait函数一直阻塞。通过搜索了发现int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);传入的第二个阻塞时间参数是绝对的时间戳,那么该函数是存在缺陷的。sem_time...原创 2019-08-17 18:17:37 · 4125 阅读 · 2 评论 -
Linux shell脚本判断服务器网络是否可以上网
Linux shell脚本判断网络畅通介绍在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的网络状态判断#!/bin/bash#检测网络链接畅通function network(){ #超时时间 local...原创 2019-08-16 21:29:59 · 8282 阅读 · 0 评论 -
Linux shell获得字符串所在行数及位置
**shell 获得字符串所在行数及位置01 获取字符串所在的行数方式一:用grep -n[root@root]# cat testapplebitcreatedelectexeflowgood[root@root]# cat test | grep -n exe5:exe[root@root]# cat test | grep -n exe | awk -F ":"...原创 2019-08-16 20:32:47 · 8040 阅读 · 0 评论