Java
Java
宇宙超级无敌程序媛
Talk is cheap, show me the code.
展开
-
AI —— 一看就懂的代码助手Copilot获取教程
介绍人工智能代码助手copilot的申请与使用方式。原创 2023-04-10 10:00:00 · 4442 阅读 · 1 评论 -
Lombok常用方法及原理介绍(AST)
Lombok常用方法及原理介绍(AST)原创 2022-12-21 15:25:31 · 416 阅读 · 0 评论 -
Lombok常用方法及原理介绍
⼀种简化源码提⾼编程效率的⼯具,⽤于⽣成常⽤的代码。原创 2022-08-03 17:58:38 · 803 阅读 · 0 评论 -
Java —— 自定义JSR303校验
JSR303JSR303技术,JSR-303 是JAVA EE 6 中的一项子规范,常用于接口入参合法性的校验。使用方式可参考Java —— 实体属性入参非空校验https://blog.csdn.net/xue_xiaofei/article/details/118303844?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165078097716782246489271%2522%252C%2522scm%2522...原创 2022-04-25 15:04:48 · 748 阅读 · 0 评论 -
Error —— 单元测试中如何Mock application文件中的数据?
问题单元测试的代码中,有从application.properties中读取的变量。但在单元测试中,无法读取配置文件,变量默认为空,导致单元测试不通过。如何在单元测试中mock配置文件中的变量呢?解决待测试的类public class AbcService { // 从配置文件中读取,如单元测试中不mock,会为空 @Value("test.config") private String testConfig; publ...原创 2022-01-13 22:43:31 · 1041 阅读 · 0 评论 -
Error —— com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi
问题单元测试报错如下:com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi解决原因:md5鉴权出错。在类上增加注解。@PowerMockIgnore("javax.crypto.*")...原创 2022-01-13 20:10:04 · 550 阅读 · 0 评论 -
jvmmm
调优xmx 堆内存的初始大小-Xmx 堆内存的最大大小-Xmn 堆内新生代的大小。配置oom时的日志jstack导出堆栈信息,分析死循环jmap导出内存dump信息用第三方分析cms-标记清除并发收集、低停顿。老年代以获取最短停顿回收时间为目标无法清理浮动垃圾会产生大量碎片g1G1从整体来看是基于标记-整理算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的。不会产生内存空间碎片停顿时间可预测的收集模型:用户.原创 2021-09-02 20:47:09 · 135 阅读 · 0 评论 -
面试 —— filter和interceptor的区别
一、 Servlet一个基于Java技术的Web组件,运行在服务器端,它由Servlet容器所管理,用于生成动态的内容。二、Servlet容器Servlet容器,服务器的一部分,用于在发送的请求和响应之上提供网络服务。三、Tomcat是一个免费的开放源代码的Servlet容器。Tomcat服务器接受客户请求并做出响应的过程客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。 Web服务器接收到请求后,传递给Servlet...原创 2021-09-01 23:10:26 · 485 阅读 · 0 评论 -
面试 —— 设计模式
选取了面试中常见的设计模式汇总以及demo示例,本文中介绍的设计模式,均在Spring中使用过。一、工厂模式创建对象时不暴露创建逻辑,而是通过使用一个共同的接口来创建新的对象。(一)简单工厂模式没有遵循开闭原则。能够外界给定的信息, 决定创建哪个具体类的对象。// 冰淇淋接口public interface IceCream { public void taste();}// 三种口味的冰淇淋类public class...原创 2021-08-30 20:30:09 · 292 阅读 · 0 评论 -
计算机网络 —— IO && NIO
一、IO(一)字节流(8bit)InputStream、Outputstream。按字节读写,不会用到缓存。只是读写文件,和文件内容无关的,一般选择字节流。(二)字符流(16 bit)reader、writer按字符读写,用到了缓存。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。 二、NIO...原创 2021-08-24 11:50:17 · 221 阅读 · 0 评论 -
Spring —— AOP与IOC
一、IoC & DI(一)IoCIoC——控制反转,是一种设计思想,我们要用一个对象时,不需要自己去创建,只需要告诉Spring的容器,由容器为我们创建。IoC的好处是,对象与对象之间是松散耦合的,方便测试,利于功能复用,更重要的是把程序的整体结构变得十分灵活(二)DIDI:依赖注入,即IoC容器可以动态的将一个对象注入到另一个对象中.依赖注入的方法有三种:接口注入(侵入性,不推荐)、构造注入、setter注入...原创 2021-08-21 21:38:14 · 174 阅读 · 0 评论 -
Java —— 线程
一、定义(一)进程进程是程序在一个数据集上的一次动态执行的过程,是系统进行资源分配和调度的一个独立单位。(二)线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。(三)区别一个线程只能属于一个进程,而一个进程可以拥有多个线程。 线程是进程工作的最新单位。 一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。 同一个进行下的不...原创 2021-08-21 20:21:40 · 336 阅读 · 0 评论 -
Java —— 集合
Map类集合K/V能不能存储null值的情况,如下表格List , Set, Map都是接口,前两个继承至Collection接口,Map不是 List 进入先后有序保存,元素可重复 ArrayList LinkedList Vector(安全) Set 元素不可重复 HashSet TreeSet(红黑树) Map HashMap HashTable(安全) ...原创 2021-08-18 20:09:34 · 106 阅读 · 2 评论 -
Java —— HashMap
HashMap的底层主要是基于数组和链表来实现的。一、put过程对 Key 求 Hash 值,然后再计算下标 如果没有碰撞,直接放入数组中 如果碰撞了,以链表的方式链接到后面 如果链表长度超过阀值(8),就把链表转成红黑树,链表长度低于6,就把红黑树转回链表 如果节点已经存在就替换旧值 如果数组已满(容量16*加载因子0.75),就需要 resize(扩容2倍后重排)二、get过程当我们调用 get() 方法,HashMap 会使用...原创 2021-08-12 21:11:46 · 186 阅读 · 0 评论 -
分布式 —— 负载均衡算法
算法 简介 优点 缺点 轮询 将请求按顺序轮流地分配到每个节点上 简单,易于水平扩展 没有考虑机器的性能问题,集群性能瓶颈更多的会受性能差的服务器影响。 加权轮询 在轮询的基础上,给配置高、当前负载低的机器配置更高的权重 将不同机器的性能纳入到考量,集群性能最大化 生产环境复杂多变,服务器能力无法精确估算,静态算法导致无法实时动态调整,只能粗糙优化。 随机 将请求随机分配到各个节点。随着客户端调用服务端的次数增多,其实际效果越来越接近于原创 2021-08-11 21:17:10 · 244 阅读 · 0 评论 -
Leetcode —— 142. 环形链表 II(Java)
题目描述 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。示例题解 快慢节点不再赘述,理一下数学逻辑。a...原创 2021-08-04 20:04:39 · 146 阅读 · 0 评论 -
Leetcode —— 78. 子集(Java)
题目描述 给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例题解 回溯。代码 class Solution { List<List<Integer>> res = new ArrayList<>(); pub...原创 2021-08-04 19:45:10 · 172 阅读 · 0 评论 -
面试 —— 异常
一、结构Throwable为基类,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception。Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。二、分类(一)异常与错误1、Exception(异常)是程序本身可以处理的异常。2、Error(错误)是程序无法处理的错误。这...原创 2021-08-03 21:05:49 · 100 阅读 · 0 评论 -
Leetcode —— 75. 颜色分类(Java)
题目描述 给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。示例题解 其实就是排序嘛。目前看到的性能较高的解法如下,称之为“刷漆法”。 [2 0 2 1 1 1 0]-> [2 2 2 2 2 2 2] 先全填上2-> ...原创 2021-08-03 20:10:48 · 167 阅读 · 0 评论 -
Spring —— 项目中连接MongoDB
参考Spring文档https://docs.spring.io/spring-boot/docs/2.5.2/reference/htmlsingle/#features.nosql.mongodb引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-原创 2021-08-03 14:39:59 · 527 阅读 · 0 评论 -
Mysql
数据类型(1)数值类型MYSQL中,FLOAT,DOUBLE,DECIMAL 都可以存储小数,但是FLOAT/DOUBLE 存储的是近似值,对于money等对精度要求高的场合不适用。DECIMAL 类型以字符串形式存储,支持精确的小数运算。(2)日期和时间类型(3)字符串类型引擎:InnoDB,支持事务(ACID),行锁定和外键。只有在你增删改查时匹配的条件字段带有索引时,innodb才会使用行级锁,在你增删改查时匹配的...原创 2021-08-02 21:17:38 · 227 阅读 · 0 评论 -
Leetcode —— 64. 最小路径和(Java)
题目描述 给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例题解 动态规划。初始数据动态规划方程代码class Solution { public int minPathSum(int[][] grid) { int m = grid.le...原创 2021-08-02 20:29:05 · 176 阅读 · 0 评论 -
Leetcode —— 139. 单词拆分(Java)
题目描述 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例题解 动态规划。使用一个Boolean数组,tmp[i]表示字符串s的[0, i]是否可以拆分。代码class Solution { public bo...原创 2021-08-02 20:20:32 · 257 阅读 · 0 评论 -
项目 —— RESTful API接口设计标准及规范
示例新增POST/abc删除DELETE /abc/{id}更改PUT /abc查询GET /abc/{id}安全性和幂等性安全性:不会改变资源状态,只是读取; 幂等性:执行1次和执行N次,对资源状态改变的效果是等价的。 安全性 幂等性 GET √ √ POST × × PUT × √ DELETE × √ ...原创 2021-07-20 14:58:31 · 200 阅读 · 0 评论 -
Leetcode —— 141. 环形链表(Java)
题目描述 给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。示例题解 利用HashSet进行去重。 寻找起点连续序列的起点(如果起点数字为a,那么HashSet中必不包含a - 1),依次计算各个起点的连续序列长度,得出最大值。代码class Solution { public int longestConsecutive(int[]...原创 2021-07-16 11:13:25 · 145 阅读 · 0 评论 -
SpringBoot —— 官方文档阅读记录(一)Getting Started
Spring Boot 去除了大量的 xml 配置文件,简化了复杂的依赖管理。Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式。简单、快速、方便。安装Spring-BootMaven安装 Gradle安装@ Restcontroller 和@Requestmapping 注解@ Restcontroller @ResponseBody + @Controller 将生成的字符串直接呈现回调...原创 2021-07-13 16:59:36 · 228 阅读 · 0 评论 -
Leetcode —— 114. 二叉树展开为链表(Java)
题目描述 给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。示例题解 利用HashSet进行去重。 寻找起点连续序列的起点(如果起点数字为a,那么HashSet中必不包含a - 1),依次计算各个起点的连续序列长度,得出最大值。代码class Solution { public int longestConsecutive(int[]...原创 2021-07-13 14:48:27 · 200 阅读 · 1 评论 -
Leetcode —— 102. 二叉树的层序遍历(Java)
题目描述 给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例题解 利用队列。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(...原创 2021-07-13 11:48:27 · 270 阅读 · 0 评论 -
Leetcode —— 128. 最长连续序列(Java)
题目描述 给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。示例题解 利用HashSet进行去重。 寻找起点连续序列的起点(如果起点数字为a,那么HashSet中必不包含a - 1),依次计算各个起点的连续序列长度,得出最大值。代码class Solution { public int longestConsecutive(int...原创 2021-07-13 00:00:34 · 322 阅读 · 0 评论 -
Leetcode —— 104. 二叉树的最大深度(Java)
题目描述 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例题解 递归。 返回左右子树中较大的深度加一。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * ...原创 2021-07-12 23:51:51 · 118 阅读 · 0 评论 -
Leetcode —— 94. 二叉树的中序遍历(Java)
题目描述 给定一个二叉树的根节点root,返回它的中序遍历。示例题解 注意List传参是传引用。Java中8种基本类型是值传递(即拷贝出一个同样值的新对象传递过去),其他基本都是引用传递。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tr...原创 2021-07-12 23:45:33 · 157 阅读 · 0 评论 -
Leetcode —— 剑指 Offer 28. 对称的二叉树(Java)
题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像。示例题解 递归。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */c...原创 2021-07-12 23:32:40 · 89 阅读 · 0 评论 -
Leetcode —— 剑指 Offer 27. 二叉树的镜像(Java)
题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像。示例题解 递归。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */cla...原创 2021-07-12 23:19:50 · 140 阅读 · 0 评论 -
Leetcode —— 剑指 Offer 26. 树的子结构(Java)
题目描述 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。示例题解 首先遍历A子树的节点。 判断A节点是否与B树相同。代码/** * Definition for a binary tree node. * public class TreeNode { * ...原创 2021-07-12 23:11:57 · 123 阅读 · 0 评论 -
Spring —— 官方文档阅读前期准备
Spring-Boot 官方文档地址https://docs.spring.io/spring-boot/docs/2.5.2/reference/htmlsingle/#features.caching.provider.redis翻译插件 Chrome翻译插件主要使用以下两种:Google翻译用于具体某个单词的翻译,要梯子。彩云小译用于整体页面翻译,无需梯子。同时展示原文与翻译,排版优秀。...原创 2021-07-12 20:57:01 · 96 阅读 · 0 评论 -
Leetcode —— 07. 重建二叉树(Java)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例题解 这道题理解的一般,具体注释详细写在了代码里。代码class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { HashMap hashMap = new HashMap<In...原创 2021-07-09 00:26:05 · 152 阅读 · 0 评论 -
Leetcode —— 79. 单词搜索(Java)
题目描述 给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例题解 做过很多回溯的题目了,但这道题搞了好久,大概是以下几个原因:在回溯与动态规划之间犹豫。 没get到需要先寻找回...原创 2021-07-07 20:44:00 · 327 阅读 · 0 评论 -
Leetcode —— 62. 不同路径(Java)
题目描述 一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例题解 动态规划!机器人只能向右或者向下走一步,那么动态规划公式写为:填充二维数组 返回结果代码class Solution { ...原创 2021-07-07 20:26:42 · 169 阅读 · 0 评论 -
Leetcode —— 49. 字母异位词分组(Java)
题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例题解 偷懒了,主要利用了Java8中的Stream。 Stream详细用法可参见Java —— Stream的使用代码class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<St...原创 2021-07-06 23:11:50 · 293 阅读 · 0 评论 -
Leetcode —— 46. 全排列(Java)
题目描述给定一个不含重复数字的数组nums返回其所有可能的全排列。你可以按任意顺序返回答案。示例题解 回溯法,构建树结构,注意剪枝。代码class Solution { List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> permute(int[] nums) { ...原创 2021-07-06 23:04:45 · 367 阅读 · 0 评论