JAVA
- md5
package demo.test;
import org.springframework.util.DigestUtils;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @author : GF
* @date : 2019/2/18 18:50
*/
public class MD5Test {
public static void main(String[] args) {
System.out.println(md5EncodeByJava("123456"));
System.out.println(md5EncodeBySpring("123456"));
}
private static String md5EncodeByJava(String content){
byte[] secretBytes;
try {
MessageDigest md5 = MessageDigest.getInstance("md5");
byte[] sources = content.getBytes();
secretBytes = md5.digest(sources);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有这个md5算法!");
}
//将加密后的数据转换为16进制数字
String res = new BigInteger(1, secretBytes).toString(16);
StringBuilder md5code = new StringBuilder(res);
while (md5code.length() < 32) {
md5code.insert(0, "0");
}
return md5code.toString();
}
private static String md5EncodeBySpring(String content){
return DigestUtils.md5DigestAsHex(content.getBytes());
}
}
- 将json转化为java对象
package demo.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
/**
* @author : GF
* @date : 2019/2/19 10:56
*/
public class JsonParseToJO {
public static void main(String[] args) {
JSONObject jo = new JSONObject();
jo.put("name", "feiji");
jo.put("age", 20);
System.out.println(jo.toJSONString());
System.out.println("-----------------------");
User u = JSON.toJavaObject(jo, User.class);
System.out.println(u);
System.out.println(u.getAge());
}
@Data
static class User{
Integer age;
String name;
}
}
- 转化xmlToJSON
json转xml
package demo.test;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
/**
* @author : GF
* @date : 2019/2/19 11:23
*/
public class XmlParseToJOTest {
public static String parseXmlStrToJsonStr(String xml) {
return new XMLSerializer().read(xml).toString();
}
public static String parseJsonStrToXmlStr(String jsonStr) {
XMLSerializer xml = new XMLSerializer();
return xml.write(JSONObject.fromObject(jsonStr));
}
public static void main(String[] args) {
JSONObject jo = new JSONObject();
jo.put("name", "feiji");
jo.put("age", 20);
String val1 = parseJsonStrToXmlStr(jo.toString());
String val2 = parseXmlStrToJsonStr(val1);
System.out.println(val1);
System.out.println("---");
System.out.println(val2);
}
}
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
</dependency>
- 遍历map:
public static void runMap(){
Map<Integer, String> testMap = new HashMap<>();
testMap.put(1, "一号");
testMap.put(2, "二号");
testMap.put(3, "三号");
// 使用迭代器
Iterator<Map.Entry<Integer, String>> iterator = testMap.entrySet().iterator();
Map.Entry<Integer,String> tempEntry;
while (iterator.hasNext()) {
tempEntry = iterator.next();
System.out.println(tempEntry.getKey());
System.out.println(tempEntry.getValue());
}
// 使用map自带方法
System.out.println(testMap.keySet());
System.out.println(testMap.values());
// 使用for循环
for (Map.Entry<Integer, String> o : testMap.entrySet()) {
System.out.println(o.getKey());
System.out.println(o.getValue());
}
}
- 线程池
线程池,这一篇或许就够了
package demo.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author : GF
* @date : 2019/2/19 11:09
*/
public class ThreadPoolTest {
public static void main(String[] args) {
ExecutorService threadPool;
/*
默认的构造方法
corePoolSize:核心线程数
maximumPoolSize:线程池最大容纳线程数
keepAliveTime:非核心线程最大静置存活时间
unit:上个参数的时间单位
workQueue:生成策略
threadFactory:线程创建工厂,可以在这里设置线程命名规则
handler:异常处理方案
*/
// public ThreadPoolExecutor( int corePoolSize,
// int maximumPoolSize,
// long keepAliveTime,
// TimeUnit unit,
// BlockingQueue<Runnable> workQueue,
// ThreadFactory threadFactory,
// RejectedExecutionHandler handler);
/*
单线程化的线程池 核心:1, 总:max, 策略:DelayedWorkQueue
有且仅有一个工作线程执行任务
所有任务按照指定顺序执行,即遵循队列的入队出队规则
*/
threadPool = Executors.newSingleThreadScheduledExecutor();
/*
可缓存线程池 核心:0, 总:max, 策略:SynchronousQueue
线程数无限制
有空闲线程则复用空闲线程,若无空闲线程则新建线程
一定程序减少频繁创建/销毁线程,减少系统开销
*/
threadPool = Executors.newCachedThreadPool();
/*
定长线程池 核心:n, 总:n, 策略:LinkedBlockingQueue
可控制线程最大并发数(同时执行的线程数)
超出的线程会在队列中等待
*/
threadPool = Executors.newFixedThreadPool(3);
/*
定长线程池 核心:n, 总:max, 策略:DelayedWorkQueue
支持定时及周期性任务执行。
*/
threadPool = Executors.newScheduledThreadPool(3);
}
}
- lambda 体验:
lambda 10 个例子
public static void runLambada(){
System.out.println("--------------");
// lambda 替代匿名线程
// new Thread(new Runnable() {
// @Override
// public void run() {
// System.out.println("hello! thread!");
// }
// }).start();
new Thread(()-> System.out.println("hello! lambda!")).start();
System.out.println("--------------");
List<Integer> list = Arrays.asList(11, 22, 33, 44);
List<Integer> listAdd = new ArrayList<>();
List<Integer> listFilter = new ArrayList<>();
// 替换 List 中的内容 n 为 n + 100
// for (Integer i : list) {
// listAdd.add(i + 100);
// }
list.stream().map(s -> s+100).forEach(listAdd::add);
// 过滤掉 List 中小于 20 的值
// for (Integer i : list) {
// if (i > 20) {
// listFilter.add(i);
// }
// }
list.stream().filter(s -> s>20).forEach(listFilter::add);
// 遍历打印 listAdd
// for (Integer integer : listAdd) {
// System.out.println(integer);
// }
listAdd.forEach(System.out::println);
System.out.println("--------------");
// 遍历打印 listFilter
// listFilter.forEach(s -> System.out.println(s));
listFilter.forEach(System.out::println);
System.out.println("--------------");
}
- 进制转化
package demo.test;
/**
* @author : GF
* @date : 2019/2/18 18:50
*/
public class IntegerTest {
public static void main(String[] args) {
// 十进制转为二进制 console:111010110111100110100010101
System.out.println(Integer.toBinaryString(123456789));
// 十进制转为八进制 console:726746425
System.out.println(Integer.toOctalString(123456789));
// 十进制转为十六进制 console:75bcd15
System.out.println(Integer.toHexString(123456789));
// 十进制转为三十二进制 console:3lnj8l
System.out.println(Integer.toUnsignedString(123456789, 32));
// 二进制转为十进制 console:123456789
System.out.println(Long.parseLong("111010110111100110100010101", 2));
// 八进制转为十进制 console:123456789
System.out.println(Long.parseLong("726746425", 8));
// 十六进制转为十进制 console:123456789
System.out.println(Long.parseLong("75bcd15", 16));
// 三十二位转为十进制 console:123456789
System.out.println(Long.parseLong("3lnj81",32));
}
}
- Collections.sort 排序
package demo.test;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortTest {
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("name_2", 2));
users.add(new User("name_1", 1));
users.add(new User("name_4", 4));
users.add(new User("name_5", 5));
users.add(new User("name_3", 3));
users.forEach(System.out::println);
/* console
SortTest.User(name=name_2, age=2)
SortTest.User(name=name_1, age=1)
SortTest.User(name=name_4, age=4)
SortTest.User(name=name_5, age=5)
SortTest.User(name=name_3, age=3)
*/
Collections.sort(users);
users.forEach(System.out::println);
/* console
SortTest.User(name=name_1, age=1)
SortTest.User(name=name_2, age=2)
SortTest.User(name=name_3, age=3)
SortTest.User(name=name_4, age=4)
SortTest.User(name=name_5, age=5)
*/
}
@Data
@AllArgsConstructor
static class User implements Comparable{
String name;
int age;
@Override
public int compareTo(Object o) {
User oldUser = (User) o;
return Integer.compare(this.age,oldUser.getAge());
}
}
}
SQL Server
- 清空表数据
-- 清空tableName表
TRUNCATE TABLE [tableName]
- 填充字符
-- 填充长度至6位
select right(concat('000000',number),6) number from (
SELECT 123 number UNION ALL SELECT 1223 UNION ALL SELECT 45 UNION ALL SELECT 4564 UNION ALL SELECT 124 UNION ALL SELECT 548 UNION ALL SELECT 45 UNION ALL SELECT 7468
) a
image.png
- 分页 ( 2012版本以上 )
-- 分页获取数据
SELECT
*
FROM
PAYORDER
ORDER BY ID DESC OFFSET [count]*([page]-1) ROW FETCH NEXT [count] ROWS ONLY;
- for xml path('')用法
-- 以字符串形式获取id列表
select (
select concat(number,',') from (
SELECT 123 number UNION ALL SELECT 1223 UNION ALL SELECT 45 UNION ALL SELECT 4564 UNION ALL SELECT 124 UNION ALL SELECT 548 UNION ALL SELECT 45 UNION ALL SELECT 7468
) temp for xml path('')
) numbers
![image.png](https://img.haomeiwen.com/i9764504/4927d0153f72f5e7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-- 以字符串形式获取user列表
select (
select * from (
SELECT 12 age, 'name_1' name UNION ALL SELECT 13 age, 'name_12' name UNION ALL SELECT 14 age, 'name_56' name UNION ALL SELECT 15 age, 'name_11' name UNION ALL SELECT 16 age, 'name_155' name
) temp for xml path ('User')
) users
image.png
image.png
- 随机获取一条数据
-- 随机获取一条数据
select top 1 * from (
SELECT 123 number UNION ALL SELECT 1223 UNION ALL SELECT 45 UNION ALL SELECT 4564 UNION ALL SELECT 124 UNION ALL SELECT 548 UNION ALL SELECT 45 UNION ALL SELECT 7468
) a order by NEWID()
- 忽略某字符匹配
-- (忽略匹配源与匹配词中的'.')在'acb','abc','a..b.c','.a.b.c','.a.bb.c'中匹配'.a..b..'。
select * from (
SELECT 'abc' source UNION ALL SELECT 'abc' UNION ALL SELECT 'a..b.c' UNION ALL SELECT '.a.b.c' UNION ALL SELECT '.a.bb.c'
) temp_a where REPLACE(source, '.', '') like REPLACE('%.a..b..%', '.', '')
sql result
- case when 用法
-- 根据英文Boolean值获取中文解释
SELECT
bol 'boolean',
CASE bol
WHEN 'true' THEN
'对'
WHEN 'false' THEN
'错'
ELSE
'其他'
END 'text'
FROM
(SELECT 'true' bol UNION ALL SELECT 'false' UNION ALL SELECT 'other') temp
sql result
Sublime
浏览器
- 快捷键
-
窗口和标签
新建窗口Ctrl + N
新建隐身窗口Ctrl + Shift + N
新建标签页Ctrl + T
关闭所有标签页Ctrl + Shift + W
关闭当前标签页Ctrl + W
恢复最后关闭页面Ctrl + Shift + T
切换到下一个标签页Ctrl + Tab
切换到上一个标签页Ctrl + Shift + Tab
切换到序号对应的标签页Ctrl + 数字
进入/退出全屏模式F11
关闭当前浏览器窗口Alt + F4
-
浏览和导航
选中地址栏F6
刷新(重新载入)F5
停止加载Esc
后退Alt + Left
前进Alt + Right
页面缩小Ctrl + -
页面放大Ctrl + =
恢复页面到100%Ctrl + 0
-
书签和记录
显示书签栏Ctrl + Shift + B
将当前页添加到书签Ctrl + D
批量添加书签Ctrl + Shift + D
显示历史记录Ctrl + H
显示整理书签Ctrl + Shift + O
显示下载管理器Ctrl + J
清理上网痕迹Ctrl + Shift + Del
-
快捷工具
打印网页Ctrl + P
打开文件Ctrl + O
地址栏搜索Ctrl + K
搜索Ctrl + F
查找下一个Ctrl + G
查找上一个Ctrl + Shift + G
保存页面为文件Ctrl + S
保存页面为图片Ctrl + M
显示/隐藏开发者工具F12
查看网页源代码Ctrl + U
任务管理器Shift + Esc
-
ERROR
- maven添加依赖,但找不到jar包
解决maven不能导入json-lib
网友评论