自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 计算机网络(一)HTTP状态码大全

这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。这些状态代码表示请求可能出错,妨碍了服务器的处理。表示临时响应并需要请求者继续执行操作的状态代码。表示成功处理了请求的状态代码。黑体状态码为常见状态码。

2024-07-19 09:53:45 564

原创 Java集合(七)图解LinkedHashMap原理(源码)

LinkedHashMap继承了HashMap,所以它们有很多相似的地方。

2024-07-18 13:13:34 850

原创 Java集合(六)Java中Comparable和Comparator区别

Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。T表示可以与此对象进行比较的那些对象的类型。此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

2024-07-18 13:11:13 501

原创 Java集合(五)ArrayList的扩容机制详解(源码)

了解ArrayList的扩容机制是编写高性能Java代码的重要一环。通过深入了解其内部实现,我们能够更好地利用这一数据结构,避免不必要的扩容操作,提高程序的效率。

2024-07-18 13:08:46 197

原创 Java集合(四)Java中Iterator(迭代器)实现原理

从源代码里可以看到增删操作都会使modCount++,通过和expectedModCount的对比,迭代器可以快速的知道迭代过程中是否存在list.add()类似的操作,存在的话快速失败!迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。也就是说,modCount记录修改此列表的次数:包括改变列表的结构,改变列表的大小,打乱列表的顺序等使正在进行迭代产生错误的结果。在网上查到说这是集合迭代中的一种“快速失败”机制,这种机制提供迭代过程中集合的安全性。

2024-07-18 13:04:23 717

原创 Java集合(三)Fail-Fast和Fail-Safe及使用场景

外部同步外部同步机制是指通过在代码层面对共享资源(如集合对象、数据结构等)进行显式的同步控制,以确保在多线程环境中的线程安全性。这种同步通常是由程序员手动实现的,并且可以采用 Java 中的各种同步机制来实现,比如使用 synchronized 关键字、使用 Lock 接口及其实现类、使用并发集合类等。相比之下,Java 并发包提供的并发集合类通常隐藏了同步细节,简化了多线程编程,但可能在性能上有一定的开销。但在多线程环境中,不适宜直接使用这些集合进行共享数据的操作,除非采用了外部的同步机制。

2024-07-18 13:02:35 413

原创 Java集合(二)JDK1.8 HashMap和ConcurrentHashMap(源码)

原数组长度为 n,所以我们有 n 个迁移任务,让每个线程每次负责一个小任务是最简单的,每做完一个任务再检测是否有其他没做完的任务,帮助迁移就可以了,而 Doug Lea 使用了一个 stride,简单理解就是步长,每个线程每次负责迁移其中的一部分,如每次迁移 16 个小任务。根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。

2024-07-17 21:11:50 767

原创 Java集合(二)JDK1.7 HashMap和ConcurrentHashMap(源码)

这个值可以在初始化的时候设置为其他值,但是一旦初始化以后,它是不可以扩容的。简单理解就是,ConcurrentHashMap 是一个 Segment 数组,Segment 通过继承 ReentrantLock 来进行加锁,所以每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 Segment 是线程安全的,也就实现了全局的线程安全。前面我们看到,在插入新值的时候,如果当前的 size 已经达到了阈值,并且要插入的数组位置上已经有元素,那么就会触发扩容,扩容后,数组大小为原来的 2 倍。

2024-07-17 21:08:15 710

原创 Java集合(一)HashMap实现原理及散列思想

在 HashMap 中,用于存储所有的{Key,Value}对的真实数组 table ,有一个初始化的容量,但随着插入的元素越来越多,数组的resize机制会被触发,而扩容时,容量永远是2的幂次,这也是为了保证取模运算的高效。比如,26进制的散列函数就有一个巨大的缺陷,就是它所需要的数组空间太大了,在刚刚的示例代码中,仅表示长度为3位的、只有a-z构成的字符串,就需要开一个接近20000(26。,目标是找到一个合适的槽位,找到当前链表中的key和待插入的key相同的节点,或者直到遍历到链表的尾部;

2024-07-17 17:48:18 971

原创 Java基础面试题大全

在Java中,创建子类对象时,如果没有用 super() 来调用父类特定的构造方法,则会调用父类中“无参构造方法”。如果此时父类没有无参构造,则编译报错。解决方案是要么给子类加上super指定父类的具体构造函数,要么给父类加上无参构造函数。方法的返回值:是指我们想要得到某个方法体中的代码执行后产生的结果!无参无返回值有参无返回值有返回值有参有返回值无参从 Java5 开始,Java 支持定义可变长参数,就是允许在调用方法时传入不定长度的参数,定义方法就是在参数类型后面加三个点。

2024-07-12 19:12:35 809

原创 LeetCode HOT100(四)字串

根据前面的分析,

2024-07-12 19:09:47 583

原创 LeetCode HOT100(三)滑动窗口

当滑动窗口移动( 执行「抵消/恢复」)时,如果「抵消」后该字符词频为 0,说明本次右端点右移,多产生了一位词频相同的字符;对于合法的子串而言,必然有 sum(所有字符的出现次数) - max(出现次数最多的字符的出现次数)= other(其他字符的出现次数) <= k。首先将目标字符串p的每个字符统计加入到数组中,对于每个字符,计算出char-'a’之间的差值作为索引,将对应索引的值-1.不考虑答案输出的顺序。判断完之后,左侧索引-1,相应的索引位置的值-1,右侧索引+1,相应的索引位置的值+1。

2024-07-11 21:17:46 1012

原创 Git常用命令大全+企业级实操

在线上托管平台(如gitlab)找到merge request–>new merge request–>选择你的分支,选择目标分支(一般dev),提交,在提交页面可以选择reviewer进行查看。master 为主分支,也是用于部署生产环境的分支,需要确保master分支稳定性。线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支。分支命名以hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。开发新功能时,以develop为基础创建feature分支。

2024-07-11 17:45:19 1057

原创 LeetCode HOT100(二)双指针

解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]不同的三元组是 [-1,0,1] 和 [-1,-1,2]。指针L:维护一个非零序列,L之前的元素都是非零的元素。输入:nums = [-1,0,1,2,-1,-4]输入: nums = [0,1,0,3,12]

2024-07-10 17:07:55 871 1

原创 算法常用技巧

目录交换两个数的异或方法:2的n次方的移位算法判断偶数:计算中值的方法master公式交换两个数的异或方法:注意:这种运算的前提是要交换的两个对象ab的地址不同arr[a] = arr[a] ^ arr[b]arr[b] = arr[a] ^ arr[b]arr[a] = arr[a] ^ arr[b]2的n次方的移位算法2^n == 1<<n(2^5) ==1<<5判断偶数:(newArr.length & 1)

2024-07-08 21:54:40 251

原创 整合POI实现员工报表导入导出

ResponseEntity可以作为controller的返回值,比如处理下载二进制文件的接口,当然,ResponseEntity不仅仅可以用于处理下载,非ModelAndView的其他场景均可以使用。ResponseEntity类,扩展了HttpEntity类,新增了status成员变量,这样,一个ResponseEntity基本可以代表完整的http的请求或响应了。,代表http请求或响应的header及body,其中的body是泛化的。3、用Sheet对象返回行对象,用行对象得到Cell对象。

2024-07-08 21:52:40 375

原创 LeetCode HOT100(一)哈希

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [100,4,200,1,3,2]你可以按任意顺序返回答案。

2024-07-08 21:42:40 447

原创 GO进阶之旅(一)GORM入门

模型一般基于 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型以及它们的指针/别名Scanner 接口:这是一个接口,定义了从数据库读取数据时如何将其扫描到 Go 类型的方法**(数据库–>实体类)**。它通常与自定义类型一起使用,用于将数据库中的原始数据转换为 Go 的特定类型。Valuer 接口:这是一个接口,定义了将Go 类型转换为数据库可以存储的值的方法**(实体类型–>数据库)**。ORM 库会在将结构体保存到数据库之前调用这个方法。

2024-07-08 14:59:26 1192

原创 算法与数据结构

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台注意边界赋值条件,当寻找左边界时:右边的全不要(大于等于目标值,更新右节点,左边界赋值为右节点-1);寻找右边界时:左边的全不要(小于等于目标值,更新左节点,右边界赋值为左节点)。

2024-03-04 20:27:14 563 1

原创 SpringBoot整合knife4j

SpringBoot整合Knife4j

2023-12-05 20:18:22 424

原创 bootstrap与application的优先级

在Spring Boot中,bootstrap和application配置文件的优先级不同,主要是因为它们在Spring Boot应用生命周期中的加载时机不同

2023-11-14 14:52:35 1144

原创 @EnableAutoConfiguration注解

org.springframework.boot.autoconfigure.EnableAutoConfiguration 键后面列出的类通常是标有 @Configuration 注解的类,这些类会被Spring Boot的自动配置系统实例化和处理。如果一个类在 spring.factories 文件中被指定,但它不带有 @Configuration、@Component 或其他相关注解,那么Spring Boot的自动配置机制会尝试将其作为一个普通的bean来处理。

2023-11-07 21:06:30 124

原创 @ControllerAdvice注解

是Spring3.2中新增的注解 ,它允许你通过一个集中的位置处理整个应用程序的控制器的异常和其他跨切面的关注点。这个注解通常与和注解一起使用。下面详细介绍一下它的具体作用和提供一些代码示例。

2023-10-28 22:01:09 104

原创 Numpy

指定沿哪个轴计算,默认为None(计算整个数组中的最大值):指定沿哪个轴计算,默认为None(计算整个数组中的最小值):指定沿哪个轴计算,默认为None(计算整个数组的最大值):指定沿哪个轴计算,默认为None(计算整个数组的最小值):指定沿哪个轴计算,默认为None(计算整个数组的中位数):指定沿哪个轴计算,默认为None(计算整个数组的标准差):指定沿哪个轴计算,默认为None(计算整个数组的均值):指定沿哪个轴计算,默认为None(计算整个数组的乘积):指定沿哪个轴排序,默认为-1(最后一个轴)

2023-09-23 00:49:14 36

原创 使用API调用ChatGPT

前提条件:1. 能够科学上网2. 在openai官网注册了账号。

2023-09-21 11:22:15 1037

原创 职位管理的表关联数据异常处理

58-59

2022-02-17 12:36:41 183

原创 权限控制策略

50-52

2022-02-17 12:27:04 479

原创 前端项目搭建

创建目录,命令行cd到当前目录,输入命令vue create projectname创建项目。 选项: 创建完成后cd到对应项目目录,然后输入npm run serve运行项目 在浏览器输入localhost:8080访问项目

2022-02-16 15:11:42 555

原创 服务端菜单接口

p41

2022-02-15 20:19:52 219

原创 前端登录接口

p35-p37

2022-02-15 15:57:10 1258

原创 Linux学习手册

Linux学习手册,包含文件目录管理,用户管理,时间指令,安所与解压,查找指令,权限管理,磁盘与网络,监控等内容的梳理,参考韩顺平Linux,详细可以学习B站韩顺平的Linux教程,基于CentOS7和VMware截图大部分基于FinalShell。

2022-01-19 22:35:52 1874

原创 判断一个链表是否为回文结构

【题目】给定一个链表,请判断该链表是否为回文结构。【输入】n 表示链表的长度ai 表示链表的各个节点的值。【输出】如果为回文结构输出 "true" , 否则输出 "false"。【示例】输入:41 2 2 1输出:true【备注】【解法1】利用stack将整个链表入栈,然后出栈判断public static boolean isPalindrome1(Node head) { Stack<Node> ...

2022-01-16 17:48:40 260

原创 荷兰国旗问题

【题目】难度:1星给定一个整数数组,给定一个值K,这个值在原数组中一定存在,要求把数组中小于K的元素放到数组的左边,大于K的元素放到数组的右边, 等于K的元素放到数组的中间,最终返回一个整数数组,其中只有两个值,分别是等于K的数组部分的左右两个下标值。(把一组数据按一个标志分成三份,左边的都小于标志数,中间的都等于标志数,右边的都大于标志数)【代码】package test;import java.util.*;public class Main{ public.

2022-01-15 12:32:09 103

原创 计算数组的小和

【题目】难度:3星数组小和的定义如下:例如,数组 s = [1, 3, 5, 2, 4, 6] ,在 s[0] 的左边小于或等于 s[0] 的数的和为 0 ; 在 s[1] 的左边小于或等于 s[1] 的数的和为 1 ;在 s[2] 的左边小于或等于 s[2] 的数的和为 1+3=4 ;在 s[3] 的左边小于或等于 s[3] 的数的和为 1 ;在 s[4] 的左边小于或等于 s[4] 的数的和为 1+3+2=6 ;在 s[5] 的左边小于或等于 s[5] 的数的和为 1+3+5+2+4=15

2022-01-15 11:07:59 551

原创 异或运算的相关算法:找到数组中出现奇数次的数

【题目】给一个数组arr,其中只有一个数出现了奇数次,其它数出现了偶数次,打印这个数。【输入】输出包含两行,第一行包含一个整数n(1 \leq n \leq 10^5)(1≤n≤105),代表数组arr长度,第二行有n个数,代表数组arrarr_i 为32位整数arri​为32位整数。输出包含两行,第一行包含一个整数n(1 \leq n \leq 10^5)(1≤n≤105),代表数组arr长度,第二行有n个数,代表数组arrarr_i 为32位整数arri​为32位整数。【输出】.

2022-01-13 11:30:09 668

原创 ArrayList Iterator LinkedList面试考点(源码分析)

ArrayList:扩容规则: ArrayList() 空参构造会使用长度为零的数组 ArrayList(int initialCapacity) 会使用指定容量的数组 public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量 add(Object o) 首次扩容为 10,再次扩容为上次容量的 1.5 倍 addAll(Collection c) 没有元素时,扩容为 Math.max(

2021-11-20 11:49:01 468

原创 求最长的回文子序列(动态规划,区间问题)

问题描述:给定一个字符串str,求最长的回文子序列。注意区分子序列和子串的不同。样例:输入:ab321aw123输出:321a123解题思路:首先根据题意,该题属于范围上尝试的模型,尝试用动态规划来解题,首先构建出二维表行表示 i ,列表示 j ,a[i][j]表示从i索引到 j 索引上的最长回文子序列ab321aw123 0 1 2 3 4 5 6 7 8 9 0 1 1 1 .

2021-11-12 11:37:16 407 1

原创 给定数组表示体重的渡河问题

问题描述:给定一个数组arr,长度为N且每个值都是正数,代表N个人的体重。再给定一个正数limit,代表一艘船的载重。以下是坐船规则,1)每艘船最多只能做两人;2)乘客的体重和不能超过limit。返回如果同时让这N个人过河最少需要几条船。样例:输入:{6,3,3,2,4,5,1} 6输出:4【1,5】【2,4】【3,3】【6】解题思路:解法一(左神解法):首先过滤整个数组,先用基数排序(O(n))排序,然后分三种情况:如果数组中存在比limit还大的数,那么...

2021-11-12 11:07:09 524

原创 [A...Z]的k伪进制问题

问题描述:一个 char 类型的数组 chs,其中所有的字符都不同。 例如,chs=['A', 'B', 'C', ... 'Z'],则字符串与整数的对应关系如下: A, B... Z, AA,AB...AZ,BA,BB...ZZ,AAA... ZZZ, AAAA... 1, 2...26,27, 28... 52,53,54...702,703...18278, 18279...给定一个数组 chs,实现根据对应关系完成字符串与整数相互转换的两个函数。样例:输入:chs=['A'

2021-11-11 10:16:33 381

原创 返回所有子数组中所有元素相加和小于等于k的最长子数组长度。(滑动窗口,元素可0可负进阶问题)

问题描述:给定一个数组 arr,该数组无序,但每个值均为正数,再给定一个正数 k。求 arr 的所有子 数组中所有元素相加和为 k 的最长子数组长度。要求:时间复杂度O(N),额外空间复杂度O(1)输入:arr=[1,2,1,1,1]输出:k=3累加和为 3 的最长子数组为[1,1,1],所以结果返回 3。解题思路:利用滑动窗口解决问题起始窗口内只有第一个数,判断第一个数和k的大小。 如果窗口内的数字的和大于k,则需要将窗口左边界向右移,继续比较 如果窗口内的数.

2021-11-06 12:12:03 364

左神算法中级班笔记哦.md

适合ybw

2021-11-02

Mybatis基础知识整合

Mybatis基础知识,使用方法,视频为b站狂神说java的mybatis

2021-08-24

空空如也

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

TA关注的人

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