0%

什么是JDBC

JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这个类库可以以一种标准的方法、方便地访问数据库资源。

JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

阅读全文 »

反射的基本概念

Java程序中,所有的对象都有两种类型:编译时类型和运行时类型,而很多时候对象的编译时类型和运行时类型不一致。

例如:某些变量或形参的类型是Object类型,但是程序却需要调用该对象运行时类型的方法,该方法不是Object中的方法,那么如何解决呢?

为了解决这些问题,程序需要在运行时发现对象和类的真实信息,现在有两种方案:

  • 方案1:在编译和运行时都完全知道类型的具体信息,在这种情况下,我们可以直接先使用instanceof运算符进行判断,再利用强制类型转换符将其转换成运行时类型的变量即可。
  • 方案2:编译时根本无法预知该对象和类的真实信息,程序只能依靠运行时信息来发现该对象和类的真实信息,这就必须使用反射。
阅读全文 »

项目实现要求

  • 编写客户端和服务器代码,要求客户端和服务器进行对象的传输交流。
  • 要求服务器支持同时多个客户端访问。
  • 并且客户端能够使用多个账号进行登录。
  • 客户端和服务器接收到对方的请求时,都给予对方响应内容。
  • 密码输入错误后支持用户重新输入。
阅读全文 »

软件结构

  • C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、红蜘蛛、飞秋等软件。

1_cs

阅读全文 »

对象流

前面学习的IO流,在程序代码中,要么将数据直接按照字节处理,要么按照字符处理。那么,如果读写Java其他数据类型的数据,怎么办呢?

1
2
3
4
5
6
7
String name = "张三";
int age = 30;
char gender = ‘男’;
double price = 13.14;
boolean is_boy = true;

Student stu = new Student("张三", 18);

Java提供了对象流来处理这些类型的数据:

  • ObjectOutputStream:将Java基本数据类型和对象写入字节输出流中。稍后可以使用 ObjectInputStream 将数据读入。通过在流中使用文件可以实现Java各种基本数据类型的数据以及对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中接收这些数据或重构对象。
  • ObjectInputStreamObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
阅读全文 »

经过前面配置好Slurm集群管理系统之后,经过和用户沟通,希望限制每次新建用户的磁盘使用量,由于之前是没有限制过的,所以导致很多老师和同学把服务器当成网盘在使用。上传文件后都不删除,导致原本充裕的磁盘后面都不够用了。数据多了,磁盘的读写速度也受到了一定的影响。

基于此,用户提出2个需求:

  1. 自动将NFS共享目录下超过3个月没有更新的文件删除。
  2. 将新建用户的磁盘使用量限定在1.5T内。

其中第1个需求比较简单,直接按照相应的逻辑写一个Shell脚本,然后设定计划启动程序即可;第2个需求稍微繁琐一点,需要使用到quote服务。

阅读全文 »

经过前面教程,我们现在已经搭建好了一个Slurm系统。为了方便管理,我们还需要开发相关的shell脚本用于对集群的管理,在这里我写了三个脚本。

脚本目录

master1节点目录/root/tools

  • add_user.sh:新建用户,并赋予用户访问集群资源权限。
  • del_user.sh:删除用户,并移除用户访问集群资源权限。
  • restartSlurm.sh:重启所有的Slurm节点。
阅读全文 »

转换流

InputStreamReader类

转换流java.io.InputStreamReader,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。

  • InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。
  • InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。

构造举例,代码如下:

1
2
InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt"));
InputStreamReader isr2 = new InputStreamReader(new FileInputStream("in.txt") , "GBK");
阅读全文 »

缓冲流

缓冲流,也叫高校流,按照数据类型分类:

  1. 字节缓冲流BufferedInputStreamBufferedOutputStream
  2. 字符缓冲流BufferedReaderBufferedWriter

缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

阅读全文 »