- 博客(30)
- 收藏
- 关注
原创 java开发必备工具大全(已完成迁移)
1.mysql数据库安装:https://jingyan.baidu.com/article/a3f121e4a6eb67fc9052bbf4.html2.redis下载以及安装:http://www.runoob.com/redis/redis-install.html使用cmd命令:redis-server --service-install redis.windows.con...
2019-11-18 13:47:07
225
原创 Diablo项目总结(包含线程池(countDownLatch)、EventBus、长轮询、一致性hash)
详见本地项目 diablo-new,总结文本 yiReadMe:注:yiReadMe 是我自己看项目过程中的一些记录,方便回忆项目以及需要借鉴的代码的java文件1.此项目核心:使用的配置更新即响应,通过 EventBus 事件总线来实现即时响应, 具体使用见 EventDispatcher.java 以及 PullingSupport.java 中的长轮询及其实现(url 在 Cli...
2019-10-10 08:39:51
216
原创 分布式理论基础认知:一致性哈希算法(已完成迁移)
一:一致性hash算法 一致性hash场景描述: 假如有三台缓存服务器,此时一个数据要缓存到其中一台,并且要一次查询快速定位。一种简单实用的方法就是 对此时数据标识(key)进行hash取值,然后根据hash值与服务器数量取余获得余数,此数代表了那一台服务器, 此时数据就缓存在这台服务器上。但是会有个问题,当缓存服务器数量增加或者减少时,原...
2019-10-07 20:55:04
315
原创 Mybatis原理、源码解析
引言:jdbc连接数据库 1.在开发环境中加载指定数据库驱动 2.在java程序中加载驱动程序,代码:Class.forName("com.mysql.jdbc.Driver"); 3.创建数据连接对象。通过 DriverManager 类创建数据库连接对象 Connection 4.创建 Statem...
2019-10-01 19:31:01
119
原创 jvm内存模型(主存副本以及共享内存安全问题的产生以及synchronized线程安全原理和volatile关键字)
一:线程数据模型与安全: 多核心(cpu)中,虚拟机是 一个主存 对应多个核心(cpu),一个cpu对应着多个内存副本,(可以理解为主存对应着堆内存,而内存副本对应着各个cpu的线程所属的内存,线程私有)。而一个线程取值时是从主存中取出复制到 副本中,而修改了值之后,会把修改后的值重新写入主存,在这个过程中,由于各个线程都有不同的值,因此如果多线程只读是没问题的,但是读...
2019-10-01 19:24:29
357
原创 JVM:类加载机制
一:类加载机制定义: 虚拟机把描述类的数据从 Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型 java中,类型的加载和连接过程都是在程序运行期间完成(其他的语言在编译时需要进行连接工作),在类加载时稍微增加一些性能开销,但是提供了高度的灵活性。java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态...
2019-09-27 17:09:24
107
原创 框架源码研习:分布式事务源码心得
此分布式框架为TCC(try、confirm、cancel):是最终一致性事务解决方案,也就是所谓的柔性事务。一:一切的开始始于 HmilyTransactionBootstrap由于实现类 ApplicationContextAware 接口,因此在 context容器启动后,会立即执行其 setApplicationContext()方法,如下: * 实现Applicatio...
2019-09-15 20:47:34
449
原创 dubbo实践以及原理分析
一:RPC---远程过程调用,java里也可以叫远程方法调用,只要能通过协议从一台服务器调用到另外一台服务器的服务信息的协议都叫RPC协议,因此 http、tcp、socket都是rpc协议。二:Dubbo核心原理: dubbo默认长连接,使用tcp协议传输,dubbo中有许多Filter实现类,其中 ConsumerContextFilter 是消费端调用dubbo服...
2019-08-22 22:45:50
175
原创 分布式事务---tcc
分布式几种方式:TCC、CC、XA等tcc是分布式中的最终一致性解决方案,就是牺牲强一致性,满足最终结果的一致性解决方案。主要使用示例:/** * 在此处通过rpc接口调用,调用用户余额以及库存接口,实现:扣除余额以及减少库存量 * 在此处定义confirm 以及 cancel方法 * @param order 订单实体 */@Override@Hmily(confirm...
2019-08-18 19:57:49
422
原创 Spring及其Mvc流程解析
一:springMvc启动流程: 1.1 容器一启动或者关闭,会触发监听器:ServletContextListener 的事件(实现 EventListener接口),ServletContextListener接口含有两个方法:contextInitialized()以及 contextDestroyed() 分别是容器(tomcat)启动以及销毁时调用。其他实现了Servle...
2019-08-06 15:19:14
225
2
原创 线程特性使用集锦(threadLocal、并发容器(关于消费者生产者思考)、停止线程最佳实践)
一:ThreadLocal<T> local = new ThreadLocal<>(); 如: ThreadLocal<Long> startTime = new ThreadLocal<>(); 使用: startTime.set(System.currentTimeMillis()); ...
2019-06-18 22:49:00
180
原创 Aop终极奥义
一:Aop也能实现过滤拦截操作,那么 Aop和拦截器、过滤器之间的区别: 1.过滤器是作用于url,拦截器也是作用于url,不同的是过滤器拦截所有的请求,而拦截器仅仅拦截方法,Aop是作用于所有方法(包括controller以及service)也就是说Aop的拦截作用范围小,但是他的细致程度是最高的,不像过滤器拦截器仅仅针对一个url进行拦截,没有特定的条件 2.三者...
2019-06-18 22:30:12
141
原创 ssm基于shiro-redis 实现session共享(已完成迁移)
shiro.xml 配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:p...
2019-05-20 09:21:44
869
翻译 java虚拟机(五):类文件结构
1Byte(字节) = 8bit(位);一:Class类文件的结构: 1.1:Class文件 Class文件是一组以 8 位字节为基础单位的二进制流,当遇到8位字节以上空间的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。Class文件采用一种类似于C语言结构体的伪结构来存储,它只有两种数据类型:无符号数和表 1.2:无符...
2019-02-27 15:39:21
180
原创 Spring、mysql事务特性的理解总结(已完成迁移)
导论:Spring事务有四种特性:ACID,五种隔离级别:default(默认为当前数据库使用的隔离级别)、read_uncommitted、read_committed、repeatable_read、serializable,七种传播行为:默认为required一:事务的传播行为: 也就是一个事务传到另外一个事务或者没有事务的方法上面。spring默认的事务传播行为为:P...
2019-02-14 23:52:47
1387
原创 MySQL技术内幕 五 :索引与算法
一:索引概述:InnoDB支持两种常见索引,一种是B+树索引一种是哈希索引。哈希索引是自适应的,引1擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表里生成哈希索引 B+树索引就是传统意义上的索引,这是关系型数据库中最常用、有效的索引、B+树索引的构造类似于二叉树,根据键值快速找到数据。 记住:B不是二叉(binary),而是代表平衡(balance),从最早的平衡二叉树...
2019-01-17 21:24:28
182
原创 数据结构与算法:数据结构概念(已完成迁移)
导论:什么是数据结构:指的是一种外在的数据展示的形式。算法:计算的方法,可以理解为完成某一个过程中的执行思路。一:基本概念 1.数据结构:对数据的一种存储和组织方式,相互之间存在一种或者多种特定关系的数据的集合。数据就是存储的 有用的信息 数据元素:数据的基本单位,又称节点、元素 2.数据整体结构:逻辑结构、存储结构、运算 三者构成数据完整结构二:数据结构分类...
2019-01-17 21:23:59
3791
原创 java虚拟机(二)垃圾收集器与内存分配策略
一:判断对象是否死亡方法: 1.引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器加1,当引用失效时,计数器减1,任何时刻计数器为0的对象就是不可能再被使用。 痛点:很难解决对象之间的相互循环引用的问题。如: 因此两对象互相引用但是偏偏又不会再被调用,导致回收不了 2.根搜索算法: ...
2019-01-17 21:23:38
107
原创 Redis实战应用 (分布式锁,已完成迁移)
一:为何使用分布式锁: 在单个应用中,多线程下可以使用 普通的锁 如:Synchronized 关键字以及 Lock(重入锁)对公共资源进行锁定,防止多线程冲突,但是在分布式系统中如何解决,如果使用传统的锁,只能锁定对应于该系统中的一个资源,n个系统就有n个线程可以获取同一个锁,因此就会导致资源冲突,因此需要使用分布式锁,来对分布式应用进行锁的处理。二:使用Redis实现(仅...
2019-01-17 13:39:31
729
翻译 java虚拟机(三)虚拟机性能监控与故障处理工具
一:jps : 虚拟机进程状况工具: jps(JVM Process Status Tool) ,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称,以及进程的本地虚拟机的唯一id二:jstat: 虚拟机统计信息监视工具: jstat(JVM Statistics Monitoring Tool )是用于监视虚拟机各种运行状态信息的命令行工具。可以显示...
2019-01-15 15:34:28
116
原创 高性能mysql(二)schema设计以及sql执行、优化(已迁移)
1.索引覆盖:因为使用B+TREE存储索引数据(索引也是数据库的数据),因为叶子节点上存储着数据,其他索引也是通过主键去查找数据,如果可以直接把索引的数据读出使用而不用再次进入数据库表中进行查询操作,可以极大地提高效率(当然被查询的数据也必须在索引这个数据结构中)。注:索引数据是索引的索引集合(包括主键以及其他普通索引)。2.explain: using index:表示数...
2018-12-05 09:18:44
266
原创 javaweb技术内幕(springMvc工作机制和设计模式)
一:springMvc的总体设计: 要使用springmvc只需要在web.xml中配置一个DispatcherServlet.如下:再定义一个dispatcherServlet-servlet.xml配置文件:简单的基于springMvc的应用创建完成。二:工作原理主要看DispatcherServlet:结构图:DispatcherServ...
2018-09-19 07:33:56
328
原创 javaWeb技术内幕之tomcat系统架构
一:tomcat总体架构图tomcat的心脏是两个组件:connector和container,connector可以被替换,一个container可以选择对应多个connector,多个connector和一个container形成了一个service,有了service可以对外提供服务,但是service还要一个生存环境,必须有人给她生命,那就非server莫属。所以整个tomcat的...
2018-09-10 21:58:39
492
原创 http简单理解与认识(DNS以及CDN,不想迁移)
一:发起http: 发起一个http请求和如何建立一个socket连接区别不大,浏览器在建立socket连接之前,必须根据地址栏里输入的url域名DNS解析出ip地址,再根据ip地址和默认80端口与远程服务器建立socket连接,然后浏览器根据这个url组装成一个get类型的http请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.re...
2018-09-05 23:22:53
278
原创 MySQL技术内幕 七:锁(包括乐观悲观锁)(已迁移)
一:锁: 锁是数据库系统区别于文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。InnoDB存储引擎会在行级别上对表数据上锁,不过在数据库内部其他地方也使用锁,从而允许对多种不同资源提供并发访问。例如,操作缓冲池中的LRU列表,删除。添加。移动LRU列表中的元素,为了保证一致性,必须有锁介入。锁是为了支持对共享资源的并发访问。innodb不需要锁升级,因为一个锁和多个锁...
2018-08-15 17:23:29
160
原创 Spring的一些理解(容器方面)
一:可以看出,spring核心组件只有三个:core、context、bean。构成骨骼二:spring是面向Bean的编程,因此bean是核心。就像演出的演员一样。为什么如此重要?因为spring解决了一个非常关键的问题。它可以让你把对象之间的依赖关系转而用配置文件来管理。也就是它的依赖注入:在此处就像是set注入一样,注入关系在Ioc容器中管理,而Ioc容器就是被Bean包裹的对象。S...
2018-08-14 13:49:53
449
原创 用线程工厂创建线程
1.工厂模式/工厂public class MyThreadFactory implements ThreadFactory { private int counter;//线程数量 private String name;//线程名称 private List<String> stats;//线程对象信息 public MyThreadFacto...
2017-11-25 14:59:00
185
原创 索引及数据结构(不想迁移)
索引及数据结构文件系统:柱面。磁道。扇区 (确定文件地址)索引:一种数据结构,帮助高效获取数据的数据结构id addr1 0x12342 0x3242 直接定位如果没有索引,则从文件中一个个读取,然后比对,所以可能会发展成全盘扫描。但如果有索引的话,可以直接读取文件地址,然后找到该数据对应的磁盘地方。获得数据。二者其实原理一样,索引也可能是一个文件...
2017-10-23 22:27:00
115
原创 spring源码心得(二)
spring源码心得(二) 可以看出:不同的resource应用于不同的resourceLoader,比如fIleSystemXmlApplicationContext 用FileSystemResource 读取 systemFileXml,根据情况调用那个application与resourceLoader器,在底层其实就是获取File...
2017-10-17 15:08:00
107
原创 关于spring源码的一些心得(一)
关于spring源码的一些心得(一) 总结:通过前面的一些认识,可以大致认为,ioc容器就是获取一些需要使用的对象如pojo等的引用,相当于new 而ioc容器的作用也就是用于此处,用于获取或者读取对象实例,它的含义是经过继承或者实现接口后,来获取在它内部的对象的实例,也可以通过让classpath...
2017-10-16 17:12:00
95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人