一、并发同步器-设计同步器的意义

多线程编程中,有可能会出现多个线程同时访问同一个共享可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。

共享:资源可以由多个线程同时访问。

可变:资源可以在其生命周期内被修改。

引出的问题: 由于线程执行的过程是不可控的,所以需要采用同步机制来协同对 对象可变状态的访问。

那么我们怎么解决线程并发安全问题?
 
实际上,所有的并发模式在解决线程安全问题时,采用的方案都是序列化访问临界资源。即在同一时刻,只能有一个线程访问临界资源,也称作同步互斥访问
 
Java 中,提供了两种方式来实现同步互斥访问:synchronized Lock
 
同步器的本质就是加锁。
加锁目的:序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问)。
 
不过有一点需要区别的是:当多个线程执行一个方法时,该方法内部的局部变量并不是临界资源,因为这些局部变量是在每个线程的私有栈中,因此不具有共享性,不会导致线程安全问题。
 

二、synchronized原理详解

 
synchronized内置锁是一种对象锁(锁的是对象而非引用。即使加在静态方法上成为类锁,类锁和一般对象锁也是互不干扰的。每个类只有一个类锁,类锁只是一个概念上的东西,并不是真实存在的。实际类锁使用时还是相当于是new了个对象,还是对象锁。),作用粒度是对象,可以用来实现对临界资源的同步互斥访问,是可重入的。
加锁的方式:
  1. 同步实例方法,锁是当前实例对象;会锁住整个对象实例。
  2. 同步代码块,锁是括号里面的对象。只锁代码块。
  3. 同步类方法(加在static静态方法上),锁是当前类对象,类对象只有一个,即如果两个线程调用同一个类锁,是能锁住的;

2.1、synchronized使用示例:

1、synchronized直接修饰普通方法,会把整个实例锁住。如果是new两个实例,则互不干扰。

/**
* synchronized直接修饰普通方法,会把整个实例锁住。如果是new两个实例,则互不干扰。
*/
public class MyObject {//synchronized修饰为同步方法,如果先调用method1,则4秒后才会调用method2	private synchronized void method1(){try {System.out.println(Thread.currentThread().getName());Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();}}//如果不用synchronized修饰,则可以直接异步调用,没有影响private void method2(){System.out.println(Thread.currentThread().getName());}public static void main(String[] args) {//创建一个对象,t1走完才会走t2.MyObject myObject=new MyObject();Thread t1=new Thread (new Runnable() {@Overridepublic void run() {myObject.method1();}},"t1");Thread t2=new Thread (new Runnable() {@Overridepublic void run() {myObject.method1();}},"t2");t1.start();t2.start();//创建两个对象,t3和t1\t2互不干扰。MyObject myObject02=new MyObject();Thread t3=new Thread (new Runnable() {@Overridepublic void run() {myObject02.method1();}},"t2");t3.start();}
}

2、synchronized修饰的代码块传入this也属于对象锁。但能减小锁粒度,只同步代码块。对于对象锁(this),如果是同一个实例,就会锁住、按顺序访问,但是如果是不同实例,就可以同时访问。多例的是锁不住的。

//如下,m1和m2锁的不是一个对象,互不干扰。且只锁代码块。this是当前对象。
class ThisLock2 {private final Object LOCK = new Object();public void m2() {synchronized (LOCK) {try {System.out.println(Thread.currentThread());Thread.sleep(10_000);} catch (InterruptedException e) {e.printStackTrace();}}}public void m1() {synchronized (this) {try {System.out.println(Thread.currentThread());Thread.sleep(10_000);} catch (InterruptedException e) {e.printStackTrace();}}}
}

3、类锁相关

package my.mark.mybaibaoxiang.concurrent.jmmAndVolatile.lock;/*** @author twotiger-wxm.* 验证对象锁和类锁互不干扰,类锁只是一个概念上的东西,并不是真实存在的。* 就相当于下方示例中,* testClassLock.duixiangLock();和TestClassLock.classLock();* 调用的是两个实例。* 每个类只有一个类锁,多线程调用同一个类锁是能锁住的。*/
public class TestClassLock {public static synchronized void classLock(){int i=0;while (i++<500){System.out.println("类锁=="+i+Thread.currentThread().getName());/*try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}*/}}public synchronized void duixiangLock(){int i=0;while (i++<500){System.out.println("对象锁=="+i+Thread.currentThread().getName());/*try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}*/}}public static void main(String[] args) {TestClassLock testClassLock = new TestClassLock();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {testClassLock.duixiangLock();//TestClassLock.classLock();//TODO 如果两个线程都用类锁,是能锁住的,执行完一个才会执行另一个。}},"t-duixiang");Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {TestClassLock.classLock();}},"t-class");t1.start();t2.start();}
}

 

 
synchronized底层原理
synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实
现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖
底层操作系统的Mutex lock(互斥锁)实现,它是一个重量级锁性能较低。当
然,JVM内置锁在1.5之后版本做了重大的优化,如锁粗化(Lock
Coarsening)、锁消除(Lock Elimination)、轻量级锁(Lightweight
Locking)、偏向锁(Biased Locking)、适应性自旋(Adaptive Spinning)等
技术来减少锁操作的开销,,内置锁的并发性能已经基本与Lock持平。
synchronized关键字被编译成字节码后会被翻译成monitorenter
monitorexit 两条指令分别在同步块逻辑代码的起始位置与结束位置。
每个同步对象都有一个自己的Monitor(监视器锁),加锁过程如下图所示:
那么有个问题来了,我们知道synchronized加锁加在对象上,对象是如何记录锁
状态的呢?
答案是锁状态是被记录在每个对象的对象头(Mark Word)中,下面我们一
起认识一下对象的内存布局对象的内存布局
HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头
(Header)、实例数据(Instance Data)和对齐填充(Padding)。
对象头:比如 hash码,对象所属的年代,对象锁,锁状态标志,偏向
锁(线程)ID,偏向时间,数组长度(数组对象)等
实例数据:即创建对象时,对象中成员变量,方法等
对齐填充:对象的大小必须是8字节的整数倍
对象头
HotSpot虚拟机的对象头包括两部分信息,第一部分是“Mark Word”,用于
存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标
志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度在32位和
64位的虚拟机(暂 不考虑开启压缩指针的场景)中分别为32个和64个Bits,官
方称它为“Mark Word”。对象需要存储的运行时数据很多,其实已经超出了
32、64位Bitmap结构所能记录的限度,但是对象头信息是与对象自身定义的数据无关的额 外存储成本,考虑到虚拟机的空间效率,Mark Word被设计成一个非固
定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用
自己的存储空间。例如在32位的HotSpot虚拟机 中对象未被锁定的状态下,Mark
Word的32个Bits空间中的25Bits用于存储对象哈希码(HashCode),4Bits用于
存储对象分代年龄,2Bits用于存储锁标志 位,1Bit固定为0,在其他状态(轻
量级锁定、重量级锁定、GC标记、可偏向)下对象的存储内容如下表所示。
但是如果对象是数组类型,则需要三个机器码,因为JVM虚拟机可以通过
Java对象的元数据信息确定Java对象的大小,但是无法从数组的元数据来确认数
组的大小,所以用一块来记录数组长度。
对象头信息是与对象自身定义的数据无关的额外存储成本,但是考虑到虚拟
机的空间效率,Mark Word被设计成一个非固定的数据结构以便在极小的空间内
存存储尽量多的数据,它会根据对象的状态复用自己的存储空间,也就是说,
Mark Word会随着程序的运行发生变化,变化状态如下(32位虚拟机):
锁的膨胀升级过程
锁的状态总共有四种,无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的
竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁,但是锁的升级是单
向的,也就是说只能从低到高升级,不会出现锁的降级。下图为锁的升级全过
程:偏向锁
偏向锁是Java 6之后加入的新锁,它是一种针对加锁操作的优化手段,经过
研究发现,在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多
次获得,因此为了减少同一线程获取锁(会涉及到一些CAS操作,耗时)的代价而引
入偏向锁。偏向锁的核心思想是,如果一个线程获得了锁,那么锁就进入偏向模
式,此时Mark Word 的结构也变为偏向锁结构,当这个线程再次请求锁时,无需
再做任何同步操作,即获取锁的过程,这样就省去了大量有关锁申请的操作,从
而也就提供程序的性能。所以,对于没有锁竞争的场合,偏向锁有很好的优化效
果,毕竟极有可能连续多次是同一个线程申请相同的锁。但是对于锁竞争比较激
烈的场合,偏向锁就失效了,因为这样场合极有可能每次申请锁的线程都是不相
同的,因此这种场合下不应该使用偏向锁,否则会得不偿失,需要注意的是,偏
向锁失败后,并不会立即膨胀为重量级锁,而是先升级为轻量级锁。下面我们接
着了解轻量级锁。
轻量级锁
倘若偏向锁失败,虚拟机并不会立即升级为重量级锁,它还会尝试使用一种
称为轻量级锁的优化手段(1.6之后加入的),此时Mark Word 的结构也变为轻量
级锁的结构。轻量级锁能够提升程序性能的依据是“对绝大部分的锁,在整个同
步周期内都不存在竞争”,注意这是经验数据。需要了解的是,轻量级锁所适应
的场景是线程交替执行同步块的场合,如果存在同一时间访问同一锁的场合,就
会导致轻量级锁膨胀为重量级锁。
自旋锁轻量级锁失败后,虚拟机为了避免线程真实地在操作系统层面挂起,还会进
行一项称为自旋锁的优化手段。这是基于在大多数情况下,线程持有锁的时间都
不会太长,如果直接挂起操作系统层面的线程可能会得不偿失,毕竟操作系统实
现线程之间的切换时需要从用户态转换到核心态,这个状态之间的转换需要相对
比较长的时间,时间成本相对较高,因此自旋锁会假设在不久将来,当前的线程
可以获得锁,因此虚拟机会让当前想要获取锁的线程做几个空循环(这也是称为
自旋的原因),一般不会太久,可能是50个循环或100循环,在经过若干次循环
后,如果得到锁,就顺利进入临界区。如果还不能获得锁,那就会将线程在操作
系统层面挂起,这就是自旋锁的优化方式,这种方式确实也是可以提升效率的。
最后没办法也就只能升级为重量级锁了。
锁消除
消除锁是虚拟机另外一种锁的优化,这种优化更彻底,Java虚拟机在JIT编
译时(可以简单理解为当某段代码即将第一次被执行时进行编译,又称即时编
译),通过对运行上下文的扫描,去除不可能存在共享资源竞争的锁,通过这种
方式消除没有必要的锁,可以节省毫无意义的请求锁时间,如下StringBuffer的
append是一个同步方法,但是在add方法中的StringBuffer属于一个局部变量,
并且不会被其他线程所使用,因此StringBuffer不可能存在共享资源竞争的情
景,JVM会自动将其锁消除。
逃逸分析
使用逃逸分析,编译器可以对代码做如下优化:
一、同步省略。如果一个对象被发现只能从一个线程被访问到,那么对于这个对象的操作可
以不考虑同步。
二、将堆分配转化为栈分配。如果一个对象在子程序中被分配,要使指向该对象的指针永远
不会逃逸,对象可能是栈分配的候选,而不是堆分配。
三、分离对象或标量替换。有的对象可能不需要作为一个连续的内存结构存在也可以被访问
到,那么对象的部分(或全部)可以不存储在内存,而是存储在CPU寄存器中。
是不是所有的对象和数组都会在堆内存分配空间?
不一定
在Java代码运行时,通过JVM参数可指定是否开启逃逸分析, ­
XX:+DoEscapeAnalysis : 表示开启逃逸分析 ­XX:­DoEscapeAnalysis : 表示关闭逃逸分析 从jdk 1.7开始已经默认开始逃逸分析,如需关闭,需要指定­XX:­
DoEscapeAnalysis
关于逃逸分析的案例论证见Git课程源码
/**
* 进行两种测试
* 关闭逃逸分析,同时调大堆空间,避免堆内GC的发生,如果有GC信息将会被打印
出来
* VM运行参数:­Xmx4G ­Xms4G ­XX:­DoEscapeAnalysis ­
XX:+PrintGCDetails ­XX:+HeapDumpOnOutOfMemoryError
*
* 开启逃逸分析
* VM运行参数:­Xmx4G ­Xms4G ­XX:+DoEscapeAnalysis ­
XX:+PrintGCDetails ­XX:+HeapDumpOnOutOfMemoryError
*
* 执行main方法后
* jps 查看进程
* jmap ­histo 进程ID
*
*/AbstractQueuedSynchronizer(AQS)
并发之父
Doug Lea生平不识Doug Lea,学懂并发也枉然
Java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器
实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获
取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定
义了一套多线程访问共享资源的同步器框架,是一个依赖状态(state)的同步
器。
AQS具备特性
阻塞等待队列
共享/独占
公平/非公平
可重入
允许中断
例如Java.concurrent.util当中同步器的实现如Lock,Latch,Barrier等,都是基
于AQS框架实现
一般通过定义内部类Sync继承AQS将同步器所有调用都映射到Sync对应的方法
AQS内部维护属性volatile int state (32位)
state表示资源的可用状态
State三种访问方式
getState()、setState()、compareAndSetState()
AQS定义两种资源共享方式
Exclusive-独占,只有一个线程能执行,如ReentrantLock
Share-共享,多个线程可以同时执行,如Semaphore/CountDownLatch
AQS定义两种队列
同步等待队列
条件等待队列
不同的自定义同步器争用共享资源的方式也不同。自定义同步器在实现时只
需要实现共享资源state的获取与释放方式即可,至于具体线程等待队列的维护
(如获取资源失败入队/唤醒出队等),AQS已经在顶层实现好了。自定义同步器
实现时主要实现以下几种方法:
isHeldExclusively():该线程是否正在独占资源。只有用到
condition才需要去实现它。
tryAcquire(int):独占方式。尝试获取资源,成功则返回true,失败
则返回false。
tryRelease(int):独占方式。尝试释放资源,成功则返回true,失败
则返回false。
tryAcquireShared(int):共享方式。尝试获取资源。负数表示失败;
0表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。
tryReleaseShared(int):共享方式。尝试释放资源,如果释放后允许
唤醒后续等待结点返回true,否则返回false。
同步等待队列
AQS当中的同步等待队列也称CLH队列,CLH队列是Craig、Landin、
Hagersten三人发明的一种基于双向链表数据结构的队列,是FIFO先入先出线程等待队列,Java中的CLH队列是原CLH队列的一个变种,线程由原自旋机制改为阻
塞机制。
条件等待队列
Condition是一个多线程间协调通信的工具类,使得某个,或者某些线程一
起等待某个条件(Condition),只有当该条件具备时,这些等待线程才会被唤
醒,从而重新争夺锁
 

 

 

 

 

 

 

 

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

相关文章

  1. Springboot启动出现了Error creating bean with name userController

    编程菜鸟在启动springboot出现了错误: D:\Windows\Jdk14\jdk-14\bin\java.exe -Dvisualvm.id=460544745239900 -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mb…...

    2024/4/15 7:08:52
  2. C语言运行机制(过程)简述

    很多人在学习C语言的时候直接用的IDE(Integrated Development Environment全名叫集成开发环境),因此 并不知道C语言的运行过程,这里我用VS2010IDE简单的写一下C语言的运行过程,希望能帮助大家理解。 1.编辑:写一个hello world!程序,然后以hello.c为文件名,这个过程就是编…...

    2024/4/16 19:09:24
  3. Component template should contain exactly one root element

    # 情景 我是从jq大法过来的搬运工,使用vue搭建我的个人博客,www.ainusers.top的首页 但是呢,在引入首页背景的时候,报错信息,如标题所示,查找相关博文发现组件模板应该只包含一个根元素上面这句话,是原因,什么意思呢如下图所示# 像这么写是不对的# 像这么写才是对的# 也…...

    2024/4/21 12:51:29
  4. springboot mybatis plus逆向生成项目整合lombok,swagger

    依赖包:具体版本由自己测试<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.6</version><optional>true</optional> </dependency><dependency><group…...

    2024/4/29 1:11:53
  5. 电商平台分析平台----需求十:总结

    实时计算部分总结实时计算部分无非是对某一个需求进行统计,整体框架:1.改变基本数据结构,变为(key,1L),可以用map或者transform进行改变 2. 累加操作,三种选择reduceByKey—适合用于实时更新数据库数据updateStateByKey[]----适合用于较长时间的实时累加统计,需要设置checkPoin…...

    2024/4/24 7:40:09
  6. 链表基础一之遍历链表

    #include <iostream> using namespace std; //设置结构体,id和name均为数据域,用来存储信息,next指针,用来指向下一个结构体 struct Nodes {int id;char name[10];struct Nodes* next;}s1,s2,s3;int main() { //初始化三个结构体s1 = {1,"wangchen",&s…...

    2024/4/24 7:40:11
  7. JS 字符串转Number类型

    设置参数: var num = 1 在HTML中使用:Number(num)+1 ,结果很可以 = 11 ;所有可以先用Number转一下....

    2024/4/24 7:40:07
  8. C++ 类对象作为成员

    1 #include <iostream> // 标准的输入输出2 using namespace std;3 4 class Game {5 public:6 Game()7 {8 cout << "Game的构造函数调用" << endl;9 }10 11 Game(string game)12 {13 cout << "Game的…...

    2024/4/24 7:40:09
  9. request.getContextPath() 路径正确但是资源加载不出来的解决方案

    文章目录[1] 错误现象[2] 错误分析[3] 解决方案[4] 效果演示 [1] 错误现象 在做项目的时候,希望路径是以服务器的根路径为基准,所以就用到了 request.getContextPath()。 在代码中是可以按”command“键+鼠标点击进入资源的,说明路径是没有问题的。但是加载页面的时候 css 文…...

    2024/5/5 22:31:38
  10. 网络基础(三)——RIP、OSPF协议

    RIP:路由信息协议 思维导图OSPF:开放性最短路径优先协议 思维导图...

    2024/4/24 7:40:05
  11. N叉树的先序遍历

    一、思路题目如下由示例可知 N叉树和二叉树类似,不过其指针域是由链表构成,这也就是说不同的节点,指针域的节点数可能是不同的。思路:类比二叉树的前序遍历,注意节点域的处理。class Node {public int val;public List<Node> children;public Node() {}public Node(…...

    2024/4/24 7:40:03
  12. PHP实现阿里云OSS的STS认证(ThinkPhp5.0框架)

    1、先讲下初心,要实现需求客户端上传图片或者视频到阿里云OSS,使用STS认证方式(类似于客户端向服务端要认证签名),在做OSS的STS认证时发现关于php实现这块的技术播客写的普遍笼统,于是决定写一遍相对完整的2、看博客之前还请大家先看下这个官方文档https://help.aliyun.com/…...

    2024/4/24 7:40:02
  13. .equals() 和 == 的区别 引出的源码分析

    前言: 前两天项目经理给我推荐了本书《practical java》,让我每天看个几页有利于以后的开发,排错。我简单的看了几章,发现好多东西之前只是会用,原理理解的不透彻,今天整理下前天看的equals() 源码,做个笔记。 1.先上结论: == 和 equals()的区别: 1.== 对于基础类型 比…...

    2024/4/24 7:40:04
  14. 每个企业都应打造自己的小程序官网,沉淀私域流量

    “私域流量”是近两年来年最火的一个营销词汇,反映出企业对市场预算合理化、运营精细化以及转化效果明确化的刚需。 不过,私域流量的产品载体应用最广的是个人微信号和APP,咋看之下,小程序似乎与私域流量关系不大,但仔细深究后又不难发现,私人微信号本身账户所有权也并非…...

    2024/5/8 11:28:21
  15. QT QML中的动画概念及实例

    QT QML动画中有比较多的概念,初看有点头大,我们先从三个基本概念说起:状态(state):可视化组件的一组参数,决定可视化组件的显示方式 每种状态的不同参数,有变化(change)来表示; 状态是理解为一个QML对象,它是可以被继承的,形成一个新的状态; 可以在QML指定,直接不…...

    2024/4/16 19:10:30
  16. 8-1-4 使用函数的选择法排序 (25分)

    void sort( int a[], int n ){ int max,t,c; max=a[0]; for(n;n>0;n–){ for(int i=0;i<n;i++){ if(a[i]>max){ max=a[i]; c=i; } } t=a[n-1]; a[n-1]=a[c]; a[c]=t; max=a[0]; c=0; } }...

    2024/4/15 7:09:04
  17. vue项目优化

    1、CDN和gzip压缩 https://segmentfault.com/a/1190000013239622...

    2024/4/18 6:45:07
  18. ubuntu16.04环境下利用Conda3安装cuda cudnn gpu版tensorflow和Pytorch,并在pycharm下配置

    https://blog.csdn.net/weixin_43142797/article/details/98027080这个博主写的这个真心舒服,推荐,安装tensorflow时自带安装好了cuda,cudnn...

    2024/4/16 19:10:24
  19. 监控jira license 证书过期时间

    一、监控jira license 证书过期时间 假如你装的不是破解版,又不想花钱,那么免费版是你的选择,可是烦恼的是一个月会定时更换一次证书。 就想通过脚本来监控jira license 证书的过期时间 脚本如下 #!/bin/bash base_auth="https://jira.web.cn/secure/admin/WebSudoAuth…...

    2024/4/16 19:10:36
  20. 【软件测试】Jenkins自动化部署环境

    一、在Linux上装Jenkins1.安装Git是一个管理代码的仓库yum install git 2.安装maven存放jar包的服务器cd /创建一个文件夹data:mkdir data下载压缩包:wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxvf apache-mave…...

    2024/4/15 7:09:00

最新文章

  1. Jmeter性能测试(四)

    一、遇到问题解决思路 1、检查请求头是否正确 2、检查请求参数是否正确 3、检查鉴权信息是否正确 4、检查变量作用域 5、检查数据提取是否正确(正则/json提取器) 二、请求头检查 1、在Http信息头管理器查看 2、注意这里的变量作用域是全局的 三、请求参数检查 1、在查看结…...

    2024/5/8 13:12:02
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 前端开发攻略---Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

    1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 3、关键API IntersectionObserver IntersectionObserver 是一个用于监测元素是否进入或离开视口&#xff08;viewport&#x…...

    2024/5/7 13:42:30
  4. Go语言map、slice、channel底层实现(go面试)

    slice 切片是一个引用类型&#xff0c;其底层实现是一个结构体&#xff0c;包含以下字段&#xff1a; ptr&#xff1a;一个指向底层数组的指针&#xff0c;指针指向数组的第一个元素。 len&#xff1a;切片当前包含的元素数量。 cap&#xff1a;切片的容量&#xff0c;即底层…...

    2024/5/5 1:45:06
  5. 蓝桥杯加训

    1.两只塔姆沃斯牛&#xff08;模拟&#xff09; 思路&#xff1a;人和牛都记录三个数据&#xff0c;当前坐标和走的方向&#xff0c;如果人和牛的坐标和方向走重复了&#xff0c;那就说明一直在绕圈圈&#xff0c;无解 #include<iostream> using namespace std; const i…...

    2024/5/3 9:22:44
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57