美文网首页
代码片段&开发工具问题汇总

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

作者: 山与海Lucky7 | 来源:发表于2020-03-17 10:48 被阅读0次

    一、代码片段

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

    相关文章

      网友评论

          本文标题:代码片段&开发工具问题汇总

          本文链接:https://www.haomeiwen.com/subject/nbbzehtx.html