- 博客(32)
- 收藏
- 关注
原创 sharding-jdbc中的max.connections.size.per.query
分表项目启动慢的问题,sharding-jdbc中的max.connections.size.per.query
2022-09-12 12:44:56 2995 1
原创 Mybatis详解(配置详解、源码解读、一级缓存二级缓存原理)
mybatis各个配置有什么意义?在代码中如何影响运行?一级缓存二级缓存具体怎么实现的?本文带大家从源码理解。
2021-08-14 10:18:20 423
原创 java中jar包运行之-jar和-cp命令
或多或少,我们都会见到用这两种命令启动java程序,最基本的用法如:java[options] -jar xxx.jar[args]java [options] -cp xxx.jar classname [args]那这两种用法有什么区别呢?我们先写一个简单的测试类(为了方便说明问题,不借助开发工具):1)在本机随便找个目录,创建com.test目录,并编写HelloTest.java文件:package com.test;public class HelloTest..
2021-07-29 22:43:17 3876
原创 java项目线上tomcat日志行前esc乱码问题
问题描述:tomcat日志文件路径:/apps/logs/tomcat/catalina.out用more或者tail命令打开文件时一切正常:用less或vi命令打开文件时,发现行前有esc乱码,如:考虑到最近项目变更,猜测是引入了新的jar包,里面依赖了高版本log相关jar,于是做了下依赖检测,发现果然多了一个高本版依赖,在pom里exclude掉,解决问题。至于行前这个esc乱码到底是什么?没研究,欢迎懂的大神评论指导。...
2021-06-11 09:27:54 1551
原创 用MessageFormat格式化替换数字导致多了千位分隔符问题
以前我格式化字符串时喜欢用String.format,如:String str = String.format("hello:%s", 1001);System.out.println(str);输出结果即是我要的期望值:hello:1001然而,我有一天想换个用法时,也就是MessageFormat.format():String str = MessageFormat.format("hello:{0}", 1001);System.out.println(str);结果得到
2021-06-02 10:12:58 968
原创 java.lang.IllegalArgumentException: Comparison method violates its general contract!
java.lang.IllegalArgumentException: Comparison method violates its general contract!
2021-04-02 10:34:23 820
原创 一次线上mongodb的upset操作
mongodb分片集合上不正确的update操作导致的does not contain shard key for pattern问题
2021-04-01 20:25:34 1021
原创 JAVA之ConcurrentHashMap和HashMap关于线程安全问题分析
ConcurrentHashMap之所以是线程安全的,其内部使用了CAS乐观锁+synchronized锁机制,保证多线程下的操作安全。
2021-03-03 20:09:28 328 4
原创 Java-return-finally
在try...finally...语句块范围内:1、return并不意味着方法的结束,return执行后,仍然会执行finally语句块;2、return时,只是把值暂存到栈中,当finally中也有return时,会用新的值覆盖栈中的值,方法彻底结束后,返回栈中的值,;
2021-02-24 17:15:38 564
原创 JDK1.8常用容器类数据结构分析(List/Set/Map/Queue)
JAVA容器类很多,但内部数据结构主要是数组或链表或红黑树,容器的操作算法都是基于这些数据结构完成的。
2020-05-02 10:57:09 542
原创 java之ThreadLocal原理及使用案例
ThreadLocal是java.lang包下的类,用于保存线程级别的参数,在多并发编程中,为每一个线程创建一个单独的副本,实现彼此隔离。
2020-04-21 10:30:50 368
原创 java之行,走过的路,踩过的坑
1.测试案例单独写,不要在正常逻辑中改代码,很容易忘记改回;2.判断有没有数据时,不要用count(*),改为limit 1;3.一切涉及资源交互、socket连接的代码,都要考虑是否需要手动close或release;4.使用的表,一定要考虑好业务场景,提前加好索引,否则数据量达到临界值会出问题,另外要考虑单独清理表数据;5.日常所有脚本和事项都要记录下来6.系统打不开,除了应用本身需...
2020-03-07 10:49:56 157
原创 MySql存储引擎详细介绍
MySql5.5及以上版本,默认引擎是innodb,5.5之前的版本默认是myisam引擎。概念:MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。在Myisam下,数据库的每个数据表都有*.frm、*.Y...
2020-03-03 10:03:25 157 1
原创 java内存溢出(OutOfMemoryError)问题排查
关于项目中出现OutOfMemoryError错误问题排查分析,可以根据实际情况使用不同的方法方法一、项目运行过程中,监控jvm内存使用情况,发现异常首先利用jps命令查看jvm进程ID这里的OomTest类是我Eclipse中运行的main方法所在的类,以此为例。然后利用jmap命令查看目前堆中对象的统计信息jmap -histo [pid] 命令可以列出内存中对象的...
2020-02-03 10:46:25 1302
原创 maven打包报错:Error creating shaded jar: invalid LOC header (bad signature)
使用maven打包时一直报错,打包命令:mvn clean install -Dmaven.test.skip=true -P product报错如下:根据提示使用 -X 参数debug,命令:mvn -X clean install -Dmaven.test.skip=true -P product找到本地仓库中E:\maven\repo\org\scala-lang\sca...
2019-11-25 11:45:27 605
原创 图文梳理ReentrantReadWriteLock内部原理
ReentrantReadWriteLock,可重入的读写锁,位于java.util.concurrent包下,相比于ReentrantLock属于排他锁,ReentrantReadWriteLock内部分别维护了一个读锁和一个写锁,在对共享资源的使用时,允许多个读线程共享资源,但不允许读和写线程同时访问资源,在多读的并发操作中,其性能远优于ReentrantLock。ReentrantRea...
2019-11-15 09:30:55 687 1
原创 Mysql大表数据清理
假设大表表名:t_logdelete操作会记录mysql日志,大数据量的清理会耗费大量时间,所以一般得用其他方式。1、如果大表数据对我们来说不重要,完全可以直接清理,那么可以用truncatetruncate table t_log;truncate的操作不记录mysql日志,所以数据是不能恢复的。2、如果需要保留部分数据创建表并直接保留需要的数据create tab...
2019-11-10 21:57:58 1613 3
原创 java各种锁概念大全(乐观、悲观、自旋、公平、非公平、CAS等等)
本篇主要介绍各种锁相关的概念,没有过多详细的讲解,帮助大家一起梳理整个java锁知识体系。关于锁的概念,很多都是从不同角度去划分的,有些是互斥的概念,如悲观锁和乐观锁,有些是兼容的概念,如悲观锁可以是公平锁,可以是阻塞锁,而有些则纯粹是锁实现的算法,如CAS算法是乐观锁的一种实现方式。1、悲观锁和乐观锁悲观锁:总是往坏处想,认为当前线程使用的共享资源一定会被其他线程修改,所以需要在开始...
2019-10-21 10:23:54 263
原创 java同步锁的几种实现方式
单机环境下对共享资源的同步访问可以用java提供的api去实现。一、synchronized关键字这应该是java开发人员很熟悉的一个关键字了,可以用在代码块和方法上,保证代码或方法的同步运行。看如下一个简单的代码示例,使用了十个线程,每个线程修改十次资源:public class LockTest { public static void main(String[] arg...
2019-10-15 11:08:18 2151
原创 jar包冲突解决思路
工作中,难免会因为各种原因需要对项目jar包进行升级,一升级,就会碰到各种jar包冲突问题,这时候就需要我们能很快定位冲突的位置,以及如何快速调整依赖。首先,我们通常说的jar包冲突到底是指什么?jar包冲突本质是因为项目中存在多个同包同名类,而虚拟机加载了我们不期望加载的类,这些类可能已经过时,缺失了一些新的方法或逻辑,也有可能太新,需要引入更高版本其他jar包的内容,这样就会导致项目中...
2019-10-10 09:52:46 6522 3
原创 java类加载器
Java所有的类都由类加载器负责加载到虚拟机内存中,对于任意一个类,都需要由加载它的类加载器和这个类本身一同确定其在java虚拟机的唯一性,所以我们通常比较的两个类“相等”,实则是同一类加载器加载的前提下,如果类加载器不同,即便是同一个类,也不会相等。java中类加载器分为两种:一种是用c++语言实现的加载器,也就是启动类加载器,是虚拟机的一部分;另一种就是java语言自己实现的加载器,全部继...
2019-09-29 09:20:18 491
原创 slf4j和logback日志框架详解
什么是slf4j?slf4j(Simple Logging Façade For Java)是门面模式的一种应用,提供一套接口供调用,本身不实现具体的日志输出逻辑,通常和其他的具体实现打印功能的日志框架组合使用,比如一会要说的logback,为什么要用slf4j,而不直接用logback呢?因为slf4j是一套接口规范,提供日志调用门面,不需要我们关心其具体使用的哪种日志框架,对项目来说低耦合...
2019-09-20 12:55:03 1400
原创 计算机真值、原码、反码、补码、移码
1.概念介绍首先,我们假设机器存储数字字长是8位。直接使用表格举例说明概念和计算方式:概念 例1 例2 例3 例4 例5 例6 转换关系 真值(十进制) +0 -0 +5 -5 +0.5 -0.5 十进制形态下的数字 真值(二进制) +0 -0 +101 -101 ...
2019-09-14 12:34:40 7929
原创 java泛型介绍
泛型是java1.5引入的新特性,用来参数化类型,可以用在接口、类、方法中,分别称为泛型接口、泛型类、泛型方法。1.泛型类我女朋友爱吃水果,家里也有很多天猫超市货品纸箱,买回来的水果都放到纸箱子里,作为箱子,当然是什么东西都可以放的,就像这样:public class Box { private int capacity = 10; private Object[] ...
2019-09-08 12:25:32 170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人