博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十四章 字符、字符串、编码
阅读量:7052 次
发布时间:2019-06-28

本文共 1153 字,大约阅读时间需要 3 分钟。

 

一、字符:.NET FrameWork中字符总是表示成16位的 Unicode值。

 二、字符和数字转化有三种方式 直接转化、Convert、IConvertible

 

三、字符串: string  存在于堆上属于引用类型。

字符串拼接建议使用 StringBuilder,因为每次+号拼接会产生额外的内存开销,产生新的字符串。

四、字符串比较:

StringComparison.Ordinal 效率较高,先看字符数数量相等的话才开始比较,否则直接返回false ,这是忽略语言环境的前提下。

System.StringComparer:适合大量字符串,反复执行同一比较。具体机制没有研究。

 

五、字符串留用:简单的说就是为了节省内存消耗,共享字符串。原理是 一个Hash表,表中是一个个字符串,单是实际内存是在堆上。Hash特性 key的唯一性。达到了共享。

 

六、字符串池:编译源码时候将单个字符串多个实例合并成一个。在编译字符串源码插入到元数据时候。元数据中该字符串的引用被修改为,引用同一个字符串实例(就刚被合并过后的那个实例)。这种技术叫做字符串池。而不是和线程池中线城池一样的概念。

 

七、字符串编码: 字节在传输过程中需要编码,响应的接收方需要解码。为了安全、信息不丢失、等等就要编码解码。

抽象类Encoding有个静态属性GetEncoding 静态属性是全局的公用的因此不会构建额外的对象,可以减少GC压力,首选该属性。

           Encoding.GetEncoding("abc");

           System.Text.UnicodeEncoding.GetEncoding("abv");//继承自 抽象类 Encoding

         System.Text.UTF8Encoding.GetEncoding("abv");//继承自 抽象类 Encoding

因此后面的两个是抽象类Encoding的派生类,会产生额外的对象

 

八、字节流编码:System.Net.Sockets.NetworkStream 的编码方式2种方案第一种上面的Encoding来编码,单是Encoding方式获取字节流时候需要是 2的倍数。因此还要利用获取数量的方式然后处理最末尾的字节流是否是2的倍数。因此有一个简单的方式就是Base64:他用System.Convert的静态方法来实施解码编码。

 

 

九、安全字符串:System.Security.SecureString 用法如下

 

 

 

他是在非托管内存中的加密字符串。仅仅在你调用她的 几个属性时候才处于未加密状态,

AppendCahr、InSertAt、RemovAt、SetAt时候。

 

 

转载于:https://www.cnblogs.com/LiMin/p/10861690.html

你可能感兴趣的文章
如何替代Flex?
查看>>
控制属性修改时间,控制时间,联合主键
查看>>
android-包签名
查看>>
Android开发和调试必备工具-SDK Tools
查看>>
【LeetCode】107. Binary Tree Level Order Traversal II (2 solutions)
查看>>
《微软的软件测试之道》读书笔记 之 结构测试技术
查看>>
ASP.NET中Session的个人浅谈
查看>>
数学图形之Kuen Surface
查看>>
统计图表类型选择应用总结&表数据挖掘方法及应用
查看>>
【故障处理】CRS-1153错误处理
查看>>
快来熟练使用 Mac 编程
查看>>
ASP.NET MVC 3 网站优化总结(三)Specify Vary: Accept-Encoding header
查看>>
MVC5 + EF6 简单示例
查看>>
Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****
查看>>
ORACLE里锁有以下几种模式,v$locked_object,locked_mode
查看>>
【树莓派】Linux 测网速及树莓派源
查看>>
Java用户线程和守护线程
查看>>
[TypeScript] Use the never type to avoid code with dead ends using TypeScript
查看>>
Javascript 与 SPA单页Web富应用
查看>>
SpringMVC之访问静态文件
查看>>