自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 本地环境下载Execl没问题,测试环境报空指针,A.class.getDeclaredFields()多了个元素,jacoco影响的

/ 宽度设置,单位为 1/256 字符宽度。// 避免测试覆盖率影响jacco自动多加了个$jacocoData属性。

2024-03-07 14:56:17 432

原创 如何确定系统的最佳线程数?

线程池是为了提高多线程应用程序的性能和可管理性而设计的。具体来说,使用线程池有以下几个好处:降低线程创建和销毁的开销:创建和销毁线程是比较昂贵的操作,线程池可以在应用程序启动时预先创建一定数量的线程,并将它们放入池中以供复用,从而避免频繁地创建和销毁线程,减少了开销。提高系统处理能力:线程池可以根据系统的处理能力和负载情况动态地调整线程数量,从而最大限度地利用系统资源,提高并发执行能力。控制并发线程数:线程池可以限制同时执行的线程数量,避免因为创建大量线程而导致系统资源耗尽和性能下降的问题。

2024-03-04 23:35:08 378 1

原创 解决使用Druid+Mybatis导致Error updating database. Cause: java.sql.SQLException: sql injection violation

批量更新拦截

2023-09-22 11:45:14 793

原创 RandomAccess

接口作用实现该接口,就说明支持随机访问方式遍历例子public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); if (list instanceof RandomAccess) { //随机访问 for (int i = 0; i < list.size(); i++) {

2021-09-27 19:52:58 178

原创 Shiro学习之旅——SimpleAuthenticationInfo

示例代码@Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; String username = t

2021-09-08 09:52:40 1036

原创 Spring都有哪些事务传播特性

来源于《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》内容我们再来看看这个传播机制的特性。Spring 事务默认是开启的,外层方法开启事务(Propagation.Required),事务会被传递到子方法中,哪怕子方法没有明确开启事务。如果子方法不想参与当前事务,则可以使用 Propagation.NOT_SUPPORTED,这个方法就会不使用事务,而且作用范围只在本方法内。对事务传播性的描述可理解如下。(1)REQUIRED:支持当前事务,如果当前

2021-08-27 11:05:32 242

原创 @Transactional注解的失效场景

总结:参考链接:一口气说出 6种,@Transactional注解的失效场景不是public方法progagation属性设置错误rollbackFor属性设置错误同一个类中没有事务的方法A调用有事务的方法B方法A、B都加了@transactional,但是A调B时A中用catch捕获B产生的异常数据库不支持事务如果事务方法内,开启了新线程去执行其他事务方法也是不受当前事务方法控制的。因为不同线程拥有的threadlocal 不一样...

2021-08-12 09:45:35 108

原创 redis基础知识

String指令:set key valueget key批量mget key1 key 2返回一个列表expire key 时间 用于添加过期时间setex key time value 相当于set + expiresetnxincr用于整数自增,区间为signed longList(列表)redis的列表用来做异步队列,将需要延后处理的任务结构体序列化成字符串,塞进redis列表,另一个线程从这个列表中轮询数据进行处理队列:rpush --lpop栈:rp

2021-08-11 16:59:04 121

原创 堆排序-java-重要

思路构建最大堆1.1 从最后的父节点开始调整堆1.2 当i == 0时结束调整堆的思路是:2.1 比较当前的父节点 与 左右节点 谁大2.2 父节点大说明没得调整了2.3 左节点大就把父节点和左节点交换值,并递归调整,下一个父节点就从左节点那里开始2.4 右节点同理排序,从最后开始,与0交换,因为0是最大的位置,把最大放到最后,最后的位置就不用动了,heapSize - 1,然后调整堆,就得到排序好的数组。代码import java.util.Arrays;public cl

2021-08-01 11:04:26 95

原创 148. 排序链表(重要)

题目给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路归并/** * Definition for singly-linked list. * public class ListNod

2021-07-30 16:25:13 60

原创 自定义Edge扩展插件|文章备忘录

背景有时因为看到好看的文章或干货但又没时间看完,所以想记录下文章地址,然后有空再看。就写了这个浏览器插件。实验截图文件目录结构gitee仓库地址源码地址浏览器安装插件步骤在浏览器设置中打开扩展开启开发人员模式选择加载压缩的扩展选择已经解压的插件文件夹使用源码my.html<!DOCTYPE html><html><head> <meta charset="utf-8"> <link rel

2021-07-26 10:34:54 1757 1

原创 468. 验证IP地址

代码借鉴:原主class Solution { public String validIPAddress(String IP) { //判断是否有'.' if (IP.indexOf('.') != -1){ //有就判断是否是IPV4 if (isIpv4(IP)){ return "IPv4"; } } //判断是否有':'

2021-07-25 10:55:16 72

原创 54. 螺旋矩阵

题目在一些笔试中遇到过类似的,当时不会。。。力扣原题给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。思路模仿这个大佬的思路从左到右,top固定,i = left 移动,遍历完top++从右上到右下,right固定,i = top 移动,遍历完right–从右到左,bottom固定,i = right 移动, 遍历完bottom–从左下到左上,left固定,i = bottom移动,遍历完left++注意:每个for循环都要加index

2021-07-24 11:19:09 69

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

3. 无重复字符的最长子串力扣链接思路滑动窗口,fast和slow都是向后移动,slow记录左,fast向后移动,如果fast遇到重复的,修改slow的值,每次都要改变max的值,hashMap用于判断是否有重复的值class Solution { public int lengthOfLongestSubstring(String s) { int len =s.length(); HashMap<Character, Integer> ha

2021-07-23 11:44:37 51

原创 剑指 Offer 33. 二叉搜索树的后序遍历序列

剑指 Offer 33. 二叉搜索树的后序遍历序列力扣链接思路先找到比 root 小的数列,即这个数列下一位就大于root,假设为midIndexmidIndex之前都是比root 小的,后面从midIndex遍历到right用midIndex后面的数与root比较,如果有还有小于root的说明不是后续遍历如果midIndex后面的数都大于root,则从midIndex左右开始递归判断class Solution { private int[] postorder; pu

2021-07-23 11:06:00 51

原创 面试题 02.08. 环路检测

文章目录面试题 02.08. 环路检测方法一(快慢指针)方法二(哈希表)面试题 02.08. 环路检测力扣链接*方法一(快慢指针)时间复杂度:O(N)空间复杂度:O(1)/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next =

2021-07-23 10:38:43 74

原创 SpringBoot中使用MyBatis

文章目录application.propertiespom文件PersonTestDaoTestServiceTestControllerTestDao.xmlSimpleMybatisSpringbootApplication背景:在用到Mybatis时经常忘记要如何使用,所以记录下来以备不时之需。注意:@MapperScan(“com.example.simplemybatisspringboot.dao”)要加在启动类中,这样才能扫描dao包,当然有其他方法代替application.p

2021-07-22 14:13:32 105

原创 乘积最大子数组、连续子数组的最大和

乘积最大子数组class Solution { public int maxProduct(int[] nums) { int len = nums.length; int[] maxProduct = new int[len]; int[] minProduct = new int[len]; //记录结果最大值 int result = nums[0]; //最大值数组 maxPro

2021-07-17 11:06:16 95

原创 Spring中的Bean是线程安全的吗?

Spring的Bean的作用域Singleton:默认的作用域,生成单例对象,生命周期跟SpringIOC容器一样,第一次注入时创建Prototype:原型,每次生成新的对象Request:每次Http请求创建一个单例对象,那次请求就一直使用这个对象Session:同一个会话使用同一个对象,不同会话使用不同对象Global-session:所有会话使用同一个实例说明Singleton作用域下所有线程使用同一个Bean,因此存在资源竞争问题。如果单例Bean是无状态的,就是不存储数据,例如

2021-07-14 10:59:56 144

原创 CopyOnWriteArrayList简单了解

常用方法/** The lock protecting all mutators */final transient ReentrantLock lock = new ReentrantLock(); /** The array, accessed only via getArray/setArray. */private transient volatile Object[] array; /** * Gets the array. Non-private so as

2021-07-13 11:26:00 85

原创 Java线程池(ThreadPoolExector)

创建线程池的方式1. Executors.newCachedThreadPool()public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,

2021-07-12 21:47:51 159

原创 链表排序相关

147. 对链表进行插入排序思路:假设当前节点之前都是排好序的如果当前节点的下一个节点的值比当前节点大,则当前节点向后移动如果当前节点大于后一个节点,则把后一个节点移到当前节点前面然后在当前节点之前找位置插入pre从头开始找,如果 pre.next.val < current.next.val ,则pre = pre.next,就是找到比current.next 这个节点大的节点位置,插入到前面/** * Definition for singly-linked list. *

2021-07-12 16:35:21 52

原创 快速排序、归并排序、希尔排序(Java)

快排class QuikSort { public void sort(int[] array){ int len = array.length; if (len < 1) return; quikSort(array,0,len - 1); } private void quikSort(int[] array, int left, int right) { if (left >

2021-07-12 10:06:29 94

原创 线程二三事(Java)

文章目录线程和进程的区别线程通信方式进程通信方式Java线程 6 种状态sleep()、wait()、join()、yield()线程和进程的区别进程是资源分配的最小单位,线程是CPU调度的最小单位进程申请了资源,线程使用资源处理任务。进程是程序集,线程是程序集中的一部分。进程相当于火车,线程是车厢。线程通信方式wait()和notify()、notifyAll()join()volatileCountDownLatchCyclicBarrierThread.In

2021-07-08 20:55:55 58

原创 MySQL保证ACID原理

文章目录A(Atomicity)C(Consistency)I(Isolation)D(Durability)参考A(Atomicity)原子性:一个事务不可再分割,事务中的所有操作要全部成功才算成功,只要有一个操作失败则全部失败实现:通过undo log日志记录了事务之前的状态,事务执行失败或者调用了rollback则可以回滚到原来的状态C(Consistency)一致性:指事务执行前后数据库中的数据都是合法状态,例如金钱非负实现:通过原子性、隔离性、持久性保证一致性,原子性是目的,其他三个是

2021-07-08 15:45:55 300

原创 92. 反转链表 II

92. 反转链表 II力扣题目给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。代码思路:p固定不变,不断把q后面的节点插入到p后面,用头插法/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;

2021-07-07 11:55:23 192

原创 11. 盛最多水的容器

11. 盛最多水的容器力扣链接描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。代码class Solution { public int maxArea(int[] height) { int len = height.length;

2021-07-06 19:20:31 47

原创 322. 零钱兑换

322. 零钱兑换力扣题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。方法1:递归class Solution{ int res = Integer.MAX_VALUE; public int coinChange(int[] coins, int amount){ if (coins.length == 0){

2021-07-06 19:05:45 50

转载 1115.交替打印FooBar

力扣评论区答案看了这个评论感觉很有用/BLOCKING Queuepublic class FooBar { private int n; private BlockingQueue<Integer> bar = new LinkedBlockingQueue<>(1); private BlockingQueue<Integer> foo = new LinkedBlockingQueue<>(1); public F

2021-07-05 16:18:48 76

原创 类加载过程、JVM类加载器(ClassLoader)和双亲委派机制

文章目录类加载过程JVM类加载器(ClassLoader)和双亲委派机制类加载过程类的加载过程一般分为三个比较大的阶段,分别是加载阶段、连接阶段、初始化阶段。加载阶段:主要负责查找并加载类的二进制数据文件,其实就是class文件在某个类完成加载阶段之后,虚拟机会将这些二进制字节流按照虚拟机所需的格式存储在方法区中,然后形成特定的数据结构,随之又在堆内存中实例化一个java.lang.Class类对象,在类加载的整个生命周期中,加载过程还没有结束,连接阶段是可以交叉工作的,比如连接阶段验证字

2021-07-05 11:07:27 94

原创 二叉树的层序遍历

文章目录内容思路内容102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal思路首先根元素入队当队列不为空的时候求当前队列的长度在for循环中遍历队列中内容class Solution { public List<List<Integ

2021-07-04 16:55:18 40

原创 Java反射和多态的一些理解

前言最近看了几篇文章所以就总结一下自己的理解,个人理解有限,会有一些问题,仅记录一下。。。。文章1:反射和多态的实现原理详解以及区别文章2:java方法的虚分派和方法表文章3:编译时多态、运行时多态Java虚分派和方法表虚分派先看个例子:class A{ String msg = "A 的属性"; public void test(){ System.out.println("调用了 A 的方法"); }}class B extends A{

2021-07-04 15:59:42 416

原创 汇编求剩余得分的平均分

汇编求剩余得分的平均分硬件环境Intel®Core™m3-7Y30、4.00GB软件环境Win10、ML615、DOSBOX0.74要求某竞赛中对选手进行打分,10个评委按10分制打分,去掉一个最高分和一个最低分,求剩余得分的平均分(保留小数点后两位)。程序流程图源代码思路:用冒泡排序去掉最大最小值(老师说不要这样求最值)用移位相加实现乘法,例如,100 = 26(64) + 25(32) + 22(4) int sum = 0; //表示扩大100 后的数

2021-07-04 09:41:25 276

原创 汇编语言实现冒泡排序

用汇编实现冒泡排序硬件环境Intel®Core™m3-7Y30、4.00GB软件环境Win10、ML615、DOSBOX0.74内容给定数组,用冒泡排序的方式给数组排序。流程图汇编源代码include io.inc.MODEL small.STACK 100h.datan = 10 ;数组个数array dw 10 dup(0) msg db "Please Enter 10 numbers:",0.code.startup mov cx,n mov

2021-07-04 08:45:09 4241

原创 String 的intern()了解一下

String 的intern()了解一下public native String intern();说明:intern() 方法返回字符串对象的规范化表示形式。例子: public static void main(String[] args) { String s1 = "abc"; String intern = s1.intern(); System.out.println(intern); }返回值:abc...

2021-07-03 09:49:43 77

原创 8位移位相加乘法器-Verilog

Verilog前言一、移位相加乘法器如何实现?二、使用步骤前言用verilog编写8位乘法器,采用移位相加的办法,最后输出16位结果一、移位相加乘法器如何实现?先把被乘数(x)扩展成16位,再左移8位,每一次左移之前都要判断乘数(y)相应位是否为1,为1则把那一步的被乘数加到结果里(result),为0则不做处理。二、使用步骤代码如下:module multi_cx(rst,clk,x,y,result);input rst;input clk;input[7:0] x;inpu

2021-01-19 23:07:49 7305

空空如也

空空如也

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

TA关注的人

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