代码片段&开发工具问题汇总

一、代码片段

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(字段名,'要替换的内容','替换成的内容')
)

你可能感兴趣的:(代码片段&开发工具问题汇总)