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

C# 运算符

总目录


前言

在C#中,运算符是用于执行特定操作的符号。它们可以用于处理变量、常量或其他表达式。C# 提供了丰富的运算符集合,用于执行各种操作,如算术运算、逻辑判断、位操作等。了解这些运算符及其使用方式对于编写高效且功能强大的C#程序至关重要。


一、算术运算符

算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法和取模。

1. 算术运算符概览

运算符描述示例结果
+加法a + b5 + 3 = 8
-减法a - b5 - 3 = 2
*乘法a * b5 * 3 = 15
/除法a / b5 / 2 = 2
%取模(求余数)a % b21%10=1
++自增(前缀或后缀)a++
++a
a = a + 1
- -自减(前缀或后缀)a--
--a
a = a - 1

2. 注意事项

  • 溢出检查:算术运算可能溢出,可用checked检查溢出。
  • + 加法运算符:用于两个字符串或字符串与数值类时,是拼接字符串
    • string s = “Hello” + “World”; // “HelloWorld”
    • string s = “Hello” + 1; // “Hello1”
  • /除法运算符 :运算结果取决于操作数的类型
    • 当两个操作数均为整数的时候,进行取商运算,结果为整数(舍弃小数部分);
    • 当两边有一个为浮点型的时候,进行精确运算,结果为浮点数;
    • (double)7 / 23.5;避免除0错误(抛出DivideByZeroException
  • %取模运算符 :用于获取除法运算的余数
    • 可用于判断奇偶、周期性操作
  • ++自增/自减运算符:增量和减量运算符用于将变量的值增加或减少1。
    • 当自增/自减运算符在前(形如 ++a),则先自增,再赋值;
    • 当自增/自减运算符在后(形如 a++),则先赋值,再自增;
  • char类型:在char类型参与到算术运算时,会自动转化为ascii码10进制的值参与运算

3. 示例

int a = 5;
int b = 2;int sum = a + b;   // 7
int diff = a - b;  // 3
int product = a * b; // 10
int quotient = a / b; // 2
int remainder = a % b; // 1Console.WriteLine($"Sum: {sum}, Diff: {diff}, Product: {product}, Quotient: {quotient}, Remainder: {remainder}");
	class Program{static void Main(string[] args){int a = 1;int b;// a++ 先赋值再进行自增运算b = a++;Console.WriteLine("a = {0}", a);Console.WriteLine("b = {0}", b);Console.ReadLine();//结果a=2,b=1// ++a 先进行自增运算再赋值a = 1; // 重新初始化 ab = ++a;Console.WriteLine("a = {0}", a);Console.WriteLine("b = {0}", b);Console.ReadLine();//结果a=2,b=2// a-- 先赋值再进行自减运算a = 1;  // 重新初始化 ab= a--;Console.WriteLine("a = {0}", a);Console.WriteLine("b = {0}", b);Console.ReadLine();//结果a=0,b=1// --a 先进行自减运算再赋值a = 1;  // 重新初始化 ab= --a;Console.WriteLine("a = {0}", a);Console.WriteLine("b = {0}", b);Console.ReadLine();//结果a=0,b=0}}

二、赋值运算符

赋值运算符用于将值赋给变量。C#提供了多种赋值运算符,包括简单赋值和复合赋值运算符。

1. 赋值运算符概览

在这里插入图片描述

  • 基本赋值
    • = 简单赋值
  • 复合赋值
    • += 加法赋值
    • -= 减法赋值
    • *= 乘法赋值
    • /= 除法赋值
    • %= 模赋值

2. 示例

int x = 10;
x += 5; // 相当于 x = x + 5; 结果是15
int a = 5;
a += 3;  // a = a + 3 => a = 8
a -= 2;  // a = a - 2 => a = 6
a *= 2;  // a = a * 2 => a = 12
a /= 3;  // a = a / 3 => a = 4
a %= 2;  // a = a % 2 => a = 0Console.WriteLine($"a = {a}");

三、比较/关系运算符

比较/关系运算符用于比较两个值的大小或相等性。它们返回布尔值(true 或 false)。常用于判断语句中。

1. 关系运算符概览

运算符描述示例结果
==等于a == b5 == 3 返回 false
!=不等于a != b5 != 3 返回 true
>大于a > b5 > 3 返回 true
<小于a < b5 < 3 返回 false
>=大于等于a >= b5 >= 3 返回 true
<=小于等于a <= b5 <= 3 返回 false

注:关系运算符的运算结果均是bool ,常运用于判断语句中

2. 示例

int m = 10, n = 20;
Console.WriteLine(m < n); // 输出: True
int a = 5;
int b = 3;bool isEqual = a == b;  // false
bool isNotEqual = a != b; // true
bool isGreater = a > b;  // true
bool isLess = a < b;     // falseConsole.WriteLine($"isEqual: {isEqual}, isNotEqual: {isNotEqual}, isGreater: {isGreater}, isLess: {isLess}");

四、逻辑运算符

逻辑运算符用于对布尔值进行逻辑操作,如与(AND)、或(OR)、非(NOT)。
用于在条件语句中组合多个条件。

1. 逻辑运算符概览

运算符描述示例结果
||逻辑或(||)ORa||btrue || false 返回 true

当两个操作数均为false ,则结果为false,其余均为true
&&逻辑与(&& )ANDa&&btrue && false 返回 false

当两个操作数均为true,则结果为true,其余均为false
!逻辑非(! )NOT!a!true 返回 false

取反

2. 注意事项

  • 短路求值
    • 在逻辑与(&&)中,如果第一个操作数为false,则不会计算第二个操作数。
    • 在逻辑或(||)中,如果第一个操作数为true,则不会计算第二个操作数。
    • 例如,当&&运算符左边为false的时候,此时无论运算符右边是什么,结果都为false,那么右边表达式就不会运行。
  • 避免短路
    • 单独使用|& 就不会产生短路的效果,即使左边已经起了决定性作用,右边仍会运行。

3. 示例

bool isSunny = true, isWarm = false;
Console.WriteLine(isSunny && !isWarm); // 输出: True
bool a = true;
bool b = false;bool andResult = a && b; // false
bool orResult = a || b;  // true
bool notResult = !a;     // falseConsole.WriteLine($"andResult: {andResult}, orResult: {orResult}, notResult: {notResult}");

五、位运算符

位运算符用于对整数的二进制位进行操作。它们在底层操作中非常高效。

1. 位运算符概览

在这里插入图片描述

运算符描述示例结果(二进制)
&按位与(AND)a & b当两个操作数均为1 ,则结果为1,其余均为0

5 & 3 => 101 & 011 = 001 = 1
|按位或(OR)a | b当两个操作数均为0,则结果为0,其余均为1

5 | 3=>101 | 011=111=7
^按位异或(XOR)a ^ b当两个操作均为0或1,则结果为0,其余结果为1

5 ^ 3 => 101 ^ 011 = 110 = 6
~按位取反(NOT)~a具有翻转位的效果,可将0变1,1变0

~5 => ~101 = 010 = -6(补码)
<<左移a << 1左操作数的值向左移动右操作数的位数

5 << 1 => 1010 = 10
>>右移a >> 1左操作数的值向右移动右操作数指定的位数

5 >> 1 => 010 = 2

2. 示例

		static void Main(string[] args){//60 和13 转换位二进制分别是111100 和 1101 ,不足8位【前面】使用0补足int a = 60;            /* 60 = 0011 1100 */int b = 13;            /* 13 = 0000 1101 */int c = 0;c = a & b;// a      0011 1100// b      0000 1101//-----------------   根据&运算符规则:只有均为1的时候,结果才为1,否则均为0// c      0000 1100===>转换为十进制 则是12Console.WriteLine("Line 1 - c 的值是 {0}", c);c = a | b;// a      0011 1100// b      0000 1101//-----------------   根据|运算符规则:只有均为0的时候,结果才为0,否则均为1// c      0011 1101===>转换为十进制 则是61Console.WriteLine("Line 2 - c 的值是 {0}", c);c = a ^ b;// a      0011 1100// b      0000 1101//-----------------   根据^运算符规则:只有均为0或1的时候,结果才为0,否则均为1// c      0011 0001===>转换为十进制 则是49Console.WriteLine("Line 3 - c 的值是 {0}", c);c = ~a;               /*-61 = 1100 0011 */// a      0011 1100//取反-----------------   根据~运算符规则:将0变1 ,1变0// c      1100 0011===>转换为十进制 则是-61Console.WriteLine("Line 4 - c 的值是 {0}", c);c = a << 2;   // a      0011 1100//左移-----------------  0011 1100 向左移动两位则将前面两位00 移掉了,然后后面补足两位00// c      1111 0000===>转换为十进制 则是240Console.WriteLine("Line 5 - c 的值是 {0}", c);c = a >> 2;// a      0011 1100//右移-----------------  0011 1100 向右移动两位则将后面两位00 移掉了,然后前面补足两位00// c      0000 1111===>转换为十进制 则是15Console.WriteLine("Line 6 - c 的值是 {0}", c);Console.ReadLine();}

六、其他运算符

1. 条件运算符(?:)

条件运算符是一种简化的if-else语句,用于根据条件返回两个值中的一个。

语法:

条件表达式 ? 表达式1 : 表达式2
  • 如果条件表达式为true,则返回表达式1的值。
  • 如果条件表达式为false,则返回表达式2的值。

示例:

int age = 20;
string result = (age >= 18) ? "Adult" : "Minor";
Console.WriteLine(result); // 输出: Adult
int a = 5;
int b = 3;int max = (a > b) ? a : b; // 如果 a > b,则 max = a,否则 max = bConsole.WriteLine($"Max: {max}");

2. 类型转换运算符

类型转换运算符用于将一个类型的值转换为另一个类型。C#提供了隐式类型转换和显式类型转换。

  • 隐式类型转换:自动将低精度类型转换为高精度类型,不会丢失数据。

    int a = 5;
    double b = a; // 隐式转换:int 转换为 double
    
  • 显式类型转换:需要使用强制类型转换,可能会丢失数据。

    double d = 10.5;
    int i = (int)d; // 将double转换为int,结果是10
    Console.WriteLine(i);
    

3. is 运算符

is 运算符检查表达式的结果是否与给定的类型相匹配。

 	public class Base { }public class Derived : Base { }class Program{static void Main(string[] args){// 基类和派生类 之间的is 类型检查var b = new Base();Console.WriteLine(b is Base);//TrueConsole.WriteLine(b is Derived);//Falsevar d = new Derived();Console.WriteLine(d is Base);//TrueConsole.WriteLine(d is Derived);//True//派生类可以是基类类型,is 检查返回True //基类不可以是派生类的类型;//这个道理就像:兔子,狮子,小狗都可以用动物称呼,但是说所有动物都是小狗那就不行了//is 运算符将考虑装箱和取消装箱转换,但不会考虑数值转换int i = 27;object iBoxed = i;Console.WriteLine(iBoxed is int);  // output: TrueConsole.WriteLine(iBoxed is long);  // output: Falseobject obj = 99.9;if (obj is string s){Console.WriteLine("结果:"+s);}if (obj is double score){Console.WriteLine("结果:" + score);}//以上案例说明:is的本质是 检查类型,通过检查返回True,反之,False//检查是否为nullif (obj is null){Console.WriteLine("**********");}//检查是否为非nullif (obj is not null){Console.WriteLine("**********");}Console.ReadLine();}}

4. as 运算符

as运算符将表达式显式转换为给定类型(如果其运行时类型与该类型兼容)
如果无法进行转换,则 as 运算符返回 null(as不能用于值类型,值类型不能为null)。
与强制转换表达式(形如(int)12) 不同,as 运算符永远不会引发异常。

			object obj1 = "121212";int le1 = (obj1 as string).Length;//可以转换object obj2 = null;int le2 = (obj2 as string).Length;//可以转换,但是由于转换后值为null,因此运行时会报错object obj3 = new object();string sr = obj as string;if (sr == null){Console.WriteLine("转换失败");}else{ Console.WriteLine("转换成功");}//使用 as 转换的时候需要注意,转为结果为null的情况//is 对比 as if (obj3 is string str3){Console.WriteLine($"转换成功{str3}");}else{Console.WriteLine($"转换失败");}

5. typeof运算符

typeof运算符获取某个类型的 System.Type 实例。

public class Animal { }public class Giraffe : Animal { }public static class TypeOfExample
{public static void Main(){object b = new Giraffe();Console.WriteLine(b is Animal);  // output: TrueConsole.WriteLine(b.GetType() == typeof(Animal));  // output: FalseConsole.WriteLine(b is Giraffe);  // output: TrueConsole.WriteLine(b.GetType() == typeof(Giraffe));  // output: True}
}

四、运算符优先级

1. 优先级

以下是C#中常见运算符的优先级(从高到低):

  1. 括号:()
  2. 一元运算符:++、–、+(正号)、-(负号)、!、~
  3. 乘除取模:*、/、%
  4. 加减:+、-
  5. 位移:<<、>>
  6. 关系运算符:<、>、<=、>=
  7. 相等性:==、!=
  8. 位与:&
  9. 位异或:^
  10. 位或:|
  11. 逻辑与:&&
  12. 逻辑或:||
  13. 条件运算符:? :
  14. 赋值运算符:=, +=, -=, *=, /=, %= 等
  15. 逗号运算符:,

辅助理解的案例代码如下:

//算术运算符和赋值运算符的优先级:
int a = 10, b = 5, c = 2;
a += b * c;               // 先计算乘法,再执行加法赋值
Console.WriteLine(a);       // 输出20//逻辑运算符的优先级:
bool a = true, b = false, c = true;
bool result = a || b && c;  // 先计算与运算,再计算或运算
Console.WriteLine(result);  // 输出true//条件运算符的优先级:
int a = 10, b = 5;
string result = a > b ? "a大于b" : "a不大于b";  // 先判断大小关系,再执行条件语句
Console.WriteLine(result);  // 输出"a大于b"

2. 优先级与常见问题

  1. 运算符优先级(从高到低):

    • 括号() > 单目运算符(!, ++, --, ~)> 算术运算符 > 移位 > 比较 > 逻辑与/或 > 条件运算符?: > 赋值运算符。
  2. 易错点

    • 整数除法陷阱5 / 2结果为2,需显式转换为浮点类型。
    • 值类型与引用类型比较==行为不同,需重写Equals方法。
    • 短路逻辑&&||可能跳过部分运算,避免副作用代码在右侧。

结语

回到目录页:C#/.NET 知识汇总
希望以上内容可以帮助到大家,如文中有不对之处,还请批评指正。


参考资料:
算术运算符(C# 参考)

相关文章:

C# 运算符

总目录 前言 在C#中&#xff0c;运算符是用于执行特定操作的符号。它们可以用于处理变量、常量或其他表达式。C# 提供了丰富的运算符集合&#xff0c;用于执行各种操作&#xff0c;如算术运算、逻辑判断、位操作等。了解这些运算符及其使用方式对于编写高效且功能强大的C#程序…...

duckdb导出Excel和导出CSV速度测试

运行duckdb数据库 D:>duckdb v1.2.0 5f5512b827 Enter “.help” for usage hints. Connected to a transient in-memory database. Use “.open FILENAME” to reopen on a persistent database. 生成模拟数据&#xff0c;10个列&#xff0c;100万行数据&#xff1b; --…...

pt->onnx->rknn(量化) step by step FAQ

文档修订中... 1.pt->onnx 这个转换是在yolov11的docker环境做的转换。非常简单。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 获取当前脚本文件所在目录的父目录&#xff0c;并构建相对路径 import os import sys current_dir os.path.dirname(os.path.abspath…...

Apollo 9.0 速度动态规划决策算法 – path time heuristic optimizer

文章目录 1. 动态规划2. 采样3. 代价函数3.1 障碍物代价3.2 距离终点代价3.3 速度代价3.4 加速度代价3.5 jerk代价 4. 回溯 这一章将来讲解速度决策算法&#xff0c;也就是SPEED_HEURISTIC_OPTIMIZER task里面的内容。Apollo 9.0使用动态规划算法进行速度决策&#xff0c;从类名…...

利用AI智能体创建云端文档知识库并集成第三方数据源(上)

许多开发者在管理和集成多种云端的数据源时经常面对各种各样的困难&#xff0c;所以希望能够构建一个聊天机器人来协调这些数据源&#xff0c;针对业务问题并提供全面的答案。本文介绍了一种解决方案&#xff0c;帮助大家开发一个能够从文档和数据库中回答查询的聊天机器人&…...

Cursor AI开发微信小程序教程

1. 准备工作 在开始开发之前&#xff0c;需要完成以下准备工作&#xff1a; 1.1 安装微信开发者工具 前往微信开发者工具官网下载并安装适合操作系统的开发者工具。注册微信小程序账号&#xff0c;登录微信公众平台&#xff08;https://mp.weixin.qq.com&#xff09;&#…...

2025常用的SEO工具有哪些?

在互联网时代&#xff0c;如何让自己的网站或内容脱颖而出&#xff0c;成为许多企业和个人站长们最关注的问题。而在这个过程中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;作为一种有效的提升网站曝光度和吸引流量的手段&#xff0c;已经成为了网站运营的核心之一。对…...

支持直接升级到21c的 Oracle 数据库版本

一、支持直接升级的版本 可以从以下版本直接升级到新版本&#xff1a; • 19c (所有版本) • 18c (所有版本) • 12c Release 2 (12.2) 升级到最新Oracle数据库版本必须采用的路径取决于当前数据库的版本号。 如果当前的Oracle数据库版本早于12.2 版&#xff0c;则无法直接将…...

线程池-抢票系统性能优化

文章目录 引言-购票系统线程池购票系统-线程池优化 池化 vs 未池化 引言-购票系统 public class App implements Runnable {private static int tickets 100;private static int users 10000;private final ReentrantLock lock new ReentrantLock(true);public void run() …...

回顾Golang的Channel与Select第一篇

深入解析Golang Channel与Select&#xff1a;并发编程的艺术与哲学 一、通信顺序进程&#xff08;CSP&#xff09;的Go实现 Go语言创始人Rob Pike将CSP理论具象化为channel原语&#xff0c;实现了"不要通过共享内存来通信&#xff0c;而要通过通信来共享内存"的哲学…...

乐理笔记(持续更新)

单音与音程 单音&#xff1a;由一个音组成。 音程&#xff1a;由两个音组成&#xff0c;表示两个音之间的音高距离。 如何数音程&#xff1a; 单音程&#xff1a;9 - X&#xff0c;性质相反。例如&#xff0c;9度音程减去某个数&#xff0c;性质会相反。 复音程&#xff1a…...

FastExcel + Java:打造高效灵活的Excel数据导入导出解决方案

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 基于AOP的数据字典实现…...

【数据结构入门】一、数组

一、数组的概念 数组&#xff1a;一种由相同类型的数据元素组成的基本数据类型&#xff0c;为引用类型 二、数据的顺序 这里很奇怪&#xff0c;讲了一个寻址函数&#xff0c;就是怎样用坐标求该元素的内存地址。说实话我不知道求这个能干什么&#xff0c;但是感觉还挺好玩的…...

编码格式大全解释以及相关编码特性

目录 说明: 1. Base64 Base64编码的字符集通常包括&#xff1a; Base64的工作原理&#xff1a; Base64编码在安全渗透中的应用场景 常见的Base64编码绕过场景 如何防范Base64绕过攻击 2. URL编码&#xff08;Percent Encoding&#xff09; URL编码与安全渗透的关系 示…...

正则表达式(Regular expresssion)

正则表达式 匹配单次 . &#xff1a;匹配任意一个字符 [ ] &#xff1a;匹配[ ]里举例的任意一个字符 /d &#xff1a;匹配数字0-9 /D &#xff1a;匹配非数字 /s &#xff1a;匹配空白或tab建 /S &#xff1a;匹配非空白 /w &#xff1a;…...

JavaScript 发起网络请求 axios、fetch、async / await

目录 fetch 发送 GET 请求&#xff08;fetch&#xff09; 发送 POST 请求&#xff08;fetch&#xff09; 处理后台异常响应 async / await async await 发送 GET 请求&#xff08;async / await fetch&#xff09; 发送 POST 请求&#xff08;async / await fetch&…...

安装OpenJDK21(linux、macos)

文章目录 安装OpenJDK21java21linux下安装配置mac下安装 安装OpenJDK21 java21 封神&#xff01;Java 21正式发布了&#xff0c;迎来了史诗级新特性&#xff0c;堪称版本最强&#xff01;&#xff01;&#xff01; 视频链接&#xff1a;https://www.bilibili.com/video/BV1E8…...

Java面试宝典:说下Spring Bean的生命周期?

Java面试宝典专栏范围&#xff1a;JAVA基础&#xff0c;面向对象编程&#xff08;OOP&#xff09;&#xff0c;异常处理&#xff0c;集合框架&#xff0c;Java I/O&#xff0c;多线程编程&#xff0c;设计模式&#xff0c;网络编程&#xff0c;框架和工具等全方位面试题详解 每…...

k8s向容器内传文件与下载文件

1、下载&#xff1a; kubectl cp <namespace>/<pod-name>:<container-path> <local-path>示例&#xff1a; kubectl cp mynamespace/mypod:/tmp/testfile.txt ./testfile.txt如果 Pod 中有多个容器&#xff0c;可以通过 -c 标志指定容器: kubectl c…...

A4988一款带转换器和过流保护的 DMOS 微步驱动器的使用方式

A4988是一款带转换器和过流保护的 DMOS 微步驱动器&#xff0c;用于驱动双极步进电动机。它支持全、半、1/4、1/8 及 1/16 步进模式&#xff0c;输出驱动性能可达 35 V 及 2 A。其特点包括简单的步进和方向控制接口、可调电位器调节最大电流输出、自动电流衰减模式检测/选择以及…...

Elasticsearch+Logstash+Kibana可视化集群部署

文章目录 1.组件介绍简述2.集群规划3.Es组件部署4.Logstash组件部署5.Kibana组件部署6.Kibana的基础使用 1.组件介绍简述 Elasticsearch&#xff1a;开源实时分布式搜索和分析引擎&#xff0c;支持大规模数据存储和高吞吐量&#xff0c;提供丰富的搜索功能和可扩展性。 Logsta…...

数据结构之二叉树

数据结构之二叉树 数据结构之二叉树1. 什么是二叉树&#xff1f;2. 基本概念3. 二叉树的基本形态4. 二叉树的性质5. 特殊二叉树6. 二叉树的存储7. 二叉树的遍历7.1 前序遍历7.2 中序遍历7.3 后序遍历7.4 层次遍历 8. 应用场景9. 实例代码9.1 示例树结构9.2 输出结果 数据结构之…...

华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B

华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载&#xff1a; AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…...

《图解设计模式》笔记(十)用类来表现

二十二、Command模式:命令也是类 一个类调用某方法,虽然调用结果会反映在对象的状态中,但不会留下工作的历史记录。 若有一个类表示“请进行这项工作”的“命令”,每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表…...

Scrapy:任务队列底层设计详解

Scrapy 中队列设计详解 1. 概述 Scrapy 的队列系统是其调度器&#xff08;Scheduler&#xff09;的核心组件之一&#xff0c;负责存储和管理待抓取的请求。Scrapy 实现了两种类型的队列&#xff1a; 内存队列&#xff1a;请求存储在内存中&#xff0c;重启后数据丢失磁盘队列…...

zola + github page,用 workflows 部署

之前的Zola都是本地build之后&#xff0c;再push到github上&#xff0c;这种方式很明显的弊端就是只能在本地编辑&#xff0c;而不能通过github编辑&#xff0c;再pull到本地&#xff0c;缺乏了灵活性。因此将zola用workflows来部署。 repo地址&#xff1a;https://github.com/…...

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …...

关闭浏览器安全dns解决访问速度慢的问题

谷歌浏览器加载速度突然变慢了&#xff1f;检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址&#xff0c;因此对于增强用户的…...

今日AI和商界事件(2025-02-14)

今日AI大事件主要包括以下几个方面&#xff1a; 一、苹果新品预告 事件概述&#xff1a;苹果CEO蒂姆库克在社交媒体发布7秒视频&#xff0c;配文“准备好迎接家庭的新成员”&#xff0c;并宣布2月19日将有新品发布。知名科技记者马克古尔曼称&#xff0c;新款低端iPhone SE将…...

【黑马点评优化】1-使用JWT登录认证+redis实现自动续期

1-使用JWT登录认证redis实现自动续期 0 前言1 原先的redis实现登录鉴权2 JWT登录认证Redis自动续期2.1 认证&#xff08;identification&#xff09;授权 &#xff08;authorization&#xff09;和鉴权&#xff08;Authorization&#xff09;2.1.1 认证&#xff08;identificat…...

一个让Stable Diffusion更稳定、更易用的Github开源项目

2023除了ChatGPT大火&#xff0c;Stable Diffusion同样也是非常火热&#xff0c;Stable Diffusion是一个Github开源项目&#xff0c;很多爱好者都会本地安装&#xff0c;但面对一些初学者来说&#xff0c;在安装、配置和使用过程中还是会经常出现很多问题&#xff0c;特别不了解…...

Mac之JDK安装

Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统&#xff0c;打开中断命令&#xff0c;输入: uname -a Compressed Archive 是压缩文档&#xff0c;下载的是一个 .tar.gz 压缩包 D…...

深入Flask:如何优雅地处理HTTP请求与响应

哈喽,大家好,我是木头左! 本文将带你深入了解如何在Flask中优雅地处理HTTP请求和响应,让你的应用更加高效、安全和用户友好。 创建一个简单的Flask应用 让从创建一个最简单的Flask应用开始: from flask import Flaskapp = Flask(__name__)@app.route(/) def...

kron积计算mask类别矩阵

文章目录 1. 生成类别矩阵如下2. pytorch 代码3. 循环移动矩阵 1. 生成类别矩阵如下 2. pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0…...

Redis实现消息队列

什么是消息列队。 消息队列是一种应用间的异步协作机制&#xff0c;同时消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削峰等问题。实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。市面上的 M…...

vue+springboot+webtrc+websocket实现双人音视频通话会议

前言 最近一些时间我有研究&#xff0c;如何实现一个视频会议功能&#xff0c;但是找了好多资料都不太理想&#xff0c;最终参考了一个文章 WebRTC实现双端音视频聊天&#xff08;Vue3 SpringBoot&#xff09; 只不过&#xff0c;它的实现效果里面只会播放本地的mp4视频文件&…...

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》

本博主免费赠送读者3本书&#xff0c;书名为《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》。 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...

【设计模式】【行为型模式】命令模式(Command)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…...

1.14学习总结

日常刷题单 刷了题目后&#xff0c;对于排序方法更加熟练&#xff0c;手搓代码的速度也得到了提高。 感觉字符串还不熟练&#xff0c;高精度更是云里雾里&#xff0c;上升空间极大。 同时看见今晚有个入门难度的测试&#xff0c;去练了练手&#xff0c;想看看自己是什么成分&…...

QxOrm生成json

下载Qxorm-1.5版本 使用vs打开项目&#xff0c;直接生成即可&#xff1a; lib目录中会生成dll和lib文件 新建Qt项目使用Qxorm: 将QxOrm中上面三个目录拷贝到新建的Qt项目中 pro文件添加使用QxOrm第三方库 INCLUDEPATH $$PWD/include/ LIBS -L"$$PWD/lib" LIBS…...

伯克利 CS61A 课堂笔记 09 —— Data Abstraction

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理&#xff0c;全英文内容&#xff0c;文末附词汇解释。 目录 01 Data Abstraction 数据抽象 Ⅰ Rational Numbers Ⅱ Rational Number Arithmetic 02 Pairs 对 Ⅰ Representing Pairs Using Lists Ⅱ Re…...

高频 SQL 50 题(基础版)

高频 SQL 50 题&#xff08;基础版&#xff09; 查询连接聚合函数排序和分组高级查询和连接子查询高级字符串函数 / 正则表达式 / 子句 查询 链接: link 链接: link 链接: link 链接: link 链接: link 连接 链接: 高频 SQL 50 题基础版_1378. 使用唯一标识码替换员工ID 链接…...

HtmlRAG:RAG系统中,HTML比纯文本效果更好

HtmlRAG 方法通过使用 HTML 而不是纯文本来增强 RAG 系统中的知识表示能力。通过 HTML 清洗和两步块树修剪方法&#xff0c;在保持关键信息的同时缩短了 HTML 文档的长度。这种方法优于现有基于纯文本的RAG的性能。 方法 其实主要看下围绕html提纯思路&#xff0c;将提纯后的…...

python学opencv|读取图像(六十二)使用cv2.morphologyEx()形态学函数实现图像梯度处理

【1】引言 前序已经学习了腐蚀和膨胀的单独作用函数&#xff0c;还研究了按照不同顺序调用腐蚀和膨胀函数调整图像效果&#xff0c;相关文章包括且不限于&#xff1a; python学opencv|读取图像&#xff08;六十一&#xff09;先后使用cv2.dilate()函数和cv2.erode()函数实现图…...

10G EPON光模块

一、10G EPON对称光模块 工作模式&#xff1a;上行突发接收、下行连续发射。 工作原理&#xff1a;当需要发送信号时&#xff0c;系统信号通过光模块的电接口把信号传送到驱动芯片&#xff0c;芯片处理后&#xff0c;驱动激光器发出调制光信号&#xff0c;经光纤发到远端&…...

RocketMQ与kafka如何解决消息丢失问题?

0 前言 消息丢失基本是分布式MQ中需要解决问题&#xff0c;消息丢失时保证数据可靠性的范畴。如何保证消息不丢失程序员面试中几乎不可避免的问题。本文主要说明RocketMQ和Kafka在解决消息丢失问题时&#xff0c;在生产者、Broker和消费者之间如何解决消息丢失问题。 1.Rocket…...

每日Attention学习23——KAN-Block

模块出处 [SPL 25] [link] [code] KAN See In the Dark 模块名称 Kolmogorov-Arnold Network Block (KAN-Block) 模块作用 用于vision的KAN结构 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional as F import mathclass Swish(nn.Module)…...

【前端】ES6新特性汇总

本文作者&#xff1a; slience_me ES6新特性汇总 1. let声明变量 1&#xff09;let作用域 // var 声明的变量往往会越域 // let 声明的变量有严格的局部作用域 {var a 1;let b 2; } console.log(a); // 1 console.log(b); // 报错 b is not defined2&#xff09;声明次数 …...

2024 CyberHost 语音+图像-视频

项目&#xff1a;CyberHost: Taming Audio-driven Avatar Diffusion Model with Region Codebook Attention 音频驱动的身体动画面临两个主要挑战&#xff1a;&#xff08;1&#xff09;关键人体部位&#xff0c;如面部和手部&#xff0c;在视频帧中所占比例较小&#x…...

Git命令摘录

使用 Git 升级软件通常是指通过 Git 仓库获取软件的最新版本或更新代码。以下是详细的步骤和方法&#xff1a; 1. 克隆软件仓库 如果这是你第一次获取软件代码&#xff0c;可以使用 git clone 命令将远程仓库克隆到本地。 git clone <仓库地址> 例如&#xff1a; git cl…...