自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【最佳实践】优雅地处理 Java 中的空指针

Optional类是随着在 2014 年引入的。它是java.util包中的一个容器类,主要用于解决 Java 中长期存在的空指针异常(NullPointerException, NPE)问题。

2024-09-19 08:40:25 319

原创 【踩坑】Gradle依赖下载问题解决:stributions/gradle-8.10-bin.zip failed: timeout (10000ms)

在构建项目时,Gradle 默认会从 https://services.gradle.org/distributions/ 下载对应版本的 Gradle 包。由于网络问题,这个过程可能非常缓慢,甚至会出现下载失败的情况。为了解决这一问题,我将 gradle-wrapper.properties 文件中的下载地址改成了腾讯云的镜像源:properties复制代码。

2024-09-17 14:11:08 210

原创 【最佳实践】配置类封装-Async异步注解以及自定义线程池

*** 线程池配置/*** 线程池配置* @returnlog . info("---------- 线程池开始加载 ----------");// 核心线程池大小 threadPoolTaskExecutor . setMaxPoolSize(maxPoolSize);// 最大线程数 threadPoolTaskExecutor . setQueueCapacity(keepAliveSeconds);

2024-09-16 08:38:50 572

原创 【最佳实践】配置类封装-响应体、全局异常处理

2、统一响应格式 3、统一异常枚举类。几个要点:1、异常类,使用。

2024-09-15 15:42:24 400

原创 【最佳实践】配置类封装-国际化MessageSource

注解的作用主要是控制是否使用CGLIB代理来代理@Bean方法。当设置为true时,被@Bean标识的方法会被 CGLIB 代理,同时也会遵循 Spring 容器的一些生命周期行为,比如和@Destroy。如果这些@Bean方法返回的是单例 Bean,那么在同一个配置类中多次调用这些方法,得到的都是同一个 Bean 实例,因为该 Bean 只会被初始化一次。当设置为false时,被@Bean标识的方法不会被拦截以进行 CGLIB 代理,也不会遵循 Spring 容器中的生命周期行为。

2024-09-14 07:55:14 798

原创 【Tools】专为Idear写的VSCode进行开发配置

【代码】【Tools】专为Idear写的VSCode进行开发配置。

2024-08-31 14:20:48 175

原创 Chrome浏览器插件配置

【代码】Chrome浏览器插件配置。

2024-08-20 08:06:32 89

原创 【C语言与汇编】简单学学C到汇编代码

C++确保 了char足够大,能够存储系统基本字符集中的任何成员,而wchar_t则可 以存储系统扩展字符集中的任意成员,short至少为16位,而int至少与 short一样长,long至少为32位,且至少和int一样长。编译的时候会编译不通过,但是这并不是什么问题,是因为一些语法问题,虽然说编译是不涉及到代码之间的整合的,但是我们在之后运行的时候是需要知道怎么去找这个数据的,找一个数据需要怎么找呢?是解引用,也即括号内的值是一个地址,但是此处的 rax 中装入的已经是一个数了,为何要解引用呢,难道。

2022-12-10 18:19:02 1210 1

原创 【JVM】类加载器 and破坏双亲委派模型实现

最近和朋友讨论的时候聊到关于类加载子系统这一块怎么自己实现一个子系统,对这个比较感兴趣,于是实践 了一下。自己实现一个类加载器public class MyClass { public static void main(String[] args) throws Exception { // 自定义D盘类加载器 MyClassLoader classLoader = new MyClassLoader("D:/test"); Class cl.

2021-10-31 19:58:45 369

原创 【源码解析】ConcurrentHashMap

废话不多说,show me your code构造方法:get方法:关于find方法,自己在思考的时候遇到了一些错误,get的时候怎么确定会进入到哪个方法?put的时候已经确定了是FWD还是TreeBin,在扩容时,当前桶挪完在桶位上放置FWD节点,其他线程定位到这个桶位,会调用FWD的find方法。非扩容时,不会调用FWD的find方法。put方法...

2021-10-20 11:17:18 402

原创 常见异常总结

MonitorStateException

2021-10-11 16:18:43 179

原创 【源码解析】ReentrantLock的重入锁分析AQS

ReentrantLockSynchronizedReentrantLock锁实现机制对象头监视器模式依赖 AQS灵活性不灵活支持响应中断、超时、尝试获取锁释放锁形式自动释放锁显示调用 unlock()支持锁类型非公平锁公平锁 & 非公平锁条件队列单条件队列多个条件队列是否支持可重入支持支持AQS:state:volatile 、CASAQS中的队列1、先进先出的双端队列2、通过 Head、Tail 头尾

2021-10-03 12:26:34 249

原创 【玩转线程池】ThreadPoolExecutor总结

线程池 ThreadPoolExecutor是什么:worker们的血汗工厂有什么用:减少资源消耗,方便管理线程怎么玩:自己new线程池玩线程池原理线程池工作原理(优点,缺点)没有线程池的时候,与有线程池的时候进行对比。解决了资源分配问题,池化思想,最大化收益最小化风险,统一资源进行管理的方式。线程池5个状态(run、shutdown、Stop、dying、terminated)线程池状态转换(shutdown、shutdownNow、workerQueue的变化)7个参数(core、

2021-10-02 09:30:48 297

原创 数据库更改密码

一套项目的流程:#mermaid-svg-hXvtQO3Bycl6700Z .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-hXvtQO3Bycl6700Z .label text{fill:#333}#mermaid-svg-hXvtQO3Bycl6700Z .node rect,#mermaid-svg-h

2021-09-24 21:39:15 204

原创 【JUC】线程池_参数_ForkJoin_CompletableFuture

线程池类比为银行业务员,1、降低消耗,不用经常请人,hr也很幸苦的2、控制最大能有多少个业务员 MaxThreadPoolSize3、员工好管理,统一编制统一管理线程池:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的销耗。第二:提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会销耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。几个特殊的池Executors

2021-09-21 13:34:31 313

原创 【JUC】线程消息 sync JUC工具类

技术:深,透,明,细生产者消费者模型:1、高内聚低耦合,线程操作资源类2、判断干活通知3、判断使用while,出来以后还是重新判断。(防止多线程的虚假唤醒)这个生产者消费者demo挺好玩的class ProDuc{ int num = 0; public synchronized void increment() throws InterruptedException { // 1. num现在为 1:那么进入{},当前线程 wait等待唤醒 .

2021-09-20 22:27:29 289 1

原创 【源码解析】关于List、Map、Set浅析

collection接口:ArrayListsize为实时元素个数初始化的几种情况:1、指定容量,直接初始化2、指定容量为0,指向空数组“elementData”3、不指定容量,延迟初始化add进入先判断数组是否为空,为空情况下判断初始容量为DEFAULT_CAPACITY = 10;还是minCapacity(size + 1)得到minCapacity再去确定准确的容量,如果需求的最小容量也比现在的数组长度(elementData.length)大,那么执行grow方法。gro

2021-09-18 09:11:49 227

原创 面试场上默认必会的数据结构与算法

一、排序算法:归并class Solution{ // 递归方法实现 public static void mergeSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } process(arr, 0, arr.length - 1); } // 请把arr[L..R]排有序(分而治之的思想) // l...r N // T(N) = 2 * T(N / 2) + O(N) // O(

2021-09-17 10:34:37 159

原创 【数算】复习2

2021年9月14日会议室问题:贪心算法是几乎没有规律的一种算法,面试场合比较少见(无区分度)与之相反,dp问题比较常见,因为dp涉及到优化的问题,将复杂的重复计算问题优化为单次计算的。https://www.acwing.com/problem/content/description/2759/一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间 。你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。 返回最多的宣讲场次。public int

2021-09-14 10:14:15 195

原创 【数算】复习1

滑动窗口问题https://leetcode-cn.com/problems/sliding-window-maximum/public int[] maxSlidingWindow(int[] nums, int k) { if( nums == null || k<1 || k > nums.length ) return null; int len = nums.length; int[] window = new int[len - k

2021-09-13 11:37:03 186

原创 CAS原理浅析——自旋锁ABA情况的解决

马老师的分析:CAS锁 == 自旋锁:一直不断更新,直到没有人进来就更新成功,一直循环,成功为止。ABA问题:080,看着一样,但是其实不一样了(女朋友例子)1 )加版本,versionControl,给别人1回来变成9992 )boolean = markable保障CAS操作原子性问题:(lock指令),CAS模拟实现:val加到1000模拟操作提高并发性能:降低锁的粒度,只对val进行加锁public class ModelTest { volatile private s

2021-09-07 14:15:52 780

原创 左神提升6:暴力递归改动态规划

内容讲述暴力递归和动态规划的关系 =》去重的过程记忆化搜索 傻缓存动态规划都可以由暴力递归改进过来,解决动态规划的套路常见的尝试模型设计尝试过程的原则本节是暴力递归到动态规划的总纲(很重要)后续的课都是在讲述这一系列的套路1、尝试=》 分辨出来所有的参数,找到所有的可变参数以及固定的值(边界)2、可变参数的组合是什么,表大小根据可变参数的变化范围来确定3、已知固定位置的依赖,有具体参数的例子(范围的两端)4、知道在表中的最终想要的位置,baseCase固定的行列(确定好baseCas

2021-09-06 15:12:34 434

原创 红黑树解析——从概念到Code

基本概念①、路径:顺着节点的边从一个节点走到另一个节点,所经过的节点的顺序排列就称为“路径”。②、根:树顶端的节点称为根。一棵树只有一个根,如果要把一个节点和边的集合称为树,那么从根到其他任何一个节点都必须有且只有一条路径。A是根节点。root③、父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点,parent④、子节点:一个节点含有的子树的节点称为该节点的子节点;F、G是C节点的子节点。⑤、兄弟节点:具有相同父节点的节点互称为兄弟节点;F、G节点互为兄弟节点。⑥、叶节点:没有子节点

2021-09-05 21:49:46 397 1

原创 左神提升5:树型DP 问题

树型DP的套路从小树到大树,得到答案的可能性,得到infoprocess使用info进行信息传递baseCase使用null综合leftInfo、rightInfo加工左右信息(注意null的时候,什么时候存在)利用递归的思想来实现dp,dp有空间换时间...

2021-09-05 17:04:52 260

原创 左神提升5:Morris遍历

morris逻辑保证当前的cur里面有值: 现在的当前节点记为cur,如果cur无左孩子,则cur向右移动,cur=cur.right 如果cur有左孩子,则找到左子树上最右的节点,记为mostright 1)如果mostright的右指针指向空,则让其指向cur,此时cur向左移动,cur = cur.left 2)如果mostright的左指针指向空,则让其指向空,cur向右移动morris原型public static void morris(Node head){ if(hea

2021-09-05 11:19:22 217

原创 左神说:被火车撞了都不能忘记的算法

https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums == null || k < 1 || nums.length<k) return new int[]{}; int[] res = new int[nums.l

2021-09-04 14:41:58 218

原创 【源码解析】深入理解HashMap

静态区域六参数:static final6参数,初始化的大小以及最终的限定范围,其余六个和树化有关,一个是相关的参数,其余的是判定是否能够树化以及树的退化的条件// 初始化HashMap的时候,如果没有赋值,那么我们会给它赋上默认的缺省值为16//数组一开始的大小默认就为16,即HashMap中桶的数量 2^4 【凡涉及到"容量"一词,都是指桶的数量】static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

2021-09-03 12:19:15 261

原创 Java实现KMP代码

左神第12节课:基础提升:有序表、并查集KMP算法是由一个问题而引发的:对于一个字符串str(长度为N)和另一个字符串match(长度为M),如果match是str的子串,请返回其在str第一次出现时的首字母下标,若match不是str的子串则返回-1。public class KMP { public static void main(String[] args) { System.out.println(getIndexOf("abcacb", "cb"));

2021-09-02 17:40:56 202

原创 【左神】二叉树基础复习

二叉树的经典遍历【前序遍历】迭代法需要stack来保存临时节点,先右后左,因为是stackclass Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); postorder(root, list); return list; }

2021-08-25 13:55:41 238

原创 Collection接口里面有什么?

Collection:专为引用变量设计的集合Collection里面有什么1. 常用操作size方法统计元素的数量返回这个集合里面的元素数量,如果这个集合包含了超过 {@code Integer.MAX_VALUE} ,返回{@code Integer.MAX_VALUE} 。int size();isEmpty()判断这个集合是否没有元素包含在内。boolean isEmpty();contains(Object o)如果这个集合包含了指定的(specified)元素,返

2021-08-01 14:17:28 340

原创 SpringBoot简介

1. 列属性完整性primary key 主键绝对确定唯一,99%不会再去更改,且能确定数据的存在性(不能为空)优点:查询快且方便- 保证数据完整性,到哪张表都能查- 规律性- 唯一性- 处理方便(相对string而言)create table t_8( id int(18) primary key, name varchar(30));【修改添加主键】alter table t_8 add primary key (id);alter table t_8 drop primary

2021-08-01 14:15:54 176

原创 华住后端开发

自我介绍说一下你的项目这个项目是怎么做的给一个算法题(求数组两数和为目标值,时间复杂度是多少,空间复杂度是多少)写sql(建表、为表添加一万条数据{自增的方式、随机的方式}、查询第二大的数据)聊一下项目的东西,遇到了什么困难,你是怎么解决的?(2个)公司的项目是用到的spring以及一些和简历贴近的项目。总体感觉很好,面试官很人性化,会引领着你答题40min,算法用的时间最长...

2021-07-27 19:23:56 225

原创 父子类的初始化过程

原始版以下程序执行的结果是:class X{ Y y=new Y(); public X(){ System.out.print("X"); }}class Y{ public Y(){ System.out.print("Y"); }}public class Z extends X{ Y y=new Y(); public Z(){ System.out.print("Z"); }

2021-07-22 09:49:01 372

原创 记录一下之前做项目的经历

编辑还没做好全部书籍-详情:日期无法显示(解决了,)出现类型[com.web.Dao.Book]上找不到属性[ISBN]()一般重新写一下Get and Set就ok现在基本的book管理做好了,可以实现查看detail、修改、删除功能(2021年3月11日10点37分)把搜索功能也顺便做好了,逻辑很多和showAll相似(10点52分)图书管理现在就差一个分页功能,但是之前听分页老师讲得不太清楚,所以推到之后学一点Batis之后再弄密码修改现在是没问题的先把读者管理做好.

2021-07-13 09:29:44 231

原创 【多线程】面试复习

Java多线程面试高频1. Java线程基本状态Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态。1.NEW 初始状态2.RUNNABLE 运行状态3.BLOCKED 阻塞状态4.WAITING 等待状态5.TIME_WAITING 超时等待状态6.TERMINATED 终止状态1.1 线程和进程进程是资源分配的最小单位,线程是CPU调度的最小单位进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序既是一个进程从创

2021-06-24 21:18:52 239

原创 Java集合面试复习

1. List,Set,Map 三者的区别List(链表): 存储的元素是有序的、可重复的。Set(集合): 存储的元素是无序的、不可重复的。Map(图、映射): 使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x”代表 key,"y"代表 value,Key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。每个钥匙最多开一把锁。1.1 ListArraylist: Object[]数组Vector:Object[]数组Linked.

2021-06-24 20:50:57 244 1

原创 【数算-2】递归&哈希表&有序表

1. 各种排序方式:需要记忆常用的排序算法:选炮插,快归西堆统计鸡最重要的排序算法:插堆快归2. 递归行为:任何递归行为都可以变成非递归,改为迭代public int fun(a,b) { // 这是跳出fun函数递归的条件 if (a == b) { return xx; } int mid = xxx; int a = fun (a, mid); int b = fun (mid+1, b); return Math.max(a,b); }2.1 Ma

2021-06-21 18:51:16 289

原创 【数算-3】链表结构(实现栈和队列)

面试题目的最优解,确定最优解有区分度的题目 》 考的万无一失的题目;高频题目在痛苦就听下去,【面试】锻炼一种能力,絮絮叨叨的把想法想出来,完成思路的碰撞。从人性出发,絮絮叨叨弄出来,面试官:“我帮你一下”,絮絮叨叨又不要招人烦。牛逼啊,太牛逼了。链表结构:给定一个 Node 结构:public static class Node { public int value; public Node next; public Node(int data) { .

2021-06-21 18:49:33 205

原创 【数算-1】复杂度、对数器、二分法、排序算法

1. 复杂度复杂度我们一般考虑的是最坏情况我们对常数时间操作以及非常数时间操作的基本数量就是“Big O” 时间复杂度。常数时间操作:例如数组寻址 >>带符号右移,>>> 不带符号右移。非常数时间操作:还有一点:异或操作是无进位相加额外空间复杂度:与空间无关,是自己在操作的时候额外开辟的内存。常数项:一些细枝末节的问题,随机大样本可以去测试出来,直接跑!!!最优解是 时间复杂度、额外空间复杂度、常数项的总和评价,其中,时间复杂度是核心,也是最重要的!!!2.

2021-06-20 20:46:43 239 1

原创 【数算1.1】异或运算练习题目

题目一:不用额外的变量去使得两个数交换。a = a ^ b;b = a ^ b;a = a ^ b;题目二:一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数 public static void main(String[] args) { int[] b = {1, 8, 9, 3, 1, 8, 9, 3, 9, 6, 6}; System.out.println(findOddNum(b)); }

2021-06-20 19:43:07 582 1

【51单片机】单片机书本各个章节课后习题

单片机考试必背,大学考试,就是背背背。单片机考试,1、熟悉IO口 2、各个模块,比如定时器、UART、外部中断等 3、存储器结构,寄存器。 4、特殊功能寄存器的使用。 5、指令。

2020-12-16

空空如也

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

TA关注的人

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