撸代码之前我们应该想些什么-编程思维
接手一个新项目,实现一个新功能,你是不是经常立马开干,建库、建表,撸代码呢?如果是,请停下来,慢慢看完这篇文章,如果不是,也请踩下,或许你也能学到一点东西。 (一) 了解业务 首先要了解业务,如果业务需求都不清楚,哪怎么开发,了解业务不仅仅是了解从产品经理、或者销售获取需求,也可以根据自己的经历经验,提出合适的建议。同时也要知道业务场景、及项目周边环境,比如需要的开发的
morethink program
在进行团队的review code时,经常发些大量的重复代码,或者几乎一样的代码,这个文件有,另外一个文件也有,看着让人很不舒服,也为日后的修改带来不确定性,哪如何避免它们呢? (一) 从代码上避免 在撸代码的时候,我们尽量抽取公共功能,把业务逻辑抽象化,多运用设计模式指引我们实现功能,这些都是前辈们的经验沉淀。 可以经常使用的功能,抽象成通用模块,这样不仅仅本项目使用,
前言 一个软件轻量简单的软件架构是非常重要的,它可以让我们花最小的代价就能满足业务上的需求。那如何保证轻量简单呢?那今天就和大家分享下这其中的秘密,也就是3个重要的指导原则,KISS原则,YAGNI原则和DRY原则,你们都知道并且理解吗? 欢迎关注微信公众号「JAVA旭阳」交流和学习 KISS原则 KISS原则, 英文全称Keep it simple and stupid。核心思想就是尽量保
摘要 隐私集合求交(PSI)是安全多方计算(MPC)中的一种密码学技术,它允许参与计算的双方,在不获取对方额外信息(除交集外的其它信息)的基础上,计算出双方数据的交集。隐私集合求交在数据共享,广告转化率,联系人发现等领域有着广泛的应用空间。本文对隐私集合求交的各项实现技术做了介绍和对比,对隐私集合求交的原理进行了分析,并进一步阐述了隐私集合求交目前面临的挑战和发展前景。 【关键词】:隐私集合求交
背景 最近搭建个nacos环境,用的镜像是2.2版本的,yaml如下: nacos-conf apiVersion: v1 kind: ConfigMap metadata: name: nacos-cm namespace: nacos data: mysql.host: "122.122.100.101" # mysql ip mysql.db.name: "nacos"
前言 Gemini 是目前 state-of-art 的分布式内存图计算引擎,由清华陈文光团队的朱晓伟博士于 2016 年发表的分布式静态数据分析引擎。Gemini 使用以计算为中心的共享内存图分布式 HPC 引擎。通过自适应选择双模式更新(pull/push),实现通信与计算负载均衡 [1]。图计算研究的图是数据结构中的图,非图片。 实际应用中遇到的图,如社交网络中的好友关系、蛋白质结构、电
前言 软件设计SOLID原则中有一个最基础的原则就是单一职责原则,我想绝大部分的程序员都知道,而且都理解它的意思,甚至觉得很简单。但是往往“看懂”和“会用”是两回事,而“用好”更是难上加难。好比我们项目,一开始一直和大家强调类的单一职责,随着业务不断发展,不同的同事都往这个类“添砖加瓦”,最终导致一个类5000多行,如下图所示,连IDE都受不了,变得卡顿,可想后面维护成本有多大了,究竟为什么会这
前言 最近在看公司项目的代码,看到了大量的继承体系,而且还是继承了多层,维护、阅读都十分的困难。在查阅了一些资料以后,包括《Effective Java》一书中的第16条提到“组合优先于继承”。那继承到底会暴露什么问题呢?为什么更推荐优先使用组合呢? 欢迎关注微信公众号「JAVA旭阳」交流和学习 继承带来的问题 老实讲,项目中为什么大量使用继承,估计初版设计的人是想实现代码的复用,但是的确带
前言 软件设计原则中有一条很关键的原则是开闭原则,就是所谓的对扩展开放,对修改关闭。个人觉得这条原则是非常重要的,直接关系到你的设计是否具备良好的扩展性,但也是相对比较难以理解和掌握的,究竟怎样的代码改动才被定义为“扩展”?怎样的代码改动才被定义为“修改”?怎么才算满足或违反“开闭原则”?别急,本文将展开详细阐述。 欢迎关注微信公众号「JAVA旭阳」交流和学习 举个例子好理解 为了更好的解释
作者:耿宗杰 前言 关于pprof的文章在网上已是汗牛充栋,却是千篇一律的命令介绍,鲜有真正实操的,本文将参考Go社区资料,结合自己的经验,实战Go程序的性能分析与优化过程。 优化思路 首先说一下性能优化的一般思路。系统性能的分析优化,一定是从大到小的步骤来进行的,即从业务架构的优化,到系统架构的优化,再到系统模块间的优化,最后到代码编写层面的优化。业务架构的优化是最具性价比的,技术难度相对较小
秒杀应该考虑哪些问题 超卖问题 分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。 高并发 秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟,而一般公司都为了制造轰动效应,会以极低的价格来吸引用户,因此参与抢购的用户会非常的多。短时间内会有大量请
一、引子 当我们入行成为一名后端程序员时,就很羡慕架构师这个岗位的人,视同神一样的存在。而要成为一名后端架构师,必会技能就是分布式架构。今天我们不讲各种组件怎么去实现分布式细节,而是从分布式服务的这一角度来看历史的发展。 目的就一个:构建并丰富自己的架构知识体系。(普通人差大神多少?选对方向,持之以恒而已。) 注:本文是笔者最近读了周志明大神(《深入理解Java虚拟机》的作者)的凤凰架构,才有了
前言你是否为项目核心页面缺少标准化的开发规范和流程、代码冗余耦合严重而无从下手?你是否为项目中多人或多个团队跨团队协同开发一个页面功能而烦恼?你是否为项目复杂页面缺少端到端动态化编排配置运营的手段、开发/发布周期和流程过长而耗时耗力?你是否为项目中多团队高频迭代开发核心页面的质量和稳定性后知后觉而焦虑?背景在哈啰的快速发展和业务演进过程中,从两轮出行到四轮出行再到基于出行的普惠生活服务平台,APP
文/龙蜥社区开发者Dragonfly2 简介Dragonfly 作为龙蜥社区的镜像加速标准解决方案,是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。现阶段 Dragonfly 基于 Dragonfly1.x 演进而来,在保持 Dragonfly1.x 原有核心能力的基础上,Dra
前言2022年尾比较热门的话题莫过于Elon Musk收购推特后大刀阔斧的改革,加速下滑还是涅槃重生大家一起拭目以待,做时间的朋友。借这个机会我们也可以通过Alex Xu分享的《Twitter Architecture 2022 vs 2012》来一探究竟,了解下互联网公司系统设计上的迭代更新,希望对大家复习System Design时有所帮助。更新历史2022年11月24日 - 初稿阅读原文 -
客户端sdk用golang实现,同时采用sqlite存储本地聊天记录,通过gomobile生成sdk,供iOS Android 调用,达到了了一套代码多端复用的效果。最近融合wasm技术,让浏览器具备存储能力,本地聊天记录存储在浏览器,彻底放弃了之前jssdk server服务端。WebAssembly 是一种运行在现代网络浏览器中的新型代码,并且提供新的性能特性和效果。它设计的目的不是为了手写代