今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。
这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。
下面就是我的笔记,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。
一、ASCII 码
我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0
和1
两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000
到11111111
。
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
ASCII 码一共规定了128个字符的编码,比如空格SPACE
是32(二进制00100000
),大写的字母A
是65(二进制01000001
)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0
。
二、非 ASCII 编码
英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é
的编码为130(二进制10000010
)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é
,在希伯来语编码中却代表了字母Gimel
(ג
),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0--127表示的符号是一样的,不一样的只是128--255的这一段。
至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。
中文编码的问题需要专文讨论,这篇笔记不涉及。这里只指出,虽然都是用多个字节表示一个符号,但是GB类的汉字编码与后文的 Unicode 和 UTF-8 是毫无关系的。
三. Unicode
正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。
可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。
Unicode 当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639
表示阿拉伯字母Ain
,U+0041
表示英语的大写字母A
,U+4E25
表示汉字严
。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。
四、Unicode 的问题
需要注意的是,Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
比如,汉字严
的 Unicode 是十六进制数4E25
,转换成二进制数足足有15位(100111000100101
),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。
这里就有两个严重的问题,第一个问题是,如何才能区别 Unicode 和 ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0
,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。
它们造成的结果是:1)出现了 Unicode 的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示 Unicode。2)Unicode 在很长一段时间内无法推广,直到互联网的出现。
五、UTF-8
互联网的普及,强烈要求出现一种统一的编码方式。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一。
UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8 的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0
,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
2)对于n
字节的符号(n > 1
),第一个字节的前n
位都设为1
,第n + 1
位设为0
,后面字节的前两位一律设为10
。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
下表总结了编码规则,字母x
表示可用编码的位。
Unicode符号范围 | UTF-8编码方式 (十六进制) | (二进制) ----------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
跟据上表,解读 UTF-8 编码非常简单。如果一个字节的第一位是0
,则这个字节单独就是一个字符;如果第一位是1
,则连续有多少个1
,就表示当前字符占用多少个字节。
下面,还是以汉字严
为例,演示如何实现 UTF-8 编码。
严
的 Unicode 是4E25
(100111000100101
),根据上表,可以发现4E25
处在第三行的范围内(0000 0800 - 0000 FFFF
),因此严
的 UTF-8 编码需要三个字节,即格式是1110xxxx 10xxxxxx 10xxxxxx
。然后,从严
的最后一个二进制位开始,依次从后向前填入格式中的x
,多出的位补0
。这样就得到了,严
的 UTF-8 编码是11100100 10111000 10100101
,转换成十六进制就是E4B8A5
。
六、Unicode 与 UTF-8 之间的转换
通过上一节的例子,可以看到严
的 Unicode码 是4E25
,UTF-8 编码是E4B8A5
,两者是不一样的。它们之间的转换可以通过程序实现。
Windows平台,有一个最简单的转化方法,就是使用内置的记事本小程序notepad.exe
。打开文件后,点击文件
菜单中的另存为
命令,会跳出一个对话框,在最底部有一个编码
的下拉条。
里面有四个选项:ANSI
,Unicode
,Unicode big endian
和UTF-8
。
1)ANSI
是默认的编码方式。对于英文文件是ASCII
编码,对于简体中文文件是GB2312
编码(只针对 Windows 简体中文版,如果是繁体中文版会采用 Big5 码)。
2)Unicode
编码这里指的是notepad.exe
使用的 UCS-2 编码方式,即直接用两个字节存入字符的 Unicode 码,这个选项用的 little endian 格式。
3)Unicode big endian
编码与上一个选项相对应。我在下一节会解释 little endian 和 big endian 的涵义。
4)UTF-8
编码,也就是上一节谈到的编码方法。
选择完"编码方式"后,点击"保存"按钮,文件的编码方式就立刻转换好了。
七、Little endian 和 Big endian
上一节已经提到,UCS-2 格式可以存储 Unicode 码(码点不超过0xFFFF
)。以汉字严
为例,Unicode 码是4E25
,需要用两个字节存储,一个字节是4E
,另一个字节是25
。存储的时候,4E
在前,25
在后,这就是 Big endian 方式;25
在前,4E
在后,这是 Little endian 方式。
这两个古怪的名称来自英国作家斯威夫特的《格列佛游记》。在该书中,小人国里爆发了内战,战争起因是人们争论,吃鸡蛋时究竟是从大头(Big-endian)敲开还是从小头(Little-endian)敲开。为了这件事情,前后爆发了六次战争,一个皇帝送了命,另一个皇帝丢了王位。
第一个字节在前,就是"大头方式"(Big endian),第二个字节在前就是"小头方式"(Little endian)。
那么很自然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪一种方式编码?
Unicode 规范定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做"零宽度非换行空格"(zero width no-break space),用FEFF
表示。这正好是两个字节,而且FF
比FE
大1
。
如果一个文本文件的头两个字节是FE FF
,就表示该文件采用大头方式;如果头两个字节是FF FE
,就表示该文件采用小头方式。
八、实例
下面,举一个实例。
打开"记事本"程序notepad.exe
,新建一个文本文件,内容就是一个严
字,依次采用ANSI
,Unicode
,Unicode big endian
和UTF-8
编码方式保存。
然后,用文本编辑软件UltraEdit 中的"十六进制功能",观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节D1 CF
,这正是严
的 GB2312 编码,这也暗示 GB2312 是采用大头方式存储的。
2)Unicode:编码是四个字节FF FE 25 4E
,其中FF FE
表明是小头方式存储,真正的编码是4E25
。
3)Unicode big endian:编码是四个字节FE FF 4E 25
,其中FE FF
表明是大头方式存储。
4)UTF-8:编码是六个字节EF BB BF E4 B8 A5
,前三个字节EF BB BF
表示这是UTF-8编码,后三个E4B8A5
就是严
的具体编码,它的存储顺序与编码顺序是一致的。
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
相关推荐
内容概要:本文详细介绍了针对不平衡电网电压情况下的虚拟同步发电机(VSG)模型预测控制(MPC)的研究与实现。主要内容涵盖正负序电流分解、模型预测控制的核心算法设计、代价函数优化、电压矢量选择策略等方面。文中通过MATLAB/Simulink平台进行了详细的建模与仿真,展示了MPC在抑制电流畸变、稳定功率输出方面的显著优势。仿真结果显示,在电网电压不平衡情况下,MPC能够将电流THD从12%降至4.8%,功率波动从±15%减小到±3%以内。 适合人群:电力电子工程师、自动化控制研究人员、新能源并网技术人员。 使用场景及目标:适用于解决电网电压不平衡导致的电流畸变和功率波动问题,特别是在风电、光伏等新能源发电系统的并网应用中。目标是提高系统的稳定性、可靠性和电能质量。 其他说明:该方案对处理器性能有一定要求,建议采用高性能DSP或FPGA进行硬件加速。同时提供了丰富的仿真结果和代码片段,便于理解和复现。
内容概要:本文详细介绍了使用C#通过原生Socket与西门子S7-200SMART PLC进行异步通讯的方法和技术要点。首先展示了如何建立TCP连接,使用Poll方法检测连接状态,以及通过异步读写实现高效的通讯机制。接着讨论了多线程并发处理多个PLC连接的技术,如使用Parallel.ForEach和SemaphoreSlim控制并发量,确保系统稳定性。此外,文中还提供了具体的代码示例,包括构造读取DB块的报文、处理数据交互、优化内存管理和提高性能等方面的内容。最后,作者分享了一些实战经验,强调了异步编程、线程安全和资源管理的重要性。 适合人群:从事工业自动化领域的工程师,特别是熟悉C#编程并且需要与PLC进行通讯的开发者。 使用场景及目标:适用于需要高效、稳定的PLC通讯解决方案的工业环境,旨在帮助工程师掌握C#与PLC通讯的关键技术和最佳实践,从而提升系统的性能和可靠性。 其他说明:文中提供的代码示例和技巧经过实际项目验证,能够有效应对大规模PLC连接的需求,降低系统资源消耗,提高通讯效率。
内容概要:本文详细介绍了如何使用NSGA-III算法结合Optuna库进行随机森林模型的多目标优化。首先定义了一个目标函数,该函数旨在最小化交叉验证误差和测试集误差。接着,通过Optuna创建研究对象并执行优化操作,在此过程中,NSGA-III算法用于寻找帕累托前沿上的最佳解。优化完成后,作者展示了多种可视化手段,如3D曲面图、热力图以及预测对比图,帮助理解参数间的关系及其对模型性能的影响。此外,还探讨了一些实用技巧,例如调整采样范围、种群规模等。 适用人群:熟悉机器学习基本概念和技术栈的研究人员或工程师,特别是对随机森林模型有深入研究兴趣的人士。 使用场景及目标:适用于希望提高随机森林模型性能,同时掌握多目标优化理论的应用场景。主要目标是通过合理的参数配置使模型达到更好的泛化能力和更高的效率。 其他说明:文中提供了完整的代码片段,便于读者复现实验结果。强调了调参过程中需要注意的问题,如避免过度扩展搜索空间、合理设定种群规模等。
内容概要:本文详细介绍了利用Matlab进行永磁同步电机(PMSM)伺服控制系统中三环PI参数自整定的方法。首先,文章展示了电流环、转速环和位置环的具体实现细节,包括前馈解耦、带宽设定以及参数计算等关键步骤。其次,文中提供了具体的Matlab代码片段,解释了各个控制环节的工作原理和技术要点。此外,作者分享了一些实践经验,如参数边界保护、转动惯量估算、采样周期选择等,并指出了一些常见的错误及其解决方案。最后,附带的论文资料进一步补充了理论背景。 适合人群:从事电机控制研究的技术人员、高校相关专业师生、自动化领域的工程师。 使用场景及目标:适用于需要快速掌握PMSM伺服控制系统三环PI参数自整定方法的研究人员和工程师。主要目标是提高系统的稳定性和响应速度,减少人工调参的时间成本。 其他说明:文中提供的模型和代码可以在Matlab 2018及以上版本中运行,同时建议使用者结合实际情况调整参数并参考附带的学术文献以获得更好的效果。
数据集介绍:道路多类别交通目标检测数据集 一、基础信息 数据集名称:道路多类别交通目标检测数据集 数据规模: - 训练集:728张道路场景图片 - 验证集:217张道路场景图片 - 测试集:100张道路场景图片 分类类别: Animal(动物)、Auto(机动车)、Bus(公交车)、Car(轿车)、Carts(手推车)、Person(行人)、Rikshaw(人力车)、Truck(卡车)、Two-wheeler(两轮车) 标注格式: YOLO格式标注,包含标准化中心坐标和宽高比例,每行标注对应一个检测目标 数据特性:JPEG格式真实道路采集图像,涵盖日间多种光照条件场景 二、适用场景 自动驾驶系统开发: 支持开发适用于印度复杂道路环境的感知系统,可识别9类典型交通参与者与障碍物 智能交通监控系统: 用于训练交通流量统计、违规行为检测等AI模型,适配路口监控设备部署 车载安全预警系统: 提供典型印度道路元素识别能力,支持开发两轮车预警、行人防撞等车载安全功能 区域交通研究: 包含特色交通元素(人力车、动物等),支持南亚地区交通特征研究 三、数据集优势 典型道路元素全覆盖: 包含印度道路特有的三轮人力车、动物穿行等特色场景,9个类别精准覆盖机动车/非机动车/行人等核心交通要素 真实场景适配性强: 数据采集自真实道路环境,包含密集车流、混合交通等复杂场景,提升模型实际部署效果 标注质量保障: 专业标注团队进行三轮质量校验,确保边界框定位准确率和类别标注正确率>98% 模型训练友好性: 严格划分训练集/验证集/测试集,标注文件与图片文件一一对应,支持YOLO系列模型即插即用训练 地域特征突出: 专注印度及南亚地区道路环境,包含右舵驾驶、特殊交通标志等区域特征数据
内容概要:本文详细介绍了使用FLUENT进行对冲燃烧锅炉的数值模拟,特别是针对非预混燃烧模型的实际应用。文章首先讲解了网格划分的方法,强调了ICEM六面体网格在燃烧器附近的精细处理以及边界层的设置。接着讨论了燃烧模型的选择和设置,包括非预混燃烧模型的具体参数设定、自定义UDF用于挥发分释放速率计算、以及求解器设置的优化方法。此外,还提供了后处理技巧,如利用POST工具生成温度场和NOx分布图,并给出了多个实用的实战技巧和注意事项,帮助避免常见的模拟错误。 适合人群:从事燃烧模拟研究的技术人员、热电厂工程师、高校相关专业师生。 使用场景及目标:适用于需要进行对冲燃烧锅炉数值模拟的研究项目,旨在提高模拟精度和效率,减少常见错误,确保模型能够准确反映实际工况。 其他说明:文中附带了完整的cas/dat文件、ICEM网格文件和POST后处理模板,便于读者直接应用于实际工作中。同时,作者分享了许多基于实践经验的技巧和建议,有助于初学者快速掌握并应用这些技术。
内容概要:本文介绍了2024年11月发表在《Artificial Intelligence Review》上的改进逃离优化算法IESC。IESC通过一系列创新策略如动态步长调整、自适应逃逸机制、群体协同搜索以及混沌映射初始化等,显著提高了原始ESC算法的性能。具体来说,IESC能够在复杂搜索空间中更快、更准确地找到全局最优解,避免陷入局部最优。此外,IESC还在多个标准测试函数上展示了优越的性能,特别是在处理高维、多峰问题时表现出色。 适合人群:对优化算法感兴趣的科研人员、算法开发者、工程师。 使用场景及目标:适用于需要解决复杂优化问题的实际应用场景,如工程设计、资源分配、数据分析等。IESC的目标是提供一种更高效的优化解决方案,帮助用户在各种复杂环境中找到最优解。 其他说明:尽管IESC在大多数情况下表现出色,但在某些特定条件下(如超平坦的Sphere函数测试)可能会不如原版ESC。因此,选择合适的算法应根据具体问题的特点进行权衡。
内容概要:本文详细介绍了三菱FX3U系列PLC用于温度控制的PID程序及其配套的触摸屏程序。主要内容涵盖PLC梯形图编程中的PID指令应用、参数配置方法、触摸屏界面设计以及调试技巧。文中通过具体实例展示了如何设置PID参数(如比例带、积分时间和微分时间),并解释了如何利用触摸屏进行参数设定和实时监控。此外,还提供了关于如何处理报警和防止过热的安全措施。文章强调了良好的注释对于理解和维护程序的重要性。 适合人群:初学者和初级电气工程师,尤其是那些希望深入了解PLC编程和PID控制的人群。 使用场景及目标:①帮助读者理解PLC中PID控制的工作原理;②提供实际项目的编程经验和调试技巧;③指导读者完成一个完整的温度控制系统的设计与实现。 其他说明:本文不仅提供了详细的代码片段和技术细节,还包括了许多实用的小贴士和注意事项,旨在帮助读者避免常见的错误并提高编程效率。
内容概要:本文详细介绍了如何利用Matlab/Simulink进行三段式距离保护的仿真建模及其优化。首先解释了三段式距离保护的基本概念,即分为三个保护区段,每个区段有不同的响应时间和保护范围。接着,文章展示了具体的建模步骤,包括创建距离保护模块、配置测量输入、处理振荡闭锁以及零序分量的特殊处理。此外,还提供了自动化测试的方法来验证模型的有效性,并探讨了针对分布式电源接入时的自适应保护策略。文中多次强调了参数设置的重要性,如振荡闭锁阈值、零序补偿系数等,并分享了一些实用的经验和技术细节。 适合人群:从事电力系统保护研究的技术人员、高校相关专业师生、对电力系统保护感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解三段式距离保护原理及其实现方法的研究者;希望通过仿真手段提高保护系统性能的工程师;以及需要掌握最新电力系统保护技术和应用的专业人士。 其他说明:文章不仅涵盖了理论知识,还包括大量实际操作指导和代码片段,有助于读者更好地理解和应用所学内容。同时,作者分享了许多来自实践经验的宝贵建议,使读者能够避开常见陷阱并提升工作效率。
1_part1.wav
c++总结(xmind官网:https://xmind.cn/)
大语言模型生成控制参数详解:温度、Top-K与Top-P.md
基于springboot+vue3的智能算法中台管理系统:前端 vue、element-plus,后端 maven、springmvc、spring、mybatis;集成数据管理、标签管理、算法配置、模型中心等功能于一体的系统。 ## 功能介绍 - 系统首页:当前最优模型表现,待办事项,样本数量,训练完成模型数量,训练中模型数量 - 数据管理:数据集增删改查,数据集导入,按数据集名称模糊搜索,按标注类型搜索 - 标签管理:标签信息的增删改查,按标签组名称和描述模糊搜索 - 算法配置:算法信息的增删改查,多条件搜索,启用,停用 - 算法验证:状态显示,开始训练操作 - 算法性能评估:启用,停用,详情查看 - 模型中心:创建模型,训练模型,校验模型,发布模型 ## 环境 - <b>IntelliJ IDEA 2021.3</b> - <b>Mysql 5.7.26</b> - <b>Node 14.14.0</b> - <b>JDK 1.8</b>
内容概要:本文详细介绍了如何使用Abaqus进行超声导波无损检测的有限元分析。首先概述了超声导波的基本原理,即通过分析导波在材料中传播特性的变化来检测内部缺陷。然后,文章逐步讲解了在Abaqus中建立几何模型、定义材料属性、划分网格、施加边界条件和载荷以及求解和结果分析的具体步骤。特别强调了材料参数设定、网格尺寸控制、边界条件处理等方面的技术细节,并提供了相应的Python脚本示例。此外,文中还讨论了一些常见的错误和注意事项,如单位制统一、时间步长的选择等。最后,文章指出超声导波检测在工业领域的广泛应用前景,特别是在管道腐蚀检测和复合材料分层识别方面。 适合人群:从事无损检测研究和技术开发的专业人士,尤其是那些希望深入了解超声导波检测机制并对现有检测方案进行优化的研究人员和工程师。 使用场景及目标:适用于需要评估材料内部结构完整性和寻找潜在缺陷的应用场合。通过对超声导波传播行为的模拟,可以帮助研究人员更好地理解检测过程中涉及的各种因素,从而提高检测精度和可靠性。 其他说明:文章不仅涵盖了理论知识,还包括大量实用的操作指南和技巧提示,有助于读者快速掌握Abaqus平台上的超声导波仿真技能。同时提醒使用者关注一些容易忽视的问题,确保仿真的准确性。
随身WiFi IMEI修改工具v2.0
基于java+jsp的网上购物商城管理系统:前端 jsp、jquery,后端 servlet、jdbc;角色分为管理员、用户;集成商品浏览、购物车、在线结算、订单查询、商品发布等功能于一体的系统。 ## 功能介绍 - 基本功能:登录,注册,退出 - 网站首页:全局搜索,主导航栏,分类导航,轮播图,热门商品展示,限时特卖,新闻资讯 - 商品购买:商品列表展示,商品详情,购物车,在线结算,填写收货地址 - 订单中心:订单列表查询 - 用户列表:用户信息的增删改查,也可以由用户自行注册 - 分类管理:分类信息的增删改查 - 商品管理:商品信息的增删改查,商品图片上传 - 资讯列表:资讯信息的列表查询,资讯详情 ## 环境 - <b>IntelliJ IDEA 2021.3</b> - <b>Mysql 5.7.26</b> - <b>Tomcat 7.0.73</b> - <b>JDK 1.8</b>
内容概要:本文详细介绍了利用MATLAB、YALMIP和CPLEX实现的双层优化方法进行微电网系统容量配置。上层优化负责确定光伏板、风力发电机和储能系统的容量,目标是最小化全生命周期成本;下层优化则关注每日运行调度,确保电力供需平衡并降低成本。文中展示了具体的建模步骤、目标函数设定以及约束条件处理,并讨论了储能系统在不同场景下的表现及其对总成本的影响。 适合人群:从事微电网研究与应用的专业人士,尤其是对优化算法感兴趣的工程师和技术人员。 使用场景及目标:适用于需要精确规划和优化微电网资源配置的实际工程项目,旨在提高能源利用效率,减少运营成本,增强系统的稳定性和鲁棒性。 其他说明:文章强调了实际应用中应注意的问题,如设备成本、维护费用、风光出力预测误差等,并提醒读者不要直接使用示例代码中的参数,而应根据具体情况进行调整。
基于springboot的校园二手网管理系统:前端 jsp、jquery,后端 maven、springmvc、spring、mybatis;角色分为管理员、用户;集成校园二手商品展示、商品详情、购物车,在线结算等功能于一体的系统。 ## 功能介绍 ### 用户 - 基本功能:登录,注册,退出,个人信息查看与修改,密码修改 - 网站首页:主导航栏,轮播图,分类导航商品,商品展示,全局搜索 - 商品购买:商品列表展示,商品详情,收藏,购物车,在线结算 - 我的订单:本人订单信息查询,订单评价,订单删除 - 地址管理:收货地址信息的增删改查 - 我的收藏:收藏列表查看与商品取消收藏 ### 管理员 - 用户管理:用户信息由前台用户自行注册而来,管理员可以查看用户信息和删除用户 - 商品管理:分类信息的增删改查,商品信息的增删改查,商品图片上传,给商品添加促销活动 - 订单管理:用户在前台购买商品的订单数据,管理员查看,发货 - 活动管理:活动信息的列表查询,活动添加,活动删除 ## 环境 - <b>IntelliJ IDEA 2021.3</b> - <b>Mysql 5.7.26</b> - <b>JDK 1.8</b>
内容概要:本文档《java基础面试汇总.pdf》涵盖了广泛的Java基础知识,包括但不限于面向对象的特征(如抽象、继承、封装、多态)、作用域规则、基本数据类型与封装类的区别、位运算与逻辑运算的区别、JVM加载类的机制、垃圾回收机制、异常处理机制、集合框架(如List、Set、Map的区别与特性)、线程的概念及其同步方法、I/O流操作、数据库连接与SQL查询、Web开发技术(如Servlet、JSP、Struts)、EJB与Spring框架的基本概念与使用、数据结构与算法(如排序算法、二叉树遍历)、C++语言特性、以及WebLogic服务器配置等。文档以问答形式呈现,针对每个知识点提供简明扼要的答案,适合用于Java开发者的面试准备和技术复习。 适合人群:具备一定编程基础,尤其是Java语言基础的学习者和开发者,包括但不限于初级到中级水平的Java程序员、Web应用开发者、企业级应用开发者等。 使用场景及目标:①作为Java开发者面试前的复习资料,帮助候选人快速回顾和掌握核心知识点;②作为日常工作中遇到具体问题时的参考手册,例如理解类加载机制、异常处理、线程同步等;③作为新手学习Java编程时的入门指南,辅助理解Java的基础概念和高级特性;④作为企业内部培训或高校教学中的辅助教材,用于指导学生或员工掌握Java技术栈的关键要素。 阅读建议:此文档内容丰富且详尽,建议读者根据自身的知识水平和技术需求有针对性地阅读。对于初学者,可以从基础概念开始逐步深入;对于有一定经验的开发者,可以重点关注自己不太熟悉或容易混淆的知识点。此外,由于文档涉及面广,建议配合实际编码练习来加深理解,尤其是对于多线程编程、异常处理、数据库操作等实践性较强的部分。
内容概要:本文探讨了基于多目标粒子群算法(MOPSO)的综合能源系统优化方法,特别是针对含有冷、热、电的联供系统。首先介绍了综合能源系统的构建及其重要性,然后详细阐述了多目标优化模型的建立,包括目标设定(新能源供应商收益、综合能源供应商收益、用户购电成本最小)和约束条件(电力、热力、冷量平衡)。接着展示了多目标粒子群算法的具体实现步骤,通过Python伪代码解释了粒子初始化、适应度函数设计、速度和位置更新等关键环节。最后讨论了通过该算法获得的运行计划,揭示了设备之间的协同运作规律,并强调了算法在处理多重约束方面的优势。 适用人群:从事能源系统优化、智能电网、分布式能源管理等领域研究的技术人员和研究人员。 使用场景及目标:适用于需要优化冷、热、电联供系统的场合,帮助决策者在满足用户需求的前提下,最大化供应商收益并降低成本。目标是通过多目标粒子群算法找到一组帕累托最优解,使各方利益达到最佳平衡。 其他说明:文中提供了大量Python伪代码示例,便于读者理解和复现实验。此外,还分享了一些实践经验,如约束处理技巧、参数调整策略等,有助于提高算法的实际应用效果。