当前位置: 首页 > news >正文

【Linux】开发工具

这篇文章主要涉及sudo指令进行提权的方法,gcc/g++的使用并且提及了一些make、makefile

sudo指令

在前几篇文章中,我们先后了解了对于不同的角色来说,可以进行不同的操作,而对于新建的普通用户是不能进行权限提升的,这是由于新用户还没有添加到信任白名单(sudoers file)中。

查看信任白名单的属性,可以发现user以及other都是root,这也就规定了修改这个白名单的人只能是root账户,也就是管理员。

下面进入roor账户,在信任白名单中添加新的用户。 

进入vim编辑器。

找到与这种格式相同的,复制这行,并将新用户也设置成信任白名单里的人。

【注意】调出行号,使用set nu;复制yy;粘贴p。

然后wq!强制写入退出即可。这样我们的新建用户就可以进行sudo提权了。

简单测试之后,就可以知道新用户是可以使用sudo进行权限的提升了。

Linux编辑器——gcc/g++的使用

首先声明gcc与g++的使用是没有大的差别的,gcc只能编译C语言,g++建议只编译C++。

通过以上指令,简单测试了使用gcc编译c语言。

下面对gcc编译器进行详细的一个介绍:

背景知识

使用gcc进行编译的过程分为四个过程:

  1. 预处理(进行宏替换)
  2. 编译(生成汇编)
  3. 汇编(生成机器可识别代码)
  4. 链接(生成可执行文件或库文件)

预处理阶段

在预处理阶段,主要干下面这四个事情:

  • 去注释
  • 头文件展开
  • 宏替换
  • 条件编译

观察对比code.c文件与code.i文件,可以发现在预处理阶段,进行了头文件展开。

我们可以在原代码中添加一些信息,再进行对比。

通过对比,可以发现预处理阶段,去掉了注释,进行了头文件展开,宏替换。

问题:为什么能够在Windows或者Linux上进行C\C++或者其他形式的开发呢?

答:我们的系统中一定要提前或者后续安装上C/C++开发相关的头文件,原文件。C/C++开发环境不仅仅指的是vs,g++,gcc,更重要的是语言本身的头文件或库文件。

查看Linux下头文件的存储路径

其实类似于在安装vs2022的时候,选择对应的开发包,同步也在下载C语言的头文件和库文件,同时,C的头文件和库文件也在windows存在。

在预处理阶段,除了有上述内容以外,还需要验证条件编译。

我们先对原来的代码进行修改。

通过简单的debug模式的编译,可以测试条件编译。

问题:条件编译有什么用?

举个例子:软件有社区版(免费),也有专业版(付费)。对于提供这些软件的公司来所,需要写俩份代码吗?并不会,公司会根据不同的编译条件,裁剪掉社区版不需要的功能即可,这就是条件编译的场景。

编译阶段

编译阶段主要是生成汇编。

问题:预处理之后还是C语言吗?

是的,C语言变得更加干净了。

汇编阶段

汇编阶段生成机器可识别代码。

 

可以使用二进制查看工具查看代码

链接阶段

在链接阶段主要生成可执行代码或者库文件。

直接生成可执行代码

我们一般进行编译不会将.c文件分成四个阶段进行编译,而是使用默认直接形成可执行程序。

gcc code.c 默认直接形成可执行程序

gcc code.c -o code 如果需要命名,推荐使用这种方式

gcc -o code code.c

总结

预处理阶段(进行宏替换)

  • 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
  • 预处理指令是以#号开头的代码行
  • 例子:gcc -E code.c -o code.i
  • 选项-E,该选项的作用是让gcc在预处理结束后停止编译过程。
  • 选项-o,是指目标文件,.i 文件为已经预处理的C原始程序。

-E 告诉gcc,从现在开始进行程序的翻译,将预处理工作做完就结束。 

编译阶段(生成汇编)

  • 在这个阶段中,gcc首先要检查代码的规范性,是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
  • 用户可以使用-S选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
  • 例子:gcc -S code.i -o code.s

-S 告诉gcc,从现在开始进行程序的翻译,将编译工作做完就结束。

汇编阶段(生成机器可识别代码)

  • 汇编阶段是把编译阶段生成的.s文件转成目标文件
  • 在此可以使用选项-c就可以看到汇编代码已经转换为.o的二进制目标代码了
  • 例子:gcc -c code.c -o code.o

-C 告诉gcc,从现在开始进行程序的翻译,将汇编工作做完就结束。

code.o 可重定位目标二进制文件,简称目标文件——>Windows下的.obj文件,这种.o文件不能独立执行,虽然已经是二进制文件,需要经过链接才能执行。

链接(生成可执行文件或者库文件)

  • 在成功编译之后,就进入了链接阶段
  • 例子:gcc code.o -o code
  • 将可重定位目标二进制文件和库链接形成了可执行程序。

如何记忆?

键盘左上角——ESc(选项),镜像文件的后缀——iso(文件后缀)

讨论链接

库,给我们提供了方法的实现。就比如C语言的标准库——本质上就是一个文件,是由路径的。

函数库

我们的C程序中,并没有定义“printf”的函数实现,并且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么这些函数是在哪里实现printf函数的呢?

答:系统把这些函数实现都被做到名位libc.so.6的库文件中去了,在没有特别指定时,gcc会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到libc.so.6库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。

函数库一般分为静态库和动态库俩种。

  • 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但是在运行时也就不再需要库文件了。其后缀一般为“.a”.
  • 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为".so",如前面所述的libc.so.6,如前面所述的libc.so.6就是动态库。gcc在编译时默认使用动态库。完成链接之后,gcc就可以生成可执行文件。
  • gcc默认生成的二进制程序,是动态链接的,这点可以通过file命令验证。

Linux下的动、静态库后缀

.so(动态库),.a(静态库)

Windows下的动、静态库后缀

 .dll(动态库),.lib(静态库)

一般来说库都有自己的命名规则的:libname.so.XXX

我们的机器上,默认只会安装动态库,静态库默认是没有安装的。 编译型语言,安装开发包的时候,必定是下载安装对应的头文件,库文件。

方法的实现就是在库中,库其实就是把源文件(.c),经过一定的翻译,然后打包只给提供一个文件即可,不用给提供太多的源文件,也可以达到隐藏源文件的目的。

头文件提供方法的声明,库文件(不让我们做重复工作,站在巨人的肩膀)提供方法,再加上你的代码,就等于一款软件。 

gcc选项

  • -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面。
  • -S 编译到汇编语言不进行汇编和链接
  • -c 编译到目标代码
  • -o 文件输出到文件
  • -static 此选项对生成的文件采用静态链接
  • -g 生成调试信息。GNU调试器可利用该信息。
  • -shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库。
  • -O0
  • -O1
  • -O2
  • -O3 编译器的优化选项的四个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
  • -w 不生成任何警告信息
  • -Wall 生成所有警告信息

.o文件和库是如何链接的

1.动态链接与静态链接

举个例子:在张三的高中里面,没有娱乐设施,所以张三和他的同学一直偷偷拿手机,但是张三拿手机和别人不一样,他是为了方便学习才拿的手机,他是为了抄作业才拿的手机,但是在学校的旁边有一个小卖部,里面可以进行充电,张三和他的同学经常去小卖部进行充电。学校旁边又开了一个小卖部,他也准备开放充电服务,但是学生不买他的账,不去他那里充电,有一天学校领导发现了,就不让这个小卖部继续充电了,导致张三和他的朋友没法继续抄作业,后面的作业也没有办法进行了。

这里的小卖部就是动态库——共享库。

共享库只需要有一个就可以了。

动态库不能缺失,一旦对应的动态库缺失,影响的不止一个程序,可能导致很多程序都无法正常进行。

使用指令:ldd code 查看依赖的动态库

后面呢,小卖部不打算让学生充电了,开始给学生卖充电宝了。

而这个充电宝就类似于静态库。

在编辑器使用静态库进行静态链接的时候,会将自己的方法拷贝到目标程序中,改程序一会不用再依赖静态库。

2.验证

在Linux中,gcc在编译程序形成可执行程序,默认采用就是动态链接——提供动态库。

使用指令:gcc code.c -o code-static -static

这是形成静态链接,动态链接的内存小于静态链接的内存。

在Linux中,如果要按照静态链接的方式,进行形成可执行程序需要添加-static选项——提供静态库。

1.如果我们没有静态库,但是就要使用-static,行不行?不行

2.如果我们没有动态库,只有静态库,而且gcc能找到?能,gcc默认优先使用动态链接,-static的本质就是改变优先级。

3.形成的可执行程序不一定是纯的全部动态链接或者静态链接,可能是混合的。

-static的本质:要求所有的链接都变成静态链接。

执行指令:file code 查看执行程序是动态还是静态的。

3.动态、静态链接的优缺点?

动态链接

动态库因为是共享库,可以有效的节省资源(磁盘空间,内存空间,网络空间);但是动态库一旦缺失,导致各个程序都无法运行

静态链接

静态库不依赖库,程序可以独立运行;但是静态库体积大,比较消耗资源。

debug&&release

debug 可以被追踪,调试

因为形成的可执行程序的时候,添加了debug信息。

gcc code.c -o code -g

gcc code.c -o code-static-debug -static -g

证明是否添加了debug信息,readelf指令可以读取可执行程序对应的二进制的构成 

readelf -s code-debug

readelf -s code | grep -i debug

readelf -s code-debug | grep -i debug

make/makefile指令

make:是一条指令

makefile:是一个当前目录下的文件

先创建Makefle的一个文件,打开Makefile

第一行依赖关系,第二行依赖方法。

要创建,也需要清理:

 

先大概了解一些,后面再细细讲述。 

相关文章:

【Linux】开发工具

这篇文章主要涉及sudo指令进行提权的方法,gcc/g的使用并且提及了一些make、makefile sudo指令 在前几篇文章中,我们先后了解了对于不同的角色来说,可以进行不同的操作,而对于新建的普通用户是不能进行权限提升的,这是…...

网络通信基础:TCP/IP、UDP、三次握手、Socket与HTTP协议详解

在网络通信的世界中,TCP/IP、UDP、三次握手、Socket和HTTP协议是不可或缺的基本概念。它们构成了网络通信的基石,对于理解网络编程和设计网络应用程序至关重要。本文将详细介绍这些概念,帮助读者更好地理解网络通信的原理。 首先&#xff0c…...

(Python)前缀和

前缀和: 前缀和预先计算并存储一系列连续元素的总和,是一种优化技巧,提高算法效率。记录一个数组中各下标位置之前的所有元素的总和,本文对应下标的总和中不含对应下标元素本身。若有需要也可以对应下标记录的总和包含下标本身元…...

【Linux】-操作系统

🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:深入代码世界,了解掌握 Linux 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ​​ 一、冯•诺依曼架构&#xff…...

shell echo双引号和单引号区别

echo双引号"" var1"a" var2"b" echo -e "$var1\t$var2"输出: 使用双引号 "" 时,变量会被正确解析。 echo单引号‘’ var1"a" var2"b" echo -e $var1\t$var2输出: …...

嵌入式QT学习第3天:UI设计器的简单使用

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 Qt Creator 里自带的 Qt Designer,使用 Qt Designer 比较方便的构造 UI 界 面。 在 UI 文件添加一个按钮 左边找到 Push Button,然后拖拽到中…...

Nuxt.js 应用中的 render:response 事件钩子

title: Nuxt.js 应用中的 render:response 事件钩子 date: 2024/11/29 updated: 2024/11/29 author: cmdragon excerpt: render:response 是一个在 Nuxt.js 中与服务器端渲染(SSR)相关的钩子,它会在请求的响应发送之前被调用。这个钩子的目的是让开发者可以在响应发送之…...

Node报错:npm error code ETIMEDOUT

1、报错详细信息 npm error code ETIMEDOUT npm error syscall connect npm error errno ETIMEDOUT npm error network request to https://registry.npmjs.org/express failed, reason: connect ETIMEDOUT 104.16.1.35:443 npm error network This is a problem related to ne…...

领域驱动设计(DDD)模式深度剖析与 C# 实践

一、DDD 模式概述 领域驱动设计(Domain-Driven Design,简称 DDD)是一种软件开发方法论,旨在应对复杂业务领域的软件系统构建挑战。它强调以领域模型为核心,围绕业务领域中的关键概念、规则以及它们之间的关系来组织软…...

2024“蜀道山” RE 部分题解

Map_maze 题目描述 真真假假真真,你能够寻找到最后的终点吗? 附件下载 迷宫生成 v5 是一个长度为 105 的数组,被用作 15x15 的二维网格 int __cdecl sub_4010D0(_DWORD *a1, _DWORD *a2) {_DWORD *v2; // eax_DWORD *v3; // eaxint result; // eax_DWORD v5[1…...

composition

议论文 三个段落 第一段:2-3句话((1)引出背景(2)提出问题(3)过渡句) 第一段 (1)引出背景 As the giant leap of __(society,technology,education,culture,medical se…...

前端开发:构建高质量用户体验的全方位指南(含实际案例与示例)

前端开发:构建高质量用户体验的全方位指南(含实际案例与示例) 在当今数字化时代,前端技术不仅是网页和应用的门面,更是连接用户与数字世界的桥梁。一个高质量的前端开发项目不仅能够提升用户体验(UX&#…...

从Facebook的技术演进看社交媒体的未来趋势

在过去的二十年里,Facebook(现为Meta)从一个大学校园中的社交平台发展成了全球最大的社交媒体网络之一,成功塑造了人们交流、分享和消费信息的方式。作为社交媒体的巨头,Facebook的技术演进不仅推动了平台自身的发展&a…...

Linux下的wlan0控制

WIFI常用的两种模式:STA / AP 1. STA模式:客户端 嵌入式的系统下常常要手动配置wifi,和IP地址才能开始上网,关于STA模式下,常用的wifi配置工具有wpa_supplicant和轻量级的udhcpc客户端。 1.1wpa_supplicant 最小配置…...

常用循环依赖解决方案

常用循环依赖解决方案 Spring框架在4.3版本开始引入了对循环依赖的更好支持,但在此之前,Spring已经提供了一些机制来处理循环依赖。 实际上,Spring从一开始就提供了几种解决循环依赖的方法,只是在后续版本中对这些机制进行了优化…...

HTTPTomcatServlet

今日目标: 了解JavaWeb开发的技术栈理解HTTP协议和HTTP请求与响应数据的格式掌握Tomcat的使用掌握在IDEA中使用Tomcat插件理解Servlet的执行流程和生命周期掌握Servlet的使用和相关配置1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览…...

instanceof运算符

而instanceof可以精准判断数据类型...

Conda 管理python开发环境

同步发布于我的网站 🚀 故事起因: 在公司使用Requests多任务并行开发时遇到了问题,使用 ProcessPoolExecutor 时不能正常发出网络请求,会卡在网络请求发不出去,但是善于用 ThreadPoolExecutor 时是可以的,纠结了很久,一…...

uniapp关闭sourceMap的生成,提高编译、生产打包速度

警告信息:[警告⚠] packageF\components\mpvue-echarts\echarts.min.js 文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理,手机端使用过大的js库影响性能。 遇到问题:由于微信小程序引入了mpvue-echarts\echarts.min.js&…...

服务器挖矿

文章目录 一、确定挖矿进程并停止二、查找并清除挖矿相关文件三、检查并修复系统漏洞四、加强安全防护 一、确定挖矿进程并停止 查找挖矿进程 在Linux系统中,可以使用命令如top或htop来查看系统资源占用情况。挖矿程序通常会占用大量的CPU或GPU资源。例如&#xff…...

Flink双流Join

在离线 Hive 中,我们经常会使用 Join 进行多表关联。那么在实时中我们应该如何实现两条流的 Join 呢?Flink DataStream API 为我们提供了3个算子来实现双流 join,分别是: join coGroup intervalJoin 下面我们分别详细看一下这…...

.net XSSFWorkbook 读取/写入 指定单元格的内容

方法如下&#xff1a; using NPOI.SS.Formula.Functions;using NPOI.SS.UserModel;using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;/// <summary>/// 读取Excel指定单元格内容/// </summa…...

【VUE3】【Naive UI】<NCard> 标签

【Vue3】【Naive UI】 标签 title 属性bordered 属性header-style 和 body-style 属性footer 属性actions 属性hoverable 属性loading 属性size 属性type 属性cover 和 avatar 属性description 属性style 属性 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】…...

喜欢发光的自己

Music: 听见下雨的声音 想着写点什么吧...从哪开头好呢&#xff1f;... 好像有很多话想记录下来&#xff0c;但又不知道从哪开头 自上次写博客至现在已经有段时间了。 最近还发生了挺多事&#xff0c;自己的身体又将面临一次考验... 有颗蛀牙&#xff0c;但莫名奇妙的是里…...

mfc110u.dll是什么意思,mfc110u.dll丢失解决方法大全详解

mfc110u.dll是Microsoft Foundation Classes (MFC)库的一个特定版本&#xff08;版本11.0&#xff09;的Unicode动态链接库文件。MFC是Microsoft为C开发者设计的一个应用程序框架&#xff0c;主要用于简化Windows应用程序的开发工作。这个框架封装了很多Windows API函数&#x…...

制片人欧阳行远:引领独立电影斩获国际殊荣

随着全球电影市场对独特叙事和多元化题材的需求持续高涨,独立电影再次成为业内外讨论的焦点,尤其是聚焦亲情、成长经历和女性视角的影片,在国际影坛掀起了一股热潮。这一趋势的形成,离不开一些杰出短片的奠基作用,而欧阳行远作为执行制片人,凭借敏锐的行业嗅觉和出色的制作能力…...

《C++ Primer Plus》学习笔记|第7章-函数——C++编程模块 (未完结)

文章目录 7.1 函数的基本知识7.1.1 定义函数7.1.2 函数原型和函数调用 7.2 函数参数和按值传递7.3 函数与数组7.3.5 指针与const7.4 函数和二维数组 7.10 函数指针1. 函数的地址2. 声明函数指针3&#xff0e;使用指针来调用函数 7.12 复习题1&#xff0e; 使用函数的3个步骤是什…...

C/C++ 数据结构与算法【线性表】 顺序表+链表详细解析【日常学习,考研必备】带图+详细代码

1&#xff09;线性表的定义 线性表&#xff08;List&#xff09;&#xff1a;零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an}&#xff0c;假设每个元素的类型均为DataType。其中&#xff0c;除第一个元素a1外&#xff0c;每一个元素有且只有一个直接前驱元素…...

详细说说 JDK 的线程池的创建参数

文章目录 1. 概要2. 线程的核心参数2.1.核心线程和最大线程2.2.任务队列2.2.1.ArrayBlockingQueue2.2.2.LinkedBlockingQueue2.2.3.SynchronousQueue2.2.4.PriorityBlockingQueue2.2.5.DelayQueue2.2.7.LinkedBlockingDeque 2.3 keepAliveTime2.4 ThreadFactory2.5 拒绝策略 3.…...

惠普电脑切换默认F1至F12快捷键,FN切换

发现新买的惠普电脑&#xff0c;按F1至F12发现是快捷功能键&#xff0c;而按fnF1至F12才是windows的功能键和正常我自己使用的电脑刚好相反&#xff0c;实在太不方便了。 解决办法需要进入biso里面去把功能键模式选中给关掉&#xff0c;才能恢复回来...

RabbitMQ在手动消费的模式下设置失败重新投递策略

最近在写RabbitMQ的消费者&#xff0c;因为业务需求&#xff0c;希望失败后重试一定次数&#xff0c;超过之后就不处理了&#xff0c;或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的&#xff0c;问了kimi&#xff0c;按它的方法配置之后&#xff0c;发…...

[巅峰极客 2021]签到

[巅峰极客 2021]签到 给了我们好多表情&#xff0c;真的是一脸懵逼 注意给我们的关键词 GAME 现在还不知道是什么意思我们去试着解开一下 用这个emoji表情解密器&#xff0c;这里我找了好久才找到一个 emoji-aes 这里的Key值就是GAME 运行后出现flag NSSCTF{10ve_4nd_Peace…...

CrystalDiskInfo:硬盘健康监测工具简介和下载

原论坛给你更好的阅读体验&#xff1a;CrystalDiskInfo&#xff1a;硬盘健康监测工具简介和下载 | 波波论坛 引言 在日常使用电脑时&#xff0c;硬盘的健康状态对于系统的稳定性和数据的安全性至关重要。硬盘出现故障可能会导致数据丢失&#xff0c;严重时甚至会使整个系统无…...

循环神经网络(RNN)详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

vue基础之3:模板语法、数据绑定

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…...

Ubuntu通过脚本启动多个可执行文件

Ubuntu通过脚本启动多个可执行文件 在 Ubuntu 中&#xff0c;可以通过一个脚本启动多个可执行文件&#xff0c;同时支持顺序执行、并行执行或特定条件下的执行。以下是实现的详细方法&#xff1a; 1. 创建脚本文件 首先&#xff0c;创建一个脚本文件&#xff0c;例如 start_p…...

【C++】LeetCode:LCR 026. 重排链表

题干 LCR 026. 重排链表 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值&#xff0c;而是需要实…...

文档加密怎么做才安全?

公司的文档包含很多机密文件&#xff0c;这些文件不仅关乎公司的核心竞争力&#xff0c;还涉及到客户隐私、商业策略等敏感信息。因此&#xff0c;文档的保管和传递一直是我们工作的重中之重。 为了确保机密文件的安全&#xff0c;公司需要制定了一系列严格的保密措施。从文件的…...

CTF之WEB(php弱类型绕过)

PHP 的弱类型特性有时会导致意外的行为&#xff0c;特别是在类型比较时。这些特性可以被利用来绕过一些预期的安全检查。以下是一些常见的 PHP 弱类型绕过技巧及其解释&#xff1a; 类型介绍 1. 类型比较 ( vs ) 在 PHP 中&#xff0c; 是松散比较&#xff0c;而 是严格比较…...

Java ConcurrentHashMap

Java Map本质不是线程安全的&#xff0c;HashTable和Collections同步包装器&#xff08;Synchronized Wrapper&#xff09;在并发场景下性能低。Java还为实现 Map 的线程安全提供了并发包&#xff0c;保证线程安全的方式从synchronize简单方式到精细化&#xff0c;比如Concurre…...

力扣162:寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(…...

网络设备配置指南:交换机、路由器与防火墙的基础配置与管理

在现代网络管理中,交换机、路由器和防火墙是不可或缺的关键设备。掌握这些设备的基本配置与管理,对于确保网络的稳定性、安全性和高效性至关重要。本文将详细介绍交换机、路由器和防火墙的基础配置与管理,并通过代码示例和图示来帮助读者更好地理解和应用。 一、交换机的基…...

parallelStream并行流使用踩坑,集合安全

parallelStream并行流使用踩坑 parallelStream介绍 parallelStream实现的是多线程处理从而实现并行流&#xff0c;相较于stream的单行流处理数据的速度更快&#xff0c;看一下其源码会发现parallelStream是使用线程池ForkJoin来调度的。 而ForkJoinPool的默认线程数是CPU核数 …...

清远榉之乡托养机构探讨:自闭症的本质辨析

当人们谈及自闭症时&#xff0c;常常会产生一个疑问&#xff1a;自闭症是精神类疾病吗&#xff1f;今天&#xff0c;清远榉之乡托养机构就来为大家解开这个疑惑。 榉之乡大龄自闭症托养机构在江苏、广东、江西等地都有分校&#xff0c;一直致力于为大龄自闭症患者提供专业的支持…...

音视频入门基础:MPEG2-TS专题(10)——PAT简介

一、引言 当某个transport packet的TS Header中的PID属性的值为0x0000时&#xff0c;该transport packet的payload为Program association table &#xff0c;即 PAT表。PAT表包含所有PMT表的目录列表&#xff0c;将program_number和PMT表的PID相关联&#xff0c;获取数据的起始…...

wordpress网站首页底部栏显示网站备案信息

一、页脚文件footer.php 例如&#xff0c;wordpress主题使用的是simple-life主题&#xff0c;服务器IP为192.168.68.89,在wordpress主题文件中有个页脚文件footer.php&#xff0c;这是一个包含网站页脚代码的文件。 footer.php 路径如下&#xff1a; /www/wwwroot/192.168.68…...

SOLIDWORKS英文,怎么修改成中文

SOLIDWORKS英文&#xff0c;怎么修改成中文 打开控制面板里的程序 选择程序与功能 找到SOLIDWORKS&#xff0c;选择并点击上方 “更改” 在跳出来的更改页面&#xff0c;选择“简体中文” 点击SOLIDWORKS界面上小齿轮&#xff0c;进入设置 取消勾选English两个相关设置 重启SO…...

简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署

在node18环境下&#xff0c;用react18创建qiankun主应用和两个子应用&#xff0c;react路由用V6版本&#xff0c;都在/main路由下访问子应用&#xff0c;用Dockerfile部署到腾讯云CentOS7.6服务器的8000端口进行访问&#xff0c;且在部署过程中进行nginx配置以进行合理的路由访…...

等保三级安全架构设计方案

一、概述 等保三级&#xff0c;全称为“信息系统安全等级保护三级”&#xff0c;是根据信息安全保护的需求&#xff0c;将系统的安全保护划分为五个等级中的第三级&#xff0c;主要针对相对重要的信息系统进行保护。根据《信息系统安全等级保护基本要求》&#xff08;GB/T 222…...

【Stable Diffusion】安装教程

目录 一、python 安装教程 二、windows cuda安装教程 三、Stable Diffusion下载 四、Stable Diffusion部署&#xff08;重点&#xff09; 一、python 安装教程 &#xff08;1&#xff09;第一步下载 打开python下载页面&#xff0c;找到python3.10.9&#xff0c;点击右边…...