复杂系统真相——软件篇

最近国内很不巧,赶上了新型冠状病毒SARS-Cov-2大爆发,也算是得益于此我获得了自打从英国回国入职后久违的真正意义上的小长假。当然,按照国内科技私企的特点免不了之后会做出让我问候他家祖先的弥补性措施来。不多扯题外话,主要就复杂的系统谈一谈我的个人浅见。

亘古至今,从旧石器时代远古人类的群居生活到新石器时代晚期部落的建立再到现代信息化的社会,人造复杂系统经历了至少成千上万年的演化在生活中已无法离开、无处不在:

  • 大城市本身
  • 交通网络
  • 通讯系统
  • 大飞机、航空母舰等大型单体机械设备
  • 社会公务系统等

除上述的不完整的例子外,还有更神奇的数十亿年演化的自然体系:

  • 地球生态系统
  • 行星系统等

我不是研究自然科学的专家,在此也不谈系统设计(其实系统设计更值得玩味),主要就我相对比较熟悉的复杂软件系统给出一点判断和理解。直到撰文的此刻,再有两个月我工龄将满3年,在2家公司打工,先后经手了5个项目。姑且不论5个商业性质的项目和50个是否会有本质性的区别,一些很容易发现的规律还是大差不差。

Read More

工作3年会遇到什么事

大年初一,起草一篇总结性质的博文,太久没有写类似的文章了,感觉提笔忘语。这篇文章是想记录一下我从2017年工作至今的工作感想的,严格说到4月份才满3年,不过四舍五入也就算了。3年对于一名程序员来讲刚刚摆脱了菜鸟,是步入资深前的中间状态,还是比较资浅的,有代码总量积累的问题(到不是说一定要代码多,基本量要有保证),有遇到的情况是否充足的问题,还有各种与工程本身没太大关系的事情。因为换过一次工作,先后两个工作都有相当涉密的成分,所以技术细节不便多讲。主要是说说我自己的一些流水账吧。

Read More

工作3年会遇到什么技术

工程师与程序录入员的区别就是工程师不仅仅只做编码工作。当然编码是最基础的,除此外还有诸如部署、Support、解决方案提供等「杂活」。曾经我觉得除了编码都是不务正业浪费时间,现在我开始慢慢的去改变这一观点并慢慢去做好很多细节。举个例子,我刚来工作的时候,连Eclipse也用不好,毕竟学生时代用Vim什么的就足够了。

我在刚刚工作时一直希望能够得到一篇弥补象牙塔与真正工业界之间GAP的指导,奈何都不是我特别需要的,所以这里撰文一篇,记录我自己的一些技术所需。因为业务涉密,所以不列举具体业务内容。

Read More

图上的动态规划

题目描述

陶陶假期的时候独自去天津玩,出发前他想制定一个旅行计划。假设天津有N个景点,陶陶给每个景点定义了一个开心值Si,也就是说当他游玩这个景点后他的总开心值会加Si,同时,游玩第i个景点会花费Ci的时间。由于没有基友陪,所以他想在限定的时间T内,从起始点S,有选择的游览一些景点,最后到达终点E。当然他想让这次旅行所得的开心值最大。

Read More

斜率优化动态规划

题目描述

在一条直线上有n处地方,从左到右依次编号为1, 2, …, n,每处地方都有一定量的煤,每处地方的单位量煤运送单位距离都需要一定的费用,例如在1处有数量为a的煤,单位量的煤运送单位距离的费用是b,那么把这么多煤一共运送c的距离所需要的费用为abc。现在需要把这n处地方的煤送往加工中心处理,为了使得路径单一,所有地方的煤只能向右边(编号较大的地方的方向)运送,已知第n处的地方已经存在了一个加工中心。为了减少煤运送的费用,在这条路径上最多可以添加k个加工中心,使得总运费最少。问最小的运费是多少?(CEOI 2004改编)

Read More

C++ STL中平衡树在算法题目的应用

题目描述•其一

给定一个长度为n的数组s,数组s的子串s[i,j]表示s[i],s[i+1],s[i+2]……s[j]。求最大长度的子串,该子串必须满足:m1<=max(s[i],s[i+1]……s[j])-min(s[i],s[i+1]……s[j])<=m2。如果最大长度的子串有多个,请找出子串和最大的那个。对于子串[i,j],子串和指的是sum(s)=s[i]+s[i+1]+s[i+2]+……s[j],子串长度指的是length=j-i+1。如果没有子串满足,请输出”0 0”。

Read More

我的故事——创建小组篇

一组织小伙伴们一同玩耍的带头者。

一第一次创建小组起始于小学。那时的数学老师鼓励我们志同道合的朋友在一起学习进步。我以学习数学、计算机为目的拉进来很多人。有点像组阁,还为每个人安插了头衔。时至今日,我连自己的头衔都忘了,却依稀记得那时一位数学很好的同学被安排为网络管理员,有一回我去图书大厦还碰到他买关于网管的书籍:)

Read More