首页 > 编程语言 >一个程序员的编年史

一个程序员的编年史

时间:2024-04-06 11:15:50浏览次数:26  
标签:项目 一个 系统 然后 程序员 编年史 老板 我们 公司

00-前言


诗人问:“你见到过凌晨四点钟的太阳吗?”
程序员:“见到过啊,那时候我通常刚下班。怎么了?”
诗人无言以对。
       我做软件开发已经15年了,从小鲁到鲁工,到鲁经理,再到鲁总监。有些公司,做着做着就没了;有些项目,做着做着就黄了;有些团队,做着做着就散了。社会的浪潮汹涌澎湃,我们都是浪花中的一粒水珠,随着这个大潮起起伏伏。

01一行代码五万元
       2007年,我在太皓电子担任.net工程师,公司在张江软件园,老板是一个留美归国的博士。那时候我们开发了一个叫芝麻网的远程教育系统,它无须专用的教室录制,只需要在普通教室增加一点设备,就能完成课件的录制,将线下课程直接拓展到线上。

       需要增加的设备,是一个带支架的摄像头,一个挂在老师身上的无线话筒,一个套在笔上的发射器和一个装在白板边缘的接收器。当白板笔在白板上写字的时候,发射器发出信号,记录下的白板笔的位置,接收器收到后,将数据发送给应用软件,软件就可以将笔划还原出来。

       分为三个部分,我做的是一个.net的管理平台,在上面可以创建网校,开通课程,上传课件。还有一个c++的录制工具和一个Flex的播放器,分别包给了一个自由程序员和一个软件开发公司。到了约定期限,平台和录制工具按时完成,播放器出了延误。于是,我每天带着电脑,到乙方所在公司监工。

        那段日子是最惬意的,什么都不用做,就是看着别人做项目,感觉挺好。因为我每天都去,乙方碍于面子,加大了这个项目的人员投入,很快这部分也完成了。

        然而在集成的时候,却出现了问题。每个部分单独运行都正常,放到一起就不行了。我们三方再三检测,最后发现出在设备上面。

        设备是老板从美国带回来的,老板给厂家打了电话,厂家说派一个工程师过来看,来回的差旅费用和工程师的酬劳一共5万元,需要我们承担。老板打完电话,看到我正在摆弄那些设备,就兴致勃勃地对我说:“想不想挑战一下自己?我给你一个星期的时间,如果你能解决,咱们就不让厂家派人了。如果解决不了,再让厂家的人过来。”

       我那时候是个软件工程师,对于硬件设备其实不是很懂。但仗着自己的年轻与无畏,我接下了这个任务。那一星期,我开始了通宵达旦的工作。我面前摆着一大堆英文资料,设备的线路图、驱动程序、通讯协议等等,我逐一阅读。遇到不认识的技术名词,就上网查询。

        那时候每天晚上都睡到凌晨两点,感觉一个星期补上了硬件专业一学期的课程。临到最后一天,终于被我发现端倪,这个设备用错了通讯协议,rtmp和rtsp协议虽然很类似,但也有很大的不同。于是我在驱动程序中修改了一行代码,将rtsp改为rtmp,然后问题就解决了。

        老板听了我的汇报,非常高兴地说:“你这一行代码,就值5万块钱!”

       然而那个项目终于还是没做起来。按照老板的设想,它的目标客户应该是那些开课外辅导班的老师,这些老师本来就有一定的生源,如果将他们的教室扩展到网上,就会额外增加一道收入。于是老板招聘了一个营销副总,让副总挨家去那些辅导班做推销。但是副总有自己的想法,他想召集一批老师,开个教学新技术研计会,采用会议营销的方式来做推广。但是老板没有同意他的想法。

        后来他们去了几个学校推销,还没有拿到订单,老板投资的50万元便消耗殆尽。最后老板将公司卖给了在北京发展的好友,我也随着公司,从上海到北京。

        搬家的时候,正值国庆放假,买不到上海到北京的火车票。于是老板给我支了一招:“你先坐火车到天津,然后再坐京津城钱到北京。”也就是在从上海到天津的火车上,我完成了自己的第一部文学作品《海天之间》,发表在晋江文学城上面。

02每天都差一分钱
         2008年,我在成易佳禾担任.net工程师。那时候我住在回龙观,而上班的地方在海淀。因为上班路远要起得很早,我练成了在车上睡觉的本领。一到公交车上,不管是坐着,还是站着,我都能睡着。当然,在车上睡觉不算是本领,而我的特别之处是,不管睡多长时间,只要到了该下车的站,就会自动睡醒。

       我在公司的电子政务项目组,承接各地省厅的政务审批项目。电子政务项目对数据权限很敏感,一般要做三级数据权限,每级操作员只能看到自己区域的数据。而出于性能考虑,在迭代多级树形数据的时候,不能使用递归,要使用包含全路径信息的编号来标识节点,然后配合模糊查询实现类似递归的效果。

       我在公司做了很多政府项目,但是这些项目并没有给我留下太多印象,倒是有一件事情,让我记忆非常深刻。那时候金融项目组做了一个银行的项目,已经完成了,但是验收测试期间,每天对账都会差上一分钱。一分钱并不算多,但是因为差这一分钱,就说明系统不可靠,不可靠的系统无法通过验收。

       当时做这个项目的人员已经离职了,老板就指定让我来修复这个错误。我照例还是把代码看了一遍,很快就找到的错误的原因。错误的原因有两个,一个是精度不够。众所周知,在计算机中浮点数是近似值,像float、double这种类型都是近似的,比如你写一个变量等于3.0,它实际存储的可能是2.99999999. 在低精度的场景下,四舍五入到两位数不会有什么误差,但是在银行这种高精度环境下就不行了。虽然原来的程序用了decimal,精度达到了小数点后60多位,但它终究不是精确值。这个错误好改,将数据类型换成BigDecimal完事儿。还有一个原因,在汇总当天数据的查询语句中,用了大于等于当天0点0分0秒,小于等于当天23点59分59秒这样的条件,这样的条件在数据库中存储的时间精确到秒时,不会有什么问题,但如果数据库中存储的数据是以毫秒为单位,它就会漏算一秒的数据。这个也很好改,把小于等于23点59分59秒改成小于第二天的0点0分0秒完事儿。

        这种都是新手才会犯的错误,有些小公司滥用新手,就是给自己挖坑。新手搞出问题来解决不了,然后撒手就走,最后公司还是得找老手来解决问题。所以别看新手工资低,但是算下来并不省钱。

       08年中国发生了很多事,北京举办了奥运会,汶川发生了大地震,南方发生了大雪灾。而我在那年结婚了,爱人是在07年初就认识的,她原来在师范学校学的中文,后来跟我去了上海。因为她也想做软件相关的工作,于是报名参加了一个软件测试的培训班。刚培训完还没来得及找工作,就随我去了北京。因为在北京没找到软件测试的工作,就去中搜在线做了网站编辑。当时中搜推出了个人门户,招了一大批人来制作门户网站,我爱人就是其中之一。12小时两班倒,有一半的时间要上夜班。爱人受不了这种日夜颠倒的生活,于是跟我商议之后,我们辞职回到了郑州。

03臭名远扬中工网
         2009年,我在中软宏大担任.net项目经理。当时我们公司承接了总工会的中工网项目,而我带领的项目组负责其中教育培训、就业择业、维权帮扶三个子系统。

        中工网上线后,曾经受到了很大的非议。原因是当时有个闲着没事的人,在看招投标网的时候,发现中工网的采购价格为670万。而他认为这个网站也就二三十万就能做出来,质疑相关部门在采购过程中虚报价格,假公济私。然后就是一帮不懂装懂的媒体跟着起哄,要求对这个项目进行审计。

       我就是中工网的开发人员之一,所以我很清楚这里面的原委。首先,我们交付给总工会的并不是一个网站,而是一个建站系统,这个网站是用这个系统设置出来的,而总工会付的是整个建站系统的钱。而且合同中除了包括中工网这个网站,还包括下属的十几个子系统。就以我负责的教育培训系统为例,需要支持全国4千万工会同时在线授课,在线考试在线发证,单把这一部分拎出来,规模就超过了当时大部分的在线教育系统。还有就业择业,建立了一个服务全国工人的招聘网站,单拎出来也是一个规模庞大的招聘系统。还有维权帮扶,几乎集中了中国所有的律师事务所和司法部门。这些系统的用户量,连当时的淘宝都是没法比的。我们当时做的教育培训系统,除了支持国内主流的三分屏课件,还支持国际标准的scorm课件,并且在前端中使用了虚拟桌面,总之在项目中使用了很多尖端技术,报那个价格是完全合理的。

         最后审计部门介入,没有发现采购过程中有任何违规现象,这件事最后不了了之。 我所在的公司是个国企,拥有国企固有的一些弊端。比方说我们工资很低,所以大家都想尽办法赚一些加班费。上午的时候,大家几乎都是不怎么工作的,开完会分完任务,就喝杯茶看看新闻,一直磨蹭到中午。下午集中精力工作半天,然后到下班的时候一看工作没有完成,就申请加班。晚上的加班费是工资的1.5倍,周末是2倍。而且晚上加班有餐补,还会报销出租车费。我们经常下班后坐公交车回家,然后找出租车票报销。餐补说是给加班的人吃晚饭用的,但事实上我们都会捱到回家再吃饭,把餐补这点钱也收入囊中。最后到月末算一下,加班费比工资还要多一些。

       我在那里一直负责到项目结束,然后有家私人企业找到我说想让我去他们公司,他们打算新成立一家电商公司,让我去当技术部经理。我犹豫再三,我那时虽然是个项目经理,但项目组却有十几个人,而邀请我去的那家公司,技术部总共才四五个人,工资也只多出五百元而已。我其实不想去,自己所在的好歹也是中字头的大公司。但是那家公司找了我好几次,我盛情难却,就答应了。

04代码应该交给谁
       2010年,我在中国智赢担任技术部经理,负责开发一款电子商务系统。系统是在两个开源软件的基础上改进出来的,一个是ecshop,一个是ecmall。将它们的账号打通以后,增加了一个代理和分销系统。

      那是我第一次做php项目,以前我都是做.net 、用了php之后,才感觉php更加灵巧、轻便,于是喜欢上了这门语言。当时我们技术部门总共4名员工,办公室是在居民楼里,里面有厨房,然后我们就自己买菜做饭。营销中心在离我们不远的一个写字楼里,公司的其它部门都在那里。公司说这样安排是因为我们技术部的工作需要保密,其实谁都知道这样只是为了省钱而已。

        公司聘请的营销总监以前是做传销的,非常推崇各种传销制度,什么双轨制,五级三阶制等等。然而公司的总经理和董事长都是守法的商人,不允许他把项目搞成传销。于是他在代理分销系统中设计了九级提成,算是规避了传销的风险。

       系统的精髓就在这个分润体系,但是当时国家正在打击传销,所以这个系统在推广的时候就遮遮掩掩的,推广人员给人宣传,也是云里雾里,用了很多酷炫的词汇。什么店连店店中店店锁店,什么万业互动千年共赢等等,但是又讲不出系统的特点。客户经常会问:“你这个系统跟京东淘宝有什么区别?”"我淘宝用得好好的,为什么要换你这个系统?"

       系统定位不清晰,那目标客户也就不明确。招商的时候,什么客户都想抓,根本不管他是什么行业,导致网站上什么产品都有,根本没有什么特色。所以那个项目在举办了几次轰轰烈烈的招商会后,走到了十字路口。

       总经理和营销总监还在向董事长描绘着项目的美好前景,忽悠董事长继续投钱。而董事长看着只出不入的财务报表,打算结束项目及时止损。

       董事长在决定关停项目之前做了一个调研,找了很多基层员工进行访谈,得到的结论是大家都不看好这个项目,于是启动了关停项目的程序。而总经理和营销总监总觉得这个项目大有可为,于是开始在私下里找新的投资人准备接盘。

       最后的关停方案是项目取消,公司注销,人员遣散。办理交接的时候,总经理给了我一个硬盘,让我把所有的程序源码和说明文档都给他拷贝一份。

        这些源码和文档是我们技术人员开发将近一年的成果,也是公司的主要资产。我当时犹豫了一下,因为知道总经理有另找投资继续项目的打算,那这种行为无疑算是盗窃。但想想如果不给他,这些代码也没有任何价值了,况且当时公司还没有解散,他还是总经理,我把资料给他似乎也无不妥。

        后来董事长找到我,问我为什么要把程序交给总经理?他是公司法人,也是投资人,他才是公司的实控人。我想想也很有道理,程序是他出钱雇人开发出来的,理应由他处置才对。但由于一般公司都很忌讳越级汇报,所以我能跟董事长说上话的时间其实不多,也就失了先机。

        事情过去好多年了,每次想起这件事,我都会反思自己到底做得对不对,不过至今也没有想出结果。

05同事之间有情谊
       2011年,我在博腾环保担任.net工程师,我们当时做的主要项目是天瑞的EMS项目。 天瑞的项目非常复杂,几十家工厂用的都是不同的设备,要把所有的能耗数据全部接入进来,有些甚至需要对厂家原来的工艺进行改造,把一些老式的模拟仪表换成可以数字远传的。对性能的要求也非常高,我所负责的数据采集模块,一秒种就要传输几千项数据,所以这个项目一开始就是高标准严要求。项目人员开发测试比达到2:1 。程序员完成一项功能,需要找另一个程序做同行评审,再找一个测试做案例展示才能提交。而且提交的注释都有 严格的要求,起初很多人因为注释不合规范被退回。每周举行一次代码审查会议,总监会把那些写得不好的代码公布于众,让大家讨论怎样写才更加规范,更加高效。为了让我们了解业务,公司安排专车载着我们去十几家工厂实地察看。 而且这个公司是我工作过的所有公司中,最象家的公司,因为这个公司管中午饭。每到中午吃饭时间,都会派出几个同事到合作餐厅把午饭带回来,然后大家在会议室里集中吃饭。吃饭的时间聊的话题都比较轻松,所以大家在一起也逐渐有了友情。

        因为这家公司太好了,所以后来我爱人也应聘了进来。她是直接在人才网投递的简历,我没有给她作任何的推荐和介绍。起先一段时间,我们以同事相称,很多同事并不知道我们是夫妻。工作上我们也一直秉公处理,不夹杂任何私人感情在里面。比方说别的测试挑我毛病的时候,她从不插言,她工作上出现错误的话,我也从不偏袒。中午吃饭我们也不会凑到一块,一般是她跟女同事一起我跟男同事一起。下班回家我们也不同时走,一般是谁先做完工作谁就先走。直到后来有一个细心的人资发现我留的紧急联系人电话号码是她的,而她留的是我的,大家才知道我们这层关系。 在我以前和以后经历的那些公司中,一旦离职同事们几乎都不会互相来往的,但只有这家公司例外,同事们在后来的很多年里都保持联系。后来离开这家公司的同事,我们建了一个小群,经常在里面聊天,聊天时说得最多的一句话就是“我们在博腾的时候啊……”

        我们知道同事不会成为朋友,所有教职场生存法则的书里都会告诉你,不要把同事当朋友。但这家公司真的是个例外,同事不仅是朋友,更是家人。遇到困难大家一起分担,从不计较个人得失。后来项目结束了,公司接不到新的项目,老板仍然不降工资不减绩效。但我们不愿意看到公司继续亏损下去,所以陆续的辞职走掉了,临走时给老板留下一句话:“你什么时候有项目了通知我,我随时准备回来。”

06首次被同事陷害
       2012年,我在知途网络担任.net工程师,我们当时做的是一个叫知特产的电子商城,网站几乎是照抄淘宝网的特产中国。在这家公司遇到一些事情,才让我知道职场的人心险恶。
       我当时做的有一个功能是支付宝支付,这个功能开发测试都没发现什么问题,但是上线后发现无法使用,系统无法收到支付宝的回调。我把程序反复检查,没有发现任何问题,在测试系统上完全正常,只在线上系统有问题。我怀疑是线上系统配置有误,但是系统管理员信誓旦旦地告诉我,系统配置没有问题,因为其它功能都正常。我又再三检查程序,确定程序没有问题,最后在我再三要求下,系统管理员同意让我检查生产系统。我在生产系统打断点调试,发现确实收不到支付宝回调,但是检查支付宝的交易明细,显示回调已经发出。就是说支付宝正常发出了回调,我们的程序却没收到,既然程序没有问题,会不会被其它软件拦截了呢?我多少还是有点信息安全的知识的,于是我将服务器上的安全软件逐一关闭,然后调试程序,最后发现是一个叫网站安全狗的软件拦截了支付宝的回调。问题找到了,然后我让系统管理员在安全狗的拦截规则里加一条例外,程序就通过了。
       本来事情解决了,但没几天我听到公司流传,说我水平太低,一个回调调试一个星期,最后还是在系统管理员的指导下才解决的。我听到这个,肺都气炸了。
       后来有一天,老板把我叫去,说你做的程序有问题。老板在测试站点上操作,不断的在买家中心下达订单,然后在卖家中心查看,然而卖家中心一条记录也没有。老板很恼怒,说是你做的买家中心吧,怎么连个下单的功能都做不好?我记得这个功能是正常的,但是有谁动了我的代码让它失效了也说不定,于是我说回去检查一下。我下个订单,卖家中心查不到,进数据库一看,数据完好进入了数据库,再找到卖家中心的代码一看,是卖家中心的查询条件不对,导致查不到这些记录,并不是我下单那部分的问题。我找老板想去解释,但是老板态度很冷淡,说你自己做错了就要虚心接受,不要找别人背锅。
        我回去之后仔细想了想,那个做卖家中心的程序员,就是当初散布我支付宝问题的那个人。这个人程序写得不怎么样,但是拍老板马屁是一流,每天跟在老板后面说好话,团队里面有功劳他都往自己身上揽,出了问题就往别人身上推。公司有这种人本来也没有什么,但问题这种人反而混得风生水起,不管他怎么信口雌黄,老板都会相信。
       我出来工作是来卖力气的,不是来受委屈的,别人的误会我都能容忍,但这种明张旗鼓的陷害我不忍。然后我就辞职走掉了,让那些爱拍马屁的人去做事吧。


07打赢黑客攻防战
        2014年,我在天玺金融担任技术总监。当时我们做的是互联网金融p2p借贷项目,其实我们入局的时候,这个风口已过,市场格局已定,市场被几家大型p2p企业瓜分。但我们的投资人坚信小企业也有自己的生存之道,所以还是在一片质疑声中上马了。为了节省开发时间,我们买了一套现成的网贷系统,连源码一块买了回来,方便我们以后修改。代码是用play frameword做的,这个框架在SSH充斥的年代,显得很小众,但因为它的安全性非常强,所以用来做金融系统其实是蛮合适的。因为安全,始终是金融系统最重要的指标。
        说到安全,在这家公司我参与了我人生中的第一次和专业黑客的攻防战。当时我们的业务已经开展多月,有一天我们的客户QQ上加了一个陌生人,他对我们的客服说:“告诉你们老板,我要封你们网站。”我们客服把这事报给了老板,老板召集了我们几个总监开会,最后一致认为,只有国家监管部门才可以查封我们的网站,而国家监管部门显然不会用QQ办案,再说我们也没有违反任何法律法规,政府也没有理由查封我们,最后决定不予理睬。
然而过了一个小时,客服上报说系统无法访问了,我大吃一惊,赶紧上后台查看。因为我们当时用的是阿里云的服务器,阿里云后台显示,系统遭到了DDOS攻击,瞬间到来的巨量访问压垮了公司的系统,我们遭到黑客攻击了!因为服务器进行过加固,而且我每天都进行巡检,几乎不可能有系统漏洞,而且阿里云的防火墙也非常强大。黑客找不到其他进攻方法,就选了DDOS这个最简单也最耗钱的攻击方法。
      DDOS通过控制大量计算机向网站发出正常的访问,依靠瞬间高并发的流量将系统压垮。因为他们都是正常的访问,所以很多安全软件都会放行,所以实施起来非常简单,但是他们控制大量的计算机访问系统也会产生高额的流量费用。所以可以说是伤敌一千,自损八百。
       意识到到遭到了攻击,马上向领导汇报。这时候黑客已经联系上了我们老板,索要5千块钱。老板说不能给,如果给了以后,黑客尝到甜头,以后会源原不断地发起攻击。于是我马上启用阿里云的防DDOS系统进行清洗,将无效访问转到黑洞里。阿里云的防护系统非常强大,但是代价也相当高昻,因为它是按流量收费的。我这边抗了半个多小时,就已经耗光了我们在阿里云预存的所有费用。这样硬抗不是个办法,我一边联系财务往阿里云系统继续充钱,一边启用了备用系统。备用系统上线后,我们的客服马上通知所有客户使用备用系统进行交易。
       为了让黑客相信我们还在拯救以前的系统,免得他们注意到我们的备用系统,于是阿里云的钱到账后,我马上又把系统启动起来,黑客发现以后,又开始了新一轮的攻击,这次我在黑客攻击持续十五分钟后,关闭了防护,于是系统又被压垮。又过了两个小时,我再次启动系统,黑客继续攻击,这次持续5分钟后,我主动下线。然后就再也不再启动那个系统。
      从黑客的角度看,他们三次攻击我都没有抗住,这三个回合应该都算我输了。但在我这方面,我只是输掉了第一回合,之后备用系统上线,后来两次佯装上线,只是为了吸引黑客的注意力。最终黑客没有发现备用系统,我们业务持续进行,所以算是反败为胜。
所以,兄弟们,备份系统是何等重要!存储你系统的硬盘可能会坏掉,存放你服务器的机房会发生火灾,有些损坏是永远不能恢复的。所以不要侥幸,做好异地备份计划吧。
       公司入不敷出地维持了一段时间后,国家出台了新政策,要求所有的p2p贷款金额不能超过10万元,这对我们来说是致命 的,因为我们主做的是房抵贷。抵押一套房子只能贷10万块钱,这好像不会是正常人能做的事情,然后公司就清盘出售了。

08醉卧街头君莫笑
       2015年,我在E修联盟担任总工程师。当时我们做的是一个修车服务平台,试图打通汽修产业链。我们设想的是,如果车主的车在路上有故障了,拿起手机用我们的APP就能找到附近的维修店,维修过程中如果需要什么购买什么配件,维修师傅拿起手机用我们的APP就能订购配件。因为在当时,垂直电商的风头正兴,很多创业都都想在细分领域分一杯羹。
       我负责系统的总体设计还有即时通讯功能的开发。因为当时还没有融云那种的SDK,所有的功能都要自己开发。我用OpenFire搭建了消息服务器,采用Xmpp协议传输数据。用FreeSwitch搭建了语音服务器,用SIP作通讯协议 。然后用Red5作为视频服务器,Rtmp作为传输协议。
       那时候我们公司附近有一所大学,我们中午都混进大学食堂吃饭。那个公司离我家也很近,骑自行车就能回去。就这样辛辛苦苦干了大半年,临近春节的时候,产品终于完成了。
       庆功宴上,老板首先表彰了我们研发中心,然后敬我三杯酒。然后其他部门人员纷纷跟随,一人敬我三杯。我瞬间蒙了,一般在酒桌上我们技术人员基本处在可以忽略的位置,敬酒陪酒之类的跟我们没多大关系。我们就安心吃菜,然后听业务部门的人喝洒猜拳,发表一些豪言壮语,拍胸脯表忠心。现在倒好,敬酒的都冲我们来 了,敬完我之后,又去敬我们研发中心其他工程师,不到10分钟,我们技术人员几乎全趴桌上了。我一直坚持到最后,虽然没有趴下,但起身时已是头重轻脚,走不稳路了。
       临走老板要我打车回去,我虚荣心作祟,为了表示没喝多,坚持要骑自行车回去。然后骑上车之后,车子歪歪扭扭,没走几步就摔倒了。然后勉强骑上,走几步又摔了。这次摔在路边的花坛里,压倒了花坛边的铁丝网,有一根铁丝穿透了我的棉衣,直接扎进肉里。那个位置离心脏也就一两公分,要是再偏一点,我可能就玩完了。
        在花坛里躺了好一会儿,好几次想爬起来,但浑身瘫软无力。索性就睡在花园里,任寒风刺骨,雪花纷飞,我只沉沉睡去。
第二天去上班,才知道这顿酒不是那么好喝的。老板叫我到办公室谈话,大概意思是开发已经完成了,公司不需要这么多技术人员了,要裁撤研发团队,只留运维,问我有什么想法。我能有什么想法?
       从那以后,我开始反思。因为我以前都是进的初创公司,初创公司一般有两种结局,一种是研发出来的产品投入市场没有反响,公司倒闭。另一种是研发完成后研发团队解散,只留运维人员。不管是哪种结局,对于我们研发人员来说都一样:要找另一份工作了。所以当时我决定,再找工作就进成熟期的公司,不再去初创企业了。

09最不喜欢换老板
         2016年,我在企汇网担任技术总监。当时公司已经有一款比较成熟的B2B电子商务平台企汇网,采用.Net+Sqlserver的架构,业务量已经做到了全国领先的水平。但是由于上线了批量发布系统后,系统性能严重下降。我入职后对系统进行了升级改造,将产品信息和评论等移入mongodb数据库,同时将Sqlserver 数据库做成读写分离集群,用Elasticsearch引擎替代数据库全文检索,使系统性能有了很大提升。
        企汇网是针对产品的,我们又开发了一套针对服务的交易平台,叫企汇金街,账户与企汇网打通。我们除了开发自己的产品,同时也会开发一些定制项目。所以我们技术中心有两个部门,一个叫平台研发部,一个叫定制研发部,加起来总共有45人 。
        公司的风气很好,周一上午会开全员会,会上会进行一些集体的娱乐活动。每天上午8点半各部门开晨会,晨会安排好当天的工作后,会玩一些集体游戏,比如狼人杀,逛三园,疯狂猜词,谁是卧底等等。一场游戏玩下来,大家都很开心,然后就以这样开开心心的状态开始一天的工作。
不过这种状态并没有维持太久,因为公司上市了。公司上市后,为了满足上市公司的要求,对企业各方面都进行了改革,从公司初创就带领大家开拓市场的总经理被换掉了。新来的总经理为了财务报表上好看,开始严格控制成本。从此饮水机旁边没有了茶包,卫生间里没有了卷纸。这还不算,新老总把我们尚未赢利的项目比如企管家和企汇商城全都停掉了,同时停止了一切新产品的研发活动,开始代理其它公司的成熟产品。因为研发就要投入,投入会计入成本,却不会在短期形成利润,这样把公司从一个研发型的公司转为销售型公司。
       公司转型为销售公司以后,开始扩大销售人员规模,同时压缩技术人员人数。在一次总经理办公会后,给我们下了裁员令,要求技术部门裁减一半人员,由我提供名单,人资负责面谈。
       那是我最绝望的一段日子,当了几年的技术总监,我就是喜欢招人,不喜欢裁人。说实话,能通过面试,通过试用的都是相当不错的员工,因为差劲的员工压根就过不了试用,甚至连面试都过不了。就是这么优秀的一群人,在任务繁忙的时候跟着你一起加班,在遇到难题的时候给你出谋划策,当系统出现问题的时候,一边抱怨一边积极补救。你说裁谁呢?
        首先运维人员得留下来,新产品的研发停了,原有的产品要保持运行。同时还要保留最低限度的程序员,因为系统出了问题,或者小规模升级,总得有人来写程序。美工可以外包,产品经理就不需要了,测试人员工作排不满,只能也裁掉,让留下的程序员兼职测试工作,数据库管理员和文档专员,也可以减掉。
然后我拟定了一个毫无私心的名单,并未曾因为哪个员工跟我关系好而有所偏袒。名单转给人资之后,就看到我们部门的人一个个被叫进洽谈室。洽淡室就在我办公室旁边,听不到里面说话的内容,但能听到说话的语气。被叫去的人中,有义愤填鹰地大骂的,有悲痛欲绝失声痛哭的,有默不作声地保持沉默的。同事们听到风声,早已统一了口径,就不主动辞职,要赶我们走就让公司辞退。但公司肯定是不给辞退的,因为辞退就要给补偿。所以裁员的工作推进得很艰难,大概进行了两个星期,然后人资总监辞职了。临走跟我说了一句话,这个公司待不下去了,你也早做打算吧。
        新来的人资总监态度强硬,总算完成了裁员的工作,但对员工的积极性打击太大了。留下来的员工开始消极怠工,工作任务完不成,无限期推诿。只要工作发下去,就回给你一句话:这个工作我不会,只有XXX能完成,你把XXX裁掉了。所以这工作没法做。我听了心理很难受,好像是我把他们裁下去似的。但是大家已经不再信任我,工作没法开展,我也只好辞职。
       后来离开公司之后三个多月,遇到那个公司的同事,聊起来才知道,三个月内,其它6名总监也都相继辞职了,很多从公司创立时就在公司的元老也都走了。当时公司离职率70%,除了上市时刚来没多久的,原来的员工几乎被换了一遍。换一个总经理,就意味着你要换掉所有的员工。
       有时候我常常会想,要是我们那年没上市该有多好啊。

10寻找失踪的员工
        2017年,我在伟宏科技担任技术总监,当时我们做的是汉能的MES系统,这个系统极其复杂,要对接很多德国的设备。为了弄清需求,我们需求分析人员进驻厂区,辛苦了三个月终于完成了上千页的需求分析说明书。甲方派出两个代表,逐字逐句和我们核对需求,那时候我们每天晚上忙到凌晨两点,每人带个折叠床,晚上就睡在办公室里。当时我们团队有个成员叫曾经,他每次出差都带着老婆,晚上不和我们一起住,他们自己在外面开房间。
需求搞完了,大家就进入紧张的开发阶段,因为我们研发中心并没有真实的生产设备,所以程序的调试用的都是模拟设备,而我负责所有模拟器的开发。因为公司的总部是在北京,而研发中心设在郑州,所以研发中心的管理相对简单。
         有一天一个女人闯进我们研发中心,直言要找这里的负责人,前台就把她请进了我的办公室。她说她是曾经的老婆,说曾经已经三天没有回家了,她就来公司找他。我当时心里很疑惑,曾经的老婆我出差时见过啊,不是像她这样的。但是他说曾经三天没回家,我顿时感觉到事情严重了。因为他已经三天没上班了,没有请假,也没有告知任何一位同事。因为我们技术人员普遍轻视审批流程,有时候家里有急事就先去办,回来补假条的情况也有,我也没有在意。但是现在,他既没上班也没在家,这个事情就严重了。
        我们给曾经打电话无人接听,发微信钉钉留言也不回,拨打他入职时填的紧急联系人电话,结果找到我们公司的那个女人电话响了。 我只能让那个女人先回去,说只要曾经跟我们有联系马上通知她,同时建议她如果还找不到人就去派出所报案。
        处理完这事刚回到家,电话响了,打电话的人自称是曾经的老婆,说有重要的事情问我,约我晚上见个面。我听声音这不是白天找我的那个人啊,然后核对了一下电话号码,确实不是白天找我那个女人的。然后我就懵了:曾经到底有几个老婆?
       晚上见了面,才发现她就是曾经出差时带的那个老婆。她也是来找人的,说曾经已经3天没有跟她联系了。然后交谈中才知道,她跟曾经是婚外恋,白天那个才是曾经的原配。她想让曾经跟原配离婚跟她结婚,但是曾经的原配老婆不同意。她这边一直催逼,然后曾经受不了就跑了。她现在联系不上曾经,因为曾经给她留过我的电话,就找我来问问。
       我如实相告,说曾经已经三天没来上班了,然后承诺如果曾经联系我们就马上告诉她。送走她以后,感觉曾经这个人真是没劲,老婆才刚生下小孩不到1年就搞婚外情,而且出了事不去面对只会逃避。
        后来曾经给我回了电话,说他去深圳了,在朋友那里。我把这个消息告诉他两个老婆,让她们放心。结果曾经那个婚外恋人一听这个消息,马上买了一张机票飞去深圳。
        后来项目忙起来,我也没再关注这件事。两个多月后,曾经和他那个婚外恋人把我约出去,说了很多感谢的话,然后给了我一包喜糖,说他们要结婚了,邀请我去参加他们的婚礼。
       那个婚礼我没去,因为那不是我希望看到的结局,我不知道曾经原来的那个老婆,带着个不到一岁的孩子该怎么办。但世事太抵如此,许多事情不会照着你希望的方向发展。因为汉能的项目我们郑州的技术人员需要长期到北京出差,公司领导一合计,不如直接把研发中心迁到北京。我那时候小孩已经在郑州上学了,不想去外地,然后只好辞职另谋工作。

11达到事业的巅锋

        2018年,我在华诺科技担任技术专家 。这是一家外企设在中国的子公司,工作比较自由,不打卡不签到,不固定办公室不固定座位。基本上是只要有网络的地方,在哪里办公都可以。但我们基本上还是去公司,因为公司有咖啡,有点心,有下午茶,当然最重要的是同事们交流方便。
       我当时参与的是一个5G规划项目,因为5G频段高,所以5G碁站的覆盖范围要比4G小很多,为了增加覆盖就需要部署更多的基站。我们先用无人机在城市上空飞一遍,用双目摄像机拍摄城市的影像。拍完后视频做两路处理,一路转换为城市的三维模型,另一路做语义分割,识别出拍摄到的物体,然后根据不同物体对信号的影响,自动解算出适合安装基站的地点。然后再把这些结果输进城市的三维模型中,由人工进行一些细微的调整。
       那是我人生中最快乐的一段时光,外企中的人际关系相对比较简单,也很少有加班的情况发生,下班后基本上不会接到任何工作电话。公司会定期举办各种娱乐活动,比如汉服大赏,卡拉OK比赛,程序员日,工程师日等等。最精彩的是老板服务日,在老板服务日这天,所有的领导都要为自己下属提供服务,比如捶肩、擦电脑、买奶茶等等。具体服务什么不重要,重要的是一种态度。因为公司部门分布在全国各地,所以公司会定期组织各种团建活动,方便大家认识交流。
外企的规章制度比较完善。比方说出差,只要领导批准了你的出差申请,就会有人给你买好机票订好酒店,几乎不需要自己垫钱。
        有一段时间我有幸去公司总部出差,到了之后简直惊呆了。公司总部绿化面积很大,建筑物很分散,就像建在花园里似的。里面不但有图书馆,体育馆,影剧院,还有一个博物馆。博物馆里陈列着很多欧洲古代的盔甲和刀剑,图书馆里的藏书比我见过的大学里还多,让人很难想象这居然是一家商业公司。班车上午10点才截着员工到公司,下午4点就出发载员工回家。中午12点到下午2点是吃饭和午休的时间,算下来一天只工作4个小时。
       虽然待遇优厚福利好,但同事们的责任心还是很强的。疫情到来,我们除了留下一些通信保障人员以外,其余全部居家办公。武汉建设雷神山和火神山医院,公司征集人员前去建设配套的通信基站。那时候,所有的人全都举起了手,没有一个人犹豫,没有一个人退缩。身为通信人,去灾区进行通信保障在我们的观念里那是理所应当的。最终我没有得到这个机会,这个光荣的任务交给了一些年轻的同事,他们出色地完成了任务之后,又自觉地进行隔离。
        美好的日子总是短暂的,在㺯国打压中国企业的大背景下,外企在中国的生存也很艰难。我记得那年移动5G集采,我们没有中标,后来联通和电信联合集采,又没有中标。拿不到5G的业务,我们这些5G规划人员没有了用武之地,公司将我们疏散到其它部门,给我的安置是到福州做Java开发,但我不想离开郑州,于是只好辞职,开始下一段征程。

12遭遇人生滑铁卢
          2020 我在中音讯谷担任技术专家,当时我们做的是一个无纸化会议项目。无纸化会议的难点一个是文件协同编辑,另一个是投屏。协同编辑我们集成了一个OnlyOffice开源组件,投屏就使用Nginx+ffmpeg,类似直播的技术。
         公司主要是要会议系统软硬件集成的,以前用的无纸化软件都是从别的公司采购的,公司想自研这个软件,但是投入又很少。技术中心有十几个人,但大多从事硬件维修,软件研发部门只有4个人,我用修改ffplay的方式做出了一个PC的客户端,然后又用Android原生技术做了一个Pad的客户端。因为在项目设想的应用场景中,主会议桌上会配置windows工控机和可升降屏幕,而后排的临时座位使用平板电脑。
        公司位于郑州远郊,离家很远,交通不便。那时候北三环正在修路,开车太慢,我只好骑电动车上班,每天骑行30公里。骑电动车夏天还好,一到冬天,冷得刺骨。我即使穿上厚棉袄,给车装上挡风被,还是冷得受不了。有一次半夜里下雨加雪,早上起来发现车把套都淋湿透了,手放进去钻心地疼。因为来不及买手套,只好把擦车用的毛巾裹在手上,骑上前行。后来上淘宝买了一种自发热的鞋垫,垫在鞋里,热气从脚上传遍全身,才感觉到些许暖意。
         公司的气氛也很好,公司创办有自己的杂志,每个月都要在全体员工中征文。也会举办各种暴走竞赛,从公司徒步40公里到黄河边上。尤其是元旦联欢晚会,办得是很有水平。因为那年疫情的原因,晚会改为线上举行。各部门要把节目录好然后在线上会议上播放,最后大家投票评比。
         我们部门的节目是一个小品,两个工程师拿着损坏了的月光宝盒,误入非洲部落,被原始人逼迫喝了好几桶水(水是真喝的)。我演一个维修工,负责修理损坏的月光宝盒。我们的.net工程师小吕,从写剧本开始,仔细琢磨每一个镜头,反复推演每一个桥段,简直跟专业人士差不多。最后节目获得了全公司第一名,然后我们得到了一个结论:能得冠军并不在于你节目做得好不好,而在于你部门人数多不多,因为在全公司投票的时候,每个人都会把票投给自己部门的作品。
         软件按部就班地开发完成了,然而在测试的时候,性能达不到要求的指标。首先是android版本的投屏延迟在3到4秒,因为我用的是直播的技术,直播系统中这个延迟是可以接受的,因为你看不到播放源就感觉不到延迟。但是在会议现场,是有大屏的,主席台上的大屏幕和会议桌上的PC端瞬间就收到画面,而android平板要过几秒才能收到,这个延迟就感觉很明显了。还有一个问题,就是连续播放四五个小时之后,画面就会卡住,不知道是什么原因。
        为了解决这两个问题,我们又耗费了很长时间,反复检测程序,测量内存和带宽的占用,调整各种参数,但却一直没有取得有效突破。为此我们专门招聘了一个测试工程师,反复验证bug,试图模拟出现问题的条件,寻找问题出现的原因。但也是一无所获。就在我们徒劳无功在折腾一段时间以后,总经理终于没有了耐心,停止了项目,这也成为我软件开发史上唯一一个失败的项目。

13哪怕洪水浪涛天
       2021年,我在京硕科技担任技术总监。那时候我们做的是共享打印项目,我去的时候项目已经运转5年,公司已经投放出去3万台共享打印机,但系统性能开始下降,经常出现服务器不返回结果的情况。我让测试团队做了一次压力测试,测出系统容量上限是3万6千台,于是开始对系统进行扩容改造。
        服务端用的php,数据库是mysql,设备端用的是c++,用户端用的是微信小程序,还有一个python做的用于读取文件页数的服务器,通讯协议用的Websocket。我把服务器全部改成集群部署,将php升级到7.4, mysql升级到8.0,用户端改为uniapp,将系统容量扩充到20万台。
       当时公司的营销策略,就是拿高额补贴换取市场份额。平均每一个点位一个月可以赚50元,但为了拿到这个点位,每月要补贴出去100元,所以公司一直是亏损经营。年初老板定下的目标是今年要赚一块钱,但到年底一算账,这个目标并没有实现。虽然公司年年亏损,但靠着源源不断进来的风险投资,公司的日子过得也挺滋润。
       7月20日,所有郑州人都不会忘记的日子。那天暴雨如注,倾盆大雨一直泼了一天。有很多公司收到预警都提前下班了,我们因为老板不在没人做决定,一直到下午6点正常下班才出来。
        出来的时候我蒙了,路上的水已经淹到膝盖。电动车是没法骑了,只能趟水往回走。我顺东风路往东走了一段,水越来越深,遥看花园路那边,水已经淹到了行人的胸口。我于是折回,准备走信息学院路回去。东风路在经过文化路的时候有一个下穿式隧道,这个路段的水流变得特别急。我站在东风路口,看着路上没过膝盖的水流,正在犹豫到底能不能过去。旁边还站了几个人,都在观望不敢下脚。这时候有个穿中学校服的小孩走过来,前脚刚踏进水流马上就被冲倒了,眼见着就要随着洪水冲进隧道。我马上右脚跨前,伸出右手直接抓住了那个孩子,因为不敢双脚都踩进水里,我左脚还踩在路边石台上。抓小孩的时候,左手本能伸开以保持平衡,但是我的左手刚伸出就被路边的人抓住了,我顿时感觉全身充满了力量。另一个人见状,也采用我的姿势抓住了小孩,我俩一点一点地把小孩拉回来。
       小孩子吓得不轻,然后大家就挤在路边一家饭店里,等着雨停。我担心家里的孩子,于是继续往西,找到一段水流不太急的地方,像螃蟹那样横着走,才趟过了东风路。然后在信息学院路上,全程都在齐膝深的水里趟,走了几百米腿就开始酸痛。但是不知道家里孩子的状况,只能咬着牙往前走。回到家才知道,孩子早在中午就提前放学,已经顺利到家了。看到孩子平安,我马上给同事打电话,询问同事们的情况。得知家在东边的同事看到花园路无法通行,滞留在公司了。他们已经买了食物,准备在公司待一晚上,第二天再回去。
        然后我又跑到小区附近的停车场,因为公司离家近我上班并不开车,平时车就停在那个停车场里。结果去的时候,只看到一片汪洋,里面一辆车也看不到,水已经把车顶都淹没了。
        这次水灾,郑州死亡失踪人数高达380人,受灾最严重的是京广路隧道和地铁5号线五龙口段。京广隧道里面很多汽车堵在那里出不来,结果水灌了进去,连人带车都淹了。地铁5号线没接到预警照常发车,结果在五龙口段遇阻,水从两头灌进来,一列车的人全被淹了。我损失一辆汽车,但好在家人平安。
       公司的财务一直依靠投资,新的投资进来,用于给付以前投资的利息,所以欠款越来越多。最后有一笔投资没有按时到账,结果公司的资金链出现问题,先是工资发出不来,然后供应商的货款也结不出了,公司在负债中艰难度日。为了能拿到投资,领导让我篡改系统数据。我不想干违法的事,再加上欠薪已达五个多月,所以我就辞职了。

14没有硝烟的战场
        2022年,我在红帽科技担任技术专家。红帽科技也是做共享打印的,不过跟京硕业务方向不同,红帽主要投放在学校和政务大厅,所以它的机器比较高端,一般都带有触摸屏,能够高速连续打印。而京硕主要投放在小区和学校门口的便利店里,都是打印机直接贴个二维码,主打一个机器便宜点位多。
      我从京硕离职当天,还没来得及去投简历,就接到了红帽的邀约电话。这让我很㤞异,怎么京硕的事情红帽知道得这么详细?莫非是有卧底?然后我就问红帽是怎么知道我离职的,红帽说是一个供应商推荐的。然后我就明白了,京硕采购硬件一般都是款到发货,但最近由于资金紧张凑不出货款,导致有一批货(大概5千台控制盒)厂家已经生产出来了,但京硕没钱发不了货。所以供应商只好给这批货找别的买家,于是就找到了红帽。
       红帽其实并不想做社区这块,因为它在校园和政务这块已经做得很好了。但耐不住供应商一顿忽悠,再加上因为疫情很多学校封锁,机器维护很不方便,所以就打算在社区领域试一下。
        我去了之后,主导开发了红帽打印的社区版本,同时也参与了其它版本的维护升级工作。为了避免和京硕可能存在的纠纷,我使用了和京硕完全不同的技术方案,服务器端用Java,设备端用Python,通讯协议采用MQTT,总之每个部分都使用的京硕完全不同的组件。
       红帽的老板是军人出身,对质量的要求近乎苛刻。比如我们有一款室外的机器,一到冬天打印就会重影,老板了解到是因为低温所致,后来就在所有的机箱里增加了加热装备和温控模块。还有我们的社区版,响应时间会随着文件大小而减慢,比如上传50页以上的文件,打印机可能要等一分多钟才能响应。虽然我们再三给老板解释文件传输是需要时间的,但老板不听,坚持要求我们提高响应速度。最后我们采用文件拆分的办法,先传输第1页,然后再传输2-5页,然后再传6-10页,最后传输剩下的内容。这样不管有多大的文件,打印机都能在10秒钟这内做出响应。
        那天正上班,忽然听到业务部门一阵骚乱,我们的两个业务人员被抓去派出所了。因为我们两个业务员出去投放机器,结果投在了京硕公司楼下。京硕的人一看,用的是他们的控制盒,马上慌了。因为京硕并不知道供应商已经把他们的货卖给我们了,一看到我们在投放他们的机器,马上想到是不是我们把他们的点位给撬了,用我们的设备换走他们的,然后又用他们的设备投放新点位。因为京硕在撬别家公司点位的时候,也是这么干的。所以他们就报警了,说是我们偷了他们的设备。
        然后我们老板出面,出示了购货合同和给供应商转账的回单,两名业务员被当场释放。但是供应商不高兴了,因为供应商当时跟京硕签的排它协议,这种设备是专门为京硕定制的,不能销售给其它公司。所以供应商卖给我们设备的事情其实是暗地里进行的,现在这么一闹这件事情就暴露了。
       后来供应商跟我们一起喝酒,抱怨说京硕做事太不地道了。原来并不是因为京硕付不起货款,而是因为京硕买通了供应商的一位工程师,知道了他们代工的厂家,然后从厂家以更低的价格直接进货,把供应商完全撇开了。供应商心里很恼火,因为京硕暗地里从厂家进货的事情他们并不知道,所以还在继续向代工厂下单生产,这才造成了货品的积压。
       京硕和红帽的运营模式完全不同。京硕依靠各省各市的代理商来开拓市场,维护设备,而红帽一直依靠自己来进行投放和维护。所以京硕能够把机器投放到全国各地,而红帽只能覆盖郑州市场。因为共享打印机这个东西,是需要经常维护的,正常情况下就需要不断地加纸加墨,还会出现卡纸夹纸等异常情况,一旦出现了就必须马上派人去解决。京硕的设备主要投放在便利店里,给店主有分成,所以加纸取纸这些事情可以让商户来进行。但红帽就不同了, 他要组建一支庞大的运维团队到各处去进行维护。后来的事实证明,这种方式不适合社区项目这种点位大量且分散的情况。而且京硕不追求赢利,一直是以赔钱占市场的方略,而红帽要求投放出去的机器必须尽快赢利,所以在投放一段时间后,老板看到利润不足以覆盖成本,就把这个项目停掉了。
       从那以后,我又开始了反思,以前一直以为动荡不安的生活是因为我入职的都是初创公司,所以后来有意识进成熟公司。但是又能怎么样呢?虽说公司不会倒闭,但是业务部门也是说撤就撤,同样没有一点保障,或许,是时候该离开这个行业了。
        我不知道我转行以后还能做什么,但我开始尝试写作。我写了一部小说《另一个世界》,如果读者们有兴趣,上晋江文学城搜作者“鲁那西”就能看到我的全部作品。


15后记
       2023年,我在美团担任外卖员。IT行业就是这样,来去自由。你来,他不劝阻,你走,他不挽留, 浪潮不会在意一滴水珠。所有的程序员都是从Hello world开始,又是从Goog By Code 结束。没有什么懊悔,也没有什么遗憾,有的只是无尽的怀念。
      免责声明:因为这个回忆录记录的都是真实事件,为免泄露他人隐私,所以文中出现的公司名称和人名皆为化名。如有与现实中的公司重名,请勿追究并通知作者修改名称。

附录:月薪变动表


 

翻译

搜索

复制

标签:项目,一个,系统,然后,程序员,编年史,老板,我们,公司
From: https://www.cnblogs.com/lunacy/p/18117213

相关文章

  • 10倍速比2倍速容易,程序员创业必须知道的那些超越周期的原理。
    源头是这本书:《10xIsEasierThan2x》,​不想看可以直接翻到最后看总结:10倍比2倍容易,核心观点是:必须定一个10倍速的高目标,因为2倍速的提升往往是基于现有流程的定量优化,本质是陷入内卷;而10倍的目标则需要战略而非战术的优化,很少有路径可以达成。因此你必须在过程中剔除噪......
  • 一个简单可分享的web数据透视分析
    我推荐一个简单可分享的在线数据透视分析网站,首先看效果:在线数据透视展示用户上传一个Excel或csv文件后,把指标拖拽到左右两侧,再选择合适的分析方式,在中间展示区域就会出现分析数据或者图形了,上图示例中我们上传了杭州各区域在不同年份各基础商业门店的数量,随后将年份和区域拖拽......
  • 从0到1搭建一个Vue3+Electron的框架
    1.前言:上篇文章中使用到了Vue+Electron框架,这一篇文章主要讲解这个框架如何搭建2.Vue3+Vite项目搭建执行命令行,创建Vue3+Vite脚手架:npmcreatevite或yarncreatevite修改脚手架中的无用部分删除src/components下的所有文件修改src/App.vue内容<!--*@......
  • 写文章 点击打开程序员子龙的主页 java全套电子书分享(可直接下载)
    books经典的编程书单大全简介:这里汇集如下主题的经典书籍:编程语言、操作系统、计算机网络、系统架构、设计模式、程序员数学、测试、中间件、前端开发、后台开发、网络编程、Linux使用及内核、求职面试、算法与数据结构、数据库、Redis、消息中间件等编程学习书籍。......
  • 如何把一个十进制数转化为一个二进制数
    起因Miqa在改愤怒的小鸟,WA了两个点,尝试画图未遂,于是开调,但是想直观的看到二进制数,所以有了这个工具。#include<bits/stdc++.h>usingnamespacestd;inlinevoidtwice(longlongx){ stack<int>num; while(x!=0) { if(x&1)num.push(1); elsenum.push(0); x>>=1; ......
  • 黑马程序员Java从入门到起飞(上) P103 字符串-08-较难练习练习-金额转换
    文章目录标题:黑马程序员Java从入门到起飞(上)P103字符串-08-较难练习练习-金额转换前言一、案例的使用场景是什么?二、输入输出情况三、思路四、什么是查表法?五、代码实现六、完整代码总结标题:黑马程序员Java从入门到起飞(上)P103字符串-08-较难练习练习-金额转......
  • 嵌入式Linux驱动开发-第一个驱动程序hello
    前言,没事就碎碎念以前跟着正点原子的文档做过一两个简单驱动程序实验,但是总感觉思路不够清晰,后面看韦东山的视频,发现二者结合起来刚好合适,其中韦东山视频理论和框架讲的清楚,正点原子的更像是他们开发板的使用手册。一开始学习驱动,我感觉比较合适的路线是先简单过一遍裸机,跟着正......
  • "Ray"是一个开源的分布式计算框架
    "Ray"是一个开源的分布式计算框架,用于构建大规模的并行和分布式应用程序。它提供了一套简单的API,让开发者能够轻松实现并行和分布式计算,而无需深入了解底层的并发或通信细节。Ray的设计目标是高性能、易用性和通用性,支持多种计算模式,包括批处理、流处理、机器学习和强化学习等......
  • 开发一个react组件包的时候,组件包里的路径是不是最好使用相对路径../不建议使用别名@
    在开发React组件包时,关于路径的选择,是否使用相对路径(如../)或路径别名(如@),取决于具体项目需求、团队规范以及个人偏好。两者都有其适用场景和优缺点,下面分别进行讨论:使用相对路径(如../):优点:通用性:相对路径直接基于文件系统结构,无需额外配置即可被大多数开发环境和构建工具理......
  • Vite 在一个特殊的 import.meta.env 对象上暴露环境变量。这里有一些在所有情况下都可
    .env文件Vite使用dotenv从你的环境目录中的下列文件加载额外的环境变量: .env#所有情况下都会加载.env.local#所有情况下都会加载,但会被git忽略.env.[mode]#只在指定模式下加载.env.[mode].local#只在指定模式下加载,但会......