常见软件攻击方式

1、漏洞攻击
无论是操作系统、中间件还是应用软件,一定都存在漏洞
如果防守方没有及时升级打补丁,就容易被攻击
在爆出漏洞到漏洞补丁推出,到漏洞被修复,这之间有个时间差
在这个时间差之内,利用该类漏洞进行攻击,被大家成为0day攻击

比如:
2022年向日葵远控软件爆出远程代码执行漏洞(Windows平台),攻击者可利用该漏洞获取服务器控制权

2、逆向工程攻击
攻击者通过分析软件的内部结构,寻找漏洞或破解软件的保护机制
比如:虚拟脱壳、动态调试等
当然,业界也有成俗对抗手段,加壳、混淆、反调试、加密狗等

3、缓冲区溢出攻击
通过向程序的缓冲区写入超出其长度的内容,破坏程序的堆栈,使程序转而执行攻击者预设的指令
内核和一些应用软件都曾出现类似漏洞

4、反序列化漏洞攻击
利用现代编程序列化、反序列化的能力,精心构造序列化对象,发送到服务端
服务端反序列化后,执行反序列化后代码,触发恶意代码

5、文件包含漏洞攻击
一些脚本化的编程语言,比如PHP,如果没有做好正确的设置
攻击者就可以通过语言中的,文件包含函数(比如include),读取到服务器上受限制的文件信息,达到攻击目的

6、组件攻击
通过软件引用的各类组件漏洞,进行攻击

比如:2021年爆出的Log4j2漏洞,由于Log4j2提供了“{payload}”解析功能,攻击者可以构造payload,调用JNDI服务,JNDI则会从攻击代码指向的远程服务加载提前部署好的class,并且执行。这样攻击者就可以远程执行任意指令了。

还有:swag-ui如果不做好权限管控,攻击者可以轻易看到代码文档,根据文档构造针对性很强的攻击

7、开源攻击
在开源库中,注入恶意代码
比较出名的包括明尼苏达大学学生向Linux内核源码提交恶意代码,东窗事发后,整个学校被禁止提交Linux源码

8、逻辑炸弹
即使是闭源软件,也有被嵌入恶意代码的情况,当满足特定条件时会自动执行恶意操作
比如,某银行程序员,设置当自己的账号被禁用三个月后,会诱发恶意代码,批量删除数据

9、供应链攻击
软件开发到上线,是一个长长的供应链,包括开源组件引入,外部组件采购,镜像构建,软件本地化,软件编译,软件集成,软件部署等等很多环节
攻击者只需要攻破整个供应链中的某个环节,就可以将恶意软件或漏洞被包含在最终软件中
供应链攻击,再次印证了一个安全守则:安全木桶理论,最短的板,代表了整体安全水平

比如:
2012年,中文版PuTTY被曝出存在后门,该后门会自动窃取管理员输入的SSH用户名和密码,并将其发送至指定服务器。攻击者所作的就是,获取英文版源码,汉化,植入后门,打包发布,甚至做了推广。(利用了国内用户更倾向于使用英文的心理)

2015年爆发的XcodeGhost事件,攻击者利用当时开发者难以通过官方渠道下载Xcode的疏漏,发布了带有病毒的Xcode,导致2500多款通过该Xcode开发的iOS App被植入恶意代码,影响到的iOS用户数达1.28亿。(利用了XCode的下载缓慢,国内用户倾向于寻找替代源的心理)

2024年的“微软蓝屏”事件,就是微软安全供应商CrowdStrike更新了错误的软件配置,导致850万设备蓝屏,全球多地航班停飞、医疗设备瘫痪、金融系统中断。

供应链的下游,还有一类是桌面(电脑维修人员),也必须做好管控,否则风险同样巨大。

10、插件攻击
其实插件攻击,比较像供应链下游的攻击
就是通过利用软件、网站的插件漏洞,达到攻击的目的
更有甚者,可以自己发布一个带隐秘漏洞的插件,从而达到攻击的目的

比如:
2017年,Chrome浏览器内的知名插件User-Agent Switcher被发现内藏恶意代码,会上传用户打开的每一个标签页链接,并会在用户访问部分网站时插入推广代码

11、组件替换及恶意投毒
根据软件的加载规律,替换指定位置的可执行文件、dll、jar包等
让攻击组件优先于默认组件先行加载,达到攻击的目的
最直接的,莫过于直接替换可执行文件了
当然,一些premain的方法,也可以被攻击者利用

这其中,有一类情况叫做“恶意投毒”,攻击者借助Python、Node.js等技术栈的依赖包在安装期间即可执行代码的功能,通过注册相似包名、抢注企业内部包名等方式进行投毒,将病毒木马、挖矿、窃取敏感信息等恶意代码插入安装期间的hook函数或三方组件入口函数内,若企业员工在研发过程中疏忽大意导致拼写错误或是未指定内部软件仓库,就有可能被攻击成功,让攻击者进入办公网络甚至是生产网络。
比如:2022年,攻击者定向收集Ably公司发布的各类产品、代码名称,发布了几十个恶意Node.js依赖包进行投毒​。

同理,直接使用三方源,也很容易遭受投毒攻击,只要同步链路上游被攻破,下游全部会被污染。

12、应用软件攻击
此类攻击,主要针对常用应用软件,在其中注入恶意代码,通过软件厂商的官方渠道分发,达到攻击目的。

比如:
2020年,SolarWinds遭遇攻击,攻击者攻陷了企业内的CI/CD平台,污染了关键产品SolarWinds Origin,进而影响了美国政府等大量下游客户。

13、软件授权攻击
包括:破解补丁、密钥生成器、激活工具等

14、后门攻击
一些软件,为了维护方便,其实留有一些后门,这些后门中,很多并不是因为恶意产生的

我发现过一个后门,是一个资深开发,为了避免数据修改时需要走繁琐的数据修改流程,做了一个接口,通过复杂参数设置,可以推送执行任意SQL
类似后门,被攻击者发现后,后果不堪设想

24年,一位叫Jia Tan的开发者,用了三年时间,获取XZ压缩软件开发者及社区的信任,然后开始后门植入。
他利用m4脚本、shell脚本、测试文件及复杂的混淆技术,在编译期间很隐秘的对XZ软件注入了恶意后门代码,生成liblzma.so
部分发行版中,sshd会链接到systemd,systemd会链接到liblzma,这样就通过XZ,对sshd注入了恶意后门代码
由于被注入的sshd在执行时比较慢,很快就被一些细心的人发现了,避免引发更大的危险
这个历时3年的后门植入攻击事件,才慢慢浮出水面

15、逃逸攻击
包括沙箱逃逸、容器逃逸等,虚拟机逃逸
比如:通过容器逃逸,获取宿主机的访问权限

16、大模型投毒攻击
通过在训练数据中植入恶意样本、具有误导性标签或特征的数据,扭曲模型的学习过程,导致模型偏离真实数据的表征。
被攻击后,模型在预测时,会产生错误结果。
导致给出令人不悦的反馈,甚至引导给出错误决策。

17、软件配置错误
24年爆发了严重的“微软蓝屏事件”,导致850万台使用了windows系统的设备出现大规模蓝屏。
是微软的安全供应商CrowdStrike,批量推送了错误的安全规则所致。

18、权限管理问题
大家经常开玩笑说的,从删库到跑路,很多时候就是把过大的权限给到错误的人员,比如
直接给开发同学权限,后台执行批量删除语句,但他由于粗心,执行时没有带上where语句,更没有limit
直接把drop库的权限,给到了基层运维同学,但他因为一言不合,直接删了生产库
直接允许工程师通过自己写的脚本工具,对云服务器进行批量运维,某次紧急事件,紧急执行了脚本年久失修的脚本,导致整个zone崩溃

常见网络攻击方式01

1、SQL注入
对于存在漏洞的网站,精心构建网页提交参数,参数中附带恶意攻击的SQL语句
网站服务器代码,并没有主动过滤这些恶意代码,就会导致攻击者的SQL语句被执行
比如:

--原始语句拼接:
select * from tableA where uid='传入参数'
--把参数设计为:
a'; delete * from tableA; '
--直接替换后就成为:
select * from tableA where uid='a'; delete * from tableA; ''
--这张表的数据就没了

2、跨站脚本攻击XSS
攻击者在网页中注入恶意脚本,当其他用户浏览该网页时,恶意脚本就会在用户的浏览器上执行
包括:反射型XSS、存储型XSS、DOM型XSS、其他XSS
比如:反射型XSS,攻击者在网站A中,放入精心构造的网站B的URL,但这个URL中包含恶意脚本
用户点击这个URL时,恶意脚本会被一同发送到网站B,然后反射到用户浏览器,被用户浏览器执行
从而达到盗取信息、劫持等目的

3、跨站请求伪造CSRF
比如:被攻击者已经登录了网站A,并保留有登录信息
攻击者诱导被攻击者访问网站B,利用网站A的登录信息,向网站A发送精心构造的请求,比如转账请求
网站A收到请求后,判定登录信息有效,执行了转账,后果可想而知

4、XML External Entity攻击XXE
对于一些老旧的网站,上传精心构造的XML,利用XML解析器配置不当,可以执行XML的DTD中的指令
这样再访问这个被上传的XML,就能看到指令的执行结果

5、服务器端请求伪造SSRF
利用服务器端之间的信任,精心构造请求,绕过服务器限制,达到攻击目的
比如攻击者希望获取A网站的一张保密的图片,但没有权限
攻击者又发现B网站与A网站之间有更高的信任关系,而且B网站的留言功能,会主动缓存一些URL的图片资源
攻击者在B网站留言板,输入A网站的图片地址,过几分钟一刷新
B网站已将A网站的图片进行了缓存,攻击者就获取到了这张图片,绕过了A网站的限制

6、JSONP攻击
JSONP技术多用于跨域获取数据,并执行回调,如果没有做好限制,容易被攻击者利用
比如攻击者在网站A上构造一个精心的URL,这个URL指向网站B,同时带有一个回调函数
如果没有防护,网站B会按请求内容进行响应,然后返回数据,被攻击者的浏览器会自动执行回调函数
攻击者可以利用这个回调函数,达到获取信息等非法目的

7、越权攻击
攻击者通过构造访问URL,尝试获取超出账号的权限
传统Web服务,很多页面都可以被越权攻击,甚至访问到管理员页面
包括水平越权和垂直越权
比如一个账户,原本只能看到一个商品的销售信息,但在URL中,通过枚举商品ID,居然可以访问到所有商品销售信息

8、扫描攻击
利用漏洞、弱口令、端口扫描工具,对网络中主机进行批量扫描,根据扫描结果一一攻破,然后偷偷上传木马等控制软件
很多肉鸡就是这样被制造出来的

9、目录遍历
如果网站没有限制不可枚举目录,其实风险是很高的
无论是看到网站源码、配置文件、还是日志,都有可能暴露出新的被攻击点

10、漏洞攻击
利用主机、中间件、各类组件现有的漏洞,然后进行利用

11、零日漏洞攻击
任何软件,在爆出漏洞到漏洞补丁推出,到漏洞被修复,这之间有个时间差
在这个时间差之内,利用该类漏洞进行攻击,被大家成为0day攻击

比如“三角测量”攻击,利用多个零日漏洞,攻破iPhone防护,可安装恶意软件

12、命令注入
有些网站,有命令执行的功能
这样,攻击者可以通过精心构造的请求,将想要执行的脚本,嵌入到请求中
最终达到在服务端执行命令,并返回结果的目的

13、文件上传
有些网站,没有做好上传文件的限制
攻击者甚至可以上传shell脚本
结合上面的命令注入,后果可想而知

14、恶意文件
通过宏、代码嵌入等方式,达到执行恶意代码的目的
比如N年前常见的office宏攻击或VBA攻击,下载一个文件就中招了
还有精心构造的图标、后缀、压缩包,也能达到麻痹被攻击者,执行恶意代码的目的

15、蠕虫病毒攻击
通过系统或某些软件漏洞,自动攻击主机或网络设备,复制,潜伏,然后继续攻击其他电脑
这样也能抓到不少肉鸡
但蠕虫传播很快,肉鸡多了,就成了僵尸网络

16、木马攻击
通过各类攻击手段,在被攻击方的电脑上,安装一个小程序
这个小程序被成为特洛伊木马,会隐藏自己,好一些的在任务管理器都找不到,更厉害的可以获取比内核还高一些的权限
然后攻击者,通过这个木马,获取被攻击者的信息,甚至对电脑进行完全控制
比特币价格好的时候,有人还用攻击的到的电脑挖矿,你能信。。。

17、勒索软件
加密算法的发明人,应该也没想到,自己发明的算法,会被用来开发这类软件
和蠕虫拼命扩散资深、木马拼命隐藏资深,并不一样
勒索软件会在后台,拼命扫描你的各类重要文档(包括数据库文件),然后进行加密
加密之后,会告诉被攻击者:你的资料都被加密了,想要吗?那就给指定地址打几个比特币
然后就会再解密
如果不支付,也可能会被撕票。。。
由于密钥长度一般很长,所以解密几乎不可能,要么交赎金,要么抓到幕后的攻击者

18、钓鱼邮件
将攻击代码或攻击软件,伪装为压缩包等方式,通过邮件,大规模发送给被攻击客户
当客户防护意识不够强的时候,误点了这些代码
就相当于自己安装了木马,或者蠕虫
这些软件既可以从你电脑中偷取资料,严重的时候会让电脑成为肉鸡

19、钓鱼网站
通过伪造网站,让用户误以为自己在官网
填写自己的用户名、密码、严重码信息
殊不知别人在真正的官网,通过这些信息登录成功
已经盗取了你的账号、你的信息、你的金钱

20、会话劫持
被攻击者登录成功后,获取被攻击者的会话识别信息
利用会话预测或会话固定技术,模拟客户,接管会话
客户和网站可能都不知道被劫持了

凭证填充:通过获取的凭证,可以尝试该网站各服务接口,尝试获取有价值的信息

21、邮件轰炸
通过软件,对指定邮箱,发送大量垃圾邮件
随着各类垃圾邮件过滤算法的提升,越来越难了

22、暴力破解
包括密码爆破、验证码爆破、目录爆破等
通过常用弱密码字典、被脱库的第三方密码库,构造程序,不断尝试自动登录
现在这种攻击基本都会被防护,密码错几次后就24小时后才能重试
但被脱库的第三方密码库,还是危害很大的
要定期改密码
这里再补充一个“短链爆破”,由于短链位数少,很容易被遍历,而且几乎没有访问限制,经常被攻击者作为一个突破口

23、密码攻击
除了密码爆破(字典、枚举),还有一些常用的手段
彩虹表攻击:通过已知的hash值,倒退密码,如果不加盐,还是很容易被攻破的
密码喷洒:通过一个防护薄弱的网站,获取被攻击者的密码,用这个密码,尝试各大网站
撞库攻击:通过已经泄露的用户名和密码组合,尝试在其他网站上进行登录,以获取未授权的访问权限
扫号攻击:攻击者利用网站页面或应用程序的接口来检测账号是否存在,为后续攻击手段做好准备

24、流量劫持(主机端)
浏览器劫持:通过改变用户的浏览器设置,如默认搜索引擎和主页,来重定向用户到特定的网站
数据劫持:篡改HTTP页面,注入广告或非法内容,包括HTTP头注入和HTTP内容注入

25、网站劫持
网站被攻破后,上传恶意页面,从而可以
a、页面植入
一般用户是不知道,他们看到的一个页面,可能是由n个页面组成的
在一个可信网站下,嵌入一个带有攻击目的的页面
诱导客户输入敏感信息,进而达到攻击者目的
b、点击劫持
通过视觉欺骗手段隐藏恶意链接,诱使用户进行错误点击
c、网站嵌入
嵌入各类不法网站
d、HTTPS欺骗
在安全网站中,嵌入不安全内容,欺骗客户
e、恶意下载
诱导客户下载恶意程序

26、配置错误攻击
配置错误,比大家认为的多很多,比如:
报错时,debug信息直接throw到页面上
spring boot可以通过env直接把配置信息展示到页面上
swagger ui可以不授权访问
redis等中间件没有设置访问限制
容器部署的时候,没有修改默认管理页面的密码
各类密钥,直接上传到代码库
打Jar包的时候,加入了混淆防护,但Source却包一起上传了maven库
生产环境和测试环境混用,导致删了生产数据
买了防火墙,但网络流量不经过防火墙,你能信?

27、逻辑漏洞攻击
这类攻击也很多,比如:
折扣券可以多次消费
通过带一些参数,直接获得更高的折扣
通过带一些参数,可以直接获得任意用户访问的权限
通过带一些参数,直接绕过验证码的防护
只有你想不到,没有他写不出来的逻辑Bug

28、缓存攻击
针对网站缓存特性,构建大量请求,造成缓存击穿或缓存穿透,从而导致网站崩溃

29、杂烩饭式恶意软件
组合使用多种恶意软件技术,进行恶意攻击,并有效防止被查杀。
比如“熊猫烧香”

30、加密货币攻击
挖矿劫持:利用受害者计算资源,给攻击者挖矿
51%攻击:控制网络超过一半的算力,达到操纵交易的目的,越是小的交易网络,越容易被攻击
智能合约漏洞攻击:利用合约中的逻辑漏洞,达到攻击目的,已经发生过多次,每次被攻击者都损失惨重

31、社会工程学攻击
这个是最难防的
就是有目的的与相关人士沟通,获取信任,进而获取权限
手段包括金钱、心理学、信息不对称等,方法通过聊天、电话、视频、语音、邮件,五花八门

常见的终端攻击方法

1、远程桌面攻击
这种攻击在90年代和00年代是十分流行的,当年大家安全意识淡薄,3389端口毫无防护。
就算现在,远程桌面仍然是被重点照顾的对象,毕竟攻破后,太好用了。
一些第三方的远程桌面攻击,被爆出漏洞后,同样给了攻击者极大的遍历,比如某花。

2、共享文件夹攻击
在一些职场内,共享文件夹仍然可以设置为everyone可以访问,这样问题很大。
一方面,有些不应该被共享的资料,会被非法获取
另一方面,也容易被攻击者,利用共享文件夹投毒,访问的人越多,传播越快

3、移动存储攻击
通过U盘,将资料拷贝走

4、PE攻击
通过BIOS设置,通过U盘系统启动,将资料拷走

5、磁盘攻击
将磁盘挂载到其他电脑,将资料拷走

6、打印机
在打印机,读取刚打印出的机密信息,甚至将材料拿走
用网络设备,模拟打印机,进行中间人攻击,可非法获取很多资料

7、屏幕攻击
通过监视、偷拍使用者的屏幕,获取信息的攻击方式

8、文件发送
通过网站上传、邮件附件、聊天工具、文件传输工具、文件分享工具、代码管理工具等,非法获取信息

如何通俗解释BadUSB攻击

攻击者构建特殊的USB设备,比如USB键盘
该设备有两块芯片,一块就是USB键盘芯片,另一块是攻击芯片

当该USB设备连接电脑后,电脑会识别为键盘,并自动安装好驱动

此时,攻击芯片向电脑发送纯键盘指令
打开命令行,下载指定软件,安装该软件,这台电脑就中木马了

据说某组织,利用类似方法,盗取了不少快递单信息
两人一组,到快递集散中心加装沟通业务
A拉住负责人聊业务
B趁机找电脑插入USB设备,代码运行完成后,再拔出设备
后台木马很有针对性的,盗取快递单信息
被抓时,已经成功攻击了十几家快递站点

大模型时代需要强大的信息护盾

无论你周围的人,是否关注大模型,23年的ChatGPT的宫斗剧相信他应该还有些印象,毕竟都已经破圈了。

这件事情的起因,说白了就是“超级对齐派” 和 “激进派”之争。
“超级对齐派”希望,可以对预训练模型进行调整,让其符合人类的道德标准,但要付出更多的成本和时间,收获效果更差的模型。
“激进派”认为,这样很难满足投资人和用户的期望,公司根本无法生存。

“激进派”则希望,先满足大模型的商业价值,获取更多的投资和收入,然后再考虑“超级对齐”的事情。
“超级对齐派”认为,这样就相当于放出了洪水猛兽,会威胁到人类生存。

宫斗最终以“激进派”暂时获胜,“超级对齐派”基本离开OpenAI为结局。

当然,无论是业界大佬,还是各国政府,也都在积极呼吁,要对大模型进行立法管控,限制算力,防止“对人类造成不可挽回的影响”。

但立足于当前来看,以现在的AI能力来说,人为利用大模型创造虚假信息对社会造成负面影响,比“超级对齐派”的洪水猛兽恐怕来的更快。
而且更悲观的是,不管是否做了对齐,其实都可以通过调整,把预训练模型已经完成的对齐,重新解放,把猛兽再放出来。
毕竟,我们现在很难像科幻小说中,把“机器人三大定律”写入到机器人的固件中,并设置永不可更改。

如果没有强大的信息护盾,生成式AI很容易达成这些目的:
一、通过生成虚假信息(文字、图片、音频、视频),并可以达到以假乱真的效果,达到犯罪的目的
比如:通过视频通话,达到诈骗的目的

二、通过生成海量虚假信息,控制舆论
比如:通过伪造新闻,伪造评论,达到政治或军事目的

三、不断生成海量虚假信息,覆盖真实信息,改写历史
比如:将“窗前明月光”,在全网改为“窗前白月光”,经过几代人的不断灌输,慢慢就可以达到目的

这样的例子,我们可以举出很多。

是不是细思极恐。
聪明的你,有没有想到区块链的工作量证明:全人类在诗词上的纠正能力,也搞不过机器不是么。
当虚假信息达到99%的时候,
一个新诞生的人,会相信哪个信息呢?

人类从来无法从历史中学到教训。
只要有足够利益,就一定有人,用不正当的方法,利用新技术。
所以说,我们虽然还没到必须“超级对齐”的时代。但当前的AI技术,如果不尽快去管控使用方式,势必会给未来的我们,会造成巨大的损失。
我们需要强大的信息护盾!
亟需!

退一万步说,就算是不这样被大规模利用。
我们上一代人、我们这代人、我们下一代人,也要学会“区分是否为AI”的技巧。
但随着AI技术进步,这个技巧的习得,将越来越难。

小模型时代到来

最近有一个很有意思的现象,就是各大厂商的大模型,参数级别“越来越小”。
今年上半年个厂商在不断的增加模型参数量,动辄千万参数。
下半年各厂商发布模型时,却都会不约而同的带上了性能不错的“小模型”,无论是ChatGPT、Llamma、Mistral、通义千问、谷歌、微软还是苹果,都是如此。

出现这种现象的原因有:

1、投资方需要看到盈利的趋势,需要降低成本
各大模型厂商,前期纯烧钱阶段已高于段落,需要考虑逐步盈利,一方面要加大收入来源,一方面要降低推理成本
降低模型规模,进行模型量化,是最直接的降低成本的方法

2、“小模型”效果大幅提升,比大模型差不太多
这种提升主要来自于两方面,一方面“小模型”调优技术越发成熟,另一方面数据集越来越准确
最终使得“小模型”参数规模下降了一两个数量级后,仍可达到大模型70%~80%的水平

3、从通用化需求,转为专业化需求
之前大模型追求的是通用,也就是拥有几乎各行各业的专业知识
现在的“小模型”,不需要去吟诗作赋,只需要掌握某个领域的特定专业知识就好,但准确性要更高,对数据和调优要求就更高

4、单卡推理,进一步降低成本
仔细研究“小模型”后,会发现部分模型恰好可以在主流单GPU上运行
这样会避免在多显卡之间通讯或传递数据,推理性能会进一步提升
同样的,部署和调度的难度会大幅下降,稳定性会进一步提升

5、移动需求
无论是微软还是苹果,都在积极探索,让“小模型”可以在移动设备上顺畅运行
一方面可以利用终端算力,提升响应效率,降低服务端推理成本
另一方面可以规避或降低数据隐私的风险,会得到大企业的欢迎

现在模型已经进入下半场,通用模型的竞争格局已比较明显,不会再是大家角逐的重点
各类垂直行业的“小模型”,开始入场厮杀
这个过程中,会诞生一些2C的“小模型”,但更多的商机在各大公司的行业垂直模型,开始卷起来

快速成长的必备软技能25:别造轮子

快速成长的必备软技能25————轻易不要造轮子

我们有些兄弟,对技术和解决问题有极大的热情,但又会有个小问题,有事就容易上头,总想自己去造轮子。

我之前经历过一个项目,做移动互联网挂号的,甲方是一个超级大三家。
为了应对流量冲击,设计的时候势必要引入消息队列,去削峰填谷。
当时整个团队都很有极客精神,技术水平也不错,感觉MQ中间件比较笨重,就花了半天,借用Redis揉了一个。
结果上线不久,消息一扩散,大家都来抢号源,没几天系统就崩了。
于是在这个基础上,越走越远,调优,抗住,崩了,再调优。

甲方的人也坐不住了,用户叫骂声一片,毕竟看着有号但挂不上,过一会儿系统恢复又没了,能不急么。
痛定思痛,用了MQ,好了。。。

复盘时,大家还是七个不服八个不愤,认为自己可以继续调优。
这时候,项目负责人问了一句,这个MQ中间件,别人优化了N年。你们凭啥觉得自己一两周的赶工,能干过别人N年的努力呢?

其实,在业界,如果现有技术如果能满足要求,成本最低的方法,往往是使用现有技术。
当现有技术无法满足要求时,大家会想办法去调优。
如果调优也无法满足时,才会去造轮子。而且造轮子,并不是一般的人和团队能承担的起的。

那些头一热就要造轮子的人,一般都是在开着汽车换轮胎的紧急时候,才会去想造轮子的。
几乎没有时间测试、调优、写文档,只追求能用就行。
但请注意,生娃不养娃,罪过甚于不生娃。
这个轮子造了,为了让轮子活下去,你要不断去完善功能,完善代码,甚至不断的回应社区。
这样,100个轮子,才可能有1个活下来。

否则,就是给后来维护的人,挖了一个巨大的焦油坑,不断造成无尽的浪费。

对了,还有类似的行为,大家可能都遇到过:
这个服务/功能,咱们用XXX语言再写一遍吧
最近XXX技术很火,咱们把YYY换了吧
这个项目,我们可是没有用XXX框架,而是自己从头实现的哦

遇到这种情况,先别上头,先考虑一下三个问题:
1、必要性:确实不造轮子不能解决问题吗
2、投产:公司、团队、个人能得到什么
3、轮子能活下去吗?你和团队能有多少热情,能投入多少资源

快速成长的必备软技能24:化繁为简

快速成长的必备软技能24:化繁为简

在职业生涯中,你会发现两种人
一种能快速的从复杂问题中,找到问题的关键,把事情主要矛盾分析清楚
一种能快速的把问题搞的复杂无比,让事情变得困难,让小事变成大事
而且两种人,在不同的企业文化下,好像都能活得不错

作为技术出身的人员,一般比较直接,不太擅长应对第二种人,更不擅长“没有困难制造困难”
所以多数的,都会逐步演化成第一种人

化繁为简,看起来很难,需要经过大量的训练,但抓住一些点,就会变简单:
1、搞清楚真正要解决的问题是什么
2、为了解决这个问题,至少至少要完成哪几件事情,要投入什么资源
3、搞清楚相关方的利益都是什么
4、做出合理且恰当的安排

经过这些训练后,相信你也可以做到,在千头万绪中,快速抓住主要矛盾,集中精力解决问题。

快速成长的必备软技能23:风险控制

快速成长的必备软技能23:风险控制

不知大家有没有听说过一句话“吃亏要趁早”为啥呢?
因为随着一个人的成长、发展及岗位提升,同样的错误造成的负面影响会指数级增长,甚至增大到不可承受的地步
尤其是一些低级错误,对于专业人士来说,是不被允许发生的
甚至会导致职业生涯的毁灭

所以我们要做好风险管控:
首先,是职业风险
举个例子,有些朋友不仅风险意识淡薄,而且毫无法律意识,别人拿个资料过来,不看资料内容,甚至不看资料标题,会直接盲签。
这样做风险很高的,签这些资料,不仅仅是授权,还要承担对应的责任。
如果不看就签,就算把你自己卖了,你都不知道。

然后,是健康风险
相信大家几乎每年,都能从新闻中听到,某大厂程序员,工作中猝死。
我工作了这几年,已经有3位同班同学去世了,都是酒后骑摩托出事故去世的,两位是家里的独子,一位是家里的长子。
这些人悲剧的离开,有时候只是一个家庭悲剧的开始。

再有,是行业风险
三十年河东,三十年河西。行业的起起落落是再正常不过的失去了。
大家要定期做好自我评估,避免在一个下行的行业中,花费太多的时间。
否则事倍功半,何苦来着。

君子不立于危墙之下,管控好风险,及时做好风险规避。

快速成长的必备软技能22:做好选择

快速成长的必备软技能22————做好选择

有很多成功人士都说过类似的话:
选择比天赋更重要
选择比努力更重要
有句话说的是“男怕入错行”,其实当今社会无论男女,都需要慎重选择行业。
其实都是在说一件事情,做出正确的选择,会比单纯的能力、努力,都更影响一个人未来的发展。

我们做技术也是如此。
如果一个技术未来几年注定走向消亡,那就尽早去学替代的技术。
我认识一些朋友,在201X年的时候,我们还有项目使用很老的VB6、Delphi、BCB。
他们中有些人及时认识到了问题所在,转到其他技术栈了。
但有一些人,就永远倒在了这里。
不是不加班,不是不努力,而是方向选错了,只会被淘汰。

每一次的技术大换代,从Dos到Windos,从桌面到Web,从Web到移动,从移动到AI。
每一轮技术进步,都有技术兴起,都有技术没落。
同时,我们会发现,一些技术的生存周期,远远长于其他技术,这类技术就更值得花费精力。
我们要时刻关注技术趋势,让自己不要位于极其不利的状态。

行业和工作内容选择也是一样的。
如果在制造业,从事古老软件的二开,如果能力足够,建议早点离开。
同样在制造业,从事数字化转型,用新技术新软件,替代老技术老软件,就更值得去花一些精力。
一个行业蓬勃发展,各种政策支持,另一个行业日薄西山,逐步没落,即使第二个工作薪水高一些,也应该慎重选择。

同时,对于天天加班,埋头苦干的你,同样建议,低头拉车的时候,不时的抬头看看天。
天不对了,早点儿调整策略。

如果你在一个蓬勃发展的行业,用着新技术,做着自己喜欢的事情,其实你比多数人已经更幸运了。
请珍惜。