- 博客(50)
- 资源 (3)
- 收藏
- 关注
原创 自定义注解实现复杂情况的幂等校验(接口防重提交)
通过自定义注解,实现各种复杂情况下的接口幂等性控制,防止重复提交导致产生垃圾数据,可通过自定义规则,觉得本次请求是否启用校验,也可通过自定义规则,生成幂等校验的key
2023-10-20 12:45:01 451 1
原创 从零开始分布式锁之Redis实现
万字长文深入浅出介绍分布式锁,从零到一基于Redis手写分布式可重入锁,再到Redisson分布式可重入锁的使用,包含了分布式读写锁、信号量、计数器的使用案例。
2022-09-26 15:46:01 689 1
原创 使用RSA加密传输账号密码信息
非对称加密,将用户输入的账号密码进行加密后传输到后端,后端通过私钥解密后得到原始数据,进行后续的逻辑处理。的加解密,密钥文件,我们可以直接使用,也可以将密钥字符复制到php文件中,这里不直接使用密钥文件。在登录界面,用户输入账号密码信息,点击登录,当参数校验通过,我们就可以对参数进行加密后,提交表单,这里使用。在开发中,通常会偷懒将用户的登录信息(账号密码)直接以明文的方式发送到后端,但我们的项目不是所有都用了。
2022-09-26 15:39:48 1948
原创 MyBatis使用<foreach>标签报错
背景在使用mybatis过程中,<foreach>标签算是比较常用的,最近在项目中遇到这样一个问题,使用<foreach>标签循环拼接SQL语句时,报了一个错误:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘__frch_name_0’ in ‘class com.stand.modules.address.
2021-01-21 17:32:46 3159 2
原创 API接口使用Jackson序列化JSON数据动态过滤字段
API接口使用Jackson序列化JSON数据动态过滤字段背景编写API接口过程中,不可避免的会遇到一个问题,对于不同的接口,需要的字段不一样,但大多数情况下,使用的Service层方法是相同的,也就是说,获取到的数据字段是一样的,但是往往不需要返回所有的字段。解决方案常用的解决思路有两种,一种是针对每个接口定义VO类,在数据返回时,将Service层查到的数据复制到VO类后再返回,这样的话就可以返回需要的字段,但这样也有缺点,不同的接口,需要定义专属的VO类,这样会使类的数量增多,后期如果需要添加
2021-01-05 14:19:23 3429 13
原创 LeetCode-求解下一个更大元素
求解下一个更大元素题目描述给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x的下一个更大元素是指x在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释:对于num1中的数字4,你无法在第二个数组中找到下一个更
2020-08-08 01:06:51 378
原创 浏览器不兼容引发的跨域惨案
前言:在公司个项目开发中,遇到了一个问题,解决这个问题的过程很艰难,记录下来,不知是否有和我一样遇到这个问题的朋友。首先说一下开发环境以及项目情况吧,开发工具主要为IDEA和HBuilder X,后端项目基于SpringBoot搭建,是一个前后端没有分离的项目,现在有个需求,需要在项目中添加接口,供钉钉端H5微应用调用,开发过程基本都没有遇到太多的问题,从第一个问题说起吧。在后端接口写得差不...
2020-04-23 22:58:38 680
原创 Springboot整合Shiro分离资源打包运行出现 java.lang.ClassNotFoundException
在开发过程中,Springboot整合了Shiro安全框架,并且采用shiro-redis来进行session的缓存操作<dependency> <groupId>org.crazycake</groupId> <artifactId>shiro-redis</artifactId> <version&...
2019-12-25 18:08:32 1451
原创 Springboot报错Required request body is missing
在开发过程中,发现只要是使用了@Requestbody注解的方法(使用的Post方式提交),本地测试没问题,别的服务器测试也没问题,在线上服务器测试就报了错Required request body is missing,并且get方式请求的接口也都正常,百思不得其解,终于经过不断推断与猜测,问题已解决,但具体原因还未知。原因是线上服务器使用Nginx做了转发,将/api请求统一转发至127....
2019-12-25 15:32:33 5711 1
原创 内网穿透-把自己的电脑部署为公网可访问的服务器
前言我们都知道,服务器的价格很贵,即使是租用的,最低配置每月也需要不少钱,对于在校大学生,阿里云和腾讯云都有优惠活动,很划算,做测试基本够用,但是对于非在校生来说,服务器都是很花钱的,不管是哪家的服务器。有时候,我们想把自己电脑上的网站或其他项目暴露到公网,让别人通过域名或者ip可以访问自己电脑上的东西,特别是对于开发联调来说,极其便利,又可能是想把自己的项目展示给别人看看而已,下面我将推荐一...
2019-07-02 20:44:29 15464
原创 密码学1 - 概念与术语
一、背景与相关人物在研究密码学中,通常会涉及到三个人物,Alice、Bob和Eve,其中Alice和Bob相互发送消息,而Eve则企图获取Alice和Bob之间的交谈内容。Alice和Bob面临的问题是,Eve不仅很聪明,而且很有毅力,一旦他们使用某种加密方法后,Eve要破解(break)这种加密法只是时间的问题。也就是说,Eve可以不用秘钥来还原明文,或者说从密文还原秘钥,于是Alice和B...
2019-06-30 21:29:30 880
原创 Viewer.js结合vue异步更新数据显示失效(错乱)
前言:viewer.js是一款小巧而强大的图片(相册)查看插件,支持对图片的很多操作,如放大、缩小、旋转等等,这里简要说一下如何使用,以及配合vue.js异步更新数据时产生的问题及其解决办法。一、viewer.js的简单使用:(1)首先需要在页面中引入viewer的js和css(2)对图片集的父标签添加id元素,如下代码<div class="col-md-12" id...
2019-03-16 10:03:40 3708 7
原创 在JavaScript中使用Thymeleaf框架的语法获取后台数据
一、在springboot项目中,我们常结合thymeleaf模板来开发项目,在HTML标签中输出的语法不做过多介绍,网上一堆一堆的,那么怎么在js中获取到后台通过Model传递过来的数据呢,语法很简单,如以下代码:/*questionInfo是通过后台传递过来的*/var answerList = [[${questionInfo.answers}]]这样我们就能在js中获取到后台传...
2019-03-09 23:56:47 6320 7
原创 IDEA自定义方法注释模板
一、在设置中找到下图的位置二、添加模板内容* * @auther $user$ * @date $date$ $time$ * @descript $params$ * @return $return$ */三、添加自动生成的参数四、重写param参数生成方式groovyScript("def result=''; ...
2019-03-01 15:43:40 1402
原创 SpringBoot项目中逆向工程生成代码Generator插件
一、开发工具:IDEA二、pom配置文件中添加:<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0<...
2019-02-24 17:23:47 1904
原创 【Linux之旅-11】Linux(Centos6.8)安装Tomcat
一、下载Tomcat的Linux版本并启动服务1.1进入Tomcat官网,进行下载:https://tomcat.apache.org/download-80.cgi 这里我下载tar.gz (pgp, sha512)1.2将压缩包上传至Linux系统的/opt目录,进行解压,解压命令:tar -zxvf apache-tomcat-8.5.34.tar.gz1.3进入解压后的...
2018-10-21 15:09:28 355
原创 【Linux之旅-10】Linux(Centos6.8)安装Java环境(JDK)
一、下载JDK1.1进入oracle官网,选择需要的jdk版本,进入详情页https://www.oracle.com/technetwork/java/javase/downloads/index.html1.2根据需求进行下载,这里我下载的是jdk-8u191-linux-x64.tar.gz二、安装步骤2.1将下载的压缩包上传到Linux系统的/opt目录2....
2018-10-21 14:24:11 520
原创 Chrome谷歌浏览器Json插件
前言:开发中,我们会经常用到json格式的数据,但是一般在浏览器输出后会很难看,毫无格式可言,特别是有的数据还是被编码过的,根本看不了,下面就给大家推荐两款好用的json格式化插件。1.JSON-handle(推荐)这是我非常喜欢的一款插件,我们使用这个插件的目的就是把json数据美化,提高可阅读性,这款插件的配色等非常精美,复制数据也是很方便的,看看效果图: 我们还可以进入选项中...
2018-10-08 22:25:29 34519 9
原创 【Linux之旅-9】Linux常用指令(命令)
一、常用帮助指令1.1man [option]查看某个指令的用法、参数等,如查看ls指令的用法和意义man ls 1.2help [option] 获得shell内置命令的帮助信息,如查看cd指令的帮助信息help cd 二、文件目录类指令2.1pwd [OPTION]...查看当前所在工作目录的绝对路径2.2 ls [OPTION]... ...
2018-10-07 16:15:39 536
原创 【Linux之旅-8】Linux运行级别和找回root密码
一、Linux运行级别在Linux系统中,我们可以打开/etc/inittab文件查看,Linux共有七个运行级别(有一个级别4为保留级别)下面是文件内容;# inittab is only used by upstart for the default runlevel.## ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT O...
2018-10-06 20:47:55 476
原创 【Linux之旅-7】Linux用户和组的配置文件
一、用户(user)的配置文件1.1配置文件位置/etc/passwd1.2作用记录用户的各种信息。1.3文件每行的含义用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell 二、口令(密码)配置文件2.1配置文件位置/etc/shadow2.2作用记录各种密码。2.3文件每行的含义登录名:加密口令:最后一次修改时间:最小时间...
2018-10-06 18:32:00 301
原创 【Linux之旅-6】Linux用户组
一、增加组groupadd groupname二、删除组 groupdel groupname 三、修改用户的用户组 usermod -g groupname username
2018-10-06 18:16:25 240
原创 【Linux之旅-5】Linux用户管理
一、Linux用户的说明Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份登录系统。Linux的用户需要至少属于一个组。二、添加用户 2.1 基本语法useradd username 用户创建成功后自动创建和用户名同名的家目录;useradd -d path username ...
2018-10-06 18:00:05 545
原创 【Linux之旅-4】Linux关机重启和远程登录注销
一、关机与重启相关命令的使用关机与重启相关命令 命令 功能 shutdown -h now 立即关机 shutdown -h 1 1分钟后关机 shutdown -r now 立即重启系统 halt 立即关机,和shutdown -h now效果一样 reboot 立即重启,和shutdown -r now效果一样 sync ...
2018-10-06 17:12:41 792
原创 【Linux之旅-3】vi和vim编辑器
一、vi和vim介绍所有的Linux系统都会內建vi文本编辑器。vim具有程序编辑能力,可看作是vi的增强版,可以主动的以字体颜色辨别代码语法的正确性,方便程序设计,代码补充、编译及错误跳转等方便编程的功能丰富。二、vi和vim的三种常见模式2.1正常模式在正常模式下,可以使用快捷键。以vim打开一个文档就进入了一般模式,在这个模式中可以使用【上下左右】按键来移动光标,可以使用【删...
2018-10-06 16:51:56 456
原创 【Linux之旅-2】文件系统目录结构
一、在linux世界中,一切皆文件Linux目录结构 目录 实例 说明 /bin /usr/bin /usr/local/bin 是Binary的缩写,这个目录存放着经常使用的命令。 /sbin /usr/sbin /usr/local/sbin s代表Super的意思,这里存放着系统管理员使用的系统...
2018-10-06 15:20:34 308
原创 【Linux之旅-1】VMware虚拟机中的Centos和windows共享文件夹
一、打开虚拟机,进入安装好的centos系统,点击VM顶部导航栏中的“虚拟机”按钮,进入子菜单选择“安装VMware Tools”,如下图(我的已安装过,因此显示的是重新安装)二、在centos系统中可以看到一个打开的文件夹,我们复制下图中的标记的文件三、将文件VMwareTools-10.0.5-3228253.tar.gz复制到/opt目录下四、在此目录下打开终端,输入...
2018-10-06 14:27:09 2231
原创 Git常用命令
1.设置项目级别/仓库级别的用户信息 git init 初始化本地仓库 git config user.name [用户名] git config user.email [邮箱地址] 信息保存在 ./.git/config文件中2.设置系统用户级别用户信息 git config --global user.name [用户名] git confi...
2018-10-03 15:03:03 184
原创 阿里云服务器ESC配置https
话不多说,经过很长一段时间的配置,终于调通了,基本步骤就不说了,先到阿里云控制台申请一个免费的ssl证书下载下来,然后配置分三步走,如下:一、创建cert文件夹,将下载的证书文件拷贝到该文件夹下二、配置httpd.conf文件路径:C:\phpStudy\PHPTutorial\Apache\conf\httpd.conf(前提是默认的PHPstudy安装路径),然后将下面两行代码的注释去掉即可:...
2018-07-16 00:33:59 1804
原创 微信小程序地图使用用户头像标记
一、在开发微信小程序地图的过程中,有这样一个需求,用户发表祝福语,然后存入数据库,可以在地图上显示用户头像并且点击用户头像时显示祝福语。二、自己在开发时遇到的问题:1.微信头像是网络图片,而地图的markers中的iconPath只能使用本地图片2.将网络图片缓存到本地,但是因为小程序的异步执行导致图片不能显示三、解决办法:1.解决微信头像是网络图片的问题,可以使用wx.downloadFile(...
2018-07-13 00:19:30 6443 8
原创 下载神器IDM
下载利器(IDM)Internet Download Manager v6.30.8 中文特别版Internet Download Manager(简称“IDM”)是一种将下载速度提高5倍的工具,可以恢复和安排下载。由于连接丢失,网络问题,计算机关机或意外停电等原因,全面的错误恢复和恢复功能将重新启动中断或中断的下载。简单的图形用户界面使IDM用户友好和易于使用.Internet下载管理器具有智能...
2018-05-05 01:19:31 1422
原创 thinkphp5使用容联发送短信验证码
thinkphp5开发的时候需要用到短信验证码,在官网下载下来demo后,不放入thinkphp框架中能正常运行,但是放入框架中出现了很多错误,直接贴上配置好的代码吧,特别注意的是,demo代码中有new stdClass();但是框架报错not found,经过调试,找到的解决办法是将new stdClass();改为new \stdClass();就可以了,只是在stdClass前面加了一个反...
2018-04-03 21:47:50 1223
原创 mybatis配置文件属性及其顺序
mybatis的配置文件标签是有顺序要求的,下面是配置文件的顺序及其简要说明:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd...
2018-03-31 13:44:33 1324 1
原创 mybatis-config.xml配置文件
最近在学习mybatis,记录一下mybatis-config.xml文件的几种配置方式。1.直接写死在mybatis-config.xml文件中:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://m...
2018-03-31 13:19:23 899 1
原创 Vue下拉选择选中原来的数据
在编辑信息的时候,进入编辑页面所有数据应该都是数据库中的,有的数据是通过下拉框选择的,那这时候怎么选择数据库中的那个数呢,使用Vue.js编写代码的时候,可以使用v-model进行表单输入绑定。示例代码如下:<select class="select" name="peopleNum" id="peopleNum" size="1" v-model="peopleNum">
2018-03-16 20:18:45 4041
原创 layer弹出图片
layer弹出层非常之好用,用户体验非常好,有这样一个需求,当点击指定文字或是缩略图后,使用layer弹出原图片,并且弹出层的宽和高根据图片大小自动变化。下面是实现这一功能的代码。function showImg(url){ var img = "<img src='" + url + "' />"; layer.open({ type: 1, ...
2018-03-16 14:52:09 11641 4
原创 微信小程序页面跳转
微信小程序开发的时候会经常用到页面跳转,常见的跳转方式包括以下两种:1.可以返回上一页面的跳转(跳转后之前的页面还在栈中,未关闭)wx.navigateTo({ url: '../index/index?id=1'})2.不可返回上一页面的跳转(跳转后上一页面已出栈,页面被关闭)wx.redirectTo({ url: '../index/index?id=1'})上面两种跳转方式都只...
2018-03-07 14:51:55 336
原创 Bmob删除单条数据
使用Bmob开发过程中,会遇到很多疑惑,官方文档给的都是代码片段,常常会不知道一些东西怎么获取的,说说怎么根据objectId删除一条数据吧,批量删除官方文档给的挺详细的。知道数据的objectId,删除这条数据,首先通过objectId获取到这个对象,再删除这个对象,即可删除数据。var Account = Bmob.Object.extend("account");var account =...
2018-03-07 13:02:53 1334 2
viewer图片查看插件
2019-03-15
Json-handle和jsonview插件
2018-10-08
ILSpy4.0反编译工具
2018-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人