小白学java
_18shou
戒骄戒躁,脚踏实地,日积月累!
展开
-
HTTP/HTTPS
参考文章:HTTP(超文本传输协议)的通俗理解_Huang_JunJun的博客-CSDN博客小林coding小林coding的博客_CSDN博客-图解计算机网络,图解操作系统,C/C++领域博主目录HttpHttp的优点Http的缺点Http1.1的改进Http1.1的缺点如何优化HTTP1.1?Http2的改进Http2的缺点Http3Http和Https的区别Https握手Https如何优化?Http超文本传输协议(Hyper Text原创 2022-03-20 14:01:05 · 3093 阅读 · 0 评论 -
了解java并发编程核心框架Executor
目录Executor框架简介Executor框架的结构如何使用Excutor框架?Excutor框架的成员本文摘自java并发编程的艺术(本文摘出来用于本人学习)在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们 为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时, 为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。 Java的线程既是工作单元,也是执行机制。从JDK 5开原创 2022-02-03 20:07:04 · 888 阅读 · 0 评论 -
线程池的核心参数
coresize 核心线程数 maximumsize 最大线程数 keepAliveTime(生存时间吗,针对救急线程) unit 时间单位(针对救急线程) runnableTaskQueue(任务队列)ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按FIFO(先进先出)原则对元素进行排序。 LinkedBlockingQueue:一个基于链表结构的阻塞队列,此队列按FIFO排序元素,吞吐量通常要高于ArrayBlockingQueue。静态工厂方法Execut.原创 2022-02-03 16:17:20 · 1635 阅读 · 0 评论 -
java并发编程的一些知识
目录线程分为哪几种状态?wait/sleep的区别并发/并行的区别管程用户线程/守护线程同步和异步线程上下文切换线程常用方法常见线程安全类线程分为哪几种状态?java线程分为六种状态new 新建 runnable 可运行 blocked 阻塞 waiting 等待 time waiting 限时等待 termingted 终结getState()方法可获取当前线程的状态操作系统线程分为五种状态分到cpu时间的:运行可以分到c..原创 2022-02-03 15:08:39 · 2251 阅读 · 0 评论 -
线程固定顺序交替输出的三种方式(趁室友不在寒假在家偷偷学)
目录synchronized方式(ReentrantLock)await & signal方式(LockSupport)park&unpark方式synchronized方式package com.atguigu.juc;public class ChangePrint { public static void main(String[] args) { WaitChange waitChange = new WaitChange(1, ..原创 2022-01-14 20:26:36 · 687 阅读 · 19 评论 -
生产者消费者模型的实现(线程通信)
目录实现一:实现二:实现一:package com.atguigu.juc;import java.util.LinkedList;public class ProductConsumerTest2 { public static void main(String[] args) { MessageQueue messageQueue = new MessageQueue(3); for (int i = 0; i <= 3......原创 2022-01-13 19:51:01 · 2593 阅读 · 21 评论 -
一名普通大三学生的寒假的打算
首先自我介绍一下,我是一名计算机科学于技术专业的普通的大三学生,正在为找工作而努力目前对于框架部分都有一定的了解,最近一直在复习各种基础。学校马上就要放假了,在此定一个目标:寒假找到一个中意的实习最近一直忙碌于写实验报告作业和准备期末,导致完全没有时间刷算法和学习新的知识,或者说是懈怠了,算法题已经有好几天没刷,感觉这样下去人会越来越懈怠,必须重拾当初刷leetcode的激情,就写下了这篇博客来激励自己继续努力,现在基本也没什么课了,打算重拾每日算法题打卡,为寒假找实习打下坚实的基础,对我们23原创 2022-01-02 23:36:50 · 1036 阅读 · 14 评论 -
室友打了俩把LOL,我知道了类是怎样加载的
目录类加载类加载的时机类加载的过程加载阶段验证阶段准备阶段解析阶段初始化阶段类加载器双亲委派破坏双亲委派本文摘自(深入理解JVM)如有错误望指出类加载Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可被java虚拟机直接使用的java类型,这个过程被称为虚拟机的类加载机制在java语言里面,类型的加载、连接和初始化都是在程序运行期间完成的“Class文件”也并非特指某个存在于具体磁盘的文件原创 2022-01-01 17:50:44 · 11872 阅读 · 56 评论 -
经典jvm垃圾收集器(旧收集器)(深入理解jvm)
目录jvm收集器(旧)Serial收集器Serial Old收集器ParNew收集器Parallel Scavenge收集器Parallel Old收集器CMS收集器jvm收集器(旧)Serial收集器 Serial收集器是最基础、历史最悠久的收集器,这个收集器是一个单线程工作的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程(Stop The World)原创 2021-12-23 20:11:12 · 1431 阅读 · 22 评论 -
JVM内存结构阐述
内存结构程序计数器 作用,是记住下一条jvm指令的执行地址 是线程私有的 在线程上下文切换的过程中需要记录到下一条要执行的指令的地址,等到线程再次被调度到执行的时候,还是根据该线程的程序计数器,来找到下一条要执行的指令的地址 每个线程都有自己独有的程序计数器 唯一一个内存不会溢出的 随着线程创建而创建,随着线程销毁而销毁 栈栈可以说是虚拟机栈中的局部变量表局部变量表中存放了编译期可知的各种基本数据类型,对象引用(不等于对象本身,可能是一原创 2021-12-15 15:46:09 · 3494 阅读 · 23 评论 -
一文学会多线程
一文了解多线程原创 2021-12-12 22:05:10 · 1923 阅读 · 33 评论 -
Mysql学习笔记(全)
目录MyISAM和InnoDB性能下降SQL慢的原因:Mysql执行顺序SQLJoin索引索引的优劣索引分类mysql索引结构那些情况建索引哪些情况不要建索引性能分析Extra索引优化索引口诀索引案例Order By 索引优化exsitesMysql慢查询日志命令函数操作批量插入数据show Profile分析sql全局查询日志Mysql锁锁命令表锁:读锁表锁:写锁行锁事务行锁测试间隙锁行原创 2021-12-07 21:07:26 · 25945 阅读 · 63 评论 -
MySQL学习笔记(15-28)
目录索引的优劣索引分类mysql索引结构那些情况建索引哪些情况不要建索引性能分析索引的优劣1.优势类似大学图书馆图书编号建索引,提高了数据检索的效率,降低数据库的IO成本通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗2.劣势实际上索引也是一张表,该表保存了主键与存在索引的字段,并指向实体表的记录,所以索引列也是占用空间的虽然索引大大提高了查询速度,但是会降低更新表的速度,比如 update,insert,delete操作,因为更新表时,My原创 2021-11-28 21:11:16 · 3989 阅读 · 29 评论 -
Mysql高级学习笔记(1-15)
MyISAM和InnoDB对比 MyISAM InnoDB 主外键 不支持 支持 事务 不支持 支持 行表锁 表锁,操作时即使操作一条记录也会锁住一整张表,不适合高并发的操作 行锁,操作时只锁住某一行,不会影响到其他行,适合高并发 缓存 只缓存索引,不缓存其他数据 缓存索引和真实数据,对内存要求较高,而且内存大小对性能有影响 表空间 小 大 关注点 性能 事务 默认安装 Y Y原创 2021-11-27 18:51:33 · 3556 阅读 · 19 评论 -
剑指 Offer 05. 替换空格344. 反转字符串
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."class Solution { public String replaceSpace(String s) { char[] arr=s.toCharArray(); StringBuilder buid=new StringBuilder(); for(int i=0;i&l原创 2021-11-23 23:00:52 · 867 阅读 · 6 评论 -
MySql索引
1.索引索引是什么:索引是在数据库的字段上添加的,是为了提高查询效率存在的一种机制一张表的一个字段可以添加一个索引,多个字段联合起来也可以添加索引索引相当于一本书的目录,是为了缩小扫描范围存在的一种机制...原创 2021-11-21 19:05:28 · 759 阅读 · 3 评论 -
Mysql事务
目录1.什么是事务?2.只有DML语句才会有事务这一说,其他都没关系3假设所有的业务,只需要一条DML语句就能完成,那还有必要存在事务机制吗?4.事务是怎么做到多条DML语句同时成功,同时失败呢?提交事务:回滚事务:5.怎么提交,回滚事务6.事务的特性1.什么是事务? 一个事务其实就是一个完整的业务逻辑 什么是一个完整的业务逻辑? 假设转账,A向B转账10000(update语句)...原创 2021-11-20 21:57:59 · 1014 阅读 · 1 评论 -
541. 反转字符串 II(leetcode每日打卡)
541. 反转字符串 II给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"示例 2:输入:s = "abcd", k = 2输出:"bacd"class Solution{public .原创 2021-11-22 23:08:20 · 459 阅读 · 5 评论 -
18. 四数之和(leetcode每日打卡)
目录题目描述思路题解题目描述给你一个由 n 个整数组成的数组nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d< na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。...原创 2021-11-22 22:43:59 · 327 阅读 · 1 评论 -
三数之和(leetcode每日打卡)
目录题目描述思路题解题目描述给你一个包含 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 = []输出:[]示例 3:输入:nums = [0]输出:[]思路来自排序 + 双...原创 2021-11-21 23:05:08 · 523 阅读 · 4 评论 -
1. 两数之和(leetcode每日打卡)
目录题目描述思路题解题目描述给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:...原创 2021-11-20 23:09:32 · 799 阅读 · 2 评论 -
454. 四数相加 II(leetcode每日打卡)
454. 四数相加 II给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0示例 1:输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输出:2解释:两个元组如下:1.原创 2021-11-20 22:53:44 · 628 阅读 · 1 评论 -
202. 快乐数(leetcode每日打卡)
目录题目描述思路方法二:题目描述编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。示例 1:输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 .原创 2021-11-20 22:39:08 · 225 阅读 · 1 评论 -
350. 两个数组的交集 II
350. 两个数组的交集 II题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]思路由于同一个数字在两个数组中都可能出现多次,因此需要用哈希表存储每个数字出现的次数。对于一个数字,其在交集中出现的次数等于该数字在两个数组中出现次数的最小值。首先遍历第一个数组,并在.原创 2021-11-19 22:56:53 · 325 阅读 · 2 评论 -
438. 找到字符串中所有字母异位词
438. 找到字符串中所有字母异位词难度中等题目描述给定两个字符串s和 p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。示例1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2...原创 2021-11-18 23:14:40 · 450 阅读 · 2 评论 -
49. 字母异位词分组
49. 字母异位词分组难度中等目录题目描述思路题解题目描述给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:输入: str原创 2021-11-18 23:09:21 · 214 阅读 · 0 评论 -
383. 赎金信(leetcode每日打卡)
目录题目描述思路题解题目描述为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:输入:ransomNote = "a", magazine = "b原创 2021-11-17 22:56:27 · 255 阅读 · 5 评论 -
242. 有效的字母异位词(leetcode每日打卡)
242. 有效的字母异位词目录题目描述思路题解题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若s 和 t中每个字符出现的次数都相同,则称s 和 t互为字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false思路从另一个角度考虑,t 是 s 的异位词等价于「两个字符串中字符出现...原创 2021-11-16 20:13:16 · 503 阅读 · 9 评论 -
142. 环形链表 II(leetcode每日打卡)
142. 环形链表 II目录题目描述思路题解题目描述给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:...原创 2021-11-16 19:58:45 · 265 阅读 · 9 评论 -
面试题 02.07. 链表相交(leetcode每日打卡)
面试题 02.07. 链表相交给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据保证整个链式注意,函数返回结果后,链表必须保持其原始结构。示例 1:结构中不存在环。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3...原创 2021-11-16 19:43:06 · 922 阅读 · 8 评论 -
24. 两两交换链表中的节点(leetcode每日打卡)
题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]思路保存断掉的结点题解/** * Definition for singly-linked list. * public cla..原创 2021-11-15 09:57:27 · 733 阅读 · 7 评论 -
19. 删除链表的倒数第 N 个结点
目录题目描述思路题解题目描述给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]思路双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉sl...原创 2021-11-15 09:52:13 · 302 阅读 · 2 评论 -
反转链表(leetcode每日打卡)
目录题目描述思路题解题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]思路假设链表为 1→2→3→∅,我们想要把它改成∅←1←2←3。在遍历链表时,将当前节点的 \textit{next}next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。题解c.原创 2021-11-15 09:06:23 · 390 阅读 · 3 评论 -
203. 移除链表元素
目录题目描述思路题解题目描述给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]思路1建立虚拟头节点 有效避免空指针...原创 2021-11-14 18:26:40 · 261 阅读 · 1 评论 -
设计链表(leetcode每日打卡)
题目描述设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第index个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为val的节点。插入后,新节点...原创 2021-11-14 18:21:12 · 283 阅读 · 1 评论 -
虐杀螺旋矩阵(乱杀leetcode,有彩蛋)
目录题目描述1思路题解1题目描述2题解2题目描述3题解3致力于帮助大家理解leetcode本次我将会以套模板的方式来讲解螺旋矩阵,助小伙伴以后再也不用为螺旋矩阵头疼了一共三题 带你清晰了解螺旋矩阵系列题目描述159. 螺旋矩阵 II给定一个正整数n,生成一个包含 1 到n^2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]思路...原创 2021-11-14 18:44:58 · 340 阅读 · 37 评论 -
在项目中加入redis缓存(学习总结)
首先加入依赖 <dependencies> <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depend原创 2021-11-13 15:02:35 · 2506 阅读 · 2 评论 -
209. 长度最小的子数组(leetcode每日打卡)
目录题目描述思路题解复杂度题目描述给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。示例 2:输入:targ...原创 2021-11-12 18:32:27 · 196 阅读 · 16 评论 -
剑指 Offer 55 - II. 平衡二叉树(leetcode每日打卡)
目录题目描述思路题解题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 /...原创 2021-11-11 22:59:47 · 173 阅读 · 2 评论 -
剑指 Offer 27. 二叉树的镜像(leetcode每日复习)
目录题目描述思路题解复杂度题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7/ \ / \1 3 6 9镜像输出: 4 / \ 7 2/ \ / \9 6 3 1示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]思路递归栈题解/** * Defini...原创 2021-11-11 21:12:12 · 694 阅读 · 0 评论