自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 分享--能让你领悟真谛的文章

文章目录一 闲聊二 分享三 结尾 一 闲聊 今天是十月二十四日,也就是传说中的程序员日,哈哈,还是女朋友给我发了一个节日快乐我才想起来 因为过节,所以早点下班,但是呢,我又不想早点走,所以就来瞎扯一会,我是一个重度的知乎迷,每天都要花很多时间打开知乎看一些话题(尽管有的话题毫无意义,哈哈) 但...

2019-10-24 18:32:53

阅读数 66

评论数 0

原创 Redis

文章目录一 特性二 基本概念redis的发布/订阅模式redis的高性能部署模式Master-Slave模式Sentinel模式cluster模式 一 特性 redis的特性: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis...

2019-10-10 17:43:56

阅读数 22

评论数 0

原创 Elasticsearch

一 简介 声明:本文并不是对于elasticsearch做出的官方解释,里面含有一些个人的理解以及专业术语表诉的来源介绍 在我们使用es的时候,我们首先要明白,elasticsearch是一个开源分布式的搜索引擎,开源是es使用java的技术,底层基于Lucence做索引和存储而建立的搜索...

2019-09-16 10:19:07

阅读数 81

评论数 0

原创 ThreadLocal

文章目录一 简介二 源码三 疑问 一 简介 面试问,synchronized和ThreadLocal的区别是什么? 这个问题很好理解,synchronized是jvm对于多线程并发情况下提供的一种互斥锁的机制,而Threadlocal是为解决多线程程序并发提供的一个新思路, Threadloca...

2019-09-12 13:59:55

阅读数 114

评论数 0

原创 Proxy

文章目录一 描述二 源码三 dubbo的Proxy 一 描述 dubbo的源码中,还有两个关于javassist技术和jdk proxy的扩展, javassist:动态编程,通过jdk中的JavaCompiler接口,能够直接对一个已经存在java class文件进行编译,也可以在内存中动态生...

2019-09-10 19:40:22

阅读数 191

评论数 0

原创 构想

最近一段时间因为从原来的公司裸辞,前前后后也面试了很多大型的互联网公司和一些偏企业级的软件公司,其中也拿到了一些offer,前后经历了有半个多月的时间吧,中间的经历也倒是曲折波澜, 笔者是一个杭州的财经类大学的计算机科学与技术专业 出生的一个小小的本科生,在技术探索和后端开发的道理上一走就是天黑...

2019-09-03 22:06:02

阅读数 95

评论数 0

原创 Class.forName(String name)与ClassLoader.loadClass(String name)的区别

一 介绍 spring源码中,ClassUtils工具类对于Class字节码的处理做了大量的工具封装 其中,根据类的文件描述获取对应字节码的方法forName(String name)可谓是对于Class.forName(String name)和ClassLoader.loadClass(St...

2020-01-08 16:16:29

阅读数 27

评论数 0

原创 Class和ClassLoader关于getResource(),getResourceAsStream()的区别

1 介绍 在java开发中,有一个关于文件获取的方式是必不可少的。比如,我们需要获取到对应的classpath路径下的一个文件,或者是我们在看spring源码的时候,经常看到ClassPathResource这个类 其内部的实现方式都是基于Class或者ClassLoader的getResour...

2020-01-04 13:29:51

阅读数 80

评论数 0

原创 java中BO,VO,DTO,DO等之间的转换

文章目录1 介绍2 转换2.1 通过get,set方法进行类型转换2.2 基于反射的机制2.3 基于cglib字节码修改 1 介绍 阿里的java代码开发规范中,关于各个层的命名规范是这么定义 这里面有我们比较常见的POJO对应的实体定义格式,其中 VO(View Object):是针对于视图...

2019-12-26 23:18:48

阅读数 16

评论数 0

转载 业务逻辑中如何更好的处理空值?

文章目录1 场景2 问题现场2.1 深入listUser研究2.2 深入研究get方法2.3 深入入参 1 场景 存在一个UserSearchService用来提供用户查询的功能: public interface UserSearchService{ List<User> li...

2019-12-24 15:17:47

阅读数 17

评论数 0

原创 创建线程池需要注意的事情

1 介绍 阿里的java代码规范有一条是强制建议开发者不要使用Executors创建线程池。 而是建议我们使用原生的ThreadPoolExecutor进行创建,既然这么建议了,自然是有它建议的道理,下面我们就来简单的分析一下为什么不推荐我们使用Executors进行创建。 2 分析 作为一个j...

2019-12-20 17:32:44

阅读数 25

评论数 0

原创 idea编译Spring源码

文章目录1 开头1 问题 1 开头 不得不说构建spring源码阅读环境真的很复杂,自己之前构建的spring源码环境被一不小心删掉了,但是重新import build的时候是出现各种错误(源码一个没改), 大部分的错误其实都是和网络都关,源码中有关于IDEA 和 Ecplise 构建的说明文档...

2019-12-18 23:10:51

阅读数 14

评论数 0

原创 linux脚本

文章目录1 理论2 语法2.1 & 和 && ,| 和 || ,&> 和 > 的区别2.2 /dev/null2.3 2>/dev/null 和 >/dev/null 2>&1 和 2>&1>/dev/nul...

2019-12-11 16:56:20

阅读数 29

评论数 0

原创 代码设计

文章目录介绍如何写好业务代码?代码整洁之道--观后感 介绍 当你十分纠结新创建的一个类如何命名,或者创建一个方法如何给他起一个比较富有直译的方法名的时候,这个时候,束缚你的并不是你的代码能力,有时候就是你对于代码整体逻辑的设计的能力,而这个能力,是需要你长期的代码编写和代码设计的过程中,慢慢锻造...

2019-12-11 09:22:46

阅读数 140

评论数 0

原创 部署策略

文章目录一 介绍二 部署能力的演变2.1 原始部署2.2 脚本化2.3 平台化2.4 脚手架 一 介绍 在我们日常的开发流程中,对于单体架构的服务而言,我们可以通过简单的命令进行启动部署,但是对于多体架构和容器化的服务而言,我们可以通过容器脚本的方式进行部署的策略,这样可以大大的节省人力资源成本...

2019-11-25 10:58:35

阅读数 28

评论数 0

原创 《高性能Mysql第三版》读书笔记

文章目录一 简介二 理论三星系统原则聚簇索引和非聚簇索引覆盖索引使用索引扫描来做排序 一 简介 这篇博客中的知识点,算是在阅读《高性能Mysql第三版》这本书的一个读书笔记,有一点比较尴尬的事情是我并没有买这本书,而是下载了这本书的PDF版本进行阅读(无奈原书太贵)。 但是,还是要强烈的打一个广...

2019-11-11 18:42:14

阅读数 67

评论数 0

原创 mysql中的InnoDB引擎是否支持Hash索引

文章目录问题延伸 问题 这个问题之前我一直没有注意(压根没有好好看),但是当我有次在一个innodb引擎的表中创建hash索引的时候,只要一保存,它就会自动把我创建成BTree类型的索引。 一番纳闷之后,学习才知:InnoDB引起有一个特殊的功能叫做"自适应哈希索引(adaptive...

2019-11-11 15:16:42

阅读数 51

评论数 0

原创 事务的隔离级别?幻读和不可重复的区别

文章目录一 定义一 解释Read-Uncommited(读未提交)Read-commited(读已提交)Repeatable-Read(可重复读)Serializable(串行化)三 什么是不可重复读,什么是幻读不可重复读幻读 一 定义 mysql的事务隔离级别一共有四个: 读未提交(Read...

2019-11-11 11:36:59

阅读数 38

评论数 0

转载 分布式系统架构演进过程

文章目录前言1. 概述2. 基本概念分布式高可用集群负载均衡正向代理和反向代理3. 架构演进3.1 单机架构3.2 第一次演进:Tomcat与数据库分开部署3.3 第二次演进:引入本地缓存和分布式缓存3.4 第三次演进:引入反向代理实现负载均衡3.5 第四次演进:数据库读写分离3.6 第五次演进:...

2019-11-08 17:32:57

阅读数 34

评论数 0

转载 设计一个电商平台积分兑换系统

文章目录简介1、拉开差距的一类面试题2、业务需求的描述3、对业务流程的思考4、物流配送进度查询,考虑到了吗?5、事务的保证6、消息中间件的引入7、重试机制的引入8、引入幂等性机制9、对这类面试题的总结 简介 本博客转载至:狸猫技术窝 公众号 作者:原子弹大侠,阿里高级技术专家 1、拉开差距的一类...

2019-11-07 19:05:05

阅读数 39

评论数 0

转载 分布式事务和二阶段提交(2PC),三阶段提交(3PC)

文章目录前言1 分布式事务2 理论基础2.1 CAP 理论(1)CP架构(可用性降低)(2)AP架构(一致性降低)2.2 BASE 理论3 分布式事务协议3.1 X/Open XA 协议3.2 2PC:二阶段提交协议3.3 3PC:三阶段提交协议4 解决方案4.1 强一致性分布式事务4.2 最终一...

2019-11-07 15:43:29

阅读数 15

评论数 0

原创 Processor-强大的注解处理器功能

文章目录一 简介二 正文1. 概念2.Processor2.1 注解处理器的运行2.2 注解处理器的定义3.代码 一 简介 在上一篇文章中,google-auto之自动生成组件化文件 ,我是简单的介绍了google的开源框架auto,其中官方的文章中,也有这么一句话: 其实,auto的内部核心...

2019-11-05 13:33:28

阅读数 16

评论数 0

原创 google-auto之自动生成组件化文件

一 简介 google的开源框架auto是一个自动生成java相关代码的解析工具 通过AutoFactory和AutoService等的相关模块,我们能够实现代码以及对应配置的自动生成。 相关的API文档参考:readme.md文档:https://github.com/google/auto/...

2019-11-04 17:14:53

阅读数 114

评论数 0

原创 分布式系统架构--服务降级和熔断

文章目录参考一 服务降级1,降级评判2,降级等级3,降级方式二 服务熔断1,服务熔断和服务降级的比较1,服务熔断中需考虑的设计2,服务熔断恢复需注意的问题三 Hystrix组件 参考 《亿级流量网站核心架构》,高并发之服务降级与熔断 一 服务降级 由于爆炸性的流量冲击,对一些服务进行有策略的放弃...

2019-10-27 16:00:55

阅读数 132

评论数 0

原创 分布式系统架构--限流

文章目录一 什么是限流二 常见的限流算法1,计数器2,令牌桶算法3,漏桶算法4,区别三 限流场景1,应用级限流2,分布式限流3,接入层限流 一 什么是限流 在开发高并发系统时,有很多手段来保护系统,如缓存,降级和限流,限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的请求进行限速...

2019-10-26 23:50:57

阅读数 26

评论数 0

转载 Nginx的IO模型详解

一 介绍 在Nginx和Redis这两大中间件中,都是使用了IO多路复用的IO模型,其中 Redis是经典的单线程模型,非阻塞的io,redis使用epoll作为io多路复用技术的实现,在加上Redis自身的事件处理模型将epoll中的链接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间,...

2019-10-26 16:20:15

阅读数 50

评论数 0

原创 业务设计原则--幂等设计

文章目录一 介绍二 问题什么是幂等性如何做幂等设计应用程序的幂等操作通过状态机设计数据库方面的考虑 一 介绍 在传统的单体应用架构中,即同一个进程内,对于一个函数,或者一系列的函数调用,结果只有两种,要么成功,要么失败(我们可以通过事务的方式控制多个函数的事务调用) 但是在分布式架构系统中,服务...

2019-10-24 23:03:11

阅读数 23

评论数 0

原创 业务设计原则--防重设计

文章目录一 引言一 正题支付场景下遇到的问题解决支付遇到的问题异常补偿机制防重设计(通用简单性的设计思路) 一 引言 《亿级流量网站架构核心技术》一书中关于业务设计的原则中第一个提到的就是防重设计,那我们就来好好的学习对应的防重设计是如何体现在复杂的支付系统中。 声明:本博客是个人的实际学习中,...

2019-10-24 14:33:10

阅读数 30

评论数 0

原创 Kafka-高性能的分布式消息队列

文章目录前言一 简介二 架构1 zookeeper在kafka集群中的作用1.1 Broker注册1.2 Topic注册1.3 生产者负载均衡1.4 消费者负载均衡1.5 分区与消费者的关系1.6 消息消费进度Offset 记录1.7 消费者注册2 kafka如何保证数据的可靠性和一致性3 kaf...

2019-10-21 18:24:31

阅读数 79

评论数 0

原创 UltraEdit安装清除window环境变量

UltraEdit这个软件真可谓是一个垃圾软件(流氓软件),安装的时候竟然会把你的环境变量Path给清除。。。。 这的是服了这种极度让人恶心的软件!!!! ...

2019-10-18 15:06:52

阅读数 15

评论数 0

原创 数据库查询某个数据库中某个表的所有字段名、字段类型和注释

文章目录一 Mysql一 Oracle 一 Mysql mysql中的数据库的表的字段名和字段类型以及对应的字段描述是存储在mysql数据库中的information_schema库的COLUMNS表中 查询语句: select COLUMN_NAME,DATA_TYPE,COLUMN_COMM...

2019-10-18 10:41:14

阅读数 14

评论数 0

原创 mysql索引扫描

一 闲聊 由于之前一直接触的都是mysql,从来没有接触过oracle数据库,新公司用的就是oracle,最近看到项目中的一个单表的数目竟然达到了千万级,导致查询的时候极其慢,想试着分析一下。 二 理论 首先我们使用count(1)进行查询数据的总数: select count(1) from ...

2019-10-17 15:48:31

阅读数 25

评论数 0

原创 Java字节码结构

文章目录一 java字节码的加载1 java类加载机制2 java类加载步骤二 字节码结构 一 java字节码的加载 1 java类加载机制 jdk对于字节码的加载是使用了双亲委派的模型; 即某个特定的类加载器在接收到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完...

2019-10-16 18:39:35

阅读数 20

评论数 0

原创 Apache Griffin核心源码measure之DSL转换SQL

文章目录一 简介二 Apache Girffin DSL准确性(Accuracy)统计分析(Profiling)唯一性【重复性】(Distinctness)完整性(Completeness)时效性(Timeliness) 一 简介 在measuer源码中,BatchDQApp执行run方法时(这...

2019-10-15 18:31:36

阅读数 150

评论数 0

转载 在高并发下如何优化分布式锁的并发性能

文章目录一 简介二 介绍1,库存超卖现象是怎么产生的?2,用分布式锁如何解决库存超卖问题?3,有没有其他方案可以解决库存超卖问题?三 分析1,分布式锁在高并发场景下的问题2,如何对分布式锁进行高并发优化? 一 简介 这个问题在之前有遇到,最近看了一个博客内容: 石杉的架构笔记 中看到了这个关于分...

2019-10-14 17:52:37

阅读数 139

评论数 2

原创 Spring源码解析-事务

文章目录一 理论 一 理论 写前: spring源码中关于事务的解析是一项工程十分复杂化的解析过程,耐心的阅读之后,会学习很多,从18年开始阅读spring源码到现在,中间断断续续的也是静下心来读了好几遍(都是每一个专栏读的受不了就停了一下,很是惭愧),加上本人有一点点的热爱源码阅读,所...

2019-10-14 10:49:01

阅读数 19

评论数 0

转载 Unsafe

文章目录@[toc]一 前言二 基本介绍三 功能介绍1,内存操作2,CAS相关3,线程调度4,Class相关5,对象操作 该博客转载至:美团技术团队官方博客 ,Java魔法类:Unsafe应用解析 一 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操...

2019-10-08 11:31:14

阅读数 17

评论数 0

原创 Scala学习笔记

文章目录一 约定二 变量定义三 数据类型四 访问修饰符五 运算符六 基本表达式1,if ... else ...表达式2,块表达式{}3,循环七 方法函数定义 一 约定 scala语法中,每一行代码后面可以不需要以分号结束 二 变量定义 val 变量名:变量类型 = 初始化值 (不可修...

2019-10-02 20:14:49

阅读数 18

评论数 0

原创 Apache Griffin 开源的数据质量分析工具

文章目录一 简介二 架构Apache Griffin具备的能力Apache Griffin处理数据的方式Apache Griffin架构图Apache Griffin的工作流三 环境部署1,部署jdk版本2,部署mysql版本3,部署hadoop版本4,部署hive版本5,部署Spark版本6,部...

2019-09-26 22:24:10

阅读数 564

评论数 4

原创 SpringBoot源码解读-自动装配的原理

文章目录一 介绍二 源码分析三 源码地址 一 介绍 既然讲解到了spring关于@Configuration的解析,那就不得不讲一下SpringBoot中的自动装配的原理了。 SpringBoot的自动装配的原理不复杂,实际上就是使用@Import注解,注入一个ImportSelector类型的...

2019-09-19 11:13:57

阅读数 205

评论数 0

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