- 博客(41)
- 资源 (7)
- 收藏
- 关注
转载 深入浅出golang的chan
记得大学刚毕业那年看了侯俊杰的《深入浅出MFC》,就对深入浅出这四个字特别偏好,并且成为了自己对技术的要求标准——对于技术的理解要足够的深刻以至于可以用很浅显的道理给别人讲明白。以下内容为个人见解,如有雷同,纯属巧合,如有错误,烦请指正。今天,我们聊一聊go语言中chan,在开始我们话题之前,我们先看看官方对于chan的介绍(其中斜体为原文拷贝,没有任何加工):A channel provides a mechanism forconcurrently executing functionsto..
2020-07-26 10:32:43
720
转载 golang的chan有趣用法
https://blog.csdn.net/weixin_42663840/article/details/81743709写这个博客的背景是我面试一家公司,这家公司的CTO给我出了一道我认为挺有意思的题,题的大概是这样的:// 抽象一个栅栏type Barrier interface { Wait ()}// 创建栅栏对象func NewBarrier (n int) Barrier { }// 栅栏的实现类type barrier struct {}// 测试...
2020-07-26 10:30:38
561
转载 c++11多线程中的std::async异步函数
https://blog.csdn.net/li1615882553/article/details/86252813目录写在前面解析future类成员函数wait_for以及wait_until返回值类型get函数valid函数wait_for函数std::launch类型参考博客写在前面如果有一个需要长时间运算的线程,需要计算出最终的有效值,...
2020-03-07 11:59:50
997
转载 修改root密码出错,文件系统变成只读
给passwd文件加权限,修改/etc/passwd目录下所有的文件夹属性为可写可读可执行,执行以下命令:chomd 777 /etc/passwd的时候提示错误:chmod: changing permissions of ‘/etc/passwd': Read-only file system解决方法:产生这个问题的原因是文件
2016-09-06 20:33:27
3161
转载 C++对象的内存分布和虚函数表
C++对象的内存分布和虚函数表 (2010-07-25 20:54:55)转载▼标签: 教育 c++中一个类中无非有四种成员:静态数据成员和非静态数据成员,静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来放在程序的静态数据
2016-05-11 18:50:05
402
转载 抢占式内核与非抢占式内核
抢占式内核与非抢占式内核linux抢占式内核与实时系统的关系一个好的系统的进程调度机制,要兼顾三种不同的应用的需求:1交互式应用。这种应用,着重于系统的响应速度,当系统中有大量的进程共存时(多用户),要保证每个用户都有可以接受的响应速度,而不感到明显的延迟。当延迟超过150毫秒时,使用者会明显地感觉到。2.批处理应用。批处理的应用往往都是“后台作业”,对响应速度没有要求,但要考
2016-04-13 13:02:01
4515
转载 共享内存的特殊文件系统
这个特殊的文件系统是基于Ram的。 shmget会在这个特殊的文件系统上创建一个文件,shmat会调用mmap把这个文件映射到进程的地址空间中。内核怎样保证各个进程寻址到同一个共享内存区域的内存页面1、page cache及swap cache中页面的区分:一个被访问文件的物理页面都驻留在page cache或swap cache中,一个页面的所有信息由struct
2016-04-10 13:49:54
604
转载 sendfile优化文件拷贝
原文地址:http://www.vpsee.com/2009/07/linux-sendfile-improve-performance/现在流行的 web 服务器里面都提供 sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢?sendfile 实际上是 Linux 2.0+ 以后的推出的一个系统调用,web 服务器可以通过调整自身的配置来决定是否
2016-02-23 13:44:47
317
转载 TCP_NODELAY与TCP_CORK
版权声明:本文为博主原创文章,未经博主允许不得转载。TCP_NODELAY默认情况下,发送数据采用Nagle 算法。这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagle 算法。此时,应用程序向内核递交的每个数据包都会立即发送出去。需要注意的是,虽然禁止了Nagle 算法,但网
2016-02-23 13:30:25
1506
转载 实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
http://www.tuicool.com/articles/VvU7fum一.基本概念 我们通俗一点讲:Level_triggered(水平触发) :当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据
2016-01-13 18:40:35
999
转载 listen()的backlog参数和未完成队列、已完成队列的关系
http://blog.chinaunix.net/uid-24782829-id-3456109.html listen函数是网络编程一个基本的函数,而且它的backlog参数却是和TCP协议息息相关的。我们来看一下一个backlog参数到底有多少秘密。一、 为了理解backlog参数,我们必须首先认识listen函数。点击(此处)折叠或打开
2016-01-13 18:22:11
367
转载 Boost.Bind用法详解
Boost.Bind用法详解(一) 2008-05-09 15:50:50| 分类: C++|举报|字号 订阅 下载LOFTER客户端Boost.Bind 为函数和函数对象提供了一致的语法,对于值语义和指针语义也一样。我们将从一些简单的例子开
2015-12-28 17:02:37
516
转载 skipList
http://blog.csdn.net/qq575787460/article/details/16898045版权声明:本文为博主原创文章,未经博主允许不得转载。如何在大量元素中去查找某个元素。例如在下面的“大量元素”的数组中对于上面的情况无论是查找3还是查找8,只有一种办法,那就是遍历。时间复杂度是O(N)
2015-12-15 15:44:10
502
转载 LRU算法实现
LRU Cache题目链接:https://oj.leetcode.com/problems/lru-cache/Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.
2015-12-11 15:25:55
4502
转载 GDB技巧整理
GDB技巧整理整理常用的gdb技巧。常用命令¶常用的gdb命令...启动gdb¶直接运行gdb --args prog arg1 arg2运行gdb后使用run命令gdb progrun arg1 arg2attach到已运行的程序gdb --pid ${PID_OF_PROG}ptyp
2015-11-25 16:57:42
428
原创 Centos devtoolset (compiling related)
http://people.centos.org/wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repoyum install devtoolset-2-gcc devtoolset-2-binutils devtoo
2015-11-24 10:53:01
501
转载 取得网卡的ip和mac地址
#include #include #include #include #include #include #include #include #include #include #define MAXINTERFACES 16int main (int argc, char **argv){ int f
2015-10-19 10:39:18
439
转载 标准C++中的string类的用法总结
标准C++中的string类的用法总结相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C+
2015-10-08 18:47:47
274
转载 Multi-Threaded Libevent Server Example
http://sourceforge.net/p/libevent-thread/code/ci/master/tree/
2015-01-23 11:30:12
656
转载 ucontext相关,开发自己线程库
1.干货写在前面协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。首先我们可以看看有哪些语言已经具备协程语义:比较重量级的有C#、erlang、golang*轻量级有python、lua、javascript、ruby还有函数式的scala、scheme等。c/c++不直接支持协程语义,但有不少开源的协程库,如:Protothreads:一个“蝇量级
2015-01-07 15:31:35
1217
转载 非阻塞connect
步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接 建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。
2014-03-25 18:13:18
617
转载 shell 批量修改文件名
test_dma.c 修改为test_dma_intr.ccat re.sh#!/bin/shfor file in `ls *.[ch]`do mv $file `echo $file | sed 's/dma/dma_intr/g'`done执行 source re.sh,就可以修改当前目录下的文件名。
2014-03-25 10:17:41
418
转载 TCP状态变迁图
http://hi.baidu.com/suxinpingtao51/item/be5f71b3a907dbef4ec7fd0eTCP的三次握手/四次挥手以及状态变迁图大家对netstat -a命令很熟悉吧,但是,你有没有注意到STATE一栏呢,基本上显示着established,time_wait,close_wait等,这些到底是什么意思呢,在这篇文章,我将会详细的阐述
2014-03-05 17:22:10
835
转载 gdb调试技术
13. 设置显示选项set print addressset print address on打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为打开的,show print address查看当前地址显示选项是否打开。set print arrayset print array on打开数组显示,打开后当数组显示时,每个元素占一行,如果不
2014-03-03 17:11:24
464
转载 linux SA_RESTART的问题
信号是异步的,它会在程序的任何地方发生。由此程序正常的执行路径被打破,去执行信号处理函数。一般情况下,进程正在执行某个系统调用,那么在该系统调用返回前信号是不会被递送的。但慢速系统调用除外,如读写终端、网络、磁盘,以及wait和pause。这些系统调用都会返回-1,errno置为EINTR。当系统调用被中断时,我们可以选择使用循环再次调用,或者设置重新启动该系统调用(SA_RESTART)。#
2014-02-19 15:18:23
2094
转载 C++对象初始化
C++中对象的初始化,赋值和构造函数(2007-04-22 19:13:21)转载▼C++中,对象的初始化和赋值是两个不同的概念.对象的初始化发生在对象第一次获得值的是时候(被定义的时候,刚刚被分配内存的时候)。赋值--对一个已经被初始化的对象再次赋值(改变现有的状态)的过程。 从操作的角度来将,初始化总是调用构造函数(或拷
2014-01-17 18:57:34
842
转载 shell判断文件是否存在及比较操作
shell判断文件是否存在 2011-10-27 11:49:53| 分类:学习随记 | 标签:shell |字号 订阅 1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/va
2013-11-14 14:08:17
564
原创 awk 中使用shell 变量
eyear=2013endtime=`cat maillog | tail -1 | awk '{print $1 " " $2 " " "'""$eyear""'" " " $3}'`要使用''(单引号)括起来的""$eyear""(两个双引号),然后再加""
2013-06-26 11:32:32
502
转载 linux shell 时间运算以及时间差计算方法
最近一段时间,在处理Shell 脚本时候,遇到时间的处理问题。 时间的加减,以及时间差的计算。 1。 时间加减 这里处理方法,是将基础的时间转变为时间戳,然后,需要增加或者改变时间,变成 秒。 如:1990-01-01 01:01:01 加上 1小时 20分处理方法:a.将基础时间转为时间戳time1=$(date +%s -d '1990-01-01 01:
2013-06-26 11:25:16
495
原创 awk 使用重定向符>的问题。
awk 'BEGIN{i=1} /-----BEGIN/,/-----END/{print $0; print "########################################"i; print $0>i; if($0~/-----END CERTIFICATE-----/){print "matched " i; i++}}' ca-bundle.crt pr
2013-05-30 16:08:01
1126
原创 vim NERDTree cscope配置
find source_dir -name *.[ch] -o-name *.cpp > ./cscope.filescscope -kbqctags -RNERDTree 配置:下载nerdtree-master.zip解压缩,ll /root/NERDTree/nerdtree-mastertotal 24drwxr-xr-x. 2 root root 409
2013-03-20 16:22:29
754
转载 coredump文件栈破坏
分享两个GDB的小技巧:1, GDB失效时手工得到stack;2, GDB执行用户命令脚本;调试内存型服务程序的有时会遇到core dump或死锁问题,且gdb或者pstack都无法显示调用栈(call stack)。这是因为线程的调用栈被破坏了,而调用栈存放了函数的返回地址,gdb解析函数返回地址(根据地址查找符号表)失败,gdb也没有进行容错处理,只要有一处地址解析失败就无法展开调
2011-12-21 15:50:18
3124
转载 断点恢复执行时的设置
当用户结束分析希望恢复被调试程序执行时,调试器通过调试API通知调试子系统,这会导致系统内核的异常分发函数返回到异常处理例程,然后异常处理例程通过IRET/IRETD指令触发一个异常返回动作,使CPU恢复执行上下文,从发生异常的位置继续执行。注意,这时的程序指针是指向断点所在那条指令的,此时刚才的断点指令已经被替换成本来的指令,于是程序会从断点位置的原来指令继续执行。这里有一个问题,前面我们说
2011-11-25 13:57:53
1790
转载 内核调度器的演化
内核调度器的简单历史2.1 Linux2.4 的调度器Linux2.4.18 中使用的调度器采用基于优先级的设计,这个调度器和 Linus 在 1992 年发布的调度器没有大的区别。该调度器的 pick next 算法非常简单:对 runqueue 中所有进程的优先级进行依次进行比较,选择最高优先级的进程作为下一个被调度的进程。(Runqueue 是 Linux 内核中保存所有就绪
2011-11-11 11:06:30
592
1
转载 多线程应用中编写安全的信号处理函数
关于编写安全的信号处理函数主要有以下一些规则:信号处理函数尽量只执行简单的操作,譬如只是设置一个外部变量,其它复杂的操作留在信号处理函数之外执行;errno 是线程安全,即每个线程有自己的 errno,但不是异步信号安全。如果信号处理函数比较复杂,且调用了可能会改变 errno 值的库函数,必须考虑在信号处理函数开始时保存、结束的时候恢复被中断线程的 errno 值;信号处理函数只
2011-11-09 13:39:12
747
转载 About seq_file operations
内容简介本文主要讲述序列文件(seq_file)接口的内核实现,如何使用它将Linux内核里面常用的数据结构通过文件(主要关注proc文件)导出到用户空间,最后定义了一些宏以便于编程,减少重复代码。在分析序列文件接口实现的过程中,还连带涉及到一些应用陷阱和避免手段。序列文件接口UNIX的世界里,文件是最普通的概念,所以用文件来作为内核和用户空间传递数据的接口也是再普通不过的事情,并且这
2011-11-02 17:40:49
592
转载 C/C++位域(Bit-fields)操作的问题
前言很早想说说这个问题了,经常也会有很多公司拿位域出来考人,呵呵要真的想弄清楚还要一点点的分析。这里先看看网宿的一道笔试题目,这道题目我之前是复制网上的,结果不对,修改了一下,可以正确运行了,谢谢(imafish_i )提醒:view plain
2011-09-06 14:19:15
533
原创 32位整数按位反转算法分析
一. 有牛人设计的算法如下:unsignedint bit_reverse(unsignedint n){ n = ((n>> 1)& 0x55555555)| ((n 1)& 0xaaaaaaaa); n
2011-09-05 14:47:47
2103
转载 vim 查找
Vim查找操作" 搜索/joe/e : 设置光标到匹配"joe"的末尾/joe/e+1 : 设置光标到匹配"joe"的末尾再后移一位/joe/s-2 : 设置光标到匹配"joe“的开头再前移两位/^joe.*fred.*bill/ : 匹配以'j'开头且"
2011-09-05 10:35:53
2204
Multi-Threaded Libevent Server Example
2015-01-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人