自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java基础5-24

文章目录面向对象面向对象三大特征多态多态的条件重载重写接口和抽象类八种数据的基础类型String实现的源码和字符串常量池String实现不可变好处String,StringBuffer,StringBuilder字符串常量池String a = "abc"; 会创建什么,放在哪里?new String("abc") 是去了哪里,仅仅是在堆里面吗?为什么有包装类自动拆想装箱是什么final和static关键词父类子类构造函数,静态代码段,非静态代码段加载顺序hashCode()和equals()==和equa

2022-05-24 16:57:39 287

原创 java集合

文章目录开始collectionlistArrayList源码LinkedlistVectorSetHashSetTreeSetMap遍历方式HashMap概述源码解析put() ⽅法原理get() ⽅法原理TreeMap排序规则Collections ⼯具类String存储原理String、StringBuilder、StringBuffer开始1.collection:单列集合2.map:双列集合collectioncollection实现类特点可以存放多个元素,每个元素可以是objec

2022-05-22 17:07:38 236

原创 数据库优化

文章目录数据库服务器的内核优化my.cnf配置,搭配压力测试进行调试sql语句调优数据库服务器的内核优化my.cnf配置,搭配压力测试进行调试sql语句调优1.使用缓存优化查询进行多次相同查询,结果会放入缓存中,后续再进行相同查询,就可以直接从缓存中提取,不会到表中查询。需要避免缓存失效2.explain检测sql查询3.给搜索字段简历索引where后面的字段4.limit1明确只需要一行数据5.永久链接在一些极端的环境中,apache会发出http请求,创建子进

2022-05-21 12:01:34 161

原创 数据库9学习

文章目录MVCC1. 什么是MVCC2. MVCC实现原理MVCC1. 什么是MVCC多版本并发控制,MVCC是一种用来解决读写冲突的无锁并发控制,也就是为事务分配单项增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照,所以MVCC可以为数据库解决一下问题:在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻寒读操作,提高了数据库并发读写的性能解决脏读、幻读、不可重复读等事务隔离问题,但是不能解决更新丢失问题2. MVCC实

2022-05-20 13:46:28 163

原创 java并发free-coder

文章目录线程池执行过程ThreadPoolExecutornewCachedThreadPool()newFixedThreadPool()可见性volatile原子类Atomicsynchronized原子性同步关键字与锁synchronizedlock线程生命周期方法joinstop()、destroy()已经废弃interrupt()中断线程池线程经历创建,运行,销毁。其中创建和销毁就会很消耗性能。线程池可以提前创建好线程,实现线程复用,newCachedThreadPool():newFi

2022-05-20 13:08:45 354

原创 数据结构红黑树

文章目录二叉搜索树BST自平衡二叉树AVL红黑树为什么hashmap采用红黑树二叉搜索树BST任意节点左子树所有节点比本身小,右子树所有节点比本身大。好处:插入或读取只需要与每一层一个节点进行比较缺点:当数据连续自增自减时,会变成线性存储结构,读写复杂度变为O(N)自平衡二叉树AVL是二叉搜索树一种左子树与右子树深度差小于等于1.O(logN)红黑树叶子节点,根节点:黑节点红节点的子节点必须是黑节点。整个树一半以上是黑节点新插入的节点是红节点从任意结点出发到叶子节点的任意路径,经过

2022-05-20 13:08:18 167

原创 HTTP历史版本与HTTPS

对称加密:key只有一个非对称加密:先利用非对称加密协商一个对称加密的key。1.索要公钥2.使用公钥对num1加密为y传给服务端。服务端用私钥将y进行解密为num1。就作为公钥。服务端通知客户端ok,协商完成,3.之后就可以进行对称加密中间人问题:在请求公钥就介入了解决:CA权威机构,解决判断拿到的公钥是否正确1.服务器将公钥通过CA给的私钥进行非对称加密得到证书license,需要付费2.客户端请求证书,从内存中拿到CA公钥,将证书进行解密,1.客户端向

2022-05-19 22:18:14 162

原创 计算java对象大小与逃逸分析

对象计算方法。对象分为两部分:头和内容头:由地址4字节+标记8字节+数组长度组成4字节标记包括:锁标记,hashcode,对象年龄1.Integer对象16字节。int4个字节地址4字节+标记8字节+内容int4字节=16字节2.hashmap 48=4+8+4+4+4*6=44.向8的倍数升:48地址4字节+标记8字节元素:set+cllection对象4+46个对象字节...

2022-05-19 21:44:43 118

原创 存在文件夹里的Word文档全部打不开,双击文档以后整个屏幕就卡主了,点击关闭文件夹会黑屏,黑一下屏后又会恢复正常。放在桌面上的文档可以正常打开,只要放到文件夹里就不行。解决方法

存在文件夹里的Word文档全部打不开,双击文档以后整个屏幕就卡主了,点击关闭文件夹会黑屏,黑一下屏后又会恢复正常。放在桌面上的文档可以正常打开,只要放到文件夹里就不行。解决方法

2022-05-12 11:08:30 977 2

原创 【zs整理】

文章目录操作系统进程间通信的方式匿名管道命名管道信号消息队列共享内存信号量Socket线程同步的方式1.同步方法2.同步代码块3.锁4.volatile5.信号量死锁的四个条件线程执行过程cpu调度算法线程sleep和wait方法作用和区别页面置换算法先进先出置换算法最近最久未使用置换算法计算机网络TCP三次握手未解决操作系统进程间通信的方式匿名管道、命名管道、信号、消息队列、共享内存、信号量、Socket匿名管道是一种半双工通信方式,数据只能单向流动,且只能在有亲缘关系的进程之间进行通信。(亲

2022-05-09 21:35:15 558

原创 【javaGC】

jvmJDK、JRE、JVM区别与联系JVMJREJDKGC怎么定义垃圾引用计数法可达性分析法GC算法1.标记—清理法2.标记—整理法3.复制算法实际GC算法JDK、JRE、JVM区别与联系JVMjvm(Java Virtual Machine),java虚拟机,java运行时的环境,是一种用于计算机设备的规范,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。java虚拟机在执行字节码时,把字节码解释成具体平台的机器指令。jvm实现了平台无关性,jvm屏蔽了具体操作

2022-05-09 15:37:59 365 1

原创 【jvm内存模型】

jvm内存模型jvm内存线程私有程序计数器栈本地方法栈全局共享堆方法区jvm内存jvm虚拟机拿到了自己能支配的内存之后,将内存进行割分,分为五个部分。本地方法栈:c++这些native方法。程序计数器:指向程序当前运行的位置方法区:存储元数据信息,jdk7及之前叫永久代,jdk8之后改名为元数据空间。存储静态方法或变量,类加载器,等全局数据信息。堆区:存对象栈区:存函数临时变量,存储对象引用,地址全局共享:堆区,方法区线程私有:栈区,本地方法栈,程序计数器。线程私有程序计数器较小的

2022-05-09 12:21:08 124

原创 【类加载】

文章目录类加载过程1. 加载2.验证3.准备4.解析类加载过程1. 加载在加载阶段,java虚拟机需要完成以下三件事情:通过一个类的全限定名来获取定义此类的二进制流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个java.lang.class对象,作为方法区这个类的各种数据访问入口。加载阶段结束后,java虚拟机外部字节流就按照虚拟机规定的格式存储在方法区中了,之后会在java堆内存中实例化一个java.lang.class对象1,这个对象作为程序访问方法

2022-05-09 09:45:39 321

原创 力扣17. 电话号码的字母组合

给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。实例1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]思路:回溯首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。回溯过程中维护一个字符串,表示已有的字母排列。该字符串初始为空。每次取电话号码的一位数字,从哈...

2022-05-08 18:11:13 108

原创 力扣15. 三数之和

题目:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]思路:排序加双指针要保证枚举的三元组不重复(数字不重复),可以将数组先从小到大排序,在循环时与双指...

2022-05-08 16:01:49 124

原创 力扣11. 盛最多水的容器

给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。思路: 双指针左指针从左边开始,右指...

2022-05-07 12:29:47 61

原创 力扣5. 最长回文子串

给你一个字符串s,找到s中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"思路: 动态规划边界条件:状态转移方程:P(i,j)=P(i+1,j−1)∧(Si​==Sj​)class Solution { public String longestPalindrome(String s) { char[] ...

2022-05-07 08:59:37 57

原创 力扣4. 寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2...

2022-05-07 08:54:50 198

原创 力扣3. 无重复字符的最长子串

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。思路:滑动窗口存储窗口中的字符以检验字符是否出现过:HashSet窗口左指针:n窗口右指针:r左指针没滑动一次就移出最左边的字符,并持续移动右指针直到右指针下一个字符出现过class Solution { public int lengthOfLonges...

2022-05-06 09:12:07 90

原创 <JVM>

JVMJVM垃圾回收机制(GC)一、怎样标识哪些对象“已死”?1.引用计数算法2.可达性分析算法哪些对象可作为GC Roots?二、Java中四种引用强引用(Strong Reference)软引用(Soft Reference)弱引用(Weak Reference)虚引用(Phantom Reference)三、finalize()赋予对象重生四、回收方法区五、垃圾收集算法1.标记-清理算法(Mark-Sweep)2.复制算法(Copy)3.标记-整理算法(Mark-compact)4.分代收集算法(Ge

2022-05-03 16:14:07 982

原创 力扣2. 两数相加

给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。注意:链表头部就是个位数。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; ...

2022-05-03 11:14:59 505

原创 力扣1. 两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。方法一:暴力枚举 时间复杂度:O(N^2),...

2022-05-03 10:56:27 57

原创 【Spring MVC学习】

Spring MVC概述什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC的优点核心组件Spring MVC的主要组件?什么是DispatcherServlet什么是Spring MVC框架的控制器?Spring MVC的控制器是不是单例模式工作原理请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?MVC框架MVC是什么?mvc设计模式的好处常用注解注解原理是什么Spring MVC常用的注解有哪些?@Controller

2022-05-01 20:18:05 115

原创 【Spring Boot学习】

Spring MVCSpring MVC框架什么是spring MVCMVC在B/S系统下的应用Spring MVC框架Spring MVC框架原理前端控制器、处理器映射器、处理器适配器Spring MVC入门程序非注解的Spring MVC框架什么是spring MVCspringmvc是spring框架的一个模块,和spring无序通过中间整合层进行整合springmvc是一个基于mvc的web框架MVC在B/S系统下的应用mvc是一个设计模式,Spring MVC框架Spr

2022-05-01 18:26:57 160

原创 【Spring学习】

SpringSpring概念spring框架概述配置对象创建IOC容器IOC概念和原理IOC底层原理IOC过程IOC接口(BeanFactory)IOC操作Bean管理基于xml基于注解AOPJDBC Template事务管理Spring新特性BeanFactory 和 ApplicationContext有什么区别列举 IoC 的一些好处Spring IoC 的实现机制什么是 spring beanspring 提供了哪些配置方式spring 支持集中 bean scopeSpring概念spring

2022-04-29 20:28:16 997

原创 力扣621. 任务调度器

题目:给你一个用字符数组tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = ["A","A","A...

2022-04-10 10:59:22 107

原创 力扣55. 跳跃游戏

题目:给定一个非负整数数组nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永...

2022-04-10 10:26:14 89

原创 力扣11. 盛最多水的容器(双指针)

题目:给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。思路:双指针时空复杂度:...

2022-04-10 09:55:29 113

原创 【华为面试手撕代码】

文章目录常用的排序算法1.冒泡排序2.选择排序3.插入排序4.快排排序5.归并排序6.堆排序Java 的sort基于什么实现排序算法原理,何为稳定不稳定,快排是否稳定查找二分查找复盘笔试题3.寻找重复的子树树的遍历方式树的遍历方式(先序、中序、后序)先序中序后序如何用数组模拟二叉树的遍历过程?求二叉树的深度两种方法栈、队列232. 用栈实现队列225. 用队列实现栈字符串序列化与反序列化寻找字符串最长回文串最大公共前缀找出出现次数最多的字符字符串中的最长不重复子串动态规划跳台阶最长公共子序列链表反转链表三种

2022-04-08 16:01:41 9929 1

原创 【操作系统】面试

文章目录线程线程、进程、协程进程切换和线程切换的区别为什么进程切换比线程切换快为什么虚拟地址空间切换会比较耗时线程三要素如何实现线程的可见性线程的操作方法:Thread类和Runable接口区别:线程的start()和run()方法区别wait和sleep的区别Java怎么实现线程安全的单例(饿汉式、枚举、双重检验锁)如何实现线程安全进程间通信的方式创建线程的方式,callable和runnable的区别多线程实现多线程的方式有几种:如果一个系统需要引入多线程,需要考虑哪些方面?java运行时至少启动两个线

2022-04-06 16:04:53 547

原创 【java基础】面试

文章目录二叉树二叉树遍历二叉查找树的缺点平衡二叉查找树缺点满二叉树是什么完全二叉树是什么红黑树是什么,是二叉树的一种吗HashMapHashMap底层实现原理HashMap扩容机制HashMap中初始化大小为啥是16,为啥链表长度为8是变成红黑树,为啥6时又变成链表HashMap的遍历方式hashmap插入过程HashTable底层实现。HashMap和HashTable的区别linkedhashmaphashmap linkedhashmap 区别hashCode()和equals()之间的关系:什么时

2022-04-05 20:06:38 1091

原创 【数据库】面经总结

文章目录1. 事务的特性ACID2. 事务并发可能出现的情况3. 隔离级别4. 二叉树、平衡二叉树、B树,B+树?5. MySQL索引原理:6. 最左前缀匹配7. Tree索引和Hash索引的区别8. MySQL索引调优9. 事务的实现原理(redo+undo)10. mysql存储引擎11. MySQL为什么查询速度快其实就是问B+树为什么查询速度快?12.红黑树为什么快,请简述一下原因1.红黑树的应用13. mysql的char和varchar区别14.行级锁和表级锁15.为什么mysql要用B+树16

2022-04-05 13:30:55 3040

原创 【计算机网络】面试这一篇就够了

文章目录计算机网络最常见的5个问题TCP三次握手和四次挥手TCP的3次握手的基本过程TCP的2次握手不行吗TCP的4次挥手的基本过程TCP的3次挥手不行吗在浏览器中输入url地址->>显示主页的过程HTTP和HTTPS的区别TCP、UDP协议的区别HTTP 状态码HTTPhttp,超文本传输协议中 ”超“是什么意思Http请求的过程与原理http1.0 http1.1 http2.0HTTPSHTTPS 为什么会出现什么是 HTTPSHTTPS 做了什么什么是 SSL/TLSHTTPS 的内核是

2022-04-04 20:54:48 645 2

原创 力扣85. 最大矩形

题目:给定一个仅包含0和1、大小为rows x cols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。思路: 用一个数组记录贴地的柱子高度,从row=0,开始一直到矩阵最底一行。之后计算柱子面积。算是复用代码class Solution { public int maximalRectangle(char[][] matrix) { /* 这题与84柱子中矩形的最大面积十分类似 不过是上一题问题的...

2022-04-03 20:04:20 250

原创 力扣84. 柱状图中最大的矩形

题目:给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。思路:1.核心思想:求每条柱子可以向左右延伸的长度->矩形最大宽度;矩形的高->柱子的高度。计算以每一根柱子高度为高的矩形面积,维护面积最大值2.朴素的想法:遍历每一根柱子的高度然后向两边进行扩散找到最大宽度3.单调栈优化:因为最终的目的是寻找对应柱子height[i]右边首个严格小于height[i]的柱子height[...

2022-04-03 20:00:02 175

原创 力扣42. 接雨水

题目:给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。思路:维护一个单调栈,单调栈存储的是下标,满足从栈底到栈顶的下标对应的数组 height 中的元素递减。从左到右遍历数组,遍历到下标 i时,如果栈内至少有两个元素,记栈顶元素为 top,top 的下面一个元素是 left,则一定有 height[left]≥height[top]。如果 height[i]>height[top],则得到一个可以接雨水的区域,该区域的宽度是...

2022-04-03 19:03:03 82

原创 力扣32. 最长有效括号

题目:给你一个只包含'('和')'的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例 3:输入:s = ""输出:0思路:class Solution { public int longestValidParentheses(String s) { ...

2022-04-03 18:20:47 198

原创 力扣581. 最短无序连续子数组

题目:给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。示例 1:输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。示例 2:输入:nums = [1,2,3,4]输出:0示例 3:输入:nums = [1]输出:0思路:...

2022-04-03 16:04:40 39

原创 力扣394. 字符串解码

题目:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4]的输入。示例 1:输入:s = "3[a]2[bc]"输出:"aaabcbc"...

2022-04-03 15:36:20 130

原创 力扣155. 最小栈

题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素实例:输入:["MinStack","push","push","push","getMin","pop","top","ge...

2022-04-03 14:47:29 59

空空如也

空空如也

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

TA关注的人

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