java
wuweihao123456
这个作者很懒,什么都没留下…
展开
-
Filter与Interceptor的区别
spring中拦截器的实现,与过滤器的对比原创 2022-11-14 15:54:27 · 99 阅读 · 0 评论 -
Random与ThreadLocalRandom对比
例如:在实际工作中,需要借助java中已有的工具类生成随机数,像最常用的Random类,里面就有对应整型,长整型和浮点型等生成的方法。但在JDK7之后,在JUC包下有新增了一种ThreadLocalRandom类用来生成随机数。TheadLocalRandom使用了ThreadLocal的原理,让每一个线程都只有本地种子变量,该种子变量只有在使用随机数时才会被初始化。在多线程下计算新种子时是根据自己线程内维护的种子变量进行更新从而避免竞争。原创 2022-10-22 11:18:47 · 340 阅读 · 0 评论 -
Maven项目整合RocketMQ示例
rocketMQ对应maven项目的简单配置,以及一些消息发送订阅的示例原创 2022-07-25 19:23:06 · 958 阅读 · 0 评论 -
springcloud-gateway整合nacos
1、 首先创建一个maven项目2、在pom文件中添加依赖<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>原创 2022-05-22 22:52:48 · 621 阅读 · 0 评论 -
使用idea将一个java类打成jar完整步骤
机缘提示:可以和大家分享最初成为创作者的初心例如:实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流…收获提示:在创作的过程中都有哪些收获例如:获得了多少粉丝的关注获得了多少正向的反馈,如赞、评论、阅读量等认识和哪些志同道合的领域同行…日常提示:当前创作和你的工作、学习是什么样的关系例如:创作是否已经是你生活的一部分了有限的精力下,如何平衡创作和工作学习…憧憬提示:职业规划、创作规划等Tips您发布的文章将会展示至 里程碑专区原创 2022-05-20 17:44:51 · 10194 阅读 · 0 评论 -
【文件每行读取】
文件读取public static List<String> importFile(String fileName) { List<String> list = new ArrayList<>(); try{ File file = new File(fileName); if (file.isFile() && file.exists()) {原创 2022-04-25 16:05:27 · 199 阅读 · 0 评论 -
【Java创建线程的3种方式】
文章目录Java创建线程的3种方式一、继承Thread类二、实现Runnable接口三、实现Callable接口四、结果一、继承Thread类 public static class ThreadExtend extends Thread { public void run() { System.out.println("Thread extends method!"); } }优点在run()方法内部获取当前线程直接使用th原创 2022-04-13 20:45:59 · 396 阅读 · 0 评论 -
求2到n范围内的素数和
求2到n范围内的素数和一、暴力破解法二、埃筛法一、暴力破解法解题思路从2开始遍历每一个数字如果这个数组从2到n有一个数能够整除,那么这个数字就位合数否者,这个数字则为素数。 public static int bf(int num) { int count = 0; for (int i=2; i<= num; i++) { count+= isPrime(i)?1:0; } return coun原创 2022-04-09 11:02:50 · 1578 阅读 · 0 评论 -
Spring源码之推断构造方法
文章目录前言一、什么是构造方法?二、在Spring中如何找到最合适的构造方法1、找出所有的构造方法2、遍历所有的构造方法获取到的构造方法3、找到构造方法之后,需要找出合适的构造方法4、整个推断构造方法的总结5、在获取所有构造方法之前还使用了DCL来保证线程安全问题。总结前言在Spring容器启动的时候会把所有的单例bean都给加载到容器中,但是在这些单例bean是如何被创建出来的呢?在Spring容器中,会使用推断构造方法将单例bean的构造方法找出来,找到最合适的构造方法进行对象的创建,具体找到构造原创 2022-03-09 23:59:54 · 476 阅读 · 1 评论 -
二叉树遍历(前中后)
二叉树定义:public class TreeNode{ int value; TreeNode left; TreeNode right; public TreeNode(){} public TreeNode(int value) { this.value = value; } public TreeNode(int vlaue, TreeNode left, TreeNode right) { this.value = value; this.left = left;原创 2022-02-03 16:19:16 · 1260 阅读 · 0 评论 -
【算法】leetCde之反转链表(第206题)
一、题目给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。二、示例输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next原创 2022-01-31 11:47:59 · 68 阅读 · 0 评论 -
【算法】leetCde之反转链表(第206题)
一、题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。二、示例输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]代码实现链表节点public class ListNode { int val; ListNode next; ListNode(){} ListNode(int val){ this.val = val; } ListNode(int val, ListNode next){原创 2022-01-30 16:32:57 · 563 阅读 · 0 评论 -
【算法】leetCde之删除排序链表中的重复元素(第83题)
一、题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。二、示例输入:head = [1,1,2]输出:[1,2]代码实现链表节点public class ListNode { int val; ListNode next; ListNode(){} ListNode(int val){ this.val = val; } ListN原创 2022-01-24 22:10:05 · 98 阅读 · 0 评论 -
设计模式之享元模式
工厂模式:工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式分类:1、简单工厂(SimpleFactory)2、抽象工厂 (AbstractFactory)简单工厂利用简单工厂创建接口,但是也可以利用简单工厂创建抽象类或者普通类的实例。示例、利用简单工厂创建对象先定义一个接口,接原创 2022-01-12 23:43:29 · 63 阅读 · 0 评论 -
【算法】leetCde之合并两个有序链表(第70题)
一、题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。二、示例输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]代码实现链表节点public class ListNode { int val; ListNode next; ListNode(){} ListNode(int val){ this.val = val; } ListNode原创 2022-01-23 22:32:39 · 302 阅读 · 1 评论 -
【算法】leetCde之爬楼梯(第70题)
一、题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。二、示例输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶代码实现递归 public int climbStairs(int n) { if原创 2022-01-16 15:01:51 · 190 阅读 · 1 评论 -
借助CountDownLatch解决并行执行相同任务后汇总问题
项目场景:借助CountDownLatch解决并行执行相同任务后汇总问题问题描述:由于其他平台有限制,每次远程查询信息量只有20个,如果大于20个,那就需要进行多次查询汇总,这个时候借助线程池,并且使用CountDownLatch来控制请求达到什么样的条件之后才开始汇总数据。业务执行内容:public static Integer getNum() throws InterruptedException { Thread.sleep(100); return new原创 2022-01-11 23:43:04 · 625 阅读 · 3 评论 -
设计模式详解之单例模式
设计模式详解之单例模式前言提示:软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。提示:以下是本篇文章正文内容,下面案例可供参考一、懒汉式相较于饿汉式,第一次获取对象时为空,需要创建对象。由于使用了Double check和synchronized,对性能稍微有写损耗。代码展示/** * 懒汉模式 * 1、volati原创 2022-01-09 19:10:22 · 268 阅读 · 0 评论 -
Spring如何解决循环依赖问题
前置条件,AService属性中依赖了BService,BService属性中依赖了CService,CService属性中依赖了AService。@Servicepublic class AService { @Autowired private BService bService;}@Servicepublic class BService { @Autowired private AService aService;}@Servicepublic原创 2021-09-21 11:09:24 · 141 阅读 · 0 评论 -
2021-09-05
文章目录Spring加载配置类大概过程Spring获取对象的大概过程Spring Aop大概实现过程加载配置类代码Spring加载配置类大概过程读取配置类扫描配置类,判断配置类中是否包含ComponentScan注解根据直接中的路径,以及Spring上下文的类加载器,获取到当前类路径下的文件将该路径下的文件进行循环遍历判断文件中是否包含Component注解如果包含,以beanName为key, BeanDefinition为vlaue,存放到BeanDefinitionMap中。Spr原创 2021-09-05 15:14:38 · 63 阅读 · 0 评论 -
二维数组转稀疏数组并且文件输出输入
二维数组转稀疏数组并且文件输出输入创建并初始化一个二维数组将二维数组中的数据存放到稀疏数组中将稀疏数组存放到文件中将文件中的数据读出并且存放到一个二位数组中将稀疏数组转换回二维数组并且输出创建并初始化一个二维数组 int[][] dataArray = new int[11][11]; dataArray[0][0] = 1; dataArray[1][1] = 2; dataArray[2][2] = 2; dataArray[3][3原创 2021-04-12 21:18:24 · 101 阅读 · 0 评论