java
文章平均质量分 74
爱思考的王同学
这个作者很懒,什么都没留下…
展开
-
ActiveMQ学习道路之初体验
什么是ActiveMQActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和JavaEE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。主要特点:多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,原创 2021-06-06 20:53:29 · 208 阅读 · 5 评论 -
玩转java8之新的日期和时间API
Java的API提供了很多有用的组件,能帮助你构建复杂的应用。不过,Java API也不总是完美的。相信大多数有经验的程序员都会赞同Java 8之前的库对日期和时间的支持就非常不理想。然而,你也不用太担心:Java 8中引入全新的日期和时间API就是要解决这一问题。1 LocalDate 、 LocalTime 、 Instant 、 Duration 以及 Periodjava.time 包中提供了很多新的类可以帮你解决问题,它们是 LocalDate 、 LocalTime 、 Instant 、原创 2021-05-27 17:05:43 · 659 阅读 · 1 评论 -
网络安全防护-JSON WEB TOKEN讲解与实战
JSON WEB TOKEN1.1 什么是JWTJSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。简称JWT,在HTTP通信过程中,进行身份认证。我们知道HTTP通信是无状态的,因此客户端的请求到了服务端处理完之后是无法返回给原来的客户端。因此需要对访问的客户端进行识别,常用的做法是通过session机制:客户端在服务端登陆成功之后,服务端会生成一个sessionID,返回给客户端,客户端将sessionID保存到cook.原创 2021-05-25 21:09:25 · 317 阅读 · 2 评论 -
数据加密-国密SM3签名验签
1 什么是SM3SM3算法也是一种哈希算法,中国国家密码管理局在2010年发布,其名称是SM3密码杂凑算法,密码管理局有该算法的详细说明,可以到其网站下载。本质上是给数据加一个固定长度的指纹,这个固定长度就是256比特。1.1 处理过程第一步:填充,使填充后的数据的长度是512的整数倍先在数据的最尾巴上加一个1;然后把原始数据的长度用64比特表示,放在最后面;再看看现在的数据的长度值离512的整数还差多少个,差多少个就填多少个0在加的这个1和64比特的长度之间。第二步:分组把填充后的信息按照5原创 2021-05-20 15:27:09 · 9438 阅读 · 1 评论 -
数据加密-国密SM2对数据进行加解密
1 什么是SM2RSA算法的危机在于其存在亚指数算法,对ECC算法而言一般没有亚指数攻击算法。SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥算法所需密钥长度小很多。1.1 ECC算法简述ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法。如果操作时原创 2021-05-18 16:28:50 · 12715 阅读 · 11 评论 -
微服务单元测试 Mock使用与详解
最近在搞微服务的项目,搞完后发现内部需要调用别的服务的接口,可是另一个服务还没有写完我还调不通,哪这就非常尴尬了。这种情况下要怎么测试呢?这时就需要引入Mock的概念。1 什么是Mockmock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为。比如说你需要调用B服务,可是B服务还没有开发完成,那么你就可以将调用B服务的那部分给Mock掉,并编写你想要的返回结果。2 Spring Boot的测试类库现在绝大多数的java服务都是Spring框架搭建的,并且也会使用到原创 2021-05-18 11:02:05 · 768 阅读 · 0 评论 -
Spring data jpa 的使用与详解(二):复杂动态查询及分页,排序
上一篇介绍了spring data jpa在spring boot中的基本搭建和整合,以及较为简单的查询,这一篇来说spring data jpa中如何实现较为复杂的查询及分页,排序。1 使用Specification实现复杂查询1.1 什么是SpecificationSpecification是springDateJpa中的一个接口,他是用于当jpa的一些基本CRUD操作的扩展,可以把他理解成一个spring jpa的复杂查询接口。其次我们需要了解Criteria 查询,这是是一种类型安全和更面向对原创 2021-05-17 16:18:35 · 576 阅读 · 3 评论 -
Spring data jpa 的使用与详解(一):框架整合及基本使用
1 什么是JPAJPA全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。JPA的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JAP为我们提供了ORM映射元数据,JPA的API,JPQL查询语言等,但JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的原创 2021-05-06 11:41:19 · 645 阅读 · 3 评论 -
HashMap的多种遍历方式与源码对比
有一些方法再日常开发中使用次数非常多,但很多时候就敲键盘忘代码,怎么也想不起来,说明还是用的少啊,年轻人。。。。。。。今天来重新看看HashMap的遍历形式,从java8出来之后,HashMap的遍历方式也多了起来,同时写法也变得更加简单。这里来介绍七种遍历形式,可以分为迭代器遍历,For Each遍历,Lambda遍历,Stream API遍历。/** * 通过迭代器 entrySet来实现遍历 * @param map the hashMap */ public void d原创 2021-01-22 17:49:17 · 146 阅读 · 1 评论 -
java中23种设计模式--解释器模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~态度决定一切,实力扞卫尊严!人要经得起诱惑耐得住寂寞!1.解释器模式定义定义:定义语言的文法,并且建立一个解释器来解释该语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子.这样就可以构件一个解释器,该解释器通过解释这些句子来解决该问题.2.解释器模式结构抽象表达式角色:声明一个抽象的.原创 2020-09-01 10:35:18 · 126 阅读 · 0 评论 -
java中23种设计模式--访问者模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~每一个优秀的人,都有一段沉默的时光.那一段时光,是付出了很多努力,忍受孤独和寂寞,不抱怨不诉苦,日后说起时,连自己都能被感动日子。1.装饰者模式定义访问者模式顾名思义使用这个模式后就可以在不修改已有程序结构的前提下通过添加额外的"访问者"来完成对已有代码功能的提升.作用于某个对象结构中的各元素操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操.原创 2020-08-26 16:24:53 · 171 阅读 · 0 评论 -
java中23种设计模式--装饰模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~成长这一路就是懂得闭嘴努力,知道低调谦逊,学会强大自己,在每一个值得珍惜的日子里,拼命去成为自己想成为的人!1.装饰模式定义装饰模式也叫包装器模式,**是动态的给一个对象添加一些额外的职责.**装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.就增加功能来说,Decorator模式比生成子类更为灵活.2.装饰模式结构抽象构件角.原创 2020-08-24 15:40:41 · 235 阅读 · 0 评论 -
java中23种设计模式--亨元模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~生就像一场马拉松,刚出发时,摩肩接踵,那时也许我们无法领先,也不够出众,但只要我们不放弃自己,早晚都能抵达终点,而且你越是努力向前,你越会发现为梦想、向目标前进的路上真的不拥挤。1.亨元模式定义亨元模式定义为:采用一个共享类来避免大量有相同内容的"小类"的开销.这种开销中最常见的就是增加内存的消耗.亨元模式就是以共享的方式高效的支持大量的细粒度对象,减少.原创 2020-08-21 16:43:32 · 206 阅读 · 0 评论 -
java中23种设计模式--状态模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~学习是为了长大后遇到自己喜欢的人的时候吧不自惭形愧。能光鲜亮丽的出现。1.状态模式定义GOF中给状态模式的定义为:允许一个对象在其内部状态改变时改变它的行为.能够让程序根据不同的外部情况来做出不同的响应,最简单的方法就是在程序中使用 if else来讲可能发生的外部情况全部考虑到再通过判断进行选择响应.但是这种方法对于发咋的状态判断就会变得混乱容易产生.原创 2020-08-19 16:20:46 · 155 阅读 · 0 评论 -
java中23种设计模式--备忘录模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~执着的攀登者不必去与别人比较自己的形象是否高大,重要的是要多多思考自己前进的脚步是否扎实。1.备忘录模式定义备忘录模式又称标记模式.GOF给的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态.就像<<大话西游>>中能使时光倒流的"月光宝盒"一样,回到过去.原创 2020-08-14 15:42:23 · 143 阅读 · 0 评论 -
java中23种设计模式--调停者模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~ 今天继续来学习设计模式,正所谓一天一个效果不错!!喝了这碗鸡血,学就完了~~~挥霍今天,把眼前的任务许在未来,时间很快就溜走了。我们辜负了时间,时间也会辜负我们的期待。只有珍惜时间的人,才能得到时间的慷慨,一分一秒都有回馈。1. 调停者模式定义与结构用一个调停对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中.原创 2020-08-12 13:42:27 · 238 阅读 · 0 评论 -
java中23种设计模式--责任链模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~喝了这碗鸡血,学就完了~~~青年同志们必须记住,想要连跑带跳地把过去的一切文化遗产得着,那是办不到的。这需要有坚定的顽强性和艰苦的劳动。要知道,在这条路上克服困难,这件事本身就是非常好的兴奋剂。1.责任链模式定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式的提出是为了“解耦”,以应变系统需求的变更和不明确性。2.责任链.原创 2020-08-11 11:41:53 · 112 阅读 · 0 评论 -
java中23种设计模式--组合模式
兄弟们,老铁们.又到了学习锻炼我们可爱小小大脑的时候了~~~~~喝了这碗鸡血,学就完了~~~你穿什么,用什么,开什么,住什么,什么都不算。你读什么,看什么,想什么,做什么,什么都重要。1.组合模式定义将对象以树形结构组织起来,以达成"部分-整体"的层次结构,使客户端对单个对象和组合对象的使用具有一致性.希望用户忽略组合对象与单个对象的不同,统一的使用组合结构中的对象.树形结构就是组合模式的体现,例如文件夹中可以包含文件和子文件夹,由于使用时,如某个文件夹的方法被调用,由于这会遍历整个树形结构.原创 2020-08-10 14:33:43 · 180 阅读 · 0 评论 -
五大基本算法:分治算法
在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。1 基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后...原创 2020-04-30 10:17:52 · 436 阅读 · 0 评论 -
java多线程-ReentrantLock重入锁的使用及常用API
1 ReentrantLock重入锁和关键字synchronization相比,重入锁有着显示的操作过程。需要手动指定何时加锁,何时释放锁。重入锁对逻辑控制的灵活性要远远优于关键字synchronization。在退出时,必须记得释放锁,否则其他线程就没有机会访问。重入锁之所以叫重入锁,是因为这种锁能反复进入。但是只限于一个线程。//锁定几个就要释放几个try{ lock.lock()...原创 2019-07-29 09:35:42 · 139 阅读 · 0 评论 -
Spring使用注解式声明切面与使用
1 什么是面向切面这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。AOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程...原创 2019-07-25 14:38:37 · 499 阅读 · 0 评论 -
Java 多线程 - Synchronized 和变量并发访问
在非线程安全得情况下,多个线程对同一个对象中得实例变量进行并发访问时,产生得后果就是脏读,也就是取到得数据其实是被更改过得。非线程安全问题存在于"实例变量"中,如果是方法内部得私有变量,则不存在"非线程安全"的问题。1 Synchronized1.1 synchronized方法使用synchronized修饰方法时应注意使用同一个锁对象,否则会导致synchronized失效。publ...原创 2019-07-31 15:15:50 · 409 阅读 · 0 评论 -
java23种设计模式-命令模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的:命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。1 命令模式的结构命令模式是对命令的封装。命令模式把发出命令...原创 2019-07-23 08:45:26 · 73 阅读 · 0 评论 -
java元注解详解及使用与自定义注解
1 元注解1.1 什么是元注解所谓元注解其实就是可以注解到别的注解上的注解,被注解的注解称之为组合注解,组合注解具备其上元注解的功能.1.2 四种元注解在JDK中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:@Target@Retention@Documented@Inherited我们可以使用这4个元注解来...原创 2019-09-17 14:35:15 · 553 阅读 · 0 评论 -
java-23种设计模式-桥梁模式
1 引子下面是吕振宇大牛的一个例子,个人觉得挺好的,有助于理解Bridge模式的设计目的:设想要绘制一幅图画,蓝天、白云、绿树、小鸟,如果画面尺寸很大,那么用蜡笔绘制就会遇到点麻烦。毕竟细细的蜡笔要涂出一片蓝天,是有些麻烦。如果 有可能,最好有套大号蜡笔,粗粗的蜡笔很快能涂抹完成。至于色彩吗,最好每种颜色来支粗的,除了蓝天还有绿地呢。这样,如果一套12种颜色的蜡笔,我们需 要两套24支,同种颜...原创 2019-07-24 09:33:46 · 175 阅读 · 0 评论