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

c++字符编码/乱码问题

基本概念

c++11版本引入了char16_t和char32_t两个类型,他们的特点分别如下:

char16_t

  • 16位的unicode字符类型
  • 用于表示UTF-16编码
  • 大小:2字节
  • 字面量前缀:u

char32_t

  • 32位unicode字符类型
  • 用于表示UTF-32编码
  • 大小:4字节
  • 字面量前缀:U

基本示例

#include <iostream>
#include <string>int main()
{char16_t c16 = u'中';   //单个utf16字符std::u16string Str16 = u"中国人";  //一个utf16字符串char32_t c32 = U'中';  //单个utf32字符std::u32string Str32 = U"中国人好";  //一个utf32字符串// 字符串长度,std::cout << "UTF-16 string length: " << str16.length() << std::endl;  //这里输出3std::cout << "UTF-32 string length: " << str32.length() << std::endl;  //这里输出4return 0;
}

注意上面示例中的std::u16stringstd::u32string的方法length获取的字符串中字符的个数,并不是这个字符串占用的内存长度。

char16_t/char32_t 与 std::u16string/std::u32string 的关系

// std::u16string 是 basic_string<char16_t> 的特化
typedef basic_string<char16_t> u16string;// std::u32string 是 basic_string<char32_t> 的特化
typedef basic_string<char32_t> u32string;

思考1:为什么要引入这两个类型?

在c++11引入这两个类型之前,一直使用wchar_t(宽字符类型)来表示Unicode编码的字符。示例如下所示:

#include <wstring>//使用宽字符
wchar_t wc = L'中';
std::wstring wstr = L"中国人";  //宽字符字符串

这里有一点需要注意:

  • 宽字符类型的字面量是L,这与char16_t和char32_t是不一样的

除此以外,还有一种方式来表示不同的编码,即在char数组中用对应的编码数值表示,如下所示:

char bytes[] = {0xE4, 0xB8, 0xAD, 0x00};  //“中”的UTF8编码
char bytes1[] = {0x4E,0X2D,0X00};  //“中”的UNICode编码

这种方式就是显式的告诉编译器这是一个数组,无序编译器做转码操作,直接按照对应的数值存储即可。

回到问题的原点,那为什么要引入这两个类型呢?因为wchar_t本身存在一些问题:

  • 在不同的平台上,它的长度不一定,可能会导致不一样的行为,如果以长度作为判断条件也不太适合跨平台的需求

在linux/unix平台上,wchar_t的长度为4各个字节

在window平台上,wchar_t的长度为2个字节

新语法特性引入的char16_t和char32_t则不同,他们的长度在各个平台上是固定的且编码也是明确的(unicode),在每个平台上的表现都是固定的,不依赖平台

思考2:不同的编码方式他们的特点是什么?

作为程序员开发者我们经常遇到的编码方式如下;

  • UTF-8:一种变长的编码规则,编码的长度从1个字节到4个字节,对于汉字来说一般是3个字节
  • UTF-16:也是一种变长的编码,最短2个字节,最长4个字节,没有3个字节的情况。
  • GBK/GB2312:这两种是简体中文字符编码的标准,是双字节编码。gb2312是1980年代发布的汉字编码标准,主要用于简体中文字符,它包含6763个汉字和682个非汉字字符(包括标点符号、拉丁字符等);GBK编码在在GB2312的基础上进行的一个拓展,发布于1995年。GBK含有21000多个汉字。覆盖了所有GB2312字符及其它字符。GBK支持部分繁体字,如果需要完整的繁体字支持,推荐使用Big5。

UTF-8编码规则

1字节:0xxxxxxx                    (0x00-0x7F)    ASCII字符
2字节:110xxxxx 10xxxxxx          (0x80-0x7FF)   部分中日韩字符
3字节:1110xxxx 10xxxxxx 10xxxxxx (0x800-0xFFFF) 大部分中日韩字符
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx       (0x10000-0x10FFFF) 其他字符

UTF-16编码规则

 //基本语言平面(BMP):包含了绝大多数常用字符,包括拉丁字母、汉字等。BMP 是最常用的平面

U+0000 - U+FFFF:最常用的字符
- U+4E00 - U+9FFF:CJK统一汉字
//辅助平面:包括 Supplemental Ideographic Plane、Supplementary Multilingual Plane、Supplementary Special-purpose Plane 和 Supplementary Private Use Area,存放一些较为稀有的字符、古代文本、符号以及私人使用字符等

U+10000 - U+10FFFF:较少使用的字符

 GBK编码规则

  • 第一个字节范围:0x81 到 0xFE(包含了更多汉字)
  • 第二个字节范围:0x40 到 0xFE(同样增加了汉字和非汉字)
  • GBK 使用双字节,可以表示 GB2312 的所有字符,同时支持更多汉字、标点和其他字符。

不同编码的示例

 // "中" 的UTF-8编码
// Unicode码点:U+4E2D
// UTF-8:E4 B8 AD(3字节)
const char utf8[] = {0xE4, 0xB8, 0xAD, 0x00};

// "中" 的UTF-16编码
// 占用2字节:4E 2D
const char16_t utf16[] = {0x4E2D, 0x0000};

// "中" 的GB2312编码
// 占用2字节:D6 D0
const char gb[] = {0xD6, 0xD0, 0x00};

思考3:如果一个源文件的编码格式是UTF8,那么文件存储时在磁盘上存储的形式是怎样的?

 程序员编写文件,如果源文件的编码格式是UTF8进行存储,假设编写了了这样一行代码:

std::string str="hello";

那这行代码写入放到磁盘上保存后,存储的内容是什么样的呢?肯定是按照UTF-8格式进行存储,所有的字符都进行存储,包括双引号、分号、等号,换行符等。

利用十六进制方式查看文件如下所示:

73 74 64 3A 3A 73 74 72 69 6E 67 20 73 74 72 3D 22 68 65 6C 6C 6F 22 3B

//存在如下对应

s  t  d  :  :  s  t  r  i  n  g     s  t  r  =  "  h  e  l  l  o  "  ;
73 74 64 3A 3A 73 74 72 69 6E 67 20 73 74 72 3D 22 68 65 6C 6C 6F 22 3B

思考4:字符显示乱码是如何产生的?

字符乱码的形式有如下几种情况:

  • 汉字在源文件中打开显示乱码
  • 程序运行时控制台显示乱码
  • 程序运行时页面显示乱码

我们分析一下字符乱码是如何产生的:字符肯定是有输入的地方(或存文件,或存内存,或直接发送),输入的场景如果选择了utf-8编码,如果字符显示用的地方却选择utf16方式的进行解码,那么解码得出的一定会是乱码。所以我们在涉及字符显示(尤其是汉字字符)时,一定要与数据来源方协商好字符编码格式,才能保证字符显示的正确。下面有几种场景需要打开重点考虑:

  • 字符来源于其它机器拷贝来的文件,如果显示乱码,使用notepad++查看文件的编码,如果notepad++的转码功能转换一下编码再使用。
  • 字符来源于网络通信,那么需要与数据发送方确认它的字符编码,也要确认本地平台字符显示编码格式。

思考5:如果一个源文件使用默认使用utf-8方式编码,但是在该文件中使用了char16_t的字面量,会发生什么?

这里涉及到了2个问题:

  1. 源文件如何保存的?
  2. 源文件生成的二进制程序如何保存的?

下面通过一个例子来说明这两个问题:

假设有一个源文件,该文件使用UTF-8格式编码,文件中有如下内容:

char16_t c16 = u'中';

那么源文件在磁盘上存储如下所示:

// 源文件是UTF-8编码,"中"字在文件中的存储是UTF-8格式
// "中"字在UTF-8源文件中占用3个字节:E4 B8 AD 

这个源文件经过编译器处理后:

// 编译器看到 u'中' 前缀时,会将UTF-8编码的"中"字转换为UTF-16编码,这个转码是由编译器自动完成的
// 最终在可执行文件中存储的是UTF-16格式:4E2D 

编译器的处理过程如下:

// 编译器处理过程:

// 1. 读取源文件时,"中"字被识别为UTF-8编码:E4 B8 AD

// 2. 看到 u 前缀,编译器知道需要创建UTF-16字符

// 3. 将UTF-8编码转换为UTF-16编码:4E2D

// 4. 在目标文件中存储UTF-16编码值

// 最终在内存中:

// c16变量中存储的是UTF-16编码值:4E2D 

思考6:如果源文件采用GBK编码方式,那么各种编译器编译出的二进制可执行程序中的编码是哪种形式?

 这个问题很有意思,首先可以肯定的源文件必然以GBK方式保存,那么问题来了:

  • 编译器是否能检测到源文件采用何种编码方式
  • 编译器是否关心源文件采用何种编码方式
  • 编译器的处理策略是怎样的

下面我将一一回答这个问题。

  • 根据我的了解,编译器不检测源文件采用何种编码形式,它一般使用默认的编码格式读取源文件
  • 可以通过编译选项的方式告知编译器应该采用何种编码方式读取源文件
  • 编译器默认采用默认的编码格式读取源文件,如果源文件的编码格式是GBK,而编译器的默认编码格式如果是utf-8(如gcc),那么编译器就会按照utf8的方式读取源文件并编译,这种情况下编译到可执行程序中的汉字字符串可能就会出现乱码。

根据这种情况,有一些建议:

  • 首先了解编译器的默认编码格式

Window系统默认的编码格式是ANSI

Windows中文简体系统下MSVC默认的编码格式是GBK

GCC/CLANG默认的编码格式是UTF-8

  • 开始阶段不同的开发人员要统一源文件的编码格式

思考7:Unicode包含哪几种编码格式?

Unicode包含如下几种编码格式:

  • UTF-8(Unicode Transformation Format - 8-bit)
  • UTF-16(Unicode Transformation Format - 16-bit)
  • UTF-32(Unicode Transformation Format - 32-bit)

它们各自的特点如下:

  1. UTF-8

    • 变长编码(1-4字节)
    • ASCII兼容
    • 节省空间(对于英文文本)
    • 适合网络传输
    • Web标准
  2. UTF-16

    • 变长编码(2或4字节)
    • 对于中日韩文字较为高效
  3. UTF-32

    • 固定长度(4字节)
    • 空间占用大

它们的用途:

  • UTF8适合存储和传输,因为对于英文文本友好
  • UTF16适合系统接口,如qt的QString则采用utf16编码
  • UTF32适合内部处理

之前我存在错误的认知:认为Unicode=UTF-16,实际上这是错误的理解,Unicode是一种字符集,它并不是编码方式,Unicode可以以不同的方式编码,还有一些错误的理解,比如我经常用使用qt框架进行开发,qt框架中的QString采用的就是UTF-16编码,在有些文章中没有描述清楚,仅仅是说QString采用的是Unicode字符串进行编码的,造成了我认为Unicode=UTF-16的印象。

使用建议

使用现代的c++ Unicode字面量

void modernCppWay() {// UTF-8字面量std::string utf8_str = u8"你好";// UTF-16字面量std::u16string utf16_str = u"你好";// UTF-32字面量std::u32string utf32_str = U"你好";
}

显式的告诉编译器以何种方式进行编码,如果不显示的指定,那么编译器会默认的编码方式编解码。 

内部统一编码方式推荐使用UTF-8

推荐使用新引入的类型char16_t/char32_t/std::u16string/std::u32string

相关文章:

c++字符编码/乱码问题

基本概念 c11版本引入了char16_t和char32_t两个类型&#xff0c;他们的特点分别如下&#xff1a; char16_t 16位的unicode字符类型用于表示UTF-16编码大小&#xff1a;2字节字面量前缀&#xff1a;u char32_t 32位unicode字符类型用于表示UTF-32编码大小&#xff1a;4字节…...

侯捷 C++ 课程学习笔记:深入理解类与继承

文章目录 每日一句正能量一、课程背景二、学习内容&#xff1a;类与继承&#xff08;一&#xff09;类的基本概念1. 类的定义与实例化2. 构造函数与析构函数 &#xff08;二&#xff09;继承1. 单继承与多继承2. 虚函数与多态 三、学习心得四、总结 每日一句正能量 有种承担&am…...

初始化列表

一&#xff1a;声明&#xff0c;定义&#xff0c;赋值的区别 ①&#xff1a;声明 这里&#xff0c;int _year; int _month;int _day; 是成员变量的声明&#xff0c;它们告诉编译器&#xff1a; 类 Date中有三个成员变量_year和 _month和_day。 它们的类型分别都是 int 此…...

7.1 - 定时器之中断控制LED实验

文章目录 1 实验任务2 系统框图3 软件设计 1 实验任务 本实验任务是通过CPU私有定时器的中断&#xff0c;每 200ms 控制一次PS LED灯的亮灭。 2 系统框图 3 软件设计 注意事项&#xff1a; 定时器中断在收到中断后&#xff0c;只需清除中断状态&#xff0c;无需禁用中断、启…...

Pytest之fixture的常见用法

文章目录 1.前言2.使用fixture执行前置操作3.使用conftest共享fixture4.使用yield执行后置操作 1.前言 在pytest中&#xff0c;fixture是一个非常强大和灵活的功能&#xff0c;用于为测试函数提供固定的测试数据、测试环境或执行一些前置和后置操作等&#xff0c; 与setup和te…...

【分库分表】基于mysql+shardingSphere的分库分表技术

目录 1.什么是分库分表 2.分片方法 3.测试数据 4.shardingSphere 4.1.介绍 4.2.sharding jdbc 4.3.sharding proxy 4.4.两者之间的对比 5.留个尾巴 1.什么是分库分表 分库分表是一种场景解决方案&#xff0c;它的出现是为了解决一些场景问题的&#xff0c;哪些场景喃…...

合并两个有序链表:递归与迭代的实现分析

合并两个有序链表&#xff1a;递归与迭代的实现分析 在算法与数据结构的世界里&#xff0c;链表作为一种基本的数据结构&#xff0c;经常被用来解决各种问题。特别是对于有序链表的合并&#xff0c;既是经典面试题&#xff0c;也是提高编程能力的重要练习之一。合并两个有序链…...

HTML AI 编程助手

HTML AI 编程助手 引言 随着人工智能技术的飞速发展&#xff0c;编程领域也迎来了新的变革。HTML&#xff0c;作为网页制作的基础语言&#xff0c;与AI技术的结合&#xff0c;为开发者带来了前所未有的便利。本文将探讨HTML AI编程助手的功能、应用场景以及如何利用它提高编程…...

备战蓝桥杯Day11 DFS

DFS 1.要点 (1)朴素dfs 下面保存现场和恢复现场就是回溯法的思想&#xff0c;用dfs实现&#xff0c;而本质是用递归实现&#xff0c;代码框架: ans; //答案&#xff0c;常用全局变量表示 int mark[N]; //记录状态i是否被处理过 …...

Oracle 认证为有哪几个技术方向

Oracle 认证技术方向&#xff0c;分别是数据库管理、开发、云平台&#xff0c;每个方向都有不同的学习等级 数据库运维方向 Oracle Certified Professional&#xff08;OCP&#xff09;&#xff1a;19c OCA内容已和OCP合并 OCP 19c属于oracle认证专家&#xff0c;要求考生掌握深…...

25物理学研究生复试面试问题汇总 物理学专业知识问题很全! 物理学复试全流程攻略 物理学考研复试调剂真题汇总

正在为物理考研复试专业面试发愁的你&#xff0c;是不是不知道从哪开始准备&#xff1f; 学姐告诉你&#xff0c;其实物理考研复试并没有你想象的那么难&#xff01;只要掌握正确的备考方法&#xff0c;稳扎稳打&#xff0c;你也可以轻松拿下高分&#xff01;今天给大家准备了…...

网络安全技术与应用

文章详细介绍了网络安全及相关技术&#xff0c;分析了其中的一类应用安全问题——&#xff30;&#xff23;机的安全问题&#xff0c;给出了解决这类问题的安全技术——&#xff30;&#xff23;防火墙技术。 &#xff11; 网络安全及相关技术 自&#xff12;&#xff10;世纪…...

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口&#xff1a; 配置路由 通过apisix 的API管理接口来创建&#xff08;此路由&#xff0c;直接…...

深度剖析数据分析职业成长阶梯

一、数据分析岗位剖析 目前&#xff0c;数据分析领域主要有以下几类岗位&#xff1a;业务数据分析师、商业数据分析师、数据运营、数据产品经理、数据工程师、数据科学家等&#xff0c;按照工作侧重点不同&#xff0c;本文将上述岗位分为偏业务和偏技术两大类&#xff0c;并对…...

HarmonyOS学习第11天:布局秘籍RelativeLayout进阶之路

布局基础&#xff1a;RelativeLayout 初印象 在 HarmonyOS 的界面开发中&#xff0c;布局是构建用户界面的关键环节&#xff0c;它决定了各个组件在屏幕上的位置和排列方式。而 RelativeLayout&#xff08;相对布局&#xff09;则是其中一种功能强大且灵活的布局方式&#xff0…...

问题修复-后端返给前端的时间展示错误

问题现象&#xff1a; 后端给前端返回的时间展示有问题。 需要按照yyyy-MM-dd HH:mm:ss 的形式展示 两种办法&#xff1a; 第一种 在实体类的属性上添加JsonFormat注解 第二种&#xff08;建议使用&#xff09; 扩展mvc框架中的消息转换器 代码&#xff1a; 因为配置类继…...

怎么排查页面响应慢的问题

一、排查流程图 -----------------| 全局监控报警触发 |-----------------|▼-----------------| 定位异常服务节点 |-----------------|------------------▼ ▼ ----------------- ----------------- | 基础设施层排查 | | 应用层代码排查 | | (网…...

第二十四:5.2【搭建 pinia 环境】axios 异步调用数据

第一步安装&#xff1a;npm install pinia 第二步&#xff1a;操作src/main.ts 改变里面的值的信息&#xff1a; <div class"count"><h2>当前求和为&#xff1a;{{ sum }}</h2><select v-model.number"n">  // .number 这里是…...

SpringBoot——生成Excel文件

在Springboot以及其他的一些项目中&#xff0c;或许我们可能需要将数据查询出来进行生成Excel文件进行数据的展示&#xff0c;或者用于进行邮箱发送进行附件添加 依赖引入 此处demo使用maven依赖进行使用 <dependency><groupId>org.apache.poi</groupId>&…...

java高级(IO流多线程)

file 递归 字符集 编码 乱码gbk&#xff0c;a我m&#xff0c;utf-8 缓冲流 冒泡排序 //冒泡排序 public static void bubbleSort(int[] arr) {int n arr.length;for (int i 0; i < n - 1; i) { // 外层循环控制排序轮数for (int j 0; j < n -i - 1; j) { // 内层循环…...

MySQL 用户权限管理深度解析:从基础到高阶实践(2000字指南)

MySQL 用户权限管理是数据库安全与运维的核心环节。无论是本地开发环境还是企业级生产环境,合理配置用户权限、理解版本差异、遵循安全规范都至关重要。本文将从 ​基础权限配置、版本差异详解、安全加固策略、高阶权限管理、故障排查​ 等多个维度展开,覆盖 MySQL 5.7、8.0 …...

【0011】HTML其他文本格式化标签详解(em标签、strong标签、b标签、i标签、sup标签、sub标签......)

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; 本文旨在深入探讨HTML中其他的文本格式化标签&#xff0c;主要有<em> 标签、<strong> 标签、…...

数据虚拟化的中阶实践:从概念到实现

数据虚拟化的中阶实践:从概念到实现 在大数据时代,数据的数量、种类和来源呈现爆炸式增长,如何高效、灵活地访问和利用这些数据成为了企业面临的重要问题。数据虚拟化作为一种创新的技术,正逐渐成为解决这一难题的关键。它通过抽象化层将底层数据源与应用程序隔离,使得数…...

AI辅助学习vue第十四章

第十四章&#xff1a;技术引领与未来展望 在第十五章&#xff0c;你已经在Vue技术领域深耕许久&#xff0c;积累了丰富的经验与卓越的影响力。此时&#xff0c;你将站在行业前沿&#xff0c;引领技术走向&#xff0c;为Vue技术的未来发展开辟新道路。 1. 引领Vue技术发展方向…...

DeepEP库开源啦!DeepSeek优化GPU通信,破算力瓶颈。

在人工智能和大数据日益盛行的今天&#xff0c;算力成为了制约技术发展的关键因素之一。随着模型规模的不断扩大&#xff0c;GPU间的通信瓶颈问题日益凸显&#xff0c;成为了制约深度学习训练效率的一大难题。近日&#xff0c;DeepSeek团队开源了DeepEP库&#xff0c;旨在通过优…...

蓝桥杯web第三天

展开扇子题目&#xff0c; #box:hover #item1 { transform:rotate(-60deg); } 当悬浮在父盒子&#xff0c;子元素旋转 webkit display: -webkit-box&#xff1a;将元素设置为弹性伸缩盒子模型。-webkit-box-orient: vertical&#xff1a;设置伸缩盒子的子元素排列方…...

Gin从入门到精通 (七)文件上传和下载

文件上传和下载 1.文件上传 1.1单文件上传 在 Gin 中处理单文件上传&#xff0c;可以使用 c.FormFile 方法获取上传的文件&#xff0c;然后使用 c.SaveUploadedFile 方法保存文件。 package mainimport ("github.com/gin-gonic/gin""log" )func main()…...

【Java】Stream API

概述 Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充&#xff0c;因为Stream API可以极大提供Java程序员的生产力&#xff0c;让程序员写出高效率、干净、简洁的代码。 Stream是Java8中处理集合的关键抽象概念&#…...

linux-Dockerfile及docker-compose.yml相关字段用途

文章目录 计算机系统5G云计算LINUX Dockerfile及docker-conpose.yml相关字段用途一、Dockerfile1、基础指令2、.高级指令3、多阶段构建指令 二、Docker-Compose.yml1、服务定义&#xff08;services&#xff09;2、高级服务配置3、网络配置 (networks)4、卷配置 (volumes)5、扩…...

基于Selenium的Python淘宝评论爬取教程

文章目录 前言1. 环境准备安装 Python&#xff1a;安装 Selenium&#xff1a;下载浏览器驱动&#xff1a; 2. 实现思路3. 代码实现4. 代码解释5. 注意事项 前言 以下是一个基于 Selenium 的 Python 淘宝评论爬取教程&#xff0c;需要注意的是&#xff0c;爬取网站数据应当遵守…...

网络空间安全(7)攻防环境搭建

一、搭建前的准备 硬件资源&#xff1a;至少需要两台计算机&#xff0c;一台作为攻击机&#xff0c;用于执行攻击操作&#xff1b;另一台作为靶机&#xff0c;作为被攻击的目标。 软件资源&#xff1a; 操作系统&#xff1a;如Windows、Linux等&#xff0c;用于安装在攻击机和…...

【Veristand】Veristand 预编写教程目录

很久没有更新&#xff0c;最近打算出一期Veristand教程&#xff0c;暂时目录列成下面这个表格&#xff0c;如果各位有关心的遗漏的点&#xff0c;可以在评论区提问&#xff0c;我后期可以考虑添加进去&#xff0c;但是提前声明&#xff0c;太过小众的点我不会&#xff0c;欢迎各…...

大白话页面加载速度,如何优化提升?

大白话页面加载速度&#xff0c;如何优化提升&#xff1f; 咱来好好唠唠页面加载速度这事儿&#xff0c;再说说怎么把它提上去。 页面加载速度是咋回事儿 页面加载速度啊&#xff0c;就好比你去餐厅吃饭&#xff0c;从你坐下点餐到饭菜端上桌的时间。在网页里&#xff0c;就…...

PyCharm 环境配置精髓:打造高效 Python 开发的基石

PyCharm 环境配置精髓:打造高效 Python 开发的基石 在现代软件开发的浪潮中,Python 语言以其简洁、高效和强大的生态系统,成为了众多开发者和企业的首选。而 PyCharm,作为 JetBrains 倾力打造的专业 Python IDE,更是凭借其智能的代码辅助、强大的调试功能和丰富的插件生态…...

通过百度构建一个智能体

通过百度构建一个智能体 直接可用,我不吝啬算力 首先部署一个模型,我们选用deepseek14 构建智能体思考步骤,甚至多智能体; from openai import OpenAIclass Agent:def __init__(self, api_key, base_url, model...

【Maui】自定义统一色彩样式

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;3.1 消息扩展库3.2 样式的使用 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI&#xff0c;可…...

Swan 表达式 - 选择表达式

ANSYS Swan 表达式支持选择(selection)表达式 case, if/then/else。选择表达式根据特定的条件选择不同的分支流。 if/then/else 表达式 if/then/else 表达式的文法如下 if expr then expr else expr 其中&#xff0c;首个expr 的布尔表达式&#xff0c;若其为 true, 则返回 …...

关于深度学习的一份介绍

在这篇文章中&#xff0c;我将介绍有关深度学习的东西&#xff0c;主要是它与神经网络的关系、目前主要的网络有哪些&#xff0c;以及加深神经网络的意义等。 一、联系 在之前的文章中&#xff0c;我曾介绍过神经网络&#xff0c;而所谓的神经网络其实就是深度学习的一种架构…...

JAVA安全—手搓内存马

前言 最近在学这个内存马&#xff0c;就做一个记录&#xff0c;说实话这个内存马还是有点难度的。 什么是内存马 首先什么是内存马呢&#xff0c;顾名思义就是把木马打进内存中。传统的webshell一旦把文件删除就断开连接了&#xff0c;而Java内存马则不同&#xff0c;它将恶…...

SpringMVC(2)传递JSON、 从url中获取参数、上传文件、cookie 、session

一。//传递JSON RequestMapping("/r7")//RequestBody请求 public String r7(RequestBody UserInto user){ return "接收&#xff1a;"user.toString(); } 也可以&#xff1a; 二. //从url中获取参数 RequestMapping("/article/{t}/{articId}&qu…...

unity和unity hub关系

unity和unity hub关系 Unity和Unity Hub是紧密相关但功能不同的两个软件,以下是它们的关系说明: Unity 定义:是一款专业的实时3D开发平台,广泛用于创建各种类型的3D和2D互动内容,如视频游戏、建筑可视化、汽车设计展示、虚拟现实(VR)和增强现实(AR)应用等。功能:提供…...

机器学习:监督学习、无监督学习和强化学习

机器学习&#xff08;Machine Learning, ML&#xff09;是人工智能&#xff08;AI&#xff09;的一个分支&#xff0c;它使计算机能够从数据中学习&#xff0c;并在没有明确编程的情况下执行任务。机器学习的核心思想是使用算法分析数据&#xff0c;识别模式&#xff0c;并做出…...

DeepSeek-V3:AI语言模型的高效训练与推理之路

参考&#xff1a;【论文学习】DeepSeek-V3 全文翻译 在人工智能领域&#xff0c;语言模型的发展日新月异。从早期的简单模型到如今拥有数千亿参数的巨无霸模型&#xff0c;技术的进步令人瞩目。然而&#xff0c;随着模型规模的不断扩大&#xff0c;训练成本和推理效率成为了摆在…...

计算机毕设-基于springboot的社团管理系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...

[IP] DDR_FIFO(DDR3 用户FIFO接口)

IP(DDR_FIFO)将DDR3 IP的用户侧复杂接口修改为简易的FIFO接口&#xff0c;用户侧更加简易例化使用MIG 核 IP介绍 c0_xx (连接DDR app接口) 此IP 仅需根据MIG配置进行有限修改&#xff0c;即可使用&#xff01; 关于IP详细使用说明&#xff0c;参考IP datasheet&#xff01; 示…...

第 11 章:当代定价问题总结

本章重点讨论了商品化&#xff08;Commoditization&#xff09;、折扣对利润的影响、价格战&#xff08;Price Wars&#xff09;及超级竞争&#xff08;Hypercompetition&#xff09;&#xff0c;并提供了相应的应对策略。 1. 商品化&#xff08;Commoditization&#xff09; …...

基于ssm的校园跑腿管理系统+vue

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统共有管理员、用户两个角色 管理员主要的功能用户信息管理、任务信息管理、任务类型管理、接单信息管理、公告信息管理、投诉信息管理、公告类型管…...

36. Spring Boot 2.1.3.RELEASE 中实现监控信息可视化并添加邮件报警功能

1. 创建 Spring Boot Admin Server 项目 1.1 添加依赖 在 pom.xml 中添加 Spring Boot Admin Server 和邮件相关依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-w…...

C# WinForm程序中如何调试dll接口

公司的SF系统是自主开发的。不同的机种会有不同数据记录保存的需求&#xff0c;尤其是客户SQE更是各种奇思妙想......于是做了一个接口&#xff0c;实践之下效果还不错呢。 每每总是忘记怎么调试接口&#xff0c;特记录下备查。首先要将&#xff0c; 1 DLL项目与WinForms项目…...

SslConnection::SslConnection()详解

一、&#x1f50d; SslConnection::SslConnection() 详解 这个构造函数的主要作用是&#xff1a; 创建 SSL 对象创建 BIO&#xff08;I/O 缓冲区&#xff09;初始化 SSL 服务器模式绑定回调函数&#xff08;onRead() 处理接收数据&#xff09; &#x1f4cc; 1. 初始化 SSL 相…...