自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

转载 事务隔离级别

http://www.zsythink.net/archives/1233 

2018-09-25 18:36:00 201

转载 如何在MQ中实现支持任意延迟的消息?

https://www.cnblogs.com/hzmark/p/mq-delay-msg.html什么是定时消息和延迟消息?定时消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消息。 延迟消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而...

2018-09-25 16:54:14 492

原创 Lombok 介绍

https://blog.csdn.net/MOTUI/article/details/79012846Lombok使用 介绍 在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。 IDEA中的安装 打开IDEA的Setting –> 选择Plugins选项 –> 选择Browse repositories –>...

2018-09-23 00:47:49 165

转载 深入浅出 Java 8 Lambda 表达式

http://blog.oneapm.com/apm-tech/226.html摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等。本文系 OneAPM 工程师编译整理。Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数...

2018-09-23 00:44:06 504

转载 JAVA 注解的基本原理

https://mp.weixin.qq.com/s/Na5ZU4CekGQfc1xYwuKuHQ以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高。于是就有人提出来一种标记式高耦合的配置方式,『注解』。方法上可以进行注解,类上也可以注解,字段属性上也可以注解,反正几乎需要配置的地方都可以进行注...

2018-09-16 23:39:15 131

转载 Redis 的 3 个高级数据结构

https://mp.weixin.qq.com/s/9i4IUif3n9gsQcTEVXHGPw平常我们我接触最多的是5个入门级数据结构:String,Hash,List,Set,Sorted Set。本文介绍3个高级数据结构:Bitmaps,Hyperloglogs,GEO。Bitmapsbitmaps不是一个真实的数据结构。而是String类型上的一组面向bit操作的集合。由于s...

2018-09-16 23:38:31 162

转载 全面了解 Nginx 到底能做什么

https://mp.weixin.qq.com/s/-tbku61HLKWXPoKypXGFHgNginx能做什么 1.反向代理 2.负载均衡 3.HTTP服务器(包含动静分离) 4.正向代理 以上就是我了解到的Nginx在不依赖第三方模块能处理的事情,下面详细说明每种功能怎么做反向代理反向代理应该是Nginx做的最多的一件事了,什么是反向代理...

2018-09-14 23:02:51 303

转载 通俗易懂的 Redis 的 5 种数据结构基础教程

https://mp.weixin.qq.com/s/Ts2EPyUsHP83TSJF-H28kwRedis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了。string 首先我们从string谈起。string表示的是一个可变的字节数组,我...

2018-09-14 23:01:54 172

转载 防雪崩利器:熔断器 Hystrix 的原理与使用

https://segmentfault.com/a/1190000005988895前言分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择.服务雪崩效应的定义服务雪崩效应是一种因 服务提供者 的不可用导致 服务调用者 的不可用,并将不可...

2018-09-10 01:18:26 190

转载 Java I/O模型从BIO到NIO和Reactor模式

Java I/O模型同步 vs. 异步同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行。异步I/O 多个请求可以并发地执行,一个请求或者任务的执行不会导致整个流程的暂时等待。用户线程发起I/O请求后仍然继续执行,当内核I/O操作完成后会通知用户线程,或者调用用户...

2018-09-09 01:39:45 127

转载 线程间通信剖析

CountDownLatchCountDownLatch适用场景Java多线程编程中经常会碰到这样一种场景——某个线程需要等待一个或多个线程操作结束(或达到某种状态)才开始执行。比如开发一个并发测试工具时,主线程需要等到所有测试线程均执行完成再开始统计总共耗费的时间,此时可以通过CountDownLatch轻松实现。CountDownLatch实例   1 ...

2018-09-09 01:39:12 94

转载 多线程开发关键技术

sleep和wait到底什么区别其实这个问题应该这么问——sleep和wait有什么相同点。因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点。wait方法是Object类的方法,这意味着所有的Java类都可以调用该方法。sleep方法是Thread类的静态方法。wait是在当前线程持有wait对象锁的情况下,暂时放弃锁,并让出CPU资源,并积极等待其它线程调用同一对象的n...

2018-09-09 01:38:43 263

转载 当我们说线程安全时,到底在说什么

多线程编程中的三个核心概念原子性这一点,跟数据库事务的原子性概念差不多,即一个操作(有可能包含有多个子操作)要么全部执行(生效),要么全部都不执行(都不生效)。关于原子性,一个非常经典的例子就是银行转账问题:比如A和B同时向C转账10万元。如果转账操作不具有原子性,A在向C转账时,读取了C的余额为20万,然后加上转账的10万,计算出此时应该有30万,但还未来及将30万写回C的账户,此时...

2018-09-09 01:37:57 168

转载 Annotation(注解)

概念Annotation是Java5开始引入的特性。它提供了一种安全的类似于注释和Java doc的机制。实事上,Annotation已经被广泛用于各种Java框架,如Spring,Jersey,JUnit,TestNG。注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效。这些元数据与程序业务逻辑无关,并且是供指定的工具或框架使用...

2018-09-09 01:37:02 166

转载 从ConcurrentHashMap的演进看Java多线程核心技术

http://www.jasongj.com/java/concurrenthashmap/本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为。同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1.8中ConcurrentHashMap的实现原理。原创文章,转载请务必将下面这段话置于文章开头处(...

2018-09-09 01:36:04 114

转载 正确理解Thread Local的原理与适用场景

http://www.jasongj.com/java/threadlocal/ThreadLocal解决什么问题由于 ThreadLocal 支持范型,如 ThreadLocal< StringBuilder >,为表述方便,后文用 变量 代表 ThreadLocal 本身,而用 实例 代表具体类型(如 StringBuidler )的实例。不恰当的理解写这篇文章的一...

2018-09-09 01:33:16 137

原创 java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁

https://blog.csdn.net/zqz_zqz/article/details/70233767之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况...

2018-09-09 01:11:59 174

转载 ConcurrentHashMap1.7和1.8的底层不同实现

https://my.oschina.net/zupengliu/blog/19300251.Hashmap和HashTable在线程安全方面的优劣?Hashmap多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,就会产生死循环获取Entry。HashTable使用synchronized来保证线程安全,但在线程竞争...

2018-09-09 00:45:18 10489 5

转载 深入理解 Java 线程池:ThreadPoolExecutor

https://juejin.im/entry/58fada5d570c350058d3aaad线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为...

2018-09-09 00:13:06 102

转载 SimpleDateFormat时间格式化存在线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一...

2018-09-08 23:56:53 142

转载 Java并发编程:线程池的使用

https://www.cnblogs.com/dolphin0520/p/3932921.html 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复...

2018-09-08 18:32:46 77

转载 Spring IOC 容器源码分析

http://www.importnew.com/27469.html Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring...

2018-09-08 11:22:30 159

转载 计算机基础知识

本文涉及的内容有:网络层次划分/TCP/IP协议、三次握手和四次握手/进程与线程/进程调度算法/死锁/高速缓存Cache/最近最久未使用置换算法LRU的JAVA实现1、网络层次划分为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Inter...

2018-09-08 01:16:02 132

转载 MYSQL-B+TREE索引原理

1.什么是索引?索引:加速查询的数据结构。2.索引常见数据结构:#1.顺序查找: 最基本的查询算法-复杂度O(n),大数据量此算法效率糟糕。#2.二叉树查找(binary tree search): O(log2n) 图1左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以...

2018-09-06 23:49:23 352

转载 hash冲突的四种办法

原文地址:http://blog.csdn.net/qq_27093465/article/details/52269862一)哈希表简介非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。    哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。哈希函数:一般情况下,需要在关键...

2018-09-04 23:53:09 291

转载 MySQL 主从同步延迟的原因及解决办法

Mysql主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主库从库数据不一致问题的及解决方案 一、主从数据库的区别从数据库(Slave)是主数据库的备份,当主数据库(Master)变化时从数据库要更新,这些数据库软件可以设计更新周期。这是提高信息安全的手段。主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存。(1) 主从分工其中Master负责写操作的负...

2018-09-04 23:31:29 81032 4

转载 最常问的MySQL面试题集合(三)

https://mp.weixin.qq.com/s/h6S9V8bPkfsFEdT30-R7mg问题27:简述MySQL分表操作和分区操作的工作原理,分别说说分区和分表的使用场景和各自优缺点。考点分析 分区表的原理 分库分表的原理 延伸: MySQL的复制原理及负载均衡 分区表的工作原理对用户而言,分区表是一个独立的逻辑表,但是底层MySQL将其分成了多...

2018-09-04 23:10:31 372

转载 巧用CAS解决数据一致性问题

https://mp.weixin.qq.com/s/KQgPa9SQKFKa34FOpryVCQ

2018-09-04 23:07:28 165

转载 volatile关键字详解

volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。 内存模型 程序在执行过程中,每条指令都是通过CPU来执行的,存在数据的读...

2018-09-04 23:06:02 197

转载 图文还原HTTPS原理

https://mp.weixin.qq.com/s/3NKOCOeIUF2SGJnY7II9hA

2018-09-04 23:04:38 189

转载 40个Java多线程问题总结

前言这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。 40个问题汇总1、多线程有什么用?...

2018-09-04 23:01:22 68

转载 高并发之synchronized

synchronized原理在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的synchronized方法时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。不同线程对同步锁的访问是互斥的。也就是说,某时间点,对象的同步锁只能被一个线程获取到!通过同步锁,我们就能在多线程中,实现对“对象/...

2018-09-04 23:00:49 475

转载 CodeReview常见代码问题

路线图 常见的问题常见的潜在代码问题是当前直接会导致BUG、故障或者产品功能不能正常工作的类别。空值:空值恐怕是最容易出现的地方之一。 常见错误有: a. 值为NULL导致空指针异常; b. 参数字符串含有前导或后缀空格没有Trim导致查询为空。 导致以上结果的原因主要有: 无此记录、有此记录但由于SQL访问异常而没查到、网络调用失败、记录中有脏数据、参数没传。原则上,...

2018-09-04 23:00:03 203

转载 Java注解解析-运行时注解详解(RUNTIME)

一 注解的定义注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明 。如果要对于元数据的作用进行分类,还没有明确的定义,不过我们可以根据它所起的作用,注解不会改变编译器的编译方式,也不会改变虚拟机指令执行的顺序,它更可以理解为是一...

2018-09-02 23:59:01 633 1

转载 深入剖析Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。  以下是本文的目录大纲:  一.什么是装箱?什么是拆箱?  二.装箱和拆箱是如何实现的  三.面试中相关的问题  若有不正之处,请谅解和批评指正,不胜感激。  请尊重作者劳动成果,转载请标...

2018-09-02 00:34:25 82

转载 Spring源码-AOP(七)-整合AspectJ

Spring AOP的实现已经臻于非常完善,而通过与AspectJ的整合使得AOP的使用简单且灵活。不论是XML还是注解,都实现了非侵入式的控制。而基于自动代理的基础上,整合的AspectJ也通过BeanPostProcessor扩展的方式实现细粒度的切面控制。XML方式通过以aop:config标签实现配置,注解方式则通过@Aspect声明切面类。两种方式底层的实现殊途同归,都是基于自动代理的基...

2018-09-02 00:32:37 292

转载 Spring源码-AOP(六)-自动代理与DefaultAdvisorAutoProxyCreator

框架存在的意义,简单来说就是将复杂的底层实现封装起来,并提供便捷的外部接口供用户使用。对于Spring AOP而言,不论是ProxyFactory还是ProxyFactoryBean,都不能满足实际业务中复杂的应用,用户不可能对每个使用AOP代理的类进行配置。这时通过一定规则自动发现和代理自然应运而生。在spring-aop工程的autoproxy目录构成了Spring AOP自动代理的基础,Ab...

2018-09-02 00:31:57 1640

转载 Spring源码-AOP(五)-ProxyFactoryBean

上一章中我们分析了ProxyFactory,它是Spring AOP核心的底层实现。然而硬编码的方式还是过于繁琐且不易使用,本章我们将讨论ProxyFactoryBean,它结合了ProxyFactory和Ioc中的FactoryBean扩展,使得可以通过XML配置的方式来实现Spring AOP。关于Spring AOP创建代理的具体实现本章将不会再赘述,而是主要讨论FactoryBean扩展结...

2018-09-02 00:31:21 444

转载 Spring源码-AOP(四)-ProxyFactory

本章来解析最基础的ProxyFactory的源码。有人会说,现在都没人用编码的方式来写AOP了,解析它有什么用呢?我想从两点强调下:不论是注解还是XML配置,其底层的实现还是通过编码的方式来组建相互之间的关系。可以说ProxyFactory的基本实现就是Spring AOP抛开一切配置后真正核心的东西。 我理解中优秀的框架都是不断演进的,逐渐演化从而形成强大的功能。从理解简单的实现逐步到了解...

2018-09-02 00:30:45 314

转载 Spring源码-AOP(三)-Spring AOP的四种实现

Spring AOP的实现从Spring自身的实现到集成AspectJ的实现,从硬编码到xml配置再到注解的方式,都是随着Spring的更新而不断演进。这一章我将介绍多种不同的实现方式,既为Spring AOP的实现及配置做一个粗略的指南,同时为后续源码的解析做一个引子。1.硬编码(ProxyFactory)以之前的浏览器举例,有一个Browser接口public interface...

2018-09-02 00:28:11 806

空空如也

空空如也

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

TA关注的人

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