自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangsir的博客

非技术类文章在这里:https://www.cnblogs.com/java-zhangshuai

  • 博客(15)
  • 收藏
  • 关注

原创 [设计模式] ------ 对比总结:简单工厂模式、工厂方法模式、抽象工厂模式

三个概念:简单工厂模式:就是一个简单的工厂类,根据不同的入参类型,返回不同的父类引用的子类对象。工厂方法模式:就是将生成哪个子类对象的过程,延迟到工厂子类实现,工厂父类只定义接口。抽象工厂模式:就是在工厂方法模式的基础上,将使用哪个工厂子类的逻辑,再使用简单工厂的模式生成。互相关系工厂方法模式,就是对简单工厂模式的改进。抽象工厂模式,就是对工厂方法的改进。优缺点简单工厂模式,就是简...

2020-03-31 02:07:02 7349

原创 [设计模式] ------ 抽象工厂模式

抽象工厂模式抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了。其实就是相当于将创建哪个工厂的权利再次放给调用端。调用端在调用的时候,指定用哪个工厂,那最后得到的对象,就是对应那个工厂的对象。抽象工厂模式 = 简单工厂模式 + 工厂方法模式。抽象工厂模式 = 工厂的工厂。抽象工厂模式优缺点:优点是再次聚合,对使用者来说,...

2020-03-31 01:44:24 7290

原创 [设计模式] ------ 工厂方法模式

工厂方法模式假设有一大类对象A1,A2,A3,A4…他们都有一个共同的父类A那么如何利用工厂方法模式创建这些对象呢?1、定义一个工厂的接口以及返回实体的方法interface Factory{ // 定义一个方法,返回A A create();}2、针对每个对象,定义创建他们的工厂,每个工厂都实现第一步的工厂接口class A1Factory implement Factory...

2020-03-30 21:09:11 7305

原创 [设计模式] ------ 观察者模式和他的升级版发布订阅模式

观察者模式,发布订阅模式,最快理解

2020-03-26 22:36:49 7323

原创 [设计模式] ------ 建造者模式(对比模板模式)

建造者模式建造者模式,是为了构建一类具有相同执行顺序的但实现不一样,最后产生不一样的东西的效果。举个例子,比如写作文。每次写作文,我们大致有写标题,写开头,写内容,写结尾这些步骤。public abstract class Builder { abstract String 写标题(); abstract String 写开头(); abstract Stri...

2020-03-25 23:49:58 7630

原创 为什么要用Elasticsearch

概念Elasticsearch 简称ES,是一个分布式全文检索引擎。比如github的代码检索就是用了ES,百度也有用ES。由于Lucene的api相对比较复杂,所以ES其实是对Lucene的封装简化,并且提供了一套比较简单的api文档。es官网使用场景主要是海量数据检索,关键词:海量。因为只有数据量大了才能体现ES的优势。以下是我能想到的或者是之前有遇到过的场景:1、常用的经典组...

2020-03-24 00:38:24 9730

原创 jenkins+k8s实现持续集成

持续集成(CI)集成是指开发人员将代码提交到git或svn持续集成是指让开发人员持续提交代码,写一点就提交一点,这样就会更早的发现代码差异每次集成,都可以通过自动化的构建来验证自动化构建包括:编译,打包,部署,自动化测试准备docker环境,资源和k8s集群可以参考之前的文章docker基础k8s集群构建jenkins安装jenkins是一个持续集成的工具,实际上就是一个任务调...

2020-03-21 23:24:25 8453

原创 kubernetes(k8s)

应用部署演进过程我们从上图可以看到,应用越来越看重应用本身了,慢慢的不受物理机的差异,不受操作系统的差异,开发者可以花更多精力去到应用本身。k8s概念简单理解,k8s就是传统的云平台上的linux。kubernetes是一个以Google Borg(google内部容器管理平台)为原型,重新设计和实现的容器管理和调度编排工具。2014年由谷歌开源。同样功能的工具还有docker公司的...

2020-03-21 00:51:20 7513

原创 docker基础

概念docker是一个开源项目,可以将任何应用,以轻量级容器的形式打包,发布和运行。可以粗糙的理解为一个轻量级的虚拟机,因为二者都可以将一个应用放在独立的环境中运行。也可以理解为开了挂的chroot,chroot是对应用程序做了文件系统的分离。但,docker不是虚拟机,也不是chroot。下面是一个docker的架构图核心技术点参考之前的一篇docker容器核心技术点mac安...

2020-03-19 00:36:53 7281

原创 synchronized锁

现在集群,分布式,微服务这么火,基本上也不会有单机服务了,所以synchronized基本上就废了,但不影响我们再回忆一下他的一些思想,很多东西,万变不离其宗。

2020-03-17 23:52:49 7628

原创 skywalking(4)

Byte Buddy库统计方法调用时长1、增强字节码2、拦截器拦截类似于spring的aop,只不过skywalking不能用aop,所以用Byte Buddy技术代替Open Trace整个trace调用,是由多个span组成的有向无环图(就是调用关系图)。spen就是逻辑运行单元,有开始时间和结束时间,一般就是服务的某个实例的一个逻辑片段。每个span可以有多个键值对的log和...

2020-03-17 01:54:34 7544

原创 skywalking(3)

javaagent原理skywalking实现代码无侵入,就是用了javaagentjavaagent是java命令的一个参数,可以用于指定一个jar包这个jar包中的MANIFEST.MF中,必须指定Premain-Class项Premain-Class指定的那个类,必须实现premain()方法当虚拟机启动的时候,在执行main函数前,JVM会先运行这个premain()方法使用j...

2020-03-17 01:26:35 7399

原创 skywalking(2)

安装1、安装jdk2、安装es3、安装skywalking(backend和ui)应用启动时添加探针(agent)使用java -javaagent:/aa/bb/boot.jar -Dserver.port=8081 -jar boot.jar启动项目jar包查看调用链,追踪等仪表盘,拓扑图,追踪,告警,指标对比常用配置覆盖避免到处修改配置,可以直接在启动时候用启动参数配...

2020-03-17 01:09:44 7437

原创 skywalking(1) 基于opentracing规范的APM系统

skywalking是: 基于opentracing规范的APM系统skywalking解决了什么问题?skywalking解决微服务架构下,多服务直接复杂的调用关系了解dapper,分布式链路追踪系统dapper又是谷歌论文,各公司又相继模仿。(我为什么会说又???)APM系统各个公司借鉴谷歌的dapper,实现了自己的分布式链路追踪系统,统称APM系统。OpenTracing...

2020-03-16 23:37:39 9863

原创 一个技术负责人应该知道的规范细节

前言:作为一个技术负责人,不能只定义一个项目的技术选型,而不注意开发细节。开发前,如果不预先定义好规范,那么项目中就会乱成一锅粥。每个人自成一派,单看每个人的模块,貌似都没啥大问题,但合在一起,就明显感觉是多个人开发的。这个时候,等发发现问题,再让某些人去改的话,一方面容易引起coder的反对,另一方面也会减少技术负责人的威望。因为一般出现这种情况,大部分原因是项目的技术负责人不合格,没有把事...

2020-03-09 20:55:55 7843

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除