DinamicX动态化框架
最后一部分,大家也能看到,最近其实我一直在努力的传达这个 Message,对于一个基础软件产品来说,一个重要的长期竞争力和产品价值来自于可观测性和 Troubleshooting 能力。这个世界没有完美的软件,而且对于有经验的开发者来说,快速的发现和定位问题的能力是必备的,对于基础软件的商业化来说,服务支持效率和 Self-serving 也是规模化的基础,这一点在云的环境下也同样重要。我这里说一些我们最近做的一些新的事情,以及未来面临的挑战。
在Java程序开发中,命名和应用分层无疑是广大后端同胞的两大“痛点”,本文提供一种基于领域模型的轻量级应用分层结构设计,供大家参考。下面按分层结构、分层明细、调用关系、各层规范和通用代码工具展开介绍。
从抽象的工程设计论角度阐述了如何写好一份代码。阐述了设计模式和设计原则的底层原理。
解释了设计模式与设计原则适用的场景及局限性。工程设计论是在有限设计能力下对被设计对象进行的认知和进行逆运算的过程。在不符合这一条件的领域,不应当死扣设计模式与设计原则。在软件领域,一个显而易见的例子就是不要在极度追求性能的代码中死扣设计模式与设计原则。
解释了设计原则中的单一职责原则为何难以掌握和运用。
面向接口设计是软件系统设计的最终形态,对开发流程中先写单例再开发的原因做了解释。
一般来说,我们以启动速度来衡量启动性能。为了提升启动速度,我们可能会把一些原本在启动阶段执行的任务进行延后或者按需,这种方式能够有效优化启动速度,但同时也可能损害后续的使用体验。比如,如果将某个启动阶段的后台任务延后到后续使用时,如果首次使用是在主线程,则可能会造成使用卡顿。因此,我们在关注启动性能的同时,也需要关注其他可能影响的指标。
性能上我们需要有一个能体现全局性能的宏观指标,以防止局部最优效应。业务上我们需要建立启动性能与业务的关系,具体来说就是在优化过程中尽可能对一些较大的启动优化支持 AB 能力,这样做一方面可以实现对优化的定性分析,防止一些有局部性能收益但是对全局体验有损害的负优化被带到线上去;另一方面也可以利用实验的定性分析能力,量化各个优化对业务的效果,从而为后续的优化方向提供指导。同时也可以对一些可能造成稳定性或者功能异常的改动,提供回滚能力以及时止损。
目前,字节跳动旗下的企业级技术服务平台火山引擎已经对外开放了 AB 实验能力,感兴趣的同学可以到火山引擎官网进行了解。
总结一下,过度设计有可能摧毁你的初创公司,它可能:
增加不必要的复杂性。
增加开发和维护成本。
降低你的迭代速度。
使你无法适应市场。
遗憾的是,过度设计并非例外;它是常态。出于这个原因,了解其中所包含的内容非常重要,并且努力避免这种情况的发生,首先要让你的工程师参与进来,解决客户的实际问题。
在没有解决客户实际问题的开发中,我们投入的每一分钟都是一种浪费。不要掉进““以防万一”的陷阱。
墓地里充斥了设计精巧的初创公司和产品,可以扩展到数以百万计的用户,而这些用户从来没有得到过一丁点儿的关注。别成为他们中的一员。
本文以系统为中心, 结合日常工作和用例, 由浅入深地介绍了性能分析的一些方法和体会, 希望对想了解系统性能分析的同学有所帮助。
芯片,是一种将电路集中制造在半导体晶圆表面上的小型化方式,它可以通过系统指令对端口设备进行控制。如果把系统比作一个设备的灵魂,那么芯片就是设备的心脏,芯片厂商基于OpenHarmony的Linux内核、LiteOS-A内核及LiteOS-M内核,面向 HarmonyOS Connect 业务提供了不同的芯片适配方案
最后一个和大家分享的趋势是 Serverless。使用 Serverless 的企业数增速还是非常快的,今天很多人把 Serverless 等同于函数技术,其实这不完全对,今天的 Serverless 其实是一种架构理念,不是代表一个产品。
如果我们细化来看,Serverless 有多种形态,它有面对函数的 Serverless,就大家最常见的,我写一段函数代码就可以跑了。还有一个是面向应用的,有非常多的企业不能接受全新的编程模型,希望已有的应用也能以 Serverless 的形态运行起来,享受 Serverless 带来的技术红利。
1、操作系统:摘取软件行业皇冠上的明珠
2、数据库:正处机遇期,人才需求旺盛
3、软件工程:为数十亿用户设计架构
4、网络安全:步入与AI结合新时代
5、人工智能:计算机的再发展
6、技术风险:疯起来连自己都打
7、前端开发:未来已在路上
我又一次面临没有太多时间写代码和学习的状况。但我仍然喜欢我的工作,因为从本质上来看,这依旧是个技术岗位,只是在更高的技术水平。
如果想做出更高级别的技术决策,就必须建立扎实的技术底子。我不能吃老本,必须不断学习,不能重蹈覆辙。
所以对于工作了七八年的程序员,我们最重要的是有没有找到自己的目标,知不知道自己想成为什么样的人才。对于标题说的工作了七八年感觉啥都会,但是啥也不精通,阿粉觉得此时此刻正是成为 T 字型人才的时候。之所以感觉啥都懂,是因为做过的项目多,
经 历过和看过的事情多,而这个时候我们更能体会之前不能体会到时候,更能找准自己的定位,所以不要迷茫,找到自己的兴趣点,往下干就对了。
技术是安身立命之本,要保证自己的技术能够比工作岗位上的要求高出一截,你才能脱颖而出。公司里做事情的时候,不要觉得琐碎的工作没有意义,大多数的自动化、抽象、架构和平台都是从琐碎的工作中积累而来的,如果你没有这个重复劳动和思考的过程,你对任何场景的思考都不会很深入。边工作也要边输出,也就是前面说的,输出很重要,写文章、写书和去演讲都算输出,就算公司黄了,你通过输出也至少有个业界影响力对不对。当然,重复的工作干了两年,这肯定是不行的。
最后,我提一下在计算机程序和编程技术发展背后的两个基础原则:
随着计算机程序的使用场景和范围越来越广,适应这种广度扩展的基本手段是分层,即增加层次;
在计算机系统的层次结构中,越是下面的层次,越是提供共性的能力,反之,越往上越个性化。
随着产业数字化的广泛推动,行业操作系统就是一个新的层次,而在行业操作系统下面还有一个更加抽象的技术操作系统。所谓计算机程序技术的进步,就是按照这样的原则使得层次和分工趋向合理。
当被问到职业生涯中,做OceanBase数据库是不是最难熬的,以及团队面临解散是否想过放弃时,阳振坤的回答让我们看到了他的坚韧。“是比较难熬,很多时候,你不能把握自己的命运,你知道一件事情是对的,但你想让其他人相信它,是很难的。所以做OceanBase数据库的过程中,我认准一点,只要这个项目没有被‘枪毙’,咱就做,放弃也没好处对吧?如果有一天被‘枪毙’了,咱也没招对吧?反正只要能做下去,我们就做下去。”