自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一致性hash到底多牛×

一致性hash算法hash槽算法两者对比

2020-08-02 21:59:37 1074

原创 队列其实很简单

>1、**使用数组实现循环队列结构**>2、**使用双栈实现队列结构**

2020-07-12 10:41:11 225

原创 java线程池各方面完美介绍 perfect!!!

线程池是什么?我的回答:一个池子,水池是放水的,但是这个线程池是放线程的线程池带来的好处?减低资源的消耗。通过重复利用已创建的线程 降低线程创建和销毁造成的消耗提高响应的速度,进行任务的快速分配。当任务到达的时候,快速分配线程去执行,任务可以不需要等到线程创建就能立即执行提高线程的可管理性。线城市稀缺资源,如果无限创建,不仅会消耗系统资源,还会降低系统的稳定性常见的池子:数据库连接池、tomcat内部线程池(这两个的内部任务队列都是有界的)任务提交的过程:新任务到达,先判断.

2020-07-11 00:13:37 294

原创 听说你会用“栈、迭代、递归“实现链表反转?还有图解?

用栈、迭代、递归方法实现链表反转三种方法的代码实现三种方法的图解

2020-07-04 19:34:45 233 1

原创 来啊!快看---redis缓存雪崩,缓存击穿,缓存穿透(布隆过滤器)

来啊!快看—redis缓存雪崩,缓存击穿,缓存穿透缓存雪崩,缓存击穿,缓存穿透 的发生场景和解决方法布隆过滤器实现原理

2020-07-02 12:06:58 309 1

原创 来啊!快看---redis存储结构、基本数据类型、基本命令

redis底层的数据结构redis简单的操作语句

2020-07-01 23:42:16 244

原创 关于ConcurrentHashMap、HashMap、HashTable这里有你想知道的

关于ConcurrentHashMap、HashMap、HashTable三者的对比ConcurrentHashMap、HashMap在jdk1.7和jdk1.8版本的不同ConcurrentHashMap的安全机制及存储结构

2020-06-29 10:03:00 252

原创 MVCC到底是什么?这一篇博客就够啦

MVCC简单理解MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。这是百度百科给的标准的回答转化成自己的语言:多版本的意思就是数据库中同时存在多个版本的数据,并不是整个数据库的多个版本,而是某一条记录的多个版本同时存在,在某个事务对其进行操作的时候,需要查看这一条记录的隐藏列事务版本id,比对事务id并根据事物隔离级别去判断读取哪个版本的数据

2020-06-26 22:53:15 15101 15

原创 mysql中的大黄蜂---B+树索引

B+树索引的具体组成,应用的注意事项,帮助你更好的用B+树索引

2020-06-22 00:32:32 176

原创 mysql中的擎天柱---InnoDB引擎

我们知道mysql常用的引擎有InnoDB和MyISAM,在mysql5.5前默认引擎是MySAM在mysql5.5之后默认引擎是InnoDBInnoDB记录存储结构InnoDB页简介InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。InnoDB会将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。InnoDB行格式主要分为四种格式分别是Compact、Redundant、Dynamic和Compre

2020-06-20 22:46:35 444

原创 你知道吗?nextInt()和nextLine()一起用会干架

nextInt()和nextLine()一起使用时的注意点问题原因:nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。解决办法:在每一个nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将它们的结束换行符过滤。例子:你看上面的代码有问题吗?我最初的回答也是:没有但是:原

2020-06-20 21:57:10 634 2

原创 java中序列化与反序列化

一、基本概念1、序列化和反序列化的定义:(1)Java序列化就是指把Java对象转换为字节序列的过程 Java反序列化就是指把字节序列恢复为Java对象的过程。(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。 反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)2、j

2020-06-19 23:46:27 150

原创 积树成林 --- 参天大树:红黑树

森林里的参天大树—红黑树红黑树的定义红黑树的插入、删除的不同情况红黑树的旋转调整

2020-06-11 10:18:20 454

原创 积树成林 --- 平衡二叉树到底平不平衡,他说了算!树旋转

平衡二叉树到底平不平衡,他说了算!— 树旋转

2020-06-07 20:01:19 302

原创 java如何删除一个文件夹中的所有的文件

如果删除文件的话,直接调用他的delete()方法注意如果待删除的是一个文件夹,就不能直接调用delete()删除。import java.io.File; public class DeleteDirTest { public static void main(String[] args) { String path = "G:\\temp"; deleteDir(path); } public static boolean deleteDir(String path){

2020-06-07 17:41:28 1028

原创 积树成林----二叉树、二叉排序树、平衡二叉树、B树、B+树

二叉树的创建,先序遍历、中序遍历、后序遍历 代码实现二叉排序树的创建、添加、删除 代码实现平衡二叉树的理解B树B+树的创建过程图解

2020-06-07 13:23:54 664

原创 Lambda表达式,能缩就缩吧

Lambda简介Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。Lambda语法(parameters) -> expression或(parameters) ->{ statements; }Lambda特性可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个参数无需定义圆括号,但多个

2020-05-26 11:31:14 275

原创 妈妈,我要学内部类!好,给你四个

一、什么是内部类?内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有一下几种:成员内部类、局部内部类、静态内部类、匿名内部类。二、内部类的共性:(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。(2)、内部类不能用普通的方式访问。(3)、内部类声明成静态的,就不

2020-05-22 22:03:28 320 2

原创 用一个阿里大佬整理的反射来武装自己

1、什么是反射?反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。反射的核心是 JVM 在运行时才动态加载类或调用方法/访问

2020-05-22 15:57:19 161

原创 重写equals方法的时候为什么需要重写hashcode

一、equals()方法先说说equals()方法。  查看Java的Object.equals()方法,如下:public boolean equals(Object object){ return(this == obj);}可以看到这里直接用’‘来直接比较,引用《Java编程思想》里的一句话:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。那么’'比较的值到底是什么呢?  我们知道Java有8种基本类型:数值型(byte、short、int、l

2020-05-21 17:20:22 179

转载 SSM使用POI解析Excel数据并实现批量导入到数据库

1、下载需要的jar包:POIApache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。本例中主要使用其中的两个包:HSSF提供读写Microsoft Excel XLS(2003版本)格式档案的功能。XSSF提供读写Microsoft Excel OOXML XLSX(2007+版本)格式档案的功能。首先进入POI首页:http://poi.apache.org/`, 之后点击download进入下载页。 下载解压,需

2020-05-16 17:46:45 690

原创 jq实时监控input的数据变化

$("input[type='layui-input']").bind("input propertychange",function(data){ // 具体代码 console.log(data) var content = data.target.value; if($.trim(content)==""){ layer.msg("输入框不可只输入空格!",{icon:5,time:1000}); .

2020-05-10 22:56:24 642

原创 POI操作execl表:有这个execl跑不了

近期做项目用到poi操作execl,感觉应该总结归总一下导入依赖:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17<...

2020-04-27 11:36:53 222

原创 算法练习:统计「优美子数组」

题目描述:给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6]...

2020-04-21 19:29:10 345

原创 算法练习:岛屿数量

题目描述:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3解释:...

2020-04-20 18:55:59 427

原创 算法练习:统计参与通信的服务器

题目描述:这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。示例 1:输入:grid = [[1,0],[0,1]]输出:0解释:没有一台服务器能与其他服务器进行通信。示例...

2020-04-16 17:04:55 931

原创 算法练习:最长定差子序列

题目描述:给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度。示例 1:输入:arr = [1,2,3,4], difference = 1输出:4解释:最长的等差子序列是 [1,2,3,4]。示例 2:输入:arr = [1,3,5,7], diff...

2020-04-15 16:31:46 285

原创 算法练习:两数相加

题目描述:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4...

2020-04-14 15:41:21 211

原创 算法练习:通知所有员工所需的时间

题目描述:公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人,manager[headID] = -1。题目保证从属关系可以用树结构显示。公司总负责人想要向公司所有员工通告一条紧急消息。他将...

2020-04-13 12:40:30 444

原创 算法练习:根据身高重建队列

题目描述:假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [...

2020-04-12 15:55:56 732 3

原创 深度理解JVM:内存管理概述

线程共享区:方法区 :存储虚拟机加载的类信息(类的版本,字段,方法,接口),常量,静态变量,及时编译器编译后的代码等数据方法区和永久代,用永久代实现方法区hotSpot垃圾回收在方法区的行为,一般很少利用,效率低异常的定义运行时常量池 : String a = “abc” 这里字符串放在方法区常量池中,String b = new String(“abc”) 这里会在堆中建立字符...

2020-04-10 19:10:13 92

原创 算法练习:为运算表达式设计优先级

题目描述:给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: “2-1-1”输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: “23-45”输出: [-34, -14, -10, -10, 10]...

2020-04-10 17:57:53 314

原创 算法练习:括号组合生成

**题目描述:**给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]**解题思路:**比较简单的方法-递归吧1.输入n之后说明现在有n个左括号和n个右括号可以填2.最左面一定...

2020-04-09 10:22:24 405

原创 算法练习:删除被覆盖区间

**题目描述:**给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。在完成所有删除操作后,请你返回列表中剩余区间的数目。示例:输入:intervals = [[1,4],[3,6],[2,8]]输出:2 解释:区间 [3,6] 被区间 [2,8]覆盖,所以它被删除...

2020-04-08 22:38:10 539

原创 List集合与数组相互转化 : 以String类型为例

String[]转ListString[] arr = new String[]{“s1”,“s2”,“s3”};List list = Arrays.asList(arr);List转String[]List list = new ArrayList();list.add(“s1”);list.add(“s2”);list.add(“s3”);String[] arr = ...

2020-04-07 17:30:58 889

原创 算法练习:子域名访问计数

**题目描述:**一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名 “com”。给定一个带访问次数和域名的...

2020-04-07 17:23:02 223

原创 算法练习:LFU算法缓存问题(哈希表+双向链表)

**问题描述:**请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,则应该在插入新项之前,使最不经常使用的项无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率...

2020-04-06 15:12:35 424

原创 算法练习:适龄朋友问题

题目描述:人们会互相发送好友请求,现在给定一个包含有他们年龄的数组,ages[i]表示第 i 个人的年龄。当满足以下条件时,A 不能给 B(A、B不为同一人)发送好友请求:age[B]<= 0.5 * age[A]+ 7 age[B]> age[A] age[B]> 100 &&age[A]< 100否则,A 可以给 B...

2020-04-05 23:00:26 188

原创 算法练习:接雨水问题

**问题描述**给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6**解题思路:**先找出最高的柱子,然后从两边向其遍历,如果后一个高度比前一个柱子高度低,则可以存水,存水量是两根柱子的差值**解题代码:** public static int...

2020-04-04 23:42:03 949

原创 算法练习:最低票价

问题描述: 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元; 一张为期七天的通行证售价为costs[1] 美元; 一张为期三十天的通行证售价为costs[2] 美元...

2020-04-04 22:23:30 453

空空如也

空空如也

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

TA关注的人

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