自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王小明的专栏

如有问题,关注微信公众号: 程序员开发者社区,获取我的联系方式,或者访问 www.benjming.com

原创 [DUBBO] disconnected from 问题
原力计划

Dubbo [DUBBO] disconnected from 问题重启 Dubbo provider(生产者) 服务,出现如下异常日志:[INFO ] 2017-11-15 10:50:07,790--DubboServerHandler-10.255.242.97:20990-thread-517--[com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol] [DUBBO] disconected from /10.255.242.96:11582,

2020-06-29 17:42:53 417

原创 Java 异常处理机制
原力计划

Java 异常处理机制Exception 和 Error 有什么区别?Exception 和Error 都是继承 Throwable 类,在 java 只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 提现了 Java 平台设计者不同异常情况的类,Exception 在程序运行中,可预料的意外情况,并且可能被捕获,进行相应处理。Error 是指在正常情况下,不大可能出现的情况,可能是因为JVM自

2020-06-26 22:46:28 66

原创 LeetCode 3 题解

LeetCode 3 题解滑动窗口的方式求解public class LeetCode3 { public int lengthOfLongestSubstring(String s) { if(s == null || "".equals(s)) return 0; char[] chars = s.toCharArray(); int i = 0; int j = 0; int len = chars

2020-06-26 12:58:48 53

原创 Apacche Dubbo 反序列化漏洞
原力计划

Apacche Dubbo 反序列化漏洞早在2019年开发者社区就有谈到这个 http 协议漏洞问题,近期360灵腾安全实验室判断漏洞等级为高,利用难度低,威胁程度高。 建议升级 dubbo 版本,避免遭受黑客攻击。漏洞描述Unsafe deserialization occurs within a Dubbo application which has HTTP remoting enabled. An attacker may submit a POST request with a Java

2020-06-25 23:40:38 108

原创 如何动态生成一个Java类
原力计划

如何动态生成一个Java类开发者编写Java 代码,调用 javac 编译生成 class 文件。然后通过类加载机制载入 JVM ,即成为了应用可以使用的 Java 类。可以写一个编译类编译 java 代码:import java.io.File;import java.io.FileWriter;import java.lang.reflect.Method;import javax.tools.JavaCompiler;import javax.tools.JavaCompiler.Co

2020-06-23 22:57:27 217

原创 Java 常见的垃圾回收器
原力计划

Java 常见的垃圾回收器垃圾回收器 (GC, Garbage Collector)是和具体的 JVM 实现紧密相关。Java 虚拟机针对新生代和年老代分别提供了多种不同的垃圾收集器。Serial GCSerial GC ,是新生代的垃圾回收器, Serial 体现在其收集工作是单线程的,并且在垃圾收集过程中,其他线程阻塞,进入 Stop Thre World 状态。 新生代使用的 Serial 垃圾回收器,是基于复制算法的。-XX:+UseSerialGCParalel Scavenge

2020-06-21 22:45:39 60

原创 接口和抽象有什么区别?
原力计划

接口和抽象有什么区别?接口和抽象是 Java 面向对象设计的两个基础机制。接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到API 定义和实现分离的目的。接口不能实例化,接口不能包含任何非常量成员,任何 field 隐含 public field final的意义非静态方式实现,要么是抽象方法,要么是静态方法。抽象类不能实例化,用 abstract 关键字修饰 class, 其主要目的是代码重用。抽象类和普通 Java 类在形式上没有太大区别。 可以有一个或者多个抽象方法,- 抽象

2020-06-21 00:49:45 119

原创 如何在1 分钟内完成 100T 大文件的遍历?
原力计划

如何快速遍历一个超大数据集 ?文件是存储在磁盘上的,文件的读写访问速度受限于磁盘的物理限。如果才能在1 分钟内完成 100T 大文件的遍历呢?磁盘存储结构磁盘是一种可持久保存,持续读写数据的存储介质。磁盘分类:机械硬盘固态硬盘机械硬盘结构机械硬盘,包含,盘片,主轴,磁头臂,主轴带动盘片高速旋转。读取数据地上,磁头臂移动到盘片的磁道上,磁头读取磁道上的数据。机械硬盘的数据是存储在磁性特质的盘片上的,因此叫做磁盘。读写数据是需要移动磁头,这样一个机械动作,可能需要花费几毫

2020-06-19 23:40:44 546

原创 LeetCode 209题解

LeetCode 209滑动窗口的处理public class LeetCode209 { public int minSubArrayLen(int s, int[] nums) { // 滑动窗口的思路 int left = 0; int right = 0; int sum = 0; int res = nums.length + 1; while (left < nums.le

2020-06-18 21:24:37 53

原创 数据表的范式

数据表的范式数据库设计有哪些范式?关系型数据库一共有 6 种范式,按照范式级别,从低到高分别是:1NF 第一范式2NF 第二范式3NF 第三范式BCNF 巴斯-科德范式4NF 第四范式5NF 第五范式,也叫完美范式数据库的范式设计越高阶,冗余度就越低,高阶范式一定符合低阶范式的要求。第一范式 1NF第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小原子单元。1NF 是指数据库中任何属性都是原子的,不可拆分。第二范式 2NF首先满足第一范式,并且表中非主键不存在对

2020-06-18 20:00:32 53

原创 并发队列
原力计划

并发队列并发包下面的并发容器中,ConcurrentLinkedQueue 这种 Concurrent 类型和的集合才真正代表并发。Concurrent 类型基于 lock-free ,常见的多线程访问场景,一般可以提供高吞吐量。LinkedBlockingQueue 内部基于锁实现,提供了BlockingQueue等特性方法。java.util.concurrent 包并发容器分类ConcurrentCopyOnWriteBlockingConcurrent 类型集合Conc

2020-06-16 23:37:33 90

原创 【深入理解Java原理】线程池原理
原力计划

线程池原理线程池有哪些?一般开发者是利用 Executors 提供的统一线程创建方法,取创建不同配置的线程池,主要区别在于不同的 ExecutorService类型或者不同的初始参数。Executors 提供了 5 种不同的线程池创建方式:newChachedThreadPool() ,可以用来处理大量短时间工作任务的线程池,具有如下几个特点:试图缓存线程并重用,当无缓存线程可用时,会创建新的工作线程,如果线程限制的时间超过 60秒,则被终止移除缓存;长时间闲置时,这种线程池不会消耗什么资源,内部

2020-06-15 09:06:31 76

原创 【深入理解 Spring 原理】Spring Bean 的生命周期和作用域?
原力计划

Spring Bean 的生命周期和作用域?Spring Bean 的生命周期Spring Bean 的生命周期可以分成,创建,使用,销毁几个过程。Spring Bean 创建过程如下:实例化 Bean 对象设置 Bean 属性通过各种 Aware 接口声明了依赖关系,则会注入 Bean 对容器基础设施层面的依赖,包括 BeanNameAware 、BeanFactoryAware 和 ApplicationContextAware 分别注入 BeanID ,BeanFactory或者Appl

2020-06-13 23:12:16 88

原创 【深入理解数据库原理】InnoDB 是如何解决幻读、不可重复读?

InnoDB 是如何解决幻读、不可重复读?如何解决不可重复读上一篇文章,已经说明 InnoDB 是如何解决不可重复读的。一个事务只在第一次 SELECT 的时候会获取一次 Read view,而后面所有的 SELECT都会复用这个 Read view,这样每次读到的就是一样的,就可重复读。InnoDB 是如何解决幻读的?在读已提交的情况下,及时采用了 MVCC 方式也会出现幻读,如果我们同时开启事务A 和 事务B, 现在事务A 中进行某个条件的查询,读取的时候采用排他锁,在事务B 中增加一条复核

2020-06-11 15:26:51 68

原创 LeetCode 46 全排列

LeetCode 46 全排列AC 通过public class LeetCode46 { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> result = new ArrayList<List<Integer>>(); List<Integer> list = new ArrayList&l

2020-06-11 00:08:19 57

原创 【深入理解数据库原理】MVCC 原理
原力计划

MVCC 原理事务的4个隔离级别读未提交读已提交可重复读串行化什么是脏读简单说,读了一条未提交的数据什么是不可重复读?一个事务读取了另外一个事务修改后记录强调的是 update 和delete ,只需要锁住满足条件的记录即可什么是幻读一个事务读取了另外一个事务插入的数据,强调的是 insert ,要锁住满足条件及相近的记录。MYSQL 中默认的隔离级别是可重复读,可解决脏读和不可重复读的问题。但是不能解决幻读的问题。Oracle 默认的是Read Commit

2020-06-10 23:00:10 146

原创 【深入理解Java并发原理】Thread.yield、Thread.sleep、Object.wait、 LockSupport.park 对比
原力计划

Thread.yield、Thread.sleep、Object.wait、 LockSupport.park 对比sleep、wait、park区别Thread.sleep() 不会释放占有的锁,Object.wait() 会释放会占有的锁Thread.sleep() 必须传入时间,Object.wait() 可以传可不传,不传会一直阻塞下去。Thread.sleep() 会自动唤醒,然后继续执行。Object.wait() 不带时间方法,需要 Object.notify() 唤醒Obje

2020-06-08 23:41:41 137

原创 LeetCode 34深度优先+回溯

LeetCode 34输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]来源:力扣(LeetCod

2020-06-07 09:33:43 53

原创 【深入理解Dubbo原理】dubbo SPI 是怎么实现的?
原力计划

dubbo SPI 是怎么实现的?Dubbo SPI 的目的是为了得到一个指定实现类的对象Dubbo 并未使用 Java SPI ,而是重新设计了一套增强版的 SPI 。 Dubbo SPI 的相关逻辑封装在了 ExtensionLoader 类中,通过 ExtensionLoader ,我们可以加载指定的实现类。Dubbo SPI 所需要的配置文件在 META-INF/dubbo 路径下。示例现在 dubbo 路径下,配置内容如下:optimusPrime = org.apache.

2020-06-04 16:33:56 88

原创 【深入理解Java原理】JAVA SPI 是怎么实现的?

JAVA SPI 是怎么实现的?SPI 是什么?SPI(Service Provider Interface) ,是 JDK 内置的一种提供发现机制。SPI 是一种动态替换发现的机制。JAVA SPI 实现定义一组接口,接口有多种实现public interface IShout { void shout();}public class Cat implements IShout { @Override public void shout() {

2020-06-02 19:04:55 117

原创 LeetCode 22 题解--深度优先遍历 -- 括号匹配

LeetCode 22 题解AC 通过public class LeetCode22 { // 2^2n 局部不合法,不再递归 public List<String> generateParenthesis(int n) { List<String> result = new ArrayList<String>(); // 递归 gen(0,0,n,"",resu

2020-06-02 09:34:04 58

原创 【深入理解Spring源码】-容器如何初始化?

Spring源码-容器如何初始化?初始化Spring如下 AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml"); applicationCon...

2020-06-01 15:03:54 84

原创 【深入理解 Java原理】Condition 实现原理
原力计划

Condition 实现原理说 Codition 前,需要说下 ConditioObject。ConditionObject 是同步器 AbstractQueuedSynchronzied 的内部类,因为 Condition 的操作需要关联的锁。 ArrayBlockingQueue 就是 Condition 的具体应用。 Object 中其实 也有 wait ,notify ,notifyAll 等操作, Condition 相当于将 wait ,notify ,notifyAll 转换成想要的对

2020-06-01 12:08:06 150

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