当前位置:网站首页>ARTS_20220628
ARTS_20220628
2022-07-04 15:43:00 【cswh】
ARTS 第 1 周
每周完成一个ARTS: Algorithm:每周做一个 leetcode 的算法题 Review:阅读并点评写作一篇英文技术文章 Tip:学习至少一个技术技巧 Share:分享一篇有观点和思考的技术文章。
Table of Contents
- Algorithm 二分查找
- Review JVM导读———解释Java虚拟机架构
- Tip 正则表达式,替换空格和注解
- Share 计算机科普课程推荐
Algorithm
704. 二分查找
题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
public class 二分查找_704 {
public static void main(String[] args) {
int[] nums = new int[]{-1,0,3,5,9,12};
int target = 9;
System.out.println(search(nums, target));
nums = new int[]{-1,0,3,5,9,12};
target = 2;
System.out.println(search(nums, target));
}
public static int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (right - left) / 2 + left;
int num = nums[mid];
if (num == target) {
return mid;
} else if (num > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
}
时间复杂度:O(logn),其中 n是数组的长度。
空间复杂度:O(1)O(1)。
Review
JVM Tutorial - Java Virtual Machine Architecture Explained for Beginners
JVM导读——为初学者解释Java虚拟机架构,JVM(Java虚拟机)是Java生态系统的核心,使得软件程序能够“一次编写,随处运行”,JVM最初设计仅为了支持JAVA,后面随着时间推移,还支持了Scala、Kotlin和Groovey。这篇文章中,作者介绍了JVM的工作原理和它的各种组件。
什么是虚拟机?
虚拟机是物理计算机的虚拟表示,一台物理机可以运行多个虚拟机,每个虚拟机都有自己的操作系统和应用程序,这些虚拟机彼此隔离。
evernotecid://3E6433C6-011C-425E-8C4F-812D1500C164/appyinxiangcom/25583646/ENResource/p4599
什么是 Java 虚拟机?
在 C 和 C++ 等编程语言中,代码首先被编译成特定于平台的机器代码。这些语言称为编译语言(compiled languages)。
另一方面,在 JavaScript 和 Python 等语言中,计算机直接执行指令而无需编译它们。这些语言称为解释语言(interpreted languages)。
Java 结合了这两种技术。 Java代码首先被编译成字节码生成一个类.class文件。然后这个类文件由底层平台的Java虚拟机解释。相同的类文件可以在任何平台和操作系统上运行的任何版本 JVM上执行。
与虚拟机类似,JVM 在主机上创建一个隔离空间。该空间可用于执行 Java 程序,而与机器的平台或操作系统无关
Java 虚拟机架构
JVMb包括3个不同组件:
- Class Loader (类加载器)
- Runtime Memory/Data Area (运行时内存/数据区)
- Execution Engine (执行引擎) evernotecid://3E6433C6-011C-425E-8C4F-812D1500C164/appyinxiangcom/25583646/ENResource/p4600
image.png
类加载器 Class Loader
类加载过程分为三个阶段:加载(loading)、链接(linking)和初始化(initialization)。
evernotecid://3E6433C6-011C-425E-8C4F-812D1500C164/appyinxiangcom/25583646/ENResource/p4601
运行时内存/数据区Runtime Memory/Data Area
运行时数据区域内有五个组件,如下图
evernotecid://3E6433C6-011C-425E-8C4F-812D1500C164/appyinxiangcom/25583646/ENResource/p4602
执行引擎 Execution Engine
一旦字节码被加载到主内存中,并且运行时数据区域中的详细信息可用,下一步就是运行程序。执行引擎通过执行每个类中存在的代码来处理这个问题。
但是,在执行程序之前,需要将字节码转换为机器语言指令。 JVM可以为执行引擎使用解释器(Interpreter)或JIT 编译器。
evernotecid://3E6433C6-011C-425E-8C4F-812D1500C164/appyinxiangcom/25583646/ENResource/p4603
Java Native Interface (JNI)
Java支持通过Java本机接口 (JNI) 执行本机代码。
本机方法库(Native Method Libraries)是用其他编程语言(例如 C、C++ 和汇编语言)编写的库。这些库通常以 .dll 或 .so 文件的形式存在。这些本机库可以通过 JNI 加载。
总结:
作者在本文中讨论了 Java 虚拟机的体系结构及其各种组件。通常我们不会深入研究 JVM 的内部机制,也不会关心代码运行时它是如何工作的。只有当出现问题并且我们需要调整 JVM 或修复内存泄漏时,我们才会尝试了解其内部机制。
这也是一个非常流行的面试问题,无论是初级还是高级后端职位。深入了解 JVM 可以帮助您编写更好的代码并避免与堆栈和内存错误相关的陷阱。
Tip
使用VS code或者IDEA时,如果需要删除代码中的注释或者空格,可使用如下正则表达式
//格式注释,正则表达式
(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*)
空行,正则如下
^\s*(?=\r?$)\n
Share
分享一门计算机科普课程,十分钟课程系列:计算机科学
边栏推荐
- 被PMP考试“折磨”出来的考试心得,值得你一览
- egg. JS learning notes
- 建筑建材行业经销商协同系统解决方案:赋能企业构建核心竞争力
- leetcode刷题目录总结
- 智慧物流园区供应链管理系统解决方案:数智化供应链赋能物流运输行业供应链新模式
- Solution of commercial supply chain coordination system in the mineral industry: build a digital intelligent supply chain platform to ensure the safe supply of mineral resources
- go-micro教程 — 第二章 go-micro v3 使用Gin、Etcd
- Solution du système de gestion de la chaîne d'approvisionnement du parc logistique intelligent
- PyTorch深度学习快速入门教程
- 解决el-input输入框.number数字输入问题,去掉type=“number“后面箭头问题也可以用这种方法代替
猜你喜欢
What is low code development?
NFT liquidity market security issues occur frequently - Analysis of the black incident of NFT trading platform quixotic
离线、开源版的 Notion—— 笔记软件Anytype 综合评测
CocosCreator事件派發使用
Internet addiction changes brain structure: language function is affected, making people unable to speak neatly
DataKit——真正的统一可观测性 Agent
超大规模数仓集群在大型商业银行的落地实践
利用win10计划任务程序定时自动运行jar包
Offline and open source version of notation -- comprehensive evaluation of note taking software anytype
矿产行业商业供应链协同系统解决方案:构建数智化供应链平台,保障矿产资源安全供应
随机推荐
NFT流动性市场安全问题频发—NFT交易平台Quixotic被黑事件分析
Analysis of abnormal frequency of minor GC in container environment
Leetcode list summary
【HCIA持续更新】WLAN概述与基本概念
kaili不能输入中文怎么办???
Hidden corners of coder Edition: five things that developers hate most
【云原生】服务网格是什么“格”?
CANN算子:利用迭代器高效实现Tensor数据切割分块处理
Web game engine
How to implement a delay queue?
建筑建材行业经销商协同系统解决方案:赋能企业构建核心竞争力
开发者,MySQL专栏完更,助你轻松从安装到入门进阶
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
祝贺Artefact首席数据科学家张鹏飞先生荣获 Campaign Asia Tech MVP 2022
解读数据安全治理能力评估框架2.0,第四批DSG评估征集中
Years of training, towards Kata 3.0! Enter the safe container experience out of the box | dragon lizard Technology
Offline and open source version of notation -- comprehensive evaluation of note taking software anytype
安信证券手机版下载 网上开户安全吗
PingCode 性能测试之负载测试实践
Master the use of auto analyze in data warehouse