非常高兴来的堆代码社区,让我有找到了当年 BBS的时代感觉,天涯没了,百度贴吧乱糟糟,希望这里百年长青!
要说我的开发经历,80%因为个人爱好,1999年刚毕业进入中国联通做机务员,就是看机房,当时其实用不到我们做什么开发之类的,都有第三方公司做技术支持,我们就是维护,但是看到这么多电脑、服务器,都是我上大学的时候传说中的存在,所以一颗躁动的心就开始鼓捣。当时最想干的就是开发一款游戏,类似红警、盟军敢死队之类的,太傻太天真,以为自己的很厉害,竟然不知道有游戏引擎这东西,就用c++和 dx8开始搞,搞了半年,弄出一个8方位行走和A-star寻址就干不下去了。
不知道有没有人了解https://www.gameres.com/ 这个论坛,当年发了一个关于游戏开发的帖子,已经过去20多年了,记忆犹新。后来本人从吉林到北京发展,从事音视频集成。但是主要是做项目,主要是科技馆、展馆内的视觉和交互开发。用的都是投影机,例如用3台投影机 无缝拼接后 打出120度的一个画面。还有一些大屏幕交互,基本上就是人体动作捕捉,比如可以在一块3米*6米的玻璃上打出画面,然后人可以跟画面互动。但是也有很多案例,至今还保存着很多视频,感兴趣的朋友可以联系我。
这么多年,基本上市面上常见的编程语言都接触过,上大学的时候 用C语言写了一个能对付玩的俄罗斯方块,这个迭代了2次之后,C语言就从入门到精通了。毕业后发现 VB6是真好用,做数据库,可视化编程,感觉当时C语言一下子不香了,搞好几个月也弄不出的东西,人家轻轻拖拽就搞定了。直达弄了半年的C++和DX8,当时就一个想法C++是王道。然后接触网站开发,因为当时接触的都是微软生态,直接搞ASP,后来弄.Net,搞了几年,做了几个跨境电商的平台。
2016年左右吧,父母年龄也大了,自己感觉钱也赚差不多了(小富即安),就回老家了。老家这边也没什么高科技企业,基本上就处在无业状态,大部分时间是打游戏。直到2019年,觉得无聊,就可以了解一些新技术。发现了有一家叫Deepin的公司,开发了一套国产化的 linux 图形操作系统,然后就下载安装,试用了一下。结果发现他的图形界面始终存在一些小bug,让人如鲠在喉,但是底层linux 确实真的好用。于是就开始研究 linux服务器,用的版本是ubuntu 18,结果是一发不可收,用了大概半年的时间,基本上linux 服务器的部署、数据库、即时通讯之类的都通了。
接触linux之后,我发现在微软的生态里面混了这么久,真是浪费时间,winNT、SQLServer,.net之类的,太坑爹了,不论是在学习上还是技术上,还是性能上,都不是一个级别的,只有在linux server上写代码,才能让我找到当年 写c\c++的感觉。正是这个阶段,老家的一个多年的朋友发迹了,干的是农业物联网项目,之前都是采购第三方的软硬件,觉得特别贵,就问我能不能做研发,因为我当时对物联网硬件接触不多,所以也没敢答应,但是多年的朋友,说了好几次,给的工资、待遇在我们本地来说都上相当不错了。但我我怕别人说我靠关系混饭吃,所以朋友叫我去见他的另外两个合伙人的时候,我就说,给我一年时间,我要是能把整个技术栈搞通,我就干,如果搞不出来我就走,这年给生活费就行。
就这样,我这一年主要是上网找各自板子,DTU、继电器、传感器之类的,然后想办法把他们连接起来,连接到我的tcp/ip服务器上去。这期间最大的坑应该是消息队列。最开始好不容易把DTU透传Modbus搞定了,单台设备远程控制、异步数据处理还可以,后来为了验证服务的稳定性,就同时搞了20套设备测试,结果原形毕露,20套设备的数据就会引起网络堵塞、丢包等。最后想出办法,用redis 做了一个 设备连接映射和消息队列,完美解决。看着1、2个月都不需要重启的服务器,心里及其敞亮。
还有一个坑是硬件的问题,困扰了我1个月的时间。当时是在网上弄了一个可以测量电路负载电流、电压的板子,当我把它与DTU和一个继电器集成在一起的时候,发现单独给电路测量的板子供电就正常,跟其他设备的同一个电源就不正常。因为对硬件知之甚少,一直搞不清楚是什么问题。知道有一天,我听说有一个叫电源隔离的名词,就上网花1.5原弄了几个,结果放上去就搞定,一个多月的脑细胞,就这么1.5元的事情。到现在为止,我的物联网、数据中心已经在我们本省交付了6个项目,都是各县市农业农村局的政府项目。
2024年末吧,开始觉得DTU这玩意 数据透传有点过于简单,比如每小时上报一次温湿度,服务器存储的是每小时这个节点的数据,如果计算某天的平均值,应该有些不准确。理想的做法是在物联网设备端做一个计算,每一分钟采集一次温湿度,每一小时将这60次的数据进行取平均值,然后再上报服务器,那么服务器仅需要存储24条数据,就可以计算当天按分钟计算的平均值了。在这个想法的驱使下,我弄了一块安卓开发板,开始做嵌入式开发,竟然轻松入手,用了大概一个月时间,已经初见成效。顺便还给北京的一个客户开发了一套污水沉降光学检测和自动采样的物联网设备端的控制系统,完美交付。
1、C\C++是一切开发的基础,虽然最开始你可能无法用它来做项目,但是如果把这个学透,你会发现,所有的编程语言,都是他的扩展,包括但不限于C#、java、php、python、kotlin等等,如果你的C\C++没问题,学习这些会非常简单。
2、如果你发现学习一个第三方框架的时间,不如自己写一套类似的东西,那就自己动手,写一套更加简洁、更加有针对性的东西,会让你的项目如虎添翼。比如当初做前端的时候,大部分推荐是.vue.js,但是我学了几天,发现各种思维的不适应,因为这个的思维方式和C++的传统思维完全不一样了,学不下去,就自己写,我用了大概2个月时间,用原生java script自己写了一套前端UI框架,功能可能没有那么强大,但是我自己觉得够用,更重要的是代码量极少,符合我一直改变不了的面向对象思维。感兴趣的朋友可以品鉴一下:https://open.winnto.com/resource/wangui1.0.js
3、要有架构师思维,事无巨细、做好规划。这个就好比盖房子,如果让初学者搞一个3间瓦房,可能是没有问题的。但是让你改一个3层别墅,初学者就会有很多地方想不到,比如水、电都怎么走最合理。如果是一个高层建筑呢,如果是一个小区、甚至一个大型社区能,地上、地下、强电、弱点、安防、监控、智能化等待,都需要有详细的规划才能动手,否则项目就会越做越乱,代码就会变成一坨屎山。