《普通逻辑》学习记录——命题的判定与自然推理
目录
一、真值
1.1、真值联结词
1.2、真值联结词与逻辑联结词的区别
1.3、真值形式
1.3.1、真值符号的优先级和结合性规则
1.4、真值规则
1.4.1、条件式(蕴含式) P → Q 的真值规则
1.4.2、双条件式(等值式) P ↔ Q 的真值规则
1.5、函数
1.5.1、数学中的函数概念
1.5.2、逻辑学中的函数概念
1.5.3、真值函数(也叫真值函项)
1.5.3.1、真值函数的种类
1.5.4、重言式
二、命题的真值判定方法
2.1、真值表法
2.2、归谬赋值法
三、命题的自然推理
3.1、一些概念
3.2、自然推理系统的主要规则
四、练习题
上海人民出版社《普通逻辑(第五版)》学习记录
一、真值
真和假是命题仅有的两个值。统称为“真值”。
1.1、真值联结词
用于定义复合命题的真值如何依赖于其肢命题真值的联结词。
有五个:
- 否定(¬)
- 合取(∧),即逻辑与
- 析取(∨),即逻辑或
- 条件,也叫蕴含(→),即如果...就一定...
- 双条件,也叫等值(↔),即当且仅当
这和逻辑联结词看起来一样,二者有何区别呢?
1.2、真值联结词与逻辑联结词的区别
二者是紧密相关的,大多数时候被认为是同义的。
联结词具有两个功能:
- 将肢命题组合成复合命题。在发挥这个功能时联结词叫做逻辑联结词。
- 确定复合命题的真假。在发挥这个功能时联结词叫做真值联结词。
例1:
P:今天下雨。
Q:我带了伞。
可以使用联结词来构建复合命题。例如:
合取(∧):“今天下雨且我带了伞。”(P ∧ Q)
析取(∨):“今天下雨或我没有带伞。”(P ∨ ¬Q)
这里用联结词将单个命题组合成更复杂的表达式。(联结词发挥了作用:在生成一个复合命题的过程中起联结作用。即并没有涉及到复合命题的真假的讨论)这时候的联结词叫做逻辑联结词。
例2:
假设:
P(今天下雨)是真的。
Q(我带了伞)也是真的。
那么根据真值表,可以得出:
对于合取命题 P∧Q(今天下雨且我带了伞),因为两个肢命题都是真的,所以这个复合命题也是真的。
对于析取命题 P∨¬Q(今天下雨或我没有带伞),由于 P 是真的,即使 ¬Q(即“我没有带伞”)是假的,整个析取命题仍然是真的。
在这种情况下,联结词的功能是根据各个肢命题的真假来决定整个复合命题的真假。(复合命题的真假由肢命题的真假和联结词的性质决定。联结词发挥了作用:参与确定复合命题的真假)这时候的联结词叫做真值联结词。
1.3、真值形式
由命题变项(用字母如 P、Q、R 等表示)和真值联结词组成的表达式。
它的结果(即整个表达式的真值)完全取决于其中命题变项的真值。也就是说,只要确定了命题变项是真还是假,通过真值联结词的运算规则,就能确定整个真值形式的真假。
基本形式:
- 合取式:P ∧ Q
- 析取式:P ∨ Q
- 条件式(蕴含式):P → Q
- 双条件式(等值式):P ↔ Q
- 否定式:¬P
1.3.1、真值符号的优先级和结合性规则
1、优先级规则
从高到低的优先级顺序为:否定(¬)>合取(∧)>析取(∨)>蕴含(→)>等值(↔)
例:表达式 ¬P ∧ Q → R
首先计算 ¬P,然后进行 ¬P 与 Q 的合取操作(¬P ∧ Q),最后考虑蕴含关系(¬P ∧ Q) → R。
2、结合性规则
否定(¬)
只对紧跟其后的一个命题变元起作用,不存在结合性的问题。
合取(∧)和析取(∨)
具有结合性,它们满足结合律。例如:(P ∧ Q) ∧ R = P ∧ (Q ∧ R)。
在没有括号的情况下,从左到右依次进行运算。例如,在表达式 P ∧ Q ∧ R 中,先计算 P ∧ Q,然后再将结果与 R 进行合取。
蕴含(→)
不满足结合律,即(P → Q)→ R 与 P →(Q → R)是不同的逻辑表达式。
等值(↔)
不满足结合律,即 (P ↔ Q)↔ R 与 P ↔ (Q ↔ R)是不同的逻辑表达式。
括号
可以改变运算的顺序,当需要改变默认的优先级顺序时,就要使用括号。
1.4、真值规则
1.4.1、条件式(蕴含式) P → Q 的真值规则
用这个例子说明:
P:下雨了。
Q:地面湿了。
P → Q:如果下雨地面会湿。
1、T-T
确实下雨了(P),而且地面确实变湿了(Q)。这与“如果下雨地面会湿”(P → Q)的表述一致,P → Q 描述的情况发生了。
2、T-F
如果确实发生了下雨了(P),但是地面没有变湿(¬Q),比如有遮挡物且雨很小的情况。P → Q 描述的情况没有发生。
3、F-T(重点)
如果没有下雨(¬P),但是地面变湿了(Q),这种情况照理来说无法判断“如果下雨地面会湿”(P → Q)是否会成立。
实际上如果前提 P 为假,而结论 Q 为真,那么整个命题 P → Q 仍然是真的。
这种情况可能看起来有些反直觉,但在逻辑学中,当一个条件的前提不成立时,无论结论是什么,这个条件总是被视为真实的。这是因为该条件无法否定结论。
一个约定
在逻辑推理与论证的语境中,可将 “当无法证伪时,逻辑关系暂且被认为是真的” 作为一种实用的约定方式。这是因为,倘若在无法证伪时便认定逻辑关系为假,那么在面对复杂的逻辑推理和论证情境时,会不可避免地滋生大量矛盾与不确定性因素,从而致使逻辑推理的进程难以有效推进。
然而,需要明确的是,这种 “无法证伪即为真” 的约定并非绝对可靠,它只是在特定的认知局限与推理需求背景下的一种权宜之计。在科学探索以及逻辑分析的进程中,人们依然期望能够通过更为坚实的证据、严谨的证明或者充分的事实依据来确切判定逻辑关系的真假,而非单纯依赖于能否证伪这一单一标准。
4、F-F
如果没有下雨(¬P),而且地面没有湿(¬Q),这也无法证伪“如果下雨地面会湿”(P → Q)。依据上述的约定,这种情况 P → Q 也被认为是真。
1.4.2、双条件式(等值式) P ↔ Q 的真值规则
用这个例子说明:
P:我会带伞。
Q:我预估明天下雨。
P ↔ Q:我会带伞当且仅当我预估明天下雨。
1、T-T
我会带伞(P),我预估明天下雨(Q)。那么这与“我会带伞当且仅当我预估明天下雨”(P ↔ Q)的描述是一致的。
2、T-F
我会带伞(P),且我预估明天不会下雨(¬Q)。那么这与“我会带伞当且仅当我预估明天下雨”(P ↔ Q)是矛盾的。(P ↔ Q)描述的情况没有发生。
3、F-T
我不会带伞(¬P),且我预估明天下雨(Q)。那么这与“我会带伞当且仅当我预估明天下雨”(P ↔ Q)是矛盾的。(P ↔ Q)描述的情况没有发生。
4、F-F
双条件式实际上等价于:(P → Q)∧(Q → P)。
本例中:
- P → Q:如果我会带伞,那么一定是我预估了明天下雨。
- Q → P:如果我预估明天下雨,那么我一定会带伞。
参见上面的1.4.1的第四点。
我不会带伞(¬P)且我预估明天不会下雨(¬Q),都不能证伪 P → Q 和 Q → P ,所以依据上面说的约定,它的真值是 true。
1.5、函数
1.5.1、数学中的函数概念
从定义域到值域的映射。每个来自定义域的输入元素都恰好对应一个值域中的输出元素。
例:
计算一个数平方的函数: f(x) = x^2 。即着对于定义域中的每一个 ( x ),输出 ( f(x) ) 就是 ( x ) 的平方。
1.5.2、逻辑学中的函数概念
一种接受一个或多个输入(参数)并根据这些输入计算出唯一确定输出(结果)的规则或表达式。
例1,自动售货机:
函数:选择商品并投入相应金额 -> 输出商品。
逻辑规则:如果选择了商品A,并且投入了足够的钱(例如2元),则输出商品A;否则,不输出商品并且可能返回投入的硬币。
例2,交通信号灯:
函数:时间 + 当前颜色 -> 下一个颜色。
逻辑规则:如果当前是绿灯并且经过了一定的时间,则变为黄灯;如果是黄灯,则变为红灯;如果是红灯,则变为绿灯。这个过程可以根据预设的时间间隔和当前状态确定下一个状态。
例3,图书馆借书系统:
函数:会员ID + 图书ID -> 借阅确认或拒绝。
逻辑规则:如果会员有良好的信用记录并且所选书籍可借,则允许借阅;否则,拒绝借阅请求。
1.5.3、真值函数(也叫真值函项)
一种特殊的函数(特殊的规则或表达式)。
接受一个或多个命题变量(真或假)作为输入,并根据定义的规则产生一个逻辑值(真或假)作为输出,以此构建复合命题。
真值函数的定义域和值域的取值都是真值。
它的行为可以通过真值表展示,其中列举所有可能的输入组合及其对应的确定性输出。
例:
P:天气好
Q:我有空闲时间
可以定义一个逻辑函数 F(P, Q) 来决定是否去公园散步,它的结果是真值,即 F(P, Q) = P ∧ Q。
可以写作:
- F(1,1) = 1
- F(1,0) = 0
- F(0,1) = 0
- F(0,0) = 0
1.5.3.1、真值函数的种类
根据真值函数的取值情况,可将不同的真值函数分成几类:
1、永真式/重言式
不论命题变元如何取值,真值函数的值总是 true。
例:P ∨ ¬P。
2、矛盾式(常假的)
不论命题变元如何取值,真值函数的值总是 false。
例:P ∧ ¬P。
3、可满足式
真值函数的值与命题变元相关,即存在某些命题变元的取值使得真值函数的值为 true,也存在某些取值使得真值函数的值为 false。
例:P ∧ Q,P ∨ Q。
1.5.4、重言式
重言式是最常用的真值函数,因为命题逻辑中一切正确的推理形式均表现为重言式。
也就是说:
一个推理形式:
∵A₁, A₂, …, Aₙ
∴A
是有效的,当且仅当命题形式 (A₁∧A₂∧…∧Aₙ)→A 是重言式。
- 推理是从一组前提推导出一个结论的过程。
- 推理形式是指这种推导过程的逻辑结构,而不涉及具体命题的内容。
- 一个推理形式是正确的,当且仅当在所有前提为真的情况下,结论必然为真。
所以正确的推理形式保证了如果前提是真的,那么结论一定是真的。
- 重言式的性质就是无论其中的命题变元如何取值,整个公式总是为真。
- 把一个正确的推理形式转化为一个逻辑公式时,这个公式必然是重言式。因为它满足在前提变元的任何取值组合下,只要前提为真,结论就为真,这与重言式的定义相符合。
二、命题的真值判定方法
如上所说,一个推理形式是有效的,当且仅当命题形式重言式。也就是判定了一个蕴涵式(→)或等值式(↔)是否是重言式,就判定了它所代表的推理形式是否正确,即判定了相应的推理是否逻辑有效。
为了判定一个命题形式是否为重言式,可以寻找一种判定程序,这种程序应是机械的,并且在有穷步骤内能够完成。
这里主要介绍真值表法和归谬赋值法。
2.1、真值表法
以真值形式: (P → Q)∧(¬Q → ¬P)为例。
步骤一:找出给定真值形式里的所有变项,列出这些变项的各种真值组合。
此例变项为 P、Q,其真值组合为:
步骤二:根据真值形式的构成过程,由简而繁地列出一个真值形式的各个组成部分,最后一栏为该形式本身。
步骤三:计算出每栏中各组成部分的真值,最后得出该形式的真值。
由最后一栏可知该形式的真值不是在所有情况下都是 true,所以它是可满足式。
书上的2个例子:
2.2、归谬赋值法
真值表法涉及到的项数越多,表格的行数列数就越多越复杂。
归谬赋值法是为了简化真值表法而被发明出来的,它只能处理条件式或能转化成条件式的双条件式(双条件式可以分解成两个条件式)和析取式(也就是等值命题)。但是由于需要判定真值的式子往往是条件式(它代表了推理形式),所以此方法是非常有用的。
它的原理:
对于一个条件式 P → Q,先假设它为假,也就是假设其前件为真而后件为假。如果在这种假设下出现矛盾(比如某个变元既真又假),那么就说明原蕴含式是重言式;如果不出现矛盾,就说明原蕴含式不是重言式。
下面用一个例子来说明,判断:((P → Q)∧ ¬Q)→ ¬P 是否为重言式。
步骤一:假设整个式子为假。
因为对于条件式 A → B 为假当且仅当 A 为真而 B 为假(见此博文的4.1的第四点)。所以令((P → Q)∧ ¬Q)为真,¬P 为假。
步骤二:对后件进行推导。
此例的后件是 ¬P,推导如下:
- 因为 ¬P 为假,所以 P 为真。
步骤三:对前件进行推导。
此例前件为((P → Q)∧ ¬Q),推导如下:
- 因为((P → Q)∧ ¬Q)为真,所以(P → Q)为真,且 ¬Q 为真。
- 因为 ¬Q 为真,所以 Q 为假。
步骤四:检查是否有矛盾之处。
已知 P 为真、Q 为假、P → Q 为真。这是有矛盾的。
由于假设公式((P → Q)∧ ¬Q)→ ¬P 为假会导致矛盾,所以这个公式作为真值函数的值总是true 的,也就是这个公式是重言式。
三、命题的自然推理
3.1、一些概念
1、形式语言
一种人工语言,按照精确的语法规则和符号系统构建的,用于对特定的概念、推理或结构进行严格的表述。
形式语言由两部分构成:
- 符号集:包括逻辑常项(如 “¬”、“∧”、“∨”、“→”、“↔” 等)和逻辑变项(如 P、Q、R 等)。这是前面一直在使用的。
- 语法规则:规定了如何使用符号来组合成公式。
2、逻辑演算系统
用于研究逻辑推理的系统。以形式语言为基础,通过明确的规则来对逻辑公式进行变形和推导,从而实现对逻辑关系的精确处理。
例:
“∧”符号表示的语法规则是“逻辑与”;用 P、Q 表示两个命题。
如果 P、Q 都成立,那么根据“逻辑与”的性质,可以推导:P ∧ Q 也成立。
3、公理化系统
一种特殊的逻辑演算系统。它从一组被认为是 “不证自明” 的公理出发,通过严格的逻辑推理规则,推导出一系列定理。
组成部分:
- 公理:基本假设,是公理化系统的基础。例如,在欧几里得几何公理化系统中,“过两点能作且只能作一直线” 就是一条公理。公理都是被设定为真的命题,不需要在该系统内进行证明。
- 推理规则:和逻辑演算系统类似,有一套推理规则用于从公理推导出定理。
- 定理:是在公理和推理规则的基础上得到的逻辑结论。例如,在几何中,根据公理和推理规则可以推导出 “三角形内角和为 180 度” 这样的定理。
特点:
- 严谨性:每一个定理都必须基于公理或者已经证明了的其他定理,通过严格的逻辑推理得出。这保证了系统的每个部分都是建立在坚实的基础之上。
- 系统性:公理化系统试图将一个领域内的所有知识组织成一个连贯的整体。所有的概念、定义、定理等都应该在这个体系内有其明确的位置,并且彼此之间存在逻辑联系。
- 非唯一性:对于同一个研究对象或领域,可能存在多组不同的公理集,每组公理都能构建出一套有效的理论体系。不同选择的公理可能会导致完全不同的结果,但也可能产生等价的理论体系,即两个或多个理论在某种程度上可以互换使用而不影响其有效性。
- 独立性和一致性:理想的公理化系统中的公理应该是相互独立的(即没有一个公理是可以由其它公理推导出来的),并且该系统是一致的(即不存在自相矛盾的情况)。
- 完备性:在一个完备的公理化系统中,任何可以用该系统语言表达的命题都可以被证明为真或假。然而,哥德尔不完备定理表明,在包含足够复杂算术的任何形式系统中,总会存在一些命题既不能被证明也不能被证伪。
- 解释性:公理化系统可以用于描述现实世界的现象,也可以作为抽象思维的工具。它们提供了一种方式来探索和理解复杂的概念和关系。
4、自然推理系统
一种形式化的逻辑演算系统,在形式语言的基础上增加若干推理规则(无须设定公理)而构成。
它的特点是更贴近人们日常的思维和推理方式。它没有像公理化系统那样预先设定的公理,而是以假设和推理规则为核心,通过引入和消除假设来进行逻辑推导。
例:
出门是否带伞的决策过程:
- 假设引入:早上你看到天气预报说有的降雨概率。你在考虑出门是否要带伞,此时你引入一个假设:“今天会下雨”。这就相当于在自然推理系统中引入了一个假设,用于后续的推理。
- 推理过程:基于 “今天会下雨” 这个假设,你开始思考。如果下雨,你不带伞就会被淋湿,而你不想被淋湿,所以你需要带伞来避免被淋湿。推理过程就是根据假设和一些已知的规则(在这个例子中,规则是 “下雨且不带伞会被淋湿” 以及 “不想被淋湿”)进行推导。
- 假设消除:最后,你得出一个结论:“如果今天会下雨,那么我就带伞”。这个结论就相当于把之前引入的 “今天会下雨” 这个假设进行了消除,将其整合进了一个条件语句中。现在这个结论不再依赖于 “今天真的会下雨” 这个假设本身是否成立。即使最后没有下雨,这个条件语句在逻辑上依然是合理的。
3.2、自然推理系统的主要规则
- 同一律:A → A
- 假言推理:如果前提中有 A 和 A → B,则可以推出 B。
- 条件引入:如果在假设 A 的情况下可以推导出 B,那么可以得出 A → B 的推论。
- 合取引入:如果前提中有 A 和 B,则可以得出 A ∧ B 的推论。
- 合取消除:如果前提中有 A ∧ B,则可以推出 A 和 B。
- 析取引入:如果前提中有 A,则可以得出 A ∨ B;同样地,如果前提中有 B,则可以得出 A ∨ B。
- 析取消除:如果前提中有 A ∨ B,并且从 A 可以推导出 C,从 B 也可以推导出 C,则可以得出 C。
- 归谬法:如果在假设 A 的情况下可以推导出矛盾 B ∧ ¬B,那么可以得出 ¬A。
- 双重否定消除:前提中有 ¬¬A,则可以得出 A。
- 等值引入:如果从 A 可以推导出 B,并且从 B 可以推导出 A,则可以得出 A ↔ B。
- 可以在推导中的任何地方引入一个公式作为假设前提。
这11条主要规则中前面10条都非常简单,容易理解。
第11条的要说明的是,只要能在推理过程中把前面引入的假设消除掉,如使用规则3、7、8、10来消除假设,使结论不再依赖于假设而存在,就可以随意引入。
例:
使用自然推理证明:如果一个平面图形是三角形(P),那么它的三个内角和等于180°(Q)。
- 引入假设:根据规则(11),引入假设 P,即假设 “一个平面图形是三角形”。
- 依据几何知识推导:已知如果一个平面图形是三角形,那么根据欧几里得几何学的公理可知它的三个内角和等于 180°,也就是在假设 P 成立的情况下,能够得到 Q 成立。(这里相当于利用了利用外部知识(几何学原理)来辅助逻辑推理过程)。
- 运用条件引入规则得出结论:因为我们在假设 P 的情况下推导出了 Q ,根据上述规则(3),如果在假设 P 的情况下可以推导出 Q,那么可以得出 P → Q 的推论。也就是使用规则(3)消除了假设,使得结论不再依赖于假设,即使一个图形平面不是三角形,“如果一个平面图形是三角形,那么它的三个内角和等于180°”也是成立的。
四、练习题
1、((p→q)∧(r→q)∧(p∨r))→q
- 先假设前件真而后件假;
- 后件假,即q为假;
- 前件真则(p→q)为真,(r→q)为真,(p∨r)为真;
- q为假,(p→q)为真,则可知p为假;
- p为假,(r→q)为真,则可知r为假;
- p为假且r为假与(p∨r)为真矛盾了;
- 所以假设不成立,该式是重言式。
2、(p→q)∧(p→r)↔(p→q∨r)
根据此博文的4.1的第6点。先假设这个等值式的负命题成立,即前后件不等值。
1、前件真而后件假的情况:
- (p→q)∧(p→r)为真则(p→q)、(p→r)为真;
- (p→q∨r)为假则p真、q∨r为假;
- q∨r为假即q为假和r也为假;
- (p→q)为真则p和q同真假,这已经与上面的推理不符合;
- 所以负命题前件真后件假的情况不成立。
2、前件假而后件真的情况:
- (p→q)∧(p→r)为假则(p→q)、(p→r)二者至少有一个是假的;
- (p→q)为假时,p为真q为假。这时候:p真,q假,r不确定。
- (p→r)为假时,p为真r为假。这时候:p真,q不确定,r假。
- 也就是可以确定p为真的,q和r中至少一个是假的。
- (p→q∨r)为真则有两种情况:情况A:p为假,则q和r的真假不能确定,这与上面p为真的推理不符合。情况B:p为真,则q和r都为真,这与上面q和r中至少一个是假的推理不符合。
- 所以负命题前件假而后件真的情况不成立。
所以假设不成立,该式是重言式。
3、(p→q)∧(q→r)→(p→r)
- 先假设前件真而后件假;
- (p→r)假,则p为真,r为假;
- (p→q)∧(q→r)真,则(p→q)、(q→r)都是真;
- (p→q)为真且p为真,所以q为真;
- q为真,r为假,这与(q→r)为真矛盾了;
- 所以假设不成立,该式是重言式。
1、p∧p→p
使用合取消除规则(如果前提中有 A ∧ B,则可以推出 A 和 B),从 p∧p 可以推出p。
相关文章:

《普通逻辑》学习记录——命题的判定与自然推理
目录 一、真值 1.1、真值联结词 1.2、真值联结词与逻辑联结词的区别 1.3、真值形式 1.3.1、真值符号的优先级和结合性规则 1.4、真值规则 1.4.1、条件式(蕴含式) P → Q 的真值规则 1.4.2、双条件式(等值式) P ↔ Q 的真值规则 1.…...
道可云人工智能元宇宙每日资讯|崂山区政务服务虚拟大厅启用
道可云元宇宙每日简报(2024年12月31日)讯,今日元宇宙新鲜事有: 崂山区政务服务虚拟大厅启用 近日,崂山区政务服务“虚拟大厅”在青岛正式上线,成为该市首个采用虚拟现实、人工智能、大数据及3D虚拟数字人…...

高并发写利器-组提交,我的Spring组件实战
高并发写优化理论 对于高并发的读QPS优化手段较多,最经济简单的方式是上缓存。但是对于高并发写TPS该如何提升?业界常用的有分库分表、异步写入等技术手段。但是分库分表对于业务的改造十分巨大,涉及迁移数据的麻烦工作,不会作为…...

音视频入门基础:MPEG2-PS专题(4)——FFmpeg源码中,判断某文件是否为PS文件的实现
一、引言 通过FFmpeg命令: ./ffmpeg -i XXX.ps 可以判断出某个文件是否为PS文件: 所以FFmpeg是怎样判断出某个文件是否为PS文件呢?它内部其实是通过mpegps_probe函数来判断的。从《FFmpeg源码:av_probe_input_format3函数和AVI…...

如何使用OpenCV进行抓图-多线程
前言 需求: 1、如何使用OpenCV捕抓Windows电脑上USB摄像头的流、 2、采用多线程 3、获知当前摄像头的帧率。 这个需求,之前就有做了,但是由于出现了一个问题,人家摄像头的帧率目前都可以达到60帧/s 了,而我的程序…...

电子应用设计方案86:智能 AI背景墙系统设计
智能 AI 背景墙系统设计 一、引言 智能 AI 背景墙系统旨在为用户创造一个动态、个性化且具有交互性的空间装饰体验,通过融合先进的技术和创意设计,提升室内环境的美观度和功能性。 二、系统概述 1. 系统目标 - 提供多种主题和风格的背景墙显示效果&…...

【《python爬虫入门教程11--重剑无峰168》】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找?-- 如果用edge也是类似的1.chrome…...
.net core 线程锁,互斥锁,自旋锁,混合锁
线程锁、互斥锁、自旋锁和混合锁是多线程编程中的重要概念,它们用于控制对共享资源的访问,避免数据竞争和不一致性。每种锁有其特定的适用场景和特点。我们来逐一解释它们,并进行比较。 1. 线程锁(Thread Lock) 线程…...

【DevOps】Jenkins项目发布
Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…...

C# OpenCV机器视觉:霍夫变换
在一个阳光灿烂得近乎放肆的午后,阿强的实验室就像被施了魔法的科学城堡,到处闪耀着神秘的科技光芒。阿强呢,像个即将踏上惊险征程的探险家,一屁股坐在那堆满奇奇怪怪设备的桌前,眼神中透露出按捺不住的兴奋劲儿&#…...
Kraft模式安装Kafka(含常规、容器两种安装方式)
一、#创作灵感# 公司使用Kafka的软件项目较多,故写技术笔记巩固知识要点 二、软件环境 - Kafka 3.9.0 官方下载地址:Kafka 3.9.0 - Docker Desktop 4.37 容器图形化工具 官方下载地址:Docker Desktop 4.37 特别说明 - Docker Desktop…...

Linux驱动开发(16):输入子系统–电容触摸驱动实验
有关电容触摸的基础知识内容可以参考野火STM32相关教程,这里只介绍电容触摸驱动的相关内容。 本章配套源码、设备树以及更新固件位于“~/embed_linux_driver_tutorial_imx6_code/linux_driver/touch_scream_GTxxx”目录下。 触摸面板通过双面胶粘在显示屏上&#…...
《深入浅出HTTPS》读书笔记(24):椭圆曲线密码学
《深入浅出HTTPS》读书笔记(24):椭圆曲线密码学 为了保证DH的密钥对不被破解,提升安全性的主要手段就是增加密钥对的长度,但是长度越长,性能越低。 为了解决性能问题,需要…...
现代光学基础5
总结自老师的讲义 yt5 开卷考试复习资料:光探测器与光伏技术 目录 光探测器(Photodetector) 工作原理二极管电路连接方式响应度(Responsivity)微弱光检测超导纳米线单光子探测光电二极管噪声 太阳能电池࿰…...
力扣hot100——贪心
121. 买卖股票的最佳时机 class Solution { public:int maxProfit(vector<int>& a) {if (a.size() 1) return 0;int ans 0;int mi a[0];for (int i 1; i < a.size(); i) {ans max(ans, a[i] - mi);mi min(mi, a[i]);}return ans;} };55. 跳跃游戏 class S…...
vue3如何实现防抖?
第一 防抖就是我们设置一个调用时间,点击后设置时间开始倒计时,如果再次点击会重新倒计时 npm或yarn安装: npm install lodash <template><div click"debouncedInputHandler"><button>打印</button>…...

西安电子科技大学初/复试笔试、面试、机试成绩占比
西安电子科技大学初/复试笔试、面试、机试成绩占比 01通信工程学院 02电子工程学院 03计算机科学与技术学院 04机电工程学院 06经济与管理学院 07数学与统计学院 08人文学院 09外国语学院 12生命科学与技术学院 13空间科学与技术学院 14先进材料与纳米科技学院 15网络与信息安…...
spring mvc源码学习笔记之六
pom.xml 内容如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...
树莓派4b如何连接ov7670摄像头
在树莓派4B上连接和使用OV7670摄像头是一项具有一定技术挑战的任务。这是因为OV7670摄像头是一个原始的CMOS摄像头模块,它通过并行接口与主机通信,而树莓派的GPIO接口通常用于串行接口(如I2C、SPI、UART)通信,不直接支持并行摄像头接口。因此,需要一些额外的硬件和软件工…...

[微服务]分布式搜索Java客户端
快速入门 使用RestClient客户端进行数据搜索可以分为两步 构建并发起请求 代码解读: 第一步,创建SearchRequest对象,指定索引库名第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等 query…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...