java
文章平均质量分 82
易(Master Yi)
这个作者很懒,什么都没留下…
展开
-
mybatis源码阅读与设计模式分析
mybatis 源码阅读 SqlSessionFactory.openSession原创 2021-03-29 23:55:45 · 200 阅读 · 0 评论 -
soul框架简单介绍与设计模式分析
soul框架简单介绍与设计模式分析1. 初识1.1 查看官网文档了解1.2. 目标:2. 分析源码2.1. 网关的实现原理2.1.1. 跨域请求问题2.1.2. 网关请求处理2.1.3. http网关插件2.1.3.1 插件数据获取(插件、选择器、规则)2.1.3.1.1 数据的订阅2.1.3.2 插件的执行(以http插件为例)2.2. 亮点3. 疑问1. 初识1.1 查看官网文档了解针对API的网关 – 可以为每个接口配置负载均衡、限流等功能有三个角色:soul-admin 配置规则sou原创 2021-03-21 22:42:43 · 2643 阅读 · 0 评论 -
RocketMQ介绍与实现原理
1、简介RocketMQ采用发布订阅模式,基本参与组件主要包括:消息发送者、消息服务器(消息存储)、消息消费、路由发现。功能:(1) RocketMQ可以严格保证消息有序(2)RocketMQ支持消息过滤(消息消费时可以对同一主题下的消息按照规则只消费自己感兴趣的消息)。(3)RocketMQ引入内存映射机制,所有主题的消息顺序存储在同一个文件中。有消息文件过期机制和文件存储空间报警机制。(4)RocketMQ在不发生消息堆积时,以长轮询模式实现准实时的消息推送模式。(5)确保消息必须被消费一原创 2020-11-01 12:58:00 · 1987 阅读 · 1 评论 -
Java中的各种锁(偏向锁、轻量级、重量级、自旋、cas、可重入、公平、非公平、乐观、悲观)
偏向锁 轻量级锁 重量级锁1.5以前 synchronized通过操作系统的mutex lock实现,称为重量级锁1.6做了优化,引入了偏向锁和轻量级锁的概念偏向锁:认为没有线程会跟他抢资源,加锁解锁不会有额外的消耗。轻量级锁:认为竞争很小且其他线程会很快释放资源,加锁失败会自旋等待。对象刚new出来的时候,是可偏向的。第一个线程访问它的时候,修改对象头称为偏向锁,并修改threadId为自己。下一次再进来,比较threadId,如果是自己,就不需要做任何操作。第二个线程进来,看到这个对象的原创 2020-07-12 17:22:31 · 637 阅读 · 0 评论 -
Java获取两个日期中间的所有日期及Stream类,Lambda表达式使用
Java获取两个日期中间的所有日期及Stream类,Lambda表达式使用一、获取两个日期之间的所有日期二、Stream使用iteratelimitforEach三、lambda表达式一、获取两个日期之间的所有日期private static final String FORMAT = "yyyyMMdd";public List<String> getDates(String ...原创 2020-01-05 16:54:08 · 2711 阅读 · 0 评论 -
springboot2.x shardingjdbc单库分表
捣鼓了大半天… 终于成功了,亲测可用…注意依赖版本,我这里的spring boot 是2.x的。如果是1.x就不会有后面的那么多事了(就是不乐意用1.x,所以捣鼓了很久)。<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</arti...原创 2019-05-31 17:56:46 · 1470 阅读 · 0 评论 -
JAVA RMI 阿里云服务器连接超时问题
需求,A应用、B应用进行通讯,使用rmi,在本地测试完毕,部署到阿里云服务器。一直报如下错:java.rmi.ConnectException: Connection refused...查找资料后,发现:rmi有两个端口,一个是服务注册端口(默认1099),一个是通讯端口(不指定的话,随机分配)解决方案:在rmi服务端新增SMRMISocket 类public class SMRM...原创 2019-02-12 15:04:49 · 1243 阅读 · 0 评论 -
Java延迟队列 DelayQueue
需求下单完成,10分钟后,如果没有支付,发送消息,提醒支付。分析发消息好解决,这里主要讨论延时的问题,Java里,有个DelayQueue,可以实现延时的功能。public class Tt { private DelayQueue&amp;lt;OrderInfo&amp;gt; messageQueue = new DelayQueue&amp;lt;OrderInfo&amp;gt;(); //消息队列 ..原创 2019-02-16 12:36:57 · 1346 阅读 · 0 评论 -
ArrayList内存结构
ArrayList内存结构结论:ArrayList 存放数据的是数组ArrayList 存放数据的始终是一块连续的内存空间初始化ArrayList时,在内存中分配一块区域,存放数组添加元素,如果分配的空间已经用完,就开辟一块大的空间,将原数据复制过去。删除元素的时候,将删除元素右侧的所有元素左移一位以下是ArrayList部分源代码,上述结论由以下代码得出初始化ArrayLi...原创 2019-02-15 15:36:32 · 2452 阅读 · 2 评论 -
Java虚拟机(六) -类加载机制-加载器-双亲委派
类加载机制一、概述二、类加载过程三、名词解释一、概述类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading)七个阶段。其中,验证、准备、解析3个部分统称为连接(Linking...原创 2018-12-11 20:25:58 · 241 阅读 · 0 评论 -
Java虚拟机(五) -性能调优
一、分配大容量的堆内存,可能导致一次Full GC的停顿时间过长(网站不定期失去响应)。给虚拟机分配超大堆的前提:是有把握把应用程序的Full GC频率控制得足够低,至少要低到不影响用户使用。 譬如十几个小时乃至一天才会出现一次Full GC, 这样可以通过在深夜执行定时任务的方式触发Full GC甚至自动重启应用服务器来保持内存的可用空间在一个稳定的水平。控制Full GC频率的关键:应...原创 2018-11-15 19:23:46 · 211 阅读 · 0 评论 -
Java虚拟机(四) -虚拟机性能监控与故障处理工具
一、查看虚拟机进程状况(jps)功能:列出虚拟机执行进程显示虚拟机执行主类列表进程的本地虚拟机唯一ID(Local Virtual Machine Identifier, LVMID)命令格式:jps [options] [hostid]#hostid是RMI注册表中注册的主机名RMI:远程方法调用(Remote Method Invocation)。能够让在客户端Jav...原创 2018-11-13 19:56:31 · 232 阅读 · 0 评论 -
dubbo使用过程遇到的问题
一、java.lang.IllegalStateException: Failed to check the status of the service xxx.xx. No provider available for the service xxx问题:找不到服务提供者原因:提供者service加了版本号,消费者在调的时候,没加版本号。@Service(version = "1.0.0"...原创 2018-11-07 11:57:59 · 1576 阅读 · 2 评论 -
Java虚拟机(一) - 内存区域与内存溢出异常
运行时数据区1、 PC寄存器/程序计数器(Program Counter Register)概念:程序计数器时一块较小的内存空间,它可以看作时当前线程所执行的字节码的行号指示器。由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(多核处理器来说是一个内核)都只会执行一条线程中的指令。为了线程切换后能恢复到正确的执行位置,需要程...原创 2018-10-10 11:50:17 · 242 阅读 · 0 评论 -
Java虚拟机(三) - GC垃圾回收
一、什么时候需要回收Java使用可达性分析(Reachability Analysis)来判断对象是否存活。这个算法的基本思想是:通过一系列称为&amp;quot;GC Roots&amp;quot;的对象作为起始点,从这些结点向下搜索,搜索所走过的路称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,证明这个对象时不可用的。被判断为可回收对象。可最为GC Roots的对象包括:...原创 2018-10-16 14:26:03 · 169 阅读 · 0 评论 -
Java位运算的基础及使用(意义)
这几天在看HashMap的源码,但里面的位运算太多,看得有点晕。故,先整理位运算相关知识。在了解位运算的计算后,又在思考,使用位运算的意义是什么,毕竟平时开发基本没用过位运算。经大量的资料查找,整理了两个自己感觉比较好的位运算利用例子,特在此记录,分享。另外,毕竟位运算的代码可读性差,请大家谨慎使用。一、位运算基础1、位运算是针对整数的二进制进行的位移操作2、整数 32位 , 正数符号为...原创 2018-09-21 15:21:35 · 17304 阅读 · 9 评论 -
Java虚拟机(二) - 对象 创建流程、内存分配
对象的创建流程是否从虚拟机的视角,对象创建完成了,对于Java来说,对象创建才刚刚开始,方法还没有执行,所有字段都还是零虚拟机遇到一条new指令检查指令参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载解析和初始化过为新生对象分配内存执行类加载过程将分配到的内存空间都初始化为零值,不包括对象头虚拟机对对象进行必要的设置,例如对象是哪个类的实例,如何找到类的元数据信...原创 2018-10-11 14:33:50 · 305 阅读 · 0 评论 -
spring boot + mybatis 多数据源配置
本项目使用spring-boot + mybatis(tk.mybatis)项目结构如下1、设置springboot 启动类,禁用自动数据源配置@SpringBootApplication(scanBasePackages = "me.smallyellow.hhy", exclude = {DataSourceAutoConfiguration.class})@EnableWebPathpub原创 2017-10-27 17:32:17 · 1022 阅读 · 0 评论