类对象

CEvent,CSemaphore,CCriticalSection,CMutex

浪尽此生 提交于 2019-12-26 22:43:54
一、用CEvent实现线程同步 事件对象(Event)是最简单的同步对象,它包括有信号和无信号两种状态。在线程访问某一资源之前,也许需要等待某一事件的发生,这时用事件对象最合适。例如,只有在通信端口缓冲区收到数据后,监视线程才被激活。 MFC中,CEvent类提供了对事件的支持。CEvent对象有两种类型:人工事件和自动事件。对于自动事件,当其获得信号后,就会释放下一个可用的线程。一个自动CEvent对象在被至少一个线程释放后会自动返回到无信号状态;而人工事件对象获得信号后,释放所有可利用线程,直到调用成员函数ReSetEvent()将其设置为无信号状态时为止。 在创建CEvent对象时,默认创建的是自动事件 CEvent类的构造函数原型如下: CEvent(BOOL bInitia11y0wn=FALSE,//若bInitiallyOwn为TRUE,则使CMultilock类对象和CSingleLock类对象的线程可用;否则,要访问资源的线程必须等待。该参数的默认值为FALSEo BOOL bManualReset = FALSE,//指定要创建的CEvent对象是属于手工事件还是自动事件。为TRUE,则为手工事件;否则为自动事件。该参数默认值为FALSE o LPCTSTR lpszName=NULL,//指定要创建的事件对象的名,如果该事件对象将跨进程使用

java多态的理解

被刻印的时光 ゝ 提交于 2019-12-26 08:48:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 首先要先知道什么是多态,多态的概念 1.多态的定义: 指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 2.多态的作用:消除类型间的耦合。 再说一下三大特性:封装、继承、多态。封装和继承几乎就是为多态服务的。这个一定要记住! 多态存在的三个条件: 要有继承 要有重写,也就是覆盖,这里有些刚学的人会误解方法重写和重载。这个一定要弄明白 a.重写必须继承,重载不用。 b.重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同。 c.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。 d.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常 父类引用指向子类对象 Java中多态的实现方式: 接口实现,继承父类进行方法重写,同一个类中进行方法重载。 多态分为两种: 编译时多态:方法重载 运行时多态: JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态) 最后再说一下多态的好处: 1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环

hadoop中典型Writable类详解

可紊 提交于 2019-12-26 02:40:54
本文地址: http://www.cnblogs.com/archimedes/p/hadoop-writable.html ,转载请注明源地址。 Hadoop将很多Writable类归入org.apache.hadoop.io包中,在这些类中,比较重要的有Java基本类、Text、Writable集合、ObjectWritable等,重点介绍Java基本类和ObjectWritable的实现。 1. Java基本类型的Writable封装 目前Java基本类型对应的Writable封装如下表所示。所有这些Writable类都继承自WritableComparable。也就是说,它们是可比较的。同时,它们都有get()和set()方法,用于获得和设置封装的值。 Java基本类型对应的Writable封装 Java基本类型 Writable 序列化后长度 布尔型(boolean) BooleanWritable 1 字节型(byte) ByteWritable 1 整型(int) IntWritable VIntWritable 4 1~5 浮点型(float) FloatWritable 4 长整型(long) LongWritable VLongWritable 8 1~9 双精度浮点型(double) DoubleWritable 8 在表中,对整型(int和long

EF中更新数据

被刻印的时光 ゝ 提交于 2019-12-26 02:34:51
原来EF中不查询数据库也可以直接更新! EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态; 一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行; 此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。 缺点:修改先还要查询,难受~~~~ 1 //1.先查询要修改的原数据 2 Models.BlogArticle modelNew = db.BlogArticles.Where(a => a.AId == model.AId).FirstOrDefault(); 3 4 //2.设置修改后的值 5 modelNew.ATitle = "新的数据"; 6 modelNew.AContent = "新的数据~~~~~~"; 7 modelNew.ACate = 12; 8 9 //3.跟新到数据库 10 db.SaveChanges(); 二、为避免先查询数据库,可以直接将 被修改的实体对象 添加到 EF中管理(此时为附加状态Attached),并手动设置其为未修改状态

EF直接更新数据(不需查询)

十年热恋 提交于 2019-12-26 02:34:01
EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态; 一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行; 此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。 缺点:修改先还要查询,难受~~~~ 1 //1.先查询要修改的原数据 2 Models.BlogArticle modelNew = db.BlogArticles.Where(a => a.AId == model.AId).FirstOrDefault(); 3 4 //2.设置修改后的值 5 modelNew.ATitle = "新的数据"; 6 modelNew.AContent = "新的数据~~~~~~"; 7 modelNew.ACate = 12; 8 9 //3.跟新到数据库 10 db.SaveChanges(); 二、为避免先查询数据库,可以直接将 被修改的实体对象 添加到 EF中管理(此时为附加状态Attached),并手动设置其为未修改状态(Unchanged)

EF直接更新数据(不需查询)

送分小仙女□ 提交于 2019-12-26 02:33:36
EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态; 一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行; 此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。 缺点:修改先还要查询,难受~~~~ //1.先查询要修改的原数据 Models.BlogArticle modelNew = db.BlogArticles.Where(a => a.AId == model.AId).FirstOrDefault(); //2.设置修改后的值 modelNew.ATitle = "新的数据"; modelNew.AContent = "新的数据~~~~~~"; modelNew.ACate = 12; //3.跟新到数据库 db.SaveChanges(); 二、为避免先查询数据库,可以直接将 被修改的实体对象 添加到 EF中管理(此时为附加状态Attached),并手动设置其为未修改状态(Unchanged),同时设置被修改的实体对象 的 包装类对象 对应属性为修改状态。

EF直接更新数据(不需查询)

五迷三道 提交于 2019-12-26 02:33:25
EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态; 一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行; 此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。 缺点:修改先还要查询,难受~~~~ 1 //1.先查询要修改的原数据 2 Models.BlogArticle modelNew = db.BlogArticles.Where(a => a.AId == model.AId).FirstOrDefault(); 3 4 //2.设置修改后的值 5 modelNew.ATitle = "新的数据"; 6 modelNew.AContent = "新的数据~~~~~~"; 7 modelNew.ACate = 12; 8 9 //3.跟新到数据库 10 db.SaveChanges(); 二、为避免先查询数据库,可以直接将 被修改的实体对象 添加到 EF中管理(此时为附加状态Attached),并手动设置其为未修改状态(Unchanged)

java 内部类 *** 最爱那水货

馋奶兔 提交于 2019-12-25 10:02:14
   注:    转载于 http://blog.csdn.net/jiangxinyu/article/details/8177326 Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。我们内部类的知识在Android手机开发中经常用到。 一、常规内部类 所谓常规内部类,或者说内部类,指的就是除去后面三种之外的内部类(这算什么解释。。。) 先写一个最简单的内部类的例子,大家感觉一下: 1 public class Outer { 2 public class Inner{ 3 } 4 } 编译一下,我们看到目录中出现了两个class文件,其中有一个文件名叫做Outer$Inner.class,带了一个$符号,这个特点让我们很容易的认出来这是内部类编译后的class文件。 再写一个稍微复杂一点的内部类: 01 public class Outer { 02 03 private int x=1; 04 05 public Outer(){ 06 System.out.println("Outer initial"); 07 } 08 09 public class Inner{ 10 11 public Inner(){ 12 System.out.println("Inner initial");

JAVA学习笔记-05-继承

十年热恋 提交于 2019-12-24 20:17:19
继承: extends 1.提高代码的复用性 2.让类与类之间产生了关系。有了这个关系,才有了多态的特性 注意:千万不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承。 JAVA中只支持单继承,而不继承多继承。因为多继承容易带来安全隐患。当多个父类中定义了相同的功能,当功能内容不同时,子类对象不确定运行哪一个。 JAVA支持多层继承:简单来说就是a继承b,b继承c。这就是一个继承体系 如果想要使用一个继承体系中的功能,那就要先查阅体系父类的描述,因为父类中定义的是体系中共性功能。通过了解共性功能就可以知道该体系的基本功能。 在具体调研时,要创建最子类的对象。因为有可能父类不能创建对象,或者是创建子类对象可以使用更多的功能。包括基本的和所有的 当多个类中出现相同功能,但是功能主体不同,这时可以向上抽取,这时只抽取功能定义,而不抽取功能主体。这时方法的内部没有功能主体。 这时我们要用abstract来标识方法。如: abstract void student(); 抽象:看不懂 1.抽象方法一定在抽象类中。 2.抽象方法和抽象类都必须被abstract关键字修饰 3.抽象类不可以用new创建对象。因为调用抽象方法没意义。 4抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象所用。如果子类只覆盖了部分抽象方法,那么这个类还是一个抽象方法

面向对象(二)之三大特性

久未见 提交于 2019-12-24 17:48:39
面向对象的三大基本特征   封装(封装方法)——代码复用,屏蔽细节。   继承extends(类与类之间的一种关系)——代码复用,功能上的拓展。当一个子类继承了父类,就自动拥有了父类的所有成员变量。一个子类只能有一个父类,一个父类可以有多个子类。   多态 一、封装 1、包:管理java软件,解决同名问题冲突,用不同的文件夹来区分不同的类,一般包名为小写   系统中的包:java.(功能).(类)                java.lang.类,常用的基础类,不需要导包即可使用。(唯一的一个)         java.io 输入输出流         java.net 网络编程         java.util 工具包 2、访问修饰符          private(私有)——只能在类的内部用     default(默认)——在同一个包下的类之间可以使用     protected(受保护的)——继承中可以互相调用,两个类不在同一个包下,若是继承关系可以调用     public(公共的)——两个类不在同一个包下,是不是继承关系都可以调用 3、内部类:定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。   内部类的主要作用如下:     1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类     2.