自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 资源 (3)
  • 收藏
  • 关注

原创 使用SpringMVC完成简单的认证接口

简单处理为识别调用方的IP,通过IP标识是否认证成功

2023-03-15 20:34:39 241 1

原创 shell脚本字符串处理

shell脚本中字符串的分割、截取和拼接。

2023-02-03 14:35:13 1121

原创 shell脚本读取文件的内容至数组中,数组的交并补集,文件合并与去重

数组的使用,文件的合并与去重。

2023-02-01 16:16:46 3321

原创 linux定时器crond使用方式简介

一般来说在/etc目录下,有5个以cron开头的目录,分别是/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly,/etc/cron.d。其中前四个目录下的脚本文件就是按周期调用,比如说cron.hourly下的脚本文件就是每小时调用一次,cron.daily下的脚本文件就是每天调用一次。cron.d是用于非前四种情况,自定义调用规律的情况。

2023-01-31 19:13:46 1506

原创 InputStream转byte[]

InputStream转byte[]其实直接使用IOUtils就可以了,但是需要注意的是,将InputStream粗暴地转成byte[],只适用于文件较小的时候,当如果文件有好几个G,再这样转,内存就要溢出了。

2022-12-30 20:09:24 18968

原创 postgresql把日期作为表名的一部分动态建立分区表

上一篇写了如何建立分区表,但是显然,如果想要真正使用分区表,肯定不可能手动一个个新建,比如按每天建表,得想办法让它每天自动新建下一天的表,那么表名的命名必然要以日期为后缀。也需要想办法自动当日零点和第二日零点的时间戳,来用于表的分区。明白了怎样去获取时间之后,我想了各种办法,直接用sql建表,都失败了。

2022-12-13 21:58:41 1617

原创 postgresql内置分区表(声明式划分)

PostgreSQL 10.x 开始提供了内置分区表(内置是相对于 10.x 之前的手动方式)。内置分区简化了操作,将部分操作内置,最终简单三步就能够创建分区表。

2022-12-08 21:43:14 2088

原创 Java堆内存溢出问题分析和解决

MAT分析Java heap space OutOfMemory问题

2022-11-14 21:12:44 3849

原创 服务器抓包-tcpdump使用简介

tcpdump是Linux里的字符界面的数据抓包分析软件,用tcpdump抓到的数据包可以使用绝大多主流分析软件进行分析,例如wireshark。

2022-10-14 17:21:49 3320

原创 postgre sql常用语法

删除表格DROP TABLE table_name;新增字段ALTER TABLE IF EXISTS table_name ADD COLUMN column_name datatype;datatype可以为比如 varchar(255),int4,text这些。需要新增多列时:ALTER TABLE IF EXISTS table_name ADD COLUMN column_name1 datatype1,ADD COLUMNcolumn_name2 datatype2;为了..

2022-03-17 14:56:10 1562 1

原创 registry 删除私有仓库镜像

文章目录一、查询镜像digest值二、根据digest进行删除操作1.命令行调用删除接口2.可能出现的问题,删除时返回UNSUPPORTED解决方式1解决方式2三、使用registry gc清除blobs一、查询镜像digest值命令如下,注意请求头需要加入"Accept: application/vnd.docker.distribution.manifest.v2+json",不然会返回错误的digest。curl --header "Accept:application/vnd.docker.d

2021-12-28 16:40:10 3476 1

原创 使用shell脚本删除rabbitMq的exchange

在Java里面,exchange和queue往往是根据注解自动生成的,非常方便,但是当版本升级改变了exchange类型(例如从direct改为fanout)的时候,就会发现组件启动不了了… 这是因为同名exchange在上一版本组件卸载时并不会被删除,名称冲突导致无法创建,而且很遗憾它也不能自动更新。所以我的解决方法是在组件的安装脚本里面,通过http api的方式去删除可能重复的exchange和queue编写一个删除exchange的脚本# 删除exchange的方法,有几个exchange调用

2021-12-17 15:34:54 1575

原创 docker私有仓库搭建(registry)

文章目录一、pull registry镜像二、启动registry容器三、配置参数(两种方式二选一)方式一方式二四、重启docker服务五、尝试推送镜像六、Docker Registry WebUI 工具一、pull registry镜像docker pull registry二、启动registry容器docker run -d -p 5000:5000 --name docker-registry --restart=always registrydocker run命令:创建一个新的容器

2021-12-15 16:38:20 1790

原创 IDEA添加驱动连接自定义数据库

IDEA本身是可以连数据库的,如果是主流数据库的话,直接点击上图的Data Source项选择对应的数据库并输入对应的数据库、用户名密码等信息即可。当然大多数数据库也可以用dbeaver等数据库连接工具去连,没必要用idea。但是如果是自定义数据库,今天在工作中遇到一个基于postgresql改的数据库,有自己的驱动和方言,这个时候用dbeaver就无法连上,但是IDEA是支持选择驱动连接自定义数据库的。如上图选择Driver and Data Source,进入如下页面这里的name随便取个自己.

2021-10-13 20:00:00 4053

原创 Java中long的表达式问题

今天在代码里发现了有个抛错,是由下面这段分片上传时定位的代码捕获的。第一想法是是不是由于包太大(6.4G)导致long的offset超限。虽然long好像没有这么短…然后查了下long的最大值Long.MAX_VALUE=2的63次方-1,而这里只是并没有超出这个值,只是超出了int的最大值Integer.MAX_VALUE= 2的31次方-1,就觉得很奇怪,所以写了个Test试了下RandomAccessFile accessTmpFile = null;try { accessTmpFile

2021-09-08 11:07:41 737

原创 生产者消费者模式——BlockingQueue

1、BlockingQueueBlockingQueue就是阻塞队列,向其插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;取出数据时,如果队列已空,线程将会阻塞等待直到队列非空。接口2、生产者消费者模式...

2021-08-16 14:55:15 790

原创 Spring Boot 异步处理 @Async

1、异步和同步之前写了一个镜像上传的功能,先是分片上传,上传完毕后还要使用docker命令将镜像加载到本地,给镜像打标签并自动推送。在这个过程中如果使用同步,那么方法的返回会很慢很慢,要等这些步骤都执行完才能进行返回。如果做异步处理,就可以在上传完毕后先行返回结果,用户不用进行等待,后续步骤都在后台进行。2、Spring Boot异步处理①在启动类中使用注解@EnableAsync,启用异步处理②在需要异步处理的方法上使用注解@Async十分方便。但是注意这里的异步方法在本类调用是无效的,所以异

2021-08-14 15:23:03 869

原创 Spring Data JPA 使用JpaSpecificationExecutor实现多条件查询2 in的用法(含于)

之前写过一篇Spring Data JPA 使用JpaSpecificationExecutor实现多条件查询(分页查询和非分页查询),但是筛选条件都是单一的,并不存在包含关系,例如我传ID[1,2,3],希望找到ID是这里面其中一个的所有记录。这时候就需要使用in。示例场景:根据项目名称查询人员,但是人员表中只有一个项目ID,也即,首先需要通过项目名称模糊查询到对应的项目ID列表,再通过这个ID列表去筛选人员。代码:筛选条件方法,使用in:private Specification<User

2021-06-02 20:12:37 1986

原创 记一个内存泄漏问题:Query Plan Cache BoundedConcurrentHashMap占用堆内存

原因是hibernate会缓存sql语句以减少重复编译,便于直接命中提高效率。这个缓存默认最大值为2G,且在使用in时,只要in后面的参数有任何一个不一样的,就会视为不同的语句而保存下来。解决这个问题可以将缓存最大值改小。我看大家都是这样写的:spring: jpa: properties: hibernate: query: plan_cache_max_size: 64 plan_parameter_metadata_

2021-05-18 11:20:52 3107 2

原创 docker 上传镜像

这里以tomcat镜像为例1、把镜像放到k8s主节点任意文件夹下这边我直接用xftp传的,直接放到了/tmp下2、使用docker load –i命令,将镜像加载到本地仓库docker load -i /tmp/tomcat.tar3、加载完毕后用docker images命令查看本地镜像信息docker images4、使用docker tag命令,标记本地镜像,注意标记规则为镜像仓库IP:端口号/项目名称/镜像名docker images能看到加载完毕的镜像名(这里为centos7_to

2021-05-08 17:25:55 4956

原创 linux命令 su和sudo的区别

sudo用于暂时获取超级权限执行命令,例如:sudo chmod -R 777 /xxxsu用于切换用户从root用户切换到普通用户无需密码 直接su username即可但是从普通用户切换到root用户需要输入密码 且需要输入root的密码当然我们也可以用 sudo su root 这样的话就可以只输入普通用户的密码切到root用户了...

2021-05-08 16:53:40 235

原创 Java8新特性 Stream简介 stream().filter和stream().map区别

需要使用Stream,首先要使用.stream()或.parallelStream()将集合生成流,其中最常用的是它的filter和map方法,简单写了下,如下:import java.io.*;import java.util.stream.Collectors;import java.util.List;import java.util.ArrayList;class test { public static void main (String[] args) { List&lt

2021-04-28 16:25:19 14048 2

原创 Java中List的复制 深拷贝和浅拷贝

首先说一下深拷贝和浅拷贝的区别:浅拷贝就是复制出来了一个list,但是它们指向同一地址,所以一旦一个变了,另一个也会跟着改变。深拷贝则不共享地址,不会被对方影响。浅拷贝:深拷贝: List<Integer> oldList = new ArrayList<>();//假设已对oldList赋值 List<Integer> newList = new ArrayList<>(); Collections.addAll(newList, ne

2021-04-27 10:42:59 3248 2

原创 Spring Cloud概念及Feign使用方法简介

文章目录一、集群、分布式和微服务二、服务治理框架:Eureka三、远程调用工具类:RestTemplate一、集群、分布式和微服务仅谈谈自己的理解,可能有不对或者不到位的地方,欢迎指正。集群是指多个服务器通过局域网或其他连接方式进行连接,可以被看作同一台服务器,协同完成工作,来提高性能或可靠性。这些服务器,应该也可以通过同一个ip进行访问。分布式是指一个业务拆成多个子业务,部署在不同的服务器上以提高效率。集群和分布式并不冲突,也有分布式集群,即既将一个大的业务拆成不同的子业务,同一个子业务也可以用

2021-04-06 12:18:24 846

原创 Spring Data JPA实现分页多条件查询2

之前写过一篇博客Spring Data JPA 使用JpaSpecificationExecutor实现多条件查询(分页查询和非分页查询)然后发现还有其他两种写法,会更简便一些。1、使用JPA自带的findByXxx接口示例:default方法在java8以后,接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口中被default标记的方法为普通方法,可以直接写方法体。实现类会继承接口中的default方

2021-04-06 10:44:50 1443 2

原创 JVM简介及Java的垃圾回收机制(GC)

文章目录一、JVM体系结构1、体系结构简介2、类加载器简介一、JVM体系结构1、体系结构简介JVM体系结构含两个子系统:类加载器、执行引擎。两个组件:运行时数据区、本地接口。相互关系如下图(找的网图,侵删)其中运行时数据区当中的方法区和堆是所有线程共享的数据区,虚拟机栈(java栈)、本地方法栈和程序计数器是线程隔离的数据区。2、类加载器简介类加载器负责加载Java类的字节代码到虚拟机中,具体介绍可参考jvm之java类加载机制和类加载器(ClassLoader)的详解...

2020-10-02 14:25:25 168

原创 RabbitMQ简介并在SpringBoot项目中使用RabbitMQ

rabbitMQ是一个开源的消息代理和队列服务器,通过普通协议在完全不同的应用之间共享数据。RabbitMQ使用Erlang语言编写,并基于AMQP协议Erlang语言 数据传输延迟低(利于承载高并发) socket也一样rabbitMQ可以与SpringAMQP完美整合,SpringAMQP框架提供了原生的rabbitMQ api 也提供了丰富的拓展APIrabbitMQ集群模式丰富,表达式配置,HA模式,镜像队列模型AMQP:高级消息队列协议 是一套规范生产者 消费者 虚拟主机 里面的交换机

2020-09-29 16:23:58 813

原创 Spring中Bean的初始函数和消亡函数

文章目录bean的初始和消亡函数1、初始函数:实现 InitializingBean 接口2、初始函数:自定义方法添加 bean 的依赖关系注入之后的行为(此时需要修改xml文件3、单例与多例bean时初始函数的调用时机4、消亡函数:实现DisposableBean接口5、消亡函数:自定义方法添加 bean 销毁之前的行为(此时需要修改xml文件bean的初始和消亡函数1、初始函数:实现 InitializingBean 接口package com.homework.bean;import org

2020-09-08 10:39:12 419

原创 Spring Data Jpa查询全部并排序

1、Repository层只需要简单地extends JpaRepository,依旧不用写任何东西。因为它自己其实有一个findAll(Sort sort)的方法,直接用就可以了。2、Service层中如下List<xxxDO> xxxDOS = xxxRepository.findAll(new Sort(Sort.Direction.ASC,"属性名"));但注意springboot2.2.1及以上的版本Sort的构造方法变为私有,需要像下面这样写:List<xxxDO&g

2020-08-24 11:35:02 4911

原创 Spring Data JPA 使用JpaSpecificationExecutor实现多条件查询(分页查询和非分页查询)

文章目录1、Repository层继承`JpaSpecificationExecutor`2、Service层编写方法设置筛选条件Specification3、在Service层调用刚刚编写的方法和Repository层的方法实现查询①非分页查询②分页查询1、Repository层继承JpaSpecificationExecutor<T>如下:@Repositorypublic interface UserRepository extends JpaRepository<UserD

2020-08-19 15:38:48 1809

原创 SpringBoot中的定时功能——@Scheduled

最近在做一个关于健康码的小demo,需要一个每日上报信息功能,每天第一次登录的时候需要上报自己的健康信息,所以我的想法是用一个字段来标识今天用户是否上报过,如果没有就让前端显示上报页面,因此就涉及到了定时,在每天0点的时候需要把所有用户的那个字段都设为false。其实定时也很简单,如下所示即可,只要程序启动了就可以,也不需要用任何东西去调用下面的程序。不过虽然不需要被调用,它还是需要使用注解@Component,这是为了把它塞到Spring的容器中,所有的操作都是在Spring容器中进行的。packag

2020-08-14 20:35:39 274 1

原创 在SpringBoot项目中使用Spring Data JPA完成简单的登录注册

目录1、Maven依赖及application.properties配置2、实体类(BO)使用@Entity注释3、Repository(dao层)使用@Repository,继承JpaRepository<>4、在UserServiceImpl中进行调用5、UserReqDTO、UserRespDTO和UserRegisterDTO6、UserRestService和UserRestServiceImpl1、Maven依赖及application.properties配置<depen

2020-08-14 20:13:26 955

原创 SpringMVC数据绑定

文章目录简介1、简单数据2、数组3、简单对象4、多级对象5、同属性对象6、集合对象①list对象②Set③Map7、json简介数据绑定是指将界面上的属性绑定到一个对象的某个实例上的某个属性。1、简单数据如果是简单数据,可以使用基本类型或是包装类型进行绑定,如果使用基本类型比如int,则说明这里的key是必须传的,如果不传入数据或传入的数据不是数字,则会报错因此对于可能为空的数据,需要使用包装类型。当然在实际应用中可以通过@RequestParam对是否必须进行配置,设置为@RequestPara

2020-08-05 17:16:21 231

原创 在IDEA中使用SpringBoot创建第一个SSM程序(数据库使用postgresql,jdk版本为11)

文章目录一、写在前面二、安装IDEA并配置Maven三、SpringBoot是做什么的?四、创建一个SpringBoot工程1、通过IDEA的SpringInitializr创建2、通过官网创建五、安装并创建PostgreSQL数据库1、安装地址2、建表3、插入数据及设置主键4、注意事项!非常重要!六、编写application.properties,启动项目七、Mybatis Generator工具1、引入依赖2、mybatis-generator.xml3、自动生成八、测试一、写在前面对于我而言,在

2020-07-31 16:17:47 715 1

原创 成为社畜后的二三事

近来总是失眠。失眠来源于焦虑,就算知道晚睡只会让第二天效率低下,并没有其他任何实际用处,也还是深陷情绪。世上本无事,庸人自扰之。有时候会问自己,来到这里,后悔吗。回答是不后悔的,至少现在并不。当时选offer的时候想的就是想要更大一点的平台,想有更多可能。如果我留在实习的时候在的银行,或许不会接触到什么新的技术,也或许这辈子都跳不出去了。虽然现在公司用的东西我都没有用过,一切都要自学,但是这样也很好,如果有一天不想再接触新的东西了,那或许职业的瓶颈就到了。认识了一些有意思的人。有大学的时候开过火锅店的

2020-07-29 15:27:18 238

原创 HTTP简介

文章目录什么是HTTP协议?HTTP请求过程HTTP报文结构请求报文结构响应报文结构HTTP认证方法长连接与短连接HTTPSHTTPS的加密方法HTTP2与HTTP1.x的区别什么是HTTP协议?HTTP(HyperText Transfer Protocol),即超文本传输协议,最初是为了提供一种发布和接收HTML页面的方法。它使用TCP协议作为自己的传输层,默认情况下使用TCP的80端口,而HTTPS默认使用TCP的443端口。它的特性为①文本协议,②无状态,③无连接。文本协议是相对二进制协议

2020-07-28 14:31:24 1098

原创 Lombok简介

文章目录一、什么是Lombok二、Lombok的使用三、常用Lombok注解四、使用Lombok可能存在的隐患五 、出处一、什么是Lombok通俗地来讲,Lombok就是用注解帮你完成getter、setter、equals等方法编写的工具。当变量发生改变时,也不再需要修改对这些方法进行修改,Lombok会搞定这件事。二、Lombok的使用1、maven依赖引用<dependency> <groupId>org.projectlombok</groupId&g

2020-07-20 16:57:30 940

原创 IDEA中部分依赖包下载失败 提示cannot resolve plugin xxx

注意这里的情况是【部分】失败,所以我可以确定自己的maven配置没有问题,在出现此类情况时先检查maven配置,具体配置方法参考使用IntelliJ IDEA创建Maven项目最后发现是网络原因,即使添加了一个阿里云的国内镜像也可能会出现这种情况,因此方法就是…多添加几个。修改Maven的安装目录config下的settings.xml中mirrors部分:...

2020-07-20 15:24:27 3566

原创 IDEA2020配置Git 实现从GitLab中导入项目

目录下载git 注意版本需在2.9以上在idea中集成gitlab下载git 注意版本需在2.9以上git下载地址下载安装比较容易就不赘述了~按指引一步步来就行安装后打开git bash 设置全局用户名和邮箱设置用户名:git config --global user.name "yourname"设置邮箱:git config --global user.email [email protected]在idea中集成gitlab这篇文章写得已经够清楚了,我就不再做多余的工作

2020-07-17 16:00:06 7306

原创 git入门

是之前准备发的文章,现在其实不记得什么了,把当时的笔记复制在这里~如果后面发现有问题会修改或者完善。帮助:git help打开git bash后:cd到想要的路径git init —— 初始化一个空的git本地仓库。执行之后会在当前目录下自动生成.git隐藏文件夹,该文件夹就是Git版本库。git add xxx(文件名) —— 将该文件添加到暂存区(开始追踪文件)git add . 将当前工作区中所有的的文件修改、文件新增、文件删除添加到暂存区git add -u 将当前工作区中所有的文件修

2020-06-22 01:36:24 144

mPaaS热修复

保存的网页https://www.yuque.com/tutorials/college/hotpatch,作者也不是我,只是存一下免得以后页面消失

2019-04-28

jars-struts2.3

struts2开发所需要的jar包,版本为2.3.24。(已修正datetimepicker乱码问题)

2018-10-18

添加hibernate支持所需要的jar包

添加hibernate支持所需要的jar包,含antlr-2.7.7.jar,dom4j-1.6.1jar,hibernate-commons-annotatlons-4.0.1-Final.jar,hibernate-core-4.2.4.Final.jar,hibernate-jpa-2.0-api-1.0.1.Final.jar,javassist-3.15.0.GA.jar,jboss-logging-3.1.0.GA.jar,jboss-transaction-api_1.1_spec-1.0.0.Final.jar

2018-07-13

空空如也

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

TA关注的人

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