- 博客(82)
- 收藏
- 关注
原创 nginx配置txt文件点击链接后下载
响应头设置为attachment 告知浏览器下载文件而非打开 filename为正则捕获的文件名。手上有一个txt文件,上传到文件服务器后,点击路径是在浏览器里直接打开了,用户需要的是下载到本地。文件在服务器上的路径 不配置会走默认路径。正则表达式 匹配路径下的txt文件。强制浏览器将文件视为二进制流并下载。
2025-03-17 12:29:25
132
原创 pgsql中处理数组类型字段
本项目使用的ORM框架是mybatis-flex 在字段上添加注解。关联查询的结果用函数string_agg聚合 拼接成为一个新字段。(因为id是主键,因此其它列不用写在group by 里面)2、sql中使用数组属性字段。any和关联查询一起使用。然后正常插入、查询即可。1、代码中存入和读取。需要使用自定义转换器。
2025-01-21 15:40:23
973
原创 spring事务理解
具有ACID四个特性在spring中保证操作的原子性,需要通过spring事务来完成。对于数据库来说,每条语句都是一个单独的事务,而spring事务是从业务层面来控制事务的提交或者回滚在spring中,使用声明式事务比较多。
2025-01-07 20:27:54
924
原创 Mongodb $geoIntersects不准确问题
使用Mongodb的$geoIntersects判断两个经纬度组成的矩形是否相交,按照文档描述书写无法得到正确结果。网上搜索 得到的结果寥寥无几 看到stackoverflow上有人说可以加上一个CRS参数。搜了半天也不知道这个具体什么原理,只查到是按照某个指定的参考系来判断地理位置。
2024-12-12 11:08:28
406
原创 InputStream转String的各种方法
由 Reader 构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成,建议通过 BufferedReader 包装 Reader 的实例类以提高效率。(Reader 构成的对象是字符对象,每次的读取请求都会涉及到字节读取解码字符的过程,而 BufferedReader 类中有设计减少这样的解码次数的方法,进而提高转换效率)BufferedReader 类从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行。是字节流通向字符流的桥梁,它使用指定的charset读取字节并将其解码为字符。
2024-10-15 11:13:39
1460
原创 Cookie Session Token的各种知识
通常也称为JSON令牌JWT主要用于下面两点1、认证 (Authorization) 这是使用JWT最常见的一种情况,一旦用户登录,后面每个请求都会包含JWT,从而允许用户访问该令牌所允许的路由、服务和资源。单点登录时当今广泛使用JWT的一项功能,因为它的开销很小2、信息交换 JWT是能够安全传输信息的一种方式,通过使用公钥、私钥对JWT进行签名认证。
2024-09-30 17:37:38
909
原创 vuex基本概念
一直以为项目里面的store是js的什么高级用法,今天看了一下原来是个插件下面是官方文档的总结vuex的核心是store,包含着应用中大部分的状态1、Vuex的状态存储是响应式的,当VUE组件从store中读取状态的时候,若store中的状态发生变化,相应的组件也会得到高效的更新2、不能直接改变store中的状态,除了commit通过store.state获取状态对象,commit触发状态变更通过this.$store访问实例。
2024-08-12 09:39:59
249
3
原创 地图项目涉及知识点总结
这次项目,对我的各方面能力都是一次挑战,最难绷的还是各种数据的变换算不明白了,哎,真是菜的离谱不管怎么样,还得勤学苦练,好好努力啊。
2024-07-18 20:57:03
1103
原创 spring @retryable不生效的一种场景
项目中某个位置要调用其它部门的接口,一直有问题,对方让加重试。使用@Retryable之后发现并没有进行重试,之前其它接口都正常重试了。在某个方法中调用另一个带retryable的方法时,如果这个retry方法在同一个类中,不会进行重试。经过研究发现了这个方法是直接写在调用的类里面的,这种情况重试竟然不会进行。执行methodA 不会重试。
2024-07-17 11:02:46
431
1
原创 restTemplate使用总结
getForEntity没法直接携带header。实际使用时可以生成不同的factory。(4)接收的类带泛型。
2024-06-27 21:18:20
178
原创 Sentinel基础知识
alibaba的熔断器组件,用于服务熔断降级微服务时代,各个微服务之间相互调用,如果有单个服务出现问题,整个服务可能会出现雪崩sentinel中的基本概念1、资源资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。2、规则。
2024-05-19 11:59:31
506
原创 Ribbon基础知识
负载均衡器通常有两种:服务端负载均衡和客户端负载均衡ribbon是客户端负载均衡器,即从客户端发出的时候就已经选择好了去哪个服务像nginx就是服务端负载均衡,客户端请求的时候并不知道要去哪个服务Ribbon是spring cloud中非常重要的基础框架,Fegin、OpenFegin已经nacos的负载均衡也都是用Ribbon框架实现的客户端负载均衡的前提是拥有一个注册中心,比如nacos、eureka客户端负载均衡器通过注册中心获得服务端的服务名称、ip端口号等等,再发送http请求。
2024-05-17 16:46:16
399
原创 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
814
原创 常用正则匹配
^]: 匹配括号内的字符意外的任意一个字符 如 [^ 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
247
原创 近期常用linux命令总结
mv [options] source dest : 移动文件。ps -ef | grep 进程关键字: 查找指定进程。cp [options] source : 复制文件。拉取某个镜像,不指定版本即为latest版本。创建一个新的容器(container)(-e 显示所有进程 -f 全格式)ps -a: 列出所有进程。显示所有容器,包括未运行的。
2024-03-21 09:12:47
192
原创 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
576
原创 java 单例模式
getInstance方法返回的始终是静态对象INSTANCE,当这个方法被调用时,SingleTonHolder才在SingleTon的运行时常量池里,把符号引用替换成了直接引用,这时才真正创建了静态对象INSTANCE。即一个类负责创建自己的对象,同时确保只有单个对象被创建,提供一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。由于只有在很少的情况下会出现需要同步的情况,所以先通过singleton == null 减少进入的概率,然后使用一个类锁保证线程安全。1、懒汉式,线程不安全。
2024-02-19 18:07:09
549
原创 java小知识
当我们对一个String类进行操作时,比如重新赋值,这时已经得到了一个新的对象而不是修改了原对象的value。这个value由private final修饰,且不提供修改的方法,因此它的值是不可变的。/META-INF/MANIFEST.MF决定了jar的主类。在String类的内部,存储字符变量的是一个char数组。在maven打包时,会自动生成这个文件。
2024-02-18 11:41:21
234
1
原创 JVM常用参数
将新对象预留在新生代,由于 Full GC 的成本远高于 Minor GC,因此尽可能将对象分配在新生代是明智的做法,实际项目中根据 GC日志分析新生代空间大小分配是否合理,适当通过“-Xmn”命令调节新生代大小,最大限度降低新对象直接进入老年代的情况。HeapDumpOnOutOfMemoryError: JVM在遇到OOM时将heap转储到物理文件中。UseGCOverheadLimit :限制在抛出OOM错误之前在GC中花费的VM时间的比例。关于GC调优 很重要的一条经验是。指定最小和最大堆大小。
2023-06-10 17:25:41
196
原创 java类加载过程
每个ClassLoader实例都有一个相关的父类加载器,ClassLoader实例会在试图亲自查找类或者资源之前,将搜索类或资源的任务委托给其父类加载器。3、在内存中生成一个代表该类的Class对象,作为方法区这些数据的访问入口。直接引用是可以直接指向目标的指针、相对偏移量或是一个能间接定位到目标的句柄。加载规则:先判断该类是否被加载过,已经加载的类直接返回。初始化阶段是执行初始化方法的过程,是类加载的最后一步。虚拟机将常量池的符号引用替换为直接引用的过程。双亲委派模型的好处:避免类的重复加载。
2023-06-10 15:47:39
736
原创 JVM相关知识点
程序计数器:记录当前线程执行的位置 当线程切换后能够知道该线程上次运行到哪了java虚拟机栈:方法调用的数据通过栈进行传递,每次方法调用都会有一个对应的栈帧被压入栈中,每一个方法调用结束后,会有一个栈帧被弹出栈由一个个栈帧组成,每个栈帧包括:局部变量表、操作数栈、动态连接、方法返回地址局部变量表:主要存放了编译器可知的各种数据类型、对象引用操作数栈:主要作为方法调用中的中转站使用,用于存放方法执行过程中产生的中间计算结果。另外,计算过程中产生的临时变量也会放在操作数栈中。
2023-05-09 20:45:44
492
原创 【效率提升】补充
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
229
原创 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
130
原创 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
142
原创 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
112
原创 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
148
原创 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
108
原创 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
96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人