一、代码片段
1. 查看工程里有多少java代码
/**
* @Classname CustBankcardServiceImpl
* @Description 计算项目代码量(行数)
* @Date 2019/11/04 14:24
* @Created by lw
*/
public class CalcCodeNum {
public static void main(String[] args) throws IOException {
// java代码
int java_num = getProjectFileNumber(new File("D:\\lw\\work_space\\yxhd\\lcs\\lcs-service\\src\\main\\java\\io\\kyoto"), ".java");
// resource目录
// xml
int xml_num = getProjectFileNumber(new File("D:\\lw\\work_space\\yxhd\\lcs\\lcs-service\\src\\main"), ".xml");
// properties
int properties_num = getProjectFileNumber(new File("D:\\lw\\work_space\\yxhd\\lcs\\lcs-service\\src\\main"), ".properties");
System.out.println("java:" + java_num);
System.out.println("xml:" + xml_num);
System.out.println("properties:" + properties_num);
System.out.println("total:" + (java_num + xml_num + properties_num));
}
/**
* 递归获取文件中代码行数
* */
private static int getProjectFileNumber(File file, String endsWith) throws IOException{
int number = 0;
if (file.exists()) {
if (file.isDirectory()) {
for (File subFile : file.listFiles()) {
number += getProjectFileNumber(subFile, endsWith);
}
} else if (file.isFile() && file.getName().endsWith(endsWith)) {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
while (br.readLine() != null) {
number += 1;
}
} else {
System.out.println("===" + file.getAbsolutePath());
}
}
return number;
}
}
参考:https://www.cnblogs.com/lwcode6/p/11528799.html
2. 查看所有在线终端
select t.* from (
SELECT a.ID,a.SerialNum,a.LabRoomID,B.LabRoomName,B.LouHao + '-' + B.FANGJIANHAO serialLouJian ,B.Style,
A.UpdateTime , GETDATE() AS CurrentTime,A.isonline AS ISONLINE,
(SELECT COUNT(1) FROM (
SELECT LI.*,LR.LabRoomID FROM LabTeachInfo LI
JOIN LabTeachRoom LR ON LI.ID = LR.LabTeachID
UNION ALL
SELECT LI.*,LR.LabRoomID FROM WEEKLabTeachInfo LI
JOIN WEEKLabTeachRoom LR ON LI.ID = LR.WeekLabTeachID
UNION ALL
SELECT LIL.*,LIL.llroom AS LabRoomID FROM LabTeachInfo LIL
) T WHERE T.LabRoomID = B.ID
AND T.TERM = '2019-2020-2'
AND T.WEEK = 10
AND T.[DAY] = '星期一'
AND T.STARTTIME <= CONVERT(VARCHAR(5),GETDATE(),108)
AND T.endTime >= CONVERT(VARCHAR(5),GETDATE(),108)) ISHASKC
FROM LabRoomInfo B
JOIN Termial_SerialLabRoomCorresponding a ON A.LabRoomID = B.ID
where 1= 1
) T where 1 = 1 AND t.isonline = 1
order by t.serialLouJian
3. 写SQL,要一次返回多个统计数量
SELECT (
SELECT count(*)
FROM WorkOrder
WHERE Simple_Time is not NULL and CONVERT(varchar ,Simple_Time,120) LIKE #{date}+'%'
) AS orderNum,
(
SELECT COUNT(*)
FROM WorkOrder
WHERE Payment_Time is not NULL and CONVERT(varchar ,Payment_Time,120) LIKE #{date}+'%'
) AS payNum,
(
SELECT COUNT(*)
FROM WorkOrder
WHERE Acceptance_Time is not null and CONVERT(varchar ,Acceptance_Time,120) LIKE #{date}+'%'
) AS acceptNum
4. 遍历文件
(1). 遍历本文件夹下所有文件(不包括本文件夹下子文件夹内的文件)
import java.io.File;
public class main {
public static void main(String[] args) {
String path = "D:\\JAVA"; //要遍历的路径
File file = new File(path); //获取其file对象
File[] fs = file.listFiles(); //遍历path下的文件和目录,放在File数组中
for(File f:fs){ //遍历File[]数组
if(!f.isDirectory()) //若非目录(即文件),则打印
System.out.println(f);
}
}
}
(2). 遍历本文件夹下的所有文件
import java.io.File;
import java.io.FileFilter;
public class FileText {
public static void main(String[] args) {
String path = "D:\\JAVA"; //要遍历的路径
File file = new File(path); //获取其file对象
func(file);
}
private static void func(File file){
File[] fs = file.listFiles();
for(File f:fs){
if(f.isDirectory()) //若是目录,则递归打印该目录下的文件
func(f);
if(f.isFile()) //若是文件,直接打印
System.out.println(f);
}
}
}
5. float 计算保留2位小数的方法(3种)
package com.Constellation.UrsaMajor.learn;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class FigureFloat {
public static void main(String[] args) {
// 方法1、用Math.round计算,这里返回的数字格式的:
float f = 99.12321f;
int num = 3;
float p = f * num;
// 这里的100就是2位小数点,如果要求精确4位就*10000然后/10000
float result = (float)(Math.round(p*100)/100);
// *************************************************************************************************************
// 方法2、用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分位,小数精度.科学计算:
float f2=1.20123f;
DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
String s2 = decimalFormat.format(f2);//返回字符串
//DecimalFormat 的千分位格式化如下:
String a = new DecimalFormat("###,###,###.##").format(100.12345 );
// *************************************************************************************************************
// 方法3、通过BigDecimal转换:
float f3 = 34.231313f;
BigDecimal b = new BigDecimal(f3);
float s3 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
}
}
6. Date
(1). SimpleDateFormat担当重任,怎样格式化都行
import java.util.Date;
import java.text.SimpleDateFormat;
public class Demo {
public static void main(String[] args) {
Date now=new Date();
SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分");
System.out.println(f.format(now));
f=new SimpleDateFormat("a hh点mm分ss秒");
System.out.println(f.format(now));
}
}
(2). 从字符串到日期类型的转换:
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.text.*;
public class Demo {
public static void main(String[] args) {
String strDate="2005年04月22日";
//注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 ");
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
//必须捕获异常
try {
Date date=simpleDateFormat.parse(strDate);
System.out.println(date);
} catch(ParseException px) {
px.printStackTrace();
}
}
}
(3). 将毫秒数换转成日期类型
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.text.*;
public class Demo {
public static void main(String[] args) {
long now=System.currentTimeMillis();
System.out.println("毫秒数:"+now);
Date dNow=new Date(now);
System.out.println("日期类型:"+dNow);
}
}
(4). 获取系统时期和时间,转换成SQL格式后更新到数据库
//获取当前系统的时间
java.util.Date d=new java.util.Date();
//格式化日期
new java.text.SimpleDateFormat s= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//转为字符串
String dateStr = s.format(d);
(5). 比较日期大小
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String args[]) {
int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");
System.out.println("i=="+i);
}
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
}
二、开发工具问题汇总
1. MYSQL版本相关问题
(1). 用Navicat 把mysql8 导出的sql文件 导入到 mysql5.7 报错
打开 .sql
文件,全局替换:
utf8mb4_0900_ai_ci 替换为 utf8_general_ci ;
utf8mb4 替换为 utf8;
再执行导入:
新建一个数据库,字符集选择 utf8mb4
;
排序规则 默认
或选择 utf8_general_ci
。
后面依次默认操作。
三、用到的代码片段
1. MySQL 替换字段的部分内容
UPDATE 表名
SET type = (
REPLACE(字段名,'要替换的内容','替换成的内容')
)