栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java积累

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java积累

精彩博文
  • 链接: Java 高级 .
  • 链接: Java 日常工具类 .
  • 链接: 尚硅谷视频redis笔记 (github 多种笔记).
  • 链接: Java 全栈知识体系.
  • 链接: excel生成模板
一、常用api

1.查看容器中有没有某个id,有为true

 .contains(long id)

2.生成随机数值

Math.random

3.把a对象数据放进b对象里 字段名称要相同

BeanUtils.copyProperties(实体类 a,实体类 b)

4.集合类判空

 CollectionUtils.isNotEmpty(集合)

5.只能用在单数据源回滚

@Transactional (rollbackFor = Exception.class)

6.多数据源 指定数据源

@DS()

7.可变参数  A...a(是个数组)

ArrayUtils.isNotEmpty(a)?a[0]:new A();

8.截取取字符串

StringUtils.abbreviate(" ",15) 取前15位
StringUtils.abbreviate(" ",5,15) 取,5-15位

9.Date 增加一天

DateUtils.addDays(date, 1);

10.获取固定格式时间DATE

   public Date getNowTime() {
        Date date = new Date();
        Date nowDate = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String s = sdf.format(date);
        try {
            nowDate = sdf.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return nowDate;
    }

11.lambda表达式所在的作用域生命的变量不可以第二次赋值

12. jsonObject

// string 转 jsonObject
JsonObject.parseObject("string")

// 拿到key下的json数组(jo是jsonObject)
JsonArray as = jo.getJsonArray("key")

// 拿到as下的第二个数组
JsonArray as = as.getJsonArray(2)

// json转string
string properties = a.getJsonObject("jo").toString;

// json转实体类
Entity e = JSON.parseObject(jo, Entity.class);

14. 向前端传的字段名与数据库字段名无法一致。例:数据库字段‘lBoundary’,前端需要‘lboundary’

在get,set方法上使用注解@JsonProperty(‘lboundary’)

15.浮点数比较大小要比较精度(1e-6等于0.000001)

// 18.1 比较相等时,精度要<=1e-6
fabs(a-b)<= 1e-6
// 18.2 比较大于时
if(a>b && fabs(a-b)> 1e-6)
// 18.3 比较小于时
if(a 1e-6)

16.string拼接“”符号时,不能写死,因为不同系统分隔符不同,要使用File.separator替换

File.separator

17.为某个值赋最小值

Double.NEGATIVE_INFINITY;

18.@Autowired 循环依赖时使用懒加载@Lazy

19.定时任务

@Scheduled(cron = “000**?”)
方法......

20.Math.max(a,b) 比较出a,b中的max,比较float性能差

21.指定字符删除(替换掉_)

str.replaceAll("_","")

22.懒汉模式 双检锁模式

    private static volatile AsyncManager instance = null;

    public static synchronized AsyncManager getInstance() {
        //双检锁模式
        if(null == instance){
            synchronized (AsyncManager.class) {
                if(null == instance) {
                    instance = new AsyncManager();
                }
            }
        }
        return instance;
    }


23.用到.in(ids),或者sql中有in(ids)时,要对ids做判空处理

24.map.putIfAbsent:map的此方法是先检查map中是否有key,没有时候再添加

25.将大list转换成小list

List> minList = Lists.partition(maxList, 1000);

26.spring的@value注解是spring初始化bean时候执行的。

如果用@value对static修饰的属性复制(static先于spring之前加载)
做法:先封装一个bean来初始化相关的配置,然后利用工具类在静态代码块中获取到这个bean对象,用这个bean对象来初始化工具类中的相关属性
//https://www.jianshu.com/p/3daeb8629a56
// https://blog.csdn.net/yrsg666/article/details/111640131
@value使用时默认加载application.yml中的文件,可以再指定别的文件spring.porfiles.active=devalphabeta

27.sleep的另一种写法

TimeUnit.MILLISECONDS.sleep(300);

28.文本框校验先转成Document 

Document document = Jsoup.parse(content);
 // 判空
 ObjectUtil.isEmpty(document.text())

29.判断集合中某值出现的次数

//Bag继承自Collection接口,定义了一个集合,该集合会记录对象在集合中出现的次数。 
 HashBag bagNo = new HashBag<>("1")
二、postgre数据

1. 4326转3857坐标系之前先要配置默认坐标系

 select update Geometry SRID(“表名”,‘geom’,4326)

2. 查询坐标系

 select ST_SRID(geom) from ”表名“ limit 1

3. 快速创建两个点

ST_MakePoint(x,y)

4. 更新坐标系

ST_setSrid(XX,4326)

5. 坐标系之间转换

ST_Transform(4326,3857)
三、mysql数据库

1. 数据库全局查询 

ctrl +F

2. 全文索引

MATCH (columnName) AGAINST (‘string’)
SELECt * FROM `student` WHERe MATCH(`name`) AGAINST('聪')

3. concat()函数

将多个字符串连接成一个字符串,如果有任何一个参数为null,则返回值为null
concat(str1, str2,...)

4.  防止特殊字符被转义

5. 根据UNIQUE索引或者primary key(主键)是否出现重复,判断执行update语句或者insert语句

INSERT INTO user(id,name) VALUES(8,'c') 
ON DUPLICATE KEY
UPDATE name="B";

6. mybatis-plus中IserviceImpl中的saveOrUpdateBetch()方法也可以批量实现存在 id 时候覆盖,不存在时候添加
 
 7. 校验数据库某列字段是否唯一,使用limit 1可以避免全表查询

limit 1

8. 查询时候用到or时候使用union替换,因为or会使索引失效

9. 如果某个字段为null就从别处拿取字段值

CASE  WHEN tm.createTime IS NULL
THEN
( SELECT create_time FROM t_merchant_information t WHERe t.id = tm.id )
ELSE 
tm.createTime
END as createTime

10. sql中当前时间与数据库数据比较

where date_format(now(), '%Y%m%d%H%i%S') =]]> concat(date_format(t1.begin_date, '%Y%m%d'), t1.begin_time)

11. 数据库一对多,并且要展示某个字段时候可以用GROUP_CONCAT方法拼接字段。

(select GROUP_CONCAt(sys_name separator',') from t_news_module where news_id = tn.news_id)

        SELECt
        tn.*,
        (select GROUP_CONCAt(sys_name separator',') from t_news_module where news_id = tn.news_id) as sys_name
        FROM
        `t_news_notifications` tn
        where
            tn.del_flag = 2

12. 使用foreach时要记得separator是“,”号

13. 数据库表中id自增时候普通删除,id会顺序增加,执行truncate table t_name 后数据做删除处理,并且id从1开始自增

truncate table t_name;

14. 返回字符串str,使用在开始位置pos和len个字符的的字符串,newstr取代长字符串

INSERT(str,pos,len,newstr)
四、idea功能

1. 快速创建静态常量
ctrl+alt+c

2. 快速大小写转换
ctrl+shift+u

3. 中英文翻译
ctrl+shift+o

4. 快速给实体类添加get,set方法
alt+ent(在实体类上添加)

5. 格式化代码
ctrl+alt+t

6. idea项目中没有iml文件
执行mvn idea:module

五、linux

1.linux 查看日志常用命令

tail:
-n 是显示行号;相当于nl命令;例子如下:
tail -100f test.log 实时监控100行日志
tail -n 10 test.log 查询日志尾部最后10行的日志;
tail -n +10 test.log 查询10行之后的所有日志;

cat -n test.log |grep "debug" 查询关键字的日志


2.按行号查看---过滤出关键字附近的日志

1)cat -n test.log |grep "debug" 得到关键日志的行号
2)cat -n test.log |tail -n +92|head -n 20 选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志:
tail -n +92表示查询92行之后的日志
head -n 20 则表示在前面的查询结果里再查前20条记录
cat app.log | grep -C 5 '关键字'   (显示日志里匹配字串那行以及前后5行)
cat app.log | grep -B 5 '关键字'   (显示匹配字串及前5行)
cat app.log | grep -A 5 '关键字'   (显示匹配字串及后5行)


3.根据日期查询日志

sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效;
先 grep '2014-12-17 16:17:20' test.log 来确定日志中是否有该 时间点


4.进入编辑查找:vi(vim)    

 1、进入vim编辑模式:vi app.log

    2、输入“/关键字”,按enter键查找

    3、查找下一个,按“n”即可( n 查找上一处错误日志  N 查找下一处错误日志)

       4、ctrl+f: 下翻一屏。
          ctrl+b: 上翻一屏。
          ctrl+d: 下翻半屏。
          ctrl+u: 上翻半屏。
          ctrl+e: 向下滚动一行。
          ctrl+y: 向上滚动一行。

       5、ctrl+o回到搜索的地方

:w            - 保存文件,不退出 vim
:w file       -将修改另外保存到 file 中,不退出 vim
:w!           -强制保存,不退出 vim
:wq           -保存文件,退出 vim
:wq!          -强制保存文件,退出 vim
:q            -不保存文件,退出 vim
:q!           -不保存文件,强制退出 vim
:e!           -放弃所有修改,从上次保存文件开始再编辑

    其他情况:
    /关键字    注:正向查找,按n键把光标移动到下一个符合条件的地方
    ?关键字    注:反向查找,按shift+n 键,把光标移动到下一个符合条件的


5.查看所有关键字相关的日志(more 和vi 类似)

    more app.log 默认打开所有的,从前往后
             常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)
             
          1、more app.log | grep '关键字' 
          2、按Space键:显示文本的下一屏内容
          3、按B键:显示上一屏内容;
          4、按H键:显示帮助屏,该屏上有相关的帮助信息;
六、SQL
       SELECt
        tm.merchant_no AS merchantNo,
        td.NAME AS deptName,
        tm.NAME AS merchantName,
        tba.appid AS appId,
        CASE
        WHEN tm.createTime IS NULL THEN
        ( SELECT create_time FROM t_merchant_information t WHERe t.id = tm.id )
            ELSE tm.createTime
        END as createTime
        FROM
        (
        (
        SELECt
        tmi.id,
        tmi.merchant_no,
        tf.update_time as createTime,
        tmi.NAME,
        tmi.dept_id
        FROM
        t_merchant_information_pass tmi
        LEFT JOIN t_merchant_information_flow tf ON tf.merchant_no = tmi.merchant_no
        AND tf.flow_status = 3
        WHERe
        tmi.del_flag = 1
        AND tmi.dept_id != 1
        AND tmi.id IN
        
            #{id}
        
        GROUP BY
        tmi.merchant_no
        ) UNIOn
        (
        SELECt
        tmi.id,
        tmi.merchant_no,
        tmi.create_time as createTime,
        tmi.NAME,
        tmi.dept_id
        FROM
        t_merchant_information tmi
        LEFT JOIN t_merchant_information_flow tf ON tf.merchant_no = tmi.merchant_no
        WHERe
        tmi.del_flag = 1
        AND tmi.dept_id = 1
        AND tmi.id IN
        
            #{id}
        
        GROUP BY
        tmi.merchant_no
        )
        ) tm
        LEFT JOIN t_bank_appid tba ON tba.organ_no = tm.dept_id
        AND tba.is_delete = 1
        AND tba.STATUS = 1
        AND tba.organ_no != 1
        LEFT JOIN t_dept td ON td.id = tm.dept_id
        order by tm.id desc
        
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/985595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号