《C#从现象到本质》读书笔记(五)第5章字符串第6章垃圾回收第7章异常与异常处理
《C#从现象到本质》读书笔记(五)第5章字符串
字符串是引用类型,但如果在某方法中,将字符串传入另一方法,在另一方法内部修改,执行完之后,字符串的只并不会改变,而引用类型无论是按值传递还是引用传递,值都会发生变化。
字符串的==操作符被重写为比较字符串的值而不是其引用。
当使用代码将字符串变量等于一个新的值时,堆上会出现一个新的字符串,然后,栈上的变量指向该新字符串。没有任何办法更改原来字符串的值。由于字符串所有非私有的属性和字段都是只读或常量,也没有任何办法修改字符数组的值,字符串的值也就不可能改变了。
大部分情况下,运行速度:StringBuilder>StringBuffer>String。其中,StringBuffer线程安全,StringBuilder非线程安全。
String适用于少量的字符串操作的情况。
StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况。
StringBuffer适用于多线程下在字符缓冲区进行大量操作的情况。
第6章垃圾回收
C#中,使用new关键字,即可完成为资源分配内存的动作。
垃圾回收(GC)会做两件事:通过某种算法,识别内存中的垃圾;将垃圾回收并使得空间可以再度利用。
局部性指的是,由于多个对象被分配在相近的内存中,导致缓存命中率提高,从而提升程序性能的一种性质。
C#的全套GC,即标记压缩法。GC使用的垃圾回收算法是,先标记,之后将垃圾清理、释放,将幸存者升代,最后压缩,使得垃圾释放空出来的位置变得连续。
使用using关键字可以保证对象离开using块时,CLR会自动调用它的Dispose方法。using关键字只能用于那些实现了IDisposible接口的对象。
怎样实现垃圾回收策略:
1)使用using关键字简化代码,并调用Dispose方法作为保证。
2)如果类型中都是托管资源,而且也不存在任何成员继承了IDisposible接口,那么什么都不用做。
3)如果类型中都是托管资源,存在成员继承了IDisposible接口,那么类型本身也应该继承IDisposible接口,然后在Dispose方法中逐一调用成员的Dispose方法。
4)如果类型含有非托管资源,则:
a)类型应当继承IDisposible接口。
b)写一个私有方法,在方法中释放托管资源和非托管资源。
c)实现Dispose方法,调用私有方法,之后调用GC.SuppressFinalize防止析构函数被调用。
d)实现一个析构函数,在其中调用私有方法。
GC有2中不同的工作模式:工作站模式和服务器模式。按照GC线程的工作方法,又可以分为并发方式和非并发方式。在工作站模式上,可以运行并发方式和非并发方式,而在服务器模式上,只能运行非并发方式。
第7章异常与异常处理
提高程序的健壮性。
throw与throw ex的区别在于,后者会把调用栈重置,而前者不会更改调用栈。
《C#从现象到本质》读书笔记(五)第5章字符串第6章垃圾回收第7章异常与异常处理的更多相关文章
- Android驱动开发读书笔记五
第五章 本章介绍了S3C6410开发板的功能,开发板的不同主要是在烧录嵌入式系统的方式不同,以及如何在此开发板上安装Android. 1.安装串口调试工具minicom 首先需要一根USB转串口线,由 ...
- 《CLR.via.C#第三版》第二部分第10,11章节读书笔记(五)
第10章是对 属性 做阐述 属性本质上是方法 匿名类型的使用: }; Console.WriteLine("Name={0},Year={1}",o1.Name,o1.Year); ...
- 悟道—位IT高管20年的职场心经(读书笔记五)
悟道--一位IT高管20年的职场心经 第五章 搞定老板 "老板就是老板" 这一点,你可能会忘了,他一定不会忘: "老板不会总是老板" 这一点,他可能会忘,你最好 ...
- 《JavaScript 高级程序设计》读书笔记五 引用类型
一 Object类型 a.两种创建方式: 1.new+构造函数Object; 2.对象字面量表示法: b.两种访问属性方式: 1.点表示法(.属性): 2.方括号([“属性”]): 二 Arr ...
- 《深入理解java虚拟机》读书笔记五——第六章
第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...
- 《深入理解Java虚拟机》读书笔记五
第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...
- 《实战Java高并发程序设计》读书笔记五
第五章 并行模式与算法 1.单例模式 是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统一个类只产生一个实例. 对于频繁创建使用的对象可以省略new 操作花费的时间,可以减少系统开销. 由 ...
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
1.表单验证插件Validation 2.表单插件Form 3.动态事件绑定插件livequery 可以为后来的元素绑定事件 类似于jQuery中的live()方法 4.jQuer ...
- R语言实战读书笔记(五)高级数据管理
5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...
随机推荐
- WPF Chart
https://quant.stackexchange.com/questions/7065/how-to-create-charts-in-wpf-finance-applications
- 安卓打开远程调试(免root)
首先用数据线连接adb,在pc端执行: adb tcpip 5555 然后就能拔掉数据线了. pc执行这个: adb connect 172.19.208.2 就能连接上
- oracle 序列sequence
查询所有的序列: select 'create sequence '||sequence_name|| ' minvalue '||min_value|| ' maxvalue '||max_valu ...
- java判断是否是数字
1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...
- 面试小结之Elasticsearch篇(转)
最近面试一些公司,被问到的关于Elasticsearch和搜索引擎相关的问题,以及自己总结的回答. Elasticsearch是如何实现Master选举的? Elasticsearch的选主是ZenD ...
- Java POI操作Excel注意点
excel的行索引和列索引都是从0开始,而行号和列号都是从1开始 POI·操作excel基本上都是使用索引 XSSFRow对象的 row.getLastCellNum() 方法返回的是当前行最后有效列 ...
- spring-AOP之通知和顾问
通知和顾问都是切面的实现形式,其中通知可以完成对目标对象方法简单的织入功能. 而顾问包装了通知,可以让我们对通知实现更加精细化的管理,让我们可以指定具体的切入点. 通知分为前置通知,环绕通知及后置通知 ...
- php中使用com组件出现"拒绝访问"的处理
php中使用com组件出现"拒绝访问"的处理 2010年05月14日 12:28:00 阅读数:1529 代码如下, // 建立一个指向新COM组件的索引 $word = new ...
- JAVA四则运算(读写文件)
完成时间:17:10 package 四则运算试题; import java.io.BufferedReader; import java.io.PrintStream; import java.ut ...
- ubuntu系统中安装eclipse
具体可以看这篇博文 .https://www.cnblogs.com/sanduo1314/articles/5137090.html 然后再/usr/share/applications中找到ecl ...