<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[回炉重造P的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_41733192</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41733192]]></copyright><item><title><![CDATA[自定义注解与拦截器实现不规范sql拦截（自定义注解填充插件篇）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/135727885</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/135727885</guid><author>qq_41733192</author><pubDate>Sun, 21 Jan 2024 12:39:08 +0800</pubDate><description><![CDATA[在上一篇中，定义了一个自定义注解对需要经过where判断的Mapper sql方法进行修饰。支持在接口名带Mapper的编辑页面中，右键菜单，显示增加注解信息的选项鼠标移动到该选项，支持显示可选的需要新增的注解名称点击增加，对当前Mapper中的所有方法增加对应注解；同时，没有import的文件中需要增加对应的包导入。这次主要是记录了下简单的idea插件开发过程，idea的sdk以编辑页面为基础提供了PSI api来对当前页面与整体项目的展示进行修改，还是挺方便的。]]></description><category></category></item><item><title><![CDATA[自定义注解与拦截器实现不规范sql拦截（拦截器实现篇）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/135727749</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/135727749</guid><author>qq_41733192</author><pubDate>Sun, 21 Jan 2024 12:24:09 +0800</pubDate><description><![CDATA[使用myBatis拦截器对Mapper的sql进行判断，对增加了自定义注解修饰的方法进行where条件的判断，存在where子句再执行，否则抛出异常。// 标志注解，用来表示mapper方法需要经过where条件存在与否的判断限定method修饰，同时指定runtime，以在运行过程中判断是否被该注解修饰。简单展示了使用Mybatis拦截器进行where子句判断的方式，用完整的类名和方法名去定位自定义注解，比较麻烦的其实是如何显示最原始的异常信息。]]></description><category></category></item><item><title><![CDATA[shell脚本自动化执行jar包]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/133133105</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/133133105</guid><author>qq_41733192</author><pubDate>Thu, 21 Sep 2023 14:13:27 +0800</pubDate><description><![CDATA[记录了自动执行jar的脚本，主要包含前置的判断和现有进程关闭，以及自动执行后台java命令两部分。整体的思路还是比较明确的，不过真写的时候要注意的还挺多，比如pid拿来的时候可能有多个等。自动化脚本还是比较方便，以后可以用来持续部署，挺好的。]]></description><category></category></item><item><title><![CDATA[shell练习（grep，sed，awk，距离生日天数的计算，累加求和，文件操作和文本操作）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/133128009</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/133128009</guid><author>qq_41733192</author><pubDate>Thu, 21 Sep 2023 11:04:44 +0800</pubDate><description><![CDATA[最近在学习shell脚本编写，把几个练习记录一下。包括grep，sed，awk，距离生日天数的计算，累加求和，文件操作和文本操作。]]></description><category></category></item><item><title><![CDATA[SpringBatch结合SpringBoot简单使用实现工资发放批处理操作]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/132622740</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/132622740</guid><author>qq_41733192</author><pubDate>Fri, 01 Sep 2023 14:36:12 +0800</pubDate><description><![CDATA[本文简单记录了下简单的springbatch的使用，包括item相关，process编写，step构建和最终的job使用。springbatch还有一点是可以设置出现异常的处理策略，比如容忍数次异常，调过某些异常等，在真实使用中比较灵活，有机会再补充。]]></description><category></category></item><item><title><![CDATA[bpmnjs Properties-panel拓展（ExtensionElements拓展篇）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/132555735</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/132555735</guid><author>qq_41733192</author><pubDate>Tue, 29 Aug 2023 10:22:55 +0800</pubDate><description><![CDATA[在ExclusiveGateway标签的extensionElements标签中增加子标签子标签，可增加复数子标签。子标签中包含event属性和delegateExpression属性可进行设置，并实现name属性的自动生成。event属性默认设为start。]]></description><category></category></item><item><title><![CDATA[bpmnjs Properties-panel拓展（属性设置篇）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/132539449</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/132539449</guid><author>qq_41733192</author><pubDate>Mon, 28 Aug 2023 15:28:35 +0800</pubDate><description><![CDATA[最近有思考工作流相关的事情，绘制bpmn图的工具认可度比较高的就是bpmn.js了，是一个基于node.js的流程图绘制框架。初始的框架只实现了基本的可视化，想在xml进行客制化操作的话需要拓展，简单记录下几个需求的实现过程。]]></description><category></category></item><item><title><![CDATA[Spring Profile与PropertyPlaceholderConfigurer实现项目多环境配置切换]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/132234930</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/132234930</guid><author>qq_41733192</author><pubDate>Fri, 11 Aug 2023 16:37:23 +0800</pubDate><description><![CDATA[Profile通过对bean进行修饰，来限定spring在bean管理时的初始化情况，只有环境中激活的profile状态和修饰的value值对应时，该bean才会被顺利加载并管理。]]></description><category></category></item><item><title><![CDATA[利用lambda优化反射功能实现方法调用]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/131214116</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/131214116</guid><author>qq_41733192</author><pubDate>Wed, 14 Jun 2023 19:20:26 +0800</pubDate><description><![CDATA[简单写了下lambda代替反射的demo，之前几个项目里面有用到使用代理类来实现项目中的 实现的，这种大量调用的情况如果在初始化过程中使用lambdaFactory，之后之间使用函数对象调用，能快不少，有空改写下试试。]]></description><category></category></item><item><title><![CDATA[latex论文排版个人向相关问题记录]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/130423807</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/130423807</guid><author>qq_41733192</author><pubDate>Fri, 28 Apr 2023 12:22:20 +0800</pubDate><description><![CDATA[主要是个人向的latex排版经验，之前写论文的时候记录了分享下。从零开始自己摸索排版还是蛮麻烦的，好在现在的期刊大多有自己的大模板，后期编辑部也会派人帮忙改格式，还蛮舒服的。]]></description><category></category></item><item><title><![CDATA[AOP实现注解式脱敏数据明文查询]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/126473321</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/126473321</guid><author>qq_41733192</author><pubDate>Mon, 22 Aug 2022 20:39:55 +0800</pubDate><description><![CDATA[最近又遇到了脱敏数据查询相关的问题，常规的脱敏数据比如用户身份证将中间位数抹去后加入数据库，那么查询时需要手动调用就比较麻烦，不过可以使用自定义注解，利用AOP解析后在切面将数据加密再作为参数注入运行，实现非入侵的脱敏数据明文查询。简单记录一下。]]></description><category></category></item><item><title><![CDATA[利用ImportBeanDefinitionRegistrar和BeanPostProcessor实现Spring对自定义注解bean的管理]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/125908548</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/125908548</guid><author>qq_41733192</author><pubDate>Thu, 21 Jul 2022 11:22:59 +0800</pubDate><description><![CDATA[最近有需求是将某些类用代理来调用，屏蔽一些通信上的细节。直接写的话需要手动创建代理对象来用，比较麻烦，转成Spring来进行管理。利用自定义注解来规定需要bean容器管理的类，之后在BeanPostProcessor中进行增强处理即可。把这部分抽离出来写了个demo记录下。...]]></description><category></category></item><item><title><![CDATA[自定义注解实现参数验证和异常处理]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/125519547</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/125519547</guid><author>qq_41733192</author><pubDate>Wed, 29 Jun 2022 12:50:09 +0800</pubDate><description><![CDATA[最近把参数验证修改为自定义注解验证的需求，并设置全局的异常处理来捕捉参数验证未通过的情况。将基本的代码记录一下。简单设置一下情景：
登录情景，登录的用户使用手机号和密码输入进行登录，验证手机号是否符合要求。引入验证validation依赖。
参数信息
将输入的手机号和密码整理成一个bean形式，方便使用注解
使用了lombok来减少代码。为validation包实现的注解，为自定义注解，用来验证手机号码形式正确性。实现自定义注解类，将作用域设置为参数和成员。
中存放是否必要的布尔值，中存放错误提示信息，在后]]></description><category></category></item><item><title><![CDATA[消息队列实现验证码请求]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/125182620</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/125182620</guid><author>qq_41733192</author><pubDate>Wed, 08 Jun 2022 13:54:07 +0800</pubDate><description><![CDATA[最近考虑验证码服务和请求的分离，用消息队列实现异步处理。简单记录一个demo实现，本来是准备用短信验证码接口的，不过找了一圈好像没有免费的就换成邮箱了，真是令人感叹。基于springboot实现。为了方便，实现的时候在一个项目下搭建了两个模块，这样能共用一些类和配置。同时每个模块都有各自的启动类。消息队列用了RabbitMq。请求模块 rabbitMqServer
实现功能：
验证码页面请求
即时返回前端请求提示，并将发送验证码的消息传递给消息队列
页面接受验证码输入，redis中查询，完成校验发送模块 r]]></description><category></category></item><item><title><![CDATA[MyBatis拦截器实现sql查询权限动态修改]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/124972406</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/124972406</guid><author>qq_41733192</author><pubDate>Wed, 25 May 2022 19:52:50 +0800</pubDate><description><![CDATA[动机和具体情景
最近考虑怎么在Mybatis自动创建sql执行过程中进行介入，来不对原有代码耦合的情况下，实现对sql的修改。
考虑情景，比如多部门管理系统，员工工资和账户信息敏感，每个部门只能查到对应权限的员工信息。为了实现sql的鉴权，本来是需要将原始的sql语句加上某个权限字段的判断。
为了不耦合，现在的方案是在需要鉴权的Mybatis Mapper方法上增加一个注解，在运行过程中判断该注解存在即对sql进行修改，形成新的带权限字段判断的sql，这样对原始代码的修改就少很多（加个注解就行）。
基本原理]]></description><category></category></item><item><title><![CDATA[基于登录中心的跨域SSO实现]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/124652716</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/124652716</guid><author>qq_41733192</author><pubDate>Sun, 08 May 2022 19:50:08 +0800</pubDate><description><![CDATA[最近在思考单点登录的需求。SSO单点登录能实现多项目间共用登录信息，控制用户的角色信息。有统一的登录门户就不用每个项目维护登录功能了，比较方便。
记录一下Springboot实现的宝宝demo，代码分为中心和client两部分，已上传至github。
https://github.com/huiluczP/sso_register
https://github.com/huiluczP/sso_client
跨域单点登录原理
总的来说分为两个部分的实现，SSO登陆中心和client项目的登录信息获取。
利用]]></description><category></category></item><item><title><![CDATA[SpringBoot实现文件分片断点续传功能（前端篇）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/123783292</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/123783292</guid><author>qq_41733192</author><pubDate>Sun, 27 Mar 2022 22:25:35 +0800</pubDate><description><![CDATA[记录一下文件分片上传断点续传功能的前端实现，后端部分可以看看这篇文章：Springboot实现文件分片断点续传功能（后端篇）
项目代码已上传至GitHub https://github.com/huiluczP/segment_upload
整体思路
所有请求都使用ajax。

文件控件选择后，计算文件唯一码，调用接口查询文件是否存在。文件存在则判断分片是否上传完成，已完成显示秒传信息。
点击上传按钮后，再查询一次文件是否存在，来获取文件分片信息。文件不存在，那么起始分片为1；文件存在，那么获取起始分片为已]]></description><category></category></item><item><title><![CDATA[SpringBoot实现文件分片断点续传功能（后端篇）]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/123782427</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/123782427</guid><author>qq_41733192</author><pubDate>Sun, 27 Mar 2022 22:19:10 +0800</pubDate><description><![CDATA[SpringBoot实现文件分片断点续传功能（后端篇）
最近想实现一下分片上传的功能，文件分片上传就能实现断点续传了，数据库记录也能保证秒传功能的实现。记录一下宝宝demo。
前端部分可以看看这篇文章：Springboot实现文件分片断点续传功能（前端篇）
项目代码已上传至GitHub。 https://github.com/huiluczP/segment_upload
整体思路

首先利用数据库存储文件信息，包括文件物理地址，分片接收进程和对应的md5码。利用md5码可以判断当前上传文件是否在服务器中存]]></description><category></category></item><item><title><![CDATA[pytorch保存训练模型参数并实现继续训练]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/123663328</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/123663328</guid><author>qq_41733192</author><pubDate>Tue, 22 Mar 2022 16:08:17 +0800</pubDate><description><![CDATA[最近的想法是在推荐模型中考虑根据用户对推荐结果的后续选择，利用已训练的offline预训练模型参数来更新新的结果。简单记录一下中途保存参数和后续使用不同数据训练的方法。
简单模型和训练数据
先准备一个简单模型，简单两层linear出个分类结果。
class MyModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear = nn.Linear(64, 32)
        self.lin]]></description><category></category></item><item><title><![CDATA[bert-as-service简单使用]]></title><link>https://blog.youkuaiyun.com/qq_41733192/article/details/121515643</link><guid>https://blog.youkuaiyun.com/qq_41733192/article/details/121515643</guid><author>qq_41733192</author><pubDate>Wed, 24 Nov 2021 15:00:25 +0800</pubDate><description><![CDATA[BERT训练语料集合生成预训练词向量模型，能用在下游任务中。和Word2vec比，个人觉得它最大的好处在于词缺失的时候，能词条化和短词的词向量匹配，这样能避免丢掉太多语义，比如promax不存在，BERT就会返回pro###和###max，这样也能有效获取语义。
BERT12层的transformer，自己训练一次开销巨大，为了快速使用BERT生成词向量而不去直接训练，利用bert-as-service封装库来实现预训练结果的读取。
预训练结果
BERT谷歌官方在github中给出了几个不同类型的已训练好的]]></description><category></category></item></channel></rss>