Linux进程学习【环境变量】进程优先级
进程优先级的基本概念
在 Linux 中,每个进程都有一个优先级,操作系统根据这个优先级来决定进程的执行顺序。优先级越高,进程的执行就越频繁。通常,进程优先级是由以下两个部分构成:
-
静态优先级(PRI):
-
这是进程在系统启动时设置的优先级,通常是一个数字值,范围在 0 到 139 之间。较低的数字代表较高的优先级,反之亦然。
-
默认情况下,大多数进程的优先级值为 80。优先级越低,表示该进程的优先级越高。
-
-
动态优先级(NI):
-
NI(nice value) 是一个动态调整值,通常范围为 -20 到 19。较低的值表示较高的优先级,较高的值表示较低的优先级。
nice
值决定了进程优先级的调整幅度。 -
例如,如果一个进程的
nice
值为 -10,它的优先级比默认值 80 高。而如果nice
值为 10,它的优先级则较低。
-
CPU 资源是有限的,需要合理分配
Linux
给我们提供了修改进程
优先级的权限,目的就是让我们对多任务运行进行合理处理,提高系统运行效率
我们可以通过 ps
指令查看进程优先级情况
//注:其中的 myfile 是可执行程序名
$ ps -al | head -1 && ps -al | grep myfile //查看进程优先级信息
🖋️优先级修改
进程优先级
可以被修改,但很少有人会主动修改
修改步骤
- 输入
top
指令进入任务管理器 - 输入
r
进入修改模式 - 再根据想要修改的进程,输入
PID
- 最后输入
NI
值,完成修改
注意:
NI
值区间为[-20, 19]
,设置时超出部分无效- 修改优先级时,
最终优先级
=初始优先级
+NI值
,优先级的修改行为并不是连续的,每次都是在最开始的基础上进行修改(默认为 80) - 调度器不允许存在
优先级失衡
的情况,因此优先级修改不能太激进。
下面来简单小结一下进程的特点
- 竞争性:CPU 资源有限,
进程
间存在竞争 - 独立性:
进程
是相互独立运行的,互不干扰 (重要) - 并行:多个
进程
可以在多个 CPU 上同时运行 - 并发:在一个 CPU 下采用
进程
切换的方式运行多个进程
什么是环境变量?
环境变量(Environment Variables)是操作系统用来存储系统配置信息的变量,它们决定了操作系统和程序的运行环境。简单来说,环境变量存储了影响系统运行的一些关键信息,例如系统路径、用户信息、程序配置等。它们对程序的运行至关重要,尤其是在编译、运行及配置程序时。
一般是指在操作系统中用来指定操作系统运行环境的一些参数。
例如在编译程序时,我们是不关心动态库位于什么地方,编译器链接时也只需要通过对应的 环境变量 就能找到动态库进行链接.
环境变量 有着自己的特殊用途,还有有些具有全局属性,可以供所有 进程 共享。
环境变量 有很多个,把它们聚在一起管理,就构成了 环境变量列表
环境变量列表 中的常见 环境变量:
- PATH 系统命令搜索路径
- USER 当前用户名
- PWD 当前所处路径
我们可用通过指令 echo $NAME
查看当前环境变量信息(NAME
指环境变量名)
//比如查看用户信息
$ echo $USER
$ env
🖋️环境变量列表
下面来看看 环境变量列表
长什么样
通过指令查看
$ env
也可以通过
set
指令查看 环境变量表
,不过 set
指令显示的内容比 env
多得多,因为 set
还会显示 本地环境变量
信息
$ set //显示更加丰富的环境变量表
- Linux 中的各种指令都是用 C语言 编写的程序,所以:运行指令 == 运行程序
- PATH 环境变量中有存储各种指令(程序)的路径,当我们直接输入指令时,OS会根据 PATH 提供的路径搜索程序,找到了就会直接运行对应指令(程序)
- 而我们自己编写的程序则是需要通过 ./可执行程序 的方式运行,因为此时路径不被包含在 PATH 变量中。
- 总之:PATH 存储路径中若包含程序,可以直接通过程序名运行程序这就是各种指令,如 ls、pwd、touch 的运行原理。
我们可以通过这一特性,将自己的可执行程序路径添加到 PATH
变量中
//注意:路径为绝对路径
//不能写成 export PATH=路径 这样会把所有指令都覆盖
$ export PATH=$PATH:/home/Yohifo/linux/Explore/code/Test_2_21
现在可以像指令一样直接运行程序
注意: 普通用户添加的环境变量只有本次登录有效,下次再登录时,环境变量列表会被重置
普通用户修改 环境变量列表 没什么大问题,但 root 需要谨慎了,避免造成严重后果
1. 普通用户的环境变量生效位置
普通用户设置的环境变量,如果你想让它们在 每次登录 或 每次启动操作系统时 都生效,必须把环境变量添加到正确的配置文件中。比如:
~/.bashrc
:适用于 非登录 shell,在打开终端时加载。
~/.bash_profile
或~/.profile
:适用于 登录 shell,在登录操作系统时加载(例如 SSH 登录)。如果你只在某个文件(如
~/.bashrc
)中设置了环境变量,并且没有在 登录时加载 它,那么下次你打开 SSH 或重新登录操作系统时,环境变量就不会生效。2. 问题分析:环境变量没有在重新启动后生效
如果你在
~/.bashrc
中设置了环境变量,但它在 下次登录 或 操作系统重新启动后 没有生效,这可能是由于以下原因:
~/.bashrc
只会在打开新的终端会话时生效,并且 不会在登录时自动加载。在 SSH 登录时,默认情况下只会加载~/.bash_profile
或~/.profile
,而~/.bashrc
需要显式地通过~/.bash_profile
来加载。如果你只在
~/.bashrc
中添加了环境变量,而没有在~/.bash_profile
中引用它,登录操作时,~/.bashrc
就不会被加载,导致环境变量没有生效。
除此之外,我们还可以把程序写在 /usr/bin 目录下,此时也是可以直接通过程序名运行程序的
如上就是安装、卸载应用原理
🖋️添加环境变量
shell
可以读取到命令和命令行,我们可以直接通过命令的方式添加 环境变量
先来看看比较简单的 本地变量
添加
环境变量表
具有全局属性,可以供所有子进程共享,倘若我们不想让 环境变量
被共享,可以设置 本地变量
$ TEST=private //可以直接在命令行中添加本地变量
现在的 TEST
环境变量是不被子进程共享的
如果想删除已经设置的 本地环境变量
,可以通过 unset NAME
移除设置
$ unset TEST //移除已设置的本地环境变量
想让 TEST
进入 环境变量表
也很简单,只需要加上关键字 export
$ export TEST=public //此时环境变量已进入环境变量表
🖋️获取环境变量
🖋️三个参数
main 函数中有三个参数,分别是:
- int argc 传入程序中的元素数,./程序名 算一个
- char* argv[] 传入程序中的元素表,由 bash 制作,传给 main 函数
- char* envp[] 环境变量表,所谓全局性就是指 main 函数可以通过此参数获取到环境变量表的信息
1. 通过 environ
全局变量获取环境变量
environ
是一个全局变量(char**
类型),它是一个指向环境变量列表的指针数组。这个列表包含了所有环境变量的字符串,每个字符串以 KEY=VALUE
的格式存储。
例如,如果你要查看系统的环境变量,可以通过遍历 environ
来实现:
#include <iostream>
#include <cstdlib> // 需要引用 stdlib.husing namespace std;extern char** environ; // 声明 environ,全局环境变量指针int main(int argc,char* argv[] ,char* envp[]) {int pos = 0;cout << argv[pos] << endl;while (environ[pos] != nullptr) { // environ 是一个以 NULL 结束的数组cout << environ[pos] << endl; // 输出每个环境变量pos++;}return 0;
}
解释:
默认会有一个参数就是文件名字符串。
-
environ
是一个指向char*
的数组,数组中的每个元素是一个环境变量。 -
每个环境变量以
KEY=VALUE
形式存在,因此你可以通过遍历environ
来查看所有环境变量。
2. 通过 getenv()
函数获取单个环境变量
getenv()
是标准 C 库提供的一个函数,它可以用来获取单个环境变量的值。这个函数非常常见,通常用于获取常用的环境变量,比如当前工作目录 (PWD
)、用户名称 (USER
) 等。
#include <iostream>
#include <cstdlib> // 需要引用 stdlib.husing namespace std;int main() {// 获取当前工作目录const char* pwd = getenv("PWD");if (pwd != nullptr) {cout << "当前目录: " << pwd << endl;} else {cout << "环境变量 PWD 不存在" << endl;}// 获取当前用户名const char* user = getenv("USER");if (user != nullptr) {cout << "当前用户名: " << user << endl;} else {cout << "环境变量 USER 不存在" << endl;}return 0;
}
解释:
-
getenv("VARIABLE_NAME")
返回环境变量的值,如果指定的环境变量不存在,则返回nullptr
。 -
这种方式适用于你只关心某一个环境变量的情况。
3. 通过 main
函数中的 envp[]
获取环境变量
在 C 或 C++ 程序中,main
函数通常可以接收三个参数,其中第三个参数是 envp[]
,它是一个指向环境变量的指针数组。和 environ
类似,envp[]
也是一个数组,每个元素都是一个 KEY=VALUE
的字符串。
#include <iostream>
#include <cstdlib> // 需要引用 stdlib.husing namespace std;int main(int argc, char* argv[], char* envp[]) {// 输出环境变量int pos = 0;while (envp[pos] != nullptr) {cout << envp[pos] << endl; // 输出每个环境变量pos++;}return 0;
}
解释:
-
envp[]
是一个指向字符串的数组,数组中的每个字符串也是一个环境变量。 -
这种方式和
environ
很相似,但是它通过main
函数的参数传递,更加灵活。
结论
获取环境变量在 Linux 系统中非常常见,尤其是在编写需要根据环境配置的程序时。你可以通过以下三种方式来获取环境变量:
-
environ
:直接访问全局环境变量。 -
getenv()
:获取单个环境变量的值。 -
envp[]
:通过main
函数的参数获取环境变量。
这些方法各有适用场景,具体使用哪种方式取决于你的需求。如果你想获取所有环境变量,environ
或 envp[]
是更方便的选择;如果你只需要某个特定环境变量的值,getenv()
是最直接的方式。
相关文章:
Linux进程学习【环境变量】进程优先级
进程优先级的基本概念 在 Linux 中,每个进程都有一个优先级,操作系统根据这个优先级来决定进程的执行顺序。优先级越高,进程的执行就越频繁。通常,进程优先级是由以下两个部分构成: 静态优先级(PRI&#x…...
Leetcode:283. 移动零
题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0]…...
BIOES 标签的含义
BIOES 标签的含义 B (Begin) 表示一个实体的开始。例如,在句子 “北京是中国的首都” 中,“北京” 作为地点实体的开头,首字会被标注为 B-LOC,后续字可能标注为 I-LOC。 I (Inside) 表示一个实体的中间或内部部分。例如&a…...
mAh 与 Wh:电量单位的深度解析
1. 基础定义与物理意义 1.1 mAh(毫安时) 定义:表示电池以毫安(mA)为单位的电流持续放电 1 小时的电荷量。1 mAh1 mA1 h3.6 C(库仑,电荷单位)局限性:仅反映电池存储的电荷量,未考虑电…...
安卓屏播放语音失败,报错TextToSpeech: speak failed: not bound to TTS engine
最近碰到一个很棘手的问题,无缘无故,之前在Android9.0跑得好好的程序,升级安装系统到Android13后,就发现之前能放的语音,现在放不了了,真是头大,所以我摸索着尝试解决,且看我的解决过…...
C语言学习之结构体
在C语言中,我们已经学了好几种类型的数据。比如整型int、char、short等,浮点型double、float等。但是这些都是基本数据类型,而这些数据类型应用在实际编程里显然是不够用的。比如我们没有办法用一旦数据类型来定义一个”人“的属性。因此这里…...
layui获取无法获取表单数据,data.field一直为空
form.on(submit(*), function(data){console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。}); console.log(data.field)一直显示为空࿰…...
「Mac畅玩AIGC与多模态02」部署篇01 - 在 Mac 上部署 Ollama + Open WebUI
一、概述 本篇介绍如何在 macOS 环境下本地部署 Ollama 推理服务,并通过 Open WebUI 实现可视化交互界面。该流程无需 CUDA 或专用驱动,适用于 M 系列或 Intel 芯片的 Mac,便于快速测试本地大语言模型能力。 二、部署流程 1. 环境准备 安装 Homebrew(如尚未安装):/bin…...
量子力学:量子通信
量子通信是利用量子力学原理对信息进行编码、传输和处理的新型通信方式,以下是其详细介绍及业界发展现状: 基本原理 量子叠加态 :量子系统可以处于多个状态的叠加,如光子的偏振方向可以同时处于水平和垂直方向的叠加态ÿ…...
《大型网站技术架构-核心原理与案例分析》笔记
:::info 💡 根据 遗忘曲线:如果没有记录和回顾,6天后便会忘记75%的内容 读书笔记正是帮助你记录和回顾的工具,不必拘泥于形式,其核心是:记录、翻看、思考::: 书名大型网站技术架构-核心原理与案例分析作者…...
log4cpp进阶指南
📝 log4cpp进阶指南 1. 按天切割日志 log4cpp 默认是按文件大小来切割日志的。为了按天切割日志,通常需要自己进行时间判断并手动处理日志文件的切割。 1.1 解决方案 虽然 RollingFileAppender 只支持按大小切割,但你可以使用以下策略&…...
树莓派超全系列教程文档--(43)树莓派内核简介及更新
树莓派内核简介及更新 简介更新 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 简介 Raspberry Pi 内核是 托管在 GitHub 上;更新滞后于上游 Linux内核。上游内核持续更新,而 Raspberry Pi 则将 Linux 内核的长期版本整合…...
第二章、在Windows上部署Dify:从修仙小说到赛博飞升的硬核指南
第1章:安装 wsl (Windows Subsystem for Linux) 上一章我们聊了什么是Dify,这一章我们讲一下怎么才能用Dify。 使用Dify就需要我们在本地部署Dify; 部署Dify就需要用到”Docker“; 要想使用“Docter”就需要用到wsl。 那什么是wsl呢?简单来说就是让你的电脑拥有另一个叫…...
淘宝商品主图标题api接口
1、输入淘宝商品id或者链接,点查询 2、查询淘宝商品主图,商品标题,商品价格,卖家旺旺 3、支持api接口...
小结:BFD
*BFD(双向转发检测,Bidirectional Forwarding Detection)是一种快速、轻量级的故障检测机制,用于检测网络中两点之间的连通性。它广泛应用于各种场景 1. 检测 IP 链路 应用场景: BFD 用于检测两台设备之间的 IP 层连…...
收藏按钮变色问题
1.问题描述 无论是否收藏,收藏按钮都显示黄色,但点击收藏按钮后却能发生颜色变化 2.解决思路 经过调试发现isCollected返回的是整个对象,因此在store的方法里面找到了相应的函数进行修改使得isCollected返回相应的值 修改前: 修…...
小程序发布后,不能强更的情况下,怎么通知到用户需要去更新?
哈喽,我想和大家分享一下我在开发记账小程序时遇到的一个问题,以及我找到的解决办法。 这个记账小程序从一开始,我就特别在意用户的隐私,所以把记账数据都存到了本地缓存里,还做了个手动备份的功能。但系统嘛…...
4.2.2 MySQL索引原理以及SQL优化
文章目录 4.2.2 MySQL索引原理以及SQL优化1. 索引与约束1. 索引是什么2. 索引的目的3. 几种索引4. 约束1.外键2. 约束 vs 索引的区别 5. 索引实现1. 索引存储2. 页3. B树4. B树层高问题5. 自增id6. 聚集索引7. 辅助索引 8. innnodb体系结构1. buffer pool2. change buffer 9. 最…...
02_值相同、类型不同,用 equals() 比较为什么是 false?
02_值相同、类型不同,用 equals() 比较为什么是 false? 场景示例 Map<Long, String> map; Integer keyWord 4; if (map.containsKey(keyWord)) {// ... }结果: → 编译通过,但 containsKey 返回 false,逻辑错…...
leetcode--盛最多水的容器,接雨水
11.盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不…...
AlexNet网络搭建
AlexNet网络模型搭建 环境准备 首先在某个盘符下创建一个文件夹,就叫AlexNet吧,用来存放源代码。 然后新建一个python文件,就叫plot.py吧,往里面写入以下代码,用于下载数据集: # FashionMNIST里面包含了…...
常用第三方库:sqflite数据库应用
常用第三方库:sqflite数据库应用 一、基础概念 1.1 什么是sqflite? sqflite是Flutter官方推荐的SQLite数据库插件,它提供了在Flutter应用中使用SQLite数据库的能力。SQLite是一个轻量级的、嵌入式的关系型数据库,特别适合移动应…...
【论文阅读】-周总结-第5周
1. 【论文阅读24】并行 TCN-LSTM 风电预测模型(2024-02) 链接 论文信息: Liu S, Xu T, Du X, et al. A hybrid deep learning model based on parallel architecture TCN-LSTM with Savitzky-Golay filter for wind power prediction. Ener…...
深入理解 JavaScript 的 typeof 运算符:返回的数据类型
JavaScript 的 typeof 运算符是开发中用于检测值类型的基础工具。虽然看似简单,但其行为存在需要开发者理解的微妙细节。本文将解析 typeof 返回的数据类型,探讨边界案例,并分享类型检查的最佳实践。 typeof 会返回哪些类型? typ…...
前端零基础入门到上班:【Day8】JavaScript 基础语法入门
前端零基础入门到上班:【Day8】JavaScript 基础语法入门(超全!!!) 一、JavaScript 简介二、引入 JavaScript 的三种方式三、变量与常量(var、let、const)3.1 var (传统方式ÿ…...
ppt流程图怎么?ppt流程图模板大全
ppt流程图怎么?ppt流程图剪头模板,ppt流程图模板大全: ppt流程图_模板素材_PPT模板_ppt素材_免抠图片_AiPPTer...
makefile总结
Makefile 学习视频:1、野火的基础入门篇-第32讲 Makefile三要素_哔哩哔哩_bilibili 2、b站视频04 一个稍复杂的Makefile_哔哩哔哩_bilibili 学习资料:第2个视频对应的Make/make.md 无限十三年/CPP - 码云 - 开源中国 ch0_Makefile简介 Makefile是什…...
MIME 类型是个什么东西?
MIME 类型(Multipurpose Internet Mail Extensions)即多用途互联网邮件扩展类型,它是一种标准,用于表示文档、文件或字节流的性质和格式。 最初设计用于电子邮件系统,后来被广泛应用于网页、HTTP 协议等领域࿰…...
javaWeb开发---前后端开发全景图解(基础梳理 + 技术体系)
在现代互联网开发中,前端与后端的分工协作非常重要。本文结合实际架构图,全面梳理前端技术栈、后端技术栈以及服务器端整体流程,帮助初学者建立清晰的整体认知。 一、整体架构概览 系统整体划分为三个主要部分: B端(…...
spring-rabbit的CachingConnectionFactory默认参数导致消费者Channel数量暴增问题解决
文章目录 1.前言2.解决2.1消费监听方法中关闭channel2.2 配置设置两个参数 3.总结 1.前言 由于之前写了一个好用的rabbitmq-spring-boot-start启动器,后面在生产实践之后反馈消费者连接的Channel数量过多,一个消费者的Channel数量可以达到好几百…...
线上JVM调优与全栈性能优化 - Java架构师面试实战
线上JVM调优与全栈性能优化 - Java架构师面试实战 本文通过一场互联网大厂的Java架构师面试,深入探讨了线上JVM调优、OOM定位、死锁定位、内存和CPU调优、线程池调优、数据库调优、缓存调优、网络调优、微服务调优及分布式调优等关键领域。 第一轮提问 面试官&am…...
【KWDB创作者计划】_企业级多模数据库实战:用KWDB实现时序+关系数据毫秒级融合(附代码、性能优化与架构图)
一、技术背景与行业痛点 1.1 多模数据融合挑战 场景痛点: 工业物联网设备每秒产生百万级传感器数据(时序数据)。需关联设备档案(关系数据)生成设备健康报告,传统方案需多数据库跳转,延迟>5…...
“八股训练营”学习总结
在参加为期 40 天的八股训练营的这段时间里,我收获满满,不仅在知识技能上得到了提升,更在学习习惯和自我认知方面有了很大的进步。 在知识层面,训练营涵盖了网络、数据库、缓存以及python测试开发等多方面的知识点。 网络方面&a…...
java工具类
LocalDateTime LocalDateTime可以获取当前时间: LocalDateTime now LocalDateTime.now(); 同时他也可以获取指定时间: LocalDateTime dateTime LocalDateTime.of(2023, 5, 15, 10, 30) 若我们时间值超出了我们的实际情况值,我们将会出现…...
「OC」源码学习——alloc与init的实现
「OC」源码学习——alloc与init的实现 前言 费劲千辛万苦终于项目给写完了,进入下一个阶段,源码的学习 alloc的调用顺序 我们在main函数之中打上断点,先运行 再在alloc之中的各个函数之中打上断点,在关键步骤上打上断点&#…...
AOSP Android14 Launcher3——动画核心类QuickstepTransitionManager详解
Launcher3中,有一个类在跟桌面相关的各种动画中扮演着非常关键的角色,这个类就是QuickstepTransitionManager。 QuickstepTransitionManager在aosp中的路径为:aosp/packages/apps/Launcher3/quickstep/src/com/android/launcher3/QuickstepT…...
STM32:看门狗
独立看门狗 简介 独立看门狗(IWDG)由独立的低速时钟(LSI)驱动,即便主时钟发生故障,它依然能够正常工作。其主要作用是在程序出现异常时,通过复位来保障系统的稳定性。独立看门狗的喂狗操作相对…...
第十三步:vue
Vue 1、上手 1、安装 使用命令:npm create vuelatestvue文件后缀为.vueconst app createApp(App):初始化根组件app.mount("#app"):挂载根组件到页面 2、文件 script标签:编写jstemplate标签:编写htmls…...
《代码整洁之道》第8章 边界 - 笔记
甚至是你团队里其他组写的你无法随意修改的代码。 这些外部代码是你的**“边界”。它们可能会升级、可能会有 Bug、可能会有反人类的设计、甚至你将来可能想换一个类似的库或服务。如果你的应用代码直接且紧密地依赖**这些外部代码的具体类、方法、异常等细节,那么…...
【CF】Day45——Codeforces Round 1021 (Div. 2) BC
阅读理解。。。不过挺有意思( B. Sasha and the Apartment Purchase 题目: 思路: 看了半天没看懂... 题目叽里咕噜一大堆,说白了就是让我们在一个 可删除k个数 的 数组 中选 一些点 且 这些点的f(x) 是此时 删完了k个数之后的数组…...
《代码整洁之道》第5章 格式 - 笔记
你应该选择一套管理代码格式的简单规则。如果是团队,应该选择一套团队一致同意采用的简单格式规则。 最重要的原则:一致性(Consistency)! 没有完美的格式规范,但有统一的规范。 整个团队(或者…...
通过示例学习:连续 XOR
通过示例学习:连续 XOR 如果我们想在 PyTorch 中构建神经网络,可以使用 (with) 指定所有参数(权重矩阵、偏差向量),让 PyTorch 计算梯度,然后调整参数。但是,如果我们有很…...
加密算法 AES、RSA、MD5、SM2 的对比分析与案例(AI)
加密算法 AES、RSA、MD5、SM2 的对比分析 一、相同点 密码学基础 均为现代密码学核心算法,用于保障数据安全。数据处理 均涉及数据转换(加密、签名、哈希等)。密钥依赖 AES、RSA、SM2 依赖密钥(对称或非对称&#x…...
基于STM32、HAL库的MAX31865模数转换器ADC驱动程序设计
一、简介: MAX31865是一款高精度的铂电阻温度检测器(RTD)至数字转换器,具有以下特点: 支持2线、3线或4线RTD配置 15位ADC分辨率 可编程RTD和基准电阻 内置故障检测(开路、短路等) SPI接口通信 工作电压:3.0V至3.6V 二、硬件接口: STM32L4XX <--> MAX31865 PA5(SCK…...
Laravel5.7的一些用法
1、事件需要运行 php artisan queue:work 2、数据库对象关联 1对1 hasOne 1对多 hasMany 1依赖多 belongsTo 多依赖多 belongsToMany 3、 关联查询 with 关联统计 withCount 统计时指定字段名。 如: withCount([cardHolderOrders as order_count]); 4、 // 一次查询&…...
Vue3 + OpenLayers 开发教程 (六)WebGL渲染优化
1. WebGL 渲染优化 1.1 WebGL 渲染器配置 创建 src/utils/webgl.ts: import { Map } from ol; import { WebGLPointsLayer } from ol/layer; import { Vector as VectorSource } from ol/source; import { Style, Circle, Fill, Stroke } from ol/style;// 创建 …...
【C++】C++11新特性(一)
文章目录 列表初始化initializer_list左值引用和右值引用 列表初始化 在 C98 中可以使用{}对数组或者结构体元素进行统一的列表初始值设定 struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };return 0; …...
【网络原理】 网络编程套接字
文章目录 一、网络编程基础1. 为什么需要网络编程?2. 什么是网络编程3 .网络编程中的基本概念发送端和接收端请求和响应客户端和服务端 4. 常见的客户端服务端模型 二、Socket套接字1. 概念2.分类3. Java数据报套接字通信模型4.Java流套接字通信模型 三、UDP数据报套…...
每天五分钟深度学习框架pytorch:使用visdom绘制损失函数图像
visdom的安装 pip install visdom如果安装失败 pip install --upgrade visdom开启visdom python -m visdom.server nohup python -m visdom.server后台启动然后就会出现,下面的页面,我们可以使用下面的链接打开visdom页面 Visdom中有两个重要概念: env环境。不同环境的可…...
【MySQL专栏】MySQL数据库表的内外连接
文章目录 1、表的内连接(1)内连接的语法格式①显示SMITH的名字和部门名称 2、外连接(1)左外连接左外连接的语法格式通过实例演示: (2)右外连接右外连接的语法格式通过实例演示 1、表的内连接 什…...