随笔分类 -  JAVA

摘要:背景:基于项目工作的需要,要建立一个规则引擎的应用集中式的管理业务中的规则流程等,所以先探索一个MVP 1.什么是规则引擎, 同类竟品? 规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模板编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。需要注意的的规则引擎 阅读全文
posted @ 2023-08-10 23:10 Brian_Huang 阅读(2118) 评论(0) 推荐(0) 编辑
摘要:最近项目因为一些需求需要网关平台做增强,需要通过agent做字节码的修改,项目同事提议用Javassist & ASM, 考虑到团队技术储备,ASM项目上手难度大学期周期长,Javassist代码不够优雅,排错比较麻烦,故而考虑使用今天要讲的主角ByteBuddy. 1.Bytebuddy的定义 B 阅读全文
posted @ 2022-05-05 10:10 Brian_Huang 阅读(2443) 评论(0) 推荐(0) 编辑
摘要:最近项目需要对基础架构做增强,需要基于字节码在不侵入原有代码的情况下实现, 故把javassist的基本用法过了一遍。这篇博客就是把主要讲讲为什么要用javassist以及javassist的基本用法。 1.为什么要使用javassist(上手成本低) 基于字节码增强的框架有两个ASM和javass 阅读全文
posted @ 2021-10-10 15:27 Brian_Huang 阅读(2723) 评论(0) 推荐(0) 编辑
摘要:Fork/Join框架是Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如处理100个任务,可以分割成2 阅读全文
posted @ 2021-08-08 19:13 Brian_Huang 阅读(817) 评论(0) 推荐(1) 编辑
摘要:Condition接口 Condition是一个接口,其提供的就两个核心方法,await和signal方法。分别对应着Object的wait和notify方法。调用Object对象的监视器方法的这两个方法,需要在同步代码块里面,即必须先获取到锁才能执行这两个方法。同理,Condition调用这两个方 阅读全文
posted @ 2021-08-08 15:17 Brian_Huang 阅读(174) 评论(0) 推荐(0) 编辑
摘要:最近,项目收到中间件团队的报告,我们的应用连接他们的中间件(项目内部的MQ)连接数太大了,要求我们做一些调整。然后看了下我们的代码,发现我们接收和发送MQ消息的方式是每次新建一个连接然后关闭连接(询问了之前的同事,目前因为某些原因现在只能采取这种方式发送消息),但是每连接一次都会new一个对象出来, 阅读全文
posted @ 2020-11-22 19:35 Brian_Huang 阅读(486) 评论(0) 推荐(0) 编辑
摘要:JUC是JDK中提供的并发工具包,里面提供了很多并发编程中很常用的实用工具类,比如atomic原子操作、比如lock同步锁、fork/join、CountDownLatch(信号量)、Semaphore (计数器)等。 Lock锁基本的实现 void lock() 获取锁 如果没有获取到锁则阻塞等待 阅读全文
posted @ 2020-08-09 22:24 Brian_Huang 阅读(409) 评论(0) 推荐(0) 编辑
摘要:Synchronized基本特性 1.在普通方法上加上Synchronized锁,则使用this锁 2.在静态同步方法上,则使用当前类的class字节码 3.可以自定义Synchronized锁的对象 测试代码 public class TestThread implements Runnable{ 阅读全文
posted @ 2020-08-05 22:21 Brian_Huang 阅读(682) 评论(0) 推荐(0) 编辑
摘要:volatile: 能够保证线程可见性,当一个线程修改主内存共享变量能够保证对外一个线程可见性,但是他不能保证共享变量的原子性问题。 1. volatite特性 1.1 可见性 能够保证线程可见性,当一个线程修改共享变量时,能够保证对另外一个线程可见性, 1.2 顺序性 程序执行程序按照代码的先后顺 阅读全文
posted @ 2020-07-22 21:26 Brian_Huang 阅读(808) 评论(0) 推荐(0) 编辑
摘要:最近测试team在测试过程中反馈部分接口需要做一定的限流措施,刚好我也回顾了下限流相关的算法。常见限流相关的算法有四种:计数器算法, 滑动窗口算法, 漏桶算法, 令牌桶算法 1.计数器算法(固定窗口) 计数器算法是使用计数器在周期内累加访问次数,当达到设定的阈值时就会触发限流策略。下一个周期开始时, 阅读全文
posted @ 2020-06-13 22:33 Brian_Huang 阅读(1741) 评论(2) 推荐(7) 编辑
摘要:最近做了两个事情相比在项目里面写CRUD有意思些,就是看一些优秀框架的源代吗,然后发现问题并修改提交PR。因为SpringCloud组件Eureka的闭源,所有我们项目有必要看看其他相关的优秀开源的项目,刚好Alibaba Nacos这个开源项目现在比较火热,所以我也花时间简单的看了看他们的框架,有 阅读全文
posted @ 2020-06-07 18:36 Brian_Huang 阅读(330) 评论(1) 推荐(0) 编辑
摘要:1.gc配置参数 1.1 控制台打印gc日志 -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC(详细的gc信息) 1.2 输出gc日志到指定文件 -Xloggc: (例如: -Xloggc:C:\logs\gc.log) 1.3 Gc日志分块 -X 阅读全文
posted @ 2019-12-08 12:38 Brian_Huang 阅读(2402) 评论(0) 推荐(0) 编辑
摘要:1. 堆内存结构 Java堆从GC的角度可以细分为:新生代(Eden区、From Survivor区和To Survivor区)和老年代。 1.1 新生代 新生代是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。新生代又分为Eden区、S 阅读全文
posted @ 2019-12-01 22:20 Brian_Huang 阅读(313) 评论(0) 推荐(0) 编辑
摘要:1.对象的创建过程 1.1 . 给对象分配内存 对象的内存分配有两种方式,一种是指针碰撞另外一种是空闲列表的方式,堆是否规整由我们垃圾回收器来决定的 ,如果垃圾回收带有我们的压缩算法,那么他会规整的分配我们的对象。 1.1.1 指针碰撞 我们内存分配为规整的,每次分配依靠指针位移来分配对象,如果在多 阅读全文
posted @ 2019-12-01 11:22 Brian_Huang 阅读(754) 评论(0) 推荐(0) 编辑
摘要:栈内存是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、返回出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。栈帧(Frame)是用来存储数据和部分过程结果的数据结构,同 阅读全文
posted @ 2019-11-27 22:53 Brian_Huang 阅读(1485) 评论(0) 推荐(0) 编辑
摘要:JVM内存结构 方法区(JDK8以上叫元空间)和堆为线程共享区,虚拟机栈、本地方法栈及程序计数器为线程独占区, 还有一个没有在下图中体现的叫做直接内存(Direct Memory),不受JVM GC 管理。 1.线程共享区域随虚拟机的启动而创建关闭而销毁。 2.线程独占区域生命周期与线程相同, 依赖 阅读全文
posted @ 2019-11-27 18:16 Brian_Huang 阅读(198) 评论(0) 推荐(0) 编辑
摘要:MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 Mybatis环境快速入门 Maven依 阅读全文
posted @ 2019-06-06 00:04 Brian_Huang 阅读(674) 评论(0) 推荐(0) 编辑
摘要:github代码地址: https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service 假设一个需求用户点击某个页面,我们后台需要向MQ推送信信息 1,模拟的MQ服务,我这边使用Rabb 阅读全文
posted @ 2018-11-06 05:15 Brian_Huang 阅读(4703) 评论(0) 推荐(0) 编辑
摘要:github演示代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service/src/main/java/com/kawa/thread 1.线程池 1.1 线程池是什么 J 阅读全文
posted @ 2018-11-01 06:38 Brian_Huang 阅读(588) 评论(0) 推荐(0) 编辑
摘要:github代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service/src/main/java/com/kawa/thread 1 同步容器类 1.1 Vector与A 阅读全文
posted @ 2018-10-29 13:57 Brian_Huang 阅读(2551) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示