自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_34093116的博客

喝杯绿茶

  • 博客(41)
  • 收藏
  • 关注

原创 linux线上cpu过高,怎么处理?

4. jstack 进程PID | grep 16进制的线程PID -A 50 输出有问题线程的堆栈信息50行,再依据这个定位代码问题。3. 将线程的PID 转为16进制 printf '0x%x\n' PID。2. top -H -p 进程PID 找到占用cpu高的线程 PID。1. top 查看占用cpu高的进程 PID。

2023-08-04 10:54:48 104

原创 springboot各版本的文档

Index of /spring-boot/docs

2023-03-30 10:55:21 148

原创 springboot+druid实现的动态数据源

最后在方法上或者类上加上注解就可以,自由切换数据源了,需要注意的是两个数据源是不能同时的,那个是多数据源,咱们这个是动态数据源。总的实现思路是 利用spring的aop并且取消springboot的自动配置数据源,自行配置数据源的思路。工作中用到了动态数据源连接多个数据库的场景,记录一下;

2023-03-29 20:55:39 758

原创 mac中的~/

表示当前用户的主目录。这是一个缩写,表示“home directory”,也就是用户的个人文件夹。,就可以进入当前用户的主目录。例如:/Users/admin。在macOS终端中,

2023-03-24 10:29:28 351

原创 macOS13上安装app显示文件已损坏

3. sudo codesign --sign - --force --deep 加空格,把提示损坏的文件拖动到终端回车再尝试打开。2. sudo xattr -r -d com.apple.quarantine 加空格,把提示损坏的文件拖动到终端回车。1. 打开终端 sudo spctl --master-disable。开启安装任何来源的程序。

2023-03-24 00:22:34 600

原创 在idea中过滤掉不想提交到git上的文件

1. 新建 .gitignore文件,在里面填写 target/2.如果没有生效,那么在git 缓存中已经有了,就需要先清掉缓存。git commit -m "删除target缓存"以target目录文件为例子。

2023-03-23 16:31:01 906

原创 websocket 连接https

1. 客户端将ws: 改为 wss:2. nginx 配置location中增加:

2023-03-23 10:23:08 447

原创 spring切面获取类上的注解

【代码】spring切面获取类上的注解。

2023-03-22 23:31:03 995

原创 Rocketmq

1. 同一个groupID下,消费者订阅的topic和tag要一致,因为底下是类似一个map结构,key为groupID,value为topic和tag,所以会出现后面的覆盖前面的配置。相当于map的多次put如果是key一样,最后的value才是map的最终值。

2023-03-22 10:16:19 44

原创 springboot中@Order不生效的一些记录

springboot 切面 @Order

2022-07-20 17:52:14 1883

原创 服务器出现了cpu百分之百的问题

linux服务器cpu高的问题

2022-07-20 11:05:35 185

原创 @Documented,@Retention,@Target

java 自定义注解

2022-07-20 10:55:31 476

原创 linux清理磁盘

linux

2022-06-22 16:22:51 99

原创 jvm-OutOfMemoryError:Java heap space

最近项目中遇到了一个内存溢出,堆内存溢出的问题,具体怎么发现的,就不过多写,基本项目不可访问,然后查看错误日志,就能看到该错误提示。下面说一下怎么查找溢出的问题发生地点:思路:拿到dump文件,然后分析原因如何拿到dump文件,首先想到的是:jmap -dump:format=b,file=文件名 线程id但是有个问题,这是发生问题之后使用的,而我们一般发生这样的问题,最快的让线上能够访问的方法是自动重启jvm,毕竟迟一秒,损失就不可估量,除非你的系统无访问量。那么jmap这种手动的方式

2022-04-19 14:47:28 353

原创 Scheduled的cron表达式的一些整理

在做spring的定时任务的时候,关于cron表达式中的* 和 ?这两个字符一直都分不太清,所以这次重点写一下。cron 表达式的组成: 秒 分 时 天 月 周 年最后一个年一般都省略了,所以我们平时用的cron一般是6个部分使用.* 表示每一个,这cron中的7个位置都可以用,例如如果用在秒的位置,表示每秒。?表示不关心当前位置的值,所以常翻译为任意,但是使用位置只能在天和周,例如如果天的位置设置了具体值,周的位置也设置了具体值,那就具体到星期几了,意思就是几号星期几,这样同时满足这样的条

2022-03-28 14:34:55 507

原创 springboot读取配置文件

一.读取springboot框架自带的application.properties或application.yml文件.1.通过@Value注解来读取application.properties文件内容:name=1user.name=2读取方式:@Value("${name}")private String name;@Value("${user.name}")private String userName;如果要设置默认值:@Value("${name

2022-03-24 15:22:39 17805 1

原创 maven打包时打入依赖的jar包

首先说结论,是结合maven的打包插件:maven-assembly-pluginmaven中常见的打包插件有三种:1.maven-jar-plugin --- 打包普通的project2.maven-shade-plugin --- 打包可执行的jar3.maven-assembly-plugin ---打包定制化依赖,定制化打包结构使用:<plugin> <groupId>org.apache.maven.plugins</groupI..

2021-07-22 10:15:35 2448

原创 maven的pom文件的几个基础属性值

${project.build.sourceDirectory}:项目的主源码目录,默认为 src/main/java${project.build.testSourceDirectory}:项目的测试源码目录,默认为 src/test/java${project.build.directory}:项目构件输出目录,默认为 target/${project.outputDirectory}:项目主代码编译输出目录,默认为 target/classes/${project.testOutput

2021-06-04 10:30:15 265

原创 springboot集成logback

文件结构:说明: 三个配置文件,application.properties ; application-dev.properties ; application-prod.properties ; 注意命名规则,然后通过spring.profiles.active指定指定文件生效.logging.config 指定日志文件位置.logback-spring.xml内容:<?xml version="1.0" encoding="UTF-8"?><configur

2020-11-26 17:25:57 1971

原创 springboot跨域配置类

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springf.

2020-11-26 17:16:15 441

原创 unsafe

java并发编程的juc下面有很多的类,但是底层实现都是基于unsafe这个类,其中的使用的方法是:unsafe.compareAndSwapObject(this, tailOffset, expect, update)unsafe.park(boolean var1, long var2)unsafe.unpark(Object var1)基于这三个方法实现了:ReentrantLockLockSupportCountDownLatchCyclicBarri

2020-05-20 15:29:16 196

原创 BIO,NIO,netty

今天来说说几种IO的进化史吧。BIO:问题: accept()和read()都是阻塞的,假想,客户端一进来了,在read方法阻塞,客户端二是连不进来的。第二种情况,客户端一连进来了,第一次发送消息完毕之后,第二次要重新从accept方法开始。多线程版本:解决了第一个客户端连进来了读的时候,其他客户端无法进来的问题,显然当客户端的数量增大的时候,线程的开销是吃不消的。低配版的NIO:使用一个list来储存客户端,并且将accept和read方法都设置为非阻塞。问题:虽然是单

2020-05-19 18:07:28 142

原创 消息对列重复消费的问题

消息对列:异步,解耦,削峰在使用消息对列的时候,常常遇到的问题是:如何保证生成者消息发送成功了,或者是如何保证消费者消费到了消息。在这个过程中,一般采用的是确认加重试机制完成。在这个过程中,生产者可能会触发重试机制,消息对列也可能会触发重试机制,那么消费者这边就可能会发生重复消费的问题。解决办法:1. 采用CAS乐观锁的方式来解决2. 采用对账的方式,在消费者这边需要被改变的id,如果已经被修改了就存进表中或者redis中,下次要改变先查询一下有没有被执行过。例如订单号。...

2020-05-11 13:43:00 130

原创 http 与 https

今天写写https与http的区别,也是经常会被面试问到的问题。首先http协议:无状态的,然后文本传输,一个很大的问题,安全问题在明文传输过程中,可以被人截获。升级:对称加密方式,但是也有一个问题,在第一步的时候,对称加密的密钥也有可能被截获。再升级:使用非对称加密方式。这也是https的原理,它里面使用的是ssl证书。...

2020-05-11 11:57:28 105

原创 并发编程-线程池

今天要聊一下线程池的知识,因为比较简单就先讲参数再花一下流程图public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<R

2020-05-10 15:22:20 110

原创 TCP,socket

首先一个client要连接一个server,基本要经历两个基本步骤:1. 建立连接,2.指定通讯协议(http协议,redis协议)网络七层: 网络通信和网络io是两回事。TCP是面向连接的,可靠的传输。socket:socket也就是套接字,是由客户端的ip和端口号,加服务端的ip加端口号组成的唯一表示。...

2020-05-06 14:53:25 694

原创 分布式任务

在spring我们传统的定时任务是通过@Scheduled 加上cron表达式来做的。但是这样存在这一些问题 :1.单点问题,做集群任务的重复执行问题不好解决2.cron表达式定义在代码之中,不能够实时修改3.定时任务失败了,无法重试也没有统计...分布式任务调度,就可以通过一个调度中心微服务来管理,所有的定时任务都通过数据库来维护,可以有多个执行器,负载均衡也可以在调度中...

2020-05-06 14:52:22 373

原创 秒杀-redis令牌桶

秒杀: 大量请求抢夺少量资源的时候。如果直接使用数据库的乐观锁或者悲观锁来实现,数据库压力很大,处理效率也很低下。这里有一个比较好的思路就是利用redis令牌桶的方法实现。首先了解一个redis的几个命令:redis.rpush(key,value); 向队列右侧添加元素redis.lpop(key);从队列左侧拿出一个元素redis.sadd(key,value); 向s...

2020-05-06 14:38:09 677

原创 分布式id

今天说一下分布式id的解决方案常见的分布式id解决方案:1,基于数据库自增 2,基于redis的自增 3,基于Long类型的64位的雪花算法(这里不考虑uuid的方案)先说一下数据库自增,如果你是一个单点数据库来做,那么很简单,就是直接取自增id就行,这个数据库也可以额外做一个备份数据库。如果是多个数据库的话,就要设置其实自增点,和每次自增的步长,但这有一个不好的地方是,不好扩...

2020-05-06 11:46:02 100

原创 volatile

2020年五一的倒数第二天假了,其实还是那个想法,如果是个穷人,其实假期对于自己来说,只是一个追赶别人的一个机会。废话不多说,今天聊一下并发编程中的valatile。volatile,是什么,它是修饰变量的,修饰完了之后有什么变化呢?两点:1,让该变量在多个线程之间保持可见性 2,在jvm层次可以设置内存屏障防止重排序的事情发生什么是线程的可见性?或者说什么是线程的不可见性?不管...

2020-05-04 14:41:27 122

原创 Synchronized

今天要说的话题是并发编程之Synchronized说Synchronized之前,得先聊一下CAS。首先,什么是CAS呢? compare and swap。例如,两个线程都去内存之中,取A的值,并且进行更新,每次更新的时候,先比较一下A的值和我之前拿的值是否是一样的,如果一样就更新成功,如果不一样,就把A的新值重新拿出来,然后进行下一轮CAS操作。那么这样会引发什么问题呢?...

2020-05-03 14:32:34 1980

原创 聊聊存储,redis为什么会快?

在生活中,我们要存储一些东西,会怎么做,比如我就给你8个箱子作为存储介质,你是不是会依次把东西放进每个箱子,假如每个箱子只能存2个物件。如上图,所有物件都存储完毕了。下面要你找出10的物件,你会怎么做?是不是需要选择箱子,一个一个翻开查找,直到找到10,理论上讲需要找:1~2*8次。这就是遍历查找。东西是存好了,但是查询效率太低了,那怎么提高呢。如上图。...

2020-04-29 14:35:24 890

原创 ThreadLocal的一些理解。

在聊ThreadLocal之前,首先咱们得先聊一下,强引用,软引用,弱引用与虚引用的问题。1.强引用Object o = new Object();这里的o就是强引用,如果引用一直存在,该对象就不会被回收。2.软引用 A a = new A(); SoftReference<A> soft = new SoftReference&l...

2020-04-28 17:12:32 201

原创 redis--缓存穿透,缓存雪崩,缓存击穿。

1.redis缓存的由来传统网络访问系统图:当client访问量增大的时候,数据库会出现性能瓶颈,导致qps低下,解决方案:数据库集群,数据库读写分离。理论上讲,无限新增机器,新增数据库节点,是可以解决这个问题的,但是要考虑资源成本和维护成本。故引出了我们的缓存。缓存能提高qps的原因是:缓存基于内存运行,数据库基于硬盘运行。这里的缓存在java web中我们一...

2020-04-26 11:42:22 299

原创 session , token , sign

首先,我们知道session和token都是为了协助用户访问web服务器的一种介质。那么先看一下web的发展史吧,为什么我们要使用session或者token,然后他们两有什么区别呢?早期我们的web访问都是单纯文本类容,例如新闻,没有用户交互,不过后来我们有了购物网站这样的web应用,那么想想如果张三第一次访问购物网站添加了一个商品到购物车,然后第二次访问的时候如何找到这个购物车的商品...

2019-10-25 11:48:22 342

原创 java什么是双亲委派,为什么它可以保证安全?

首先上一张网图:双亲委派是:简单来说,当一个类被类加载器加载的时候,它会先判断自己的父级能不能能够加载该class文件,它父级拿到之后也会同样的先判断自己的父级是否可以加载,直到到达顶级的启动类加载器,如果在这个过程中父级可以加载就父级加载,如果到最后父级们都不能加载自己也不能加载,就会抛出异常。为什么是安全的?首先我们定义一个类public class String{ ...

2019-10-23 18:07:10 1034 1

原创 关于jvm引发的一些思考

首先我们都知道java语言是跨平台执行语言,那么为什么这么说呢?首先跨平台执行是什么意思,意思就是同一段代码A在windows上可以执行也可以在linux上执行。那么java是怎么做到的呢,简单的来说是因为jvm的存在,大家打开官网的下载jdk的时候会发现有windows版本也有linux版本,这就是问题的关键,上面说的代码A可以两处执行的前提就是对应系统上安装了适合自己对应的jvm,而这个jvm...

2019-10-23 17:19:28 143

原创 redis单机版,哨兵,集群的一些总结

首先需要了解的是Redis是c语言开发的。安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++一、单机版 1.下载redis的linux版本文件并上传服务器并且解压这里我上传到了服务器/data/file/目录下的位置解压命令是:tar -zxvf redis-3.0.0.tar.gz2.进入redis-3.0.0的目录进行编译 cd redi...

2018-05-11 19:20:52 2941 3

原创 关于java注解的一些总结

最近在项目中用到了注解,如以下:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface NeedLogin {}这是一个校验登录状态的注解。首先看上面两个元注解@Retention和@Target@Retention表示注解的生命周期,有三种类型:1、RetentionPolicy.SO...

2018-04-25 13:14:55 473

原创 springBoot 中定时任务在linux中执行了两次

首先, springboot定时任务的实现步骤:  1. 启动类添加注解  @SpringBootApplication@EnableSchedulingpublic class BaolideApplication extends SpringBootServletInitializer { public static void main(String[] args) { ...

2018-04-17 18:02:47 1600 2

空空如也

空空如也

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

TA关注的人

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