- 博客(326)
- 资源 (6)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Mybatis
Mybatis3 学习笔记01. Mybatis 简介02. Mybatis 环境搭建03. Mybatis 环境搭建-完善单表的CRUD04. Mybatis 动态sql05.Mybatis sql 片段重用06. Mybatis 缓存-一级缓存07. Mybatis 缓存-二级缓存08. Mybatis 核心配置文件09. Mybatis 核心配置-别名配置10. Myba...
2019-08-28 10:58:17
8696
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Shell 学习笔记
01. Shell 脚本编程简介02. Shell 变量-用户自定义变量03. Shell 变量-内置变量04. Shell 变量-脚本参数变量05. Shell 输入与输出06. Shell 数组07. Shell 判断表达式09. Shell 流程控制-循环10. Shell-函数11. Shell 输入输出重定向08. Shell 流程控制-判断分支12. Shell ...
2019-08-28 10:58:09
5784
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Perl 学习笔记
01. Perl 简介03. Perl 数据类型-简介04. Perl 数据类型-直接量05. Perl 数据类型-标量变量06. Perl 数据类型-数组基本用法07. Perl 数据类型-数组常用API08. Perl 数据类型-哈希基本用法09. Perl 数据类型-哈希常用API10. Perl 运算符11. Perl 控制结构-判断12. Perl 控制结构-循环1...
2019-08-28 10:58:02
9834
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: vsftpd 学习笔记
1. vsftpd安装: Linux 下的ftp服务2. vsftd 用户管理之虚拟用户3. vsftpd常用配置
2019-08-28 10:57:56
9739
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Jdbc 学习笔记
Jdbc 学习笔记01. jdbc 简介02. jdbc 数据库连接管理03. jdbc Statement sql注入风险04. jdbc PreparedStatement 执行增删改05.jdbc PreparedStatement 执行查询06. jdbc CallableStatement 调用存储过程与函数07. jdbc 批量操作08. jdbc 事务09. jdb...
2019-08-28 10:57:51
9964
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Spring Shell 学习笔记
00.SpringShell简介01.SpringShell环境搭建02.SpringShell自定义命令-@ShellMethod03.SpringShell命令参数-@ShellOption04.SpringShell参数校验05.SpringShell命令限制可用-@ShellMethodAvailability06.SpringShell命令分组-@ShellCommandGr...
2019-08-28 10:57:42
9143
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Spring Data Redis 学习笔记
01. SDR(spring-data-redis) 简介02. SDR 环境搭建03. SDR RedisTemplate 简介04. SDR RedisTemplate API 简介05. SDR StringRedisTemplate 简介06. SDR 序列化方式-Serializer07. SDR 自定义序列化-fastjson08. SDR 自定义序列化-Gzip 压缩...
2019-08-28 10:57:35
8986
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Quartz学习笔记
00.Quartz 简介01.Quartz 环境搭建-基于内存02.Quartz 环境搭建-基于jdbc-mysql03.Quartz 定时任务-Job 和 JobDetail04.Quartz 触发器05.Quartz cron 表达式详解06.Quartz 监听器-JobListener07.Quartz 监听器-TriggerListener08.Quartz 监听器-Sch...
2019-08-28 10:57:29
9864
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: java8 学习笔记
java8 学习笔记01. Java8-Lambada 表达式02. Java8-四大核心函数式接口03. Java8-方法引用04. Java8-流式API-简介05. Java8-流式API-创建流06. Java8-流式API-中间操作07. Java8-流式API-终端操作08. Java8-流式API-终端操作collect09. Java8-流式API-并行流10....
2019-08-28 10:57:24
9057
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Zookeeper 学习笔记
Zookeeper 学习笔记01. Zookeeper 简介02. Zookeeper 安装-单实例环境03. Zookeeper 安装-伪集群环境04. Zookeeper 安装-集群环境05. Zookeeper shell客户端-常用命令06. Zookeeper shell客户端-权限操作ACL07. Zookeeper 节点类型 & 节点信息08. Zookeep...
2019-08-28 10:57:16
9798
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: Redis 学习笔记
Redis 学习笔记01. Redis 简介02. Redis 源码安装03. Redis 常用配置04. Redis 环境搭建-单实例05. Redis 环境搭建-高可用集群(HA)06. Redis 环境搭建-分片集群Cluster07. Redis 客户端访问08. Redis 五种数据类型-字符串String09. Redis 五种数据类型-列表List10. Redi...
2019-08-28 10:57:10
9778
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 目录: 23种经典设计模式学习笔记
01. 23种经典设计模式-11-单例模式02. 23种经典设计模式-12-原型模式03. 23种经典设计模式-13-工厂方法模式04. 23种经典设计模式-14-抽象工厂模式05. 23种经典设计模式-15-建造者模式06. 23种经典设计模式-15-建造者模式扩展07. 23种经典设计模式-21-组合模式08. 23种经典设计模式-22-享元模式09. 23种经典设计模式-23...
2019-08-28 10:50:06
5979
原创 idea 中 maven 无法下载源代码: Cannot download Sources
idea 中 maven 无法下载源代码: Cannot download Sources, 进入工程执行: mvn dependency:resolve -Dclassifier=sources
2021-12-11 13:59:23
2273
1
原创 Rabbitmq 页面推送: WebSocket connection to ‘ws://xxx/ws‘ failed: Could not decod a text frame as UTF-8
笔者最近在使用rabbitmq stomp 插件进行页面推送时, 发现使用sock接受消息的页面报: Could not decod a text frame as UTF-8 错误, 经排查发现是服务端发送消息时,未配置文本消息转换器导致的。1. 接受消息页面stomp.js: https://github.com/rabbitmq/rabbitmq-web-stomp-examples/blob/master/priv/stomp.js<script src="../js/jquery.3
2020-10-28 00:02:31
2319
2
原创 如何下载 spring 官方文档 pdf
spring 系列框架,官方文档都是html 格式的, 并未提供pdf 的下载入口。在html 路径后直接添加/pdf 即可进入pdf 下载页面1. spring 官网进入spring官网: https://spring.io/projects/spring-framework选择框架, 点击右侧标签LEARN,点击 Reference Doc.2. 文档概览官网默认提供的是html格式的文档spring framework 核心框架的官方文档按模块儿进行了拆分,分成了八个模块h.
2020-08-11 11:51:32
2635
原创 ExceptionUtil: 转换Exception 的printStackTrace 输出为字符串
java 中当捕获到异常(Exception) 时,我们可以通过ex.printStackTrace()方法将异常的堆栈信息输出到控制台。但是有时我们需要保存异常的堆栈信息,比如记录在数据库,而java并没有提供相应的API。 自己动手丰衣足食,笔者自己封装了一个工具方法,然后放入自己的工具箱。1. ExceptionUtil笔者将转换方法封装到工具类ExceptionUtil 之中public final class ExceptionUtil { /** 解析异常堆栈信息 .
2020-07-16 17:19:12
1243
原创 02. 线程的五种状态
1. 线程的状态java 中, 线程有五种状态: 新建(New), 就绪(Ready), 运行(Running), 阻塞(Blocked), 死亡(Dead). 线程启动后, 不可能一直霸占着CPU 独自运行, CPU 需要在多个线程之间切换, 因此线程状态也就会在运行, 就绪之间来回切换.1.1 线程的五种状态之间的转换新建状态: 通过new 创建线程后, 线程便进入了新建状态新建 -...
2019-09-01 18:52:47
7213
原创 03. 异步线程创建-Thread 方式
1. 核心内容直接继承Thread类是创建异步线程最简单的方式, 但并不常用. 匿名内部类的方式可以考虑.1.1 继承Thread 方式特点开发简单, 可直接通过this.获取线程的相关信息违背了面向接口编程原则, 需直接继承Thread类, 不利于扩展. 不推荐使用主线程不能监控子线程何时结束, 也不能获取子线程返回结果切记启动异步线程的方式是调用star()方法, 而非调用run...
2019-09-01 18:52:36
2056
原创 04. 异步线程创建-Runnable 方式
1. 核心内容直接继承Thread类是创建异步线程最简单的方式, 但并不常用. 匿名内部类的方式可以考虑.1.1 继承Thread 方式特点开发简单, 可直接通过this.获取线程的相关信息违背了面向接口编程原则, 需直接继承Thread类, 不利于扩展. 不推荐使用主线程不能监控子线程何时结束, 也不能获取子线程返回结果切记启动异步线程的方式是调用star()方法, 而非调用run...
2019-09-01 18:52:16
4810
原创 05. 异步线程创建-Callable 方式
1. Callable 方式Callable 方式最主要的特点就是可以阻塞式获取子线程执行结果, 也就是说对于长耗时的任务,可以放到子线程中执行, 而主线程去执行其它任务. 当主线程执行完其它任务之后, 需要获取子线程任务返回结果时, 如果子线程没有执行完, 主线程会阻塞, 等子线程执行完之后, 再继续执行.1.1 Callable 特点面向接口编程, 松耦合设计在多线程模式下,可实现对...
2019-09-01 18:51:09
1593
原创 06. 守护线程
前言:1. 守护线程java 语言中有两种类型的线程, 用户线程和守护线程.1.1 守护线程与用户线程区别守护线程和用户线程唯一的区别就是:当jvm中只剩下守护线程时,jvm便会终止程序,所有守护线程立即结束。当jvm中还存在至少一个用户进程时, jvm 也不会终止程序。1.2 守护线程注意事项守护线程会随时终止守护线程创建的子线程也是守护线程, 纵使子线程设置为非...
2019-09-01 18:51:01
1099
原创 07. 线程组
1. 线程优先级每个线程执行时都具有一定的优先级, 优先级较高的线程将获得更多的执行机会.每个线程默认的优先级都和它的父线程的优先级相同默认情况下, main 程序具有普通优先级, 也就是51.1 优先级取值范围优先级的范围为1~10之间的整数, Thread 也提供了三个常用的优先级常量:Thread.MIN_PRIORITY: 值为1, 最低优先级Thread.NORM_P...
2019-09-01 18:50:52
1064
原创 08. 线程异常捕获
1. 线程的异常捕获1.1 线程异常的捕获从java5 开始, Java 加强了对线程异常的处理. 如果线程执行过程中抛出了一个未处理的异常, JVM在结束该线程之前, 会自动查找该线程是否拥有对应的线程异常处理器对象, 若找到之后, 则调用异常处理器的方法处理异常.java5 之前通常都会使用try-catch, 包裹run()/callable()方法, 这样代码会有些臃肿1.2 ...
2019-09-01 18:50:44
1110
原创 09. 线程池-Executors 相关API
系统创建和销毁一个线程的成本是比较高的, 因为它涉及到与操作系统的交互. 因此, 使用线程池可以很好地提高性能, 尤其是在系统需要频繁创建大量且生命周期很短暂的线程时. 线程池和数据库连接池异曲同工.1. 线程池创建工具类-Executors在java5之前, 我们需要自己动手创建线程池, 设置初始化数量, 阻塞队列等. 从java5 之后, java 新增了Executors 工厂类来创建...
2019-09-01 18:50:36
1370
原创 10. 线程池-Executors 常见用法示例
1. 创建异步任务为了测试方法, 笔者创建一个有返回值的Callable类, 创建一个无返回值的Runnable 类.1.1 自定义Callablepublic class MyCallable implements Callable<String> { @Override public String call() throws Exception { ...
2019-09-01 18:50:30
1549
原创 11. java线程池-ForkJoinPool
1. ForkJoinPooljava7 提供了ForkJoinPool 来支持将一个任务采用递归方式分成多个小任务计算, 然后再把小任务的计算结果合并为总的结果.1.1 ForkJoinPool 的创建方式java7 提供了两个构造器:ForkJoinPool(int paralleism): 创建时指定并行线程数ForkJoinPool(): 以当前机器的cpu个数(Runtim...
2019-09-01 18:50:22
1224
原创 12. 线程安全类型-原子类型
1. 原子类型从java5 之后, java.util.concurrent.atomic 包下, 新增了一组原子类, 是基本类型对应的线程安全的类型. 命名为AtomicXXX1.1 常用原子类java.util.concurrent.atomicAtomicInteger: 原子整型AtomicLong: 原子Long 型AtomicBoolean: 原子布尔型AtomicIn...
2019-09-01 18:50:15
1500
原创 13. 线程安全类型-集合
Java 中常见的集合类型都是不安全的, 比如说ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap 等, 这些都是线程不安全的. 也就是说当多线程访问这些数据时, 便可能会产生结果紊乱.Java5 之后, 在java.util.concurrent 包下新增了大量的支持高并发的集合接口和实现类, 同时Collections 工具类中...
2019-09-01 18:50:08
1795
原创 14. 线程安全类型-ThreadLocal
在多线程开发中, 我们有时需要用到一些和线程状态相关的变量, 每个线程所拥有的变量不一致. java 提供了ThreadLocal 变量来实现.1. ThreadLocalThreadLocal 为每一个使用该变量的线程创建了一个副本, 使得每一个线程都可以独立地变更自己的副本, 与其它线程的副本隔离, 以实现线程对象的私有变量.1.1 ThreadLocal API方法签名方法...
2019-09-01 18:49:48
1173
原创 15. 线程同步-sychronized与Lock
1. 线程安全问题在多线程环境下, 如果使用线程不安全的类型, 可能会产生并发问题. 解决线程安全问题, 笔者总结有以下三种情况:使用线程安全的变量: Automicxxx 等使用隐形锁, 借助synchronized 关键字使用显示锁, java5 新增的Lock 接口1.1 模拟多线程并发问题public class Product { private Integer...
2019-09-01 18:49:42
251
原创 16. 线程通信-传统方式
1. 线程通信的传统方式传统的线程通信方式指的是借助于, Object 基类中的wait(), notify(), notifyAll()方法. 这三个方法必须由同步监视器对象进行调用, 影响的也只是同一同步监视器的相关线程.1.1 同步监视器同步监视器, 也就是指监视的资源. 对于synchronized 同步方式, 有两种情况:synchronized 修饰的同步方法, 同步监视器...
2019-09-01 18:49:27
1125
原创 17. 线程通信-Condition
1. 线程通信-Condition当使用synchronized 进行线程同步时, 可以使用Object的wait(), notify(), notifyAll() 方法进行线程通信.但是当使用Lock 对象保证线程同步时, 便不能使用Object 的方法来进行线程通信了, 而是通过Condition 对象进行线程通信1.1 Condition APICondition 提供了和Obj...
2019-09-01 18:49:20
1157
原创 18. 线程通信-阻塞队列
1. 线程通信-阻塞队列1.1 阻塞APIBlockingQueue 接口提供了两个阻塞方法:void put(E e) throws InterruptedException: 像队列中添加元素, 如果队列已满, 则阻塞该线程.E take() throws InterruptedException: 从队列中取出元素, 如果队列为空, 则阻塞该线程.1.2 常见的阻塞队列Blo...
2019-09-01 18:49:14
1131
原创 19. 线程通信-监听异步线程结束
在企业开发中, 采用异步线程可以提升系统性能. 但是在异步线程开发中, 有时主线程需要监听异步线程何时执行结束, 然后再做一些其它操作. java 中有两种方式监听异步线程的结束: CountDownLatch 和 join.1. CountDownLatch 方式1.1 自定义线程类自定义线程类需要添加一个CountDownLatch 计数器, 建议在构造方法赋值务必保证CountD...
2019-09-01 18:49:08
2597
原创 20. 线程通信-虚假唤醒
1. 线程通信的虚假唤醒线程虚假唤醒指的是, 本以为满足了唤醒条件, 然后将阻塞的线程唤醒, 但是在开始执行逻辑时, 却不满足唤醒条件.1.1 Product 类新建两个方法sale()和 purchase(), 需要使用synchronized 关键字修饰使用this.wait()方法阻塞线程, 当使用if包裹wait()方法时, 容易产生虚假唤醒调用notifyAll()通知所有等...
2019-09-01 18:49:03
1163
原创 21. java9 的发布订阅
1. java9 的发布订阅java9 新增了一个发布-订阅框架, 该框架是基于异步响应流的. 之前开发发布订阅通常都会借助于中间件, 如mq, redis 等, java9之后, 对于简单的发布订阅系统, jdk便直接可以满足.1.1 相关APIFlow.Pulisher: 消息的生产者, 发布者Flow.Subscriber: 数据的订消费者, 订阅者Flow.Subscripti...
2019-09-01 18:48:56
1694
1
原创 17. 23种经典设计模式-311-迭代器模式
1. 迭代器模式(Iterator Pattern)Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(提供一种方法访问一个容器对象的各个元素,而又不需要暴露该对象的内部细节)迭代模式是一种濒临废弃的方...
2019-08-27 17:10:45
147
原创 18. 23种经典设计模式-32-模板方法模式
1. 模板方法模式(Tmeplate Method Pattern)Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm with...
2019-08-27 17:10:41
281
mybatis-pagehelper-plus-1.0-RELEASE.jar
2019-06-14
libgoo-canvas.tar.gz
2019-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人