JAVA
ChrisyyGuan
随便记录一下日常遇到的问题,希望能够帮助到大家
展开
-
JVM结构规范(Java SE 8)
JVM(Java Virtual Machine, Java虚拟机)是用于运行Java字节码的虚拟机,包括一个类加载器子系统、运行时数据区、执行引擎和本地接口库。其中,运行时数据区包括程序计数器、Java虚拟机栈、Java堆、方法区和本地方法栈。在一个Java进程开始运行后,虚拟机就开始实例化了,有多个进程就会实例化多个虚拟机实例。③执行引擎中的即时编译器用于将Java字节码编译成具体的机器码,垃圾回收器用于回收在运行过程中不再使用的对象。④本地接口库用于调用操作系统的本地方法库完成具体的指令操作。原创 2024-04-15 13:54:44 · 101 阅读 · 1 评论 -
sychronized和ReentrantLock对比
⑤二者的底层实现不一样:synchronized是同步阻塞,采用的是悲观并发策略;ReentrantLock是同步非阻塞,采用的是乐观并发策略。synchronized是java中的关键字,是由内置语言实现的。synchronized隐式获取和释放锁。③ReentrantLock是API级别的,synchronized是JVM级别的。④ReentrantLock可以定义公平锁,可以通过Condition绑定多个条件。⑧ReentrantLock可以通过分别定义读写锁提高多个线程读操作的效率。原创 2024-03-27 16:26:04 · 301 阅读 · 1 评论 -
sleep方法和wait方法的区别
③在调用对象的wait方法后,线程释放对象锁,进入等待锁池。当针对此对象调用notify方法后,该线程才能进入对象锁池准备获取对象锁,进入运行状态。②线程调用sleep方法使该进程暂停指定的时间,让出CPU资源,但不释放对象锁,监控状态仍然保持,指定时间过后,线程自动恢复运行状态。①sleep方法属于Thread类,wait方法属于Object类。原创 2024-03-15 16:36:08 · 332 阅读 · 1 评论 -
LiKou(力扣)每日一题1267.统计参与通信的服务器
然后分别遍历数组heng和shu,将大于1的行和列累加到ans(初始化为0)上,由于在累加的过程中位于行列交叉点的服务器会被重复计数,因此需要遍历grid,将重复计数的服务器(横坐标x,纵坐标y,满足下列条件heng[x] > 1&&shu[y] > 1&&grid[x][y] == 1)首先定义两个数组heng和shu,长度分别为m和n,用来统计每行和每列的服务器数量,如heng[0]表示第0行的服务器的数量,shu[0]表示第0列的服务器数量。先分别按行、按列计数,然后剔除交叉点的服务器。原创 2023-08-24 14:39:06 · 143 阅读 · 1 评论 -
java读取txt文件内容
按行读取txt文件内容原创 2023-04-12 21:27:24 · 3717 阅读 · 0 评论 -
LeetCode每日一题1041困于环中的机器人
使用switch结构进行分支选择千万记得在每个分支最近加上break语句!使用switch结构进行分支选择千万记得在每个分支最近加上break语句!使用switch结构进行分支选择千万记得在每个分支最近加上break语句!因为不加break的话会执行完想要的分支后还会继续执行后续的分支。原创 2023-04-11 12:52:06 · 62 阅读 · 1 评论