JUC之AQS总结

转载https://www.cnblogs.com/liqiangchn/p/11960944.html简单而言AQS内部维护了这样一个CLH队列。这样,只要具体的锁的实现利用这个队列(调用acquire release)就可以了。acquire的第一步,尝试CAS直接修改状态。如果失败了,那就老老实实去排队吧获取失败的线程,加入到同步队列的队尾;加入到队列中后,如果当前节点的前驱节点为头节点再次尝试获取同步状态如果头节点的下一个节点尝试获取同步状态失败后,会进入等待状态如果抢占成功
分类: 其他 发布时间: 02-09 13:04 阅读次数: 0

sofaboot的启动原理解析

SpringBoot的原理我们先找到这张springboot的原理图
分类: 其他 发布时间: 02-09 13:04 阅读次数: 0

Flink代码阅读之代码架构

flink-core基础的内部数据定义一些函数(function)The base interface for all user-defined functions.This interface is empty in order to allow extending interfaces to be SAM (single abstract method) interfaces that can be implemented via Java 8 lambdas.org.apache.flink
分类: 其他 发布时间: 02-09 13:03 阅读次数: 0

数据结构第二章线性表顺序表练习题及答案P19

#数据结构第二章线性表顺序表练习题及答案P19**1、**从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行算法思想:搜索整个顺序表,查找最小值元素并记住其位置,搜索结束后用最后一个元素填补空出的原最小值元素的位置bool Del_Min(SeqList &L,ElemType &value){ if(L.length<=0) return false; int pos=0; value
分类: 其他 发布时间: 02-09 13:03 阅读次数: 0

数据结构第二章线性表顺序表练习题及答案P40(1)

第二章线性表练习题P40单链表等文章目录第二章线性表练习题P40单链表等1设计一个递归算法,删除不带头结点的单链表L中所有x的结点2、在带头节点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上诉操作3、设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值4、试编写在带头结点的单链表L中删除一个最小值结点的高效算法5、试编写在带头结点的单链表就地逆置,所谓“就地”是指辅助空间复杂度为O(1)6、有一个带头结点的单链表L,设计一个算法使其元素递增有序7、
分类: 其他 发布时间: 02-09 13:03 阅读次数: 0

数据结构第二章线性表顺序表练习题及答案P40(2)

数据结构第二章线性表顺序表练习题及答案P40(2)文章目录数据结构第二章线性表顺序表练习题及答案P40(2)15.已知两个链表A和B分别表示两个集合,其元素递增排列。编制函数,求A与B的交集,并存放于A链表中16.两个整数序列A=a1,a2,a3,…,am和B=b1,b2,b3…,bn已经存入两个单链表中,设计一个算法,判断序列B是否是序列A的连续子序列17.设计一个算法用于判断带头结点的循环双链表是否对称18.有两个循环单链表,链表头指针分别为h1和h2,编写一个函数将链表h2链接到链表h1之后,要求链
分类: 其他 发布时间: 02-09 13:02 阅读次数: 0

用cnpm安装VueCli4.0

用cnpm进行VueCli4.0安装要想安装Vue,要先安装nodejs,再用nodejs的npm下载,所以开始吧。一、什么是npm和cnpmnpm(node package manager):nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等)cnpm:因为npm安装插件是从国外服务器下载,受网络的影响比较大,可能会出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),
分类: 其他 发布时间: 02-09 13:02 阅读次数: 0

Vue项目的创建和启动

VueCli4.0的使用第一种方法:用vue create命令创建和启用项目1、打开cmd,创建项目mallvue create mall //mall是项目名字2、选择Default,即选择默认安装3、按照提示运行项目(1)进入mall文件夹cd mall(2)运行mall项目的脚本cnpm run serve(3)出现下图所示即启动成功4、输入cmd上给出的网址,出现此网址则成功#本地:http://localhost:8080/#NetWo
分类: 其他 发布时间: 02-09 13:01 阅读次数: 0

cnpm一直卡着不动

1.先卸载cnpmnpm uninstall -g cnpm --registry=https://registry.npm.taobao.org2.注册模块镜像npm set registry https://registry.npm.taobao.org3.node-gyp 编译依赖的 node 源码镜像npm set disturl https://npm.taobao.org/dist4.清空缓存npm cache clean --force5.安装cnpmnpm inst
分类: 其他 发布时间: 02-09 13:01 阅读次数: 0

Git克隆github里的项目

Git克隆github里的项目常见Git命令速查表一、第一种方法HTTPS方式克隆(1)复制想要克隆项目的https地址(2)在cmd里进入想要克隆放在的文件夹里,然后输入//git clone (1)中的地址git clone https://github.com/zzw-lab/MiMall.git(3)如果没有设置免密,则还需要输入用户名和密码(即github里的用户名和密码)(4)克隆完成(如果设置过免密直接到第四步)二、第二种方法SSH方式克隆(1)复制想要克隆项目
分类: 其他 发布时间: 02-09 13:01 阅读次数: 0

VScode上操作以及git配置

VScode上操作以及git配置一、切换git版本1、文件里的首选项->设置2、输入框中输入搜索setting.json,点击在’setting.json’中编辑3、切换git.path所在路径,重新打开VScode即可切换git版本二、上传文件到github(用SSH免密连接的用这个有效)1、新建文件后,完成代码后保存,点击第三个图标进行上传2、点击+号进行暂存,再方框中写入简略更改信息(相当于日志),点击对号上传3、点击下方如图所示图标进行推送到远程仓库中.4、推送
分类: 其他 发布时间: 02-09 13:01 阅读次数: 0

sql server连接数据库

新建项目选择控制台应用程序点击视图数据连接右键数据连接,选择添加连接填写服务器的名称选择登录的方式选择要连接的数据库点击被连接的数据库右键,选择属性在页面的右下角复制连接字符串的内容导入工具包,负责处理sqlsever定义一个连接字符实例化一个连接对象打印连接对象打开/关闭连接对象暂停页面运行结果...
分类: 其他 发布时间: 02-09 13:00 阅读次数: 0

Java数组逆序输出

public class Tets { public static void main(String[] args) { int[] lcz={1,2,3,4,5,6,7}; for (int i = lcz.length - 1; i >= 0; i--) { System.out.println(lcz[i]); } }}对应内存图:逆序输出:因为逆序输出要从索引最后一位输出直到索引第一位为止所
分类: 其他 发布时间: 02-09 13:00 阅读次数: 0

Java构造器讲解

构造器:没有任何参数的构造器我们叫做:空参构造器–》空构造器public class Person { //构造器:没有任何参数的构造器我们叫做:空参构造器--》空构造器 public Person(){ /*age = 19; name = "lili"; height = 169.5;*/ } //属性: String name; int age; double height; //方法:
分类: 其他 发布时间: 02-09 13:00 阅读次数: 0

Java构造器重载详解

public class Person { //属性: String name; int age; double height; //空构造器 public Person(){ } public Person(String name,int age,double height){ //当形参名字和属性名字重名的时候,会出现就近原则: //在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那
分类: 其他 发布时间: 02-09 12:59 阅读次数: 0

Java实例化对象的内存分析

public class Person { int id; int age; public static void main(String args[]){ Person p1= new Person(); }}
分类: 其他 发布时间: 02-09 12:59 阅读次数: 0

Java中this讲解

【1】创建对象的过程:(1)在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。(2)创建对象,在堆中开辟空间(3)对对象进行初始化操作,属性赋值都是默认的初始值。(4)new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值this:从上面的效果能够看到:this指代的就是当前对象:内存:this关键字 用法:(1)this可以修饰属性:总结:当属性名字和形参发生重名的时候,或者 属性名字 和局部变量重名的时候,都会发生就近原则,所以如果我要是直接使用变量名字的
分类: 其他 发布时间: 02-09 12:59 阅读次数: 0

Java创建类

创建类:(1)属性(field 成员变量)属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。属性定义格式:[修饰符] 属性类型 属性名 = [默认值] ;(2)方法方法用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。方法定义格式:[修饰符] 方法返回值类型 方法名(形参列表) {
分类: 其他 发布时间: 02-09 12:59 阅读次数: 0

Java创建对象详细讲解(看注释!!!!)

public class Test {//测试类 //这是一个main方法,是程序的入口: public static void main(String[] args) { //创建一个人类的具体的对象/实例: //创建一个对象,对象的名字叫:zs //Person 属于 引用数据类型 //第一次加载类的时候,会进行类的加载,初始化创建对象的时候,对象的属性没有给赋值,有默认的初始化的值。 Person zs =
分类: 其他 发布时间: 02-09 12:58 阅读次数: 0

Java中的static详细讲解

【1】static可以修饰:属性,方法,代码块,内部类。【2】static修饰属性;public class Test { //属性: int id; static int sid; //这是一个main方法,是程序的入口: public static void main(String[] args) { //创建一个Test类的具体的对象 Test t1 = new Test(); t1.id = 10;
分类: 其他 发布时间: 02-09 12:58 阅读次数: 0