文章目录

  • 一、线程
    • 1、线程概述(与进程的区别及线程的优势)
    • 2、线程创建等待及退出
    • 3、线程共享内存空间的代码验证
    • 4、线程同步之互斥量加锁解锁
    • 5、互斥锁限制共享资源的访问
    • 6、什么情况造成死锁
    • 7、线程条件控制实现线程的同步
  • 二、往期文章

一、线程

1、线程概述(与进程的区别及线程的优势)

多线程开发在 Linux 平台上已经有成熟的 pthread 库支持。其涉及的多线程开发的最基本概念主要包含三点:线程,互斥锁,条件。其中,线程操作又分线程的创建,退出,等待 3 种。互斥锁则包括 4 种操作,分别是创建,销毁,加锁和解锁。条件操作有 5 种操作:创建,销毁,触发,广播和等待。其他的一些线程扩展概念,如信号灯等,都可以通过上面的三个基本元素的基本操作封装出来。详细请见表:
在这里插入图片描述
线程与进程的区别:
典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。

进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程包含了表示进程内执行环境必须的信息,其中包括进程中表示线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno常量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。在Unix和类Unix操作系统中线程也被称为轻量级进程(lightweight processes),但轻量级进程更多指的是内核线程(kernel thread),而把用户线程(user thread)称为线程。

“进程——资源分配的最小单位,线程——程序执行的最小单位”

进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
  
线程的优势:
进程与线程的区别就是我们使用线程的理由。总的来说就是:进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。

使用多线程的理由之一是和进程相比,它是一种非常**“节俭”**的多任务操作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,总的说来,一个进程的开销大约是一个线程开销的30倍左右,当然,在具体的系统上,这个数据可能会有较大的区别。

使用多线程的理由之二是线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。

除了以上所说的优点外,不和进程比较,多线程程序作为一种多任务、并发的工作方式,当然有以下的优点:

  • 提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time
    consuming)置于一个新的线程,可以避免这种尴尬的情况。
  • 使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
  • 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。

2、线程创建等待及退出

线程创建函数:
在这里插入图片描述

  • 当pthread_create成功返回时,新创建线程的线程D会被设置成tidp指向的内存单元。attr参数用于定制各种不同的线程属性。现在我们把它置为NULL,创建一个具有默认属性的线程。
  • 新创建的线程从start_rtn函数的地址开始运行,该函数只有一个无类型指针参数arg。如果需要向start_rtn函数传递的参数有一个以上,那么需要把这些参数放到一个结构中,然后把这个结构的地址作为arg参数传入。
  • 线程创建时并不能保证哪个线程会先运行:是新创建的线程,还是调用线程。新创建的线程可以访问进程的地址空间,并且继承调用线程的浮点环境和信号屏蔽字,但是该线程的挂起信号集会被清除。
//create.c
#include<stdio.h>
#include<pthread.h>//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
void *func1(void *arg)
{static int ret = 10;printf("t1:%ld thread is create\n",(unsigned long)pthread_self());printf("t1:param is %d\n",*((int *)arg));pthread_exit((void *)&ret);
}int main()
{int ret;int param = 100;pthread_t t1;int *pret = NULL;ret = pthread_create(&t1,NULL,func1,(void *)&param);if(ret == 0){printf("main:create t1 successful\n");}printf("main:%ld\n",(unsigned long)pthread_self());pthread_join(t1,(void **)&pret);return 0;
}

输出结果:
在这里插入图片描述

3、线程共享内存空间的代码验证

//Test1.c
#include<stdio.h>
#include<pthread.h>
#include <unistd.h>
//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
int g_data = 0;             //定义一个全局变量
void *func1(void *arg)
{static int ret = 10;    //定义一个静态变量printf("t1:%ld thread is create\n",(unsigned long)pthread_self());printf("t1:param is %d\n",*((int *)arg));while(1){printf("t1:%d\n",g_data++);sleep(1);}pthread_exit((void *)&ret);}void *func2(void *arg)
{static int ret = 10;printf("t2:%ld thread is create\n",(unsigned long)pthread_self());printf("t2:param is %d\n",*((int *)arg));while(1){printf("t2:%d\n",g_data++);sleep(1);}pthread_exit((void *)&ret);
}int main()
{int ret;int param = 100;pthread_t t1;pthread_t t2;int *pret = NULL;ret = pthread_create(&t1,NULL,func1,(void *)&param);if(ret == 0){printf("main:create t1 successful\n");}	ret = pthread_create(&t2,NULL,func2,(void *)&param);if(ret == 0){printf("main:create t2 successful\n");}while(1){printf("main:%d\n",g_data++);sleep(1);}printf("main:%ld\n",(unsigned long)pthread_self());pthread_join(t1,NULL);pthread_join(t2,NULL);return 0;
}

输出结果:
在这里插入图片描述
从上面运行结果可以知道,线程是共享内存空间的。

4、线程同步之互斥量加锁解锁

//Test3.c
#include<stdio.h>
#include<pthread.h>
#include <unistd.h>//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
int g_data = 0;
pthread_mutex_t mutex;void *func1(void *arg)
{int i;;pthread_mutex_lock(&mutex);for(i=0;i<5;i++){printf("t1:%ld thread is create\n",(unsigned long)pthread_self());printf("t1:param is %d\n",*((int *)arg));sleep(1);}pthread_mutex_unlock(&mutex);
}
void *func2(void *arg)
{pthread_mutex_lock(&mutex);printf("t2:%ld thread is create\n",(unsigned long)pthread_self());printf("t2:param is %d\n",*((int *)arg));pthread_mutex_unlock(&mutex);}void *func3(void *arg)
{pthread_mutex_lock(&mutex);printf("t3:%ld thread is create\n",(unsigned long)pthread_self());printf("t3:param is %d\n",*((int *)arg));pthread_mutex_unlock(&mutex);}int main()
{int ret;int param = 100;pthread_t t1;pthread_t t2;pthread_t t3;pthread_mutex_init(&mutex,NULL);int *pret = NULL;ret = pthread_create(&t1,NULL,func1,(void *)&param);if(ret == 0){printf("main:create t1 successful\n");}	ret = pthread_create(&t2,NULL,func2,(void *)&param);if(ret == 0){printf("main:create t2 successful\n");}ret = pthread_create(&t3,NULL,func3,(void *)&param);if(ret == 0){printf("main:create t3 successful\n");}printf("main:%ld\n",(unsigned long)pthread_self());pthread_join(t1,NULL);pthread_join(t2,NULL);pthread_join(t3,NULL);pthread_mutex_destroy(&mutex);return 0;
}

输出结果:
在这里插入图片描述

5、互斥锁限制共享资源的访问

实现功能:当全局变量g_data等于3时,线程t1退出

//Test3.c
#include<stdio.h>
#include<pthread.h>#include <unistd.h>
#include<stdlib.h>//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
int g_data = 0;
pthread_mutex_t mutex;void *func1(void *arg)
{	printf("t1:%ld thread is create\n",(unsigned long)pthread_self());printf("t1:param is %d\n",*((int *)arg));pthread_mutex_lock(&mutex);while(1){printf("t1:%d\n",g_data++);sleep(1);if(g_data == 3){pthread_mutex_unlock(&mutex);printf("t1 quit==============\n");//pthread_exit(NULL);exit(0);}}
}
void *func2(void *arg)
{printf("t2:%ld thread is create\n",(unsigned long)pthread_self());printf("t2:param is %d\n",*((int *)arg));while(1){              printf("t2:%d\n",g_data);pthread_mutex_lock(&mutex);g_data++;pthread_mutex_unlock(&mutex);sleep(1);}
}int main()
{int ret;int param = 100;pthread_t t1;pthread_t t2;pthread_mutex_init(&mutex,NULL);int *pret = NULL;ret = pthread_create(&t1,NULL,func1,(void *)&param);if(ret == 0){printf("main:create t1 successful\n");}	ret = pthread_create(&t1,NULL,func2,(void *)&param);if(ret == 0){printf("main:create t2 successful\n");}while(1){printf("main:%d\n",g_data);sleep(1);}pthread_join(t1,NULL);pthread_join(t2,NULL);pthread_mutex_destroy(&mutex);return 0;
}

输出结果:
在这里插入图片描述

6、什么情况造成死锁

如果线程试图对同一个互斥量加锁两次,那么它自身就会陷入死锁状态,但是使用互斥量时,还有其他不太明显的方式也能产生死锁。例如,程序中使用一个以上的互斥量时,如果允许一个线程–直占有第一个互斥量,并且在试图锁住第二个互斥量时处于阻塞状态,但是拥有第二个互斥量的线程也在试图锁住第一个互斥量。因为两个线程都在相互请求另一个线程拥有的资源,所以这两个线程都无法向前运行,于是就产生死锁

//Test4.c
#include<stdio.h>
#include<pthread.h>
#include <unistd.h>
#include<stdlib.h>//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
int g_data = 0; //定义一个全局变量
pthread_mutex_t mutex1;
pthread_mutex_t mutex2;void *func1(void *arg)
{	pthread_mutex_lock(&mutex1);pthread_mutex_lock(&mutex2);	
}
void *func2(void *arg)
{pthread_mutex_lock(&mutex2);pthread_mutex_lock(&mutex1);
}int main()
{int ret;int param = 100;pthread_t t1;pthread_t t2;//创建两个互斥锁pthread_mutex_init(&mutex1,NULL);pthread_mutex_init(&mutex2,NULL);int *pret = NULL;ret = pthread_create(&t1,NULL,func1,(void *)&param);if(ret == 0){printf("main:create t1 successful\n");}	ret = pthread_create(&t2,NULL,func2,(void *)&param);if(ret == 0){printf("main:create t2 successful\n");}pthread_join(t1,NULL);pthread_join(t2,NULL);pthread_mutex_destroy(&mutex1);pthread_mutex_destroy(&mutex2);return 0;
}

输出结果:

可以看出程序卡住了

在这里插入图片描述

7、线程条件控制实现线程的同步

//Test5.c
#include<pthread.h>
#include <unistd.h>
#include<stdlib.h>
#include<stdio.h>
//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
int g_data = 0;
pthread_cond_t cond;
pthread_mutex_t mutex;void *func1(void *arg)
{	while(1){pthread_cond_wait(&cond,&mutex);	printf("t1 run==============\n");printf("t1:%d\n",g_data);g_data = 0;sleep(1);}
}
void *func2(void *arg)
{while(1){              printf("t2:%d\n",g_data);pthread_mutex_lock(&mutex);g_data++;if(g_data == 3){pthread_cond_signal(&cond);}pthread_mutex_unlock(&mutex);sleep(1);}
}int main()
{int ret;int param = 100;pthread_t t1;pthread_t t2;pthread_mutex_init(&mutex,NULL);pthread_cond_init(&cond, NULL);ret = pthread_create(&t1,NULL,func1,(void *)&param);ret = pthread_create(&t2,NULL,func2,(void *)&param);pthread_join(t1,NULL);pthread_join(t2,NULL);pthread_mutex_destroy(&mutex);pthread_cond_destroy(&cond);return 0;
}

输出结果:
在这里插入图片描述

二、往期文章

1、入门Linux系统编程–文件
2、入门Linux系统编程–进程
3、入门Linux系统编程–线程
4、入门Linux系统编程–进程间通信
5、入门Linux系统编程–网络编程

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

相关文章

  1. Scala并发编程(二)之 Akka

    Scala并发编程之 Akka概述Akka通信过程Actor Path入门案例定时任务案例两个进程之间的通信案例简易版 Spark通信框架实现案例概述 Akka是使用 Scala开发的库, 它是基于事件驱动的, 用于构建高并发项目的工具包 Akka特性: 提供基于异步非阻塞, 高性能的事件驱动编程模型内置容错…...

    2024/4/18 5:20:01
  2. Android IOCore(文件操作)

    GitHub - IOCore Android文件操作工具&#xff0c;此工具采用沙盒安全模式&#xff0c;不要设置传统存储模式。 在Android11以后强制采用沙河模式&#xff0c;不再支持传统存储模式&#xff0c;采用java编写&#xff0c; 因为考虑kotlin和java语言都能调用&#xff0c;kotlin工…...

    2024/5/6 16:17:15
  3. 研发管理之管道管理

    管道和管道管理的概念 为了便于理解研发管道和管道管理&#xff0c;举个用管道传输液体的例子。 同样的管道&#xff0c;同样的环境&#xff0c;传递不同的物质即负载&#xff0c;比如分别传输汽油、水和水银&#xff0c;在同等时间内&#xff0c;通过管道的液体质量是不一样…...

    2024/4/19 14:59:23
  4. 【python零基础入门】不会Python的你,正在失去核心竞争力

    在我看来&#xff0c;基本上可以不负责任的告诉你&#xff0c;Python 可以做任何事情。无论是从入门级选手到专业级选手都在做的爬虫&#xff0c;还是 Web 程序开发、桌面程序开发还是科学计算、图像处理&#xff0c;Python 都可以胜任。或许是因为这种万能属性&#xff0c;周围…...

    2024/4/13 5:34:28
  5. 【java笔记】类与对象(定义,创建,使用,标准的类)

    目录 类与对象的定义&#xff1a; 类&#xff1a; 对象&#xff1a; 类的定义&#xff1a; 创建对象&#xff1a; 封装性&#xff1a; private的使用 this关键字&#xff1a; 构造方法&#xff1a; 定义一个标准的类&#xff1a; 面向过程&#xff1a; 当需要实现一个…...

    2024/4/13 5:34:28
  6. set-hdu2094“产生冠军”

    set容器&#xff1a; set 容器内的元素会被自动排序&#xff0c;set 与 map 不同&#xff0c;set 中的元素即是键值又是实值&#xff0c;set 不允许两个元素有相同的键值。不能通过 set 的迭代器去修改 set 元素&#xff0c;原因是修改元素会破坏 set 组织。当对容器中的元素进…...

    2024/5/6 5:13:58
  7. 最新全国省市区县乡镇街道行政区划数据提取(2022年)

    文章目录最新版通用json格式文件提取最新版多级联动js版数据代码提取最新版数据导入数据库数据的一些要注意的地方省市区县乡镇坐标、矢量边界数据AreaCity 开源库整理了省、市、区县、乡镇街道四级行政区划数据&#xff0c;配套了在线工具转换成三级、四级联动JavaScript代码&…...

    2024/4/8 19:12:52
  8. 【力扣刷题】136.只出现一次的数字(python)

    题目简述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a; 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&#xff1f; 示例 1&#xff1a; 输入: [2,…...

    2024/5/6 5:54:35
  9. linux查询命令相关

    1. find find 搜索范围 选项 示例&#xff1a; find home/ -name xxx.txt 表示在home目录下按名字查找名字为xxx.txt的文件 find home/ -user xxx.txt 表示在home目录下查找用户名称为xxx.txt 的文件 find home/ -size 10M find home/ -size -10M find home/ -size…...

    2024/4/13 5:34:08
  10. pancake土狗机器人V2(代码已优化)

    科学抢跑机器人pancakeswap夹子机器人最新详细教程_m0_66360055的博客-CSDN博客pancakeswap机器人&#xff0c;冲土狗必备。https://blog.csdn.net/m0_66360055/article/details/122899155代码已修改优化。data&#xff1a;2.12 优化了gas的燃烧&#xff0c;新版V2代码优先级更…...

    2024/4/13 5:34:18
  11. 关于IDEA中文乱码的解决办法

    先说我遇到的问题&#xff0c;我在部署tomcat9时控制台System.out.println(“中文”)时乱码--------- 1.–> log4j的logger.info()控制台打印乱码 和 system.out.println()控制台打印乱码 解决方法为 配置Tomcat VM options值为&#xff1a;-Dfile.encodingUTF-8 但是 这是…...

    2024/4/19 18:03:44
  12. 蓝桥杯物联网基础图文教程——GPIO输入按键控制LD5亮灭

    蓝桥杯物联网基础图文教程——GPIO输入按键控制LD5亮灭 蓝桥杯物联网基础图文教程——GPIO输出控制LD5亮灭 &#xff08;本系列教程针对一些有stm32基础的同学&#xff0c;需要参加蓝桥杯物联网竞赛的&#xff0c;对HAL库感兴趣的同学提供参考&#xff0c;本文不再详细赘述关于…...

    2024/4/16 21:28:29
  13. idea的替换快捷键

    替换&#xff1a;有全局替换 和 当前文件内容替换 全局&#xff1a;ctrl shift r: 在路径中替换,指的是在选定的目录下或者类包下,查找要被替换的字符。 当前文件内容&#xff1a;ctrl r: 当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件。 一、…...

    2024/4/13 5:34:28
  14. renpy 对话框的人物头像缩放处理

    image side cha_zhujue: zhujue_cartoon.png zoom 0.7...

    2024/4/18 9:11:52
  15. JVM调优工具

    Jmap 此命令可以用来查看内存信息&#xff0c;实例个数以及占用内存大小 dump 堆内存信息 jvisualvm 命令工具导入该dump出来的文件进行分析 检测死锁 可以远程连接&#xff0c;需要启动时加-Dcom.sun.management.jmxremote.port 为远程机器的JMX端口 Jstack 查死锁 …...

    2024/4/16 3:05:23
  16. 一定要努力加油

    今天看到一个朋友的留言整理&#xff0c;觉得他说的挺好的&#xff0c;遇到事情不要棋类&#xff0c;要努力加油&#xff0c;最终会成为自己想要的样子。...

    2024/4/16 20:32:53
  17. RDKit | 基于RDKit探索化学空间-smiles悬停

    环境 Win10RDKit2021.09.2Python=3.7基于RDKit探索化学空间-smiles悬停 导入库 import sys import os import pandas as pd import numpy as np import altair as altfrom rdkit import Chem from rdkit import rdBase from rdkit.Chem import AllChem from rdkit.Chem import…...

    2024/4/19 16:02:05
  18. 今天睡眠质量84分

    今天回来比较早&#xff0c;但是朋友有事情了&#xff0c;陪聊到了2点多了&#xff0c;睡得晚了&#xff0c;不过今天早起来的时候&#xff0c;看睡眠质量记录有84分&#xff0c;还可以的。...

    2024/4/18 2:52:05
  19. 大工21秋《发电厂电气部分》在线作业3 【标准答案】

    工21秋《发电厂电气部分》在线作业3 试卷总分:100?得分:100 一、单选题(共10道试题,共50分) 1.有关中性点的消弧线圈的说法错误的是()。 A.可调电感线圈 B.电阻很小 C.与电抗无关 D.电抗很大 答案: 2.有关大接地电流系统的特点说法错误的是()。 A.破坏了系统动态稳定 B.增加了…...

    2024/4/18 8:25:06
  20. 冲土狗必备机器人10倍BNB不是梦

    昨天翻到的一篇博文&#xff0c;已经部署完毕。收益可观 科学抢跑机器人pancakeswap夹子机器人最新详细教程_m0_66360055的博客-CSDN博客pancakeswap机器人&#xff0c;冲土狗必备。https://blog.csdn.net/m0_66360055/article/details/122899155大家一起冲起来&#xff01;...

    2024/4/15 6:55:37

最新文章

  1. 【PyTorch】7-生态简介

    PyTorch&#xff1a;7-生态简介 注&#xff1a;所有资料来源且归属于thorough-pytorch(https://datawhalechina.github.io/thorough-pytorch/)&#xff0c;下文仅为学习记录 7.1&#xff1a;torchvision 7.1.1&#xff1a;简介 The torchvision package consists of popula…...

    2024/5/6 16:49:35
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/6 9:38:23
  3. 二分类模型来解决多分类问题

    目录 1. One-vs-Rest (OvR) 策略2. One-vs-One (OvO) 策略3. Error-Correcting Output Codes (ECOC) 1. One-vs-Rest (OvR) 策略 One-vs-Rest&#xff0c;也称为 One-vs-All&#xff0c;是将多分类问题分解为多个二分类问题的一种方法。对于有 ( N ) 个类别的多分类问题&#…...

    2024/5/4 7:37:46
  4. WPS二次开发专题:WPS SDK实现文档打印功能

    作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 在办公场景或者家教场景中经常碰到需要对文档进行打印…...

    2024/5/1 13:31:33
  5. 不重复数字

    map就感觉很舒服 题目描述 给定 n 个数&#xff0c;要求把其中重复的去掉&#xff0c;只保留第一次出现的数。 输入格式 本题有多组数据。 第一行一个整数 T&#xff0c;表示数据组数。 对于每组数据&#xff1a; 第一行一个整数 n。 第二行 n 个数&#xff0c;表示给定的数。…...

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

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

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/4 23:54:56
  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/6 9:21:00
  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/4 23:55:16
  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/4 23:55:06
  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/4 23:55:01
  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