C#高级编程9 第16章 错误和异常 了解这章可以学会如何处理系统异常以及错误信息. System.Exception类是.NET运行库抛出的异常,可以继承它定义自己的异常类. try块代码包含的代码是可能发生异常的代码catch块代码包含发生异常之后处理错误情况finally块代码用于清理资源以及无论是否出现异常都需要处理的功能代码 对于系统异常和自定义异常都来自Exception类,可以定义多个catch块,处理不同异常的错误. System.Exception类的Data属性可以提供异常的…
话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功心法还是没能参透.于是乎打算重新拾起基础书籍复习一下.说是复习,其实有一部分在项目中不常用的知识还是要重新学习.在园子发现了这本<.net 4.0 面向对象编程漫谈>,觉得不错.那就从这本书开始吧. 数据类型 字段,属性和方法…
Lua中的table就是一种对象,即它拥有状态.拥有独立于其值的标识(self).table与对象一样具有独立于创建者和创建地的征集周期 什么叫对象拥有独立的生命周期? Account = {balance = } function Account.withdraw(v) Account.balance = Acount.balance-v end --则可进行如下调用 Account.withdraw(v) --[[在函数中使用全局名称Account不是个了习惯 因为这个函数只能针对特定对象使…
Lua中的table就是一种对象,看以下一段简单的代码: , b = } , b = } local tb3 = tb1 if tb1 == tb2 then print("tb1 == tb2") else print("tb1 ~= tb2") end tb3.a = print(tb1.a) 上述代码会输出tb1 ~= tb2.说明两个具有相同值得对象是两个不同的对象,同时在Lua中table是引用类型的.我在<Lua中的模块与包>中也总结了,我们…
lua no class It is a prototype based language. 在此语言中没有class关键字来创建类. 现代ES6, 已经添加class类. prototype based 语言没啥优势. lua 如何构建class机制? https://github.com/fanqingsong/oopclass.lua 提供lua的 Object Oriented Programing Class 实现: 比其他实现更加轻量 https://github.com/Yonab…
对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组的缺陷.它灵活,使用,提高软件的开发效率.并且不同的集合适用于不同的场合. 集合框架的好处: 1.容量自增长: 2. 提供有用的数据结构和算法,从而减少编程工作: 3. 提高了程序速度和质量,因为它提供了高性能的数据结构和算法: 4. 允许不同 API 之间的互操作,API之间可以来回传递集合: 5…
1.  多任务处理有两种类型:基于进程和基于线程. 2.  进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存. 3.  线程是进程内部单一的顺序控制流.一个进程拥有多个线程.多个线程共享一个进程的内存空间. 4.  基于进程的特点是允许计算机同时运行两个或更多的程序. 5.  基于线程的多任务处理环境中,线程是最小的处理单位. 6.  基于进程所需的开销更少:每个进程都需要操作系统为其分配独立的内存空间:同意进程中的所有线程都在同意内存…
1.线程安全的定义 当多个线程访问某个类时,不管允许环境采用何种调度方式或者这些线程如何交替执行,这个类都能表现出正确的行为 如果一个类既不包含任何域,也不包含任何对其他类中域的引用.则它一定是无状态的对象,无状态对象一定是线程安全的 2.竞态条件 并发编程中,由于不恰当的执行时序导致不正确的结果.当某个计算结果的正确性取决于多线程交替执行时序时,就会发生竞态条件. 常见的竞态条件: 先检查后执行. 读取-修改-写入 3.复合操作 为了避免产生竞态条件,必须以原子的形式执行一组操作. 4.内置锁…
什么是内存模型 JMM(Java内存模型)规定了JVM必须遵循一组最小保证,这组保证规定了对变量的写入操作在何时将对其他线程可见. JMM为程序中所有的操作定义了一个偏序关系,称为Happens-Before.两个操作缺乏Happens-Before关系,则Jvm会对它们进行任意的重排序. Happends-Before的规则包括: 1. 程序顺序规则.若程序中操作A在操作B之前,则线程中操作A在操作B之前执行. 2. 监视器锁规则.在同一监视器锁上的解锁操作必须在加锁操作之前执行.如图所示,…
1.  系统类 java.lang包   System类 sys.out;sys.exit;sys.gc; sys.currentTimeMillis();----得到从1970-01-01到当前时间的毫秒数,long型 sys.getProperties();&sys.getProperty();user.dir确定&得到当前工程的工作目录,String型 2.  日期类 java.util包     Date类 @Deprecated——> 方法前加上该注解,表示该方法已过时,有…