自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田成荣

真正厉害的人都在默默的努力......

  • 博客(160)
  • 资源 (1)
  • 收藏
  • 关注

原创 【并发编程】--AQS实现原理

AQSlock之所以能实现线程安全的锁,主要的核心是AQS(AbstractQueuedSynchronizer),AQS提供了一个FIFO队列,可以用来实现锁以及需要同步功能的框架。称为AQS。AQS使用依靠继承来完成,子类通过继承自AQS并实现所需的方法来管理同步状态。ReentrantLock、CountDownLatch。AQS分为两种:独占和共享。独占锁模式下,每次只能有一...

2019-07-31 21:48:35 410

原创 【并发编程】--Condition底层实现原理

Conditionawait方法调用Condition的await()方法(或者以await开头的方法),会使当前线程进入等待队列并释放锁,同时线程状态变 为等待状态。当从await()方法返回时,当前线程一定获取了Condition相关联的锁。public final void await() throws InterruptedException { if (Thread...

2019-07-31 21:45:56 890

原创 【并发编程】--compareAndSet底层实现原理

compareAndSet实现原理compareAndSetHead private final boolean compareAndSetHead(Node update) { return unsafe.compareAndSwapObject(this, headOffset, null, update);}首先,用到了unsafe类,(Unsafe类是在sun.misc包下...

2019-07-31 21:43:21 1723

原创 【并发的艺术】--同步锁-ReentrantLock底层实现原理

同步锁锁是控制多个线程访问共享资源的方式,一个锁防止多个线程同时访问共享资源。Lock接口出现之前,java程序只能依靠synchronized关键字来实现同步锁。在java5以后增加的JUC的并发包并且提供了lock接口用来实现锁的功能。提供与synchronized类似的功能,比synchronized更灵活,显示的获取和释放锁。Lock锁的初步使用Lock是一个接口,核心的两个方法...

2019-07-31 21:42:13 477

原创 【并发编程】--CountDownLatch、CyclicBarrier、Semaphore

JUC中提供常用的并发工具类,CountDownLatch、CyclicBarrier、Semaphore。CountDownLatchcountdownlatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕再执行。从 命名可以解读到countdown是倒数的意思,类似于我们倒计时的概念。countdownlatch提供了两个方法,一个是countDown,一...

2019-07-31 21:34:28 283

原创 【并发编程】synchronized底层实现原理

synchronized原子性、可见性、有序性应用加锁的三种方式:1、普通同步方法,锁的是实例对象2、静态同步方法,锁的是当前类的对象。3、同步方法块,锁的是synchronized括号里的对象synchronized的字节码指令:对于同步块的实现使用了monitorenter和monitorexit指令,前面我 们在讲JMM的时候,提到过这两个指令,他们隐式的执行了Loc...

2019-07-31 21:31:58 260

原创 【并发编程】--volatile底层实现原理

1、volatile解决可见性使用缓存一致性。防止指令重排序使用内存屏障,保证有序性。有volatile变量修饰的共享变量,编译时会有lock前缀。volatile实现原则:·Lock前缀指令会引起处理器缓存回写到内存。(总线锁、缓存锁)·一个处理器的缓存回写到内存会导致其他处理器的缓存无效。(MESI、嗅探)缓存一致性协议:处理器上有一套完整的协议,来保证 Cache 的一致...

2019-07-31 21:30:01 381

原创 Spring-Bean的生命周期

12345

2019-07-07 21:43:23 188 1

原创 SpringMVC起步

起飞

2019-06-30 21:36:22 205 1

原创 spring实战-DI实站【bean装配】

自动化装配

2019-06-23 23:05:27 192 1

原创 final

final学习

2019-06-16 21:44:02 170 1

原创 【jvm】案例分析

1、查看垃圾回收器运行java -version32位jvm分server和client,64位jvm只有server查看gc日志cms 是为了gc时减少停顿时间。cpu到100%2、JDK自带的监控工具JDK自带的 监控工具https://docs.oracle.com/javase/8/docs/technotes/tools/windows/toc.ht...

2019-06-09 22:14:40 299 1

原创 【MySQL】之性能优化-事务+锁+MVCC

事务1、概念**数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作; 事务是一组不可再分割的操作集合(工作逻辑单元);**是什么**update user_account set balance = balance - 1000 where userID = 3; update user_account set balance = balance +1000 where us...

2019-05-30 08:27:49 306 3

原创 【MySQL】之性能优化-索引+查询优化

索引A、索引真的去了解正确的创建合适的索引是提升数据库的查询性能的基础。索引是为了加速对表中数据的检索而创建的一种分散存储的数据结构。是什么为什么1、极大地减少存储引擎需要扫描的数据量。2、把随机io编程顺序io。3、帮助我们在分组、排序等操作时避免使用临时表。B、索引为什么选B+Tree?二叉树到平衡二叉树再到B-Tree、B+Tree。平衡二叉树B-Tree(多路平衡查找...

2019-05-26 23:05:51 442 1

原创 mycat使用【大数据系统数据库性能优化】

2019-05-19 21:46:14 491 1

原创 RabbitMQ-原理【从生产者近MQ出消费者过程】

样式再修改首先需要明确,效率与可靠性是无法兼得的,如果要保证每一个环节都成功,势必会对消息的收发效率造成影响。如果是一些业务实时一致性要求不是特别高的场合,可以牺牲一些可靠性来换取效率。1 代表消息从生产者发送到Exchange; 2 代表消息从Exchange路由到Queue; 3 代表消息在Queue中存储;4 代表消费者订阅Queue并消费消息。1、确保消息发送到RabbitMQ服...

2019-05-12 21:36:17 970 1

原创 RabbitMQ从无知到了解

慢慢学习中。

2019-05-05 23:02:08 188

原创 springBoot项目使用redis实例操作

【1、pom文件引入redis】<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId>&lt...

2019-04-07 19:06:36 483

原创 redis-五种数据类型入门到实例精通

初始-redis特点:速度快数据存在内存中。C语言实现,“距离”操作系统越近执行速度越快。单线程,预防了多线程可能产生的竞争问题。Redis源代码精打细磨。键值对的数据结构存储五中键值对的形式,许多的应用场景,提高开发效率。功能多键过期发布订阅lua脚本事务功能流水线简单稳定源码少单线程不需要依赖操作系统的类库,自己实现了事件处理的先关功能。稳定到几乎没有...

2019-03-31 21:56:43 265

原创 zookeeper的2PC、3PC、ZAB协议的深入讲解

zookeeper解决分布的问题主要解决分布式环境下的服务协调问题。1、防止单点故障搭集群,满足高性能分担客户端的请求流量,高可用某一个宕机不影响数据和提供服务的可能性。2、数据一致性-2PC3PC3、leader选举-ZAB leaderg挂了如何恢复数据?2PC:两个阶段。阶段一:提交事务请求1.事务询问协调者向参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待参与者...

2019-03-24 22:37:25 483

原创 zookeeper认识

1/2/3/

2019-03-17 22:16:46 178

原创 分布式系统的基础HTTP及HTTPS协议

2.2分布式系统的基础HTTP及HTTPS协议HTTP特点http是无状态的。本状态不知道上一个状态。解决无状态,cookie和session交互使用,现在用token。HTTPS怎么实现安全的?1.对称加解密。–不安全2.非对称。(公钥、私钥) 使用CA认证。1、先CA认证C私钥给server的公钥加密。CA的公钥内置在浏览器中。2、客户端发请求。server端返回。3、客户端验...

2019-03-10 21:41:38 195

原创 【分布式】—架构设计

1.2、分布式架构设计1、SOA和微服务SOA 各模块间相互调用,ESB来隔离各模块,各模块都走ESB。特点:1.有序。2.复用。3.高效。微服务架构:业务需要彻底的组件化和服务化特点:1.组件化。2.按业务能力划分服务和开发团队。3.去中心化。4.基础设施的自动化。差异:1、微服务没有强调ESB,而是到各个模块去组件化。&nbsp; &nbsp; &nbsp; &nbsp; &nbsp...

2019-03-03 19:22:23 298

原创 Lombok-通俗的讲解

Lombok是什么减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。常用注解• val:用在局部变量前面,相当于将变量声明为final• @NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)• @Cleanup:自动管理资源,用在局部变量之前,在当前变量范...

2019-02-17 21:05:17 201

原创 JVM类加载过程—详解

类加载class加载验证流程加载获取类的二进制,转为方法去数据结构,在Java堆中生成对应的Java.lang.Class对象。链接验证(验证class文件)文件格式的验证(1)是否以0xCAFEBABE开头。(2)版本号是否合理元数据验证(class内基本的语法语义的检查)(1)继承的父类是否存在。(2)非final类继承了final类(不可以的)。(3)实现...

2019-02-10 21:07:26 318

原创 2018年总结

项目项目项目

2019-01-31 16:06:30 218 2

原创 ionic实现动态轮播图

温馨提示Ionic和angular在不断发展,项目也在不断更新迭代,此文档必然是有时效性的,继而温馨提示读者在使用此文档时,注意项目架构。如有变化,请持续更新此文档。一.所需资源Ionic4二.集成具体步骤2.html代码&lt;ion-slide *ngFor="let option of data ; let i=index "&gt; &lt;ion-card...

2019-01-20 21:36:42 1006 4

原创 JVM—GC参数、GC回收算法

后期将改成导图。

2019-01-13 20:54:34 198 1

原创 JVM类加载过程

2019-01-06 22:46:36 186

原创 JVM中GC算法详细通俗讲解

2018-12-30 20:55:54 259

原创 springBoot整合mybatisPlus——实战

2018-12-23 21:40:34 335 2

原创 spring和springMVC父子容器的理解

spring和springMVC父子容器的理解

2018-12-09 21:23:32 256

原创 angular项目结合微信扫一扫的js换成ts

js:在index.html 引入在typings.d.ts定义:declare var wx:any;ts:装东东 cnpm install weixin-js-sdk --save cnpm install @types/node --save-dev代码加入:declare var require: any;var wx = require(‘weixin-j...

2018-11-25 23:07:47 1754 3

原创 SpringMVC的工作原理

大概明白了,我来说一说。

2018-11-18 23:56:10 143 1

原创 MyBatis事务管理&缓存机制

2018-11-11 19:54:45 244 1

原创 MyBatis基本用法

1、MyBatis的关键核心对象SqlSessionFactory和SqlSessionSqlSessionFactory是单个数据库映射关系经过编译后的内存镜像。此对象实例是通过SqlSessionFactoryBuilder对象加载mybatis配置文件产生,每一个MyBatis的应用程序都是以一个SqlSessionFactory对象的实例为核心。是线程安全的,SqlSessionFa...

2018-11-04 21:50:43 217

原创 自考总结

自考,这次是报着最后一次学习自考的心态来学习的。应该不要说是学习,是思想的提升是对历史的认知。这次学习的是马克思和近代史,我是个理科生终于有个机会学习近现代史和马克思了呢。近代史马克思之前的巨人是局限在米老师和马爸爸线内,这次学习后我的巨人又高等级了,马克思。哈哈...

2018-10-28 20:57:54 280 18

原创 MyBatis入门

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyBatis是一个支持普通查询、存储过程和高级映射的持久层框架。并不支持纯粹的面向对象,允许开发人员自己编写SQL语句,这样更加灵活。它是一种半自动实现。A、配置文件1、配置文件内容:``` &lt;?xml version...

2018-10-28 20:16:23 316 14

原创 Spring Boot 结合Swagger2

成功!

2018-10-21 21:38:54 217 5

原创 Spring Boot 新建项目使用idea

2018-10-14 18:42:54 203 3

Nginx+Keepalived

Nginx+Keepalived 技术利用心跳机制、反向代理、负载均衡提高服务器的安全可靠性。

2017-04-28

空空如也

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

TA关注的人

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