java
文章平均质量分 88
回炉重造P
自己觉得摇滚那就是摇滚
展开
-
自定义注解与拦截器实现不规范sql拦截(自定义注解填充插件篇)
在上一篇中,定义了一个自定义注解对需要经过where判断的Mapper sql方法进行修饰。支持在接口名带Mapper的编辑页面中,右键菜单,显示增加注解信息的选项鼠标移动到该选项,支持显示可选的需要新增的注解名称点击增加,对当前Mapper中的所有方法增加对应注解;同时,没有import的文件中需要增加对应的包导入。这次主要是记录了下简单的idea插件开发过程,idea的sdk以编辑页面为基础提供了PSI api来对当前页面与整体项目的展示进行修改,还是挺方便的。原创 2024-01-21 12:39:08 · 1176 阅读 · 0 评论 -
自定义注解与拦截器实现不规范sql拦截(拦截器实现篇)
使用myBatis拦截器对Mapper的sql进行判断,对增加了自定义注解修饰的方法进行where条件的判断,存在where子句再执行,否则抛出异常。// 标志注解,用来表示mapper方法需要经过where条件存在与否的判断限定method修饰,同时指定runtime,以在运行过程中判断是否被该注解修饰。简单展示了使用Mybatis拦截器进行where子句判断的方式,用完整的类名和方法名去定位自定义注解,比较麻烦的其实是如何显示最原始的异常信息。原创 2024-01-21 12:24:09 · 1372 阅读 · 0 评论 -
SpringBatch结合SpringBoot简单使用实现工资发放批处理操作
本文简单记录了下简单的springbatch的使用,包括item相关,process编写,step构建和最终的job使用。springbatch还有一点是可以设置出现异常的处理策略,比如容忍数次异常,调过某些异常等,在真实使用中比较灵活,有机会再补充。原创 2023-09-01 14:36:12 · 174 阅读 · 0 评论 -
Spring Profile与PropertyPlaceholderConfigurer实现项目多环境配置切换
Profile通过对bean进行修饰,来限定spring在bean管理时的初始化情况,只有环境中激活的profile状态和修饰的value值对应时,该bean才会被顺利加载并管理。原创 2023-08-11 16:37:23 · 888 阅读 · 0 评论 -
利用lambda优化反射功能实现方法调用
简单写了下lambda代替反射的demo,之前几个项目里面有用到使用代理类来实现项目中的 实现的,这种大量调用的情况如果在初始化过程中使用lambdaFactory,之后之间使用函数对象调用,能快不少,有空改写下试试。原创 2023-06-14 19:20:26 · 1123 阅读 · 0 评论 -
AOP实现注解式脱敏数据明文查询
最近又遇到了脱敏数据查询相关的问题,常规的脱敏数据比如用户身份证将中间位数抹去后加入数据库,那么查询时需要手动调用就比较麻烦,不过可以使用自定义注解,利用AOP解析后在切面将数据加密再作为参数注入运行,实现非入侵的脱敏数据明文查询。简单记录一下。原创 2022-08-22 20:39:55 · 1080 阅读 · 0 评论 -
利用ImportBeanDefinitionRegistrar和BeanPostProcessor实现Spring对自定义注解bean的管理
最近有需求是将某些类用代理来调用,屏蔽一些通信上的细节。直接写的话需要手动创建代理对象来用,比较麻烦,转成Spring来进行管理。利用自定义注解来规定需要bean容器管理的类,之后在BeanPostProcessor中进行增强处理即可。把这部分抽离出来写了个demo记录下。...原创 2022-07-21 11:22:59 · 630 阅读 · 0 评论 -
自定义注解实现参数验证和异常处理
最近把参数验证修改为自定义注解验证的需求,并设置全局的异常处理来捕捉参数验证未通过的情况。将基本的代码记录一下。简单设置一下情景:登录情景,登录的用户使用手机号和密码输入进行登录,验证手机号是否符合要求。引入验证validation依赖。参数信息将输入的手机号和密码整理成一个bean形式,方便使用注解使用了lombok来减少代码。为validation包实现的注解,为自定义注解,用来验证手机号码形式正确性。实现自定义注解类,将作用域设置为参数和成员。中存放是否必要的布尔值,中存放错误提示信息,在后原创 2022-06-29 12:50:09 · 828 阅读 · 0 评论 -
消息队列实现验证码请求
最近考虑验证码服务和请求的分离,用消息队列实现异步处理。简单记录一个demo实现,本来是准备用短信验证码接口的,不过找了一圈好像没有免费的就换成邮箱了,真是令人感叹。基于springboot实现。为了方便,实现的时候在一个项目下搭建了两个模块,这样能共用一些类和配置。同时每个模块都有各自的启动类。消息队列用了RabbitMq。请求模块 rabbitMqServer实现功能:验证码页面请求即时返回前端请求提示,并将发送验证码的消息传递给消息队列页面接受验证码输入,redis中查询,完成校验发送模块 r原创 2022-06-08 13:54:07 · 554 阅读 · 0 评论 -
MyBatis拦截器实现sql查询权限动态修改
动机和具体情景最近考虑怎么在Mybatis自动创建sql执行过程中进行介入,来不对原有代码耦合的情况下,实现对sql的修改。考虑情景,比如多部门管理系统,员工工资和账户信息敏感,每个部门只能查到对应权限的员工信息。为了实现sql的鉴权,本来是需要将原始的sql语句加上某个权限字段的判断。为了不耦合,现在的方案是在需要鉴权的Mybatis Mapper方法上增加一个注解,在运行过程中判断该注解存在即对sql进行修改,形成新的带权限字段判断的sql,这样对原始代码的修改就少很多(加个注解就行)。基本原理原创 2022-05-25 19:52:50 · 3758 阅读 · 0 评论 -
基于登录中心的跨域SSO实现
最近在思考单点登录的需求。SSO单点登录能实现多项目间共用登录信息,控制用户的角色信息。有统一的登录门户就不用每个项目维护登录功能了,比较方便。记录一下Springboot实现的宝宝demo,代码分为中心和client两部分,已上传至github。https://github.com/huiluczP/sso_registerhttps://github.com/huiluczP/sso_client跨域单点登录原理总的来说分为两个部分的实现,SSO登陆中心和client项目的登录信息获取。利用原创 2022-05-08 19:50:08 · 1117 阅读 · 0 评论 -
SpringBoot实现文件分片断点续传功能(前端篇)
记录一下文件分片上传断点续传功能的前端实现,后端部分可以看看这篇文章:Springboot实现文件分片断点续传功能(后端篇)项目代码已上传至GitHub https://github.com/huiluczP/segment_upload整体思路所有请求都使用ajax。文件控件选择后,计算文件唯一码,调用接口查询文件是否存在。文件存在则判断分片是否上传完成,已完成显示秒传信息。点击上传按钮后,再查询一次文件是否存在,来获取文件分片信息。文件不存在,那么起始分片为1;文件存在,那么获取起始分片为已原创 2022-03-27 22:25:35 · 2139 阅读 · 0 评论 -
SpringBoot实现文件分片断点续传功能(后端篇)
SpringBoot实现文件分片断点续传功能(后端篇)最近想实现一下分片上传的功能,文件分片上传就能实现断点续传了,数据库记录也能保证秒传功能的实现。记录一下宝宝demo。前端部分可以看看这篇文章:Springboot实现文件分片断点续传功能(前端篇)项目代码已上传至GitHub。 https://github.com/huiluczP/segment_upload整体思路首先利用数据库存储文件信息,包括文件物理地址,分片接收进程和对应的md5码。利用md5码可以判断当前上传文件是否在服务器中存原创 2022-03-27 22:19:10 · 6987 阅读 · 2 评论 -
分布式环境下的莎士比亚数据集处理
项目要求对莎士比亚语料库处理,输出统计数据:语料库中唯一(或不同)术语的数量语料库中以字母T / t开头的单词数出现少于5次的术语数量整体读取的文件数最常出现的5个术语及其词频实现思路统计唯一词汇数量利用mapper将分词结果转换为以单词为key的键值组合,之后会对每个相同key的组合执行一次reduce。在reducer中调用counter并增加值即可计算词汇数量。统计以字母T/t开头的单词数在mapper中每分出一个词,小写化后进行判断,t开头的情况下调用一次count原创 2021-07-12 10:29:48 · 993 阅读 · 0 评论 -
基于MapReduce实现的Kmeans算法(非调库)
简单基于MapReduce实现了下KMeans。算法思路KMeans算法作为一种划分式的聚类算法,利用MapReduce进行实现的主要难点在于满足KMeans每次迭代划分过程的中间结果保存。因此利用HDFS进行中心点的存储,以实现各节点间的数据共享。基于MapReduce的KMeans算法流程如下:随机分配簇,初始化中心点,存入HDFS。Mapper中读取数据文件中的每条数据并与中心点进行距离计算,输出key为最近的中心点序号。Reducer中进行归并,计算新的中心点,存入新的中心文件。判原创 2021-07-11 23:27:00 · 4466 阅读 · 9 评论 -
基于mapreduce的DBSCAN算法实现
东拼西凑拿mapreduce实现了下DBSCAN,很多地方其实并没有很并行,密度聚类确实不太适合用MR来实现,写都写了整理一下。算法流程基于hadoop的MapReduce api实现的分布式DBSCAN算法。该算法实现流程分为七步:Similarity相似度计算部分,寻找满足阈值的点对组合。FindCore寻找核心点,找到满足最小邻域要求的核心点及其邻域信息。CoreList生成核心点列表。OnlyCore转换领域信息,将其变为只有核心点的组合。FirstCoreMerge按序排列,实现原创 2021-07-11 19:13:40 · 1254 阅读 · 2 评论 -
基于JWT实现的token认证尝试
前段时间考虑微信不能保存session的问题,尝试写了下利用token认证。JWT有现成库还是挺方便的,整理个demo出来。项目简介后端用的Spring boot,因为有现成的数据库直接用mybatis来读用户信息。思路主要流程可如下表示:登录并请求token:client登录,向server请求tokenserver验证登录信息,生成JWT token和refresh token。client接受token,存入localstorage请求验证:client将token放入请求头原创 2021-03-07 16:36:32 · 318 阅读 · 0 评论 -
SpringBoot前后端分离实现拼图滑动验证码(后端)
最近有需求要实现拼图滑动验证码,找了点资料做了个demo看看。思路简单来说就是后端随机获取图片,随即切割后把处理完的两张图片,拼图和背景存放到对应文件夹,之后将文件地址(名称)和拼图位置信息返回到前端,实现拖动重合效果即可。传递数据格式由bean类进行数据存放,包括拼图左上角的x,y坐标位置,拼图和背景文件名称。public class VerificationCodePlace { private String backName; private String markName;原创 2020-08-15 17:16:00 · 4039 阅读 · 4 评论 -
利用github release实现客户端程序的版本控制和自动更新
最近思考了下客户端的自动更新问题,写了个demo。 主要思路是客户端通过api获取最新版本并下载文件,之后调用脚本替换文件,关闭客户端,再重启,实现自动更新的效果。github release 为了实现客户端更新,那么就需要有服务端存放最新的文件和版本信息,github release提供了存放文件以及其对应版本的功能,并且可以提供对应的api来获取下载链接和版本信息。 Github release的api url格式为https://api.github.com/repos///rele原创 2020-06-15 14:10:00 · 4855 阅读 · 0 评论 -
利用Stanford parser与多线程获取语句中名词集合工具实现
最近有处理一批语句获取名词集合的需求,写了个小工具。Stanford Parser导入 利用maven引入Stanford Parser的包,没有特殊需求的话直接使用里面训练完的各国语言文件即可,很方便。 <dependency> <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-corenlp</artifactId原创 2020-06-06 16:38:45 · 244 阅读 · 0 评论