摘要: 需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。 方法:在mapper中指定keyProperty属性,示例如下: 参考文章: http://chenzhou123520.iteye.com/blog/1849881 阅读全文
posted @ 2019-11-22 16:06 枫飘雪落 阅读(320) 评论(0) 推荐(0) 编辑
摘要: springboot下用cache注解整合redis并使用json序列化反序列化。 cache注解整合redis 最近发现spring的注解用起来真的是很方便。随即产生了能不能吧spring注解使用redis实现的方式。 只需要在配置文件中(application.propertoes)添加如下一个 阅读全文
posted @ 2019-11-21 15:29 枫飘雪落 阅读(3962) 评论(0) 推荐(1) 编辑
摘要: CountDownLatch解析 CountDownLatch是什么 CountDownLatch是基于AQS的阻塞工具,阻塞一个或者多个线程,直到所有的线程都执行完成。 CountDownLatch解决了什么问题 当一个任务运算量比较大的时候,需要拆分为各种子任务,必须要所有子任务完成后才能汇总为 阅读全文
posted @ 2019-05-31 13:44 枫飘雪落 阅读(1248) 评论(0) 推荐(0) 编辑
摘要: 并发之AQS原理(二) CLH队列与Node解析 1.CLH队列与Node节点 就像通常医院看病排队一样,医生一次能看的病人数量有限,那么超出医生看病速度之外的病人就要排队。 一条队列是队列中每一个人的组织形式。那么每个人决定怎么看待自己在队列中的形态决定了整个队列的形态。比如当每个人都遵守先来后到 阅读全文
posted @ 2019-05-31 08:33 枫飘雪落 阅读(5219) 评论(2) 推荐(2) 编辑
摘要: 并发之AQS原理(三) 如何保证并发 1. 如何保证并发 AbstractQueuedSynchronizer 维护了一个 state (代表了共享资源)和一个FIFO线程等待队列(多线程竞争资源被阻塞时会将线程放入此队列)。 由于state是由volatie修饰的所以该变量的改动都是立等可见的。 阅读全文
posted @ 2018-10-15 15:47 枫飘雪落 阅读(1423) 评论(0) 推荐(1) 编辑
摘要: 并发之AQS原理(一) 如果说每一个同步的工具各有各的强大,那么这个强大背后是一个相同的动力,它就是AQS. AQS是什么 AQS是指java.util.concurrent.locks包里的AbstractQueuedSynchronizer类,抽象的FIFO队列式的同步器,AQS定义了一套多线程 阅读全文
posted @ 2018-10-11 14:33 枫飘雪落 阅读(1607) 评论(0) 推荐(0) 编辑
摘要: 只需要将接口文件的日志设置为debug即可。 例如你的mapper接口所在的文件夹是 com.demo.mapper 那么在application.properties配置文件中添加 阅读全文
posted @ 2018-09-13 14:12 枫飘雪落 阅读(1042) 评论(0) 推荐(0) 编辑
摘要: ```java Map map = request.getParameterMap(); Set> keys = map.entrySet(); Iterator> i = keys.iterator(); System.out.printf("+__+"); while (i.hasNext()){ Map.Entry it = i.next(); System.out.pr... 阅读全文
posted @ 2018-08-01 18:22 枫飘雪落 阅读(4378) 评论(0) 推荐(0) 编辑
摘要: 关于java中Stream理解 Stream是什么 Stream:Java 8新增的接口,Stream可以认为是一个高级版本的Iterator。它代表着数据流,流中的数据元素的数量可以是有限的, 也可以是无限的。 Stream跟Iterator的差别是 无存储 :流是基于数据源的对象,它本身不存储数 阅读全文
posted @ 2018-06-22 18:21 枫飘雪落 阅读(1403) 评论(1) 推荐(0) 编辑
摘要: java中的双冒号操作符 定义 双冒号运算操作符是类方法的句柄,lambda表达式的一种简写,这种简写的学名叫eta conversion或者叫η conversion。 通常的情况下: 把 x System.out.println(x) 简化为 System.out::println 的过程称之为 阅读全文
posted @ 2018-06-21 15:19 枫飘雪落 阅读(25620) 评论(0) 推荐(2) 编辑
摘要: 在学校,学生的主要任务是学习,学习是一个把知识装进自己脑袋的过程,主要得靠自己,协作没有那么重要。 但是到了工作环境下,就不只是应用脑袋里的知识那么简单了。事实上,在社会上干成任何一件事,都牵涉到广泛的协作。 从军工六性角度来理解协作升级 稳定性 变量:自己 定义:能让协作伙伴知道你的能力范围和行动 阅读全文
posted @ 2018-06-19 09:40 枫飘雪落 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 并发之线程封闭与ThreadLocal解析 什么是线程封闭 实现一个好的并发并非易事,最好的并发代码就是尽量避免并发。而避免并发的最好办法就是线程封闭,那什么是线程封闭呢? 线程封闭(thread confinement) 当前线程的变量不与其他线程共享,只在自己的线程中使用。 线程封闭的实现 1. 阅读全文
posted @ 2018-06-11 16:40 枫飘雪落 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 并发之不可变对象 什么是不可变对象 不可变对象 :一个对象的状态在对象被创建之后就不再变化。不可变对象对于缓存是非常好的选择,因为你不需要担心它的值会被更改。 必须满足三个条件才可以称之为不可变对象 1. 对象创建完成后其状态不可修改。(数据私有并且没有对状态的修改方法) 2. 对象的所有域都是fi 阅读全文
posted @ 2018-05-25 14:07 枫飘雪落 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 原文链接 https://medium.com/p/506a06ae35ea 原文推荐 @developerWorks 开发者 为啥总是后来的让你感觉更好更强更完美? 每当你为你的项目新雇佣了一个开发者,TA总是能让你感觉到无所不能。 TA才接手这个项目三天的时间,却已经对工程提出了5个库的升级建议 阅读全文
posted @ 2018-05-23 10:39 枫飘雪落 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 并发之atomic与CAS自旋锁 通过前几章的讲解我们知道i++这种类似操作是不安全的。针对这种情况,我们可能会想到利用synchronize关键字实现线程同步,保证++操作的原子性,的确这是一种有效的方法,但我们还有一种选择 AtomicInteger。 AtomicInteger解析 源码 成员 阅读全文
posted @ 2018-05-22 18:01 枫飘雪落 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 并发之synchronized关键字的应用 synchronized关键字理论基础 前两章我们学习了下java内存模型的相关知识, 现在我们来讲讲逢并发必出现的synchronized关键字。 作用 synchronized是Java中的关键字,是一种同步锁。依赖JVM实现。 JMM对synchro 阅读全文
posted @ 2018-05-18 14:45 枫飘雪落 阅读(478) 评论(0) 推荐(0) 编辑
摘要: volatile关键字 volatile关键字是什么 在上一章我们讲到了并发的的三个概念,那么今天在讲解下在java中可以保证可见性和有序性的一个关键字。 volatile关键字 :当变量的值被该关键字修饰后该值任何读写操作对于其他线程是立即可见的。并且被关键字修饰后的变量被禁止重排序。 volat 阅读全文
posted @ 2018-05-18 14:24 枫飘雪落 阅读(847) 评论(0) 推荐(0) 编辑
摘要: 死磕并发之可见性、有序性、原子性 原子性 原子性(Atomicity):一个操作是不可中断的,要么全部执行成功要么全部执行失败。 在典型的转账场景中,入账和出账操作要么同时成功,要么同时失败。其操作过程是一个整体不可分割,这种操作就是原子性的操作。 通过上面的伪代码来解释下什么是原子性操作。首先ja 阅读全文
posted @ 2018-05-17 13:56 枫飘雪落 阅读(1149) 评论(0) 推荐(0) 编辑
摘要: Java内存模型JMM java内存模型定义 上一遍文章我们讲到了CPU缓存一致性以及内存屏障问题。那么Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口。Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了 阅读全文
posted @ 2018-05-08 17:35 枫飘雪落 阅读(3087) 评论(0) 推荐(2) 编辑
摘要: CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂 阅读全文
posted @ 2018-05-03 16:27 枫飘雪落 阅读(56496) 评论(24) 推荐(28) 编辑
摘要: 线程安全的日期处理 依赖 用法 String Date Date String 阅读全文
posted @ 2018-04-24 17:47 枫飘雪落 阅读(540) 评论(0) 推荐(0) 编辑
摘要: lambda是什么 “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义 阅读全文
posted @ 2018-04-20 14:39 枫飘雪落 阅读(1934) 评论(0) 推荐(0) 编辑
摘要: 1.Base64编码算法 Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。 Base64编码是从二进制到字符的过程,可用于在HTTP环境 阅读全文
posted @ 2018-04-19 16:38 枫飘雪落 阅读(796) 评论(0) 推荐(0) 编辑
摘要: 1. 清理屏幕 SYSTEM CLEAR 2.查看建表语句 show create table 表名\G 3.存储过程语句 查看 show create procedure 存储过程名称\G 调用 CALL 存储过程名(变量,返回值); 4.定义一个变量 SET @变量名 = 值; 5. 查看变量 阅读全文
posted @ 2018-04-12 11:30 枫飘雪落 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 1.强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 2.软引用(SoftRefer 阅读全文
posted @ 2018-03-30 13:31 枫飘雪落 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 1.final final修饰符 所标记的成分具有终态的特征,表示最终的意思。 final修饰类,类不能被继承。该类将不具有子类。 final修饰方法,方法不能被重写,在某些特殊情况下jvm会将该类方法直接内联以便于减少函数调用开销,新版本的Jdk并不会以此为优化方式,所以只有当明确该方法不能被子类 阅读全文
posted @ 2018-03-30 13:17 枫飘雪落 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 1.IOC是什么 IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器 阅读全文
posted @ 2018-03-22 15:19 枫飘雪落 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 使用Java类库POI生成简易的Excel报表 1.需求 1.数据库生成报表需要转义其中字段的信息。比如 1,有效 2.无效等 2.日期格式的自数据需要转义其格式。 3.标题的格式和数据的格式需要分别设置 4.可能出现的实体类嵌套实体类的情况 5.需要在行尾添加统计数据 2.具体实现 首先创建一个用 阅读全文
posted @ 2018-03-16 15:16 枫飘雪落 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 1.集合简介 数学定义:一般地,我们把研究对象统称为元素。把一些元素组成的总体叫做集合。 java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。 java中通用集合类存放于java.util包中。 2.集合的实现 实现集合(Collection)的数据类型有三种: 1.集(se 阅读全文
posted @ 2018-03-01 10:44 枫飘雪落 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 1.概述 java不在需要开发人员显示的分配内存和回收内存,而是由JVM自动管理内存的分配和回收(又称为垃圾回收 GC),这简化了编程难度,但同时可能使得程序员在不知不觉中浪费了很多内存,导致JVM花费很多时间进行垃圾回收。另外还有可能由于不清楚JVM的内存分配和回收机制造成内存泄露。最终导致JVM 阅读全文
posted @ 2018-02-13 15:11 枫飘雪落 阅读(713) 评论(0) 推荐(1) 编辑
摘要: 钩子方法是啥 钩子顾名思义就是用来挂东西的。那么要挂东西必须有个被挂的东西,要不就是铁环、要不就是墙的边沿。所以要能挂住东西必须要有个被勾住的铁环,要一个钩子。那么在java中也是同样的原理,你首先需要一个被挂在的东西,一个挂载的东西。 钩子的实现方法 是对于抽象方法或者接口中定义的方法的一个空实现 阅读全文
posted @ 2018-02-13 11:08 枫飘雪落 阅读(24900) 评论(4) 推荐(4) 编辑
摘要: 设计模式总结 1.设计模式学习 23种设计模式学习下来感觉非常非常的难。更何况是在很短的时间内集中学习设计模式。想要通过这么短的时间学习完成设计模式是不可能的。在学习过程中很多例子都是依葫芦画瓢,其理解的深度并不是很深入。我任务学习设计模式并不是一朝一夕的事情。单学习过程中给我的启发确实很大 。用组 阅读全文
posted @ 2018-02-12 18:22 枫飘雪落 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 1.命令模式是什么 1.百度百科 命令模式(Command Pattern)是一种设计模式,它尝试以物件来代表实际行动。 2.维基百科 In object oriented programming, the command pattern is a behavioral design pattern 阅读全文
posted @ 2018-02-12 10:18 枫飘雪落 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 1.享元模式是什么 1.百度百科 享元模式(Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结 阅读全文
posted @ 2018-02-12 10:17 枫飘雪落 阅读(284) 评论(0) 推荐(0) 编辑
摘要: (25)禁止使用属性隐式转换 解读:SELECT uid FROM t_user WHERE phone=13812345678 会导致全表扫描,而不能命中phone索引,猜猜为什么?(这个线上问题不止出现过一次) 阅读全文
posted @ 2018-02-12 10:16 枫飘雪落 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 1.解释器模式是什么 1.百度百科 解释器模式(InterpreterPattern)定义一些语法规则,然后定义一个解析器去解析该语法 2.维基百科 In computer programming, the interpreter pattern is a design pattern that s 阅读全文
posted @ 2018-02-12 10:02 枫飘雪落 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.状态模式是什么 1.百度百科 状态模式(State Patten)允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类 2.维基百科 The state pattern is a behavioral software design pattern that implement 阅读全文
posted @ 2018-02-09 17:32 枫飘雪落 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1.原型模式是什么 1.百度百科 原型模式(Prototype Patten);用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 2.维基百科 The prototype pattern is a creational design pattern in software devel 阅读全文
posted @ 2018-02-09 11:21 枫飘雪落 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 1.访问者模式是什么 1.百度百科 访问者模式(Visitor Pattern)表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 2.维基百科 In object oriented programming and software engine 阅读全文
posted @ 2018-02-08 16:09 枫飘雪落 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1.职责链模式是什么 1.百度百科 职责链模式(Chain of responsibility pattern) 很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可 阅读全文
posted @ 2018-02-07 15:44 枫飘雪落 阅读(236) 评论(0) 推荐(0) 编辑