
学习笔记
文章平均质量分 63
学无止步_穷其一生
这个作者很懒,什么都没留下…
展开
-
SpringBoot常用接口--EnvironmentPostProcessor
SpringBoot常用接口–EnvironmentPostProcessor一般用于读取环境变量达到多个微服务共同配置的修改与维护。当我们有多套环境(开发、测试、生产等等)时,每套环境都有专属的配置文件存放于配置中心(以nacos为例),可能存放于不同的配置中心(每个环境有专属的配置中心,服务地址不同),也可能存放于同一nacos的不同命名空间,也或者同一命名空间的不同分组等等。同一套代码在不同环境运行需要不同的配置文件,这时,我们就可以在项目启动时,实现EnvironmentPostProcessor原创 2022-02-22 18:52:55 · 7183 阅读 · 0 评论 -
基于docker容器搭建nacos集群(3节点)
基于docker容器搭建nacos集群(3节点)一、安装前准备1.1、服务器准备Nacos集群搭建需要三个或三个以上的nacos节点才能构成集群,因此至少需要三台服务器资源,本次搭建沿用redis集群搭建和rocketmq集群搭建的三个容器充当三台服务器资源。服务器资源Ip端口10.25.27.116884810.25.27.117884810.25.27.1188848192.168.200.129(宿主机,充当mysql数据库资源机)33061原创 2022-02-14 14:26:25 · 3914 阅读 · 0 评论 -
基于docker容器搭建rocketmq集群(3主三从)
基于docker容器搭建rocketmq集群(3主三从)一、安装前准备1.1、服务器准备本次集群搭建使用docker容器模拟服务器资源,因为要搭建三主三从集群,因此需要准备三个docker容器充当三台服务器资源。本文中的容器使用搭建redis集群的三台容器,本次准备使用三台容器模拟中间件服务器,在三个容器中搭建三个中间件集群,本篇博客为第二个中间件—rocketmq。具体的容器准备(局域网搭建、ip分配、容器环境)见上篇博客基于docker容器搭建redis集群(3主三从)。本次规划上做三主三从,原创 2022-02-10 17:25:37 · 5299 阅读 · 5 评论 -
基于docker容器搭建redis集群(3主三从)
redis集群搭建--三主三从原创 2022-01-28 11:12:48 · 3135 阅读 · 0 评论 -
操作指引-vue
基于vue的首页指引转载 2021-12-09 21:01:09 · 697 阅读 · 0 评论 -
JMeter自定义采样器插件开发
JMeter自定义采样器插件开发目录JMeter自定义采样器插件开发1. 简介2. 需求简介3.成品展示成功展示失败展示4. 准备开发环境4.1 准备pom文件4.2 新建Java的GUI类4.3 准备Java的采样器5. 打包&部署6. 参考文章1. 简介JMeter支持插件机制,只需要将打包好的jar包放到lib/ext/下面,JMeter就会动态的加载符合要求的插件。要扩展UI的话,扩展的Java类的包名必须是.gui.同样的扩展函数的Java类的包名必须是.function.转载 2021-11-08 14:07:56 · 920 阅读 · 0 评论 -
Jmeter报错常见问题
Jmeter报错常见问题响应数据中文乱码修改启动用的JDK用文本工具打开添加下面两句代码set JAVA_HOME=D:\develop\Java\jdk1.8.0_251 # 等号后面是你自己的JDK路径set path=%JAVA_HOME%\bin;%PATH%命令行执行测试计划报错:Module java.activation not foundjdk版本不符合,建议使用jdk1.8Jmeter软件基本操作详见:https://blog.youkuaiyun.com/qq_4075原创 2021-10-29 17:25:44 · 3017 阅读 · 3 评论 -
Jmeter测试软件的基本使用
Jmeter测试软件的基本使用一、下载解压打开下载地址:解压后目录如下:进入bin目录下双击jmeter.bat(windows系统,既然你用Linux,那么你对于启动文件应该知道,这里不做介绍)。有基础的可以使用命令行打开(在该文件夹下打开命令行输入jmeter回车)。打开后界面如下:问题:如果打不开,请检查环境变量中JAVA_HOME是否设置好。建议使用jdk1.8版本的二、使用(一)、可能会用到的基本操作1、修改操作语言习惯用英文的建议用英文,中文翻译不是很完全,但是也能用。原创 2021-10-29 16:16:49 · 501 阅读 · 0 评论 -
Shell脚本语言基础语法
Shell脚本语言基础语法一、基础语法#!/bin/bash# 上面用于指定该脚本的执行程序echo "hello shell" # 输出,相当于printlnnum=10 # 定义变量echo $num # $num 获取num的值unset num # 清除变量numecho $num# 这是注释read numecho $num# read用于从控制台读取数据,-p用于添加提示语read -p "请输入数字" num1echo "输入的数字是:$num1"二、执行方式原创 2021-10-22 14:44:23 · 1422 阅读 · 0 评论 -
redis功能扩展
redis功能扩展一、redis分布式锁package com.wang.redis.plush.metrics;import com.alibaba.fastjson.JSON;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.原创 2021-10-13 11:31:11 · 1357 阅读 · 0 评论 -
使用对象读取yml文件中的属性值
使用对象读取yml文件中的属性值一、在配置类中使用属性配置对象一般用于配置一些第三方组件的初始化,例如redis,mq等,一般这些服务都有自带的属性类,可以直接使用,例如redis的org.springframework.boot.autoconfigure.data.redis.RedisProperties。当导入的依赖中没有自带的属性类或者自带的不满足我们的需要时,就可以自定义属性类。package com.wang.mygateway.serviceportal.configuration.p原创 2021-10-11 16:01:27 · 509 阅读 · 0 评论 -
获取浏览器类型及版本
获取浏览器类型及版本/* * 获取浏览器版本信息 */function getBrowerInfo() { let userAgent = window.navigator.userAgent.toLowerCase() let browserType = '' let browserVersion = '' let isIE = userAgent.match(/msie/) != null || userAgent.match(/trident/) != null转载 2021-10-11 10:37:39 · 417 阅读 · 1 评论 -
SpringBoot---WebMvcConfigurer详解
SpringBoot—WebMvcConfigurer详解目录1. 简介2. WebMvcConfigurer接口2.1 addInterceptors:拦截器2.2 addViewControllers:页面跳转2.3 addResourceHandlers:静态资源2.4 configureDefaultServletHandling:默认静态资源处理器2.5 configureViewResolvers:视图解析器2.6 configureContentNegotiation:配置内转载 2021-10-08 10:33:13 · 961 阅读 · 0 评论 -
this.$refs[‘form‘].resetFields()方法重置表单无效的坑
this.$refs[‘form’].resetFields()方法重置表单无效的坑1、用法不对要想this.$refs[‘form’].resetFields()方法有效,必须配置el-form :model 属性和el-form-item中的prop属性,才可以。注意:this.$refs[‘form’].resetFields()这个做法其实是重置表单到初始值,不是清空表单,当表单第一次在页面中渲染时所用的数据就是初始数据。2、坑1在还没有显示对话框之前就调用this.$refs[‘form原创 2021-09-28 14:27:51 · 14498 阅读 · 4 评论 -
常用接口(二)—组件生命周期接口
三、组件生命周期接口(一)、spring中的Lifecycle接口该接口是是Spring中最基础的生命周期接口,该接口定义了容器启动和停止的方法。方便开发者扩展自己的特定逻辑,比如启动和停止某些后台进程。该接口的实现类的启动和停止需要开发者显示的调用方法。spring底层在执行start和stop方法之前会自动调用isRunning方法来判断是否已经停止或启动,如果已经是期望的状态就不再调用start或stop方法。//代码转载自:https://blog.youkuaiyun.com/bronze5/arti原创 2021-08-25 15:09:04 · 456 阅读 · 0 评论 -
常用条件注解
常用条件注解spring中@Conditional注解基本上所有的延伸类条件注解都是基于该注解进行的扩展。此注解从spring4.0之后开始使用。一般用来限制配置类是否生效或者某个bean是否需要注入。@Conditional的定义//此注解可以标注在类和方法上@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME) @Documentedpublic @interface Condi原创 2021-08-25 08:45:02 · 867 阅读 · 0 评论 -
Redis的Lua脚本总结
Redis的Lua脚本总结在redis操作中有时我们需要多条命令在执行时保证原子性,例如:使用redis做分布式锁时的加锁(判断key是否存在,不存在就set)和解锁(判断key是否存在并等于指定值,符合条件就del)中的查询key和set/del就是两条命令,只是单纯的调用redisTimplate的对应方法,会出现ABA问题,不能保证原性。此时使用Lua脚本就比较合适。//先判断kye是否等于某个值,一般是加锁的客户id,符合就删除key来解锁,不符合就返回0表示删除key失败。可以使用String原创 2021-08-23 17:14:19 · 2533 阅读 · 0 评论 -
springBoot中常用接口的分析
springBoot中常用接口的分析一、应用上下文初始化相关接口ApplicationContextInitializer接口ApplicationContextInitializer,直译过来就是“应用程序上下文初始值设定接口”,在官方文档中描述其作用为“Spring容器刷新前执行的一个回调函数”,如果是对SpringBoot了解较深的老司机一定知道在SpringBoot初始化的时候有两个极为重要的步骤:准备上下文(prepareContext)和刷新上下文(refreshContext),那么Ap转载 2021-08-23 11:22:13 · 965 阅读 · 0 评论 -
vue中监听元素的高度和宽度变化(自定义指令)
vue中监听元素的高度和宽度变化(自定义指令)想根据浏览器变化动态的设置表格的高度达到响应式布局,刚开始是为窗口添加大小监听事件,但是发现在进行浏览器的比例缩放或放大时(ctr+鼠标中建滚动)并不能触发事件,所以想监听页面中某一元素的大小变化来达到效果,但是vue中又没有元素的高度和宽度监听事件。网上收缩了一下发现有vue插件vue-resize-directive-1.2.0,但是开发环境限制不能下插件,所以就使用vue的自定义指令vue自定义指令官方文档写了一个简易版的js插件js文件如下://将原创 2021-08-19 11:19:01 · 6804 阅读 · 6 评论 -
关于CSS中position属性和overflow属性的使用小结
关于CSS中position属性和overflow属性的使用小结position属性用于设置某个元素的位置类型。取值类型可以有:static、relative、absolute、fixed、inherit和sticky,这里sticky是CSS3新发布的一个属性。1、position: staticstatic(没有定位)是position的默认值,元素处于正常的文档流中,会忽略left、top、right、bottom和z-index属性。2、position: relativerelativ原创 2021-08-18 14:31:04 · 3409 阅读 · 0 评论 -
禁止浏览器记住密码和自动填充密码
禁止浏览器记住密码和自动填充密码1、在不输入时设置为只读(已失效,具体情况未验证)<FormItem label="密码" prop="password"> <Input v-model="formData.password" type="password" placeholder="8-16位..." readonly autocomplete="new-password" onfocusin="this.getEl原创 2021-08-17 15:08:14 · 4411 阅读 · 0 评论 -
vue对base64图片进行缩放
vue对base64图片进行缩放描述后台传递来的是base64格式的图片数据,直接显示的话有的图片格式不符合要求,所以在前端接收到后台的响应数据后,需要对图片格式进行处理后再显示。代码<template> <div> <Carousel class="header-boox" v-model="banner" :autoplay-speed="speedS" autoplay loop> <CarouselIt原创 2021-08-11 11:21:14 · 1892 阅读 · 1 评论 -
SpringBoot启动流程分析
SpringBoot启动流程分析一、SpringApplication类加载在执行SpringApplication.run方法之前会先创建SpringApplication对象,也就是执行Spring Application类的构造方法。public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) { //先创建对象,再调用run方法。 return (转载 2021-08-11 10:46:18 · 401 阅读 · 0 评论 -
前端Vue页面之间传递参数
1、使用router对象传递。传参:this.$router.push({name:"下一页面的路由name",params:{参数1:值1,参数2:Json.stringify(对象类型的值)}});或者this.$router.push({path:"/user/${userId}"});接收参数:this.$route.params.参数1或Json.parse(this.$route.params.参数2)或this.$route.params.userId...原创 2021-08-06 16:07:44 · 6448 阅读 · 0 评论 -
Vue插槽小结
Vue插槽小结一、插槽描述插槽用于动态的进行组件的拼接,在使用子组件时再决定使用具体的某些内容来代替子组件里的slot标签。slot标签相当于一个占位符。二、插槽使用1、单个插槽①、子组件模板定义<my-div> <slot>默认值,当没有提供替代内容时显示此内容。</slot></my-div>②、使用子组件<my-div> <span>代替内容,将使用该内容替代定义的插槽标签。</span>原创 2021-08-06 15:32:31 · 142 阅读 · 0 评论 -
vue中控制字符显示数量,超过部分用省略号代替
效果图:1、输入汉字2、输入数字或英文3、汉字数字混合完整代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta txt="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content=原创 2021-08-02 13:52:26 · 2587 阅读 · 0 评论 -
关于Dubbo的mock降级
一、使用添加@DubboReference(timeout = 1000,check = false,mock = “fail:return null”)。mock取值:1.return null 无论是否有服务,都返回null,用于在临时屏蔽某个不重要的服务达到缓解服务器压力的效果。2.fail:return null 有服务可用时,返回调用结果,没有服务可用时返回null。3. true或者降级替代类的全限定类名。当有服务可用时,返回调用结果,没有服务可用时,调用降级替代类对应的方法。注意,原创 2021-07-23 17:12:25 · 618 阅读 · 0 评论 -
Oracle账号
账号:2696671285@qq.com密码:Oracle123供大家学习使用,希望不要改密码。原创 2021-07-23 10:58:03 · 164 阅读 · 0 评论 -
seata分布式事务的异常
1、异常报告:Could not register branch into global session xid =xxx.xxx.xx.xxx status = Rollbacked2、异常原因: while expecting Begin # 描述:分支事务注册时,全局事务状态需是一阶段状态begin,非begin不允许注册。属于seata框架层面正常的处理,用户可以从自身业务层面解决。3、出现场景: 1. 分支事务是异步,全局事务无法感知它的执行进度,全局事务已进入二阶段,该异...原创 2021-04-19 19:04:09 · 5162 阅读 · 2 评论 -
seata本地事务失效
注意:本事务失效是Seata的分布式事务控制已经有作用的情况下,远程事务能回滚,但是本地事务不能回滚的情况。1、问题描述 使用seata做了分布式事务控制,在本地事务A上添加了全局事务注解,在手动制造异常进行测试时,远程的两个分支事务能正常回滚,但是本地事务没有正常回滚。2、问题查找 在异常之前打了断点,然后在没有执行回滚之前查看数据库中的undo-log表的事务回滚的前置镜像数据,发现在回滚的条目字段中的一个tinyint类型的值有问题,本来存的是1,但是前置镜像中自动映射的却是tru..原创 2021-04-15 20:15:43 · 1468 阅读 · 7 评论 -
@Transactional事务失效
1、前提: 在一个类中有方法A和方法B里面都有对数据库的增删改操作,在方法A上添加了@Transactional,并且在方法A中调用了方法B,但是方法B上没有添加@Transactional注解。2、事务失效: 当方法A在调用方法B之后的代码(或方法B操作数据库之后的代码),出现了异常,期望的结果是方法A和方法B中的数据库操作都会回滚,但是实际情况只有方法A中的数据库操作有回滚,方法B中的数据库操作并未回滚,出现了事务失效。3、原因 spring在对@Transacti...原创 2021-04-15 19:59:36 · 472 阅读 · 0 评论 -
分布式锁的原理和实现
四种分布式锁redis原生分布式锁。/**没有对于锁失效和锁续命进行解决,需要的可以根据下面的说明和思路,自行解决。*/@Override public boolean deduckStore(Long goodId, Integer num) { String key = "goods:deduck:" + goodId; //setIfAbsent 对应redis原生的setnx //锁失效 //锁续命 ttl 30 10原创 2021-03-20 14:51:54 · 284 阅读 · 0 评论 -
RedissonList not implaments 序列化的问题
redisson中缓存不能再次存入的问题今天使用redisson从缓存中取出一个list集合List A后,放入另一个list集合List B,把第二个list集合List B再次存入缓存时发现报RedissonList没有序列化错误,经过debug查看后发现从缓存中取出的list集合List A的真实类型是RedissonList,当把第二个list(List B)放入缓存时,因为List B中有List A,但是List A的真实类型是RedissonList,没有实现序列化接口,所以报Redisso原创 2021-03-10 18:07:30 · 326 阅读 · 0 评论 -
redis常见问题分析及解决
redis常见问题分析及解决思路缓存原理redis读取的是内存,所以读取效率远大于mysql,并且redis支持大量的并发请求,所以我们一般使用redis作为业务层和数据库之间的缓存,用于缓存,经常查询并且增删改较少的数据。当业务需要查询数据库数据时,不直接查询数据库,而是查询redis缓存,如果redis中有需要的数据,就直接通过controller返回给浏览器从redis中查询的数据,如果redis中没有就查询数据库。如果数据库中有数据,将数据放到redis中一份,然后将查询到的数据返回给浏览器原创 2021-03-06 21:42:39 · 772 阅读 · 0 评论 -
Collection集合、Iterator接口(迭代器)、泛型
集合1、数组的缺陷:长度不可变,只能存储一种类型的数据。2、集合:长度可变,存储的是对象,可以存储不同类型的数据。 Collection集合1、所有集合的父类接口,根据集合类型不同又分为两个子接口list接口和set接口,每个子接口下有多个实现类集合。2、常用方法: Boolean add(E e);向集合中添加元素。 Boolean remove(E e);删除集合中的某个元素。 void clear(...原创 2020-10-10 21:55:56 · 159 阅读 · 0 评论 -
Object类、常用API(包装类、Date类、StringBuilder类、Calendar类)
Object类1、object类是Java语言中的根类,所有类都实现了该类中的方法,该类中共有11个方法。2、object中的toString方法:返回该对象的字符串提示(默认打印地址值),在子方法中可以覆盖重写。在idea中可以使用快捷键alt+insert键选择toStrng系统会自动生成。3、object中的equals方法:比较两个对象(默认比较地址值)是否相等,返回布尔值。在子类对象中可以对该方法进行重写,使用自己想要的比较方法(例如:比较对象的属性值是否相等)。Date类1、原创 2020-10-08 21:13:27 · 111 阅读 · 0 评论 -
final关键字、内部类、四种权限修饰符
Final关键字1、fianl修饰一个类:格式:public final class 类名称{//},这个类不能有任何的子类。2、final修饰一个方法:格式:public final 返回值类型 方法名称(参数列表){//方法体},该方法不能被子类覆盖重写。对于类和方法来说abstract和final不能同时使用,因为矛盾。3、final修饰一个局部变量:格式:final 数据类型 变量名 =...原创 2020-10-06 21:53:37 · 304 阅读 · 0 评论 -
接口、多态个人小结
接口1、接口是一种公共的规范标准,只要符合标准,就可以大家通用。2、定义接口的格式:public interface 接口名{//接口内容}3、接口中可以包含的方法: Java7:常量、抽象方法 Java8:默认方法、静态方法 Java9:私有方法。4、接口中的抽象方法,修饰符必须是public abstract,这两个修饰符可以...原创 2020-10-05 17:15:21 · 251 阅读 · 0 评论 -
继承、抽象个人小结
继承1、面向对象的三大特征:封装、继承、多态。2、继承是多态的前提,没有继承就没有多态。3、子类有父类的属性与方法,并且可以添加自己的属性与方法。4、定义格式:public class 子类名 extends 父类名{}5、当父类和子类中的成员变量和方法重名时: 直接通过子类对象访问时:创建对象时=号左边是谁就是谁,没有的话向上找。 间接通过成员方...原创 2020-10-05 17:12:24 · 957 阅读 · 0 评论 -
static关键字、arrays工具类、Math工具类
Static关键字1、对于同一个类型的多个对象都具有的相同属性,可以通过在定义类时使用static关键字修饰该属性。以达到所有对象共享同一个数据的目的。2、使用static修饰的成员方法就是静态方法,该方法不属于对象,而是属于类,可以通过类名.方法名();的方式来调用。也可以通过对象.方法名的方式调用,但是这种写法在编译之后也会被javac翻译成为类名.方法名的格式。3 、静...原创 2020-10-05 17:06:01 · 173 阅读 · 0 评论