自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java加载资源文件方式

1.使用java.util.Properties类的load(InputStream in)方法加载properties文件Properties properties = new Properties();InputStream inputStream = new FileInputStream("src/main/resources/db.properties");properties.l...

2020-03-05 18:35:33 171

原创 SpringMVC异步

SpringMVC异步:@Controllerpublic class CallableController { @ResponseBody @GetMapping("/async") public Callable<String> async() { System.out.println("主线程:"+Thread.currentThread().getNam...

2020-02-19 12:44:06 261

原创 Servlet3.0使用

HttpServlet抽象类专注接收Http请求HttpServletRequest 接口继承ServletRequest接口 处理Http请求@WebServlet("/webServlet") //请求路径public class WebServlet3 extends HttpServlet { @Override protected void doGet(HttpServl...

2020-02-10 18:28:00 235

原创 内置锁(cynchronized)和显示锁(lock)的区别及读写锁

synchronized(内置锁):代码间接容易上手,只需在方法上添加synchronized 或者使用 synchronized 代码块即可自动释放锁.lock(显示锁):lock接口子类ReentrantLock 在需要尝试获取锁,或者超时获取锁,或者锁可以中断,或者公平锁的情况下使用手动释放锁.synchronized和ReentrantLock都是可重入锁:synchronize...

2019-12-09 18:18:28 401

原创 JAVA实现PHP中的md5函数sha1函数base64_encode算法

org.apache.commons.codec.digest.DigestUtilsDigestUtils.md5Hex() 对应php md5() 32位DigestUtils.md5Hex().substring(8, 24) 对应php md5() 64位DigestUtils.sha1Hex() 对应php sha1() 默认位数Base64.getEncoder().enco...

2019-11-14 22:15:12 693

原创 java Object中的wait(),notify(),notifyAll()必须在同步Synchronized方法/代码块中使用

为什么wait()必须在同步(Synchronized)方法/代码块中调用?调用wait()就是释放锁,释放锁的前提是必须要先获得锁,先获得锁才能释放锁.为什么notify(),notifyAll()必须在同步(Synchronized)方法/代码块中调用?notify(),notifyAll()是将锁交给含有wait()方法的线程,让其继续执行下去,如果自身没有锁,怎么叫把锁交给其他线程...

2019-11-07 13:37:42 432

原创 mysql 实现分组再排序

需求:将表中的数据进行分组再按时间降序sql 如下:SELECT users_id, money,create_date,COUNT(1) AS counts FROM ( SELECT users_id, money,create_date FROM sys_account_extract_record GROUP BY users_id,create_date ORDER BY cr...

2019-11-04 15:05:29 456

原创 thymeleaf 使用

th:text 文本赋值th:value 属性赋值th:if 判断th:each 遍历th:src 引入js文件th:href 引入css文件th:selected 回显<div th:if="${resultMode.userlevel != '3'}" class="layui-input-inline"> <select name="userAccount...

2019-10-31 16:18:10 226

原创 Mybatis 传参问题

问题一:之前在mysql客户端上编写sql习惯导致使用mybatis 将字符串参数逗号拼接进行传值 in(1,2,3) 一直返回一条数据 ,控制台输出的sql也没问题反复找不出所以然,经过同事指导才解决…//错误示例 原因:使用in 参数传值为1,2,3 mybaits底层不会解析 只能返回一条数据 List<String> list = usersMapper.getUs...

2019-10-31 16:09:45 202

原创 SpringMVC源码分析

https://www.cnblogs.com/hujunzheng/p/10819473.html

2019-10-13 16:19:42 91

转载 Spring AOP 动态代理

动态代理JDK动态代理CGLIB动态代理Spring AOP中的动态代理机制JdkDynamicAopProxyCglibAopProxySpring AOP中使用了两种动态代理,一种是JDK的动态代理,一种CGLIB的动态代理。JDK的动态代理必须指定接口,这些接口都是已经被代理对象实现了的;而CGLIB代理则不需要指定接口。JDK动态代理必须实现InvocationHan...

2019-10-11 20:48:26 202

原创 并发编程2

Callable和FutureTask(线程返回结果)public class Test { public static class A implements Callable<String> { @Override public String call() throws Exception { return "线...

2019-09-22 17:47:36 133 1

原创 并发编程01

并发工具类CountDownLatch :允许一个或多个线程等待,直到在其他线程完成工作再执行(增强版Join).public class UseCountDownLatch { //声明CountDownLatch 计数总值 6 static CountDownLatch latch = new CountDownLatch(6); //初始化线程 privat...

2019-09-16 19:42:04 230

原创 多线程模拟生产者消费者小案例

使用多线程实现生产者消费者案例:定义集合(容器)锁对象public class Lock { public static LinkedList<String> lock = new LinkedList<>(); //对象锁}定义生产者class A implements Runnable { //生产者 @Override p...

2019-09-12 13:21:03 299

原创 SpringBoot2.X整合RabbitMQ

SpringBoot2.X–RabbitMQ实战maven导入mq包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency&...

2019-09-11 18:56:59 404

原创 RabbitMQ第三章

Routing(路由模式):代码实践public class Produce_RoutingKey { private static final String QUEUE_SMS = "queue_inform_sms"; //短信队列名 private static final String QUEUE_EMAIL = "queue_inform_email"; //...

2019-09-10 22:30:02 122

原创 RabbitMQ第二章

RabbitMQ多种模式:Work queues (工作模式):代码实践:public class Produce01 { // 工作模式 生产者 //队列名 private static final String QUEUE = "SERVER_A"; public static void main(String[] args) { //...

2019-09-10 22:29:06 194

原创 RabbitMQ第一章

什么是消息队列      MQ全称为Message Queue,即消息队列。RabbitMQ基于AMQP协议实现消息队列,解决应用间的通信方法。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和...

2019-09-10 22:28:29 147

原创 多线程

什么是进程和线程:      进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。      线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有...

2019-09-09 19:57:13 108

原创 SpringAop切面

SpringAop切面SpringAOP简介面向切面编程(Aspect Oriented Programming)提供了另一种角度来思考程序的结构,通过这种方式弥补面向对象编程(Object Oriented Programming)的不足。除了类以外,AOP提供了切面,切面对关注点进行模块化,例如横切多个类型和对象的事务管理(这些关注点术语通常称作横切(crosscutting)关注点)。S...

2019-09-07 22:12:17 619

原创 Spring注解解析

Spring注解解析@Configuration注解该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。@Configuration //配置类public class MainConfig { //向容器注入bean 类型为返回值类型 id默认为方法名 ...

2019-09-07 15:40:19 593 1

原创 stream 流

**JDK8 Stream 流**概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。创建Stream我们有多种方式生成Stream:Stream接口的静...

2019-09-06 01:02:00 113

转载 JDK8--函数式接口

**函数式接口**jdk1.8 函数式接口java.lang.Runnablenew Thread(()->System.out.println("开启一个线程!")).start();java.util.concurrent.CallableExecutorService threadPool = Executors.newSingleThreadExecutor(...

2019-09-05 22:35:37 120

空空如也

空空如也

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

TA关注的人

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