- 博客(27)
- 问答 (5)
- 收藏
- 关注
原创 JVM详解
难易程度:☆☆☆出现频率:☆☆☆☆程序计数器:线程私有的,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。javap -verbose xx.class 打印堆栈大小,局部变量的数量和方法的参数。 java虚拟机对于多线程是通过线程轮流切换并且分配线程执行时间。在任何的一个时间点上,一个处理器只会处理执行一个线程,如果当前被执行的这个线程它所分配的执行时间用完了【挂起】。处理器会切换到另外的一个线程上来进行执行。
2024-03-04 23:28:50 996 3
原创 JUC相关面试题
CAS的全称是: Compare And Swap(比较再交换);它体现的一种乐观锁的思想,在无锁状态下保证线程操作数据的原子性。CAS使用到的地方很多:AQS框架、AtomicXXX类在操作共享变量的时候使用的自旋锁,效率上更高一些CAS的底层是调用的Unsafe类中的方法,都是操作系统提供的,其他语言实现AQS的话,其实就一个jdk提供的类AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架。
2023-09-14 18:04:41 1110 15
原创 细谈left join和join
相信大家都知道在MySQL中的join、left join和right join,在业务中,需要两表联查总会用到联合查询语句。但大家却有可能并不太了解他们底层是如何进行处理的,也就无法在业务量大的情况下,去优化这些sql语句。本节我就为大家通过执行流程层面进行一些讲解,相信大家看完本篇文章对以后的优化处理也就不会毫无头绪了。
2023-09-09 16:32:31 4996 20
原创 JUC详解
CAS的全称是: Compare And Swap(比较再交换),它体现的一种乐观锁的思想,在无锁情况下保证线程操作共享数据的原子性。在JUC( java.util.concurrent )包下实现的很多类都用到了CAS操作AbstractQueuedSynchronizer(AQS框架)AtomicXXX类例子:我们还是基于刚才学习过的JMM内存模型进行说明线程1与线程2都从主内存中获取变量int a = 100,同时放到各个线程的工作内存中。
2023-08-30 13:48:11 2500 24
原创 缓存穿透、缓存击穿和缓存雪崩
一聊到redis,必不可少的就是缓存三兄弟的问题,即缓存穿透、缓存击穿和缓存雪崩,这三个问题在业务场景中相对来说比较常见的,也是比较基础的三种问题。那么这三种问题是如何引起的,并且应该如何解决,就是本章探讨的话题。缓存穿透、缓存击穿和缓存雪崩是三种与缓存相关的常见问题,它们的概念和影响有所不同。缓存穿透指的是对于一个不存在于缓存和数据库中的数据的请求,每次请求都会穿过缓存层直接访问数据库。恶意的攻击者可以通过构造不存在的数据请求,导致大量请求直接访问数据库,增加数据库负载压力。
2023-08-24 18:13:11 2419 32
原创 Java集合详解
这次课程主要涉及到的是List和Map相关的面试题,比较高频就是ArrayListLinkedListHashMapArrayList底层实现是数组LinkedList底层实现是双向链表HashMap的底层实现使用了众多数据结构,包含了数组、链表、散列表、红黑树等在讲解这些集合之后,我们会讲解数据结构,知道了数据结构的特点之后,熟悉集合就更加简单了。在讲解数据结构之前,我们也会简单普及一下算法复杂度分析,让大家能够评判代码的好坏,也能更加深入去理解数据结构和集合。
2023-08-15 16:37:23 1212 16
原创 图解 Paxos 算法
Paxos 算法由 Leslie Lamport 在 1989 年提出的一个分布式共识算法,Paxos 算法较难理解,本文尝试以图形化方案解释 Paxos 算法。本文在很大篇幅参考了韩健极客时间的课程《分布式协议与算法》,有兴趣了解韩老师其他课程的同学可以购买来学习下。Basic Paxos 算法:多节点如何就某个值达成共识Multi Paxos 思想:执行多个 Basic Paxos ,就一系列的值达成共识每个人都有自己独特的才华和潜能,在这个广袤的世界上,你的存在是有意义的。
2023-08-11 18:48:10 672 6
原创 图解WebSocket
相信大家都对HTTP协议比较熟悉,因为它是我们接触最多的一个协议。但Websocket跟它又有什么关系,有什么作用呢?这篇文章我们通过HTTP来引出Webscoket这个协议。
2023-08-09 17:21:12 1708 7
原创 关于redis的读写一致问题
在项目使用redis过程中,当数据更新时,我们要保证缓存和数据库的一致性,否则会导致很多脏数据出现。此时我们就要思考如何去进行数据更新。
2023-08-08 16:19:26 1150 7
原创 Java的四种遍历方式
package API;import java.util.Iterator;import java.util.List;import java.util.ArrayList;public class 四种遍历方法 { public static void main(String[] args){ List<String> list=new ArrayList<>(); list.add("Java"); list.
2022-04-16 18:08:34 6508 2
原创 Java新手入门——天梯赛L1-030 一帮一 (15 分)
该题有两个思路:1:定义三个数组,一一对应,一个放入名字,一个放入性别,最后一个进行标记,然后进行判断;2:定义一个类,相当于c语言里面的结构体的方式,进行判断;因为刚开始博主接触的是c所以这里习惯用结构体进行判断,相对麻烦一些,但可以熟练面向对象的操作,如果想试一下第一种方式的,可以在下面试一下。import java.util.Scanner;import java.util.ArrayList;public class Main{ public static void..
2022-04-09 17:15:18 766 1
原创 Java新手入门——天梯赛L1-025 正整数A+B (15 分)
import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner sc=new Scanner(System.in); String s=sc.nextLine(); int index=s.indexOf(" ");//调用String类里面的API,返回第一个该符号的下标,找出第...
2022-04-09 14:14:15 463 1
原创 Java新手入门——天梯赛L1-023 输出GPLT (20 分)
这题可以选择用String直接输入,然后全部转化为大写,应为题意上说不区分大小写,所以最好转化一下,然后用桶排序把每个字符出现的次数记录一下,以便下面输出。import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); String s1=sc.next(); Str...
2022-04-06 22:43:26 577
原创 制作一个简易的ATM取款机
ATM取款机主函数package ATM;import java.util.ArrayList;import java.util.Random;import java.util.Scanner;public class ATMSystem { public static void main(String[] args) { ArrayList<Account> accounts = new ArrayList<>(); Sc.
2022-04-05 20:57:36 473
原创 用Java做一个简易购物车
package gouwuche;import gouwuche.Goods;import java.util.Scanner;public class ShopCar { public static void main(String[] args){ Goods[] shopCar=new Goods[100]; while(true){ System.out.println("请您选择如下命令进行操作:"); Syst.
2022-04-04 16:47:05 1572
原创 Java新手入门——天梯赛L1-016 查验身份证 (15 分)
import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int sum1=0; String[] ss=new String[a]; int[] b={7,9,10,5,8,4,2,1,6...
2022-04-04 12:53:45 406
原创 Java新手入门——天梯赛L1-011 A-B
import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); String s=sc.nextLine(); String s0=sc.next(); String s1=""; for(int i=0;i<s.length();i+...
2022-04-02 16:48:15 601
原创 Java新手入门——天梯赛L1-006 连续因子 (20 分)
该题要审清题目,是连续因子,所以说不必要把每个数据的所有因子都求出来,只要找出连续的,不连续便换下一组数据。import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int maxx...
2022-04-02 11:15:07 678
空空如也
为什么这一题会报错啊?
2022-04-20
这一题为什么会现实编译错误?
2022-04-08
为什么会显示答案错误
2022-04-06
java判断素数如何才能不时
2022-04-06
java天梯赛有一个样例过不去
2022-04-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人