后端
文章平均质量分 50
GodSure0914
这个作者很懒,什么都没留下…
展开
-
策略模式(进阶版)
策略模式普拉斯原创 2023-04-11 15:51:01 · 172 阅读 · 0 评论 -
java-通过反射实现比较两个对象不同的字段
import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.BeanUtils;import org.springframework.stereotype.Component;import org.springframework.util.CollectionUtils;import org.springframework.util.Obj原创 2022-02-14 07:30:00 · 909 阅读 · 0 评论 -
java-自定义方法注解实现AOP面向切面编程
首先定义注解类import java.lang.annotation.*;/*** @description: 保存或者修改字典权限判断注解* @fileName: CommDictValidateAspect.java* @author: Sure* @createAt: 2021/12/13/013 16:14* @updateBy: Sure* @remark: */@Target({ElementType.METHOD})@Retention(RetentionPolicy.R原创 2021-12-14 11:17:09 · 2681 阅读 · 0 评论 -
Swagger踩坑:入参和显示不一致问题
这个问题还是比较坑的,idea和浏览器缓存都快被我清烂了都解决不了,最后从大佬那找到了解决办法。出现问题的原因:偷懒直接复制类导致@apimodel里面的类名没有改,不怎么聪明的swagger加载了别的类~解决办法:修改@apimodel里面的参数...原创 2021-08-03 15:46:22 · 1400 阅读 · 0 评论 -
JSON.parseObject新玩法-类转换实现Map<字段名,字段值>的形式
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-07-27 14:30:17 · 3053 阅读 · 0 评论 -
Java并发08-锁的测试与超时、读写锁
锁的测试与超时、读写锁1.锁的测试与超时2.读写锁1.锁的测试与超时线程在调用lock方法获得另一个线程所持有的锁时,会发生阻塞。应该更加谨慎地申请锁,tryLock方法视图申请一个锁,在成功获得锁之后返回true;否则立刻返回false,并且线程不会进入阻塞状态if(lock.tryLock()){…}else{}可以调用tryLock时,使用超时参数tryLock(1000,TimeUnit.MILLISECONDS)TimeUnit是一个枚举类型,可以取的值lock 方法在原创 2021-06-24 09:37:53 · 584 阅读 · 0 评论 -
Git常用命令干货满满拒绝花里胡哨
git init //初始化本地版本库git clone //克隆远程版本库git checkout -b [分支名] //创建并切换到指定分支git checkout master //切换到master分支git merge --no-ff [要合并的分支名] //master指定的分支合并,保留节点信息git branch -d [分支名] //删除分支git branch -m old new //本地分支重命名git pull //从远程仓库更原创 2021-06-11 09:20:40 · 799 阅读 · 2 评论 -
Java两个类或者集合之间相互转换最简单实用的两种方法,拒绝挨个set让你的代码变简洁~~~
方法一:当两个类字段完全一样的情况下可以使用org.springframework.beans包下的BeanUtils.copyProperties方法。//初始化需要接受参数的类 ConfigQueryDTO dto = new ConfigQueryDTO(); //第一个参数为原始类,第二个是我们刚才声明的需要转换的类 //这种方法只能转换两个类里面相同参数类别和名称的字段 BeanUtils.copyProperties(queryDTO, dto);通过源码我们可以看到这种方法是支持原创 2021-05-28 09:29:12 · 5605 阅读 · 1 评论 -
MySQL优化和原理分析课程免费分享速度存
课程介绍视频是MySQL高级进阶课程,为面试和工作提升必备课程。课程中以案例分析的形式进行MySQL优化的深度分析、以及介绍MySQL优化常用分析工具的使用。本套课程主要讲解MySQL优化和原理包括4大部分:一、MySQL存储原理和效率提升二、SQL优化和优化工具三、MySQL全面优化四、MySQL锁机制和优化原理,学习完本套课程,轻松应对工作和面试中对于MySQL优化的细节和原理分析。学习地址 :百度:https://pan.baidu.com/s/17Zdo9gDBBgc_X6fsXmOndw.原创 2021-05-26 08:47:08 · 176 阅读 · 1 评论 -
Java并发04-守护线程及未捕获异常处理器~
1.守护线程可以通过调用将线程转换为守护线程守护线程的唯一用途是为其他线程提供服务。比如计时线程,它定时发送信号给其他线程当只剩下守护线程时,JVM就退出了。守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断2.未捕获异常处理器线程的run方法不能抛出任何异常。但是不被检测的异常会导致线程终止不需要任何的catch子句来处理可以被传播的异常;在线程死亡之前,异常可以被传递给一个用于未捕获异常的处理器处理器实现了Thread.UncaughtE原创 2021-05-25 09:36:53 · 407 阅读 · 0 评论 -
Nacos注册地址为局域网ip解决办法
1.增加配置:spring.cloud.inetutils.preferred-networks=10.67(你需要Nacos显示的ip开头,如果我要显示10.67.1.2就可以按我这个设置)2.干掉多余端口:适配器选项,禁用掉无用的只留下你想要的ip即可原创 2021-05-24 18:32:18 · 6653 阅读 · 6 评论 -
比Navicat还强大的数据库连接工具DBeaver7.1.0企业版xx版分享
今天看到一个大哥在用工具操作数据库,发现他用的工具比我的Navicat15(之前用的12后来下了个15的破解版发现没多大区别)要高大上很多,作为一个后端程序员,在B格上绝对不能输,“哥,软件名给俺说一下呗~~”DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。由于 DBeaver 基于 Java 开发,可以运行在各种操作系统上,包括:Windows、Linux、macOS 等。DBeaver 采用原创 2021-05-18 09:35:15 · 2192 阅读 · 7 评论 -
java并发02-线程的状态五千字详解,走过路过不要错过!!!
线程就是内存中的一个对象,线程并不是调用start方法之后就立刻开始执行而是表示准备好了(Cpu可能正在执行其他线程),应该进行排队。当Cpu有时间片了,就分配给这个线程开始执行,如果到时间了,那么停止运行,重新排队。重复这个过程,直至运行完毕。如果运行中出现状况,那么会停止运行,进入阻塞状态,直至解除才能进入就绪状态,准备排队。如果没有解除那么就会中止。简言之就是 创建(new Thread) 就绪(start()) 执行(run()) ( 阻塞 解除阻塞 ) 就绪执行反复循环...原创 2021-05-14 10:48:04 · 160 阅读 · 2 评论 -
java并发01-线程的基本概念(八千字详解)
线程的基本概念原创 2021-05-13 09:31:24 · 182 阅读 · 0 评论 -
PostgreSQL学习04--编写sql的最佳实践及注意事项
往期回顾:1.PostgreSQL学习01-常见SQL写法2.PostgreSQL学习02-调优必备之查看sql的执行计划(简单查看)3.PostgreSQL硬核学习03–执行计划简单深入(扫描节点)设计相关具体开发相关:原创 2021-05-07 11:15:05 · 232 阅读 · 3 评论 -
PostgreSQL硬核学习03--执行计划简单深入(扫描节点)
PostgreSQL学习01-常见SQL写法PostgreSQL学习02-调优必备之查看sql的执行计划(简单查看)1.EXPLAIN 语法在PostgreSQL 中,EXPLAIN 命令可以输出SQL 语句的查询计划,具体语法如下:EXPLAIN [ ( option [, …] ) ] statementEXPLAIN [ ANALYZE ] [ VERBOSE ] statementwhere option can be one of:ANALYZE [ boolean ]VERBOS原创 2021-05-04 12:00:52 · 1034 阅读 · 0 评论 -
PostgreSQL学习02-调优必备之查看sql的执行计划(简单查看)
PostgreSQL学习01-常见SQL写法实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表、怎样使用索引的,因此,我们能感知到的就只有sql语句运行的时间,在数据规模不大时,查询是瞬间的,因此,在写sql语句的时候就很少考虑到性能的问题。但是当数据规模增大,如千万、亿的时候,我们运行同样的sql语句时却发现迟迟没有结果,这个时候才知道数据规模已经限制了我们查询的速度。所以,查询优化和索引也就显得很重要了。示例代码:Seq Scan on pg_proc(c原创 2021-04-29 08:39:03 · 1140 阅读 · 0 评论 -
PostgreSQL学习01-常见SQL写法
1.SQL分类:DDL— 数据定义语言(CREATE,ALTER,DROP,DECLARE)DML— 数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL— 数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)2.DDL—数据定义语言-表创建表:create table if not exists schema.tablename (col1_id int8 not null,col2_name varchar(50) not nul原创 2021-04-28 10:03:48 · 797 阅读 · 0 评论 -
给大家推荐一个非常非常非常好用的java轻量级框架-Nutz永远滴神
前段时间离职来到了现在的新公司,奔向了光明的未来,唯一让我留恋的就是原本使用的框架—Nutz了,这个框架相对于现在的mybatis(过段时间可能会“mybatis真香”)来说实在实在是太省事太方便了,比如按某个字段查询数据库信息,如果是mybatis的话需要写类似于下面这种标签并且映射mapper接口才能实现:但是,在Nutz里面,下面一句话就能返回我们想要的结果:List people = dao.query(Person.class, Cnd.where(“name”, “like”, “P%”)原创 2021-04-27 08:47:03 · 2378 阅读 · 8 评论 -
PostgreSQL聚合函数实现将查到的多条数据合并为一条
业务场景:某个用户A对应多个科室的多个角色,角色名可能出现重复,比如中药房科室的药房人员角色和西药房科室的药房人员角色,这种情况下联查的话结果肯定会出现多条:A 中药房 药房人员A 西药房 药房人员A 中药库 药库人员而我想要的格式是(A,中药房-药房人员,西药房-药房人员,中药库-药库人员),寻找各种方法经历多次失败之后终于找到了方法,只需要通过PostgreSQL的聚合函数 string_agg做出以下修改(注意看我标注的地方)即可实现要求: mysql实现方法:g原创 2021-04-23 14:19:04 · 4072 阅读 · 1 评论 -
PostgresSQL查询数据中用逗号隔开的数据以及@>与<@的区别
使用场景,某个科室有很多类别1、类别2、类别3三个类别,存到数据库中的数据是 ‘1,2,3’ 我要查找选了类别1的数据对于这种需求在mysql中用FIND_IN_SET或者正则表达式可以实现,但是我在pgsql中试了下好像不怎么生效,所以我们要先用string_to_array把字段隔开然后再用@>查询包含某个字符的数据,如下图所示,我们看到包含2的都被查了出来。在pgsql中,@>的意思包含,除此之外还有<@,可以理解为包含于某字段,是当我把@>换成了<@的时候可以原创 2021-04-22 10:39:04 · 3778 阅读 · 3 评论 -
mybatis核心类-MappedStatement
MappedStatement是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等,它位于mybatis包的org.apache.ibatis.mapping目录下,是一个final类型也就是说实例化之后就不允许改变mapper.xml文件中一个select\insert\update\delete标签对应一个MappedStatement对象, select\insert\update\delete标签的id即是MappedStatement的idMapped Stat.原创 2021-04-20 16:08:28 · 3034 阅读 · 0 评论 -
你知道java里面的this:: 双冒号是干什么的吗?
今天看到一行java代码: nodes.forEach(this::buildTree);this::buildTree是个什么鬼东西,还整个双冒号,java现在这么奔放了么???foreach肯定不用说了,this肯定指的是当前nodes,机智的我按住了Ctrl点了下双冒号后面的东西,发现这是个迭代方法,结合需求初步猜测双冒号的功能是把前面集合的每一个对象一次去执行冒号后面的方法。后面经过百度,发现::是java8 中新引入的运算符,是把方法当做参数传到stream内部,使stream的每个元素原创 2021-04-15 19:48:48 · 1699 阅读 · 2 评论 -
springboot 使用hibernate validator 校验避免代码冗余
在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有以下麻烦:1.验证代码繁琐,重复劳动2.方法内代码显得冗长3.每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码hibernate validator(官方文档)提供了一套比较完善、便捷的验证实现方式。使用步骤如下:1.引入maven依赖<dependency> <groupId>org.hibernate.validator</g原创 2021-04-12 11:26:50 · 279 阅读 · 0 评论 -
Mybatis mapper.xml文件中的<foreach></foreach>标签
标签:该标签的作用是遍历集合类型的条件foreach元素的属性主要有 item,index,collection,open,separator,close。 item表示集合中每一个元素进行迭代时的别名. index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置. open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符. close表示以什么结束用来循环 collection : 用来指定循环的数据的类型 可以填的值有原创 2021-04-09 13:48:21 · 1844 阅读 · 0 评论 -
java-Netty学习之buffer基础
package com.sure.netty;import java.nio.IntBuffer;/** * @author Sure * @date 2021/2/27 11:53 */public class BasicBuffer { public static void main(String[] args) { //Buffer的简单使用 //创建一个Buffer大小为5,即能够存放5个int IntBuffer intBu原创 2021-02-27 13:56:32 · 134 阅读 · 1 评论 -
java8 lambda表达式配合函数式接口Predicate实现过滤功能
除了在语言层面支持函数式编程风格,Java 8也添加了一个包,叫做 java.util.function。它包含了很多类,用来支持Java的函数式编程。其中一个便是Predicate,使用 java.util.function.Predicate 函数式接口以及lambda表达式,可以向API方法添加逻辑,用更少的代码支持更多的动态行为。Predicate接口非常适用于做过滤。 public static void filterTest(List<String> languages, Pred原创 2021-02-25 16:50:45 · 504 阅读 · 0 评论 -
layui动态进度条实时展示java后端代码执行进度
java后端写了个for循环,需要处理几十万条数据,前端需要等待很长时间,默认的loading等待弹窗就不大适用了,会让人误以为页面卡住了,所以整了个进度条来实时显示for循环执行进度。前端代码,需要引入layui.element: layui.use('element', function () { var element = layui.element; //弹出进度条 var progressLayer = layer.open({原创 2021-02-19 17:47:17 · 2979 阅读 · 7 评论 -
java利用selenium和浏览器驱动控制网页自动操作
朋友让帮忙预约纪念币,但是预约的人很多纪念币数量却是有限的,而且大部分时间都浪费到预约界面填充个人信息上了,于是找到了一种方法来实现进入预约页面的时候自动填充相关信息。首先引入相关依赖(maven仓库都能找到)然后下载浏览器对应版本的驱动,谷歌浏览器驱动下载链接如下:https://chromedriver.storage.googleapis.com/index.html将下好的驱动放到本地文件夹,java代码如下 public void beforeMethod(long id) throw原创 2021-02-18 11:46:50 · 686 阅读 · 0 评论 -
免费的前端在线excle开源框架-luckysheet 配合java后台使用
公司内部项目要做一个在线的excle,通过在线excle遍历公司数据,在excle修改数据之后同步到数据库,从网上找了很多方法,推荐给大家一个免费的在线excle编辑框架-luckysheet优点:免费,白嫖的永远是最香的,功能强大,接近实际的excle缺点:官方api不太全,好多东西都得自己摸索,有时候需要更改一些js代码。官方apihttps://mengshukeji.github.io/LuckysheetDocs/zh/guide/api.html#%E5%8D%95%E5%85%83%E原创 2021-02-06 17:37:31 · 2305 阅读 · 3 评论 -
java TimeStamp类型天数加减
思路:先转换成calendar 然后转换成天数,最后比较; Calendar cal1 = Calendar.getInstance(); cal1.setTime(DateCommon.getCurrentTime()); Calendar cal2 = Calendar.getInstance(); cal2.setTime(goodsBean.getCreateTime()); int day1 = cal1.get(Calendar.DAY_OF_YEAR);原创 2021-01-19 09:51:00 · 2553 阅读 · 1 评论 -
Java向指定Url带参数发送数据(post)
代码及注释:package com.jxctdzkj.cloudplatform.util;import com.alibaba.fastjson.JSONObject;import com.jxctdzkj.cloudplatform.bean.DeviceBean;import com.jxctdzkj.cloudplatform.bean.VillageBean;import com.jxctdzkj.cloudplatform.config.DateCommon;import org.a原创 2020-10-20 11:16:57 · 2052 阅读 · 0 评论 -
单选框取值
momentum: $('input:radio[name="OldtreePatrol[momentum]"]:checked').val(),原创 2020-09-08 14:47:52 · 151 阅读 · 0 评论