
JAVA框架
文章平均质量分 68
常使用的JAVA框架
葛飞文仓
一个有梦想的大叔程序员。
展开
-
RocketMQ:消息发送机制
RocketMQ的底层网络通信完全依赖Netty,在这个三个方法调用中,均是是将调用数据封装为RemotingCommand对象,并通过channel.writeAndFlush方法将数据发送至broker,这也是RocketMQ的核心网络通信机制,心跳、路由信息同步都是相同的方式。同步消息指的是消息发送后等待Broker的响应。同步消息发送和单向消息发送都比较简单,异步消息发送也比较简单,只是在send方法加了一个待实现的接口SendCallback,实现onSuccess方法即可。原创 2025-03-12 11:10:45 · 325 阅读 · 0 评论 -
历程之Spring Boot 2:Redis5缓存数据
Spring和Redis的搭配不算是有多新颖,Redis使用已经非常普遍,在上面的搭配中,Spring收到的请求和请求返回结果可以作为key-value缓存到Redis,在我之前做过的抢购项目中是最常见的方法。在本文中,我将使用之前做的Spring Boot 2 + MyBatis的项目作为基础继续添加Redis的访问,同样需要有Redis集群正常运行中,Redis集群可以访问之前写的Redi...原创 2019-09-20 17:47:58 · 203 阅读 · 0 评论 -
历程之Spring Boot 2:Eureka注册中心
Eureka是Netflix开发的一套开源服务治理框架,他依托于类似Tomcat,Jetty之类的Web容器才能启动。他类似于Zookeeper和Dubbo的集合,一般将Eureka的注册中心称为服务端,而使用Eureka将服务注册到服务端或者从服务端获取服务的应用称为Eureka的客户端。这个和Dubbo非常明显的分为Provider和Consumer不太一样。本文将依托于Spring Bo...原创 2019-09-29 10:48:50 · 212 阅读 · 0 评论 -
历程之Spring Boot 2:Hello, Spring Boot 2
从业10年,经历了技术架构由单一应用部署到分布式部署,业务架构由单一系统到微服务。技术框架由之前的Struts,Struts2为核心,演变到Spring MVC,再到现在的Spring Boot。技术框架的演变方向始终朝着快速开发的目的,让程序员将更多的时间和精力放在业务需求的整理、设计和实现上。当初Spring的XML配置化的IOC的出现给应用的开发带来极大的便捷,于是很快赢得程序员的喜爱,...原创 2019-09-04 17:16:49 · 174 阅读 · 0 评论 -
历程之Spring Boot 2:MyBatis访问数据库
最近几年接触的项目中,数据库访问中间件都不见Hibernate的踪影了,基本都是MyBatis。MyBatis相对于Hibernate来说的确方便很多,最关键的就是灵活,在绝大多数的项目当中,如果使用Hibernate将一对多或者多对一,主外键关系在数据库和代码中限制死,那么在后期的开发和测试过程中绝对是非常麻烦的事情。所以在使用MyBatis时候,我们一般将这列的数据关系限制在业务中,这样至少数...原创 2019-09-11 10:38:49 · 145 阅读 · 0 评论 -
聊聊Eureka的心跳机制
Eureka是Netflix公司开发的一套开源服务框架,后被引入到Spring的生态圈中,于是有了Spring Cloud Eureka。Spring Cloud Eureka是对原版的二次开发,再次基础上添加了Spring Boot的自动化配置,使用者可以通过简单的注解配置即可完成注册中心构建,实例的注册和服务的消费。但是这三点都不是本文要讲的,本文要说的是在实例注册后,实例通过心跳告诉注册中心...原创 2019-09-03 13:22:28 · 4358 阅读 · 0 评论 -
为什么finally里面不能写return
在Java代码规范中,通常要求避免在finally代码块中写return代码,在大多公司的安全规范中也会禁止此类代码书写。具体的原因可以从下面几点来说明:1、finally中如果有return代码,即使try和catch中有return,也会执行finally。2、finally中的return执行完后,程序结束,导致try和catch中的return代码失效。请记住,除非遇到try或者catch中出现死循环或者jvm宕机的极端情况,否则finally中的return代码永远会被执行。原创 2024-12-01 11:09:21 · 604 阅读 · 1 评论 -
Maven打出可执行JAR,自动引入第三方jar和添加MainClass
其实这个功能平时用的实在不多,之前配置过,之后长期不用又忘记了。百度了一圈,按照他们配置的都失败了,平白为这个简单的东西浪费诸多时间。现总结如下,特意记下提醒自己和需要的朋友。首先如需要的是在打出的JAR包中指定main方法所在的类,也就是启动类:<plugin> <groupId>org.apache.maven.plugins</groupId>...原创 2019-08-20 11:15:07 · 1268 阅读 · 1 评论 -
定时任务类ScheduledThreadPoolExecutor和心跳的使用
ScheduledThreadPoolExecutor类并不是什么新出的功能了,在JDK1.5的时候就已经加入进来,开发他的正式并发大神Doug Lea。大概三四年前有整体学习过Java并发的源码。这次在给公司做分布式心跳检测系统的时候,花了点时间重新读了一遍。我很庆幸自己这么做了,虽然并不是完整的读完了,但是真的受益良多。首先看下ScheduledThreadPoolExecutor的类图:...原创 2019-10-02 07:28:12 · 977 阅读 · 0 评论 -
Java设计模式-结构型-享元模式
在工厂模式的代码中,我们不停的生成的对象,每个对象都是全新的,并在占用了部分的内存,而往往很多的对象内容都是相同的,也就是说可以共用的。享元模式也正是为了解决这种资源上的浪费而提出来的。那么怎么样才能做到共享细粒度的对象呢?参考GoF提供的图片:其中我觉得最关键的就是享元工厂角色中HashMap,他保存了每个实例化后的对象并使用key-value的形式保存起来。当遇到相同的key...原创 2019-10-10 10:59:14 · 216 阅读 · 0 评论 -
Java设计模式-行为型-代理模式
什么是代理模式从代理这两个字就大概可以猜到这个模式应该是做什么用的。代理模式是为被访问的对象提供一个代理,这样的话,对象的访问者访问就是这个代理对象。下面的UML图可以比较清晰的表示这样的关系。(图片来源,wikipedia)从图中可以看出,Proxy类和RealSubject类都实现了接口Subject。RealSubject.DoAction()方法才是访问者真正要调用...原创 2014-07-31 10:23:13 · 413 阅读 · 0 评论 -
Java设计模式-结构型-适配器模式
什么是适配器模式Gang of Four 说过,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。这句话中可以知道,适配器是为方便多个接口或者类协同的工作。客户所要使用的也是他们协作的结果。上面的UML图采集与wiki。 图中可以看到Adaptor类实现了多个接口,每个结构有不同的方法,它的方...原创 2014-08-28 16:09:12 · 446 阅读 · 0 评论 -
Java设计模式-结构型-修饰模式
什么是修饰模式修饰模式是面向对象模式的一种,该模式可以动态向类中添加新的功能。动态指的是在程序运行时候,而我们常用的扩展功能的方法是写一个子类继承父类,这样的继承是静态的,因为这样的扩展方法是程序编译时候就体现出来了。在上图中可以看到,接口类Component有2个实现,ConcreteComponent类和Decorator类,Decorator类和它的2个子类对Conc...原创 2014-08-11 14:17:37 · 2497 阅读 · 0 评论 -
Java设计模式-行为型-命令模式
在很多程序员的开发过程可能都不知不觉中用到了这种模式,比如在使用对象的多个方法时候,有methodA,methodB,methodC三个方法可供使用,方法使用者对三个方法是使用是随机组合的。代码如下:public class RemoteControl { public void action1() { Plane plane = new Plane(); ...原创 2019-09-05 11:00:06 · 191 阅读 · 0 评论 -
Java设计模式-创建型-抽象工厂模式
什么是抽象工厂模式抽象工厂模式是工厂模式的一种抽象形态,通常将工厂类定义为abstract,并且在工厂的方法中,所返回的对象也是抽象的。这个返回的对象往往就是客户所需要的。抽象工厂模式的作用抽象工厂模式的主要作用是可以将一系列的对象系统的抽象,并将得到的抽象对象通过工厂模式进行分类。是用户使用对象时候可以更系统和清晰。也就是说我们所要使用的对象就是抽象工厂模式生产出的产品,并...原创 2014-10-29 16:48:40 · 338 阅读 · 0 评论 -
聊聊GC Roots
写完两个关于GC的文章后,突然想到一个点,无论是哪种垃圾收集器,在寻找存活对象的时候都会用到可达性算法,而所有可达算法的基础引用就是GC Roots。也就是无论是什么算法,GC Roots都是都是我们逃不掉的知识点。原创 2024-12-04 21:47:16 · 361 阅读 · 0 评论 -
聊聊JVM G1(Garbage First)垃圾收集器
在上面的原理中,Mixed GC会暂停用户线程三次,但是在G1垃圾收集器中,采用的记忆集、卡表和写屏障的技术,有点类似数据库的索引一样,最大程度的减少了STW的时间。当整个G1垃圾收集器也并不是我所描写的这么简单,例如MixedGC中用到的三色标记算法和SATB技术,还有更多深层的技术细节期待与诸位共同学习,本文仅做初步的概念普及。欢迎使用(哈普工具),让程序员的工作更有效率。t=O83A。原创 2024-12-04 13:15:08 · 1321 阅读 · 0 评论 -
CMS的垃圾回收机制,为什么分为四步
CMS(Concurrent Mark-Sweep Garbage Collection)垃圾回收器是Java虚拟机中的一种老年代垃圾收集器,属于。它的目标是尽量减少垃圾收集的停顿时间(即“低停顿”)。原创 2024-12-03 10:45:48 · 822 阅读 · 0 评论