- 博客(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
209
原创 SpringMVC异步
SpringMVC异步:@Controllerpublic class CallableController { @ResponseBody @GetMapping("/async") public Callable<String> async() { System.out.println("主线程:"+Thread.currentThread().getNam...
2020-02-19 12:44:06
311
原创 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
295
原创 内置锁(cynchronized)和显示锁(lock)的区别及读写锁
synchronized(内置锁):代码间接容易上手,只需在方法上添加synchronized 或者使用 synchronized 代码块即可自动释放锁.lock(显示锁):lock接口子类ReentrantLock 在需要尝试获取锁,或者超时获取锁,或者锁可以中断,或者公平锁的情况下使用手动释放锁.synchronized和ReentrantLock都是可重入锁:synchronize...
2019-12-09 18:18:28
463
原创 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
739
原创 java Object中的wait(),notify(),notifyAll()必须在同步Synchronized方法/代码块中使用
为什么wait()必须在同步(Synchronized)方法/代码块中调用?调用wait()就是释放锁,释放锁的前提是必须要先获得锁,先获得锁才能释放锁.为什么notify(),notifyAll()必须在同步(Synchronized)方法/代码块中调用?notify(),notifyAll()是将锁交给含有wait()方法的线程,让其继续执行下去,如果自身没有锁,怎么叫把锁交给其他线程...
2019-11-07 13:37:42
481
原创 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
542
原创 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
270
原创 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
264
转载 Spring AOP 动态代理
动态代理JDK动态代理CGLIB动态代理Spring AOP中的动态代理机制JdkDynamicAopProxyCglibAopProxySpring AOP中使用了两种动态代理,一种是JDK的动态代理,一种CGLIB的动态代理。JDK的动态代理必须指定接口,这些接口都是已经被代理对象实现了的;而CGLIB代理则不需要指定接口。JDK动态代理必须实现InvocationHan...
2019-10-11 20:48:26
249
原创 并发编程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
215
1
原创 并发编程01
并发工具类CountDownLatch :允许一个或多个线程等待,直到在其他线程完成工作再执行(增强版Join).public class UseCountDownLatch { //声明CountDownLatch 计数总值 6 static CountDownLatch latch = new CountDownLatch(6); //初始化线程 privat...
2019-09-16 19:42:04
263
原创 多线程模拟生产者消费者小案例
使用多线程实现生产者消费者案例:定义集合(容器)锁对象public class Lock { public static LinkedList<String> lock = new LinkedList<>(); //对象锁}定义生产者class A implements Runnable { //生产者 @Override p...
2019-09-12 13:21:03
350
原创 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
454
原创 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
160
原创 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
240
原创 RabbitMQ第一章
什么是消息队列 MQ全称为Message Queue,即消息队列。RabbitMQ基于AMQP协议实现消息队列,解决应用间的通信方法。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和...
2019-09-10 22:28:29
214
原创 多线程
什么是进程和线程: 进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有...
2019-09-09 19:57:13
142
原创 SpringAop切面
SpringAop切面SpringAOP简介面向切面编程(Aspect Oriented Programming)提供了另一种角度来思考程序的结构,通过这种方式弥补面向对象编程(Object Oriented Programming)的不足。除了类以外,AOP提供了切面,切面对关注点进行模块化,例如横切多个类型和对象的事务管理(这些关注点术语通常称作横切(crosscutting)关注点)。S...
2019-09-07 22:12:17
676
原创 Spring注解解析
Spring注解解析@Configuration注解该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。@Configuration //配置类public class MainConfig { //向容器注入bean 类型为返回值类型 id默认为方法名 ...
2019-09-07 15:40:19
647
1
原创 stream 流
**JDK8 Stream 流**概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。创建Stream我们有多种方式生成Stream:Stream接口的静...
2019-09-06 01:02:00
153
转载 JDK8--函数式接口
**函数式接口**jdk1.8 函数式接口java.lang.Runnablenew Thread(()->System.out.println("开启一个线程!")).start();java.util.concurrent.CallableExecutorService threadPool = Executors.newSingleThreadExecutor(...
2019-09-05 22:35:37
165
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人