java锁相关 自旋锁:为了不放弃CPU执行事件,循环的使用ACS技术对数据尝试进行更新,直至成功。悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改为最新后重新修改数据。独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能再加锁。(单个线程写)共享锁(读):给资源加上读锁后只能读不能改,其他线程也只能加读锁,不能加写锁;(多读)。可重入锁、不可重入锁:线程拿到一把锁之后,可以自由进入同.
java基础-线程池应用及实现原理 1、线程池原理1.1、为什么要用线程池线程是不是越多越好?①线程在java中是一个对象,更是操作系统的资源,线程的创建、销毁需要时间。如果创建时间+销毁时间>执行任务的时间。就很不划算。②java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多的内存。③操作系统需要频繁切换线程上下文(大家都想被运行),影响性能。线程池的推出,就是为了方便的控制线程的数量。2、线程池原理-概念
java基础-线程封闭 封闭对应的是开放,所谓线程开放就是类似共享数据、共享变量这些概念。多线程访问共享可变数据时,涉及到线程间数据同步问题。并不是所有时候,都要用到共享数据,所以线程封闭的概念就提出来了。线程封闭的概念数据都封闭在各自的线程之中,就不需要同步了。这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。线程封闭的具体体现:ThreadLocal、局部变量。ThreadLocalThreadLocal是java里一种特殊的变量。它是一个线程级别变量,每个线程都有一个Thre..
java基础-线程通信 1、通信的方式:要想实现多个线程之间的协同,如:线程的执行顺序、获取某个线程的执行结果等。涉及到线程之间的通信,分为下面四类:①文件共享②网络共享③共享变量④JDK提供的线程协调API:suspend/resume、wait/notify、park/unpark1.1文件共享线程1写数据到文件里,线程2读取文件中的数据内容,实现数据的交换代码示例:import java.nio.file.Files;import java.nio.file.Pat..
java基础-内存屏障和CPU缓存 1、CPU性能优化-缓存为了提高程序的运行性能,现代CPU在很多方面对程序进行了优化。例如,高速缓存。尽可能的避免处理器访问主内存的时间开销,处理器大多会利用缓存来提高性能。访问速度:cup处理器的缓存>内存>硬盘2、CPU的三级缓存L1Cache(一级缓存)是CPU第一级高级缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存容量通常在32-4096KB.L2由于L1级高速缓存的容量限制,为了再次提高CPU的运算速度,在CPU外部放置一高速存储器,即二级缓存。.
java基础-线程状态 目录1、线程的六种状态定义:2、线程的六种状态之间的切换流程图:1、线程的六种状态定义①New(新建状态):尚未启动的线程的线程状态。(通俗的说就是我们写了一个线程,还未调用start方法去启动这个线程)②Runnable(可运行状态):可运行线程的线程状态,等待CUP调度。(通俗讲就是,线程调用了start方法之后进入该状态)。Runnable状态分两种:1、CPU正在执行这个线程;2、CPU随时可以调度执行该线程的状态③Blocked(阻...
java基础-java运行原理 Class文件内容:class文件包含JAVA程序执行的字节码,数据按照格式紧凑排列在class文件中的二进制流,中间没有任何分割符;文件开头有一个0xcafebabe(16进制)特殊的标志上图展示16进制的class文件内容这个文件有着复杂的格式,专门给JVM读取里面的内容,人阅读需要借助工具查看。内容包含:版本、访问标志、常量池、当前类、超级类、接口、字段、方法、属性。JVM运行时数据区:线程独占:每个线程都会有它的独立空间,随线程生命周期而创建和销毁。...
java高级工程师学习之路 -目录 1、高性能编程2、中间件3、容器化技术4、分布式系统5、后端项目实战6、商业化7、项目分享1、高性能编程2、中间件3、容器化技术4、分布式系统5、后端项目实战6、商业化7、项目分享...
序列化与反序列化 1、序列化的意义:①如何远程传输对象(java对象)?②序列化带来的性能如何优化?什么是序列化与反序列化?java允许在内存中创建可复用的java对象,但是只有jvm运行的时候,这个对象才存在。jvm停了,内存中的对象也没了。序列化:把对象的状态信息转换为可存储、可传输的可视化数据。反序列化:把可存储、可传输的可视化数据转换为java对象序列化的作用:1、服务器与服务器之前传输对象:ServerA序列化对象 远程通信传给ServerB,ServerB反序列化成对..
使用ajax将js对象数组传给java后台服务器 前端页面js写法: var objectArray=[]; for(var i=0;i<3;i++) { var data = { examineeId: 1, workTypeId: 2, classIdArray: 3 }; objectArra
微信小程序引入原生组件——WeUI组件库,详细步骤 第一步:查看是否可使用npm命令,没有则安装:我这里已经安装了,如果没有则安装node.jsnode官网下载地址:https://nodejs.org/en/注意这个windows 64位的:其他系统看这里:点击dowloads先点击LTS,下面可选 32位或者64位的下载好安装包,一路next即可。终端输入 npm -v ,看见版本号 即安装成功第二步:微信开发工具,打开微信小程序项目,没有就新建一个:这里我就新建一个 小程序项目:...
互联网系统架构的演进过程 以一个网站为例:网站一开始就是大型的吗?我们应该一开始就设计一个大型网站吗?①不知名小网站 -> 低访问量,一台服务器满足需求。快速推出这个小网站,让人们认识到这个很有价值。最快速的技术LAMP:Linux+Apache+MySQL+PHP②随着网站的发展,越来越多的用户访问,面临问题:性能越来越差越来越多的数据导致存储空间不足选择解决方式:应用服务与数据服务分离原来一台服务器做全部事情,现在三台服务器分别做不同模块的事。能带来什么好
浏览器自动填充保存的账号密码 1、禁止浏览器表单自动填充一般文本框添加 autocomplete="off" 或者autocomplete="new-text"密码输入框添加 autocomplete="new-password"<input type="text" autocomplete="off" name="userName"/><input type="password" autocomplete="new-password" name="password"/>...
layui 数据表格选择框 部分不可选 直接上代码:layui数据表格部分代码 , page: true //是否显示分页 , limits: [10, 20, 50, 100] , limit: 10 //每页默认显示的数量 , id: "tableReload" , where: {} , text: { none: '暂无相关数据' },
Layui 数据表格左右固定 ,内容换行为两行。且有字段隐藏 效果图:设置每行的css:<style type="text/css"> {# 设置table每一行的height #} .layui-table-cell { height: 50px; } {# 设置table每一行的复选框居中 #} .layui-table-fixed-l i{ margin-top: 21px; }</style>layui渲染表格时进行设置: .