自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自定义注解与拦截器实现不规范sql拦截(自定义注解填充插件篇)

在上一篇中,定义了一个自定义注解对需要经过where判断的Mapper sql方法进行修饰。支持在接口名带Mapper的编辑页面中,右键菜单,显示增加注解信息的选项鼠标移动到该选项,支持显示可选的需要新增的注解名称点击增加,对当前Mapper中的所有方法增加对应注解;同时,没有import的文件中需要增加对应的包导入。这次主要是记录了下简单的idea插件开发过程,idea的sdk以编辑页面为基础提供了PSI api来对当前页面与整体项目的展示进行修改,还是挺方便的。

2024-01-21 12:39:08 1173

原创 自定义注解与拦截器实现不规范sql拦截(拦截器实现篇)

使用myBatis拦截器对Mapper的sql进行判断,对增加了自定义注解修饰的方法进行where条件的判断,存在where子句再执行,否则抛出异常。// 标志注解,用来表示mapper方法需要经过where条件存在与否的判断限定method修饰,同时指定runtime,以在运行过程中判断是否被该注解修饰。简单展示了使用Mybatis拦截器进行where子句判断的方式,用完整的类名和方法名去定位自定义注解,比较麻烦的其实是如何显示最原始的异常信息。

2024-01-21 12:24:09 1366

原创 shell脚本自动化执行jar包

记录了自动执行jar的脚本,主要包含前置的判断和现有进程关闭,以及自动执行后台java命令两部分。整体的思路还是比较明确的,不过真写的时候要注意的还挺多,比如pid拿来的时候可能有多个等。自动化脚本还是比较方便,以后可以用来持续部署,挺好的。

2023-09-21 14:13:27 1658

原创 shell练习(grep,sed,awk,距离生日天数的计算,累加求和,文件操作和文本操作)

最近在学习shell脚本编写,把几个练习记录一下。包括grep,sed,awk,距离生日天数的计算,累加求和,文件操作和文本操作。

2023-09-21 11:04:44 293

原创 SpringBatch结合SpringBoot简单使用实现工资发放批处理操作

本文简单记录了下简单的springbatch的使用,包括item相关,process编写,step构建和最终的job使用。springbatch还有一点是可以设置出现异常的处理策略,比如容忍数次异常,调过某些异常等,在真实使用中比较灵活,有机会再补充。

2023-09-01 14:36:12 172

原创 bpmnjs Properties-panel拓展(ExtensionElements拓展篇)

在ExclusiveGateway标签的extensionElements标签中增加子标签子标签,可增加复数子标签。子标签中包含event属性和delegateExpression属性可进行设置,并实现name属性的自动生成。event属性默认设为start。

2023-08-29 10:22:55 2195

原创 bpmnjs Properties-panel拓展(属性设置篇)

最近有思考工作流相关的事情,绘制bpmn图的工具认可度比较高的就是bpmn.js了,是一个基于node.js的流程图绘制框架。初始的框架只实现了基本的可视化,想在xml进行客制化操作的话需要拓展,简单记录下几个需求的实现过程。

2023-08-28 15:28:35 6240

原创 Spring Profile与PropertyPlaceholderConfigurer实现项目多环境配置切换

Profile通过对bean进行修饰,来限定spring在bean管理时的初始化情况,只有环境中激活的profile状态和修饰的value值对应时,该bean才会被顺利加载并管理。

2023-08-11 16:37:23 885

原创 利用lambda优化反射功能实现方法调用

简单写了下lambda代替反射的demo,之前几个项目里面有用到使用代理类来实现项目中的 实现的,这种大量调用的情况如果在初始化过程中使用lambdaFactory,之后之间使用函数对象调用,能快不少,有空改写下试试。

2023-06-14 19:20:26 1104

原创 latex论文排版个人向相关问题记录

主要是个人向的latex排版经验,之前写论文的时候记录了分享下。从零开始自己摸索排版还是蛮麻烦的,好在现在的期刊大多有自己的大模板,后期编辑部也会派人帮忙改格式,还蛮舒服的。

2023-04-28 12:22:20 1844 1

原创 AOP实现注解式脱敏数据明文查询

最近又遇到了脱敏数据查询相关的问题,常规的脱敏数据比如用户身份证将中间位数抹去后加入数据库,那么查询时需要手动调用就比较麻烦,不过可以使用自定义注解,利用AOP解析后在切面将数据加密再作为参数注入运行,实现非入侵的脱敏数据明文查询。简单记录一下。

2022-08-22 20:39:55 1074

原创 利用ImportBeanDefinitionRegistrar和BeanPostProcessor实现Spring对自定义注解bean的管理

最近有需求是将某些类用代理来调用,屏蔽一些通信上的细节。直接写的话需要手动创建代理对象来用,比较麻烦,转成Spring来进行管理。利用自定义注解来规定需要bean容器管理的类,之后在BeanPostProcessor中进行增强处理即可。把这部分抽离出来写了个demo记录下。...

2022-07-21 11:22:59 620

原创 自定义注解实现参数验证和异常处理

最近把参数验证修改为自定义注解验证的需求,并设置全局的异常处理来捕捉参数验证未通过的情况。将基本的代码记录一下。简单设置一下情景:登录情景,登录的用户使用手机号和密码输入进行登录,验证手机号是否符合要求。引入验证validation依赖。参数信息将输入的手机号和密码整理成一个bean形式,方便使用注解使用了lombok来减少代码。为validation包实现的注解,为自定义注解,用来验证手机号码形式正确性。实现自定义注解类,将作用域设置为参数和成员。中存放是否必要的布尔值,中存放错误提示信息,在后

2022-06-29 12:50:09 822

原创 消息队列实现验证码请求

最近考虑验证码服务和请求的分离,用消息队列实现异步处理。简单记录一个demo实现,本来是准备用短信验证码接口的,不过找了一圈好像没有免费的就换成邮箱了,真是令人感叹。基于springboot实现。为了方便,实现的时候在一个项目下搭建了两个模块,这样能共用一些类和配置。同时每个模块都有各自的启动类。消息队列用了RabbitMq。请求模块 rabbitMqServer实现功能:验证码页面请求即时返回前端请求提示,并将发送验证码的消息传递给消息队列页面接受验证码输入,redis中查询,完成校验发送模块 r

2022-06-08 13:54:07 550

原创 MyBatis拦截器实现sql查询权限动态修改

动机和具体情景最近考虑怎么在Mybatis自动创建sql执行过程中进行介入,来不对原有代码耦合的情况下,实现对sql的修改。考虑情景,比如多部门管理系统,员工工资和账户信息敏感,每个部门只能查到对应权限的员工信息。为了实现sql的鉴权,本来是需要将原始的sql语句加上某个权限字段的判断。为了不耦合,现在的方案是在需要鉴权的Mybatis Mapper方法上增加一个注解,在运行过程中判断该注解存在即对sql进行修改,形成新的带权限字段判断的sql,这样对原始代码的修改就少很多(加个注解就行)。基本原理

2022-05-25 19:52:50 3746

原创 基于登录中心的跨域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 1113

原创 SpringBoot实现文件分片断点续传功能(前端篇)

记录一下文件分片上传断点续传功能的前端实现,后端部分可以看看这篇文章:Springboot实现文件分片断点续传功能(后端篇)项目代码已上传至GitHub https://github.com/huiluczP/segment_upload整体思路所有请求都使用ajax。文件控件选择后,计算文件唯一码,调用接口查询文件是否存在。文件存在则判断分片是否上传完成,已完成显示秒传信息。点击上传按钮后,再查询一次文件是否存在,来获取文件分片信息。文件不存在,那么起始分片为1;文件存在,那么获取起始分片为已

2022-03-27 22:25:35 2136

原创 SpringBoot实现文件分片断点续传功能(后端篇)

SpringBoot实现文件分片断点续传功能(后端篇)最近想实现一下分片上传的功能,文件分片上传就能实现断点续传了,数据库记录也能保证秒传功能的实现。记录一下宝宝demo。前端部分可以看看这篇文章:Springboot实现文件分片断点续传功能(前端篇)项目代码已上传至GitHub。 https://github.com/huiluczP/segment_upload整体思路首先利用数据库存储文件信息,包括文件物理地址,分片接收进程和对应的md5码。利用md5码可以判断当前上传文件是否在服务器中存

2022-03-27 22:19:10 6976 2

原创 pytorch保存训练模型参数并实现继续训练

最近的想法是在推荐模型中考虑根据用户对推荐结果的后续选择,利用已训练的offline预训练模型参数来更新新的结果。简单记录一下中途保存参数和后续使用不同数据训练的方法。简单模型和训练数据先准备一个简单模型,简单两层linear出个分类结果。class MyModel(nn.Module): def __init__(self): super().__init__() self.linear = nn.Linear(64, 32) self.lin

2022-03-22 16:08:17 10751

原创 bert-as-service简单使用

BERT训练语料集合生成预训练词向量模型,能用在下游任务中。和Word2vec比,个人觉得它最大的好处在于词缺失的时候,能词条化和短词的词向量匹配,这样能避免丢掉太多语义,比如promax不存在,BERT就会返回pro###和###max,这样也能有效获取语义。BERT12层的transformer,自己训练一次开销巨大,为了快速使用BERT生成词向量而不去直接训练,利用bert-as-service封装库来实现预训练结果的读取。预训练结果BERT谷歌官方在github中给出了几个不同类型的已训练好的

2021-11-24 15:00:25 1676 8

原创 利用scheduler实现learning-rate学习率动态变化

记录一下schedule设置学习率变化过程的使用和方法优化器optimizerpytorch提供数种优化器的实现,优化器根据计算图的结构,进行梯度计算,根据loss信息实现自动的BP过程。常用的就是Adam,将网络参数传入,设置初始的learning-rate学习率即可:optimizer = torch.optim.Adam(model.parameters(), lr=args.learn_rate)在训练中:optimizer.zero_grad()loss.backward()opt

2021-11-23 17:31:10 3085

原创 torch.scatter与torch_scatter库使用整理

最近在做图结构相关的算法,scatter能把邻接矩阵里的信息修改,或者把邻居分组算个sum或者reduce,挺方便的,简单整理一下。torch.scatter 与 tensor._scatterPytorch自带的函数,用来将作为src的tensor根据index的描述填充到input中,形式如下:ouput = torch.scatter(input, dim, index, src)# 或者是input.scatter_(dim, index, src)两个方法的功能是相同的,而带下划线的

2021-11-23 13:57:37 6851 2

原创 分布式环境下的莎士比亚数据集处理

项目要求对莎士比亚语料库处理,输出统计数据:语料库中唯一(或不同)术语的数量语料库中以字母T / t开头的单词数出现少于5次的术语数量整体读取的文件数最常出现的5个术语及其词频实现思路统计唯一词汇数量利用mapper将分词结果转换为以单词为key的键值组合,之后会对每个相同key的组合执行一次reduce。在reducer中调用counter并增加值即可计算词汇数量。统计以字母T/t开头的单词数在mapper中每分出一个词,小写化后进行判断,t开头的情况下调用一次count

2021-07-12 10:29:48 989

原创 基于MapReduce实现的Kmeans算法(非调库)

简单基于MapReduce实现了下KMeans。算法思路KMeans算法作为一种划分式的聚类算法,利用MapReduce进行实现的主要难点在于满足KMeans每次迭代划分过程的中间结果保存。因此利用HDFS进行中心点的存储,以实现各节点间的数据共享。基于MapReduce的KMeans算法流程如下:随机分配簇,初始化中心点,存入HDFS。Mapper中读取数据文件中的每条数据并与中心点进行距离计算,输出key为最近的中心点序号。Reducer中进行归并,计算新的中心点,存入新的中心文件。判

2021-07-11 23:27:00 4444 9

原创 基于mapreduce的DBSCAN算法实现

东拼西凑拿mapreduce实现了下DBSCAN,很多地方其实并没有很并行,密度聚类确实不太适合用MR来实现,写都写了整理一下。算法流程基于hadoop的MapReduce api实现的分布式DBSCAN算法。该算法实现流程分为七步:Similarity相似度计算部分,寻找满足阈值的点对组合。FindCore寻找核心点,找到满足最小邻域要求的核心点及其邻域信息。CoreList生成核心点列表。OnlyCore转换领域信息,将其变为只有核心点的组合。FirstCoreMerge按序排列,实现

2021-07-11 19:13:40 1244 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 317

原创 Python实现DFA确定型有穷自动机和NFA非确定型有穷自动机相关算法

整理一下上学期写的代码,关于自动机的相关算法实现。实现基于有穷自动机的形式化表示,可视化没什么思路就没写。代码已上传至github https://github.com/huiluczP/finiteAutomata直接想用的话test.py脚本中有示例,导入文件直接用就行。实现功能NFA相关:利用五元组,创建NFA模型输入字符串,判定是否被该NFA模型接受DFA相关:利用五元组,创建DFA模型输入字符串,判断是否被该DFA模型接受NFA转DFADFA最小化RL与DFA转换

2021-03-03 20:41:42 3266 8

原创 SpringBoot前后端分离实现拼图滑动验证码(前端)

接上文SpringBoot前后端分离实现拼图滑动验证码(后端)最终效果主要结构没做可插拔处理,直接在html里写标签了。主要包括包含了背景和拼图的模块slide_img_content,包含滑动条的模块slider。其中slider_mark用来做滑动条的进度显示,开始宽度为0随着箭头移动改变。 <div class="slide_img_content"> <img id="before_img" class="slide_img_mark" src="/

2020-08-20 13:50:33 3686 1

原创 SpringBoot前后端分离实现拼图滑动验证码(后端)

最近有需求要实现拼图滑动验证码,找了点资料做了个demo看看。思路简单来说就是后端随机获取图片,随即切割后把处理完的两张图片,拼图和背景存放到对应文件夹,之后将文件地址(名称)和拼图位置信息返回到前端,实现拖动重合效果即可。传递数据格式由bean类进行数据存放,包括拼图左上角的x,y坐标位置,拼图和背景文件名称。public class VerificationCodePlace { private String backName; private String markName;

2020-08-15 17:16:00 4016 4

原创 Origin 3dbar 绘图简单技巧

使用origin绘制三维柱状图时用到的小技巧,记录下。非等距坐标等距显示画图中可能会有特别需求,比如x轴中取值并不是等距取值,但为了显示数据变化趋势需要进行等距显示。为了实现这种效果,需要将原坐标改成等距数组,比如1,2,3,...,之后增加一组数据作为label来显示。示例:原数据表示效果较差,间距趋势不明显。将数据修改,增加label列之后选中图中的坐标轴,右键设置properties。将ticket label设置为dataset,并选中之前添加的label,scale也选择dat

2020-08-14 16:39:20 2003

原创 Python实现 jpg图像修改大小并转换为png

简单利用pillow库实现的大小与格式转换的脚本。实现import osimport PIL.Image as Imagedef changeJpgToPng(w, h, path): # 修改图像大小 image = Image.open(path) image = image.resize((w, h), Image.ANTIALIAS) # 将jpg转换为png png_name = str(path)[0:-len('.jpg')] + '_mi

2020-08-07 15:40:17 1488

原创 利用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 4811

原创 利用Stanford parser与多线程获取语句中名词集合工具实现

  最近有处理一批语句获取名词集合的需求,写了个小工具。Stanford Parser导入  利用maven引入Stanford Parser的包,没有特殊需求的话直接使用里面训练完的各国语言文件即可,很方便。 <dependency> <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-corenlp</artifactId

2020-06-06 16:38:45 239

原创 SpringBoot+Mybatis实现图片按用户上传存储和获取用户图片功能

简单实现了下图片上传与个人图片显示的流程,给一个不知道怎么实现的兄弟看下。项目介绍  该项目实现文件上传功能,在前端上传图片和用户名,将图片保存在本地,同时将路径存储至数据库。之后可利用用户名进行对应存储图片路径获取和显示。实体类和mapper  利用mybatis实现实体存储和获取  Img实体类public class Img implements Serializable{ private static final long serialVersionUID = 899079

2020-05-24 15:09:48 3516 3

原创 chrome插件实现简单网页实时翻译

  昨天网上冲浪看了下chrome开发文档,写个翻译小插件练手,平时看外文文档查点生词还是挺方便的。简单介绍和实现效果  该插件实现主要思路很简单,将content.js注入脚本进入浏览页面,利用window.getSelection()方法获取当前页面被鼠标选取的文字,之后利用chrome的api chrome.extension.sendRequest将之前获取的字符传给background,之后background中ajax调用翻译接口获取翻译结果后,利用chrome.storage.loca

2020-05-12 23:59:27 3906

原创 JS异步 promise简单了解

最近有ajax之类异步编程需求,整理下promise的使用。背景介绍  Js是单线程语言,为了避免耗时任务阻塞代码,对耗时长的任务采用异步模式调用。前一个任务执行完,调用回调函数而不是进行后一个任务。后一个任务不等前一个任务结束就执行,任务调用的顺序和排列顺序不同。实现异步和后续处理最原始的方法就是使用回调函数,在耗时任务结束时调用后续操作。示例:function f(callbac...

2020-05-07 00:15:41 230

原创 SpingBoot+Spring Security+Mybatis整合登录功能

最近考虑项目权限控制问题,正好来学习下Spring Security,写个demo。Spring Security通过Filter Chain过滤器链来实现访问权限的控制,简单需求下设置起来还是挺方便的。数据库结构数据库存放用户信息,权限和权限表,总共三张。Role_userRole_typeRole_user_role利用Role_user_role中间表实现用户和权限类型间...

2020-05-03 15:28:53 803 1

原创 轻量化模板Handlebars表达式和代码助手

最近在熟悉Handlebars,使用时代码助手还是挺方便的,稍微写了几个示例熟悉下语法。表达式语法  Handlebars能解析模板字符串,同时利用解析完的模板函数配合输入对象进行转义输出  下面用这个鱼价对象做个示例var data = { title: "鱼价表", fish:[{ name: '蝌蚪', price: '...

2020-04-29 21:04:28 584

原创 JS+CSS实现小游戏Flappy bird

最近在复习JS,写着练练手项目结构整个项目分成六个部分Util 工具类Param 配置类Pipe 管道类Bird 鸟类Score 分数类Main 主程序显示效果游戏效果大概是这样,碰撞坐标的判定感觉还有点问题,有空再调:模块介绍下面简单介绍下各模块(1)Util工具类工具类模仿JQuery封装一个$方法来用id获取页面元素,看起来比较内行// 仿JQuery$函...

2020-04-27 15:03:54 314

空空如也

空空如也

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

TA关注的人

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