Java web常用知识点

本文详细介绍了计算机中字符编码的基本原理,包括Unicode、UTF-8等常见编码方式,并深入探讨了Java IO流中的字符流与字节流转换机制,如InputStreamReader与OutputStreamWriter的使用。
html:标签已经定义,数据和表示混合在一起
xml:自己定义标签,只是表示数据,关于如何显示没有定义。


DTD:文档类型定义,来规范XML文档。



java 序列化技术



编码

编码的原因:
计算机中存储信息的最小单元是一个字节,即8个bit,所以能表示的字符范围是0-255
人类要表示的字符太多,无法用一个字节来完全表示
要解决这个矛盾,必须要用一个新的数据结构char,从cha到byte必须编码
常用的编码方式:ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16

Unicode(Universal Code 统一编码)
UTF-16:用两个字节表示一个字符,java以UTF-16作为内存的字符存储格式。




InputeStreamReader类就是关联字节到字符的桥梁,它负责在I/O过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它又委托StreamDecoder去做,在StreamDecoder解码过程中必须由用户指定Charset编码格式。如果没有指定Charset,将使用本地环境的默认字符集。

字符流和字节流之间的相互转化

整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。
InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。
如果以文件操作为例,则内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件中,读取时需要将读入的字节流通过InputStreamReader变为字符流。过程如下:
写入数据-->内存中的字符数据-->字符流-->OutputStreamWriter-->字节流-->网络传输(或文件保存) 读取数据<--内存中的字符数据<--字符流<--InputStreamReader<--字节流<--网络传输(或文件保存)
可以清楚地发现,不管如何操作,最终全部是以字节的形式保存在文件中或者进行网络传输。

public class encode {     @SuppressWarnings("resource")    public static void main(String[] args) throws Exception {        

String file = "stream";        String charset = "UTF-8";

        FileOutputStream outputStream = new FileOutputStream(file);
        OutputStreamWriter writer = new OutputStreamWriter(outputStream, charset);//字符流转化为字节流
        String s = "这是要保存的中文字符";
        writer.write(s);
        writer.close();//必须close
        FileInputStream inputStream = new FileInputStream(file);
        InputStreamReader reader = new InputStreamReader(inputStream);//字节流转化为字符流

        StringBuffer buffer = new StringBuffer();        

char[] buf = new char[64];      

 int count = 0;       

while ((count = reader.read(buf)) != -1) {           

buffer.append(buf, 0, count);        }      

  reader.close();       

System.out.println(buffer.toString());    }

}

内存操作中的编码

String 提供了将字节和字符相互转化的函数
String s=“这是一段中文字符串”;
byte[] b=s.getBytes(“UTF-8”);
String n=new String(b,”UTF-8)"

前后编码要一致







javac 编译原理

javac 任务就是将java语言规范转化成java虚拟机语言规范,完成翻译工作。

Servlet 详解




单向双向V2G 环境下分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)内容概要:本文介绍了在单向和双向V2G(Vehicle-to-Grid)环境下,分布式电源与电动汽车充电站的联合配置方法,并提供了基于Matlab的代码实现。研究涵盖电力系统优化、可再生能源接入、电动汽车充放电调度、储能配置及微电网经济调度等多个关键技术领域,重点探讨了在不同电价机制和需求响应策略下,如何通过智能优化算法实现充电站与分布式电源的协同规划与运行优化。文中还展示了多种应用场景,如有序充电调度、鲁棒优化模型、多目标优化算法(如NSGA-II、粒子群算法)在电力系统中的实际应用,体现了较强的工程实践价值和技术综合性。; 适合人群:具备电力系统、新能源、智能优化算法等相关背景的科研人员、研究生及从事能源系统规划与优化的工程技术人员;熟悉Matlab/Simulink仿真工具者更佳。; 使用场景及目标:①用于科研项目中关于电动汽车与分布式电源协同配置的模型构建与仿真验证;②支持毕业论文、期刊投稿中的案例分析与算法对比;③导实际电力系统中充电站布局与能源调度的优化设计。; 阅读建议:建议结合文中提供的Matlab代码与具体案例进行同步实践,重点关注优化模型的数学建模过程与算法实现细节,同时可参考文末网盘资源获取完整代码与数据集以提升学习效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值