- 博客(72)
- 收藏
- 关注
原创 vuex基本概念
一直以为项目里面的store是js的什么高级用法,今天看了一下原来是个插件下面是官方文档的总结vuex的核心是store,包含着应用中大部分的状态1、Vuex的状态存储是响应式的,当VUE组件从store中读取状态的时候,若store中的状态发生变化,相应的组件也会得到高效的更新2、不能直接改变store中的状态,除了commit通过store.state获取状态对象,commit触发状态变更通过this.$store访问实例。
2024-08-12 09:39:59
205
1
原创 地图项目涉及知识点总结
这次项目,对我的各方面能力都是一次挑战,最难绷的还是各种数据的变换算不明白了,哎,真是菜的离谱不管怎么样,还得勤学苦练,好好努力啊。
2024-07-18 20:57:03
996
原创 spring @retryable不生效的一种场景
项目中某个位置要调用其它部门的接口,一直有问题,对方让加重试。使用@Retryable之后发现并没有进行重试,之前其它接口都正常重试了。在某个方法中调用另一个带retryable的方法时,如果这个retry方法在同一个类中,不会进行重试。经过研究发现了这个方法是直接写在调用的类里面的,这种情况重试竟然不会进行。执行methodA 不会重试。
2024-07-17 11:02:46
209
原创 restTemplate使用总结
getForEntity没法直接携带header。实际使用时可以生成不同的factory。(4)接收的类带泛型。
2024-06-27 21:18:20
152
原创 Sentinel基础知识
alibaba的熔断器组件,用于服务熔断降级微服务时代,各个微服务之间相互调用,如果有单个服务出现问题,整个服务可能会出现雪崩sentinel中的基本概念1、资源资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。2、规则。
2024-05-19 11:59:31
485
原创 Ribbon基础知识
负载均衡器通常有两种:服务端负载均衡和客户端负载均衡ribbon是客户端负载均衡器,即从客户端发出的时候就已经选择好了去哪个服务像nginx就是服务端负载均衡,客户端请求的时候并不知道要去哪个服务Ribbon是spring cloud中非常重要的基础框架,Fegin、OpenFegin已经nacos的负载均衡也都是用Ribbon框架实现的客户端负载均衡的前提是拥有一个注册中心,比如nacos、eureka客户端负载均衡器通过注册中心获得服务端的服务名称、ip端口号等等,再发送http请求。
2024-05-17 16:46:16
370
原创 redisson分布式锁中waittime的设置
之前分布式锁中使用redisson的lock.tryLock(0,0,TimeUnit.SECONDS)这里的time直接就取的传入的waitTime,当time减少到小于0时,返回加锁失败!这么做的逻辑是releaseTime设置为0,实际上会使用默认的30s并触发看门狗机制。所以waitTime是没有什么默认值的,这么写相当于加锁失败立刻返回。设置为0实际会等待多少时间?实验一下,先加一个不会过期的锁,然后另一个线程试图获取锁。如果设置为0,在尝试获取不到锁后立刻就会返回失败。
2024-05-06 12:28:31
507
原创 常用正则匹配
^]: 匹配括号内的字符意外的任意一个字符 如 [^ abc]匹配abc之外的任意字符。[a-zA-Z0-9_-]匹配的字符为小写字母 大写字母 数字 下划线 连接符中的一种。^ $ \b \B等用于匹配字符串的开头、结尾或单词边界位置。方括号[]包围的字符集合,用于匹配方括号内的任意一个字符。{n} {n,} {n,m} 指定匹配的次数或范围。{n,m}:匹配前面的模式至少n次且不超过m次。\d \w \s等 用于匹配特定类型的字符。{n,}:匹配前面的模式至少n次。{n}:匹配前面的模式恰好n次。
2024-04-25 14:52:13
224
原创 近期常用linux命令总结
mv [options] source dest : 移动文件。ps -ef | grep 进程关键字: 查找指定进程。cp [options] source : 复制文件。拉取某个镜像,不指定版本即为latest版本。创建一个新的容器(container)(-e 显示所有进程 -f 全格式)ps -a: 列出所有进程。显示所有容器,包括未运行的。
2024-03-21 09:12:47
177
原创 rundeck k8s部署踩坑
rundeck代码bug,在/home/rundeck/server/config被挂载到持久卷的情况下无法创建realm.properties,导致无法登录。需要修改docker中的remco模板,rundeck的源码中在启动时根据remco中的模板文件生成配置文件。注意:必须生成rsa开头的key,由于我们使用的是老版本的rundeck,因此需要老版本的密钥文件才能识别。参考:https://github.com/rundeck/rundeck/issues/6471。
2024-03-20 17:26:30
495
原创 java 单例模式
getInstance方法返回的始终是静态对象INSTANCE,当这个方法被调用时,SingleTonHolder才在SingleTon的运行时常量池里,把符号引用替换成了直接引用,这时才真正创建了静态对象INSTANCE。即一个类负责创建自己的对象,同时确保只有单个对象被创建,提供一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。由于只有在很少的情况下会出现需要同步的情况,所以先通过singleton == null 减少进入的概率,然后使用一个类锁保证线程安全。1、懒汉式,线程不安全。
2024-02-19 18:07:09
529
原创 java小知识
当我们对一个String类进行操作时,比如重新赋值,这时已经得到了一个新的对象而不是修改了原对象的value。这个value由private final修饰,且不提供修改的方法,因此它的值是不可变的。/META-INF/MANIFEST.MF决定了jar的主类。在String类的内部,存储字符变量的是一个char数组。在maven打包时,会自动生成这个文件。
2024-02-18 11:41:21
214
原创 JVM常用参数
将新对象预留在新生代,由于 Full GC 的成本远高于 Minor GC,因此尽可能将对象分配在新生代是明智的做法,实际项目中根据 GC日志分析新生代空间大小分配是否合理,适当通过“-Xmn”命令调节新生代大小,最大限度降低新对象直接进入老年代的情况。HeapDumpOnOutOfMemoryError: JVM在遇到OOM时将heap转储到物理文件中。UseGCOverheadLimit :限制在抛出OOM错误之前在GC中花费的VM时间的比例。关于GC调优 很重要的一条经验是。指定最小和最大堆大小。
2023-06-10 17:25:41
167
原创 java类加载过程
每个ClassLoader实例都有一个相关的父类加载器,ClassLoader实例会在试图亲自查找类或者资源之前,将搜索类或资源的任务委托给其父类加载器。3、在内存中生成一个代表该类的Class对象,作为方法区这些数据的访问入口。直接引用是可以直接指向目标的指针、相对偏移量或是一个能间接定位到目标的句柄。加载规则:先判断该类是否被加载过,已经加载的类直接返回。初始化阶段是执行初始化方法的过程,是类加载的最后一步。虚拟机将常量池的符号引用替换为直接引用的过程。双亲委派模型的好处:避免类的重复加载。
2023-06-10 15:47:39
712
原创 JVM相关知识点
程序计数器:记录当前线程执行的位置 当线程切换后能够知道该线程上次运行到哪了java虚拟机栈:方法调用的数据通过栈进行传递,每次方法调用都会有一个对应的栈帧被压入栈中,每一个方法调用结束后,会有一个栈帧被弹出栈由一个个栈帧组成,每个栈帧包括:局部变量表、操作数栈、动态连接、方法返回地址局部变量表:主要存放了编译器可知的各种数据类型、对象引用操作数栈:主要作为方法调用中的中转站使用,用于存放方法执行过程中产生的中间计算结果。另外,计算过程中产生的临时变量也会放在操作数栈中。
2023-05-09 20:45:44
481
原创 【效率提升】补充
javaIDEA快捷键补充复制 ctrl+D全局搜索替换 ctrl+shift+R打开剪贴板 ctrl+shift+V块注释 ctrl+shift +/快捷方法定义类生成模板 File>setting>deitor>file and code Templates插件CodeGlanceRainbow Brackets括号颜色不同TranslationMaven Helper分析pom文件GsonFormat可根据json数据快速生成java实体类
2022-04-05 10:10:08
214
原创 Java笔记(十一):函数式编程
Lambda我们在写一个数组的排序时,一般这样写String[] array = ...Arrays.sort(array, new Comparator<String>() { public int compare(String s1, String s2) { return s1.compareTo(s2); }});Comparator是以匿名类的方式编写的如果使用Lambda,可以这样写import java.util.Arrays;pu
2021-09-24 18:30:25
102
原创 Java笔记(十):JDBC
JDBC指Java DataBase Connectivity它是Java程序访问数据库的标准接口JDBC连接Connection代表一个JDBC连接MySQL的URL是jdbc:mysql://<hostname>:<port>/<db>?key1=value1&key2=value2首先我们设置url 用户名 密码String JDBC_URL = "jdbc:mysql://localhost:3306/test";String JDBC_
2021-09-24 17:42:14
124
原创 Java笔记(九):AOP
AOP是指Aspect Oriented Programming 面向切面编程AOP本质上就是动态代理 将一些常用功能从每个业务方法中剥离出来写法如下首先引入依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</
2021-09-24 12:17:02
91
原创 Java笔记(八):spring IoC
IoC容器容器是一种为某种特定组件的运行提供必要支持的一个软件环境 IoC指的是Inversion of Control组件在IoC容器中被装配出来需要某种“注入”机制比如某个组件需要datasource 它自己并不会去创建datasource 而是等待外部去注入datasource这样不同的组件就可以实现资源的共享 另一个组件同样可以注入datasource依赖注入方法1 set函数public class BookService { private DataSource dataSo
2021-09-23 20:44:49
126
原创 java笔记(七):web相关
HTTP请求和响应浏览器请求页面的流程如下1、与服务器建立TCP连接;2、发送HTTP请求;3、收取HTTP响应,渲染页面;例如浏览器发送的HTTP请求GET / HTTP/1.1Host: www.sina.com.cnUser-Agent: Mozilla/5.0 xxxAccept: */*Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8Host:域名User-Agent:客户端标识Accept:浏览器接受的资源类型Accept-La
2021-09-23 17:20:28
93
原创 java笔记(六):日期和时间
获取当前时间戳System.currentTimeMillis()老APIDate在java.util中Date date = new Date();System.out.println(date.getYear() + 1900);System.out.println(date.getMonth() + 1);System.out.println(date.getDate());自定义格式输出import java.text.*;import java.util.*;public c
2021-09-23 15:04:21
77
原创 java笔记(五):文件操作
java.io中File对象来实现文件操作import java.io.*public calss Main{ public static void main(String[] args) { File f = new File("C:\\Windows\\notepad.exe"); System.out.println(f); }}File对象可以使用.list()和.listFiles()列出目录下的文件和子目录名boolean mkdir():创建当前File对象表示的目录
2021-09-23 11:35:20
61
原创 Java笔记(四):反射 泛型
反射反射Relection 指通过实例获取class信息的方法方法一:通过静态变量Class cls = String.class;方法二:通过getClass()方法String s = "Hello";Class cls = s.getClass();访问字段Field getField(name):根据字段名获取某个public的field(包括父类)Field getDeclaredField(name):根据字段名获取当前类的某个field(不包括父类)Field[] g
2021-09-23 10:02:43
104
原创 Java笔记(三):核心类
字符串 编码String是一个引用类型(和python的字符串是基础类型有区别)String的比较必须使用equals方法.contains方法用于搜索字串
2021-09-22 16:01:07
57
原创 Vue笔记(五):路由基础
路由用于组件间的跳转首先定义组件:const Foo = { template: '<div>foo</div>' }const Bar = { template: '<div>bar</div>' }这是我们现在实例用的组件,实际项目中一个组件可能就是一整个页面接下来我们创建一个路由对象const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component
2021-09-09 21:10:22
109
原创 Vue笔记(四):axios
Vue中可以通过axios来访问APIAxios 是一个基于 promise 的 HTTP 库本质上讲是ajax请求基本写法new Vue({ el: '#app', data () { return { info: null } }, mounted () { axios .get('https://api.coindesk.com/v1/bpi/currentprice.json') .then(response =&g
2021-09-09 10:40:58
139
原创 Vue笔记(三):深入理解组件
在Vue笔记(二)中简单看了一下组件 现在做一个更详细的学习来看一个经典的组件代码(来源于Vue官网)// 定义一个名为 button-counter 的新组件Vue.component('button-counter', { data: function () { return { count: 0 } }, template: '<button v-on:click="count++">You clicked me {{ count }} tim
2021-09-07 20:44:40
214
原创 Lombok笔记
Lombok在写java代码时常常用到lombok 做一个简单记录Lombok 能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString 方法。在源码中没有 getter/setter 方法,但是在编译生成的字节码文件中有 getter/setter 方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁。举个例子@Component@RequiredArgsConstructorpublic class Thanking
2021-09-06 16:23:00
110
原创 Mybatis笔记(一)
MybatisMyBatis 是一个优秀的持久层框架,它对 JDBC 的操作数据库的过程进行封装,使开发者只需要关注 sql 本身,而不需要花费精力去处理例如注册驱动、创建 connection、创建 statement、手动设置参数、结果集检索等 JDBC 繁杂的过程代码。结构1、MyBatis 配置文件。SqlMapConfig.xml:此文件作为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息。mapper.xml:sql映射文件,配置了操作数据库的 sql 语句
2021-09-06 16:22:30
202
原创 Maven笔记
Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。一个java项目需要依赖包 需要标准的目录格式 还需要配置环境 打包等等Maven就是是专门为Java项目打造的管理和构建工具pom.xml为项目描述文件依赖关系Maven定义了几种依赖关系,分别是compile、test、runtime和provided:compile 编译时需要用到该jar包(默认)test 编译Test时需要用到
2021-09-01 18:13:04
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人