解决方案
文章平均质量分 73
kamjin1996
全栈,主做后端和架构设计,主力语言Kotlin、Java、Python、Typescript,兴趣广泛,对LLM、AIGC、流量、SEO更感兴趣。
展开
-
【kotlin】在SpringBoot项目中使用kotlin协程coroutine实现方法的异步延迟调用,例如延迟查询短信发送详情结果。
当前做法实现了对某个方法异步延迟的操作,常见的场景如短信发送日志的延迟查询和记录。一般来说,短信的发送和接收,在短信云服务商那里形成完整记录是需要一定的时间的,只有这段时间过去才可以有效查到短信的发送详情。编写一个回调接口,并将该接口配置为回调地址,等待短信服务商回调该接口接收数据并记录。使用MQ创建延迟队列,在延迟队列触发后去查询数据并记录。使用定时任务,定时批量查询数据并记录。原创 2024-03-13 14:00:31 · 921 阅读 · 1 评论 -
【grpc】利用protobuf实现java或kotlin调用python脚本,含实现过程和全部代码
在一些特殊场景中,我们可能需要使用java或者其他任意语言调用python脚本或sdk等。本文的需求衍生也不例外于此,python端有sdk,但只能在python中调用,于是就有了本文章。常见的调用方式如jython、python提供http rest接口、python提供rpc实现、java通过jni调用转换成c的python。每种调用方式都有优缺点,我们更期待一种简单、快速、功能更自由、低侵入、方便维护的方式来实现。原创 2024-01-09 11:40:46 · 1591 阅读 · 0 评论 -
【WSL2】在Windows和wsl2中互相网络访问的优雅做法,不用再手动写死IP了
目前在windows与windows的wsl系统之间,还无法通过相对较固定的方式来互相网络访问,通常需要使用各自的ip来互相访问,而ip可能不是很直观并且可能会有变更,当前教程解决了这个问题,通过hosts映射的方式打通wsl与windows宿主机之间的访问。脚本的原理:在linux启动时或shell加载时,执行一次修改windows和linux上的hosts文件的脚本。为windows添加wsl的host以及为wsl添加windows的host,这样就能做到互相映射。原创 2023-12-25 11:39:30 · 3243 阅读 · 0 评论 -
【NACOS自定义配置读取和映射】一个简易的Nacos配置读取和映射处理器,自定义注解+BeanPostProcessor,简单方便高效的属性注入解决方法
众所周知由Spring提供的注解属性,是一种简单易用且方便维护的自定义配置读取映射方式。部分API不会直接生效或者说需要做一些额外的操作,具体就是直接使用了@NacosConfigurationProperties后也没效果,使用了@NacosPropertySource标注了也没有效果,从源码里找处理的部分,在nacos-client包里没有的。感觉这块的api设计上本身就缺乏一些考究,既然加上没效果就放在有效果的包里好了,放在nacos-client包里面,它只是个摆设。原创 2023-06-12 16:28:23 · 2574 阅读 · 2 评论 -
【数据库编码集】oracle 10g数据库查询中文因编码格式不同,导致显示乱码。客户端转码解决办法,mybatis全局TypeHandler,mp多数据源
在web服务接入其他系统的数据视图时,可能会遇到中文显示乱码的问题,如采用了Oracle 10g数据库的系统(老旧而“稳定”的系统,嗯)的编码集为US7ASCII,而客户端的编码集通常可能为UTF-8,大多在plsql这种客户端查询是可以正常显示中文的,而此时程序通过jdbc驱动查询到的中文内容就可能会是乱码,这是因为服务端提供的中文内容是iso-8859-1编码(US7ASCII为iso-8859-1的子集)方式,客户端使用的还是utf-8导致的。解决方法可以是服务端解决,也可以是客户端解决。原创 2022-10-27 12:27:01 · 1772 阅读 · 0 评论 -
数据库字段加解密插件,保障数据的安全,支持Mybatis框架与MybatisPlus框架,数据入库加密,出库解密
前言: 在很多的后台系统中,出于对用户隐私保护、数据安全、使开发和业务数据无感知、安全等级评审等需求中,都会对数据库部分内容进行加密,那么在书写逻辑时加密虽然简单粗暴,但有如下缺点:代码量升高而加重业务代码复杂度做法不够优雅非业务代码与业务代码混杂,业务侵入性过强研发人员的关注点变多,关注点过多那么也意味着后续可能维护困难最好有一种声明式做法,比如注解,在最小影响代码的情况下,优雅的实现这个功能。复杂的实现也不考虑,本文将采用mybatis的拦截器作为基础进行实现。(AOP思想)一、原创 2019-12-03 15:39:19 · 3730 阅读 · 10 评论 -
【Teamcity】(一)基于Teamcity加Docker Compose自动部署前端VUE项目,自动发布
本文描述了如何采用teamcity将项目部署在docker容器中,完成前端项目(例子为vue,其他项目理论上也适用,各框架下完成项目打包即可)自动部署的具体方式,思路及步骤如下:1.配置项目的docker-compose编排,保证项目通过docker-compose就可以运行2.推送代码时,Teamcity按照条件触发自动拉取项目代码,将从配置好的git地址拉取代码到临时工作空间2.在临时工作空间的目录下,Teamcity将执行配置好的BuildStep进行服务的打包,部署,发布等动作。原创 2021-12-09 17:40:22 · 2891 阅读 · 0 评论 -
使用图形化界面时startxfce4,出现的cannot open /dev/tty0: Permission denied问题,解决方法
startxfce4在使用xserver时往往会报:cannot open /dev/tty0 (permission denied)添加所在用户到tty组中gpasswd -a 用户名 tty还不行的话试一下下面的方法:vim /etc/X11/Xwrapper.config里面原来内容如下:allowed_users=anybodyneeds_root_rights=yes改为(在=前后加上空格):allowed_users = anybodyneeds_root_right原创 2021-07-27 14:38:11 · 6499 阅读 · 0 评论 -
maven加快编译速度,简单参数,提升编译打包速度
参数:跳过单元测试:-Dmaven.test.skip=true开启多线程编译:-Dmaven.compile.fork=true每核增加一个线程进行构建:-T 1C完整命令:mvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true实测不开启时项目打包需要:4分01秒使用命令后打包只需要:1分28秒可以看到差距何其大,为了更好的利用如今电脑/服务器的强劲性能,墙裂建议大噶试一下项原创 2021-07-13 13:26:12 · 7249 阅读 · 2 评论 -
idea出现分支没被删除,却在使用git操作时找不到的问题解决
使用idea的update project(快捷键ctrl+T)原创 2021-07-09 17:04:21 · 281 阅读 · 1 评论 -
win10利用miracast进行无线投屏,双屏扩展
前言:在办公效率越来越高的今天,一面屏幕已经越来越不能满足日常的办公所需,越来越多的场景下需要多屏分工协作。程序员尤为多见,需要更高效的分屏操作,a屏打代码,b屏google、csdn。a屏竖着,b屏横着,各屏各司其职,并支持各种快捷键操作。如何有一个比较高效且方便的方式来达到分屏的目的?本文探讨一下无线方式达成的投屏及分屏硬件准备:1.win10电脑两台,不限笔记本和台式2.可能用到另购的支持miracast的无线网卡,miracast是什么自行百度谷歌miracast的支持:如果打开:win原创 2021-06-07 18:24:01 · 10145 阅读 · 0 评论 -
Java上传本地jar包到maven中央仓库
前言 本次目的:将jar包上传到maven远程中央仓库上作用:在Java - maven项目中可在pom文件中引入相应jar包依赖问题:maven不支持直接上传jar包解决:将jar包部署到第三方Maven仓库(如:sonatype ossrh仓库)中,之后再将jar包同步更新到M...转载 2021-04-08 17:05:41 · 404 阅读 · 0 评论 -
解决HttpServletRequest的输入流只能读取一次的问题,springMVC拦截器获取POST请求参数
背景通常对安全性有要求的接口都会对请求参数做一些签名验证,而我们一般会把验签的逻辑统一放到过滤器或拦截器里,这样就不用每个接口都去重复编写验签的逻辑。在一个项目中会有很多的接口,而不同的接口可能接收不同类型的数据,例如表单数据和json数据,表单数据还好说,调用request的getParameterMap就能全部取出来。而json数据就有些麻烦了,因为json数据放在body中,我们需要通过request的输入流去读取。 但问题在于r...转载 2021-03-12 10:50:04 · 1806 阅读 · 0 评论