网站优化简历模板网站开发公司多少钱

web/2025/10/6 13:30:25/文章来源:
网站优化简历模板,网站开发公司多少钱,汉中专业网站建设价格,天元建设集团有限公司六大板块目录 以下知识基于HotSpot虚拟机实现 1.前置知识 1.1 锁的作用 1.2 Java中常见的锁类型 1.3 锁的重入 2.使用场景 2.1 修饰实例方法 2.1.1 用法 2.1.2 原理 2.1.3 特点 2.2 修饰静态方法 2.2.1 用法 2.2.2 原理 2.3 修饰代码块 2.3.1 用法 3.原理 3.1 对象锁 …目录 以下知识基于HotSpot虚拟机实现 1.前置知识 1.1 锁的作用 1.2 Java中常见的锁类型 1.3 锁的重入 2.使用场景 2.1 修饰实例方法 2.1.1 用法 2.1.2 原理 2.1.3 特点 2.2 修饰静态方法 2.2.1 用法 2.2.2 原理 2.3 修饰代码块 2.3.1 用法 3.原理 3.1 对象锁 3.1.1 对象锁的实现原理 3.1.1.1 无锁 3.1.1.2 偏向锁 3.1.1.3 轻量级锁 3.1.1.4 重量级锁 3.1.1.2.1 Monitor 3.1.2 锁升级 3.1.3 锁消除 3.1.4 锁粗化 3.2 对象头 3.2.1 对象头的结构 3.2.1.1 MarkWord PS这里分代年龄是4位bit也说明了为什么分代年龄最大是15。 3.2.1.1 指向类的指针class pointer 以下知识基于HotSpot虚拟机实现 1.前置知识 1.1 锁的作用 锁是一种同步机制,可以用来协调多个线程的并发访问,以保证对共享资源的安全访问。可以理解为防止一件东西同时被多个人使用。 1.2 Java中常见的锁类型 Java中常见的锁类型-CSDN博客 1.3 锁的重入 锁的重入是指在一个线程持有锁的情况下可以重复获取同一个锁而不会发生死锁。正常来说a获取到锁后b不能获取锁但是当一个实例内的a方法和b方法都是用一把锁上锁时同一个线程访问a和b就需要重入的能力比如在a方法中访问b方法那么a的锁x已经被抢占了如果不支持重入那么访问b的时候会发现x锁已经被自己抢占而无法访问支持重入的原理也就是在这里判断一下当前方法的锁是否是本线程拥有的锁。 2.使用场景 2.1 修饰实例方法 2.1.1 用法 public class SynchronizedExample {// 使用synchronized修饰的实例方法public synchronized void increment() {} } 2.1.2 原理 Java通过锁住此方法对应的对象锁实现同步访问。具体查看3.1 2.1.3 特点 由于锁定的是对象锁那么会有一下特点 1.同一个实例对象下被Synchronized修饰的方法会互相影响也就是说当访问同一个实例对象中被Synchronized修饰的a方法时其他线程无法访问这个实例对象下被被Synchronized修饰的b方法。 2.被Synchronized修饰的方法与未被Synchronized修饰的方法互不影响 3.但是如果是同一线程访问a方法后和b方法不会被阻塞因为Synchronized支持重入查看1.3 2.2 修饰静态方法 2.2.1 用法 synchronized void staic method() { } 2.2.2 原理 Java通过锁住此方法对应的类的对象锁实现同步访问。具体查看3.1 静态同步方法, 锁是当前类的Class对象。一个类只有一个类对象类对象的锁也是和3.1中对象锁原理一样 2.3 修饰代码块 2.3.1 用法 synchronized(this) { } 锁是synchronized括号里实例的对象。 synchronized(a.class) { } 锁是synchronized括号里类的class对象。 3.原理 这里需要一些前置知识每一个对象可以关联一个ObjectMonitor对象对象中有个对象头的区域Java在不同场景下通过利用对象头以及ObjectMonitor对象来实现对象锁。 3.1 对象锁 JVM在JDK1.6后会有几种状态线程获取对象时分别会判断对象锁的状态以此来决定线程是否进入阻塞或者获取到锁对象执行代码块或者自旋等接下来的动作。 对象锁是Java中用于实现同步的机制之一它可以确保在多线程环境下对共享资源的访问是安全的。对象锁的重量级锁状态是基于对象的监视器monitor实现的在Java中每个对象都有一个与之关联的监视器用于实现同步。 3.1.1 对象锁的实现原理 最开始JDK1.5以及以前java只有重量级锁。 从JDK1.6开始对象锁有4种状态无锁偏向锁轻量级锁重量级锁。 这四种状态由3.2.1.1 中的MarkWord内的是否偏向锁或锁标志位确定。 先了解四种状态的特点 3.1.1.1 无锁 当MarkWord的是否偏向锁位为0锁标志位为01时。对象锁为无锁状态 3.1.1.2 偏向锁 当MarkWord的是否偏向锁位为1锁标志位为01时。对象锁为偏向锁状态 当偏向锁开启状态时一个线程需要获取对象锁时需要将Markword的偏向线程id位修改为自己的线程id。修改方式为CAS操作。当有其他线程访问此对象锁时偏向锁升级为轻量级锁。 偏向锁的释放 偏向锁只有遇到其他线程尝试竞争偏向锁时持有偏向锁的线程才会释放锁线程不会主动去释放偏向锁。偏向锁释放后就会升级为轻量级锁。 3.1.1.3 轻量级锁 当MarkWord的锁标志位为01时。对象锁为轻量级状态 线程在执行同步块之前JVM会先在当前线程的栈桢中创建用于存储锁记录的空间并将对象头中的Mark Word复制到锁记录中官方称为Displaced Mark Word。然后线程尝试使用 CAS将对象头中的Mark Word替换为指向锁记录的指针。如果成功当前线程获得锁如果失败表示其他线程竞争锁当前线程便尝试使用自旋来获取锁如果自旋一定次数默认为10可以通过参数-XX:PreBlockSpin来调整。--XX:UseSpinning参数来开启自旋JDK1.6之前默认关闭自旋后依旧获取不到锁轻量级锁会膨胀为重量级锁且当前自旋的线程会阻塞。很多博客对这里说得含糊不清需要注意。 轻量级锁中某进程cas失败后自旋的意义是为了减少线程从用户态到内核态的上下文切换。CPU对这两种状态的切换比较耗时 补充 自适应自旋锁 ​ JDK 1.6引入了更加聪明的自旋锁即自适应自旋锁。所谓自适应就意味着自旋的次数不再是固定的它是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。 3.1.1.4 重量级锁 当MarkWord的锁标志位为10时。对象锁为重量级状态对象锁进入重量级状态后将采用monitor的方式加锁和释放锁。 3.1.1.4.1 Monitor 对象锁在重量级状态时是通过进入、退出 对象监视器(Monitor) 来实现对方法、代码块的同步的而对象监视器的本质依赖于底层操作系统的 互斥锁(Mutex Lock) 实现。 互斥锁(Mutex Lock) 一种常见的线程同步机制用于保护共享资源在多线程环境下的互斥访问。它提供了两个基本操作加锁Lock和解锁Unlock。 互斥锁的原理和实现方式可以有多种常见的实现包括使用原子操作、互斥变量、硬件指令等。下面是一个常见的互斥锁实现原理的简要分析     原子操作实现原子操作是一种不可中断的操作能够保证在多线程环境下的原子性。互斥锁的实现中常用的原子操作是比较并交换Compare and SwapCAS操作。具体实现中互斥锁内部维护一个标志位用于表示锁的状态。加锁操作通过原子的CAS操作将标志位从未锁定状态修改为锁定状态如果修改成功则表示获取锁成功否则需要重试。解锁操作将标志位恢复为未锁定状态。     互斥变量实现互斥变量是一种特殊的变量它具有原子性操作和线程同步的特性。互斥锁的实现中互斥变量被用作一个标志位用于表示锁的状态。加锁操作通过原子的测试和设置操作来获取互斥变量的值如果互斥变量的值为未锁定状态则将其设置为锁定状态表示获取锁成功。解锁操作将互斥变量的值恢复为未锁定状态。     硬件指令实现一些处理器架构提供了特定的硬件指令来支持互斥锁的实现。这些指令通常能够在单个指令级别上执行锁的加锁和解锁操作具有较高的性能和效率。这些硬件指令可以保证锁的操作是原子的从而实现线程的同步和互斥访问。 代码块的加锁 字节码的入口和出口分别有monitorenter和monitorexit指令。当执行monitorenter指令时线程试图获取锁也就是获取monitormonitor对象存在于每个Java对象的对象头中synchronized锁便是通过这种方式获取锁的也是为什么Java中任意对象可以作为锁的原因的持有权。当计数器为0则可以成功获取获取后将锁计数器设为1也就是加1。相应的在执行monitorexit指令后将锁计数器设为0表明锁被释放。如果获取对象锁失败那当前线程就要阻塞等待直到锁被另外一个线程释放为止。大部分博客都是如是说但是这里不准确对象头中存放的是指向重量级锁的指针也就是之前提到的每一个对象可以关联的那个ObjectMonitor对象。 方法的加锁 字节码中是添加ACC_SYNCHRONIZED标识该标识指明了该方法是一个同步方法JVM通过该ACC_SYNCHRONIZED访问标志来辨别一个方法是否声明为同步方法从而执行相应的同步调用。 虽然字节码的标识不一样但是都是会获取Monitor对象去做操作。 monitor的结构 刚开始 Monitor 中 Owner 为 null 当 Thread-2 执行 synchronized(obj) 就会将Monitor的所有者 Owner 置为Thread-2 Monitor中只能有一个Owner 在Thread-2上锁的过程中如果Thread-3Thread-4Thread-5也来执行synchronized(obj)就会进入EntryList BLOCKED Thread-2执行完同步代码块中的内容然后唤醒EntryList中等待的线程来竞争锁竞争时是非公平的 图中WaitSet中的Thread-0Thread-1是之前获得过锁但条件不满足进入WAITING状态的线程在wait-notify中 3.1.2 锁升级 锁升级是在线程获取对象锁时对象锁状态的一种切换。对象锁的状态也实时影响着获取对象锁的线程的状态是否阻塞等。 手动开启或关闭偏向锁你可以使用 -XX:UseBiasedLocking 或 -XX:-UseBiasedLocking 参数来控制。 需要注意的 开启偏向锁的时候对象锁只有 偏向锁-轻量级锁-重量级锁的升级流程。 关闭偏向锁的时候对象锁只有 无锁-轻量级锁-重量级锁的升级流程。 3.1.3 锁消除 ​ 为了保证数据的完整性我们在进行操作时需要对这部分操作进行同步控制但是在有些情况下JVM检测到不可能存在共享数据竞争这是JVM会对这些同步锁进行锁消除。锁消除的依据是逃逸分析的数据支持。 如果不存在竞争为什么还需要加锁呢   所以锁消除可以节省毫无意义的请求锁的时间。变量是否逃逸对于虚拟机来说需要使用数据流分析来确定但是对于我们程序员来说这还不清楚么我们会在明明知道不存在数据竞争的代码块前加上同步吗但是有时候程序并不是我们所想的那样   我们虽然没有显示使用锁但是我们在使用一些JDK的内置API时如StringBuffer、Vector、HashTable等这个时候会存在隐形的加锁操作。 逃逸分析 Java - 深入理解Java中的逃逸分析_java doescapeanalysis-CSDN博客 3.1.4 锁粗化 就是将多个连续的加锁、解锁操作连接在一起扩展成一个范围更大的锁。 3.2 对象头 对象有三块区域对象头Header、实例数据Instance Data和对齐填充Padding。 3.2.1 对象头的结构 对象头由三部分组成MarkWord指向类的指针​数组长度​只有数组对象才有 3.2.1.1 MarkWord Mark Word记录了对象和锁有关的信息当这个对象被synchronized关键字当成同步锁时围绕这个锁的一系列操作都和Mark Word有关。 Mark Word在32位JVM中的长度是32bit在64位JVM中长度是64bit。 Mark Word在不同的锁状态下存储的内容不同在32位JVM中是这么存的 Mark Word在不同的锁状态下存储的内容不同在64位JVM中是这么存的 PS这里分代年龄是4位bit也说明了为什么分代年龄最大是15。 3.2.1.1 指向类的指针class pointer 在看此部分时候需要提前了解类实例对象类的class对象的区别是三个东西。 即指向方法区的instanceKlass实例 虚拟机通过这个指针来确定这个对象是哪个类的实例。 上图是JDK1.6的状态。 1.7和1.8中class的实例对象是放在堆中了 具体可查看这篇博客类的class实例对象存放位置 https://www.cnblogs.com/xy-nb/p/6773051.html 参考博客 Java的对象头和对象组成详解_hotspot虚拟机中java对象结构的图示-CSDN博客 https://www.cnblogs.com/thiaoqueen/p/9314745.html 开启偏向锁一定性能更好吗_jvm偏向锁导致性能问题-CSDN博客 Java - 深入理解Java中的逃逸分析_java doescapeanalysis-CSDN博客 Synchronized 关键字原理-CSDN博客 synchronized详解-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站空间可以自己做服务器广州市网站建站

vue基本语法1. 前言2. 数据绑定v-bind3. v-if || v-else-if || v-else 条件判断4. v-for 循环5. v-on 元素监听事件1. 前言 vue语法&#xff0c;基本照着官网的来的&#xff0c;也有一些看了b站某kuang的视频&#xff0c;受了些启发。 <div id"app">// 取dat…

书店手机网站模板腾讯adq广告平台

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;任务咨询管理&#xff0c;用户管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;任务资讯公告&#…

网站登录系统物流信息平台网站建设

项目编号&#xff1a; S 046 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S046&#xff0c;文末获取源码。} 项目编号&#xff1a;S046&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合…

自己可以建网站吗中国建设网招商入驻

前言 在Android系统中&#xff0c;Service 是一个用来执行长时间运行的操作而不提供用户界面的应用组件。它可以在后台执行任务&#xff0c;即使用户切换到其他应用也不会被中断。 Service 在Android中主要用于在后台执行长时间运行的任务&#xff0c;例如播放音乐、执行文件…

吉林市网站推广专业模板网站制作

2.1线程属性属性属性类型及用途只读属性注意事项编号(id)long型,标识不同线程是不适合用作唯一标识名称(name)String型&#xff0c;区分不同线程否设置名称有助于代码调试和问题定位线程类别(daemon)boolean型&#xff0c;true为守护线程&#xff0c;false为用户线程否在start方…

网站上面关于我们要怎么填写淮北手机网站建设公司

写在前面 Vue.js&#xff0c;无疑是当下最火热的前端框架 Almost&#xff0c;而 Vue.js 最精髓的&#xff0c;正是它的组件与组件化。写一个 Vue 工程&#xff0c;也就是在写一个个的组件。 业务场景是千变万化的&#xff0c;而不变的是 Vue.js 组件开发的核心思想和使用技巧…

做外贸网站选择服务器产品网页的制作

文章目录1 前言2 Log-linear model3 MEMM3.1 模型概述3.2 label bias问题4 CRF4.1 模型概述4.2 模型训练4.3 模型解码4.4 小结参考资料1 前言 条件随机场(conditional random field, CRF)是在建立序列模型时的常用模块&#xff0c;它的本质就是描述观测到的序列xˉ\bar{x}xˉ对…

上传网站代码wordpress重写插件

本题来源---《删除链表中重复元素》。 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入…

活动策划网站有哪些深圳市手机网站建设

2011年6月份考试授课计划安排,欢迎合作。 5月1日 - 5月3日&#xff1a; 考试相关事项&#xff1b;项目管理框架概述&#xff1b;PMBOK知识体系串讲&#xff08;项目管理5大过程组和9大知识领域&#xff09; 5月14日-15日&#xff1a;综合知识案例讲解&#xff1b;考点、重点、难…

城市建设的网站 政策法规十大互联网装修平台

题目: 返回一个二维整数数组中最大联通子数组的和。 要求&#xff1a; 1. 输入一个二维整形数组&#xff0c;数组里有正数也有负数。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 2.程序要使用的数组放在一个叫 input.txt 的文件中&#xff0c; 文件格式是: 数组的行…

利用别人域名做自己的网站计算机语言python

一.利用写好的数据库表生成创建表的sql语句 1.简单创建一个数据库&#xff0c;并建一个表&#xff0c;并编辑数据。 a.建库 b.建表 c.编辑表&#xff0c;保存时输入表名 d.刷新一下&#xff0c;出来了 e.转存导出sql文件。 二.利用生成的数据库创建表加同步数据sql。…

甘肃兰州网站建设查域名服务商

一.区分低级编程语言和高级编程语言的方法 1.低级编程语言 低级编程语言,并不是简单的编程语言,而是写起来很费事的编程语言,如所有编程语言的"祖宗":汇编语言,写起来极其麻烦,说不定一个 int a1; 它就得写好几行,甚至十几行 这样麻烦的编程语言为什么还没消失那,因…

呼和浩特网站制作制作移动端网站价格

摘要&#xff1a;玩 High API 系列好文&#xff1a;UGC内容检测、视频智能、拍照翻译、懂天气的草地喷水头 导读&#xff1a;初创公司可以利用API来解决问题。了解更多场景如何玩High API&#xff1f;如何将API变现&#xff1f;请下载阿里云 API Playbook&#xff08;免费下载&…

自动建设网站系统企业运营管理平台

在写ajax加载数据的时候发现&#xff0c;后面添加进来的demo节点元素&#xff0c;失去了之前的点击事件。为什么点击事件失效&#xff0c;我们该怎么去解决呢?其实最简单的方法就是直接在标签中写οnclick””&#xff0c;但是这样写其实是有点low的&#xff0c;最好的方式还是…

公司内部网站页面设计泰安网站的建设

智能车主控板原理图原理讲解 综述&#xff1a;本篇文章对智能车主控板的一部分电路进行原理分析&#xff0c;文末附加整体原理图。 1. 电源电路 &#xff08;1&#xff09;通过外接电池供电并通过电源模块电路&#xff0c;运用稳压芯片lm2940&#xff0c;将电源电压转化为5V…

免费的网站关键词查询工具wordpress相册滑动

在利用docker部署完应用程序后&#xff0c;就接着考虑如何将程序连接到数据库。 但是过程中发现一些问题&#xff1a; 本地程序在打包后连接的是本地的数据库&#xff0c;在服务器上部署之后必须提供相同的环境才能部署成功。 这里博主用的是宝塔安装的mysql&#xff0c;并尝…

心海建站学好网页设计与网站建设的意义

目录 一、POS架构 二、OES架构 三、POS架构与OES架构的差异 四、各自的典型示例 POS架构典型示例 OES架构典型示例 示例分析 五、各自的典型企业 POS架构典型企业 OES架构典型企业 分析 六、各自典型的流程 POS架构的典型流程 OES架构的典型流程 企业流程架构模式…

网站在百度的图标显示不正常显示wordpress装饰模板排名

这边我会简单介绍一下聊天室的组成部分,和思路的引导 涉及知识点 java 中异常处理机制 和 io流和网络编程socket 简单回顾异常机制 Java中的异常机制是一种用于处理程序运行期间出现的错误或异常情况的机制。这种机制允许程序员定义在特定情况下可能发生的错误&#xff0c;并…

网站建设将来有什么发展西宁哪家网络公司做网站

#输入三个整数x,y,z&#xff0c;请把这三个数由小到大输出。 l [] for i in range(3): x int(input(‘integer:\n’)) l.append(x) l.sort() print (l)

专业网站建设品牌策网站关键词怎么改

文章目录 IndexError1. tuple index out of rangea. 示例代码b.报错原因c.解决方案 TypeError1. len() of a 0-d tensora. 示例代码b.报错原因c.解决方案 RuntimeError1. output with shape … doesnt match the broadcast shape …a. 示例代码b.报错原因c.解决方案 2. Cant ca…