
学习、成长、感悟
文章平均质量分 69
cainiaohhf
这个作者很懒,什么都没留下…
展开
-
C/C++之感悟一二
经常看到有人问:学C++要不要学C,或者又有些人在争论哪个语言好。这边,我也有点感触,跟大家分享一下吧。最近看到一句话,挺有感触,大意是:许多C++程序员把C++当成是一种信仰。它很好的表达了我对C++的感觉。因为我喜欢C++。其实,一个程序员,因为兴趣喜欢某一门编程语言的时候,就是把他当成一种信仰的。觉得他是最好的。有种盲目的喜欢,盲目的觉得他好。当看到有人说他好时高兴,有人说他不好时不原创 2010-12-16 22:42:00 · 803 阅读 · 0 评论 -
关于C++访问控制
今天看了下书,看到类的“访问控制”,对其有了新的认识(才知道以前的认识是一知半解)。特此记录下。这里所讨论的东西的前提是:不包含“友元”。 类的访问控制一共有3种:public,protected,private。其中,public成员是公共的,就是说所有的都能访问;protected,有派生类和自己可以访问;private,只有自己可以访问。(访问操作,好像只有函数可以。)原创 2013-05-31 11:24:04 · 893 阅读 · 0 评论 -
mpq中hash表的一点理解
最近学习了hash表,还去网上找了些资料来看。网上比较推崇的一个hash运用就是mpq,暴雪公司的一个算法。具体请看下面链接: 十一、从头到尾彻底解析Hash表算法MPQ技术内幕insidemopaq之前,研究了这个hash用法,有点认识;今天,照着抄写了一边,发现了另外的一些认识,主要是针对下面的这个hash函数:下面这个函数是初始化hash表cryptTab原创 2014-03-10 19:42:50 · 2300 阅读 · 0 评论 -
面经——1,万得电话面试
虽然工作5年,但是面试经验缺少的很,zhaogong原创 2014-04-29 09:49:22 · 5141 阅读 · 0 评论 -
随心所“语”之 STL
自己是个程序员,用C++开发也有5年时间了。期间,对STLyinx原创 2014-08-09 17:06:31 · 1050 阅读 · 0 评论 -
signal学习代码实例(sigaction/signalfd)
#include //signalfd;#include //sigemptyset#include //exit;read;#include //#include inline void handle_error(const char *msg){ perror(msg); exit(EXIT_FAILURE);}void test_singal_pause(原创 2015-08-07 16:41:49 · 1188 阅读 · 0 评论 -
shared_ptr/unique_ptr一点体会
由于用muduo库,所以对shared_ptr有一定的了解;但是,对于unique_ptr就有些茫然了于是,了解了些相关资料,并且写了测试代码,对其有了一定的了解。 首先说明下,每一个pointer,都指向一个obj;每一个pointer,对该obj持有;一、unique_ptr unique_ptr,其实就是一个简单的指针,它实现的功能,仅仅就是在作用域内有效,超过作用域原创 2015-08-10 14:54:52 · 6691 阅读 · 0 评论 -
多线程锁的一点测试
C++11提供了原子操作atomic;而在一些代码中,也会经常看到利用原子操作来实现spinklock(pthread提供的spinklock似乎性能不如mutex)。于是,我就来试试用atomic来实现spinklock。测试,仅仅是测试lock/unlock。测试平台是windows和linux.测试结果,两种锁耗时完全一样;(另外,windows耗时大约是linux耗时的2倍)原创 2015-09-22 15:10:46 · 1378 阅读 · 1 评论 -
网络库性能测试
性能测试原创 2016-04-23 16:09:52 · 2850 阅读 · 1 评论 -
syslog写远端日志超时问题
背景描述:我们基于libuv开发了一个跨平台的底层库;其中,日志部分,用的是syslog,实际应用过程中是配置的romote; 需要将现有产品移植到基于uv的库。经过一段时间的调测,可以正常业务了。于是就上线了。问题描述:上线运行了1天多,突然发现有些人登陆失败、登陆不了;但是有些人却登陆正常。过了一段时间,直接发现在线玩家都无法正常登陆。重启之后,正常运行。但是过了一段实际,发现又无法正常登原创 2016-07-05 09:58:06 · 1732 阅读 · 0 评论 -
Linux定时器描述符(timerfd)shiy
最近,学习、研究Linux基于文件描述符的定时器应用。相关介绍N多,这里将碰到的问题,要注意的地方,说明下 这个主要有三个相关函数:1、timerfd_create(int clockid, int flags)说明:创建一个timer fd;1-1、clockid:可以是CLOCK_MONOTONIC或者CLOCK_REALTIME。说明:CLOCK_MONOTONIC是机原创 2015-08-06 14:53:54 · 1403 阅读 · 0 评论 -
traceroute示例程序学习原始套接字
最近学习原始套接字原创 2014-04-19 11:01:04 · 1573 阅读 · 0 评论 -
golang学习记录之Cgo
最近学习golang,学习到cgo章节。发现cgo还是有许多要注意的小细节,这里特别记录下。1、要用golang调用C代码,那么必须要`import "C"`,最好单独写一行,不要和其它的import写在一起,否则很可能报错。2、一旦用了c代码,那么cgo直接会编译、检查注释中的代码。所以,一层注释其实是看做C代码的。如果要用注释,至少要两层注释。(`// //cgo下面两层注释`)3原创 2016-11-23 10:58:19 · 1902 阅读 · 0 评论 -
APUE2错误记录
在14年5月份的时候,看APUE2的信号处理章节,看到“10.10 alarm和pause函数”的时候,其中有一个例子是“超时功能的read函数”;我当时试了试这个代码,但是发现,并没有超时功能,并且在chinaunix论坛上发了提问帖(链接:http://bbs.chinaunix.net/thread-4135617-1-1.html)。 具体代码如下: #inclu...原创 2018-09-26 14:21:46 · 264 阅读 · 0 评论 -
网络地址之字节序
之前,记录了下网络地址的认识,在结尾处,提到了ipv4地址+字节序问题,是很容易让人混乱的。所以,这里就来讨论下字节序。 其实,字节序是个单独的理论。本身来说,这方面的介绍是“数不甚数”,基本结构就是——介绍下什么是“字节序”,然后告诉下你“什么两种字节序分别是什么样子的”。然后,我就差不多了然了;然后,过两天我又差不多“混乱了”。我网上看到过一篇文章,讲出了让人混乱的根源(后续...原创 2018-09-26 14:24:01 · 278 阅读 · 0 评论 -
最近学习计划
今天,阿里电话面试了,很失败。但是,好歹知道学什么了,所以,快点记录下。 1、tcp协议,一定要熟悉。一开始就问了,而且后续问项目相关问题的时候,会关联到tcp协议相关问题。 2、自己做过的项目。一定要能够说明白,你的项目流程是什么。这是最基本的。 由于我面的是无线事业部,所以对协议要求比较高。 另外,在网上的淘宝“面经”,许多时候是需要对数据结构熟悉的。原创 2013-11-15 11:09:18 · 1271 阅读 · 0 评论 -
随心所“语”之多线程——谈谈我多线程的认识
现在,只要是高级编程语言,一般都支持多线程;只要公司面试,都会面试多线程。 最近,我也学习了点多线程,对其也有了点认识,这里也记录下。由于是自己的理解、总结(当然,是依据就是书本、前辈的经验),所以肯定会存在各种认识不到位,希望大家不吝赐教。再直接点:我就是犯贱、找喷!!!下面开始: 多线程,我觉得就是并行,并行的一种。多进程,也算并行。那么,多线程,对于多进程的好处在哪里呢?原创 2014-01-11 12:32:16 · 1494 阅读 · 0 评论 -
随心所“语”之huffman编码
huffman编码、压缩,曾经写过一次,感觉很痛苦;最近,学习数据结构,又试了一次,感觉好多了。这里写下,总结下。 huffman编码、压缩,我觉得主要两件事情:1、对字符生成对应的huffman编码;2、对数据进行huffman压缩。这些书本、网络介绍的太多了(比如:http://coolshell.cn/articles/7459.html),而且也很容易理解,我这里简单的讲下:将要原创 2013-12-06 20:06:38 · 1135 阅读 · 0 评论 -
fd_set的一些认识
这两天,突然想写一个与平台无关的socket(仅仅是windows和linux平台)。查资料,敲代码,测试,修改。。。如此不断反复,搞了2-3天了。在此期间,发现fd_set在windows和linux平台下面的实现是不同的。特此记录下。在win下面,实现是(VS2005):typedef struct fd_set { u_int fd_count;原创 2012-03-02 10:38:43 · 8464 阅读 · 2 评论 -
话说C++之 全局,静态
今天写代码,链接的时候碰上了个问题:“fatal error LNK1169: 找到一个或多个多重定义的符号”。(环境是VS 2005) 查了资料,大概知道了我错误的原因。 先说下我的代码文件: a.h中定义了函数void f(){} b.h中include "a.h"; main.cpp中include "b.h",b.cpp也include "原创 2012-03-09 11:34:52 · 721 阅读 · 0 评论 -
vim 用lookupfile插件报错E117
我碰到来E117这个错误,现在解决了。原因来,我这些插件是用root用户装到,放在/etc下面到,插件*.vim也是只有root用户有可读权限,其他用户都是没权限(如下)-r–r–r– 1 root root 51932 2009-09-16 10:25 genutils.vim-r-x—— 1 root root 16556 2007-08-25 09:33 lookupfile.v原创 2012-03-14 20:12:43 · 1161 阅读 · 0 评论 -
gvim+插件开发,体验
linux环境下,进行软件开发,还是比较麻烦的事情,至少相对于之前是windows环境开发的人来说是的。这个是共识。 但是,由于各种原因(我是因为不想用盗版软件了),转linux下开发。而linux下开发,首先要解决的问题就是 代码编辑。只要网上找下,一般linux下开发,有许多推荐,有vi/vim(包括gvim),emacs,gedit等等。而我,拿选择的是vim(gvim)。因为我之原创 2012-05-13 11:47:53 · 1449 阅读 · 0 评论 -
隐式声明与内建函数 xxx 不兼容
今天试着用了gcc编译c文件,发现了这个告警:隐式声明与内建函数 xxx 不兼容。上网查了资料,发现也要朋友碰到了类似的错误(例如:http://topic.youkuaiyun.com/u/20071231/13/9a8d52cf-1c1d-4e3c-9255-dbd4c26460f1.html)。大概情况就是说头文件包含有问题。 我也试了下,包含了头文件,发现问题就解决了。(我的报错函数原创 2012-06-12 14:57:51 · 3439 阅读 · 0 评论 -
性能问题的一点认识
关于程序慢,性能不足的一点认识:1、代码是不是有逻辑有问题,写了个死循环在哪里?这个会导致进程、线程直接挂在哪里。2、代码逻辑没问题,但是可能代码中某些执行太慢,比如查询数据库,数据量很大,sql语句又恨复杂,这个也会导致程序的进程、线程卡在那里。具体方法:查看进程信息(AIX--procstack; linux--gstack),可以查看进程正在做什么,多次记录之后,经常出现的代原创 2012-07-04 15:45:14 · 850 阅读 · 1 评论 -
怎么才能长大?
这两天,我用指针函数了,虽然最终没用上(方案否决了),但是,至少用过指针函数了。我这里不是来讲解指针函数的,我也仅仅是个new bird。 我只是想到了个问题:我们许多的时候,看过了,相关知识点知道了,但是还是不会!怎么才能会?最终建议就是:敲代码。是的,我也这么认为的。我很是赞同。但是,我为什么没有去做?周围的同事看C++ primer,我跟他说:多敲哦,否则没用,记不住。但是,我自己原创 2013-01-24 17:47:42 · 557 阅读 · 0 评论 -
对异常的一些体会、认识
异常,是什么?这个问题困扰我很久了。最近,用过几次异常,对异常也有了点认识、体会。这些都是我个人体会,不知道对不对,希望能探讨下,指点下,谢过。 书上经常说的一点是,C++相对于C而言,多了异常处理机制。那么,异常究竟是什么?我觉得,异常就是在处理的时候发生了错误,然后通过异常告知上层调用函数。而相对于C而言,只有错误处理:当碰上错误的时候,会设置一个错误码,而每一个错误码对应特原创 2012-02-24 14:00:17 · 999 阅读 · 3 评论 -
C++箭头操作符重载(记录下,备忘)
最近由于工作,学习了下箭头操作符,好复杂的说,过了没几天就忘了,又学了一遍。同时决定,这里记录下,备忘!(这里的内容,参考了C++primer ,加上了些我自己的整理)箭头操作符,一般都有左右两部分:a->b;(其中,b可以是函数或者成员;)如何开始:由a开始,分下面两种情况1、a是指针,那么就是我们熟悉的,指向我们a类型的成员数据或函数“b”;到这里,就结束了!2、a是对原创 2013-02-23 23:37:04 · 1571 阅读 · 0 评论 -
随心所语之“速战速决”
天天跟代码、软件打交道,有的时候,觉得这个不好,那么不行,所以偶尔也会蹦个自己想法出来,并且想着方案、设计什么的,试着把这个想法实现——简单来说,就是想自己写段代码、写个软件。 我也有过想法,有些也试着去实现过。有点感触,我觉得其中最重要的一条就是“速战速决”。 一般,有个想法,都会很兴奋的——因为自己会觉得新颖,觉得创新。然后,在细想过程中,会发现一些问题。经过这些问题的锤炼原创 2013-05-29 10:18:07 · 808 阅读 · 0 评论 -
随心所语 之 计算机专业与linux
曾经,跟我同学、同事聊天的时候,下过这么个论断:一个学校计算机专业如何,看下机房用的操作系统就差不多了。今天,就来聊下这句话。 当然,这句话是有很大的片面性的。但是,如果一个学校机房,仅仅只有windows操作系统,没有其他系统,那么,这个学校的计算机肯定不会好的。其实吧,我想表达的是,linux(还有unix,我这里想表达的是类unix系统)对计算机专业的学生很重要。 举个例原创 2013-05-29 10:54:21 · 772 阅读 · 0 评论 -
网络地址的认识
来来回回,反反复复,多次接触到网络地址(包括MAC地址,IP地址)。但是,却是云里雾里,不是很了解、明白,感觉就是在飘着,不踏实。 也就昨天,突然就“灵光一现”,感觉好像找到了“本质”,于是,就有了脚踏实地的感觉——踏实。(仅仅是个人浅见) 计算机中的网络编址,其实就是用一个N个字节来标示(MAC是6个字节,IP是4个字节,IPV6是128/8=16个字节)。为了可读性,所以呢原创 2013-07-18 15:56:38 · 798 阅读 · 0 评论 -
随心所语之“读书”
计算机科学与技术毕业,干C++开发4年,但是,发现好多东西、甚至是相关的东西都不会、不懂,于是,就需要学习,需要读书。也许,这就是所谓的学无止境。 我买的书,有30+ 本,但是看完的,却是寥寥无几,为什么呢?简单一个词:没有恒心。但是,为什么会没有恒心呢?这里,我有点没“恒心”的心得,希望纠正这些之后,可以有恒心。 读书,如果看到不懂的、弄不明白的,那么,就会被打击,导致看不下原创 2013-11-22 22:41:10 · 896 阅读 · 0 评论 -
随心所“语”之“做”与“想”
经常,活听到somebody说,写代码,先想好了再写。如果边想边写的话,经常性会写返工代码:写着写着,发现不对了,那么就又得回头重写。 对此,我的态度是不可置否。因为,我写过一些东西,发现不清楚、不了解的情况下,根本不知道需要什么,那么就没法想好了再写。必须是写着,看看效果,然后再决定怎么做。 但是,就是因为这样,导致我写代码越来越想当然,养成了这个不好的习惯。特别是逻辑比较复原创 2013-11-24 11:41:11 · 869 阅读 · 0 评论 -
严蔚敏-数据结构-递归算法总结
在看严蔚敏的数据结构视频,在32课时的时候,对递归算法进行了总结。在网上没找到对应的资料。而严蔚敏老师总结的又很不错,所以觉得有必要这里记录下(不是完全照搬,详细可以去找对应的视频)。一共有5点。 1、递归特性,一般都是可以分解成相同的小问题,同时解又可以归并。注意:递归,一定有个结束的时候(即要关注结束条件);还有注意参数的对应关系。 2、递归的实现,用的是“栈”。所以,递归原创 2013-12-19 20:18:38 · 4066 阅读 · 0 评论 -
C++11——内存模型
[TOC]# 零、 前言   C++11早就来了,各种特性,其中影响最大的一个(我个人觉得)是多线程。 早早的去接触了线程相关的一些特性。而其中的一个子特性就是原子操作。而想要深刻理解原子操作,则必须要深刻认识`C++内存模型`。而前前后后18遍,都是以“战败”告终——都是囫囵吞枣,不得其法。 最近看`线性一致性`,突然有想起了这个“硬茬”...原创 2018-10-08 18:37:41 · 915 阅读 · 0 评论