java
文章平均质量分 87
Angus博客
知足长乐,助人为乐,自得其乐。
展开
-
Java8 CompletableFuture异步非阻塞做法
创建异步任务异步回调handle组合处理CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。原创 2022-11-29 16:03:18 · 1693 阅读 · 0 评论 -
Optional使用
如果对象不为空,会执行 Consumer 的动作,否则运行 Runnable。我觉得这个例子就能很好的说明这个问题,只是一个很简单判断,如果用了Optional我们还需要考虑包装值,考虑代码书写,考虑方法调用,虽然只有一行,但是可读性并不好,如果别的程序员去读,我觉得肯定没有if看的明显。or() 与orElse等方法相似,如果对象不为空返回对象,如果为空则返回or()方法中预设的值。方法效果类似,如果对象不为空,则返回对象,如果为空,则返回方法体中的对应参数,所以可以看出这三个方法体中参数是不一样的。原创 2022-11-28 16:11:22 · 292 阅读 · 0 评论 -
Nginx ssl双向认证包含移动端和PC端证书生成
1:制作CA私钥,在根目录创建一个cert文件夹然后执行openssl genrsa -out ca.key 20482:制作CA公钥/根证书openssl req -new -x509 -days 3650 -key ca.key -out ca.crtCommon Name 填写root;其它可以填”.”3;制作服务器私钥openssl genrsa -out server.pem 1024openssl rsa -in server.pem -out se...原创 2022-04-04 15:58:21 · 3092 阅读 · 0 评论 -
tomcat https双向认证(包含PC端和移动端操作)
原理:个人理解:双向认证就是客户端和服务器之间互相认证,客户端拿着自己的证书和服务器的公钥证书去服务器认证,服务器拿着自己的证书和客服端公钥认证客户端。服务器私钥解密客户端拿服务器公钥加密的数据。客户端拿自己的私钥解密服务器拿客户端公钥加密的数据。操作 :本地需要有jdk环境和配置1:通过jdktools生成服务器证书创建服务器密钥,其密钥库为 d:/mykeys/server.ks,注意keypass和storepass保持一致,它们分别代表 密钥密码和密钥库密码,注意 CN=lo.原创 2022-03-30 16:39:45 · 6172 阅读 · 0 评论 -
框架CAS实现SSO单点登录功能
1. 概述1.1. 什么是SSO?单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统。管网地址:https://www.apereo.org/projects/cas1.2. 什么是CAS?随着SSO技术的流行,相关产品也比较多,其中CAS就是一套解决方案,CAS(Central Authentication Service)中.原创 2021-08-09 22:21:35 · 953 阅读 · 0 评论 -
Springboot项目javax.validation使用方法详解包含组合bean和list特殊情况无法使用
javax.validation 是基于JSR-303标准开发出来的,使用注解方式实现,及其方便,但是这只是一个接口,没有具体实现。Hibernate-Validator是一个hibernate独立的包,可以直接引用,他实现了javax.validation同时有做了扩展,比较强大。SpringBoot在内部集成了hibernate-validation,可以直接使用。常用注解:代码 说明 @Null 被注解的元素必须为null @NotNull 被注解的元素必须...原创 2020-11-25 11:05:25 · 5609 阅读 · 0 评论 -
Java8新特性二:Functional Interfaces(函数式接口,函数式编程)
1.函数式接口1.1 概念函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。1.2 格式只要确保接口中有且仅有一个抽象方法即可:列子:package com.wsj.java8.functional;/** * @ClassName MyFunction原创 2020-10-25 20:20:41 · 870 阅读 · 0 评论 -
Java8新特性一:Lambda Expressions(Lambda 表达式)
Lambda介绍Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式的结构 一个 Lambda 表达式可以有零个或多个参数 参数的类型既可以明确声明,也可以根据上下文来推断。例如:(int a)与(a)效果相同 所有参数需包含在圆括号内,参数之间用逗号相隔。例如:(a, b) 或 (i原创 2020-10-25 20:19:52 · 439 阅读 · 0 评论 -
那些鲜为人知的序列化和反序列化底层实现原理!
序列化和反序列化作为Java里一个较为基础的知识点,大家心里也有那么几句要说的,但我相信很多小伙伴掌握的也就是那么几句而已,如果再深究问一下Java如何实现序列化和反序列化的,就可能不知所措了!遥记当年也被问了这一个问题,自信满满的说了一大堆,什么是序列化、什么是反序列化、什么场景的时候才会用到等,然后面试官说:那你能说一下序列化和反序列化底层是如何实现的吗?一脸懵逼,然后回家等通知!一、基本概念...转载 2018-07-09 14:16:56 · 824 阅读 · 0 评论 -
Oracle计划放弃Java序列化支持,这是大多数安全漏洞的来源。
原文来自:https://www.bleepingcomputer.com/news/security/oracle-plans-to-drop-java-serialization-support-the-source-of-most-security-bugs/甲骨文 Java 平台组的首席架构师 Mark Reinhold 指出,甲骨文计划取消 Java 语言主体中的数据序列化/反序列化支持...翻译 2018-06-08 16:34:59 · 1259 阅读 · 0 评论 -
Java 异常处理的 9 个最佳实践
在 Java 中,异常处理是个很麻烦的事情。初学者觉得它很难理解,甚至是经验丰富的开发者也要花费很长时间决定异常是要处理掉和抛出。所以很多开发团队约定一些原则处理异常。如果你是一个团队的新成员,你可能会很惊讶,因为他们约定的规则可能和你以前使用的规则不一样。不过,有很多最佳实践的规则,被大部分团队接受。这里有 9 大重要的约定,帮助你学习或者改进异常处理。1、在 Finally 清理资源或者使用 ...转载 2018-02-27 15:09:21 · 243 阅读 · 0 评论