宝鸡之行
这次去宝鸡,算是年初的想法,那时候在家刷老电视剧看,《真情年代》,《岁月》,《雍正王朝》,《大明王朝1566 》,《大宅门》,《我们结婚吧》,《走向共和》这种非常老的电视剧,其中《龙年档案》算是我一口气刷完,整整一天半晚。这部03年上映的电视剧,剧中的天州,取景地便是宝鸡和青岛。而其中遍地小煤窑,就像当年大同煤矿和周边小煤窑一样,拖欠教师工资,各个地方搞建设,但是不免地头蛇关系户,这些或多或少可能也是大多数资源型城市甚至是大多数三四线城市在那个时代的缩影。
同样宝鸡,大同,青岛冥冥之中有太多相似之处,属于各自省第二大城市,陕C,晋B,鲁B副省级城市,而宝鸡和大同都曾有一段金色的工业资源型城市,都有着非常鲜明的文化和饮食特色,这一点是非常重要的,晋北以大同为代表的更多是辽金文化。去巴盟,乌盟,呼市会发现方言,文化体系惊人一致。同样宝鸡算是秦的龙兴之地。
每次看着秦岭这座大山,有明修栈道暗渡陈仓,楚汉相争,兔死狗烹的故事,却只是历史的一笔。几千年过去了,青山依旧在。
所以二十年过去了,天州是怎么样的,我想象这他的样子,宝鸡联盟大桥和大同南环桥的区别在哪,宝鸡人民公园和大同儿童公园有多大区别 ...
漫看英国
漫看英国英国的主要民族:凯尔特人,罗马人,日耳曼人,英格兰人主要为盎格鲁-撒克逊 ,而爱尔兰,苏格兰,威尔士主要为凯尔特人
阿尔弗雷德:维京人,第一次统一英王国
卡努特:英国,丹麦,挪威的国王,维纳亚帝国,统治英国。丹麦对英国的影响很大,《哈姆雷特》以丹麦为舞台。
诺曼底公爵:1066年,占领英国,名义上为法王的臣子
-英国血统为维京人,单融入法国-
拉丁文明两次入侵
第一次,公元前55年凯撒
第二次,威廉一世
金雀花王朝金雀花王朝(法国又称金茹王朝)替诺曼底王朝。而诺曼底的归属问题,是英法百年战争的一个重要原因。
若弗鲁瓦与亨利一世的女儿、神圣罗马帝国皇帝亨利五世的遗孀马蒂尔达(德寡妇)成婚。1154年,斯蒂芬去世,亨利继位,是为英王亨利二世。
亨利二世,爱上路易七世王后埃莉诺(离婚后),获得法国南部土地,统一英格兰。
遭到儿子狮心王理查一世(天国王朝里最后结尾远征,个人经历算传奇,大部分时间不在英国)勾结法国腓力二世叛乱。最终中箭身亡,弟弟约翰继位。
1204年,法国占领诺曼底,苏格兰叛乱,约翰亲征失败,1215年,签署《大宪章》,限制了国王权利。是英国日后,国王与贵族拉锯的开始, ...
呼和浩特之行
今年这个冬天太寒冷漫长了。我对刚刚下过雪的呼和浩特已有了苦寒之地的预设。火车进入内蒙古,那些站台基本都都是汉文加蒙文,提前在手机上下载了呼和浩特地铁单独的APP,博物馆和将军衙署都是都在一号沿线。但要注意周一是闭馆时间。
晚上到达之后,先去万达转了一圈,随便吃个麦当劳填一下肚子,这点看来,全国各地都一样。而我的旅程目的之一,就是去找那不同之处,那亲历亲知的东西。地铁和沿路的商店,基本都是汉文加蒙文,民族工作的标语也随处可见,去万达路上正好路过一个航天院所。
这次只带了一个包,一个50 1.8的镜头,一本书《旧制度与大革命》,吃完麦回到酒店,一开包,发现没有带充电器,然后还是坚持了两天的旅程。
第二天一早吃了烧麦,其实这玩意我并不新鲜,甚至说经常吃,想着这里有什么特色,实际上大差不差。吃完饭,直奔内蒙古博物馆,第一个馆从地理上来认识内蒙古,整体还是跨越比较广,从东北到甘肃,管理难度并不小,鄂伦春族单独一个馆,最东边,和最西边,虽同是内蒙古,那明显还是有所不同。之后航天馆,和昨天晚上路过的航天院相呼应了。
为了支援中国第一个陆上综合导弹试验靶场的筹建,额济纳旗人民把最好的 ...
《权力论》-罗素-读后感
被罗素的广博的学识和深刻而全面的思考所折服。尤其是历史,其中对于中国历史和现状的理解,对于世界历史的广博,更让我佩服的五体投地。
在读之前,我对权力这个概念是模糊,静态的概念。
对权力,书中罗素从个人,到社会,到各个,产生,使用,都作了具体的阐释。
一些句子
对权威的服从来源于对未来的恐惧
“伟大的领袖都是有非凡的自信心,这种自信心不仅呈现在外表上,而且深入到潜在的意识中”
“人生既然是人的意志力与不可控制的客观事实两者间不断的相互作用”
“就权力的心理学来说:我们知道恐惧,愤怒以及各种猛烈的集体激动情绪往往使人们盲从一个领袖”
“战争迫使懦夫追求一个领袖,并使社会上胆大之徒结成一伙”
“教育应该规划成能够抵消未受教育人生来就有的轻信和怀疑:前者是信任没有理由的强调言论,后者是对于不曾被强调的言论,即使有十足的理由页不相信”
“毫无疑问,对于民主国家的公民来说,几乎没有什么比从读报中找出事实真相的本领更为有用的了”
平遥之行
平遥古城下午和晚上去了两次,晚上和白天的感觉不一样,虽然朦胧小雨,但是古城人还是很多。
仿古街去了很多,但是像平遥这种古城第一次去。古城的感觉确实是仿古街无法仿出来的。
古城是可以免费自由行走的,具体古城内的是通票,需要通票,建议第一天先逛一逛古城,第二天再买通票细看每个景点。双林寺,镇国寺是单独卖票。
有些地方去了之后还想去第二遍,希望下次再来不是single boy。
平遥推光漆器店老板,讲了一个故事,有点老套,但是我很喜欢。老板说,有个人十年前来她家犹豫有没有买,没有买,过了十年之后再来毫不犹豫地买了。
平遥古城内晚上好多酒吧从外面开起来很有氛围,不少游客驻足留念,然而我不胜酒力,自然也没有进去的欲望。
小镇清风明月细雨
[{"url":"/images/pinyao/DSC02083.jpg","alt":""},{"url":"/images/pinyao/DSC02058.jpg","alt":""},{"url":"/images/pinyao/DSC02082.jpg","alt":""}]
Load More
Linux存储栈(二)
Linux存储栈(二)对磁盘的I/O操作是一个耗时的操作,对于这部分时间的优化,有以下两个方面。
批量读取,以块的方式,批量读取将分摊到每一部分的数据的时间就变少。
预先处理,将磁盘的数据缓存到内存中,这样就把对磁盘的访问变为对物理内存的访问。
Page Cache首先明确页高速缓存是一种软件的机制,只是将内存的一部分逻辑上化为缓存区,其内容对应磁盘上的物理块,因此其大小可以动态的调整。
读策略当内核开始一个read()操作,首先会检查数据是否在页高速缓存中,如果在,直接从内存中读取,称为缓存命中,否则就要去磁盘读取文件,之后再将其放入页缓存。(过程类似于TLB存放页表,但TLB是一个实际的硬件,操作系统产生实际的页表项,并放入更新TLB)。
写策略讨论写策略是在讨论
是否在内存缓存修改,如果不缓存,那么不存在同步问题,一旦更新那么就清空缓存,效率低
同步缓存,在内存中的修改,在什么时间点同步到硬盘
内存修改,立即更新,写穿(write through),这样不考虑不一致的失效问题,但是可以对磁盘的写入频繁,相应带来效率上的问题。
回写,是一种lazy的策略,先标记不更 ...
Linux存储栈(一)
Linux存储栈(一)系统调用这里推荐《Linux系统编程》,里面有非常具体的参数介绍和注意事项。
最常用的有以下几个。
write,open,close
open字面意思为打开文件,文件加载到内存中以文件描述符号的形式存在,通过文件描述符这个中间人完成所有对文件的操作,文件描述符在内存中代表文件,通过操作文件描述符间接操作文件。
malloc,mmap
malloc用来进行用户空间的内存申请。mmap可以将文件从offset的位置开始长度为length的一个块映射到内存区域,程序可以通过访问内存的方式访问文件。因为他们都建立了内存的实际映射,用户空间的地址都是虚拟地址,虚拟地址和物理地址的转换的时间不可避免,但与read/write相比,使用mmap的方式对文件进行访问,带来的一个显著好处就是可以减少一次用户空间到内核空间的复制,在某些场景下,如访问音频、视频等大文件,可以带来性能的提升。
文件系统Linux中文件的概念并不局限于普通的磁盘文件,而是指由字节序列构成的信息载体,I/O设备、socket等也被包括在内。因为有了文件的存在,所以需要衍生出文件系统去进行 ...
安卓启动流程—bootloader
安卓启动流程—bootloder从上电的那一刻,到正常运行Android系统,这个开机过程,粗略的分为3个阶段
bootloader阶段 –> kernel阶段 –> Android阶段
kernel 可以理解为一个特别的Linux,里面大多流程是通用的,项目结束我们也要完成开源释放
Android 同样是通用的流程,是Google释放,厂商使用,流程上不同平台并无差异
所以我们这里讨论的启动流程,更多的是指bootloader阶段,这个阶段是和平台强相关,强绑定的(平台可以狭义的理解为高通和MTK),可以说是严重依赖硬件实现,
关于bootloader
从冷冰冰的硬件,到运行各种复杂的程序,完成从冷冰冰的硬件到可以抽象为内存,存储,cache,CPU这些计算,存储能力,可以说归功于bootloader,这个过程像极了马克思所说的”一个惊险的跳跃”。大多数基于高通基线不恰当的配置都会导致dump。
作为成熟且商用的平台,肯定不是能用就行。能用就行的主线是资源和能力的获取和加载。而成熟商用这条线,安全就是很好的线索,它对于资源能力的释放和加载并无作用,甚至会让流程看起来复 ...
Linux虚拟网络
Linux 虚拟网络传统的物理网络,每一个物理Server都会有一个或多个物理网卡(NIC),这些NIC被连接在物理交换设备上。而虚拟化技术引入,虚拟机的网络功能可以由虚拟网卡(vNIC)提供,Hypervisor为每个虚拟机创建一个或多个(vNIC),同时Switch也被虚拟化为虚拟交换机(vSwitch)。
一个虚拟的二层网络主要完成NIC和交换设备的虚拟。
常用网络设备的虚拟化如下
TAP/TUN设备TAP/TUN是Linux内核实现的一对虚拟网络设备,TAP工作在二层,TUN工作在三层。数据包的发送和接受都是通过TAP/TUN。
基于TAP驱动,可以实现虚拟网卡功能,每个vNIC和Hypervisor中的一个TAP设备相连,每当一个TAP设备创建,Linux设备目录就会生成一个与之对应的字符设备文件,用户空间可以像打开普通文件一样对这个文件进行读写。可以直接使用read/write系统调用。
Linux Bridge网桥是工作在二层的虚拟网络设备,类似于物理的交换机,Bridge有多个端口,数据可以从多个端口进入,也可以根据不同的MAC地 ...
存储性能软件加速库&SPDK
存储性能软件加速库&SPDKSPDK是由英特尔发起的,用于加速NVMe SSD作为后端存储使用的应用软件加速库。这个软件库的核心是用户态、异步、轮询方式的NVMe驱动。相比内核的NVMe驱动,SPDK可以大幅降低NVMe command的延迟,提高单CPU核的IOps,形成一套高性价比的解决方案,如SPDK的vhost解决方案可以被应用到HCI中加速虚拟机的NVMe I/O。
把内核驱动放到用户态,导致需要在用户态实施一套基于用户态软件驱动的完整I/O栈。
SPDK NVMe驱动SPDK的核心组件之一就是用户态NVMe驱动,固态硬盘产品FlashSSD已经实现了用NVMe取代AHCI(对传统硬盘效果好),NVMe SSD是一个通用的PCI设备。
用户态驱动用户态驱动节省了用户态和内核态的上下文切换开销,和系统调用的开销。而对固态硬盘设备访问使用UIO(Userspace IO)或VFIO(Virtual Funciton I/O)
UIOUIO框架是Linux提供,实现用户态设备驱动,主要需要解决以下两个问题
访问设备的内存,通过映射物理设备内存 ...