自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 常见的JSON类库简单使用和遇到的问题

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换。选择一个合适的JSON库要从多个方面进行考虑:①字符串解析成JSON性能;②字符串解析成JavaBean性能;③JavaBean构造JSON性能;’④集合构造JSON性能;⑤易用性。常见的JSON类库为:FastJson,Json-lib、Gson、Jackson。

2022-08-21 11:17:01 723 1

转载 redis系列-RedisTemplate获取redis中以某些字符串为前缀的KEY列表

//*号 必须要加,否则无法模糊查询 String prefix = "ofc-pincode-"+ pincode + "-*";// 获取所有的keySet<String> keys = redisTemplate.keys(prefix); // 批量获取数据List<MyObject> myObjectListRedis = redisTemplate.opsForValue().multiGet(keys);List<MyObj.

2022-02-13 19:57:01 2041

原创 Http系列-HttpClient使用详情解

1.HttpClient简介HTTP 协议是 Internet 上使用得最多、最重要的协议之一,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新

2022-01-09 16:40:00 1133

原创 java需求-实体类的属性不需要存入数据库中,应该添加什么注解?

需求:调用修改用户密码接口需要把修改后的用户明文密码推送给其他系统,如果未推送成功,则先存储到redis中,再定时执行任务推送。为了方便使用数据,我们存储到redis中的数据为用户对象,而在数据库中存储的密码为经过md5加密的密码,而我们需要推送用户明文密码。我们在实体类中加入不存入数据库的属性,这个属性的值为密码明文就可以了。这个属性需要加上注解:如果你使用的是hibernate,则用@Transient如果你使用的是mybatis,则用@TableField@TableField(

2022-01-08 15:46:00 4541

原创 java 服务端生成图片验证码及验证

需求是发送短信验证码时,加上一个图片验证码。1.代码实现生成验证码图片的工具类--VerifyUtils.javapackage com.lmc.utils;import java.awt.Color;import java.awt.Font; import java.awt.Graphics2D; import java.awt.LinearGradientPaint; import java.awt.Paint; import java.awt.geom.Affine

2022-01-01 11:52:59 864

原创 HttpServletRequest对象getParameter()方法在各web容器中返回值问题和null不可以toString

Servlet中HttpServletRequest对象的getParameter(“arg”)方法,如果"arg"参数不存在,在各web容器中的返回值不同,经过测试,在tomcat中request.getParameter()方法在参数不存在的情况下,返回null,而在weblogic和websphere下返回值为“空串”,所以建议在判断request.getParameter()返回值时,同时判断null和空串。String name = request.getParameter("name");

2021-12-26 14:40:00 1326 2

原创 java实现发送短信验证码+redis限制发送的次数

java实现短信验证码发送,由于我们使用第三方平台进行验证码的发送,所以首先,我们要在一个平台进行注册。这里我选择的是中国网建。方法也很简单,注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,之后想要在使用就得花钱了。注册成功如下:另外一点,在实际项目中,如果有人恶意攻击,不停的发送短信验证码,会造成很大的损失。故对发送次数做一定的限制非常必要,这里的我们来限制一个手机号一天可以发多少短信和短信平台无关。这里采用的是存redis来实现这一个功能。就是每次调用发送验证码这个接口都会.

2021-12-26 12:18:01 4800

原创 Quartz定时任务-springboot集成与解决Quartz报错:@Autowired空指针Null

1.Quartz简介Quartz是一个功能丰富的开源作业调度库,它由java写成,可以集成在任何java应用程序中,包括javaSE和javaEE等。使用Quartz可以创建简单或复杂的执行计划,它支持数据库、集群、插件和邮件,并且支持cron表达式,具有极高的灵活性。Springboot中集成Quartz和spring中集成Quartz比较类似,主要提供三个Bean:JobDetail、Trigger和SchedulerFactory。2.Springboot的集成<dependenc

2021-12-25 22:35:00 1984

转载 redis系列-redis缓存+定时任务Quartz实现高性能(以点赞模块为例)

最近在做一个用户登录日志,把日志信息先存储到redis中,再使用定时任务,存储到数据库中。在网上找了一些资料,发现和这篇文章原理相似,就复现一下这篇文章,并理清思路,记录下来。1.redis的数据结构Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。下面来对这5种数据结构类型作简单的介绍:1.1点赞数据在 Redis 中的存储格式用Redis 存储两种数..

2021-12-25 21:40:00 1309

原创 WPS Word二级标题自动编号,本来应该是2.1,可是却变成1.3,怎么办?

问题描述如上图所示(图片来源于网络),下面吐血整理,亲测有效。废了好长时间,在网上找各种方法,都未能解决。突然灵感上来,找到未出现这种情况的文档,查看它的标题的样式-编号,发现与出现问题的文档的有些不同,随改之,果然成功。步骤如下:第一步:右击标题1,选择修改样式,选择格式-编号。第二步:选择自定义列表,选择1/1.1/1.1.1,选择确定。第三步:标题2、标题3、标题4同理。在之后,选中相应的问题,点击相应的标题,就解决上面的问题了。...

2021-12-22 21:05:02 21516 6

转载 java流计算之groupingBy

在JDK8中,可以对流进行方便的自定义分组,就像 SQL 语句中的 groupBy 一样,在JDK8中对应的分组函数是 Collectors 类的 groupingBy 方法。这种特性很有用:把数据拆分成不同的组,可以使处理数据更加灵活方便,在某些情况下例如按需处理、分块处理时更高效。例如:有一组人名,需要根据首字母(姓氏)进行分组,则可以通过 groupingBy 分组函数方便地实现。下面是代码例子:@Testpublic void test08() { // 创建一个包含人名称

2021-12-11 10:46:00 4154

转载 java弱密码检测工具类

Java弱密码检测类,能够检测长度、数字、字母、大小写、重复字符、连续字符、键盘横斜连续字符等。配置类:package test03weakpassword;public class PasswordCheckConfig { /** * 是否检测密码口令长度 */ public static String CHECK_PASSWORD_LENGTH = "enable"; /** * 密码最小长度,默认为8 */ pu

2021-12-11 09:16:00 1455

转载 java密码弱口令正则表达式

1.密码弱口令正则表达式需求=新建用户时需验证用户密码,必须包含数字、大小写字母,且至少六位。在登录时,必须校验之前不符合规则的弱口令密码,规则同上;密码弱口令正则表达式为:(?![0-9A-Z]+$)(?![0-9a-z]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,18}$java代码如下:package test00simple;/** * @description: * @Author: lmc * @date: 2021/12/9 21:11

2021-12-09 22:35:00 1804

转载 java中判断list是否为空

1.判断list是否为空如果想判断list是否为空,可以这样判断://方法1if (list != null && !list.isEmpty()) { //list不为空} else { //list为空}//方法2if (list != null && list.size() > 0) { //list不为空} else { //list为空}//方法3if (list == null ||

2021-12-09 22:05:00 46533 3

转载 五大主流浏览器和四大浏览器内核

1.浏览器任何上过网的用户对浏览器是再熟悉不过了,只是用户看到仅仅只是浏览器本身,却很少能看到浏览器最核心的部分—浏览器内核。从第一款libwww(Library WorldWideWeb)浏览器发展至今已经经历了无数竞争与淘汰了。现在国内常见的浏览器有:IE、Firefox、QQ浏览器、Safari、Opera、Google Chrome、百度浏览器、搜狗浏览器、猎豹浏览器、360浏览器、UC浏览器、遨游浏览器、世界之窗浏览器等。但目前最为主流浏览器有五大款,分别是IE、Firefox、Google

2021-12-04 21:54:59 3206

转载 密码学-编码算法:Base64编码原理和使用

1.Base64简介Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可

2021-12-04 20:00:59 2628

转载 java为PDF盖(签)电子签章--关键词定位

java PDF盖章-位置定位,请看这篇文章。本文为关键词盖章,需求就是根据关键词在pdf进行签章,如:pdf尾页盖上xxx机构的电子章。直接上代码:所需要的依赖和位置定位的差不多,请看上文。Itext5PdfSign.javapackage test02itextpdf.keyword;import com.itextpdf.text.Image;import com.itextpdf.text.Rectangle;import com.itextpdf.text.pdf.P..

2021-12-04 12:23:59 4810 3

原创 IDEA设置类注释模板和方法注释模板

1.设置类注释模板File -> Settings -> Editor -> File and Code Templates -> Files选择Class、Interface、Enum等,在右侧区域中,public class 上面,都有一行 #parse("File Header.java")这句代码是引入了File Header.java文件,作为我们创建的Class、Interface、Enum等文件的注释,这个类在Files右侧,有一个Includes选项,

2021-11-28 15:48:00 859

原创 spring boot整合jwt:filter实现jwt进行接口认证

本文为代码实现,关于jwt的原理请看这篇文章。jwt的使用流程:①用户使用账号和面发出post请求;②服务器使用私钥创建一个jwt;③服务器返回这个jwt给浏览器;④浏览器将该jwt串在请求头中像服务器发送请求;⑤服务器验证该jwt;⑥返回响应的资源给浏览器。1.pom.xml <dependency> <groupId>org.springframework.boot</groupId> .

2021-11-28 12:29:55 4379

原创 java使用Stream取出重复的值、去重和统计数量

关于Stream的详解可以看这篇文章。使用Steam取出重复的值、去重的代码示例如下:当list中存入的元素为String时:@Testpublic void test06() { List<String> telephoneList = new ArrayList<>(); telephoneList.add("123456"); telephoneList.add("123456"); telephoneList.add("2354

2021-11-27 15:19:54 18717 2

转载 java8 Stream

1.Stream初体验我们先来看看Java里面是怎么定义Stream的:A sequence of elements supporting sequential and parallel aggregate operations.我们来解读一下上面的那句话:①Stream是元素的集合,这点让Stream看起来用些类似Iterator;②可以支持顺序和并行的对原Stream进行汇聚的操作;大家可以把Stream当成一个高级版本的Iterator。原始版本的Iterator,用户只能一个

2021-11-21 21:18:00 189

转载 java8 lambda表达式

1.lambda初体验维基百科:a function (or a subroutine) defined, and possibly called, without being bound to an identifier。简单点说就是:一个不用被绑定到一个标识符上,并且可能被调用的函数。这个解释还不够通俗,lambda表达式可以这样定义(自己的理解):一段带有输入参数的可执行语句块。这样就比较好理解了吧?一例胜千言。这里先提供一个没用stream的lambda表达式的例子。//这里省略l

2021-11-21 20:13:55 81

转载 java为PDF盖(签)电子签章--位置定位

1.电子签章简介电子签章,与我们所使用的数字证书一样,是用来做为身份验证的一种手段,泛指所有以电子形式存在,依附在电子文件并与其逻辑关联,可用以辨识电子文件签署者身份,保证文件的完整性,并表示签署者同意电子文件所陈述事实的内容。一般来说,对电子签章的认定,都是从技术角度而言的。主要是指通过特定的技术方案来鉴别当事人的身份及确保交易资料内容不被篡改的安全保障措施。从广义上讲,电子签章不仅包括我们通常意义上讲的"非对称性密钥加密",也包括计算机口令、生物笔迹辨别、指纹识别,以及新近出现的眼虹膜透视辨别法、面

2021-11-15 22:12:59 8547 3

原创 X.509证书与java

1. X.509证书简介X.509是密码学里公钥证书的格式标准。X.509证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多Internet协议里。同时它也用在很多非在线应用场景里,比如电子签名服务。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)。对于一份经由可信的证书签发机构签名或者可以通过其它方式验证的证书,证书的拥有者就可以用证书及相应的私钥来创建安全的通信,对文档进行数字签名。-百度百科

2021-11-14 21:36:00 7552

原创 数字证书再理解

1.基础知识1.1.公钥密码体制(public-key cryptography)公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:加密:通过加密算法和公钥对内容(或说明文)进行加密,得到密文。加密过程需要用到公钥。解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。注意,由公钥加密的内容,只能由私钥进行解密,也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。公钥密码体制的公钥和算法都是公开的(...

2021-11-13 22:00:00 3516

转载 数字证书的创建与使用(采用java)

我们知道,摘要算法用来确保数据没有被篡改,非对称加密算法可以对数据进行加解密,签名算法可以确保数据完整性和抗否认性,把这些算法集合到一起,并搞一套完善的标准,这就是数字证书。因此,数字证书就是集合了多种密码学算法,用于实现数据加解密、身份认证、签名等多种功能的一种安全标准。数字证书可以防止中间人攻击,因为它采用链式签名认证,即通过根证书(Root CA)去签名下一级证书,这样层层签名,直到最终的用户证书。而Root CA证书内置于操作系统中,所以,任何经过CA认证的数字证书都可以对其本身进行校验,确

2021-11-13 16:55:00 2273 7

转载 公钥、私钥、数字签名和数字证书

Bob有两把钥匙,一把叫公钥(public key),一把叫私钥(private key)。Bob的公钥可以公开供其他人使用,他只保留自己的私钥。公钥和私钥用来加解密数据,如果使用任意一把来加密数据,那么只有使用另外一把才能解密数据。Susan想给Bob写信,她可以使用Bob的公钥将内容加密以后发送给Bob,Bob收到以后,使用私钥解密以便阅读内容。Bob的的其他同事即使截获了Susan发送给Bob的信件,由于没有Bob的私钥,也无法解密,从而确保数据安全。以上就是使用公钥和私钥加解密...

2021-11-13 11:52:12 5053

转载 JWT(JSON Web Token)详解

1.JWT是什么?JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。

2021-11-09 23:00:00 656

原创 jQuery为input赋值(调用函数)

当我们为input赋值时,有时候的赋值为函数形式。以下示例为为input赋值为guid。这里我们需要注意:①使用原生js和使用jQuery赋值的区别,原生js:document.getElementById('testId').value=guid;②使用jQuery赋值时,当使用input的id时,如何进行赋值:$('#testId').val(guid);③使用jQuery赋值时,当使用input的name时,进行赋值:$('input[name="testName"]').val(gu

2021-11-07 20:30:12 7462

原创 HTML标签中id和name的区别

HTML标签中的<input>元素的输入类型时,我们发现<input>标签除了拥有,type等控制输入字段的属性以外,还有两个不能被直接看出来的属性:“id”和“name”。那么这两个属性有什么不同呢?1.定义name:name属性规定input元素的名称,但它不具有是唯一行,它的值可以重复使用。id:id属性规定HTML元素的唯一的id。或许这两句话很难被区分开来,我们可以通过生活上的列子来形象地类比这个问题。我们每个人都有自己的名字和身份证号。在生活上难免会遇见和

2021-11-07 19:52:34 3554

原创 shiro权限注解和会话管理

1.shiro权限注解注解可以放在controller对应的方法上,也可以放在service层对应的方法上。@RequiresAuthentication:表示当前Subject已经通过login进行了身份验证;即Subject.isAuthenticated()返回true。@RequiresUser:表示当前Subject已经身份验证或者通过记住我登录的。@RequiresGuest:表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。@RequiresRoles(v

2021-10-28 20:52:45 695

原创 shiro认证与授权

1.shiro认证1.1.身份验证身份验证:一般需要提供如身份ID等一些标识信息来表明登录者的身份,如提供email,用户名/密码来证明。在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能验证用户身份。principals:身份,即主体的标识属性,可以是任何属性,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但只有一个Primaryprincipals,一般是用户名/邮箱/手机号。credentials.

2021-10-27 22:30:52 576

转载 密码学-PKI/CA工作原理及架构

相关概念•PKI:Public Key Infrastructure,公钥基础设施。•CA:Certificate Of Authority,认证中心。•数字证书:提供了一种发布公钥的简便途径;一个数字证书包括:拥有者身份信息、公钥、CA数字签名、有效期等其他信息。•数字签名:用来确认信息发送者的身份,保证信息的完整性和抗否认性。数字签名•数字签名的生成:对于要传输的消息原文使用消息摘要算法(MD5、SHA)生成消息摘要,发送方使用自己的私钥对摘要进行加密,生成数字签名。•数

2021-10-27 19:30:05 1303

原创 shiro框架简介以及与spring的整合搭建

1.shiro框架简介1.1.shiro是什么?Apache Shiro是Java的一个安全(权限)框架。 Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存等。1.2.shiro基本功能Authentication:身份认证/登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用

2021-10-26 21:18:51 981

原创 JSP学习笔记(原理、语法、内置对象、标签)

什么是JSP?JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。JSP标签有多种功能,比如访问数据库、记录用户选择信

2021-10-23 16:48:43 209

原创 Ajax请求后端接口(GET、POST、轮询请求)

ajax是什么?post、get、每隔几秒

2021-10-20 21:45:35 25802

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除