自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 使用go channel实现一个简单的信号量

使用go channel实现一个简单的信号量 测试环境:mac什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。介绍信号量的话,那么肯定不能不介绍P-V操作原语P-V操作原语P操作原语:semaphore 减1若semap

2017-04-26 01:21:26 3166

原创 浅析TCP连接过程中server异常情况处理

#浅析TCP连接过程中server异常处理 基础环境:腾讯云ubuntu虚拟机 前置基础:对TCP连接有一个基本认识,能写进行简单socket编程先简单介绍一下TCP编程流程TCP简易编程流程1.TCP服务器端编程流程如下:创建套接字socket; 绑定套接字bind; 设置套接字为监听模式,进入被动接受连接状态listen; 接受请求,建立连接accpet; 读写数据re

2017-04-24 23:59:34 5258

原创 使用VS CODE+PlantUML高效画图

使用VS CODE+PlantUML高效画图 自从发现了plantuml写脚本画图的方式之后,爱上了画图~ 环境:MAC前言本文多数内容引用自官网文档和其他人的教程,并非本人原创,也谈不上翻译,只是把自己 理解的东西用中文写出来。什么是PLANTUMLPlantUML是一个快速创建UML图形的组件,官网上之所以称它是一个组件,我想主要是因为多数情况下我们都是在Eclipse、NetB

2017-04-13 23:05:14 63298 3

原创 无线网中一些约定俗成的时延估量

无线网中一些约定俗成的时延估量 作为一些性能、时延估量参考一、在传统LTE网络中的切换时延是50~150ms。所谓切换,就是指当移动台在通话过程中从一个基站覆盖区移动到另一个基站覆盖区,或者由于外界干扰而造成通话质量下降时,必须改变原有的话音信道而转接到一条新的空闲话音信道上去,以继续保持通话的过程。所以你在高铁上玩网络对战游戏,会发现网络时好时坏(当然影响的不止这一个因素)二、传输网络每10

2017-04-09 17:08:27 2185

原创 linux内核编程(hello world示例程序)

linux内核编程(hello world) Linux可加载内核模块是 Linux 内核的最重要创新之一。它们提供了可伸缩的、动态的内核。其它开发者可以不用重新编译整个内核便可以开发内核层的程序,极大方便了驱动程序等的开发速度。 本系列文章主要是记录个人从hello world开始,通过学习linux内核基本编程操作,再对ipvs负载均衡器源码进行初步学习分析;最后,基于netfil

2017-04-07 00:46:54 12215

原创 最近玩喂喂我的小仓鼠吧,玩上瘾了……

最近玩喂喂我的小仓鼠吧,玩上瘾了……是该大神制作的,拷贝一下里面的http内容就可以了……但是csdn不清楚为啥不行,好烦啊。http://abowman.com/google-modules/hamster/#gadgetSWF

2017-04-25 21:10:39 2592

原创 /bin/bash^M: bad interpreter: No such file or directory

/bin/bash^M: bad interpreter: No such file or directory 环境:suse在linux执行一个在window上编写的.sh脚本,系统提示/bin/bash^M: bad interpreter: No such file or directory该原因是因为windows默认换行为\r\n,linux默认换行为\n,如果是在windows上编

2017-04-25 00:21:27 811

转载 技术人员的发展之路

技术人员的发展之路 转自陈皓大神,勉励自己2012年的时候写过一篇叫《程序算法与人生选择》的文章,我用算法来类比如何做选择,说白了就是怎么去计算,但是并没有讲程序员可以发展的方向 有哪些。 所以,就算是有这些所谓的方法论,我们可能对自己的发展还是会很纠结和无所事从,尤其是人到了30岁,这种彷徨和迷惑越来越重。虽然我之前也写过一篇《编程年龄和编程技能》的文章,但是还是有很多做技术的人对于自己能否

2017-04-25 00:05:54 641

原创 linux套接字编程笔记(一)--TCP与UDP

linux套接字编程笔记(一)–TCP与UDPTCP和UDP是传输层协议,作为传输层协议主要功能如下:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。简单来说就是有连接or无连接处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认

2017-04-16 12:14:29 729

原创 clint是windows下的c/c++检查工具……

当然就算是这样,linux也可以使用windows挂在linux盘符的方式或者反过来linux mount windows文件的方式来在pclint检查代码规范

2017-04-16 02:34:19 706

原创 记go和python中的slice一个简单区别

记go和python中的slice区别python中的slice是在原有基础上拷贝一份。go中的slice则是指向生成它的数组/切片,切最长长度不会超限。python举例#数组为1,2,3,4>>> L=[1,2,3,4]#生成一个内容为2,3的切片>>> slice1=L[1:3]>>> print(slice1)[2, 3]#修改其中一个值,查看切片和list的值是否有变化>>>

2017-04-16 02:22:12 1650

转载 微信红包的架构设计简介

微信红包的架构设计简介 背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢) 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量。微信的金额什么时候算?答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。。 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低。实时性:为什

2017-04-14 00:20:43 607

原创 孤儿进程和僵尸进程

孤儿进程和僵尸进程孤儿进程:进程A fork出子进程B,然后进程A退出,此时进程B依然在运行,那么这个进程因为没有了父进程(父进程退出,其父进程会自动变为init进程),故称为孤儿进程。孤儿进程将会被init进程(进程号位1)所收养,并且由init进程完成他们的状态收集工作。僵尸进程:进程A fork出子进程B,如果此时进程B退出,但是进程A并没有调用wait或waitpid函数获取子进程的状态信息

2017-04-11 21:35:31 487

原创 随便说说

看linux内核源码的时候,之前用的是source insight,但是因为文件太多,索引加载起来太痛苦了后来使用lxr在线查看linux源码,虽然不用自己索引,但实际上还需要联网,而且经常受制于网速现在使用了vs code之后,因为它是按需加载文件,所以看代码看起来非常快!一旦入教,永不受苦。

2017-04-11 20:50:14 464

原创 无聊使用python画一个笛卡尔心

无聊使用python画一个笛卡尔心��import numpy as npimport matplotlib.pyplot as plta = 1t = np.linspace(0, 2*np.pi, 1024)X = a*(2*np.cos(t) - np.cos(2*t))/2Y = a*(2*np.sin(t) - np.sin(2*t))plt.plot(Y, X, c = 'r')

2017-04-11 00:50:01 7790

原创 IPVS负载均衡(六)浅析ip_vs_core.c

IPVS负载均衡(六)浅析ip_vs_core.cip_vs_core.c先从linux内核module_init和module_exit开始。module_init函数:ip_vs_init函数原型:static int __init ip_vs_init(void)初始化ip_vs模块所需的各种/* * Initialize IP Virtual Server */static int

2017-04-11 00:29:48 1605

原创 ipvs负载均衡(五)代码结构简易分析

ipvs负载均衡(五) 从本章开始,将会开始分析ipvs代码,尽量按照ipvs原理介绍的思路以及netfilter机制进行介绍如何获取源码既然要开始阅读ipvs代码,那么肯定需要源码,源码在哪里获得呢?我这里提供了两个方式:我这里提供了一个git分支里面存储了4.4.60linux内核源码版本的ipvs源码,https://github.com/Miss-you/kernel-netfilt

2017-04-09 22:15:52 1036

原创 ipvs负载均衡(四)推荐个原理网站

ipvs负载均衡(四)推荐一个lvs学习网站原理讲的很清楚http://zh.linuxvirtualserver.org/原理来说,真的还是章文嵩博士原文写的清晰明了。前三章IPVS负载均衡(一)基本概念http://blog.csdn.net/qq_15437667/article/details/50644443ipvs负载均衡(二)lvs集群介绍http://blog.csdn.net/qq

2017-04-09 20:50:09 842

原创 如何使用gdb快速attach到所需进程上

如何使用gdb快速attach到所需进程上大家都知道,gdb的调试功能非常强大,可以attach到打开调试开关编译出来的进程上调试进程,但是在这个流程中,你首先需要ps -ef | grep到你那个进程,然后找到进程号,然后再使用gdb attach命令attach进进程。首先,这个就比较麻烦,需要执行三条命令;其次,这个方法也肯定不是一个自动化attach进进程所应该允许的流程。这里就介绍一条命令

2017-04-09 16:50:56 5490

原创 make: *** /lib/modules/4.4.0-53-generic/build: 没有那个文件或目录。 停止。

make: * /lib/modules/4.4.0-53-generic/build: 没有那个文件或目录。 停止。 环境:ubuntu 16.04编译内核模块时,提示make: *** /lib/modules/4.4.0-53-generic/build错误遇到这个错误,主要是没安装内核安装包(类似于kernel-devel的名字)但是这种情况下一般有两种情况:有安装内核开发包,但是因

2017-04-09 16:32:00 31199 2

原创 ssh登录远程机

ssh登录远程机ssh基本命令usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i i

2017-04-06 22:39:09 3712

转载 STL之双端队列

STL之双端队列头文件:include 构造方法:deque deq 创建一个没有任何元素的双端队列deque deq(otherDeq) 用另一个类型相同双端队列初始化该双端队列deque deq(size) 初始化一个

2017-04-06 00:10:09 646

原创 关于c++中的bool变量

关于c++中的bool变量bool转intbool变量有两个值,true和false,它可以转变为int类型,true对应的是1,false对应的是0#include <iostream>using namespace std;int main() { bool flag = true; cout<<"true = "<<(int)flag<<endl; flag = false

2017-04-05 23:57:48 2560

原创 tar.gz和tar.bz2解压命令

tar.gz和tar.bz2解压命令网络上下载到linux源码包主要是tar.gz和tar.bz2压缩格式的,有一部分是zip解压tar.gz命令是tar -zxvf xx.tar.gz解压tar.bz2的命令是tar -jxvf xx.tar.bz2解压zip则使用unzip工具

2017-04-01 23:47:30 69760

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除