杂七杂八
各种 混入
寂寞旅行
编程原则>>>不写代码: 不修改原有代码,尽量不增加新代码,不重复造轮子
在开始的几年中,在csdn中查到了解决开发问题的方法,现在也想成为帮助他人的一份子,出一份力;记录工作点滴困难,让后来者少走弯路;从涉及springboot,springcloud全家桶,mybatis,mp,influxdb,nebula,mysql,redis,mongodb,rabbitmq,多线程编程,分布式锁,html,jsp,jquery;取得系统集成中级证书;
展开
-
IDEA启动正常debug启动报错
很奇怪的一个问题,项目运行正常,debug启动直接报错,运行不起来。原创 2024-06-15 11:45:00 · 252 阅读 · 0 评论 -
手搓文件格式转换
关注公众号后,根据菜单获取邮箱。邮箱发送邮件: 获取地址。激活码是: 1024。原创 2024-06-08 20:01:52 · 270 阅读 · 1 评论 -
java 项目通用数据权限设计
权限一般分为操作权限和数据权限操作权限: 菜单,页面,按钮数据权限: 能看到的数据,包括各种页面的数据范围这里不做扩展,其实这里仅仅是最简单的方式,即直接通过限制表达到对于业务表的数据过滤,那么其实我们还可以通过其他方式限制;通过字典组限制,那么exists内部在拼接之前可能需要二次处理;通过sql语句配置限定条件,那么我们需要拼接sql语句,甚至当sql语句中有变量,我们需要解析后,再拼接到sql片段中;原创 2024-05-15 16:33:41 · 901 阅读 · 0 评论 -
2024.1IDEA 到2026年
解压之后,按照 操作说明.txt 操作;原创 2024-05-08 17:50:08 · 682 阅读 · 0 评论 -
IDEA中SVN 的使用
svn可以老牌的代码仓库了说实话svn还是和git无法相比的,毕竟git有本地仓库的概念,可以很好的处理冲突,然而svn是没有本地仓库的概念的,所以只能拉取别人的代码,然后处理冲突后,才能提交代码;由于最近的工作换成了用svn仓库,所以不得不重拾svn,一晃过去已经5年多没用过了~~当然,使用svn自带的可视化工具也可以实现,更新 提交的操作;原创 2024-04-18 20:04:27 · 1125 阅读 · 0 评论 -
关于微信/支付宝支付
最近搞了下微信支付,支付宝支付;经历了一个 半拉柯基 的项目,走了很多弯路,也确实跟之前不太一样了,支付宝,微信支付等,都做了升级,以及一些新功能,不过仍然觉得,支付宝对接起来就是比微信支付舒服很多,所有错误都可以在文档中找到解决,而微信支付问题很多,但是解决办法在社区中都找不到解决办法…原创 2024-03-21 21:39:02 · 428 阅读 · 0 评论 -
Windows安装Docker 容器教程(转载)
Windows安装Docker 容器教程原创 2024-02-29 21:07:37 · 1103 阅读 · 0 评论 -
MapStruct优雅的转换bean对象(转载)
MapStruct优雅的转换bean对象原创 2024-02-29 20:14:20 · 226 阅读 · 0 评论 -
格式化小数位数
格式化数字一般采用 DecimalFormatDecimalFormat 可以处理各种精确的数值格式化,一般还会搭配 float double 已经精度较高的 BigDecimal 使用;小小的数字位数格式化,也搞了半天~~原创 2024-01-16 08:11:38 · 436 阅读 · 0 评论 -
修改对象的行为和值(代理)
直接复制一份,将属性覆盖后,返回一个新对象搞一个代理类,代理这个对象,修改对象的原有行为和值,从而达到修改属性值的目的第二种方式比较高大上,相当于手动创建了代理对象,并修改了对象的原有属性和行为!原创 2024-01-06 14:51:21 · 476 阅读 · 0 评论 -
深度优先和广度优先
搜索方式不同。深度优先搜索算法不全部保留结点,扩展完的结点从数据库中弹出删去;广度优先搜索算法需存储产生的所有结点。运行速度不同。深度优先搜索算法有回溯操作,运行速度慢;广度优先搜索算法无回溯操作,运行速度快。占用空间不同。深度优先搜索算法占用空间少;广度优先搜索算法占用空间大。作用不同。虽然都可以完成树形结构的遍历,但是深度优先一般用于需要先处理最深层级逻辑,广度优先一般用于层层节点展开的处理逻辑;深度优先 用栈;广度优先 用队列;原创 2023-12-30 11:30:05 · 510 阅读 · 0 评论 -
jackson 前后端交互 忽略字段
某些字段就是不应该被返回到前端(无论是否为空或null),但是对于后端来说至关重要某些字段为空或者null ,不应该返回某些字段即使是空的或者null, 也要返回Jackson 还有很多其他注解,也都是非常实用的;@JsonProperty 转成json的时候,将字段名字变为另一个@JsonAlias 接收参数的时候,可以将属性增加一个名字接收参数(原名称也可以接收)等等…原创 2023-12-30 11:29:24 · 673 阅读 · 0 评论 -
根据优先级 + LRU 缓存数据
在项目中遇到了,需要根据 优先级 + LRU 缓存数据;LRU 优先考虑采用hutool ,然后自己附加搞上 一个优先级就行了PriorityQueue是基于优先级堆的无界队列。PriorityQueue的作用是保证每次取出的都是队列中权值最小的元素,也可以说是最高优先级的元素。PriorityQueue的元素排序是按照自然排序来进行排序的,在创建时可以给他添加一个给元素排序的比较器。offer():添加元素到队列中,如果队列已满,则返回false。poll()原创 2023-11-29 16:20:30 · 195 阅读 · 0 评论 -
线程面试高频问题
只要是程序进入内存中,那么就是一个进程,一个程序可以有多个进程,例如我登录两个qq号,都是启动了一个QQ.exe的程序;进程是用来分配资源, 网络,磁盘,最主要的是内存资源;它是一个静态的概念,当程序进入内存后,一定会产生一个主线程;原创 2023-11-17 14:47:16 · 94 阅读 · 0 评论 -
netty 拆包/粘包
这要从TCP协议,缓冲区说起了;发送方发送的消息较大,在传输之前会被 TCP 底层拆分,这个过程称为拆包;接收方接受消息的时候, 会将多个小的消息变为一个包,这个合并的过程称为粘包;当然可能同时存在拆包和粘包,例如接受到的消息为两部分组成(A B), 一部分是一个A的全部,另一个部分为B的一部分,这就是既有拆包又有粘包;这里面 缓冲区就是在传输过程中的一个缓冲的地方,他如果很大, 他就会讲小的消息体整合发送,他如果很小,就会将一个完整的消息体拆分下,然后发送;原创 2023-10-02 09:45:00 · 123 阅读 · 0 评论 -
抽象类实现接口的意义
抽象类和接口其实都是抽象的一种,那么他俩有何异同呢?抽象类实现接口的意义何在?抽象类实现接口的意义在于提供了一种灵活且层次分明的代码结构,有助于实现模块化和可维护性。具体来说,抽象类可以作为继承层次结构中的基础类,提供一些公共方法和属性,子类可以继承和扩展。而接口则定义了一组相关的方法规范,约束了实现这些方法的类或抽象类的行为。这有助于确保代码的模块化,提高代码的可重用性和可维护性。抽象类相当于在原有抽象的基础上,再次抽象,提取了一些公共方法;原创 2023-09-03 09:30:00 · 1190 阅读 · 0 评论 -
java 排班计划
根据排班次数对班组数量取余,得到应该执行任务的班组根据时间获取当前年 以及当年的每月天数每月天的序号数,对应班组则给出了排班结果然后三班倒就是正常往下捋班组就可以了两班倒的话,我这了采用的是翻转班组,这样就能实现: 月末那天晚班班组将继续下月第一天的白班 干24休息12。原创 2023-08-24 09:14:44 · 814 阅读 · 1 评论 -
java中对象字段转换
在java中,有时候会涉及到一些对象的转换,为什么转换呢?由于接受参数和用的时候对应不上由于经历过一些修改,为了兼容可以利用 @JsonProperty 改变转成json 时候的属性值(key值)可以用例 @JsonAlias 增加转为对象时候接受的属性值(key值),并且原有的属性值也可以用还可以用例 @JsonProperty 和 @JsonAlias 同时使用,同时增加接收参数和转出参数的值。原创 2023-07-07 14:33:59 · 895 阅读 · 2 评论 -
debug调试高级用法
在开发调试中,如果你不会debug调试,一般情况下,就只能控制台打印,然后一遍一遍重启了,所有debug是必不可少的技能,尤其当遇到问题的时候,可以清晰的看到代码每一步的执行过程,不仅如此,我们还能对于正在执行的代码值,做修改,以及给debug添加条件等等;提示:以下是本篇文章正文内容,下面案例可供参考这里简单的通过一个类的来讲述,断点的各种操作,然后如果是一个项目的话,操作与此基本一致,这里不在赘述,希望刚入门以及对于断点的高阶操作不熟悉的小伙伴可以学习后,在项目调试中如鱼得水~~,所有bug一目了然!原创 2023-07-01 16:01:20 · 3931 阅读 · 2 评论 -
k8s集群部署
k8s 自动化部署尝鲜,作为一个后端开发,还是多少要掌握一些运维知识的,但是不用掌握这么多~~kubernetes,是一个全新的基于容器技术的分布式架构领先方案,本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:● 自我修复:一旦某一个容器崩溃,能够迅速启动新的容器● 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整● 服务发现:服务可以通过自动发现的形式找到它所依赖的服务。原创 2023-06-09 10:14:02 · 1111 阅读 · 0 评论 -
HashMap 简述
HashMap 是开发中常用的一种数据结构,通常用做返回值,计算比对等,会经常用到;可是很多key的hashcode值如果相同,下标相同怎么办?于是出现了链表结构,就是当很多key的hashcode值相同的时候,即哈希冲突,那么此时会在这个下标下面挂出一个链表,用来存储产生了哈希冲突的key,那么它的下标如何计算?哈希值都是同一个,应该是对当前所在链表的长度取模,作为它的唯一下标;这里仅仅是对于hashmap的一个简单介绍,主要说明了哈希冲突的由来,以及底层存储结构的选择的理由;原创 2023-05-08 10:43:24 · 597 阅读 · 0 评论 -
2020-12-03 递归的两种结构
递归,一般用于菜单,区域等,有时候需要递归为树形结构,有时候需要递归为列表@Test void tree() { List<Tree> trees = initList(); Tree root = new Tree("0", "root"); List<Tree> tree = getTrees("0",trees...原创 2020-12-04 14:11:30 · 164 阅读 · 0 评论 -
2020-12-02 RSA加密
采用hutool的工具类,自定义公钥私钥的方法// 应用代码 KeyPair pair = SecureUtil.generateKeyPair("RSA"); String encode = Base64.encode(pair.getPrivate().getEncoded()); System.out.println(encode);// 可...原创 2020-12-03 09:22:28 · 274 阅读 · 0 评论 -
java配置环境变量
java开发,首先要安装JDK,并配置环境1安装JDK(本人下载的安装包,无脑下一步,选择了下文件夹),安装完成截图如下2开始配置环境变量右键我的电脑==高级系统设置==环境变量==系统变量中选择新建(1) JAVA_HOME路径根据自己安装的写,路径到(bin上一层)例如:笔者的jdk的bin路径,D:\JDK\Java\jdk1.8.0_131\bin所以此处变量值是:D:...原创 2020-07-03 17:19:14 · 72 阅读 · 0 评论 -
java乱码解决方案
可以通过以下方法找到之前的编码格式public class Test { public static void main(String agr[]) throws UnsupportedEncodingException { recover("package jit.wxs.express;"); } public static vo...原创 2021-02-04 15:36:18 · 8860 阅读 · 0 评论 -
2020-12-08 责任链
责任链: 就是一个链式的自由组合,通常用于数据的加工,或者数据的校验等场景,特点是比较灵活,可扩展性非常强。分享两种责任链的写法,思路大致一样,都是继承抽象类,得到具体的执行实例,然后认为控制执行顺序,完成。举个栗子:方法 A(加1) B(加2) C(加3) ,输入一个数字 int num =1,调用 A B C ,结果为7。调用 AABC 结果为8。开始代码。第一种:AddBeanA...原创 2020-12-08 20:44:48 · 70 阅读 · 0 评论 -
oom 内存溢出
OOM,即OutOfMemory,内存溢出,原因是:分配的太少;用的太多;用完没释放。内存泄漏:内存用完没有被释放。大量的内存泄漏就会导致OOM,也就是内存溢出。常见的OOM情况有三种:1)java.lang.OutOfMemoryError: Java heap space ------>java堆内存溢出,此种情况最常见,一般由于内存泄露或者堆的大小设置不当引起。对于内存泄露,需要...原创 2020-10-20 14:17:16 · 71 阅读 · 0 评论 -
2020-12-11 码云地址
现决定将自己之前文章中的项目公开到码云上,供大家参考使用简书的gitee代码托管首先要安装了git以及git可视化,在gitee上有自己的账号1 生成公钥ssh-keygen -t rsa -C "任意字符"2 将生成的key复制windows下可以直接去找 目录在: C:\Users\Admin.ssh 找到id_rsa.pub 将内容复制3 添加到gitee上的SSH公钥4 验...原创 2020-12-11 09:55:40 · 96 阅读 · 0 评论 -
2020-11-27 自己写的test
链接:https://pan.baidu.com/s/1wHkwBHrlpOtXdbwB-r__JQ提取码:6t88复制这段内容后打开百度网盘手机App,操作更方便哦对于一些项目中实际应用,整理的一些demo,可以直接运行 test测试类,进行测试...原创 2020-11-27 16:35:16 · 61 阅读 · 0 评论 -
持久层简述
public static List> executeQuery(String sql,Object... args){//可变参数Object... args。因为用的map键值对集合 得到了列 就能得到相应的values值*/System.out.println(map.get("id"));//一行数据 用一个map 接收。/*需要将所有数据都存放到 List中 每一行 用一个 map存放*//*将每行的map存放到 List中*//*获取本次查询结果集有多少列*/原创 2020-07-03 17:19:03 · 76 阅读 · 0 评论 -
2020-11-27 tocken方式前后端验证
2 返回token给前端,前端通过token获取该用户信息,后端通过在redis中获取,返回给前端信息,若获取不到,证明未登陆,或者已经过期。5 用户更新密码: 前端将旧密码,新密码,都RSA 在base64 传给后端,后端首先校验旧密码是否正确,同4 ,之后在将新密码 同3 处理。3 后端接到后,首先用base64解密,并用RSA私钥解密,得到密码明文,加盐后,MD5加密存储在数据库中。后端收到,base64解密,并查找该用户得到该密钥,然后用密钥解密,得到明文,然后将明文加盐后 MD5加密。原创 2020-12-02 10:57:28 · 267 阅读 · 0 评论 -
导入--动态下拉框
可以看到 其中orgValidation 开始也是用大多数普通下拉的,但是由于数据了较大,报错255,百度后,单独提出去了,位置都是(1,100,8,8)这样可以达到大数据下拉框的展示,并且不报错。设置下拉,即从数据库中查询要下拉的数据,然后设置,经过实践,当下拉中显示的字符总数超过255字节的时候,会报错,这里两种情况分别展示。导入的时候,一般会有模版下载,那么会涉及到下拉框的情况,此下拉框为动态生成,今天我们来看下。所用工具easypoi。原创 2021-04-01 16:14:07 · 520 阅读 · 0 评论 -
2020-09-14 单点登陆理解,逻辑
这篇文章很值得参考https://blog.csdn.net/xiaoguan_liu/article/details/91492110原创 2020-09-14 11:21:00 · 57 阅读 · 0 评论 -
过滤器/拦截器
过滤器基于servlet,与web应用同生共死,对于所有请求,包括访问资源的请求,权限请求等都可以进行过滤,自定义相应规则,放行或者拦截拦截器基于aop拦截,只能对controller 中的请求进行拦截,并可以在多个地方,多次调用,比如日志拦截,自定义一个注解,对应写一个aop拦截方法,进行日志记录,那么就可以在任意控制器,并可以多次调用过滤器拦截器,有很大的区别,分工也不尽相同.过滤器...原创 2020-12-03 09:22:16 · 60 阅读 · 0 评论 -
maven 环境变量
maven 是一款jar包管理工具,可以通过pom.xml 读取jar包所在的地址,自动下载到本地,无需各处找jar包,以及下载问题。在开发工具中配置maven 选中settings.xml文件 更新本地仓库索引位置。开始配置maven,settings.xml文件,为什么配置呢?我下载的是解压版本,版本 3.3.3,解压之后如图。找到 localRepository 注掉这些。2 更改maven下载的镜像,加速jar包下载。找到 mirrors 加入如下代码。1 配置maven 本地仓库位置。原创 2020-07-03 17:43:45 · 136 阅读 · 0 评论 -
2022-01-04 常用简单集合操作
平时会用到集合的判断,如交集,差集等,hutool有县城的方法,一起来看一下// 准备数据 String[] attr1 = new String[]{"A", "B", "C", "D", "E", "F", null}; String[] attr2 = new String[]{"1", "2", "3", "D", "E", "F", null}; ...原创 2022-01-05 17:26:22 · 1300 阅读 · 0 评论 -
pagehelper 真假分页
2 假分页: 即查询数据库中符合条件的所有数据,然后在模型层,自己对list结果进行处理为相应的分页效果,主要用list.sublist 实现。假分页的场景一般使用在,查询的数据集合,需要特殊处理.比如数据的排序需要经过复杂的计算,而且用此字段来排序,那么假分页就会更加适用。真假分页概念,这是我认为的,相比大家看完文章已经清楚了,真分页性能确实更好,但是有时候假分页更适合。1 真分页: 即每次只从数据库取到相应的数据,然后返回,这样可以性能要比假分页高一些。原创 2021-04-29 11:53:37 · 771 阅读 · 0 评论 -
控制器接收参数去空格
开发中遇到一些特殊字段不能有空格的要求,后端需要对其进行处理,百度实践之后,奉上一个工具类,可以完美去掉参数中的空格。原理就是利用反射机制,获取属性值并重新设置去空格之后的属性值BeanHelperimport java.lang.reflect.Field;import java.lang.reflect.Method;public class BeanHelper { /*...原创 2021-08-04 15:09:00 · 313 阅读 · 0 评论 -
实体类的花里胡哨
在实际开发中,会遇到三方接口对接等问题,或者接口兼容转换问题,涉及到字段的对应.其实可以这么操作,直接上代码import com.fasterxml.jackson.annotation.JsonAlias;import com.fasterxml.jackson.annotation.JsonProperty;@Datapublic class BaseDeviceChannelBo...原创 2021-07-10 10:47:33 · 101 阅读 · 0 评论 -
2022-03-30 StackOverflowError与OutOfMemoryError详解
如果当前线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。 如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。一 StackOverflowError 方法无线调用, 使得栈指针层数过多 ,栈满了设置参数:Xss二 如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。就是整...原创 2022-03-30 09:39:37 · 805 阅读 · 0 评论