草庐IT

Java代码是如何被CPU狂飙起来的?

无论是刚刚入门Java的新手还是已经工作了的老司机,恐怕都不容易把Java代码如何一步步被CPU执行起来这个问题完全讲清楚。但是对于一个Java程序员来说写了那么久的代码,我们总要搞清楚自己写的Java代码到底是怎么运行起来的。另外在求职面试的时候这个问题也常常会聊到,面试官主要想通过它考察求职同学对于Java以及计算机基础技术体系的理解程度,看似简单的问题实际上囊括了JVM运行原理、操作系统以及CPU运行原理等多方面的技术知识点。我们一起来看看Java代码到底是怎么被运行起来的。Java如何实现跨平台在介绍Java如何一步步被执行起来之前,我们需要先弄明白为什么Java可以实现跨平台运行,因

Java代码是如何被CPU狂飙起来的?

无论是刚刚入门Java的新手还是已经工作了的老司机,恐怕都不容易把Java代码如何一步步被CPU执行起来这个问题完全讲清楚。但是对于一个Java程序员来说写了那么久的代码,我们总要搞清楚自己写的Java代码到底是怎么运行起来的。另外在求职面试的时候这个问题也常常会聊到,面试官主要想通过它考察求职同学对于Java以及计算机基础技术体系的理解程度,看似简单的问题实际上囊括了JVM运行原理、操作系统以及CPU运行原理等多方面的技术知识点。我们一起来看看Java代码到底是怎么被运行起来的。Java如何实现跨平台在介绍Java如何一步步被执行起来之前,我们需要先弄明白为什么Java可以实现跨平台运行,因

【jvm系列-05】精通运行时数据区共享区域---方法区

JVM系列整体栏目内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈、程序计数器、本地方法栈https://blog.csdn.net/zhenghuishengq/article/details/129684076【四】运行时数据区共享区域之堆、逃逸分析https:/

【jvm系列-05】精通运行时数据区共享区域---方法区

JVM系列整体栏目内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈、程序计数器、本地方法栈https://blog.csdn.net/zhenghuishengq/article/details/129684076【四】运行时数据区共享区域之堆、逃逸分析https:/

java多线程之线程安全(重点,难点)

线程安全1.线程不安全的原因:1.1抢占式执行1.2多个线程修改同一个变量1.3修改操作不是原子的锁(synchronized)1.一个锁对应一个锁对象.2.多个锁对应一个锁对象.2.多个锁对应多个锁对象.4.找出代码错误5.锁的另一种用法1.4内存可见性解决内存可见性引发的线程安全问题(volatile)1.5指令重排序由于操作系统中,线程的调度是抢占式执行的,或者说是随机的,这就造成线程调度执行时,线程的执行顺序是不确定的,虽然有一些代码在这种执行顺序不同的情况下也不会运行出错,但是还有一部分代码会因为执行顺序发生改变而受到影响,这就会造成程序出现Bug,对于多线程并发时会使程序出现bug

java多线程之线程安全(重点,难点)

线程安全1.线程不安全的原因:1.1抢占式执行1.2多个线程修改同一个变量1.3修改操作不是原子的锁(synchronized)1.一个锁对应一个锁对象.2.多个锁对应一个锁对象.2.多个锁对应多个锁对象.4.找出代码错误5.锁的另一种用法1.4内存可见性解决内存可见性引发的线程安全问题(volatile)1.5指令重排序由于操作系统中,线程的调度是抢占式执行的,或者说是随机的,这就造成线程调度执行时,线程的执行顺序是不确定的,虽然有一些代码在这种执行顺序不同的情况下也不会运行出错,但是还有一部分代码会因为执行顺序发生改变而受到影响,这就会造成程序出现Bug,对于多线程并发时会使程序出现bug

用Java实现简易的洗牌和发牌功能

在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?代码思路要想发牌跟洗牌我们首先需要有扑克牌,每张不同的牌对应不同的花色跟数字,这里就需要我们抽象出一副扑克牌对象,然后进行洗牌,洗牌我们就随机打乱扑克牌的顺序,然后就是发牌,每个人平均分发相同数量的扑克牌。代码实现我们在这里创建一个Poker的包用来包装我们跟扑克牌相关的类。在Poker包中创

用Java实现简易的洗牌和发牌功能

在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?代码思路要想发牌跟洗牌我们首先需要有扑克牌,每张不同的牌对应不同的花色跟数字,这里就需要我们抽象出一副扑克牌对象,然后进行洗牌,洗牌我们就随机打乱扑克牌的顺序,然后就是发牌,每个人平均分发相同数量的扑克牌。代码实现我们在这里创建一个Poker的包用来包装我们跟扑克牌相关的类。在Poker包中创

【蓝桥杯-筑基篇】贪心

🍓系列专栏:蓝桥杯🍉个人主页:个人主页目录1.找零问题①暴力枚举②贪心2.人性总是贪婪的3.堆果子4.图书推荐 1.找零问题有币种1、2、4、5、10若干张,找零n元,输出找零方案。①暴力枚举这是一个找零问题,我们需要找到一种方案,使得用给定的硬币找零时,所需的硬币数量最少。在这个代码中,我们使用了暴力枚举的思路,即枚举每种硬币的数量,然后判断是否能够凑出目标金额。如果能够凑出目标金额,则输出方案。这种方法的时间复杂度为O(n^5),因为我们需要枚举每种硬币的数量,而硬币的种类有5种,所以总共需要枚举5层循环。这种方法的优点是代码简单易懂,容易实现。缺点是时间复杂度较高,不适用于大规模数据的处

【蓝桥杯-筑基篇】贪心

🍓系列专栏:蓝桥杯🍉个人主页:个人主页目录1.找零问题①暴力枚举②贪心2.人性总是贪婪的3.堆果子4.图书推荐 1.找零问题有币种1、2、4、5、10若干张,找零n元,输出找零方案。①暴力枚举这是一个找零问题,我们需要找到一种方案,使得用给定的硬币找零时,所需的硬币数量最少。在这个代码中,我们使用了暴力枚举的思路,即枚举每种硬币的数量,然后判断是否能够凑出目标金额。如果能够凑出目标金额,则输出方案。这种方法的时间复杂度为O(n^5),因为我们需要枚举每种硬币的数量,而硬币的种类有5种,所以总共需要枚举5层循环。这种方法的优点是代码简单易懂,容易实现。缺点是时间复杂度较高,不适用于大规模数据的处