自定义博客皮肤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...

原创 Java 知识点总结

Java 基础 1、Object 对象的方法有哪些?分别有什么作用?该什么场景用? 2、Integer 的常量缓存池 3、Java 特性?什么是多态?举个例子 Object 的 hashcode 方法重写了,equals 方法要不要改? 4、重载重写的区别? Object 类中的方法 ...

2019-06-28 16:20:11 326 0

原创 LeetCode 26 题解

AC 通过了 public class leetCode26 { public int removeDuplicates(int[] nums) { int k = 0; int len = nums.length; for(int i...

2020-05-26 11:19:12 7 0

原创 LeetCode 27 题解

AC 通过 public class LeetCode27 { public int removeElement(int[] nums, int val) { int k = 0; for(int i = 0;i < nums.len...

2020-05-26 00:25:22 6 0

原创 LeetCode 283题解

AC 通过 public class LeetCode283 { public void moveZeroes(int[] nums) { int k = 0; // nums[0-k] 存储的是 前面k 个不等于 0 的数 for(int i ...

2020-05-26 00:14:36 6 0

原创 数据库索引原理
原力计划

先看个例子 在下面这个表T中,如果我执行 select* from t where k between3and5,需要执行几次树的搜索操作,会扫描多少行? mysql> create table T ( ID int primary key, k int NOT NULL DEFAULT ...

2020-05-25 23:45:08 93 0

原创 LeetCode 101 题解

已经通过 public class LeetCode101 { public boolean isSymmetric(TreeNode root) { if(root == null) return true; return isSyme(root...

2020-05-25 18:59:22 14 0

原创 Leetcode 104 题解

输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 提示: ...

2020-05-24 21:54:10 14 0

原创 LeetCode 100 题解

思路:如果一棵二叉树相同,那么他的左子树也是相同,右子树也是相同。 class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } pub...

2020-05-24 21:45:22 30 0

原创 LeetCode 169题解

/** * 类说明 * 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1...

2020-05-24 20:24:24 16 0

原创 LeetCode 50 题解

两种方式都为通过,很奇怪,超时 /** * 类说明 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 * * 示例 1: * * 输入: 2.00000, 10 输出: 1024.00000 * * 示例 2: * * 输入: 2.10000, 3 输出: 9....

2020-05-24 18:24:09 14 0

原创 LeetCode 236 题解

import common.TreeNode; /** * 类说明 * 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节...

2020-05-24 18:19:31 17 0

原创 数据库索引
原力计划

数据库索引 数据库索引,在日常工作中会经常接触到,比如某一个 SQL 查询比较慢,分析原因后,经常会说 “给某个字段加个索引”,索引又是如何工作的? 索引的出现是为了提高数据查询的效率,和书的目录是一样的。 索引常见的模型 哈希表 哈希表示一种 以键值对(key-Value)存储数据的结构,我们只...

2020-05-24 15:32:30 42 0

原创 深入理解 JAVA IO

GitChat 文章 10个免费名额,先到先得

2020-05-22 13:04:28 28 0

原创 如何利用事务消息实现分布式事务
原力计划

如何利用事务消息实现分布式事务 一说起事务,容易联想到数据库。我们日常使用事务的场景,绝大部分都是在操作数据库的时候。像 MySQL、Oracle这些主流的关系型数据库,也都提供了完整的事务实现。 那消息队列为什么也需要事务呢? 很多场景下,往往是一个模块往另外一个模块发消息的,往往需要另外一个系...

2020-05-21 23:50:19 55 0

原创 一条更新语句是如何执行的?
原力计划

一条更新语句是如何执行的? 之前你可能经常听DBA同事说,MySQL可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢? 这个需要从一个表,一条更新语句说起。 假设创建一个表,有一个主键 ID和 一个整型字段 C: mysql> create tabl...

2020-05-20 17:21:15 732 0

原创 强引用,软引用,弱引用,幻象引用有什么区别?
原力计划

强引用,软引用,弱引用,幻象引用有什么区别? 不同的引用类型,主要体现的是对象的不同的可达性(reachable)状态和对垃圾收集的影响。 所谓强引用 (Strong Reference) 就是我们常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还活着,垃圾回收不回收这种对象。 ...

2020-05-19 23:42:41 59 0

原创 一条 SQL 查询语句是如何执行的?
原力计划

一条 SQL 查询语句是如何执行的? 比如,你有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时 mysql> select from T where ID=10; 我们只看到一个输入语句,返回一个结果,却不知道这个 SQL 语句在 MySQL 内部的执行过程。 MySQL 基...

2020-05-18 11:28:59 75 0

原创 Java 提供了哪些 IO 方式, NIO 如何实现多路复用?
原力计划

Java 提供了哪些 IO 方式, NIO 如何实现多路复用? Java IO 方式 Java IO 方式有很多种,基于不同的 IO 抽象模型和交互方式,可以进行简单区分。 同步阻塞 IO 首先,传统的 Java.io 包基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象,...

2020-05-16 22:19:27 82 0

原创 对比Vector、 ArrayList、 LinkedList有何区别?
原力计划

对比Vector、 ArrayList、 LinkedList有何区别? 这三者都是实现集合框架中的List,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提倛迭代器以遍历其內容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不...

2020-05-15 00:01:54 108 0

原创 Java 内存模型中的 happen-before 是什么?
原力计划

Java 内存模型中的 happen-before 是什么? Happen-before 关系,是Java 内存模型中保证多线程可见性的机制,也是早期语言规范中含糊可见性概念的一个精确定义。 它的具体表现形式,包括但远不止 synchronized,volatile,lock 操作顺序等方面。 ...

2020-05-13 12:41:21 30 0

原创 AtomicInteger 底层实现原理是什么? 如何在自己代码中应用 CAS 操作?
原力计划

AtomicInteger 底层实现原理是什么? 如何在自己代码中应用 CAS 操作 AtomicInteger 是对 int 类型的一个封装,提供原子性的访问和更新操作,其原子性的操作实现是基于 CAS (compare-and-swap)技术。 https://en.wikipedia.or...

2020-05-11 19:02:28 71 1

原创 如何保证容器是线程安全的? ConcurrentHashMap 如何高效的线程安全?
原力计划

如何保证容器是线程安全的? ConcurrentHashMap 如何高效的线程安全? Java提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用Collections工具类提供的包...

2020-05-10 14:23:38 64 0

原创 final 、finally finalize 有什么不同?

final 、finally finalize 有什么不同? final 可以用来修饰类、方法、变量。 final 修饰的 class 代表不可以继承扩展,final 修饰的方法标识不能被重写(override),final 修饰的方法表示不可以修改。 finally 则是 Java 保证重点代码...

2020-05-08 23:11:20 34 0

原创 synchronized 和 ReentrantLock 有什么区别?
原力计划

synchronized 和 ReentrantLock 有什么区别? synchronized 最慢,这话靠谱么? Synchronized 是 Java 内建的同步机制,所以也有人称其为 Intrinsic Locking,它提供了互斥的语义和可见性,当一个线程已经获取当前锁时,其他试图获...

2020-05-07 20:37:13 43 0

原创 synchronized 底层如何实现?什么是锁升级、降级?

synchronized 底层如何实现?什么是锁升级、降级? synchronized 代码块是由一对 monitorenter/monitorexit 指令实现的,Monitor 对象是同步的基本实现单元。 https://docs.oracle.com/javase/specs/jls/se...

2020-05-06 21:49:59 66 0

原创 什么情况下Java程序会产生死锁?如何定位、修复?
原力计划

什么情况下Java程序会产生死锁?如何定位、修复? 死锁 死锁只一种特定的程序状态,在实体之间,由于循环依赖导致一直处于等待之中,没有任何个体可以继续前进,死锁不仅仅是线程之间会发生,存在独占的进程之间同样也可能出现死锁,通常来说,我们大多数聚集在多线程场景中的死锁,指的是两个或者多个线程之间,由...

2020-05-05 15:47:55 92 0

原创 Java 并发包提供了哪些并发工具类
原力计划

Java 并发包提供了哪些并发工具类 Java 基础并发工具类 提供了比 synchronized更加高级的各种同步结构,包括 CountDownLatch, CyclicBarrier、 Semaphore等,可以实现更加丰富的多线程操作,比如利用 Semaphore作为资源 各种线程安全的容...

2020-05-04 17:18:46 78 0

原创 谈谈反射机制,动态代理基于什么原理

谈谈反射机制,动态代理基于什么原理 Java 反射机制? 反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。 ...

2020-05-03 11:30:58 38 0

原创 GC 日志分析
原力计划

GC 日志分析 首先,如果需要查看 GC 日志,需要在 jvm 参数中加入如下参数 -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:d:/GClogs/tomcat6-gc.log GC 日志 2016-11-23T11:01:27.738+...

2020-05-02 12:03:40 46 0

原创 一个线程两次调用 start 会出现什么情况?
原力计划

一个线程两次调用 start 会出现什么情况? 一个线程两次调用 start()方法会出现什么情况?谈谈线程的生命周期和状态转移。 在第二次调用 start() 方法的时候,线程可能处于终止或者其他(非NEW)状态,但是不论如何,都是不可以再次启动的。 调用两次 start ? Java的线程是不...

2020-05-02 11:55:05 127 0

原创 设计模式 -- 单例模式

设计模式 -- 单例模式 什么是单例模式? 单例模式是一种对象创建模式, 使用单例模式,可以保证为一个类只生产一个实例对象,也就是说,整个程序空间,只有该类的一个实例对象。 为什么需要使用单例模式? 在应用系统开发中,我们常常有以下需求: - 在多个线程之间,比如serv...

2020-05-01 11:41:35 51 0

原创 NotePad 正则替换

看个例子 比如我想删除文件中 .war 的那些 怎么办 \w+\.war 即可 替换成空行 然后再 即可删除完整空行

2020-04-26 13:19:24 42 0

原创 Cannot find any provider supporting DESede/CBC/PKCS5Padding 问题处理

问题如下: DecryptCipher Exception:- java.security.NoSuchAlgorithmException: Cannot find any provider supporting DESede/CBC/PKCS5Padding DecryptCipher E...

2020-04-18 00:04:22 63 0

原创 JVM 性能调优

JVM 性能调优,还有 10个免费名额,需要 的自取

2020-04-07 14:43:42 45 0

原创 Python 安装 ,Git 安装 与 Pycharm 开发环境搭建

Python 开发环境搭建与helloWorld 测试 1.去官网下载 然后傻瓜式安装 2. 下载开发IDE: 这里选用pychram 下载地址:pychram官网 新建一个工厂后 写简单的helloworld 然后: 找到你工程的文件, Hellowor...

2020-04-05 11:57:58 57 0

原创 GCview 工具使用

前提:收集线上GC日志配置参数: -verbose:gc -Xloggc:gc.log 1、Git地址:https://github.com/chewiebug/GCViewer/releases 2、下载jar包gcviewer-1.35 3、java -jar gcviewer-1.36.j...

2020-04-03 13:47:06 78 0

原创 linux 机器无法访问网络

linux 服务器无法访问网络 解决办法 修改网关 1、进入配置文件 cd /etc/sysconfig/network-scripts/ vi ifcfg-eth0 2、按照以下修改 #要修改的数据 BOOTPROTO=static ### 手动...

2020-04-01 10:13:48 47 0

原创 Docker 安装

Docker 安装 安装docker yum install -y docker 查看docker是否安装成功 yum list installed |grep docker 启动docker服务(并设置开机自启) systemctl start docker.service...

2020-03-31 20:08:59 75 0

原创 RabbitMQ 安装延迟交换机

安装RabbitMQ 延迟交换机 在三台节点上安装延迟交换机插件 1.进入RabbitMQ 插件目录 cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins 2.下载延迟插件安装包 wget https://dl.bintray...

2020-03-08 23:30:28 121 0

原创 【深入理解RabbitMQ】RabbitMQ 常用命令

rabbitmq-plugins enable rabbitmq_management

2020-02-13 17:34:49 56 0

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