java
风亦未止
小白一枚
展开
-
AQS是什么?
当一个线程池获取锁等待后,线程会挂起await,线程挂起的操作在synchronize里基于entryList将线程放入waitSet的等待池里,当被唤醒的时候再放入EntryList的双向链表中。如:ReentrantLock拿锁资源时,发现被锁资源正在被占用,此时需要等待,就将没有拿到锁的资源封装成node,addWait(node)放入AQS的双向链表中排队。同理的,AQS也提供了这样类似的功能,当线程挂起,就放入ConditionObject的双向链表中等待,被唤醒时,放入AQS的双向链表中排队。原创 2023-07-02 20:43:45 · 348 阅读 · 0 评论 -
线程池的状态
这个 ctl 维护工作线程个数及线程池的状态,int32 位的数据类型,高3位维护线程状态,低29位维护工作线程对的数量。原创 2023-06-21 00:27:12 · 143 阅读 · 0 评论 -
ThreadLocal内存泄露的问题
ThreadLocal存储数据是使用ThreadLocalMap来存的,ThreadLocalMap基于Entry[]实现,存储数据时,本身ThreadLocal作为key来存取value数据。原创 2023-05-25 19:57:59 · 152 阅读 · 0 评论 -
java基础面试10题
跨平台性指的是java的一次编译,可以在多个平台运行,即一次编译到处运行。原理:java程序编译成.class文件后,运行在平台上的java虚拟机会将程序逻辑解释给本地系统,让本地系统底层去执行,说白了就是java程序不会与系统的底层打交道,需要java虚拟机这个中介传话。只要平台上安装有java虚拟机,都能够在该平台运行java程序。原创 2023-03-05 01:31:04 · 655 阅读 · 0 评论 -
SpringCloud的五大组件功能
用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。同时,服务提供方与Eureka之间通过 “心跳” 机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。作用是提供的一个分布式配置管理工具,它的作用是集中管理微服务系统的配置文件,为微服务系统提供外部化的配置支持。作用是实现服务治理,即服务注册与发现。原创 2023-03-05 01:27:16 · 1420 阅读 · 0 评论 -
Java的基本数据类型有哪些?
Java的基本数据类型有哪些原创 2023-02-28 00:09:18 · 182 阅读 · 0 评论 -
【算法】八数码
在一个 3×3 的网格中,1∼8这 8 个数字和一个x恰好不重不漏地分布在这 3×3 的网格中。在游戏过程中,可以把x与其上、下、左、右四个方向之一的数字交换(如果存在)。例如,示例中图形就可以通过让x先后与右、下、右三个方向的数字交换成功得到正确排列。现在,给你一个初始网格,请你求出得到正确排列至少需要进行多少次交换。原创 2023-01-11 18:15:35 · 124 阅读 · 0 评论 -
【算法】食物链
思路:初始化n个集合,p[x] = x 为祖宗节点,祖宗节点的不同表示不同的集合。定义一个数组d,代表每个节点到祖宗节点的距离,d[x] mod 3 得到的结果0,1,2 表示不同的动物。对每个说法进行分析,如果说 x和y不在同一个集合,将x与y存入同一个集合中,根据符合题意的说法更新距离d[x]与d[y]。原创 2023-01-04 20:56:27 · 312 阅读 · 0 评论 -
【算法】模拟队列
使用数组模拟,hh为队头指针,tt为队尾指针,当队列为空时 tt < hh原创 2022-12-07 14:48:27 · 281 阅读 · 0 评论 -
【算法】二分模板
2.将区间[l, r]被分为[l, mid-1]和[mid, r]时使用。将区间[l, r]被分为[l, mid]和[mid+1, r]时使用。原创 2022-11-27 23:15:54 · 102 阅读 · 0 评论 -
SpringSecurity的简单应用
可根据需求,自定义过滤器,并放到过滤器链中。自定义一个配置SecurityConfig。原创 2022-10-24 23:47:50 · 211 阅读 · 0 评论 -
SpringSecurity入门
基本原理:SpringSecurity本质是一个过滤器链。原创 2022-10-22 21:11:46 · 125 阅读 · 0 评论 -
PriorityQueue说明
优先级队列是无限制的,但具有内部*容量,*用于控制用于存储队列中元素的数组的大小。当元素添加到优先级队列时,其容量会自动增加。未指定增长政策的详细信息。如果多个元素被绑定为最小值,则头部是这些元素之一 - 关系被任意打破。依赖于自然排序的优先级队列也不允许插入不可比较的对象(这样做可能导致。保证以任何特定顺序遍历优先级队列的元素。,具体取决于使用的构造函数。提供的迭代器和方法spliterator()或队列构造时提供的Comparator。优先级队列的元素根据其。访问在队列的头部的元件。......转载 2022-08-26 00:16:42 · 98 阅读 · 0 评论 -
jdk1.8.zip下载及配置
原本电脑上装的是jdk14的环境,但是java的期末作业是设计一个applet程序,这早就过时的东西因为环境版本太高,不能正常运行,被迫换成8的环境。但是网上找的居然都是要付费,不付费的链接偏偏是百度云,下载还要下个百度云…官网的下载还要登录…麻了,只想要压缩包的。被迫百度云,还下了半天。怕以后找起来还麻烦,存到了自己的网盘。有需要的可以下载:下载地址 密码:配置环境:配置方法...原创 2022-07-07 18:53:23 · 3810 阅读 · 5 评论 -
RabbitMQ的高级特性【一】
在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。rabbitmq 整个消息投递的路径为:producer—>rabbitmq broker—>exchange—>queue—>consumer我们将利用这两个 callback 控制消息的可靠性投递.在rabbitTemplate定义ConfirmCallBack回调函数1.2退回模式回退模式: 当消息发送给Exchange后,Exchang原创 2022-07-04 23:36:12 · 279 阅读 · 0 评论 -
【蓝桥】植树
题目描述小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的小树苗。小明和朋友们一共有 n个人,他们经过精心挑选,在一块空地上每个人挑选了一个适合植树的位置,总共 n个。他们准备把自己带的树苗都植下去。然而,他们遇到了一个困难:有的树苗比较大,而有的位置挨太近,导致两棵树植下去后会撞在一起。他们将树看成一个圆,圆心在他们找的位置上。如果两棵树对应的圆相交,这两棵树就不适合同时植下(相切不受影响),称为两棵树冲突。小明和朋友们决定先合计合计,只将其中的一部分树植下去,保证没有互相冲突的树原创 2021-12-19 17:15:15 · 896 阅读 · 2 评论 -
Leetcode206.反转链表
206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]双指针:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNod原创 2021-12-12 18:52:37 · 383 阅读 · 0 评论 -
【蓝桥】跳跃
题目描述小蓝在一个 n行 m列的方格图中玩一个游戏。开始时,小蓝站在方格图的左上角,即第 11 行第 11 列。小蓝可以在方格图上走动,走动时,如果当前在第 r 行第 c列,他不能走到行号比 r 小的行,也不能走到列号比 c 小的列。同时,他一步走的直线距离不超过 33。例如,如果当前小蓝在第 33 行第 55 列,他下一步可以走到第 33 行第 66 列、第 33 行第 77 列、第 33 行第 88 列、第 44 行第 55 列、第 44 行第 66 列、第 44 行第 77 列、第 55 行第原创 2021-12-05 18:19:37 · 2932 阅读 · 0 评论 -
LeetCode506.相对名次
LeetCode506. 相对名次给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”(“Gold Medal”, “Silver Medal”, “Bronze Medal”)。(注:分数越高的选手,排名越靠前。)示例:输入: [5, 4, 3, 2, 1]输出: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]解释: 前三名运动员的成绩为前三高的,因此将原创 2021-10-31 17:39:00 · 144 阅读 · 0 评论 -
LeetCode 496.下个更大的数
LeetCode 496. 下一个更大元素 I给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释: 对于原创 2021-10-24 17:31:41 · 2369 阅读 · 0 评论 -
LeetCode 495. 提莫攻击
LeetCode 495. 提莫攻击题目:在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。第 4 秒初,提莫再次攻击艾希,使得艾原创 2021-10-17 19:00:06 · 75 阅读 · 0 评论 -
Mybatis多表联查
之前写代码一直用for循环读写数据库操作,直到在某个公众号看到一篇每日离职小技巧的文章,才知道问题的严重性。”读写数据库操作,写在for循环中,什么子查询,关联查询,左连接,右连接,通通不用,就是要先查一张表,然后遍历结果,再查另一张表…”。想想这不就是我嘛?这才明白当读取上万数据的时候,服务器内存是非常容易爆掉的,吓的我连夜学习了多表关联查询,,最终写了mapper.xml里的一对多查询如下: <resultMap id="NoteVO" type="com.easy.domain.Not原创 2021-10-08 20:22:33 · 135 阅读 · 0 评论 -
【算法】字符串中的单词数
力扣第434题:字符串中的单词数统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。解题:1.做字符的拆分:s.split(" "),得到一个新的数组", , , , ( 空格空格空格 )a, eaefa" 这个测试用例,数组中会存在 “” 元素,这不是我们想要的,所以需要原创 2021-10-07 16:27:02 · 201 阅读 · 0 评论 -
dubbo基础
什么是DubboApache Dubbo 是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。Dubbo3 基于 Dubbo2 演进而来,在保持原有核心功能特性的同时, Dubbo3 在原创 2021-09-29 14:21:08 · 145 阅读 · 0 评论 -
Spring Cloud基础
什么是Spring Cloud 正如Spring官网所言:Spring Cloud为开发人员提供工具,用于快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调导致锅炉板模式,使用Spring云开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和云铸造等托管平台。Spring Cloud 将现在非常流行的一些技原创 2021-09-26 22:09:53 · 151 阅读 · 0 评论 -
递归版二分查找
递归版二分查找使用递归进行二分查找,可以拆分成多个子问题。全范围二分查找:等价于三个子问题:左边找(递归)中间比右边找(递归) public static int binarySearch(int findNum,int front,int end,int[] nums){ if (end<front){ return -1; } int mid=(front+end)/2; if (find原创 2021-09-24 17:39:00 · 112 阅读 · 0 评论 -
判断是否为2的整数次方
用一条语句判断一个整数是不是2的整数次方。在二进制中,2的整数次方的数只有一个1,用位运算&就可做判断if((num-1)&num==0){ System.out.println("是2的整数次方");}原创 2021-09-17 10:24:58 · 83 阅读 · 0 评论 -
java之JSON解析
java之JSON解析Gson解析需要导入gson-2.8.6.jar包将对象转换为json例如有一个person类:class Person{ private String name; private int age; private String sex; public Person() { } public Person(String name, int age, String sex) { this.name = name原创 2021-02-08 21:13:35 · 86 阅读 · 0 评论 -
集合
什么是集合集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。Java 中的集合类库可以帮助我们在程序设计中实现传统的数据结构。java类集结构图:Collection接口Collec原创 2021-02-07 14:01:05 · 313 阅读 · 4 评论 -
多线程
多线程多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”创建一个多线程第一种创建方法package com.demo1.stage1;/*** 创建多线程方式一:* 1,创建一个继承T原创 2021-02-02 18:03:17 · 176 阅读 · 0 评论