自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 GitLab设置pipeline超时时间

gitlab设置pipeline超时时间

2022-07-22 16:02:33 2010 1

原创 在自己的服务器上搭建一个GitLab

在自己的服务器上搭建一个gitLab一、简介二、步骤1.安装SSH2.防火墙开启http3.安装Postfix邮件服务4.安装GitLab一、简介  服务器采用的是腾讯的2核4GB的轻量型应用服务器,操作系统镜像CentOS7.6。二、步骤1.安装SSHsudo yum install -y curl policycoreutils-python openssh-server# 将SSH服务设置成开机自启动sudo systemctl enable sshd# 启动SSH服务sudo

2022-04-05 18:07:39 3311

原创 ThreadLocal是什么?子线程能否获取到父线程ThreadLocal变量中的值?

ThreadLocal是什么?子线程能否获取到父线程ThreadLocal变量中的值?一、ThreadLocal简介二、数据结构三、过期key的数据清理方式四、子线程能否获取到父线程ThreadLocal变量中的值一、ThreadLocal简介  ThreadLocal 是一个本地线程副本变量工具类,在每个线程中都创建了一个 ThreadLocalMap 对象,简单说 ThreadLocal 就是一种以空间换时间的做法,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。通过这

2021-09-07 23:42:36 1781

原创 synchronized与volatile的作用与区别

synchronized与volatile的作用与区别一、synchronized关键字二、volatile关键字三、区别一、synchronized关键字  synchronized是关键字,用synchronize修饰表示这个方法或代码块为同步的,在运行过程中会上同步锁。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。synchronized 关键字的底层原理synchronized 同步

2021-09-05 21:47:44 395

原创 JVM中的垃圾收集算法

JVM中的垃圾收集算法  JVM在进行垃圾回收前会首先判断哪些对象需要被回收,判断对象是否存活有两种算法,如下:引用计数算法  基本思想是在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。缺点:  很难解决对象之间相互循环引用的问题。可达性分析算法  这个算法的基本思路就是通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称

2021-09-04 16:43:25 115 1

原创 Java虚拟机中对象创建的流程

Java虚拟机中对象创建的流程  当我们new一个对象时,如:Person p = new Person();Java虚拟机会进行如下的操作。第一步:当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程第二步:在类加载检查通过后,接下来虚拟机将为新生对象分配内存。如果Java堆中内存是绝对规整的就采用指针碰撞的方式分配,否则采用空闲列表的方式分配。

2021-09-03 20:59:15 227

原创 JVM内存模型

JVM内存模型Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如上图所示。虚拟机栈Java虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、态连接、方法出口等信息。本地方法栈为虚拟机使用到的本地(Native)方法服务。程序计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在

2021-08-31 00:18:32 93

原创 sql刷题总结二(取整函数、CASE WHEN用法、截取字符串)

sql刷题总结二(向上取整、向下取整、case when用法)一、取整函数二、case when三、截取字符串一、取整函数二、case when三、截取字符串

2021-08-21 00:03:32 961

原创 leetcode岛屿的最大面积(深度优先搜索)

leetcode岛屿的最大面积(深度优先搜索)问题描述:  给定一个包含了一些 0 和 1 的非空二维数组 grid 。  一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。  找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],

2021-08-19 00:21:27 249

原创 leetcode图像渲染(深度优先搜索)

leetcode图像渲染(深度优先搜索)问题描述:  有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。  给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。  为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有

2021-08-19 00:16:28 184

原创 leetcode字符串的排列(滑动窗口)

leetcode字符串的排列(滑动窗口)问题描述:  给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,s1 的排列之一是 s2 的 子串 。示例:输入:s1 = “ab” s2 = “eidbaooo”输出:true解释:s2 包含 s1 的排列之一 (“ba”).代码:class Solution { public boolean checkInclusion(String s1, String s2) { int n

2021-08-18 00:31:55 168

原创 leetcode无重复字符的最长子串问题(滑动窗口)

leetcode无重复字符的最长子串问题(滑动窗口)问题描述:  给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。代码:class Solution { public int lengthOfLongestSubstring(String s) { if(s.length()==0) return 0; //

2021-08-18 00:20:35 166

原创 Java中的强引用、软引用、弱引用、虚引用

Java中的强引用、软引用、弱引用、虚引用一、强引用二、软引用三、弱引用四、虚引用  在JDK 1.2版之后,Java对引用的概念进行了扩充,将引用分为强引用(Strongly Re-ference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种,这4种引用强度依次逐渐减弱。一、强引用  强引用是最传统的引用,类似Object object = new Object();这种引用关系。只要强引用关系还存在,垃圾收集器(

2021-08-15 22:53:47 803

原创 sql刷题总结一(创建表、创建视图、创建索引、在已存在的表中新建一列)

sql刷题总结一(创建表、创建视图、索引操作、在已存在的表中新建一列)一、创建表1、常规创建2、复制表格3、将表1的部分拿来创建表2二、创建视图三、创建索引四、在已存在的表中新建一列一、创建表1、常规创建  创建一个student表(id、name、age)CREATE TABLE IF NOT EXISTS student ( id BIGINT ( 11 ) PRIMARY KEY, name VARCHAR ( 20 ) NOT NULL, age INT ( 3 ) NOT NULL

2021-08-15 19:47:04 1210

原创 Java中的反射和代理

Java中的反射和代理一、反射1、概念2、反射的使用二、代理1、概念2、静态代理实现示例3、JDK动态代理实现示例3、CGLib动态代理实现示例一、反射1、概念  能够分析类能力的程序称为反射。就是在运行状态中,对任意一个类,能知道这个类的所有方法和属性,对于任意一个对象来说,都能调用他的任意一个方法和属性。这就是Java语言的反射机制,主要就是增加程序的灵活性。2、反射的使用  (1)反射获取类信息的三种方式// 方式一: 类名.classClass c1 = Person.class;/

2021-08-14 01:32:27 534

原创 Java中方法的参数传递

Java中方法的参数传递一、示例1、构建Person类2、编写demo测试类二、分析1、执行结果  在Java中,所有的参数传递方式都是值传递。下面通过例子来简单的说明一下。一、示例1、构建Person类public class Person { private String name; private Integer age; public String getName() { return name; } public void set

2021-08-12 22:37:26 421

原创 腾讯云服务器添加防火墙开放端口、重启防火墙、查看防火墙开放端口命令

腾讯云服务器添加防火墙开放端口、重启防火墙、查看防火墙开放端口命令添加防火墙开放端口(这里以添加8080端口为例)firewall-cmd --zone=public --add-port=8080/tcp --permanent重启防火墙firewall-cmd --reload查看防火墙开放端口firewall-cmd --list-all...

2021-08-11 00:18:33 2218

原创 idea远程debug调试部署在服务器tomcat上的项目

idea远程debug调试部署在服务器tomcat上的项目一、IDEA添加Remote二、服务器配置三、开始debug调试  本机场景:spring boot项目部署在腾讯云服务器的tomcat里。注意:要保证本地的代码与服务器上部署的代码完全一致一、IDEA添加Remote  第一步:打开IDEA上方的Edit Configurations  第二步:点击+号选择Remote  第三步:配置连接参数,这里我用的监听端口为10001,可以自定义,配置完点击ok即可。二、服务器配置  第一步

2021-08-11 00:15:12 879 4

原创 mybatis中的#占位符和$拼接符的区别

mybatis中的#占位符和$拼接符的区别一、sql注入1、什么是sql注入2、sql注入示例二、#占位符和$拼接符的区别三、mybatis如何防止sql注入四、总结  为更好地解释mybatis中的#占位符和$拼接符的区别,这里对sql注入做一个简单说明。一、sql注入1、什么是sql注入  SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。2、sql注入示例  首先定义一个sql字符串,来

2021-08-10 23:11:50 892

原创 前后端分离项目的跨域问题及解决办法

前后端分离项目的跨域问题及解决办法一、跨域简述1、问题描述2、什么是跨域3、出现跨域问题的原因二、解决办法1、第一种解决办法:后端配置跨域(spring boot设置方式)2、第二种解决办法:前端配置代理(vue项目)一、跨域简述1、问题描述  这里前端vue项目的端口号为9000,后端springboot项目的端口号为80802、什么是跨域  当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域当前页面url被请求页面url是否跨域原因htt

2021-08-10 12:36:12 11560 1

原创 80端口被pid=4占用究极解决方案

80端口被pid=4占用究极解决方案一、一般情况二、特殊情况一、一般情况1、Win+R键输入cmd打开命令提示符,输入netstat -a -n -o发现80端口被pid=4的进程占用2、再Win+R键输入regedit打开注册表,按照下图找到HTTP下的start3、将start的值改为0,重启电脑生效二、特殊情况如果前面的方法用过后,重启计算机仍显示80端口被占用,请用下面这个究极解决办法1、Win+R键输入cmd打开命令提示符,输入netsh http show services

2021-08-09 18:33:54 3534

原创 spring boot项目部署到tomcat中访问接口报404错误

spring boot项目部署到tomcat中访问接口报404错误springboot项目本地测试完成后,打成war包放到服务器的tomcat里进行测试,却出现了访问404的情况。于是把项目war包先放到本地的tomcat里来找错误。把启动日志往上翻找发现有一处报错,com/fasterxml/jackson/databind/exc/InvalidDefinitionException这个问题有可能是jar包版本冲突或者找不到jar包,但是在pom.xml中确实引入了jar包,那么就是jar包

2021-08-09 18:06:39 2234

原创 @Autowire、@Resource、@Qualifier的区别

@Autowire、@Resource、@Qualifier的区别一、简单说明@Autowire@Resource@Qualifier二、场景示例1、场景一(接口只有一个实现类)2、场景二(接口有多个实现类)一、简单说明这三个注解的作用都是用来注入依赖对象@Autowire@Autowired 接口只能有一个实现类,通过byType方式注入默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false

2021-08-09 17:18:35 989

原创 spring boot项目基于redis集成Spring Cache实现缓存

spring boot项目基于redis集成Spring Cache实现缓存一、环境1、运行环境二、编写缓存配置类三、简单使用1、@Cacheable2、@CacheEvict一、环境1、运行环境目前场景是springboot项目集成了redis,如果还没有集成redis,建议浏览下面两篇文章腾讯云服务器安装redisspring boot项目集成redis2、添加依赖<!-- spring cache --><dependency> <gr

2021-08-08 23:34:55 392

原创 redis结合切面实现重复提交验证

redis结合切面实现重复提交验证一、环境1、运行环境2、添加切面依赖二、编写注解类三、编写切面类四、编写Controller五、测试1、请求Controller接口(3秒内重复请求)2、日志打印一、环境1、运行环境目前场景是springboot项目集成了redis,如果还没有集成redis,建议浏览下面两篇文章腾讯云服务器安装redisspring boot项目集成redis2、添加切面依赖<!--spring aop--><dependency> <

2021-08-08 22:48:55 353 1

原创 spring boot项目集成redis

spring boot项目集成redis一、Maven依赖1、本项目springboot的版本2、redis相关依赖二、配置application.yml三、编写redis配置类1、首先看springboot的源码,提供了一个redis配置类2、编写RedisTemplate配置类四、编写redis工具类一、Maven依赖1、本项目springboot的版本<parent> <groupId>org.springframework.boot</groupId&gt

2021-08-08 21:00:04 257

原创 腾讯云服务器安装redis

腾讯云服务器安装redis一、下载安装redis二、修改配置实现redis后台运行、远程连接访问一、下载安装redis1、使用wget http://download.redis.io/releases/redis-5.0.5.tar.gz下载redis2、tar -zxvf redis-5.0.5.tar.gz解压安装包3、进入解压后的文件目录使用make命令进行编译4、进入src文件执行make install安装redis5、在src目录执行./redis-server ../re

2021-08-08 11:09:16 1901

原创 spring boot项目实现excel的导入导出

spring boot项目实现excel的导入导出一、添加依赖二、导出excel1、编写实体类,添加注解2、编写Controller三、导入excel编写Controller四、@Excel注解的属性本文采用的是EasyPOI操作Excel一、添加依赖<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId&g

2021-08-08 09:50:53 715 2

原创 A bean with that name has already been defined in class path resource(bean名字重复报错解决)

A bean with that name has already been defined in class path resource(bean名字重复报错解决)报错信息The bean 'jsonCustomizer', defined in class path resource [com/study/learn/test/config/WebMvcConfig.class], could not be registered. A bean with that name has alread

2021-08-07 23:47:27 9569

原创 ajax请求中的async属性

ajax请求中的async属性在使用ajax请求后台数据赋值给变量时经常会遇到明明请求成功拿到数据了,其他方法使用该变量时却没有值。这是因为上一个请求还没来得及给该变量赋值,就被下一个方法使用了,导致拿不到值。这时,可以通过ajax请求中的async属性来设置同步请求和异步请求async. 默认是true,即为异步方式,.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发.ajax执行后,会继续执行a

2021-07-13 23:22:24 10835

原创 在后台将前台传来的string类型的json字符串转换为对象类型的数据

在后台将前台传来的string类型的json字符串转换为对象类型的数据示例:示例:@RequestMapping("/updateBatchUsers") @ResponseBody public Msg updateBatchUsers(String userList) { log.info("updateBatchUsers入参 {}",userList); //将字符串转换成json对象 JSONArray jsonArray = J

2021-07-13 23:15:14 1010

原创 spring boot项目时间类型转换全局配置(localDate和localDateTime)

spring boot项目时间类型转换全局配置(localDate和localDateTime)使用全局时间参数配置可以省去在每个时间字段上加上@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")或@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")注解全局时间参数入参转换类/** * @description 自定义时间参数入参转换类 * @author zzy * @da

2021-07-13 22:59:37 2457

原创 layui表格对后台接口中传回的数字转换为汉字进行显示(性别、角色等)

layui表格对后台接口中传回的数字转换为汉字进行显示在layui表格中,可以使用templet格式化数据语法templet: function (data) { }例子{field: 'sex', title: '性别', width: 90, edit: 'text', templet: function (data) { return data.sex == 0 ? '男':'女'; }}{field: 'role', title: '角色', width: 60, edit:

2021-07-13 22:51:43 1571

原创 layui动态显示/隐藏表格中的操作按钮(对操作按钮进行花样显示)

layui动态显示/隐藏表格中的操作按钮在layui中我们可能会有需要在执行完某一操作后使操作框变得不可选或者显示其他内容来进一步操作。例如:这时我们就需要利用到layui中的一些语法<script type="text/html" id="对应操作栏的id"> {{# if(条件){ }} <a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="事件名称">显示操作名称</a>

2021-07-13 22:40:04 6007

原创 mybatis插入数据主键回填

mybatis插入数据主键回填在项目中,集成mybatis进行数据库操作,往往在插入数据时并不输入id值,那么,我们如何不经过查询就得到刚刚插入数据的id值呢?在xml中写sql语句时有这样一条属性:主键回填useGeneratedKeys="true" keyProperty="id",下面请看示例:<insert id="insertOne" parameterType="com.test.easy.demo.entity.Student" useGeneratedKeys="true"

2021-07-13 21:51:47 578

原创 将spring boot项目打成war包部署到服务器

将spring boot项目部署到服务器一、在idea中将spring boot项目打包默认打jar包,需要配置pom.xml文件来更改打包类型<!--修改默认打包类型,为:war包--> <packaging>war</packaging>修改启动类@SpringBootApplicationpublic class DemoApplication extends SpringBootServletInitializer { pu

2021-07-13 21:18:12 719

原创 实现layui中每次切换页面时刷新页面(tab页面)

实现layui中每次切换页面时刷新页面(tab页面)在html中找到tabChange方法,加上下面这部分代码即可实现每次切换tab页面时刷新页面(重新载入)tabChange: function (id) { //切换到指定Tab项 element.tabChange('demo', id); //根据传入的id传入到指定的tab项 //每次切换tab页面时刷新页面 var othis = $('.layui-tab-title').find('>li[lay-id="' + id

2021-07-08 15:14:40 4863

原创 mysql中插入数据时设置id重新从1开始自增

mysql中插入数据时设置id重新从1开始自增很多时候我们会在测试数据库的增删改查时,会增删数据,导致id变得不连续,想要id重新从1开始生成。首先删除该表中的所有数据新建查询,执行如下的sql语句,再插入数据时id就会从1开始了ALTER TABLE 表名 AUTO_INCREMENT = 1;...

2021-07-08 11:40:05 2484 1

原创 调用mybatis plus中的方法在数据库中插入一条数据时自动生成id规则的配置

调用mybatis plus中的方法在数据库中插入一条数据时自动生成id策略的配置在application.yml配置文件中配置,可以看到有多种id生成规则各种类型的解释id-typedescriptionauto数据库自增;注意:数据库中也要设置自增;assign_id该策略会使用雪花算法自动生成主键id,主键类型为Long或字符串;该策略使用接口IdentifierGenerator的方法nextId(以实现类为DefaultIdentifierGenerato

2021-07-08 11:20:10 1485 1

原创 spring boot 项目 前台向后台传递时间参数,插入到数据库中时间会少一天

spring boot 项目 前台向后台传递时间参数,插入到数据库中时间会少一天分析:解决办法分析:经过测试,时间从前台传到后台数据是一样的,说明是后台向数据库传递过程中出现了问题解决办法在自己的application.yml文件中将数据库配置中的时区更改为serverTimezone=GMT%2B8,也就是GMT+8时区url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&ser

2021-07-08 09:24:55 905

空空如也

空空如也

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

TA关注的人

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