自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于invokeDynamic指令 在JVM中的字节码表达

关于invokeDynamic指令 在JVM中的字节码表达针对于lambda表达式1.编译器产生的调用点方法:javap -p -c 可以查看2. 运行期产生的临时内部类 :-Djdk.internal.lambda.dumpProxyClasses= pathpath = 自定义路径

2022-02-16 09:50:03 223

原创 线程池之手写线程工程和线程池

线程池之手写线程工程和线程池在java中自定义线程工厂 需要实现ThreadFactory 接口实现package kris.threadFactroy;import org.jetbrains.annotations.NotNull;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;/** @author Kris @Date 2021/12/20 17:22 @Descript

2021-12-20 18:45:53 495

原创 常用的排序算法及实现

常见排序算法的时间复杂度及其实现文章目录常见排序算法的时间复杂度及其实现判断排序算法优劣标准时间复杂度空间复杂度排序的稳定性稳定性的意义常用算法的时间复杂度的空间复杂度总结冒泡排序(BubbSort)思想 :代码实现选择排序思想代码实现插入排序思想代码实现希尔排序思想:代码实现单轴快速排序思想代码实现归并排序思想代码实现基数排序思想判断排序算法优劣标准时间复杂度时间复杂度反映了一个排序算法在排序过程中执行的次数的规模,所以可以通过时间复杂度来估算一个排序算法的时间快慢。常见算法的时间复杂度由大到小为

2021-08-22 12:55:02 198

原创 八皇后问题java实现

八皇后问题问题描述时间退回到1848年,国际西洋棋棋手马克斯·贝瑟尔提出了这样的一个问题:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。后面陆续有不同的学者提出自己的见解。大数学家高斯认为一共有76种摆法,1854年在柏林的象棋杂志上不同的作者发表了共计40种不同的见解,后来还有人利用图论的方法得出共有92种摆法.。在数据结构与算法中,八皇后问题是一个经典使用回溯思想解决问题的案例。回溯思路我们发现在一个8*8的

2021-08-15 14:39:33 1179 2

原创 递归回溯解决迷宫问题

递归回溯解决迷宫问题问题描述现在有一个迷宫,要求我们从起点出发,走到出口位置,路线是什么样子的。什么是回溯法回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的思想为回溯法。如何使用回溯法的思想解决迷宫问题通过上面对回溯法的解释,我们可以这么思考我们的迷宫问题。当我们从起点出发时,我们可以按照一个方向走开始寻找出路,当我们发现走不通了,就返回上一个位置(结点),然后换一

2021-08-13 15:44:07 296

原创 逆波兰式的实现以及计算

逆波兰式的实现以及计算文章目录逆波兰式的实现以及计算什么是逆波兰表达式将中缀表达式转换成逆波兰表达式思路分析代码实现计算逆波兰表达式思路分析代码实现代码测试测试代码测试结果什么是逆波兰表达式逆波兰表达式又叫做后缀表达式。逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasiewicz)于1929年首先提出的一种表达式的表示方法 。在计算机中,对于后缀表达式的计算是容易的,对中缀表达式的计算的是非常不易的。将中缀表达式转换成逆波兰表达式在我们人类世界中,对中缀表达式是十分明确,可读性十分高,但

2021-08-12 10:12:14 581

原创 栈应用:中缀表达式实现

栈应用:中缀表达式实现像我们平时数学计算中的计算公式使用的就是中缀表达式的形式,即符号位位于两个数值中间,在计算机中为了实现对这种中缀表达式的运算,一般使用栈这种数据结构。思路分析1.我们需要两个栈 ,一个栈存放数值位,一个栈存放符号,当我们扫描表达式字符串时,我们将扫描的字符分别放入两个栈中。2.在我们扫描的过程中,我们需要将运算符优先级较大的先计算出来,类如 * ,/等,当我们扫描结束后,栈中的运算符只剩下优先级小或者是即使是较大的也不影响后续的计算的。3.最后我们只需要将这些优先级较小的计

2021-08-10 13:44:46 479

原创 使用链表实现栈stack

使用链表来实现数据结构Stackstack 栈是一种后进先出,先进后出的数据结构,在我们的日常使用中非常实用和常见,需要算法的实现借助stack能够很方便的实现,比如二叉树的遍历,图的深度优先算法等等,stack在计算机内部应用的十分广泛,同时在java中非常重要和广泛 比如jvm中的就有stack区等等。为了使用链表来实现stack ,我们需要知道实现stack主要的难点在哪里,pop操作,push操作,在链表中对队尾元素的添加,删除是方便的,以单向链表为例,只需要找出要操作结点的前一个结点即可完

2021-08-09 11:30:01 334

原创 【面试题】Josepfu 约瑟夫问题

Josepfu 约瑟夫问题实现什么是约瑟夫问题:问题分析 :1,表示n个人环坐做在一起使用什么样子的数据结构, 数组?链表? 2.如何找到第K个结点,如何移动找到每隔m个要操作的结点3. 最后将结点移动出去在这次我选择数据结构为环形链表:因为形象直接,增加删除快速分析图如下:思路分析需要一个辅助结点helper指向first结点前一个元素代码实现孩子结点/** * @Author: 云萧YYY * @DateTime: 2021/08/04 * @Descripti

2021-08-05 16:29:51 101

原创 合并两个有序单链表使之依然有序

合并两个有序单链表使之依然有序代码实现 public static SingleLinkList mergeLinkedList(HeroNode head1, HeroNode head2) { if (head1 == null && head2 == null) { throw new RuntimeException("linkedList can't null "); } // 指向前一个元素 HeroNode temp1 = he

2021-08-04 10:36:31 226 1

原创 LinkedList单链表实现及一些面试题

LinkedList单链表实现及一些面试题单链表简介 :单链表是一种线性结构,对内存需求较低,实现了逻辑上的连续,相比较于数组型,单链表对插入,删除的操作的效率远远高于数组 ,因此也是常用的一种数据结构。面试题1.从末尾到头打印单链表 百度面试题 反转打印单链表2.腾讯面试题 反转链表3.新浪面试题 获取链表中倒数第K个结点代码实现/** @Author: 云萧YYY @DateTime: 2021/08/02 @Description: 模拟单链表结点, 一 */public class

2021-08-03 22:03:59 351 1

原创 环形队列CircularQueue

环形队列环形队列是一种可以复用的队列,可以用数组和链表实现,遵循先进先出的原则。实现思路在逻辑上将首尾连接到一起,通过取模运算话不多说,直接上代码/** @Author: 云萧YYY @DateTime: 2021/08/01 @Description: 循环队列 */public class CircularQueue { /** 最大存放数量 */ private int maxSize; /** 入队指针 队尾 指向最后一个元素的下一个元素 */ private int

2021-08-02 13:33:16 147

原创 如何将数组转化稀疏数组

稀疏数组什么是稀疏数组呢?一个 二维数组中,如果存在大量的0或者无效数据,我们可以将这些无效value忽略,只将有效的数据保留下来,从而压缩数组,提高效率,这就是稀疏数组。稀疏数组处理方法:首先将原数组的行,列,有效数据的个数纪录下来将原数组中有效的数据的,行,列,value 纪录到一个数组中,从而缩小数组的规模原数组转化稀疏数组代码思路获取原数组首先遍历原数组获取有效数据的个数count创建新数组,将原数组信息存入新数组将原数组中每个有效数据的坐标和value存入新数组,此时新

2021-08-02 09:08:23 175

原创 Mybatis中使用动态排序语句不起作用

今天写程序的时候发现了一个很有趣的现象,当我使用mybaits 的动态排序语句使用#{} 不起作用,当我查看日志中的sql语句 直接运行在navicat 中却没有问题,我沉迷了 ,。。 我在想为啥?我当时就在怀疑是不是 在预编译的时候 #{} 被解释成 " " String 的形式,于是我开始翻阅网上的一些 资料和博客,果不其然,#{} 在预编译的时候 已经被解释成String 字符串的形式 ,故不会起作用,所以当我们使用order by 动态排序的时候 ,我们可以使用${} 占位符 来动态拼接你

2021-06-21 09:07:06 319

原创 Hystrix中commandProperties配置

转载commandProperties配置https://www.cnblogs.com/zhangwanhua/p/10037401.html

2021-05-30 14:33:58 385

原创 springboot在使用mybatis出现mapper文件在java路径下映射不上的问题

有时候我们在写一个springboot项目时,mapper.xml文件不需要放入/resource/文件目录下,需要放入java目录下时,例如:此时我将接口与mapper.xml文件放入同一目录下,启动项目 会出现下面的报错,提示你绑定错误,当我们检查接口发现,mapper中的方法与接口中的方法对应无误和配置文件路径无误时,我们此时检查target文件,是否有这个UserDao.xml文件我们能发现在编译后的文件中,没有这个文件,故我们也能理解,为啥接口中的方法与mapper对应无误,却绑定不上

2021-05-05 16:09:50 1647

原创 SSM框架整合配置+依赖

SSM框架整合配置首先导入所需依赖,解决依赖冲突<properties> <spring.version>5.0.2.RELEASE</spring.version> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.12</log4j.version> <shiro.version>1.2.3</shiro.

2021-03-12 15:56:11 410 1

原创 线程安全之重排序

重排序在多核处理器的环境中,编写的顺序结构,这种操作的执行顺序可能是没有保障的:编译器可能会改变两个操作的先后顺序处理器也可能不会按照目标代码的顺序执行这种一个处理器上执行多个操作的,在其他处理器上来看他的顺序与目标代码的顺序可能不一样,这种现象就是重排序。重排序现象是对内存访问有序操作的一种优化,可以在不影响单线程程序正确的情况下提升程序的性能,但是,可能会对多线程程序的正确性产生影响,即可能导致线程安全问题。重排序分为指令重排序和存储子系统重排序与内存操作顺序有关的概念源代码顺序,

2021-01-28 22:08:12 1103

原创 线程安全问题的三个方面

线程安全问题的三个方面原子性原子就是不可分割,在java中,原子操作的不可分割有以下两个含义:访问(读,写)某个共享变量的操作从其他的线程来看,要么执行完成,要么没有执行,不存在执行了一部分的情况,即其他的线程看不到当前操作的执行结果。访问同一组共享变量的原子操作是不能够交错的。实现原子性的方法在java中实现原子性的方式有两种:一种是使用锁,另一种是利用处理器的CAS(Compare And Swap)指令。锁具有排他性,保证共享变量在某一时刻只能被一个线程访问。CAS指令直接在硬件的

2021-01-28 21:15:51 633

原创 java线程状态转换图

java中线程状态转换图

2021-01-26 15:05:29 107

原创 HashMap遍历方式

HashMap遍历方式HashMap是一个键值对的集合,我们不能通过简单的循环来遍历HashMap,所以我们一般通过以下两种方式来遍历HashMap,一种是通过KeySet集合来遍历,另一种是通过entry键值对对象来遍历。KeySet遍历HashMap通过keySet()方法 获取HashMap的keySet 集合遍历keySet集合,可以使用iterator迭代器 或者增强for 循环遍历根据keySet集合中的key 获取HashMap中的value HashMap<String

2021-01-19 19:56:45 231 4

原创 Collection集合框架的一些使用和方法

Collection 集合框架集合概述之前我们都使用和了解过ArrayList集合,这个ArrayList也是属于集合中的一种,那么集合到底是什么呢?集合 是java提供的一种容器,用来存放我们想要存放的数据,包括基本的数据类型,对象等。什么是集合框架JAVASE为我们提供了满足各种需求的容器API,当然,collection集合就是javaSE为我们提供的一组API。collection是单列集合类的接口,它有两个子接口(extends Collection),分别是List接口 和Set接口

2021-01-17 21:33:39 99

原创 Java中Object类中的两个常用方法

Java中Object类中的常用方法Java中Object类中的toString()和equals()方法众所周知,object类在java中是所用类的超类,一个类都会之间或间接的继承该类,所以我们要了解object类中的两个常用方法对以后的学习理解也是十分有帮助的toString()方法作用: 打印对象的信息原始object中的toString()方法:打印对象的包名类名@地址值我们通过源码也可以直接看出:public String toString() { return g

2021-01-12 14:27:23 139

空空如也

空空如也

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

TA关注的人

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