官方地址:阿里Java开发规范下载地址
月度归档: 2018年1月
PostgreSQL表修改
-- 修改表字段类型 alter table '表名' alter COLUMN '字段名' type '要修改的字段类型' ; -- 添加表字段 ALTER TABLE '表名' ADD '字段名' '要修改的字段类型'; -- 删除表字段 ALTER TABLE '表名' DROP '字段名'; -- 表的重命名 ALTER TABLE '表名' RENAME TO '新表名'; -- 更改列的名字 ALTER TABLE '表名' RENAME '字段名' to '新字段名';
PostgreSQL创建只读账号
-- 回收创建表的权限 revoke create on schema public from public; -- 创建账号 create user readonly with encrypted password 'pwd'; alter user readonly set default_transaction_read_only=on; -- 给只读账号连接数据的权限 grant connect on database 数据库名 to readonly; -- 在指定数据库下执行 grant usage on schema 可配置多个schema to readonly; grant select on all sequences in schema public to readonly; grant select on all tables in schema public to readonly; -- 新建的表也要给只读账号权限 alter default privileges in schema public grant select on tables to readonly;
说明:只做记录备用,未测试; 该命令存在缺陷,如一个库存在多个schema需一一赋予权限,可能并非是最好的处理方式
PostgreSQL物化视图
-- 物化视图用于固定查询的结果 -- 需要定期更新,相当于重新执行查询命令 -- 主要用于替代查询时间过长且数据不会发生很大变化的情况 -- 创建语法: CREATE MATERIALIZED VIEW '视图名称' AS '查询命令'; -- 更新语法: REFRESH MATERIALIZED VIEW '视图名称'
Postgresql中COALESCE函数的使用
SELECT COALESCE(str1,str2,str3,...) -- 如果str1为null,则取str2;如果str2为空,则取str3;...
Java程序实现进度条打印
//方法一(缺陷:在开发环境下可能显示模式是Unicode,然后\b就变成了个框框): public static void main(String[] args) throws Exception { System.out.print("Progress:"); for (int i = 1; i <= 100; i++) { System.out.print(i + "%"); Thread.sleep(100); for (int j = 0; j <= String.valueOf(i).length(); j++) { System.out.print("\b"); } } System.out.println("结束"); } //方法二: public static void main(String[] args) throws Exception { for (int i = 1; i <= 100; i++) { System.out.print('\r' + "Progress:" + i + "%"); Thread.sleep(100); } System.out.println("结束"); }
知识点: 1.\b可在控制台删除一个字节的打印记录 2.\r可在控制台删除整行的打印记录
使用正则过滤掉字符串中换行符
private String replaceBlank(String str) { String dest = ""; if (str != null) { Pattern pattern = Pattern.compile("\\s*|\t|\r|\n"); Matcher matcher = pattern.matcher(str); dest = matcher.replaceAll(""); } return dest; }
PostgreSQL查询数据库的连接信息
select * from pg_stat_activity; -- pg_stat_activity为系统视图 -- 可根据where限定数据库名,连接ip,表名等字段查询相关信息
query_start:active状态的查询开始时间,如果状态不是active的,那么就是最后一次查询开始的时间 state:运行状态,可以为几种值。 active:正在执行查询; idle:等待新的命令; idle in transaction:后端是一个事务,但是尚未执行查询; idle in transaction(aborted):和idle in transaction类似,除了事务执行出错。 query:执行的查询文本(即SQL)。 如果状态是active,那么就是正在执行的SQL; 如果是其他状态,则展示最后一次执行的SQL。 所以可以用: select count(*) from pg_stat_activity where state='idle'; 查询闲置连接数。如果数字过大,可以认为是有问题的(如连接忘记关闭)。 如果想进一步定位到有问题的SQL,可以如下查询: select query,count(*) as num from pg_stat_activity where state='idle' group by query order by num desc;
杀掉进程 SELECT pg_terminate_backend(PID); 这种可以kill掉各种操作(select、update、delete、drop等)操作
MySQL字符串拼接
--实例为拼接date+time --方法一(concat(s1,s2,...)) concat(DATE_FORMAT($date,'%Y-%m-%d'),' ',$time) --方法二(concat_ws(分割符,s1,s2,...)) CONCAT_ws(' ',DATE_FORMAT($date,'%Y-%m-%d'),$time)