11 2021 档案
摘要:通过前面的学习,我们知道了反射其实是面向类编程的。 下面我们综合所学的知识,来编写一个使用与所有对象的toString方法。 下面学习两种意义上的toString: 1)将这个类公共信息打印出来 /** * 只输出类的公共信息 * @param object 对象 * @return 该对象的类对象
阅读全文
摘要:利用反射,我们无需再编写复杂的数组操作方法来进行数组的扩容,反射为我们提供了更为简便,效率更高的方式进行数组扩容。 1.关键方法 //这个方法用来判断一个class是否是数组类型的 calzz.isArray() //这个方法用来获得数组存储的元素类型 Class<?> componentType
阅读全文
摘要:在Java中,我们通常时使用构造方法来进行对象的创建的,而构造方法可以分为有参数和无参数两种。 如果类中没有定义构造方法,那么默认会自动添加一个构造方法。 下面我们学习如何使用Class获得类的构造器对象Constructor,并使用构造器对象创建对象 关键方法: //此方法用于获得指定类型入参的构
阅读全文
摘要:根据上一节类比,我们很容易知道,如果想要用反射操作某个对象的方法,那么Method对象是必不可少的。 首先我们要获得Class对象的Method对象,然后调用: //此方法用与获得Class的指定名称和参数类型的方法对象 getDeclaredMethod(String name, Class<?>
阅读全文
摘要:通常为了保证面向对象的封装特性,我们一般将Bean中的字段设置成私有的,然后提供对应的get和set方法对字段进行控制。 下面学习如何利用反射来对对象的私有字段进行控制,达到运行时修改类的私有字段的目的。 1.关键方法 如果我们想对一个Class类型的对象的字段进行处理,我们必须获得这个类型的Fie
阅读全文
摘要:下面学习如何获得一个类的内部类的信息 关键方法 getDeclaredClasses();此方法用于获得一个类的内部类的Class数组 实例: import java.lang.reflect.Modifier; import java.lang.reflect.Type; public class
阅读全文
摘要:下面我们学习如何实现按继承层次对类进行排序 Java提供了instanceof运算符来比较两个类(或接口)之间是否存在继承关系。但是如果对多个类按照继承关系进行排序,使用这个运算符是非常麻烦的。 但是利用反射,这个功能就显得比较简单了 关键方法: // 这个方法判断当前Class对象所表示的类与给定
阅读全文
摘要:一个类的成员包括: 变量构造器方法 在反射中,变量用Field对象表示,构造器用Constructor对象表示,方法则用Method表示。 Class中相关方法: getConstructors();返回该类型的Class的所有构造器方法对象 getDeclaredFields();返回该类型Cla
阅读全文
摘要:1.什么是类的声明信息 通常类的声明可以包括如下信息: 类的修饰符类的标准名称类的泛型参数类的继承类以及实现的接口类的注解信息 下面将学习如何获得这些信息: 我们将用到Class类中的下面关键方法 forName(String className) //根据给定的名称获取Class对象 getAnn
阅读全文
摘要:基于第一个实验,当我们获得一个类型的Class对象的时候,首先我们需要学习获取该类型的名称, 在Class类中有两个重要的方法: getName();它用于获取类的全称(包路径+类名) getSimpleName(); 它仅用于获取类名 public static void main(String[
阅读全文
摘要:Java的数据类型可以分为两类:引用类型和原始类型 对于每种类型的对象,Java虚拟机会去实例化一个不可变的Java.lang.Class对象 这个Class对象提供了在程序运行时检查对象属性的方法,这些属性包括一个类的成员和类型信息。 可以说Class对象是反射编程的基础,入口,没有这个对象,反射
阅读全文
摘要:在操作系统中,文件是数据的存储单位,每个文件都有着不同的属性。 我们如何在代码中获取文件的各种属性呢? 下面的学习将让我们掌握这个技能,我们可能会在程序中对文件进行处理的过程中需要用到文件的一些属性。 1.File类的使用 在java编程中,我们可以使用File类来进行文件属性获取 代码实例如下:
阅读全文
摘要:InnoDB存储引擎存储了对于XA事务的支持,并通过XA事务来支持分布式事务的实现。 1.什么是分布式事务? 分布式事务是指允许多个独立的事务资源(transactional resources)参与到一个全局事务的事务中,其中独立的事务资源可以理解为不同的数据库。 全局事务要求在其中所有参与的事务
阅读全文
摘要:ANSI SQL标准定义的四个隔离级别分别为: READ UNCOMMITTED 读未提交:就是不同事务之间可以对数据是完全相互可见的,事务B可以见到事务A对某张表做的任何操作,在这种隔离性下的安全性非常低。 READ COMMITTED 读已提交:事务A只能看到事务B提交后的操作。这种隔离级别下的
阅读全文
摘要:在MySQL默认命令行设置下,事务都是自动提交的,这就意味着单独执行SQL后就会马上执行提交操作。 如果我们要取消自动提交,我们可以采用两种方式: 1).关闭自动提交设置 在 MySQL 中,可以使用 SET autocommit 语句设置事务的自动提交模式,语法格式如下: SET autocomm
阅读全文
摘要:我们都知道,事务是个好东西,好东西就会发展,发展就会壮大。 随着事务的发展,事务的用法也分为几大类:扁平事务,带有保存点的事务,链事务,嵌套事务以及分布式事务等。 下面对这几类事务进行学习 1.扁平事务 1)什么是扁平事务? 扁平事务是最简单的事务,此类事务的所有操作都在同一层次上(同一数据库,同一
阅读全文
摘要:1.建立存储过程 程序如下: DELIMITER $ CREATE PROCEDURE add_property (IN database_name VARCHAR (10),IN filed_name VARCHAR(20),IN default_value VARCHAR(20)) BEGIN
阅读全文
摘要:1.什么是事务? 从书上看:事务可由一条非常简单的SQL语句,也可以有一组复杂的SQL语句组成。 简单说,事务就是SQL的集合。 也许你会问:事务就是SQL的集合吗? 那它有一个sql脚本有什么区别? 这里就涉及到事务的一个重要特性了:原子性。一个事务要么全部执行,要么全部不执行,不存在执行一部分,
阅读全文
摘要:上一篇实现了服务端,本篇主要展示 客户端代码的设计 客户端的代码比较复杂一点,由于P2P中,客户端要二者兼顾。 注意:目前本实例中只实现了消息的传输,但大致框架已定,后面的文件传输很简单了。 废话不多,首先上效果:(由于时间比较紧,只是初步实现了,欢迎大家二次创作,优化加强!!) 项目地址:http
阅读全文
摘要:经过前面一段时间的学习,我们学习到了如何利用Socket实现各种功能。 下面,激动人心的时刻到了。 我们要对前面学习提纯的Demo进行综合利用,做出一款真正的聊天软件,这个聊天软件不仅可以发送消息,也可以发送图片,音频和视频等文件。 而且我们要做出一款P2P的聊天软件,即客户端与客户端的点对点通信,
阅读全文
摘要:实现这一功能的关键点在于 private DataInputStream in = null; // 创建流对象 private DataOutputStream out = null; // 创建流对象 这两个对象的使用,这两个类可以传输任何文件!!! 服务端: package InternetC
阅读全文
摘要:关键点在于使用: private ObjectOutputStream writer; private ObjectInputStream reader; ObjectOutputStream和ObjectInputStream这两个类 具体代码如下: 一共三个类 1.服务端 package Int
阅读全文
摘要:其实道理很简单,如果两个人想顺畅的交流,事先确定好交流的主题就能避免牛头不对马嘴的情况。 这里的主题其实就是:编码格式。 就是服务端和客户端创建writer和out时指定编码格式。 1.服务端代码 package InternetCode.Socket.Exa9; import java.io.*;
阅读全文
摘要:上一节我们仅仅实现了客户端向服务端发送消息,服务端接收并打印出来。 这一节我们来实现客户端和服务器的相互通信。 1.服务器端代码 package InternetCode.Socket.Exa8; import java.io.*; import java.net.*; import java.ut
阅读全文
摘要:本实例实现了服务端通过Socket进行客户端消息的监听,客户端向服务端发送字符串消息。 服务端代码: package InternetCode.Socket.Exa7; import java.io.*; import java.net.*; /** * 通过服务器套接字接收客户端发送的信息 * 注
阅读全文
摘要:Socket分为两种: 服务器ServerSocket和普通Socket,其中服务器Socket用于接收客户端的连接,一般来说,一个服务器套接字可以被多个普通套接字连接。 1.创建服务器ServerSocket等待连接Demo package InternetCode.Socket.Exa6_1;
阅读全文