自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 在日志中记录Java异常信息的正确姿势分享

使用这种无法记录出错误的详细信息,比如出错的方法,行数等等,需要这样子,直接把。

2023-04-10 15:01:35 496

原创 Maven已经导入jar包但是不能import引入的问题

maven已经install在本地了,本地仓库也有jar了,但是其他项目在引入这个jar的时候,也显示引入成功了,但是就是import相关类的时候,报错找不到...把编译打包插件改为 maven-compiler-plugin。然后重新import就可以。发现:把这个jar解压后。

2023-04-10 12:16:15 2665

原创 2021-05-19

一直认为这个没起作用,其实是自己理解错了。很可能是这个任务里面去执行了多线程任务,这里的concurrent是只针对本身,不针对这个任务里面的多线程任务。如果本身里面的任务是单线程的话,那么就会是按照一个执行完了再执行下一个。多线程的话就是另外一种情况了。...

2021-05-19 10:07:00 148

原创 web监听器

存在这样一种情况,即使项目的web.xml里面配置了HttpSession的监听器,但是像访问下面的方法,并没有触发。原因分析:访问这个方法其实并没有创建session,所以根本无法触发HttpSession的监听。需要下面这样子写才会触发监听:下面这样子写了之后,sessionID会返回给浏览器,下面浏览器又来访问这个地址时候,会携带JSESSIONID来,代码里面的request.getSession()方法根据携带过来的JSESSIONID可以查到对应的session,所以这次访

2021-04-27 14:34:03 307

原创 集合差集、交集、并集

List<String> list1 = new ArrayList<String>(); list1.add("A"); list1.add("B"); List<String> list2 = new ArrayList<String>(); list2.add("B"); list2.add("C");差集:list1.removeAll(list2); li.

2021-04-27 13:34:06 673

原创 springmvc component-scan

我开始这样子配置项目springmvc配置扫描:<context:component-scan base-package="com" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>spring配置

2021-04-26 16:26:33 442

原创 springmvc静态资源

我自己搭建ssm框架时候,想重现静态资源无法访问的现象,一直无法重现,我都可以访问到webapps目录下面的jsp文件,js文件、html文件等等...好诡异...最后才找到原因:原来,我在springmvc.xml 文件、applicationContext.xml文件写了一个注解<mvc:default-servlet-handler/>然后把它删除了,不配置,就无法访问静态资源了。所以得出结果:要正常访问静态资源的解决方案之一:添加<mvc:default-s.

2021-04-26 14:36:10 172

原创 Arrays.asList

List<String>cases1= Arrays.asList("XM201805180064", "XM201805290174", "XM20180418003ws", "XM2018101701sd4", "XM2018062001fs", "XM20181105020s", "XM20181227012x");List<String>cases2= Arrays.asL.

2021-04-25 17:32:15 69

原创 spring事务

@Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。对于出现异常的代码中用到try{}catch(),如果在catch 中只是打印异常,没有抛出,事物就不会rollback,框架也不会接收到异常信息。如果像下面这样子写,在被@Transactional注解的方法上抛出异常,我...

2021-04-25 14:02:20 52

原创 hashMap 获取里面value最大的值得key

public static void main(String[] args) { Map<String, Integer> map = new HashMap(); map.put("1", 8); map.put("2", 12); map.put("3", 53); map.put("4", 33); map.put("5", 11); map.put("6", 3); map.put("7", 3); Set&.

2021-04-25 13:22:28 7785 1

原创 com.alibaba.fastjson.JSON

类似下面的json格式的字符串,我们可以转为jsonObject对象。String s="{\"recordsTotal\":\"0\",\"draw\":0,\"recordsFiltered\":1}";JSONObject jsonObject=JSON.parseObject(s);JSONObject jsonObject1=JSONObject.parseObject(s); 都可以。类似下面的json格式的字符串,我们可以转为jsonArray数组对象。String s

2021-04-25 12:07:25 781

原创 HIbernate的delete save

在网上资料说,hibernate有它自己的优化机制,你所有的操作都会在hibernate的SQL队列里面,这个队列就是先处理Insert,然后再处理Delete。执行顺序和我们写的顺序无关。如果你要保证先执行Delete操作,那么你需要再delete操作后执行flush()操作,提交事务。然后再执行insert()操作。我原来一开始这样子写的:commonService.delete(CaseDetail.class,oldCaseDetail.getId());commonService.

2021-04-25 09:54:56 540

原创 datatable render formatter

开发过程中遇到一个问题:使用render是可以有效果,但是使用formatter就没有效果解惑:render 可以在columns属性中实现,也可以在columnDefs属性中实现.在项目里面凡是使用了formatter的都可以使用render替换,所以都写render吧...

2021-04-23 20:09:18 321

原创 数据库连接池

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:.

2021-04-23 09:37:22 98

原创 mysql基础函数 sum()结果小数位处理

使用cast(.. AS ..)函数 转为decimalSELECT sum(money_f) result from student; ---->21.7999992370605SELECT cast(sum(money_f) AS DECIMAL(10,2)) result from student; --->21.80decimal(10,2)中的“2”表示小数部分的位数,如果插入的值未指定小数部分或者小数部分不足两位则会自动补到2位小数,若插入的值小数部...

2021-04-22 16:25:23 6338

原创 mysql基础函数 count()

count()是统计查询结果的行数,注意的是count会忽略掉null的结果,所以如果字段中包含有null,可能导致统计结果不准确。SELECT COUNT( age) from student; ---> 2一般建议count的列为非null的列,或者直接一个数字:SELECT COUNT(id) from student; --->4SELECT COUNT(1) from student; --->4...

2021-04-22 16:04:20 852

原创 mysql基础函数 sum()

sum():会自动过滤掉null的值,只去计算其他不为null的值的总和。但是如果值都为null的话,sum()的结果也是null,而不是0.这个和count()函数不一样。比如select sum(age) from student; --->5select sum(age) from student; --->null一般建议使用IFNULL函数 select IFNULL(sum(age),0)from student;...

2021-04-22 15:58:16 1887

原创 Spring项目使用StopWatch来计算耗时

2021-04-21 17:21:08 338

原创 MySQL修改默认事务隔离级别

一、查看当前 MySQL 版本号select version();二、查看当前全局事务隔离级别1、MySQL5.6 及其更早的版本select @@global.tx_isolation;2、MySQL5.7 及更高版本select @@global.transaction_isolation;1、MySQL5.7 引入了 transaction_isolation 用来代替 tx_isolation,并在 MySQL8.0.3 去掉了 tx_isolation,在 .

2021-04-21 17:07:36 1912

原创 线程池多线程如果有任务出现异常,怎么统计成功的个数

工作中使用到了CountDownLatch countDownLatch =new CountDownLatch (20);让线程池去跑20个任务,如果不管有无异常,run()方法都必须有finally()方法,在finally方法里面执行 countDownLatch.countDown()让总任务数减少1.这样子的话就存在,外面使用countDownLatch.await()方法后,不知道具体成功了多少个任务。我暂时的解决方案是:countDownLatch.await()方法,再自己去数据库.

2021-04-21 16:58:01 941

原创 单线程化线程池newSingleThreadExecutor的关闭

现在工作中使用线程池的话,基本上都使用jdk自带的Executors类,我在一次开发当中使用到了单线程化线程池(newSingleThreadExecutor),单线程化线程池(newSingleThreadExecutor)的优点,串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。但是我在开发中是这样子做的,有20个任务,我代码像下面这样子写的,有点性能问题,该任务执行完毕后,系统多了20个无用的线程池。

2021-04-21 15:21:23 2543

原创 怎么保证在多线程任务都执行完后再执行某一动作 CountDownLatch

在开发过程当中,我们使用了多线程来异步执行多任务,但是我们想在这些任务执行完成后,才接着再执行的话,就需要使用到CountDownLatch这个类了。首先我们需要知道被执行任务的个数,比如这里是有20个任务,那么CountDownLatch latch = new CountDownLatch(20);然后在创建任务的时候,把latch带进去,在该任务的run()方法执行完毕后,需要执行latch.countDown()方法。这个countDown()方法就标识这个任务执行完了,总的数量会减1.

2021-04-21 14:37:19 3746

原创 spring事务

如果一个方法A里面还调用了一个方法B,A、B都使用了事务,那么在B事务里面新增的数据,在A方法里面可以查询得到吗?可以的:事务的传播行为默认是PROPAGATION_REQUIRED,也就是:如果当前没有事务,就新建一个事务;如果已经存在一个事务,那么就加入这个事务。所以疑惑得到解决:B不会自己再去建立一个事务,而是使用A的事务,由A的事务来管理,只有一个事务A,没有事务B的说法了,所以在一个事务里面新增的数据,在当前事务肯定是可以查询到的。ps:如果在B方法执行完毕,但是A还没执行完的时候,打

2021-04-21 09:06:04 212

原创 使用RestTemplate模板调用接口

restTemplate有很多方法,有postForEntity(...)、getForEntity(...),我个人建议使用exchange(),因为exchange()是通用方法,既可以做GET、POST请求,还可以设置其他请求方式。1、(POST)如果服务端代码是下面这样子,使用了@RequestBody来修饰参数,那么客户端就需要把请求头设置为content-type=application/json;charset=utf-8;服务器端代码:@RequestMapping(value

2021-04-19 17:43:31 645

原创 LocalDateTime与Date的使用

JDK8新特性提供了3个时间类:LocalDate、LocalTime、LocalDateTime.以前一直使用的是Date类,如果需要打印时间字符串,需要使用SimpleDateFormat类:Date date=new Date();System.out.println(date); ---> Mon Apr 19 13:39:06 CST 2021SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

2021-04-19 14:20:17 1643

原创 ConnectionTimeOut和SocketTimeOut的区别

一次完整的http请求包含 建立连接、传输数据、断开连接。ConnectionTimeOut 是指建立连接的时候就超时了,没有连接到对方。表现形式:java.net.ConnectException: Connection refused: connectSocketTimeOut 是指已经建立连接了,但是在服务器没有在规定的时间内传输数据给客户端,有可能是对方处理数据慢导致超时,表现形式:java.net.SocketTimeoutException: Read timed out...

2020-12-17 15:49:51 5472

原创 MAVEN下载

maven官网下载地址:https://maven.apache.org/download.cgi

2020-12-15 08:26:45 62

原创 String字符串进入常量池的时机以及intern()方法

String对象的创建过程先举一个例子 String str="java";过程分析:在class文件被JVM装载到内存中,JVM会创建一块 String Pool(字符串常量池)。当执行到String str="java"时候,JVM会首先在string pool 中查看是否已经存在字符串对象“java”,如果已经存在,则不用创建新的对象,直接将str指向string pool中已经存在的对象“java”,如果不存在,则先在string pool中创建一个新的字符串“java”,然后将str指向它

2020-12-14 16:11:28 1147 1

原创 如何查看SPRING-BOOT历史版本

https://docs.spring.io/spring-boot/docs/选定版本后,进入reference/html 即可

2020-12-14 16:11:13 4711 3

原创 理解 equals ==

JAVA里面的数据类型可以分为2类:1、基本数据类型:byte、short、int、long、float、double、boolean、char 8种。他们之间的比较【之间:我的理解是这8种类型仅限这8种相互交叉比较,比如byte==byte 也可以 byte==short 也可以 byte==int】,就使用双等号(==),比较的是他们的值。举例子:float a=65; char b='A'; a==b 为 truefloat a=65; int b=65; a==b..

2020-12-11 16:35:38 109

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除