五年前刚毕业,一转眼就过了五年。
回头想一想,变化还是蛮大的。对一些事情认识上发生的变化,对工作技能一点一点的逐渐了解。
最近几天一直在思考一个问题,以后的路怎么走。
这样说的主要目的,是因为偶然间听到新闻里说到,现在倾向于创业的人,往往都是年长一些的,对于大部分年轻人来说,他们更倾向于找工作。加之周围同事,一些所谓技术“大拿”的接触,确实心中有一种危机感和困惑。
困惑的主要原因在于,现在很多技能泛泛的人不也是在混着,靠着一些“聪明”的方式继续着,而一些人看着一身的手艺,继续在擅长的领域发扬光大,或者开始涉足较广的领域。同时周围还有这么一种言论:“活那么累干嘛,简单点不就好了吗?”
危机感的缘由更多是看到了,自身技能的匮乏,以及自身那些由于技能泛泛连换个工作的可能都很渺小,靠赖“赖”着不走过日子的,直到被老板一而再再而三的疯狂挤压价值的人。
由于想看看当前市场是个怎样的情况,所以在休息时间做了一个考察。
这些考察包含我当年去尝试过的地方,和没有尝试过的地方。其实印象最深的还是我当年尝试过的其中两家。
第一家是做某金融行业软件的,说实在这家公司在名声还是挺大,但口碑也有点不好。大约是三年前去尝试过,当时就觉得该司管理混乱,指高气昂。技术含量或许有一些,但也仅限于少部分内容;最近去考察,虽然给人的感受是管理混乱的场面有所缓解,但内涵和狂妄也越来越严重,并且产品口碑也越来越差。目前公司运作说不上好和坏,只能说我不了解,反正人口流动很大的地方。
另外一家是我五年前去面试的,该司当时是回国人士创办的,产品也属于一个新兴行业,所以在当时也算发展期,但就在当时让我印象最差的还是管理方面,拼命招人,拼命筛选,可见投入方面是如何的抠门。五年后,继续去考察,大部分人估计都走了,但唯独当年面试我的那位哥还在。不仅如此,五年后公司比以前更小了一些,而且也拿了一些政府扶持来维持经营的样子。当年的产品也不怎么看见了,而是改为作别的相关行业。
回头认真思考这两家公司,其实大家都有一个共性:不求上进!
大家都还活在自己的世界里,第一家因为自己的公司的背景或刚上上市,所以还混的过去。第二家连上市都错过了,主营也发生了变化,所以有点门厅冷落。
不仅如此,这两个公司内部的员工氛围也同样存在着:自大,狂妄,坐井观天等等。年纪轻的那群人还好说,年纪大的那群就真是祸害了,不知道啥时候就会把年轻人和公司带向歧途。
所以还是要抱着一定开放的心态去处理事情,懒一点或许没太多问题。但如果心态都不开放一点的话,那就太扯淡了。
希望我的下一个五年不要成为这样。
说一下有氧运动对心里产生的一些影响的理解。
— 生理变化 —
首先说一下跑步的生理反应,曾看到过一篇文章讲述,在跑步的过程中会缓慢的释放啡肽和多巴胺(网上说法不一,有些说缓慢,有些说一次性,有些说大量)。
而啡肽和多巴胺是神经递质,神经递质是用来传递神经中的电信号。当神经递质数量聚集到一定量时,神经就处于兴奋状态。
但由于啡肽和多巴胺作用的脑部区域(回路)并不相同,所以他们各自会对应着一种心理或者生理反应现象。
例如,啡肽会提高肌肉的兴奋,同时还会激活快乐方面的神经回路。而多巴胺则还会激活视觉、和想象有关的回路,这就是大家能感受到的所谓幸福或幻想。
在恋爱期的男女中,多巴胺的分泌会比普通人多出很多,这也是为什么恋爱中的男人会奋不顾身的原因之一。
— 心理变化 —
而在心理学中,有一种叫做习得和奖赏的理论。当在跑步的时候,由于多巴胺的分泌使人感到快乐,这其实就是一种奖赏;当这种行为持续一段时间以后,人就很可能会把这个行为变成一种习惯。其中主要原因之一,由于奖赏带来的一种新习惯的产生。
同样对于部分人可能在兴趣失落或者不悦的时候会采取跑步,因为他们知道跑步可能能够带来情绪的改变,其主要原因之一是习得的行为。
以上就是我对有氧运动在心理上的一些产生变化的理解,由于是初学者,可能存在大量的偏差或者误解。
这是一个开篇,最近正在看一些关于心理学的书,但并非是那些应用类或者实用类的心理学的书。
这样做的主要目的有这么几个:
1,建立自身对自身心里的一个认识和自我调节能力
2,建立较为正确的认知能力,而这个认知能力主要是用于识别和处理,他人行为的原因或者表象。
3,不看实用或者应用心理方面的书籍,主要是这类书籍中被作者掺入了很多作者安排好的内容。很难能够让自身得到一个较为全面的了解和认识,因此我看的书更多的是大学教材或原理类书籍,以此尽可能的减少作者中掺入的一些善意或者恶意的噪声。
有句古话说的好“用进废退”;这么多年过来,有些我所坚持的思维方式和方法,常常被人理解为“累”和“复杂”;实际上早在当初,我也走了不少弯路,确实把问题理解偏掉或者考虑复杂了,也曾怀疑过自己的行为是否值得!
但坚持了这么几年下来,我逐渐了解并习得一些自我调节、情绪感知和对事情预判断的能力,这种“甜头”是可意不可言的,显然我也希望在这方面加深一些了解。
毕竟还有一句话是这样的说的“EQ高的人能够把自身的IQ尽可能的发挥出来;而IQ高的人,未必能够把自身的IQ充分发挥出来”。可见心里活动对自身能力施展存在很大的影响。
例如一个IQ很高,EQ很低的人(称作:A)。由于IQ太高,这类人往往很容易被认为是“威胁”,因此如果遇到一个想要排挤这位高IQ的人士(称作:B)。B稍微一点激怒行为,就可以让A做出一些有损自身利益,而让B获利的行为。
这种例子在现实生活中不少见,尤其是在我们大天朝更常见,所以加强自身心理建设非常重要。这就是我要看心理学方面书籍的最主要原因之一,也是对上述1和2原因的一个解释。
年底了,各种鸟事都来了。同样也有一些日常生活中不愿意去面对的事情,都集中在过年的时候被想起来。
对于这种年底烦心事集中大爆发的情况,我更多的理解成思维上的“放松”引起的。由于平时工作生活的紧张,容不得我们对任何事情多想半刻,所以很多事情不是以草草了结而终,就是选择性无视来处理。年底了,思想一放松,人的思维就会产生各种漂浮,自然也会漫无目的的去考虑问题;一不小心就会碰到雷区。
最近因为工作和生活上的各种破事纠缠着,逐渐产生了逃避的想法 ;当然对于很多事情,综合考虑后终究还是要去面对的,所以就不得不去想办法解决它。不过,有些时候事异愿为。
在工作上,我希望我能够拥有一个靠得住的合作伙伴;生活上,我期望能够有一个共进退的伙伴。要求虽然简单,但又很困难。
之所以说简单,是因为字面意思很清楚了,其中并没有其他夹杂的意思。之所以说难,那是因为在我接触的人群中,能做到的人很少!
当然!在过去的2015里面我也试图去磨合周围的人,尽可能的朝着我所需要的环境去打磨。尽管最终的结果是大家有所改善,自身技能有所提升。
但过程太过于艰辛了,因为大家都是成年人,再说改变或者改善一个人是很难的;所以过程中的艰辛不用说了,都懂的!
如果说过程艰辛的话,我倒还能接受;但我所不能接受的,往往是过程中那些“出力不讨好”的事情。你帮别人自身技能或能力提高了,而对方仅仅只会简单的理解成:找茬,没事找事………
最近因为对方的这类理解或者怨气的越来越大,我逐渐也产生了反思!“这样做到底是否值得?”
工作这么几年了,也懂得什么叫做自身的改变与适应了。既然工作上我对队友的改变或改善困难,那不如直接降低我本人对周围队友的期望,并努力尝试去适应就好了。
其实也没有必要这么纠结的,实在不行还能采取换工作的做法。不过说起来容易,做起来未必。但我很庆幸,至少我能够想明白了。接下来就是调整心态和行动了!
这个标题起的不好,我知道。
其实我想说这样一个意思,表面看上乐观的人,也有不乐观的一面。表面看上去不乐观的人,也有乐观的一面。凡是不能总是去看表面,看问题要有一定深度才行。在具体展开说看问题要有深度之前,还是先说说我最近的一些状态。
最近因为一些事情烦心着,我尝试和多个人聊我的烦心事。当然了,这些人和我都没有任何利益关系的;通过这么聊,各类人就区分出来了。有认真负责帮你分析和解决问题的人,也有各种敷衍了事的,还有压根爱理不搭的。
除了部分原因帮你分析和解决问题的人,才会给出有意和真诚的建设性建议。再参考他们的建议之后,我再对自己和过往的一些事情进行回顾;其实发现还是蛮多的。
首先,表面上看我是一个乐观的人,各种玩笑,各种扯淡很能说。
其次,能够影响周围的人。凡是和我接触过的人,并且能够相对接触融洽的人;久而久之,多数人会因为我的一些做事方式、方法和口头禅所影响,能够看得到我身上的一些相似点。
再次,能理性考虑问题时,绝不感性处理。但有时候冲动起来的时候,考虑问题又过于感性。
以前曾有人评价我有亲和力,当时我对自己的看法很简单。有点亲和力,为人喜欢扯扯淡什么的,但除此以外一无是处。为什么会这么考虑?因为我只想一心在技术上有所造诣,然后完成一个很牛叉的程序或者系统。
但事实上,我对他人的还有一定的影响力。不管我和对方的职位关系如何,但却是在言行上对对方产生了一定的影响;表面上看我是一个乐观的人,其实内心存在一定的忧郁;一个十足彻头彻尾的矛盾之人。
通过最近比较烦一些事情的反思,让我在看人的方面又有了新的理解。看人除了凭经验,和人的特征以为,有时候可能还需要透过大家平时带着的面具,稍微深入的去了解一个人;这样才能较为全面的看一个人。
小时候常常困扰在同龄人之间打交道的问题上,总是不能很好的处理好和同学之间的关系。不是被别人耍着玩,就是作弄;然后一度抑郁。
之后后来就尝试着学听别人说的话,渐渐的听着听着就听出差别来。原来人和人打交道的时候,除了字面言语上的交流,还有很多情感和隐含意的交流。
要想分辨隐含意和情感,一方面需要根据当时交流的语境、交流双方的关系、经验等等。
小时候长辈也好,同辈人也好;都和我说过很多话,我往往是习惯性的记住,然后再根据现实中的经历去和这些话进行比较,事实上呢?这种做法其实是错的!
因为对方说出这句话时,作为接收方,我们并没有搞明白对方最初的含义和想法;另一个对方说出这句话时,这句话是不是就适合作为接收方的本人?也有可能是对方一种长期情感的发泄而已。
反思从小到大,我一直在两种极端上。不是认真听别人的话,就是过于强调需要自己去独立思考。如果用一句通俗的话来说我这样的做法话:听话的人和固执的人。
过于强调独立思考,往往容易排出对外界的注意,导致自己做出的决定或者言行比较片面。
过于认真听别人的话,那就完全抹杀了自己作为人的一个属性。
最近我在有意或者无意的在尝试一些,我本来没有做过任何认真考虑的事情。一方面是我单纯的想刺激一把,另一方面我想看看结果。比如,一个人走路20多公里回家会是什么样子的。
经历之后,发现无论是对走路这个事情的印象,还是对冬天的印象什么的,我都或多或少的发生了变化。有时候过于教条的强调自己的想法或者听话,还不如多想想如何平衡两者之间的关系,然后尽可能的少走弯路。
最近突发奇想,由于上下班坐公交时间太久,不如在手机里面存一点电影或者bbc的一些纪录片之类。
最近两周刚好看了几部电影,也不知道是不是巧合,都和自身工作、生活状态有关的电影:
《福尔摩斯先生 Mr. Holmes(2015)》、《少年班》、《煎饼侠》、《心花路放》
— 说说观后感 —
《福尔摩斯先生 Mr. Holmes(2015)》:
这部电影,我就觉得吧一句话:人独自的来到世上,人也是独自的离开。
人出生的时候,多数人是只有自己人,没有孪生兄妹的。当人辞世的时候,也有多数人是自己一个人离开的。本来就是独自一个人来和走的,有时候我们就要坦然接受独自或者孤独;不应该过多的去伤感和惆怅。
要耐得住寂寞,也要珍惜没有拥有“朋友”的时候。
《少年班》:
1,不要把自己做不到的事情过分强加到别人的头上
2,当有一个人愿意付出,并为你创造条件时,要能够识别出来,并珍惜。
3,团队合作与协作的重要性!一个团队就像一艘船和水手们,各司其责齐心协力,否则早晚会船会人完(不一定会亡)
4,把握好自己,不要被外界迷惑了,小心失去了正确的方向
5,人不努力等于废人,但并不是努力了就一定能出人头地。努力与才智需要结合。
《煎饼侠》:
1,人要有理想
2,要能够把理想坚持下去
3,既然要坚持下去,就不能太过于在意他人的蜚议
4,并不是所有的理想都能够达成,要有心理准备。
《心花路放》:
1,凡事不能操之过急,越急的事情越容易出事。
2,人空虚的时候,一定要能够把握好自己,要不然就要跟错人
3,不稳定的关系,终将会有破灭的一天。除非关系中的双方都在积极应对。
4,要学会放得下那些本来就不属于自己的
最近由于项目需要,需要解决在强交互中,音视频延时、同步问题。
1,了解了一下AAC编码的特点,通过查阅得知,一个AAC的压缩包是由1024个压缩前的PCM样本构成。换句话说,AAC对样本数的要求较高,带来的是AAC需要才待编码缓存中存储大量的样本,才能进行编码。如果按照44khz采样计算,1024个样本大约是1/44/1000*1000*1024=23ms;即,每个AAC包携带了23ms,如果不计算AAC数据包交付时隙的话,那么理想情况下,AAC编码器每次对外部输出数据的间隔是23ms,这23ms就是编码延时。
2,例如在普通的商业网络中(非专线,ADSL),用户到服务器之间的双向延时100ms(32个字节)。那么即可得出,样本的理想情况下的最大延迟在23ms+50ms=73ms。
3,实际上在目前绝大部分直播组网里面,基本可以简化成下图:
通过延时计算,可以得知,服务器得到的第一个音频样本其实已经是过时了的,并且已经过时了73ms。当服务器对数据再次转发给播放者时,延时将会被加大到123ms。这都还不考虑其他因素引起的延时问题。
4,由此可以得出,对AAC来说,本身就存在固有的23ms延时,加上网络的一个基准延时后,整体延时被放大到123ms,如果加上客户端、服务器之间的性能考虑,那延时或许可以达到200ms-300ms。
在双向通讯,即强交互中可以做如下初步估计:
a) 模型:A <—–> 服务器 <—–> B
b) 理想情况下,A说一句话,这句话经过了123ms后,B收到。
c) 不考虑解码延时等问题的情况下,B回复A说的这句话。再次经过123ms,A收到(此时A已经等待了大约123*2=246ms)。
经过简易的测试发现,在强交互中,人对延时的感知基本在300ms-500ms这个区间,按照个体素质不同,会存在一定的浮动;人对延迟的基本容忍,保持在3s左右。
所以可以得知,AAC方式的音频编码,在普通的商业互联网中进行直播交互是不适用的。
注意:由于本人没有对AAC-LD的相关资料进行查阅,只是看了通用的AAC资料,所以得出以上的判断。
疯狂加班快4个月,资本家坚持走国际一线的12小时6天的工作强度。
最近在反思一个加班这个事情的好与坏,在若干年前,我并不抵制加班,觉得加班还能给我带来一些收获。因为那时候我还有很多东西不懂,需要学习。
现在不同了,并不是我不需要学习了;而是在反思加班是不是成为一种疲劳战的无意义行为。
首先说一下引发,我这种想法的主要原因:
1,上班地点距离住处有20km+,每天往返需要不少于2小时
2,公司加班对我的吸引太小(没有工资、没有利益、也没有任何有意义的学习收获)
3,资本家纯粹为了压缩成本和排挤人员的一种手段而已。
先看一看现在一些所谓的“大公司”是如何通过诱人的“条件”来吸引员工加班:
1,年终奖(小命在人家手里,呵呵~~~当然还有其他类似的手段)
2,营造“轻松的”气氛(有免费咖啡、有免费晚餐、有娱乐或健身场所)
3,kpi(请参考某厂)
4,虚荣心(各种莫名其妙的头衔,让员工增加对公司的认同感)
5,引入人为的竞争机制
6,企业联盟,形成圈内加班文化
7,其他(各种培训,各种活动;这些是一种调节)
最近头发掉的有点多了,整个人状态也有点不对劲了,不再像之前那样学习和工作效率那么高了。除了一些工作上分工的变化(精力分散),还有就是疲劳战。
目前所待的一家公司是一个小公司,行业前景不错,但老板过于强势以及心心胸狭隘;目前公司虽然走在相对高速发展的路上,但未来很有可能要出大事。
老板为了节约成本,倒逼研发体系能够快速的完成他自己认为的一些所谓的“优秀需求”,提出了加班这个要求。
事实上,加班要加的有效也是一个很难的事情。出工不出力,出力不出正常的力,也是我所遇到的加班情况中比较常见的几种现象。
当宣布进行加班的那天开始,我就在想加班的时候要做点什么好呢?
1,写工作上的代码?
2,看书?
3,娱乐?
4,果断不加班?
首先我否决掉的是1,3,4。原因有几点,老板是做销售出生的人,不懂技术。而做销售出生的人,往往有一种特点,就是急功近利。
情商高的销售,能力强的销售,是解决问题;情商低的销售,能力低的销售,则是为了赚钱不顾一切!从老板强制加班,且不做任何铺垫或者有意义的准备工作上来看,老板应该属于比后者稍强,比前者较弱的一个人。
至于娱乐和不加班,基本不太可能,主要是公司没有提供任何娱乐场所,另外就是除了想跑里,还是只能乖乖的呆在这里熬时间!
因此,我就开始了我的看书计划;一周6天,拿5天来看书,但实际上只有4天在看书。
差不多也看了快半年的书,差不多也快看完2本900多页有一定难度的技术类书籍。直到今天开始,才发现看书效率正在下降,接受和学习能力正在逐渐变弱。
反思得知:
1,疲劳了
2,迷茫了
3,没有当初那么有激情了
4,吸引我的事情正在逐渐淡化了。
就从我本人的性格来看,实际上,只要是不是累的快不行,一般情况下1不会成为主要的问题。就目前来说,更多的还是4和2。所谓身体上的疼痛(腰背疼痛),主要是还是由于情绪所带来的放大或者突出而已。实际上, 现在的人谁身上没几个毛病?
所以今天特意抽个时间,出来反思一下,加班到底有没有用,要不要做出一些改变来。
今天把工程全部转换成了vs 2013,主要是通过vs2013下的一些动静态代码检查功能。转换成vs 2013以后,发现编译器的检查更加严格了。一些警告会被视为异常,例如:
OSVERSIONINFO sInfo;
sInfo.dwOSVersionInfoSize = sizeof(sInfo);
GetVersionEx(&sInfo);
这段代码在vs 2013默认语法检查规则中是编译无法通过的。
查看msdn对GetVersionEx的说明(https://msdn.microsoft.com/zh-cn/library/ms724451(v=vs.85).aspx)
[GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper APIs]
该api由于不安全,在windows 8.1中会有一组函数进行对其替代。同时,对stl和编译预处理的检查将开始更为严格。后续需要对windows 8.1的api和之前windows的api进行差异性了解。通过可得知vs 2013的设计就是为了操作系统而准备的,有意或无意的改变程序员的部分编程习惯。
代码段如下:
#ifdef TEST_FLAG
#define MACRO_TEST_1(x) OutputDebugString(x)
#else
#define MACRO_TEST_1
#endif
static TCHAR g_all[] = _T("test_for_macro\r\n");
TCHAR* test_for_macro()
{
OutputDebugString(_T("call test_for_macro\r\n"));
return g_all;
}
当 TEST_FLAG 被定义和未被定义时,将会出现运行结果。
其实这个是一个老生常谈的问题,关于编译器在对宏的处理情况。
如果堆栈数据空间地址被恶意或无意的修改,导致执行了不该执行或数据段的二进制值指令叫做溢出攻击的话;这类宏的情况,在某些情形下也属于宏攻击。
首先从进程角度去看,内部其实是由一个或者若干个线程组成。因此在理解进程频繁创建和关闭导致的开销问题,只需要理解一个单一线程的频繁创建和关闭即可。
CreateThread、TerminateThread
这两个函数一个用于创建线程,另一个用于关闭线程。
1,先说一下线程创建的过程。对于CreateThread来说,创建的均为用户态线程。尽管创建的是用户态线程,但对于函数被调用者来说,本身还是需要切换到内核态或等待内核态服务线程将线程创建起来。
仅从这一点去看,有了态切换。显然就存在各种开销。
2,在内核创建好线程以后,这个线程将会被纳入windows的线程调度中,同时该线程所占有的内存资源也会被纳入内存调度中。仅从这里去看,又可以看到两个调度器的任务增加,且内存资源在减小。
3,在线程退出后,内核需要对其内存进行回收。在回收过程中,需要对线程的堆栈等系统分配给的内存资源进行校验(退出时的crash生成也在这一步)。检查完成以后,又要将回收回来的内存插回到windows的堆栈管理器里面(不管是crt堆,还是win32堆或者系统堆,都要插回去)。在回插内存的时候,可能还会引发堆内存的合并和子堆往父堆进行归还的过程。
通过以上描述,基本可得知线程的创建和关闭的开销是相当大的事情。
如果再深入一点看的话,可能会更清楚一些。
由于在windows系统以后,系统会“虚拟”出一个system进程,该进程内部其实是一堆辅助线程(有时候创建IO句柄时,也会出现这个进程里面的线程数增加,或者做调试的时候也有可能会出现类似的现象)。
system里面的线程,主要是用于服务在不同IRQL和内核用户态之间。换句话说,相当于一个桥(个人猜测,不负责哈!)。
当一个线程要进行关闭时,该system里面的辅助线程(15级以上),会对线程回收工作进行处理。换句话说,如果一个线程自己是正常退出的,那么自己会抛一个系统请求给system,让system把自己的内存回收掉。这个过程又要走一堆windows服务程序(服务端口),从这一点上看可得知。
一个线程的关闭,势必会激活一个“紧急”任务的进行,且会涉及到一个较长的流程。应此无论是创建还是关闭线程,如果执行频度太过于高,显然是不行的。
首先看两张效果图(其中有一张是ps出来的,因为没有找到现有的素材)
(图A)
(图B)
再实时采集中,由于采集性能上的不足,会导致每一幅画面生成(模数过程、编码过程)会出现一定的延时。当数据生成时间较长的情况下,可能会出现画面被截断(或重影)的情况。
而在隔行和逐行中,分别为图A和图B。
因此在隔行扫描上,还需要考虑图像的平滑切换。
而对于隔行扫描出现的就是重影,需要对重影进行一定的抑制。
首先,我是一个完全的linux开发初学者,我仅仅在windows做开发,由于兴趣与工作的缘故碰到了通过已有的socket模型搭建好的网络库。下面就说说在windows下,我了解到socket模型(准确是标准socket模型,对于微软封装过的一些模型我不是很清楚)
1,普通阻塞是socket:
普通的socket模型,就是msdn中对socket api族介绍中最简单的那个例子。这种最简单,在执行效率上相对较低,在处理send/recv(sendto/recvfrom)时,函数是处于阻塞的。在简单环境,或者写一些简单的测试工具时,这是一种比较理想的用法。
2,同步 select模型
同步select模型,其实可以是理解为普通阻塞式sokcet的一个扩展,就是利用select来对socket句柄进行监听,避免由于调用send/recv(sendto/recvfrom)时出现阻塞。
3,异步select模型
异步select模型,可以看成是同步select的一种变化。即send/recv(sendto/recvfrom)函数不会阻塞,调用立即返回,并需要同时配合select函数一同使用。
4,IOCP
异步IO模型,使用上可以和异步select模型类比;但这并非标准socket模型。
然后接下来再说一下几个模型的差别:
1,普通socket、select模型,在调用send/recv(sendto/recvfrom)函数时,均会出现一次多余的内存拷贝。即,用户态传如一个buffer时,在转为交给协议栈之前,必须通过内存拷贝的方式,将数据复制到内核态的内存中。
2,windows上select集合最大值大约是64/128(有系统版本决定);换句话说一个调用select函数的线程,最大可监听64/128个socket句柄
*3,据网上各种文档介绍到,select是基于内核态线程轮询完成,具体不详,有待考证!
4,IOCP 和其他几者最大区别在于内存拷贝上,由于IOCP是通过共享内存(即内存映射)。在windows中内存映射属于一个特殊的内存管理器的管辖范围,他即不属于内核态,也不属于用户态内存,当对于内核态或用户态线程来说,只要通过调用内存映射函数,就可以直接访问这块内存(但得到的逻辑地址或许是不同的)。
由于在WSARecv/WSASend之类函数中,提交的均为共享内存,因此无需做任何内存拷贝。所以在IOCP上,性能要更好的多。同时本人的了解范畴也仅限于这一块,对于IOCP的事件投递过程并不是很清楚,但根据《软件调试》一书中对“windows系统调试/windows软件调试”设计的讲述来看,IOCP这种的实现应该是在内核态也同样创建了和用户态以之对应的内核服务线程。
接着再说说linux,刚刚看了一下epoll的介绍。
发现epoll是基于事件回调+内存映射来实现IO上的高效;同时这篇文章也还介绍了几个常用的socket模型在linux中的大概实现。通过这篇文章至少能够看出,linux和windows在对socket的实现上存在很大的相似。
可见linux和windows存在很多相似的地方,如果linux和windows互相对应着学,理解起来可能会快很多。
—– 似曾相似! ——–
早在很早以前,由于心理压力大,以及当时对心态的调整没有到位,常常会做一些奇奇怪怪的梦;心态的不稳定,常常会导致情绪波动不定。有一些是自身的,有一些是环境造成的。
不过好在经历了一段时间以后,逐渐学会了调整自己的心态;接着年龄的增长,以及阅历的变化,心态的波动正在趋于平稳。虽然有很多想法,但心态还算稳定,就算出现较大的波动,也能够及时的调整回来。
在当初心态不稳定的时候,有两个梦其实我比较在意的。这两个梦一个是关于我工作的,另一个则是关于我生活的。现在回过头去想一想,根据零零散散的记忆,感觉其实也未必是两个梦,或者说是一个梦被切成两个整体;这两个梦都是我自己对未来的一种假设。
其实这两个梦的本身就可以用几句话概括起来:
1,人大约会在什么时候买房
2,人会在什么时候成家
3,人会在什么时候,遇到什么样的关键人物
4,年老会怎么等等
在这个梦里,很多事情都被我潜意识中设想的很美好;而且始终体现了“好事多磨”的情况。实际上,我都一直怕这个梦能够变成真!毕竟人无完人,事情也没有完美的;我显然发现了我自己的这些“设想”中的问题,显然不愿意经历这些问题。但我记得有几句类似的话:
1,越害怕的事情,就越容易成真。
2,越在意的事情,越容易成真
其实我自己也很清楚,真因为我害怕成真,所以我就会刻意的去关注;潜意识中就会按着这种写好的剧本去执行,接着就成真了。于是呢,今天回过头去想想若干年前,确实有些事情,在当时是想都不敢想的,而且切实也有些事情变成也和当初那个梦的内容一模一样了。
这也就是我想说的“似曾相似”,确实有很多事情,让我们感觉到似曾相似,同样我这种过分刻意在乎一个“虚拟化”出来的事情,以至于潜意识中被推动着往这个方向去发展。
—- 无力改变 —-
我想说的无力改变,有两个意思:
1,正因为我刻意在乎梦中的一些事情,导致我的潜意识中存在这么一个情况,然后在一些决策和决定上,就会隐约的按照这个自编自导的“剧本”去进行,想改变都难。
2,如果从另外一个角度去看,当时我其实已经发现梦中一些有问题的地方,并且也已经存在一定的警惕,心中也明白如果刻意在意这个梦的话。势必会让自己按照这部“剧”走下去,不管相似度有多大,但影子总是能看到的。
当时也想就算按照这部“剧”走下去,也要把有问题的部分纠正过来。但事实上,很多地方都没有纠过来。
事后总结了一下,之所以没有纠正过来原因有这么几个:
1,没有经历过显然不知道那是有问题的
2,有些错误或者问题不是立即就会表现出来,而是需要一个量的积累
3,忽视了这个问题
这就是我说的无力改变,有时候想改变或者纠正一些事情,不是因为自己的懒惰,就是因为自己的无知,或缺乏一个仔细分析的行为。
后两者并非所有人都能够达到,但至少懒惰是能够一点一点改善的,所以后续还要避免懒惰这个问题的重复概率。
—- 总结 —-
随着心态的逐渐的趋稳,有些事情也在一点一点的调整中,后续还需要注重平时的积累,同时也要尽力多给自己一些思考问题的时间。
有时候,人败不是败在经验上,就是败在没有给自己留够思考的时间。