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

原创 Java8 HashMap 源码分析

Java8 HashMap 源码分析 JDK 1.6 1.7 HashMap 采用的是 数组+链表的形式, 每个桶对应不同的 hash 值,根据 key 计算得到的 hash,将键值对存放到对于的位置。 hashMap 的键值都可以为 null ,每个桶又是链表的形式是存放的。 但是当一个桶中链表...

2020-10-08 14:21:39 33 0

原创 Java ArrayList 源码

Java ArrayList 源码 ArrayList 概述 ArrayList 是基于数组实现,是一个动态数组,容量可以自动增长,动态增加内存。 ArrayList 不是线程安全的,只能用在单线程,多线程换成环境下可以考虑 Collections.synchronizedList(List l)...

2020-10-04 21:01:43 30 0

原创 Java String 源码分析

Java String 源码分析 定义 Java 8 中 String 源码 public final class String implements java.io.Serializable, Comparable<String>, CharSequence {...} ...

2020-10-02 12:43:13 27 0

原创 HTTP SSL TCP TLS 说的啥

HTTP SSL TCP TLS 说的啥 TCP 建立连接过程 HTTPS 的连接建立过程 HTTPS 是啥 HTTP 是明文传输,意味着端到端之间的任意节点都知道内容是消息传输内容是啥,这些节点可以是 路由器,代理等。 HTTPS 就是来解决这个问题的,以安全为目的的 HTTP 通道,全...

2020-09-30 20:41:49 38 0

原创 怎么给字符串加索引

怎么给字符串加索引 比如说,要给邮箱这样的字段加索引,这样长字符串加索引会有什么样的问题? 前缀索引,如果长度长,会浪费大量的空间,同时增加额外的查询成本。 create table SUser( ID bigint unsigned primary key, email varchar (64...

2020-09-20 10:37:35 69 0

原创 Redis 为什么这么快?

Redis 为什么这么快? Redis 是 NoSQL 数据库,key-Value 数据库,键值数据库会使用 hash 表存储值和数据。 Redis 全称是 Remote Dictionary Server ,是用字典存储数据,也就是 key-value 类型的数据。 Redis 查询效率很高,...

2020-09-19 14:54:25 45 0

原创 Kafka 原理简介

Kafka 原理简介 Kafka 是一种高吞吐的分布式发布订阅的消息系统,可以处理消费者规模的网站中的动作流数据,具有高性能的,持久化,多副本,横向扩展能力。 https://www.cnblogs.com/sujing/p/10960832.html Kafka 的组成结构 Kafka 的基...

2020-09-01 10:55:43 65 0

原创 阿里巴巴开发手册为啥推荐: 若是 static 成员变量,必须考虑是否为 final ?

阿里巴巴开发手册为啥推荐: 若是 static 成员变量,必须考虑是否为 final ? 18. 【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字: 1. 不允许被继承的类,如:String 类。 2. 不允许修改引用的域对象,如:POJO 类的...

2020-08-19 09:54:53 87 0

原创 康托展开公式与在全排列中应用

康托展开公式 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 怎样知道其中一种排列是有序序列中的第几个? 康托展开. {1…n}的全排列由小到大有序,s[]为第几个数 {1,2,3,4,…,n}的排列总共有n!种,将它们从小到大排序,怎...

2020-08-18 15:38:24 57 0

原创 LeetCode 5 题解

LeetCode 5 题解 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: &...

2020-08-17 11:17:48 61 0

原创 Spring 是如何解决循环依赖的?
原力计划

Spring 是如何解决循环依赖的? 循环依赖: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Spring 循环依赖有三种情况: 构造器的循环依赖,这种依赖 Spring 无法处理,直接抛出 BeanCurrentlyInCreationException 异常 单例...

2020-08-13 00:35:43 164 0

原创 面向对象、设计原则、设计模式、编程规范、重构

面向对象、设计原则、设计模式、编程规范、重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程。 面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态)。 面向对象 面向对象的4大特性:封装、继承,抽象、多态。 面向对象编程与面向过程的区别和联系 面向对象分析,面...

2020-08-10 21:42:02 61 0

原创 布隆过滤器
原力计划

布隆过滤器 布隆过滤器拥有极高的性能,无论是写入操作还是读取操作,时间复杂度是O(1)。 在空间上相对于其他数据结构,有很大优势, 20亿的数据需要 2000000000bit/8/1024/1024 = 238 M ,如果使用数组来存储,假设每个用户 ID 占用 4个字节的空间,存储20亿用户需...

2020-08-01 11:44:26 107 0

原创 缓存穿透了怎么办?

缓存穿透了怎么办? 对应缓存来说,命中率是它的生命线。 在缓存命中率低的情况下,大量查询请求会穿透缓存到数据库,因为数据库对于并发的承受能力有限,一旦数据库承受不了大量查询任务,就会导致查询变慢,导致大量的请求阻塞在数据库查询上,造成应用服务器的连接和线程资源被占满,最终导致系统崩溃。 什么是缓存...

2020-07-30 22:12:31 60 0

原创 接口和抽象的使用场景

接口和抽象的使用场景 抽象和接口的区别 总的来说,是抽象是为了代码复用,接口是为了解耦。 抽象 抽象类不允许被实例化,只能被基础,也就是说,不能 new 一个抽象类 抽象类可以包含方法和属性,方法可以包含实现,也可以不实现。不实现的方法叫做抽象方法 子类继承抽象,必须实现抽象类中的方法。 接口...

2020-07-22 23:49:14 78 0

原创 深入理解数据库原理

GitChat 10个免费名额 ,先到先得!

2020-07-22 15:08:42 64 0

原创 软件设计思想:池化技术
原力计划

软件设计思想:池化技术 先举个例子 一种简单的架构:前端一台 Web 服务器运行业务代码,后端一台数据库服务器存储业务数据。 系统上线时,用户量不大,运行平稳,但是随着流量的提升,系统访问速度会变慢。 分析日志后,发现系统慢的原因是出现在系统库的交互上,因为数据调用的方式是首先获取数据库的连接,...

2020-07-21 00:00:05 88 0

原创 什么是事务隔离

什么是事务隔离 事务简单的来说是保证一组数据库操作,要么全部成功,要么全部失败。 MySQL 中事务支持是在引擎实现的, MySQL 原生的 MyISAM 引擎不支持事务,这也是 MyISAM 被 InnoDB 引擎取代的重要原因。 隔离性与隔离级别 提到事务, 数据库为了保证事务,必须具备四个特...

2020-07-19 12:27:54 49 0

原创 系统设计:如何让系统高可用?

系统设计:如何让系统高可用? 系统的高可用性是指系统具备较高的无故障运行的能力。 很多开源组件中可以看到 HA 方案就是提升组件的可用性,让系统免于宕机无法服务的方案。 举个例子, Hadoop 1.0 中 NameNode 是单点的,一旦发生故障则整个集群不可用,Hadoop 2.0 时 ,采用...

2020-07-16 19:30:33 89 0

原创 系统设计:如何让系统容易扩展?

系统设计:如何让系统容易扩展? 一个高可扩展性指标,表示可以通过增加机器的方式来线性提高系统的处理能力,从而承担更高的流量或者并发数。 在单机系统中通过增加处理核心数来增加系统的并行处理能力,但是这个方法并不总生效,随着并行的任务增多,系统会因为争夺资源而达到性能上的拐点。系统性能会不升反降。 多...

2020-07-15 09:06:38 113 0

原创 数据库原理: Change Buffer 是干什么的?

数据库原理: Change Buffer 是干什么的? redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的是随机读磁盘的IO消耗。 实例:插入过程 插入语句 insert into t(id,k) values(id1,k1),(id2...

2020-07-12 11:44:14 224 0

原创 公钥 私钥 签名 验签 说的啥?
原力计划

公钥 私钥 签名 验签 说的啥? 公钥加密,私钥解密 私钥签名,公钥验签 散列算法 散列算法,也叫做哈希函数,是从一个任何一种数据中创建小的数字方法,散列函数把消息或者数据压缩成摘要,有时候也叫做摘要算法。 把数据量变小,将数据的格式固定下来。 常用的算法有:MD5 SHA1 MD5 MD5 ...

2020-07-11 15:28:02 306 0

原创 MySQL 普通索引和唯一索引该如何选择?
原力计划

MySQL 普通索引和唯一索引该如何选择? 普通索引和唯一索引在查询能力上没啥差别,主要考虑对更新性能的影响,要尽量选择普通索引。 接下来分析两种索引在查询语句和更新语句对性能的影响。 查询过程 MySQL InnoDB 是采用 B+ 树实现其索引结构。 B+ 树的查找过程 如上图所示:现在需要...

2020-07-09 21:58:46 159 0

原创 SQL 中的聚集函数?

SQL 中的聚集函数? SQL 函数包含了算术函数,字符串函数,日期函数,转换函数。还有一函数,叫做聚集函数。SQL 聚集函数是对一组数据进行汇总的函数,输入是一组数据的集合,输出是单个值。 有哪些聚集函数 SQL 中的聚集函数,有最大值,最小值,平均值。 Count 使用 例子:查询heros...

2020-07-06 21:08:09 83 0

原创 Java 中 Hashtable 、HashMap 、TreeMap 有什么不同?
原力计划

Java 中 Hashtable 、HashMap 、TreeMap 有什么不同? HashTable 最早期的 Java 类库提供的一个 Hash表实现,本身是同步的,不支持 null 键和值,对同步有导致性能开销,很少被推荐使用。 HashMap 是应该更加广泛的哈希表实现,行为上与 has...

2020-07-05 16:00:16 228 0

原创 数据库分类

数据库分类 DB DBS DBMS区别是什么? DBMS 的英文全称是 DataBase Management System 数据库管理系统。 DBMS = 多个数据库(DB) + 管理程序 DB(DataBase)数据库,数据库是存储数据的集合。 DBS 的英文是 DataBase System...

2020-07-04 13:47:55 56 0

原创 数据库锁分类
原力计划

数据库锁分类 锁和索引是数据库两大核心概念,了解索引,可以从 B+ 树,Hash 索引,页结构,缓存池,索引原则等方面理解。理解锁,要从哪些方面入手? 为什么要加锁 加锁的目的,其实是为了保证数据的一致性。 当多个线程并发访问某个数据时,加锁,可以保证这个数据在任何时刻最多只有一个线程在访问,保证...

2020-07-02 23:13:51 84 0

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

Dubbo [DUBBO] disconnected from 问题 重启 Dubbo provider(生产者) 服务,出现如下异常日志: [INFO ] 2017-11-15 10:50:07,790--DubboServerHandler-10.255.242.97:20990-threa...

2020-06-29 17:42:53 957 0

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

Java 异常处理机制 Exception 和 Error 有什么区别? Exception 和Error 都是继承 Throwable 类,在 java 只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 ...

2020-06-26 22:46:28 75 0

原创 LeetCode 3 题解

LeetCode 3 题解 滑动窗口的方式求解 public class LeetCode3 { public int lengthOfLongestSubstring(String s) { if(s == null || "".equals...

2020-06-26 12:58:48 64 0

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

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

2020-06-25 23:40:38 145 0

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

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

2020-06-23 22:57:27 381 0

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

Java 常见的垃圾回收器 垃圾回收器 (GC, Garbage Collector)是和具体的 JVM 实现紧密相关。 Java 虚拟机针对新生代和年老代分别提供了多种不同的垃圾收集器。 Serial GC Serial GC ,是新生代的垃圾回收器, Serial 体现在其收集工作是单线程的...

2020-06-21 22:45:39 90 0

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

接口和抽象有什么区别? 接口和抽象是 Java 面向对象设计的两个基础机制。 接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到API 定义和实现分离的目的。 接口不能实例化, 接口不能包含任何非常量成员,任何 field 隐含 public field final的意义 非静态方式实现,...

2020-06-21 00:49:45 134 0

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

如何快速遍历一个超大数据集 ? 文件是存储在磁盘上的,文件的读写访问速度受限于磁盘的物理限。 如果才能在1 分钟内完成 100T 大文件的遍历呢? 磁盘存储结构 磁盘是一种可持久保存,持续读写数据的存储介质。 磁盘分类: 机械硬盘 固态硬盘 机械硬盘结构 机械硬盘,包含,盘片,主轴,磁头臂,主...

2020-06-19 23:40:44 630 0

原创 LeetCode 209题解

LeetCode 209 滑动窗口的处理 public class LeetCode209 { public int minSubArrayLen(int s, int[] nums) { // 滑动窗口的思路 int left = 0; ...

2020-06-18 21:24:37 64 0

原创 数据表的范式

数据表的范式 数据库设计有哪些范式? 关系型数据库一共有 6 种范式,按照范式级别,从低到高分别是: 1NF 第一范式 2NF 第二范式 3NF 第三范式 BCNF 巴斯-科德范式 4NF 第四范式 5NF 第五范式,也叫完美范式 数据库的范式设计越高阶,冗余度就越低,高阶范式一定符合低阶范式...

2020-06-18 20:00:32 60 0

原创 并发队列
原力计划

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

2020-06-16 23:37:33 113 0

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

线程池原理 线程池有哪些? 一般开发者是利用 Executors 提供的统一线程创建方法,取创建不同配置的线程池,主要区别在于不同的 ExecutorService类型或者不同的初始参数。 Executors 提供了 5 种不同的线程池创建方式: newChachedThreadPool() ,...

2020-06-15 09:06:31 96 0

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