- 博客(165)
- 资源 (2)
- 收藏
- 关注
原创 438. 找到字符串中所有字母异位词
题干给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。示例 1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2:输入: s = "abab", p = "ab"输出: [0,
2022-05-02 16:04:22
265
原创 Golang问题:package is not in GOROOT (/usr/local/go/src/packageName) [closed]
运行:export GO111MODULE=off有时间再研究下为什么
2021-07-18 22:17:37
3671
原创 Java实现文件传输
服务端发送,客户端接收。服务端持续运行,一旦有客户端连接就会向客户端发送文件import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.net.ServerSocket;import java.net.Socket;/** * 文件传输server(由服务器发送) * * @author qxt * @date 2021/3/8 17:38 */publ
2021-03-11 23:13:00
7219
原创 彻底弄懂JVM常量池
文章目录一、绪论Class文件常量池字符串常量池为什么产生字符串常量池与字符串驻留String.intern()字符串常量池位置字符串常量池内存储的是什么运行时常量池class文件常量池和运行时常量池一、绪论注:本文提到的JVM都是HotSpotClass文件常量池Java源代码经过编译后生成.class文件。.class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池,用于存放编译器生成的各种字面量(Literal)和符号引用(Symbolic References)。
2021-02-14 20:37:19
369
原创 BeanFactory与FactoryBean
1.BeanFactory是什么Spring的IoC容器是一个IoC Service Provider,但是,这只是它被冠以IoC之名的部分原因,我们不能忽略的是“容器”。Spring的IoC容器是一个提供IoC支持的轻量级容器,除了基本的IoC支持,它作为轻量级容器还提供了IoC之外的支持。如在Spring的IoC容器之上,Spring还提供了相应的AOP框架支持、企业级服务集成等服务。Spring的IoC容器和IoC Service Provider所提供的服务之间存在一定的交集,二者的关系如图所示。
2020-11-26 21:29:20
173
原创 Spring第二篇 Spring IOC
一、概念梳理1.什么是IoC和DIIoC:控制反转(Inversion of Control)容器,这不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。IoC一些解释: ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对...
2020-11-05 17:34:02
168
原创 代理模式与AOP
文章目录代理模式背景静态代理从静态代理到动态代理动态代理从动态代理到AOP代理模式代理模式是很常见的一种设计模式,代理一词拆开来看就是代为受理,那显然是要涉及到请求被代理的委托方,提供代理的代理方,以及想要通过代理来实际联系委托方的客户三个角色。举个生活中很常见的例子,各路的明星都会有个自己的经纪人来替自己打点各种各样的事情,这种场景下,明星本身是委托方,经纪人是代理方,明星把自己安排演出、出席见面会的时间安排权利委托给经纪人,这样当各个商家作为客户想要请明星来代言时,就只能通过经纪人来进行。这样明星本
2020-10-26 11:20:36
556
原创 MySQL45讲——03.事务隔离:为什么你改了我还看不见
文章目录隔离性与隔离级别事务隔离的实现事务的启动方式隔离性与隔离级别提到事务,你肯定会想到事务的特性:ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性),今天我们就来说说其中I,也就是“隔离性”。当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable ...
2020-08-19 16:35:07
149
原创 47. 全排列 II
文章目录题干题解题干给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解这道题跟 46.全排列 不同之处在于序列可能包含重复数字的,但是返回的全排列是不重复。我们看下全排列的代
2020-07-05 16:25:39
118
转载 回溯算法详解
文章目录1.回溯算法框架2.全排列问题1.回溯算法框架废话不多说,直接上回溯算法框架。解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择。结束条件:也就是到达决策树底层,无法再做选择的条件。如果你不理解这三个词语的解释,没关系,我们后面会用「全排列」和「N 皇后问题」这两个经典的回溯算法问题来帮你理解这些词语是什么意思,现在你先留着印象。代码方面,回溯算法的框架:result = []v
2020-07-04 11:25:32
694
原创 56. 合并区间
题干给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge
2020-06-21 16:05:16
286
转载 39. 组合总和
题干给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入: candidates = [2,3,5], targ
2020-06-20 20:58:01
151
原创 Java 并发容器
文章目录1.并发集合简介ConcurrentHashMapCopyOnWriteArrayList1.并发集合简介ConcurrentHashMap:线程安全的HashMap,加锁力度更小CopyOnWriteArrayList:适用于在读多写少的场景下,性能优于ArrayListConcurrentLinkedQueue:线程安全的LinkedList,适用链表实现的高效并发队列BlockingQueue:这是一个接口,JDK内部通过链表、数组等方式实现了这个接口。表示阻塞队列,非常适合作为数
2020-06-17 14:40:50
147
原创 Netty系列——1.Java IO模型 和 Netty核心组件
文章目录1. IO模型基本说明2.BIO(同步阻塞IO)3. NIO(同步非阻塞IO)3.1. Channel(通道)3.2. Buffer(缓冲区)3.3. Selector(选择器)3.4. Channel,Buffer,Selector的关系图4. NIO 非阻塞 网络编程原理分析图4. 总结1. IO模型基本说明IO模型简单理解就是:用什么样的通道进行数据的发送和接受,很大程度上决定了程序通信的性能。Java共支持3中IO模型:BIO、AIO、NIO2.BIO(同步阻塞IO)这段代码片
2020-05-19 19:02:12
187
原创 SpringBoot整合MyBatis-Plus
添加依赖Maven:<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version></dependency>Gradle:compile group: 'com.baomidou', name: '.
2020-05-14 23:05:56
179
转载 如何阅读spring源码
从最基础的Hello World开始。spring的Hello World就三行代码:public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); SomeBean someBean= (SomeBean) context.getBean("someBea...
2020-05-02 22:55:09
234
转载 0-1 背包问题
描述给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为w[i],价值为v[i],现在让你用这个背包装物品,最多能装的价值是多少?这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。题目就是这么简单,一个典型的动态规划问题。这个题目中的物品不可以分割,要么装进包里,要么不装,不能说切成两块装一半。这就是 0-1 背包这个名词的来历。解决...
2020-04-23 22:29:55
394
转载 深入解析Java内存模型(JMM)
文章目录为什么要有内存模型并发编程的问题什么是内存模型什么是Java内存模型Java内存模型的实现总结为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与...
2020-04-06 16:30:53
221
原创 199. 二叉树的右视图
题干给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---来源:力扣(LeetCod...
2020-04-06 12:40:10
166
原创 双重校验单例模式(DCL)懒汉模式
先上代码:public class MySingleton { //使用volatile关键字保其可见性 volatile private static MySingleton instance = null; private MySingleton(){} public static MySingleton getInstance() { ...
2020-04-05 21:57:33
756
原创 volatile关键字详解
文章目录volatile关键字是干嘛的可变可见性问题volatile解决可见性volatile解决有序性volatile原理synchronized 关键字和 volatile 关键字的区别单例模式volatile关键字是干嘛的JMM有三个特性:可见性、有序性、原子性。Java用很多关键字来保证它们,volatile就是其中之一。volatile关键字用于将Java变量标记为“正在存储在主存...
2020-04-05 21:11:42
259
转载 Session会在浏览器关闭后消失吗?
通常情况下,当我们关闭浏览器再重新打开后,我们就需要再次进行登陆(如果没有进行下次自动登录之类的设置)。在Jav中(Session是通用的,这里以Java为例)有一种叫做Session机制(会话机制)来记录用户的登录信息。浏览器关闭之后,Session会被清除吗?Session是一种服务器端的对象,保存在服务器中。 每个Session 有一个唯一的Session id。 Session的超时也是...
2020-04-04 21:27:12
708
原创 17. 电话号码的字母组合
文章目录题干题解题干给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。题解很显然,...
2020-03-31 15:16:53
187
原创 1306. 跳跃游戏 III
题干这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]。请你判断自己是否能够跳到对应元素值为 0 的 任意 下标处。注意,不管是什么情况下,你都无法跳到数组之外。示例 1:输入:arr = [4,2,3,0,3,1,2], start = 5输出:true解释:到达值为 ...
2020-03-30 14:19:16
248
原创 45. 跳跃游戏 II
题干给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后...
2020-03-30 13:34:50
124
原创 55. 跳跃游戏
文章目录题干题解题干给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解...
2020-03-30 12:08:45
165
原创 生产者与消费者模型
文章目录生产消费者模型采用synchronized锁以及wait notify方法实现采用阻塞队列实现生产消费者模型生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。生产消费者模式如下图。采用synchronized锁以及wait notify方法实现代码源自菜鸟教程//生产者消费者...
2020-03-29 17:13:30
246
转载 22.括号生成
题干给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parenth...
2020-03-26 17:01:49
243
原创 MySQL解决幻读——MVCC与间隙锁
当前读 与 快照读当前读:select语句加S锁或X锁;所有的修改操作加X锁,在select for update 的时候,才是当地前读。快照读:select语句默认,不加锁,MVCC实现可重复读,使用的是MVCC机制读取undo中的已经提交的数据。所以它的读取是非阻塞的快照读的幻读是用MVCC解决的,当前的读的幻读是用LBCC解决的,也就是你说的间隙锁,搞清楚问题谢谢。...
2020-03-25 23:52:20
5183
3
原创 MySQL45讲——02.日志系统:一条SQL更新语句是如何执行的
文章目录一条更新语句redo logbinlog两种日志的不同执行update语句时的内部流程两阶段提交小结参考文章一条更新语句让我们从一条更新语句中看出MySQL的日志机制。我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键ID和一个整型字段c:create table T(ID int primary key, c int);如果要将ID=2这一行的值加1...
2020-03-24 18:49:08
202
原创 ConcurrentHashMap详解
文章目录JDK1.8中的升级get()源码为什么ConcurrentHashMap的读操作不需要加锁?volatile关键字是加在数组上volatile吗volatile修饰Node总结JDK1.8中的升级jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS +...
2020-03-22 16:32:40
388
原创 RabbitMQ
文章目录1.什么是消息队列2.消息队列有什么用3.什么是交换机4.RabbitMQ的四种交换机4.1.Direct Exchange(直连交换机)4.2.Fanout Exchange(扇形交换机)4.3.Topic Exchange(主题交换机)4.4.Headers Exchanges(头部交换机)5.RabbitMQ的五种队列5.1.Simple Work Queue (简单工作队列)5.2...
2020-03-22 15:12:15
216
转载 java各个变量都存储在哪了?
静态变量:位于方法区。实例变量:作为对象的一部分,保存在堆中。临时变量:保存于栈中,栈随线程的创建而被分配。栈内存中存放局部变量(基本数据类型和对象引用),而堆内存用于存放对象(实体)对于字符串而言,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中;如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中可以有多份。...
2020-03-21 19:52:53
9198
4
原创 重载(Overload)与重写(Override)
文章目录重载(Overload)重写(Override)重载和重写规范为什么不能根据返回类型区分重载?重载(Overload)重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。重写(Override)重写是子类对父类的允许访问的方法的实现过...
2020-03-20 19:19:03
176
原创 Java 8大基本类型及所占字节数
Java 8大基本类型所占字节数(或 bit 数)类型存储需求bit 数取值范围备注int4字节4*8-2147483648~2147483647即 (-2)的31次方 ~ (2的31次方) - 1short2字节2*8-32768~32767即 (-2)的15次方 ~ (2的15次方) - 1long8字节8*8即 (-2)的63次...
2020-03-19 17:47:34
1168
原创 双亲委派模型
文章目录类加载器类加载器与类的唯一性类加载器种类双亲委派模型双亲委派双亲委派模型为什么要使用双亲委派模型破坏双亲委派类加载器类的加载阶段,虚拟机完成三步工作:通过类名获取此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类Class对象,作为方法区这些数据的访问入口一句话来说,类的加载就是读取二进制字节流以生成Class对象。但是虚拟...
2020-03-19 12:13:25
198
原创 浅拷贝、深拷贝与clone
文章目录什么是浅拷贝、深拷贝浅拷贝深拷贝总结什么是浅拷贝、深拷贝浅拷贝class Address{ public String addr; public Address(String addr) { this.addr = addr; }}public class Person implements Cloneable{ pri...
2020-03-18 11:35:14
130
原创 带你认识IO、BIO、NIO、AIO
文章目录什么是同步、异步、阻塞、非阻塞同步/异步、阻塞/非阻塞 组合为什么要有NIO、AIO(场景分析)BIO、NIO、AIO适用场景分析:IO都有哪些什么是同步、异步、阻塞、非阻塞名词解释举例同步同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致...
2020-03-17 23:52:23
316
原创 Spring
文章目录讲一讲对Spring的理解IOC看过IOC和AOP的源码吗它们底层是如何实现的用过其他什么框架了解过分布式或者微服务的开源框架吗讲一讲对分布式系统模型的理解分布式系统中有一个节点宕机怎么办分布式系统如何实现负载均衡讲一讲对Spring的理解Spring两大特性:IOC和AOP是一定要提的。IOCIOC即控制反转( Inversion of Control )。通俗地讲,就是把原本需...
2020-03-16 23:59:23
548
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人