暂时未有相关云产品技术能力~
暂无个人介绍
依赖反转原则 DIP, Dependency inversion principle 1. 高层模块不应该依赖于低层模块。二者都应该依赖于抽象 2. 抽象不应该依赖于细节。细节应该依赖于抽象
开闭原则 OCP Open-Closed Principle 设计良好的计算机软件应该易于扩展,同时抗拒修改 换句话说,一个良好的计算机系统应该在不需要修改的前提下就可以轻易被扩展 遵循开闭原则设计出的模块具有两个特征: 1. “对于扩展是开放的”,当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为 2. “对于更改是封装的”,对模块进行扩展时,不必改动原有的代码
单一职责原则 SRP,single responsibility principle SRP是所有原则中最简单的之一,也是最难正确运用的之一,也是我们日常中最常用的一个 不管是编码,重构,甚至当下流行的微服务中 在很多团队的规范中,都会听到一条编码规范:一个方法不要超过x行代码 作为一群自命不凡的程序员,为什么在规范中却有如此一条格调不对称规范 主要问题就在于思维对SRP的缺失
ArrayList的初始容量是多少? 很多人给出的答案是10 最近无意中又看了下ArrayList源码,发现江山已不再啊,很多时候面试自我感觉还不错,总被淘汰呢,也有这方面的原因,自不知了 源码出自JDK8版本,追溯了一下,JDK7高版本时代就开始变了
最近在开发新系统,理解业务,开始设计数据表结构; 寻找实体,确定实体间的关系及关系属性 梳理业务功能接口逻辑,其实也就是这个功能操作了哪张表的哪个字段 没有传说中的面向对象分析,DDD实践,流行的微服务玩法 也许,好久没有从零开发系统,很久没有亲手新建数据库表 沉默十秒钟,感觉像回到了学校,做个类似留言板,BBS类的学生系统;不是鄙视学生时代,而是有些恍惚 多年的工作经验,恍如做了个梦,现在设计的表结构与一名实习生有什么区别呢?
此篇作为《架构即未来》读书笔记吧,再额外补充一下主从模式、分库分表实施的知识点 书中提到AKF扩展立体结构
不管是平时,还是面试,现在对于spring的讨论少了很多,不再像刚进入人们视野时,那么抢眼;spring现在更像空气一样,只要是java构建的项目,十之八九都是建立在spring之上,因此不可轻视,温故而知新 继《BeanFactory与FactoryBean》之后,再看FactoryBean的应用 在上面的文章中指定FactoryBean可以更加灵活的创建Bean,那就从Spring管理Bean方式说起
最近公司进行战略调整,组建中台部门,《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》这本书是中台理论鼻祖之作,赶紧拜读 对照此书,结合当前公司状况,进行一些思考记录
不管是平时,还是面试,现在对于spring的讨论少了很多,不再像刚进入人们视野时,那么抢眼;spring现在就像空气一样,只要是java构建的项目,十之八九都是建立在spring之上,因此不可轻视 BeanFactory与FactoryBean,好久不见,一时也有些傻傻分不清楚,温习一下
这是近期在公司做的一次分享,这几年的互联网开发,算比较幸运,团队一直践行完善这套规范,没有太多的阻碍,得益于公司整体氛围,以及团队对规范和写文档的不排斥,形成了良好的开发习惯 在这次分享后,发现好些大V也在谈规范,写文档,估计是前段时间阿里又发布了开发手册(华山版),借鉴于一下,对一些细节做些补充,整理出来
事件,达到解藕目的的手段之一 最近项目出了一个线上故障,就是因事件引起的,有必要进行一次对事件知识点的梳理 现在公司都是使用的spring全家桶,所以技术面都会在spring boot,这方面我也是新手了,学习与总结并进,新旧知识连贯 此文包含几个知识点 1. 事件实现原理 2. 事件使用的几种方式事件,达到解藕目的的手段之一 最近项目出了一个线上故障,就是因事件引起的,有必要进行一次对事件知识点的梳理 事件是引子,背后还是线程池的知识点 说来也搞笑,在面试时,几轮面试官都问了线程池问题,说明此公司肯定有过线程池的事故,要么大家统一对线程池有了高度认知,却不然遇到的第一个故障就是线程池引起的
前人说过要对新技术保持好奇。对于游戏开发来讲,前端表现几年会有大的技术革新,还记得flash红火时,刚毕业就敢要入万的月薪。现在过气了,3d开始流行,h5也要占半边天。 反而服务端,就算你拿着五年前的技术,也不大会被市场淘汰,游戏业务还是很窄的 窄的原因,我想是业务需求太小,有多少游戏会出生,能有多少上线,又有几款成大作。 刚开始还可能要好好干,好好优化,结果一款款开发的游戏,还没上线都挂了。心凉了。技术架构根本没来及在线上验证,在上线前都是完美的,牛B的,自大了 很少有一款产品,大作,并且还能持久性的前进。技术能有保持同步的迭代,进化的环境很少
监控之前只总结了一篇《微服务-监控》,比较宏观。其中很多细节没有过深关注到,主要还是没有实践过,更没有去深度思考,所以很多有意思的技术点都错过了,比如traceid的生成,传递 大牛圈总的大作《微服务系统架构之分布式traceId追踪参考实现》已经给出解决方案,但还是再主动总结一下
想写个一份百万QPS系统的JVM参数,感觉太标题党了,虽然这的确是,但还是朴实点; JVM参数调优是性能重器,安全第一,不可乱用,更不能因为网上推荐文章(此篇)而随便用 之前关于JVM的几篇文章《是否需要主动GC》、《JIT优化》、《GC及JVM参数》; 这些都涉及到JVM参数,然道理懂不少,还是配置不好参数;调优的确是个费劲的事。这儿直接给一份参数,可以直接拿来主义,当然也有些参数需要配合硬件及应用环境,斟酌使用,一切以实战为准
《JIT优化之道》是去年在公司的一次分享,对于公司组织分享我是赞同又不赞同,怎么讲呢? 技术分享当然是好的,这是一个双赢,分享者教学相长,而收听者也能更快的了解进步。 但以前在原先的公司也做过些类事情,但没有想象的好,大家对分享主题的探索也只限于在分享时间段内,过后很少有人,几乎没人去做进一步的探索。填鸭式的学习效果甚微。后来只涉及一些项目中使用到的知识点,让项目中人去发现项目中的一些亮点,盲区 聪明人从旁人的错误中吸取教训,愚笨人则从自身的错误中吸取教训,有多少聪明人呢?不经历风雨又怎么见彩虹?
zk相关文章已经有了三篇《zookeeper-paxos》、《zookeeper知识结构》、《zookeeper知识结构2-zab协议》 但都没有到具体到应用,此篇弥补一下 talk is cheap,show me the code
通过《zookeeper知识结构1》了解了zookeeper是什么?为什么使用zookeeper? 以及zookeeper内部数据结构,选举机制
之前写过关于zookeeper的一篇文章《zookeeper-paxos》,paxos太难理解了,当时理解了,但现在又忘记了,机械学习果然是不行的 虽然曾经有一篇文章讲阿里不使用zk做服务发现,但大多数公司的分布式架构中基本都能看到zk的身影,而且他躲在里面,你可能看不到他,感受不到他的存在 对于架构体系中的这样一位选手,了解,学习,研究是相当有必要的
图片分库存储时,每一张图片都可以定位到特上图中,假设我们查找的是”a.png”,由于有4台服务器(排除从库),因此公式为hash(a.png) % 4 = 2 ,可知定位到了第2号服务器,这样的话就不会遍历所有的服务器,大大提升了性能!定的服务器
从第一篇《算法概要》开始,到此篇已经经历了将近四个月时间,常见的基础排序已经温习完成
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
1. 为什么需要限流 2. 如何限流 限流主要就是考虑这两点
信号量的定义,意义 在没有juc semaphore之前怎么实现 信号量使用 血管神经元实现
我们不生产代码,我们是代码的搬运工 前不久,阿里大牛虾总再次抛出了分布式锁的讨论,对照之前项目中实现的redis分布式锁总结一下
索引,一种强大的存在;不管是什么行业,数据都是根基,终将落盘固化,提供各方检索查询,之前整理了一篇《深入浅出spring事务》,你可以推脱不使用事务,但索引是不可或缺的必备知识点 知识点比较多,有些会分篇细化,整体会从以下几方面整理 1. 索引是什么,人人都在讲,但他的定义到底是什么? 2. 索引作用,创建表时,都要考虑索引,能带什么好处? 3. 索引负作用,索引那么好,为什么不在每个字段上都加上索引? 4. 索引实现原理,那么多数据结构,索引为什么非要使用B+Tree? 5. 索引应用,加了索引也不一定能发挥作用,使用时注意哪些?
成功就是简单道理的深刻理解与灵活运用 前不久,阿里大牛虾总在群里抛出一个问题:“从深层次讲解一下如何理解IOC,IOC和DI是一回事吗?” 这个问题真是让人平静而又不平静 平静源于此问题就像问中国人怎么使用筷子,天天使用筷子,难道还不会使用筷子? 但又不平静,你能写出一份详细的说明书,让一个不会使用筷子的人按此说明成功地使用上筷子吗?
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
之前这本书翻译为《营销战》,现在又翻译成《商战》了 结合当前商业动态,此书可能会回答你心中的一些问题 为什么哈罗单车融资成功了,可ofo压金都成了问题? 为什么在阿里绝对的市场占有率之机,拼多多诞生了并还在持续增长? 当年的当当图书,京东快递如何抢占了客户 真的是打江山容易,守江山难吗? 战略与战术到底哪一个更重要?
树的类型不少,此篇简要对树进行描述,脑中有个整体概念,细节分篇再研究
之前的排序算法 《快速排序》 与 《归并排序》 都使用了递归手法,如果不能理解递归,那分治思想类算法实现就难以理解
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
因为不只是在服务中,或者只需要在系统使用时间,都需要在网络上安装 上讲,肯定是为了增加系统细节,具体在两个方面进行测试 1. 自我保护:快速失败,在允许最大系统通知未收到请求返回,等待放弃释放占用资源,不断积累带来的客户端雪崩业务数据 2. 成功率处理的主要原因有很多,但往往导致这些服务的时间短,或者是有网络请求的情况等情况。的机率有重试操作到当前的主动服务器,用于重试操作,降低重试晶圆的重试率 这一篇将由浅入深探索超时机制,以及在微服务下的实践
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
天下皆知美之为美,斯恶已;此专栏本想取名代码之美,但有傍名之嫌,也给别误解,所以就叫代码小析吧,看到一段好代码,思路清奇,奇巧淫技,拿出来鉴赏一番 之前是计划one week one alogrithm,结果算法是个短板,不仅要理解,还得再写出代码,特别烧脑,所以中间穿插一下,换换脑子
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
算法虐我千万遍,我待算法如初恋;IT人永远逃脱不了的算法
JDK1.2 就这样了 ThreadLocal 为解决多种难题提供了一个新的思路; ThreadLocal的目的是为了解决多线程访问资源时的共享问题。 这原来是搜索到的线程本地的故事都是这样写的。 ,谎言说下去就形成了真理。 但在JDK文档里面
在对比RPC与restful时,大致有几点: 1. 协议:http相对更规范,更标准,更通用,无论哪种语言都支持http协议;RPC协议性能要高的多,例如Protobuf、Thrift、Kyro等,(如果算上序列化)吞吐量大概能达到http的二倍 2. 安全性:基于Http更安全一些,默认80端口,防火墙友好
服务端的处理也有套路,不管上层怎么玩,最后还是得通过反射方法对象,再调用invoke() 可知序列图,可以把服务端分成两部分 1. NettyServer前面的算部分,搭基础制造Exporter对象 2. nettyserver 后面的算计,找到方法,调用,通过返回
1. 在《类加载器》中讲的,默认类加载器只能加载固定路径下的class,如果有特定路径下的class,需要自定义 2. 安全性:系统自身需要一些jar,class,如果业务类代码中也有相同的class,破坏系统,类似双亲委托安全性 可以看看tomcat自定义类加载器的原因,别的就大同小异了 1. a)、要保证部署在tomcat上的每个应用依赖的类库相互独立,不受影响。 2. b)、由于tomcat是采用java语言编写的,它自身也有类库依赖,为了安全考虑,tomcat使用的类库要与部署的应用的类库相互独立。 3. c)、有些类库tomcat与部署的应用可以共享,比如说servlet-api,
先回顾一下要执行java程序,需要经过哪些步骤 1. 编写java代码 2. 通过javac把源代码编译成class 3. 把class载入JVM 1、2两步是需要开发人员参与的,而第3步是JVM的行为,对开发人员透明
什么是Stub? Stub是一段代码,用来转换RPC过程中传递的参数。处理内容包括不同OS之间的大小端问题。另外,Client端一般叫Stub,Server端一般叫Skeleton。 生产方式: 1. 手动生成,比较麻烦; 2. 自动生成,使用IDL(InterfaceDescriptionLanguate),定义C/S的接口
早在学习motan框架之前(新浪微博公布RPC的代码,最近在看我司框架,温排版的情况,在浏览器里看会正常显示)
时间总是给你意外,在使用微服务架构吗?还在考虑使用哪种微服务架构呢?要准备大干一场,学习spring cloud吗? 还在纠结这些问题时,这些技术都将要被淘汰了,下一代微服务Service Mesh出现了
标题有些吸引眼球了,但并不浮夸,甚至还会远远超过百万,现在的平均响应时间在1ms内,0.08ms左右 如此高的QPS,如此低的AVG,为什么会有如此效果,关键点可能就在多级缓存上 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流
看一段线上的gc日志,这是一段CMS步骤的日志,对于GC日志的完整格式,不了解的可以再温习一下《GC及JVM参数》