自定义排序
Properteis
本质是Hash table
Properties: 资源文件的管理工具,达到java代码和资源文件的解耦合。
实现(主要操作)
写: properteis.setProperties(key,value);
Properties.store(out,desc); 底层会调用: native2ascii.exe(把字符转换为uncode)
获取: Properties.getProperties(key);
读取方式:
第一种:
ResourceBundle rb=ResourceBundle.getBundle("user");
System.out.println(rb.getString("name"));
System.out.println(rb.getString("age"));
第二种:
Properties properties =new Properties();
InputStream in =new FileInputStream("src/user.properties");
properties.load(in);
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
in.close();
第三种:线程的方式:(项目中的使用)
Properties properties =new Properties();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("user.properties");
properties.load(in);
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
in.close();
例子
user.properties
username=tom |
测试类
import java.util.ResourceBundle;
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入账号:");
String username=in.next();
System.out.println("请输入密码:");
String password=in.next();
//获取资源文件的账号和密码
ResourceBundle rb=ResourceBundle.getBundle("user");
String s1=rb.getString("username");
String s2=rb.getString("password");
//判断
if(s1.equalsIgnoreCase(username) && s2.equalsIgnoreCase(password)){
System.out.println("登录成功!");
}else{
System.out.println("错误的账号或密码!");
}
}
}
序列化:将对象(的状态)保存到文件或媒介的过程。
反序列化:将文件或媒介转换为对象的过程。
序列化的步骤:
1:类实现序列化接口
2:利用ObjectOutputStream完成写对象,利用ObjectInputStream完成读取
3: writeObject(Object) readObject()--->Object
4:关闭流
String小知识
验证码
public class CodeUtil {
private CodeUtil(){}
private static final String CODE="给发个帖丰东股份的是";
private static final String NUMBER="0123456789";
private static int length= 4;
/**
* 产生数字的验证码
* @return
*/
public static String createNumber(){
Random ran = new Random();
StringBuilder sb=new StringBuilder();
for(int i=1;i<=length;i++){
sb.append( NUMBER.charAt( ran.nextInt(NUMBER.length())));
}
return sb.toString();
}
/**
* 产生中文字符的验证码
* @return
*/
public static String createCode(){
Random ran =new Random();
int num= ran.nextInt(CODE.length());
return String.valueOf(CODE.charAt(num));
// return String.valueOf(CODE.charAt( new Random().nextInt(CODE.length())));
}
}
Swing窗体
1:swing: java的图形界面开发技术
GUI: 图形用户接口
Swing是GUI的java实现
Swing在javax.swing包下。
2:常用的控件的使用(属性、事件等)
3:业务的处理:
A 登录的实现
判断为空
离焦事件
验证码的实现
B 集合的数据展示到JTable的控件中(抽象类的意义!)
Swing开发的:容器:JFrame类(窗体:宽和高,承载各个组件:文本框、按钮等。。。)
数据库
数据库:DataBase: DB
数据管理系统:DBMS
数据库管理会员:DBA
数据库名称 | 所属公司 | 国家 | 规模和描述 |
Mysql | Oracle公司(瑞典AB) | 美国 | 中小型、免费、关系型 |
Oracle | Oracle | 美国 | 大型关系对象型 |
Sql-server | Microsoft | 美国 | 大型关系型数据库 |
DB-2 | IBM | 美国 | 大型数据库 |
Sys-base | Sys-info | 美国 |
SQL: Strutted 结构 Query:查询 Language:语言
结构化查询语言
Sql 是过程语言(侧重于步骤)
SQL的构成:
DDL: Data Define Language: 数据定义语言:(创建和修改等)
Create:创建 Drop: 删除 Alter:修改
DCL: Data Controller Language(权限的管理)
数据 控制 语言
Grant: 授权 Revoke:取消
Grant select,update,delete to abc;
Revoke select from abc;
DML: 数据操作语言: insert:插入 update 修改 delete 删除
DQL: 数据查询语言:select
TCL: 事务控制语言: commit:提交 rollback :回滚
数据库的分类:
1:关系型:以表格形式(行:记录、列:字段)
2:层次型:
3:网状型:
执行顺序:
from 表名
where 条件(只能有判断: > < )
Group by 字段
Having 筛选
Order by 字段 排序规则 asc| desc 降序(默认asc:升序)
Select 字段名 别名
Limit
PS小知识:
delete 删除不会重置id
truncate 会重置id
数据库常用的方法
关于批量删除的两种方式
PS小知识
提到删除不得不提到关于页面的全选
在全选之后选中我们的所取的值
反选