自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis-plus连接postgrel数据库主键自增问题

首先pg中没有直接设置主键自增这一说法,一般只能新建一个序列,可以使用Navicat创建。然后实体类的主键策略只能是。,指定你的序列名字,即可.

2023-10-20 16:51:32 672

原创 关于HttpServletRequest的常见操作

转换成HttpMethod枚举类。

2023-09-22 14:53:15 128

原创 RocketMQ安装(Docker)

在配置文件目录下创建broker.conf配置文件。创建NameServer数据存储路径。启动NameServer容器。创建Broker数据存储路径。创建conf配置文件目录。启动Broker容器。

2023-06-30 10:04:20 1295

原创 docker rabbitmq-清空queue队列数据

这将显示所有队列的信息,包括队列的名称和消息数量。执行命令后,队列的消息应该已经被完全删除。替换为你要清空的队列名称。

2023-06-28 17:55:13 1961

原创 工厂模式~

① 实例化对象不使用new,用工厂方法代替② 将选择实现类,创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。

2023-06-12 10:03:44 125

原创 synchronized 底层原理

比如我们在使用StringBuffer中的很多带synchronized的方法,其实大多数时候都不会存在锁竞争的情况就使用的是偏向锁,在第一次获得锁时,会有一个CAS操作,之后该线程再获取锁,只需要判断mark word中是否是自己的线程id即可,而不是开销相对较大的CAS命令。在很多的情况下,在Java程序运行时,同步块中的代码都是不存在竞争的,不同的线程交替的执行同步块中的代码。这种情况下,用重量级锁是没必要的。,那么使用轻量级锁自旋带来的性能消耗就比使用重量级锁更严重,这时候就需要升级为重量级锁。

2023-05-17 21:46:43 410

原创 Stream流

实体类//书名 private String name;//分类 private String category;//评分 private Integer score;//简介 private String intro;@Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode //用于后期的去重使用 public class Author {//姓名 private Integer age;

2023-02-07 15:11:15 458

原创 Mybatis-Plus

MyBatis-Plus (简称MP)是一个MyBatis,的增强工具,在 MyBatis,的基础上只做增强不做改变,为简化开发、提高效率而生。润物无声只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。效率至上只需简单配置,即可快速进行CRUD操作,从而节省大量时间。丰富功能热加载、代码生成、分页、性能分析等功能一应俱全。

2022-10-12 22:57:57 2715

原创 权限架构~

这种架构的优势就是当我们为了一个User 添加角色时 如果这个User 的角色比较多比如说他又是经理 又是项目管理者等角色 我们给他添加的时候就需要一个一个添加,这个时候我们就可以给这个将这个角色添加到一个group中,下一次有User还是这些角色我们就可以直接给他添加Group就可以了,就不用在一个一个添加,这就是这个架构的优势,但是这个架构要在角色较多的系统中才能体现出来,在角色较少是反而会成为累赘。④ user_to_resources(user跟role的中间表)② 角色表 Role。...

2022-08-07 14:09:30 528

原创 SpringBoot进行全局异常处理

使用@ExceptionHandler 加@ControllerAdvice 注解模拟异常发生@RestController@RequestMapping("/exception")public class ExceptionController { @RequestMapping("/show1") public String showInfo1() { String msg = null; msg.length(); // NullPointer

2022-04-08 14:14:42 192

原创 mockMVC单元测试(SpringBoot+Spring Security+Jwt)

传对象的情况/** * 1、mockMvc.perform执行一个请求。 * 2、MockMvcRequestBuilders.get("XXX")构造一个请求。 * 3、ResultActions.param添加请求传值 * 4、ResultActions.accept(MediaType.TEXT_HTML_VALUE))设置返回类型 * 5、ResultActions.andExpect添加执行完成后的断言。 * 6、ResultActions.andDo添加一个结果处理器,

2022-04-01 13:48:32 1388

原创 如何保障缓存一致性

前言如果只需要保存最终一致性是不需要这些策略的,因为redis里面我们一般会设置过期时间,这种方案下,只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存从而保证最终一致性。因此,接下来讨论的思路不依赖于给缓存设置过期时间这个方案。在这里,我们讨论三种更新策略:① 先更新数据库,再更新缓存;同时有请求A和请求B进行更新操作,那么会出现:1、线程A更新了数据库;2、线程B更新了数据库;3、线程B更新了缓存;4、线程A更新了缓存;5、线程C查询线程A中更新的脏数据② 先删除

2022-03-03 11:41:27 963 1

原创 订单秒杀案例

2022-03-02 19:32:19 1038

原创 @RequestBody使用场景

视频

2022-02-20 12:26:49 1201 1

原创 Java值传递

基本数据类型直接拷贝的是值,而引用数据类型拷贝的是地址

2022-02-18 13:57:54 355

原创 springcloud项目中maven依赖报错Non-resolvable import POM

把springcloud的依赖换成springcloud alibaba 然后出现了下面的依赖错误,这是我自己写的项目导入进来的,坐标这些都没有问题然后clean ,报下面的错误,意思就是从你提供的地址那里的仓库找不到你想要的资源,所以你的依赖我没办法添加。说是父项目有问题,锁定位置经过对比发现上面我们导入springcloud alibaba 的路径整错了,应该是下面这个<dependency> <groupId>com.alibaba.cloud</gr

2022-02-12 10:33:10 10232

原创 CAS~~

CAS什么是CASCAS其实就是Compare And Swap的简写,乐观锁的代表,它的功能比较当前工作内存中的值和主内存中的值,如果相同则执行指定值的更改(交换),否则继续比较直到主内存和工作内存中的值一致为止。它整个过程是原子的,因为它是一条CPU并发原语。原语的执行必须是连续的,在执行过程中不允许中断,也就是说CAS是一条原子指令,不会造成所谓的数据不—致的问题。CAS在Java中的体现就是Unsafe(魔术类)中的各个方法。CAS的缺点① 如果CAS失败,会一直进行尝试。如果CAS长时间一

2022-01-27 09:57:42 577

原创 二叉树的应用(堆排序)

堆排序基本介绍① 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。② 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。③ 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆④ 大顶堆举例说明我们对堆中的结点按层进行编号,映射到数组中就是下面这个样子:大顶堆特点:arr[i] >= arr[2*i

2022-01-24 09:42:29 95

原创 SpringCloud入门 (Hystrix、Rabbin、OpenFeign等)

简单的微服务未使用框架的微服务我们通过7071端口去调8081端口的服务8081/** * @author acoffee * @create 2022-01-19 17:24 */@RestController@RequestMapping("/user")public class UserController { @Autowired UserService userService; @RequestMapping("/findAll") publ

2022-01-22 10:53:00 833

原创 Elasticsearch基础

MySQL 数据库 表 行 列ES Index Type Document Filed Type ES6一个Index中只支持一个Type,ES7中不建议自定义TypeIndex操作#创建索引PUT test4#删除索引DELETE test4#查看所有索引GET _cat/indices#显示标题GET _cat/indices?v#查看单个索引信息GET test4#创建索引指定参数PUT test5{ "settings

2022-01-19 19:31:17 1725

原创 Elasticsearch安装

切换用户看到这个就没有问题后台启动并查看日志刷新配置node[root@localhost elasticsearch]# tar -xvf node-v12.22.0-linux-x64.tar.xzexport NODE_HOME=/opt/elasticsearch/node-v12.22.0-linux-x64export PATH=$PATH:${JAVA_HOME}/bin:${NODE_HOME}/bin刷新环境变量source /etc/profile.

2022-01-17 17:41:27 1432

原创 SpringBoot整合RabbitMQ

导入依赖 <!--springboot整合rabbitmq的依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>一、简单整合我们这里在两个项目中完成一个生产者项目,一个消费者项目生产者配置文件

2022-01-12 18:53:00 1205

原创 RabbitMQ基础

什么是MQMQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息(A给B发送消息,A叫上游,B叫下游,A给B发送消息就叫叫上下游传递消息)。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。MQ的三大功能1.流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰

2022-01-12 10:36:00 1129

原创 RabbitMQ安装

RabbitMQ安装-Linux安装包地址提取码:7777利用xftp将linux安装包传到linux因为我们的rabbitmq是erlang这个语言写的所以要安装erlang的环境按下图安装配置文件修改默认的账号和密码都是guest,只对本机开放,修改配文件,启用guest远程访问vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.16/ebin/rabbit.app没有默认登录界面,安装插件查看默认插件rabbitmq-plugins

2022-01-10 17:34:14 1068

原创 Springboot整合Redis

JedisSpringBoot项目模板(如果卡的话,可以更换模板)https://start.spring.iohttps://start.aliyun.com导入依赖 <!--Jedis依赖--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>基本用法

2022-01-10 12:05:16 578

原创 redis主从复制及哨兵模式

互联网“三高”架构高并发高性能高可用为了避免单点Redis服务器故障 ,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,连接在一起 ,并保证数据是同步的。即使有其中一台服务器宕机 ,其他服务器依然可以继续提供服务 ,实现Redis的高可用,同时实现数据冗余(褒义)备份。主从复制即将master中的数据即时、有效的复制到slave中特征: 一个master可以拥有多个slave ,一个slave只对应一个master职责mas

2022-01-08 14:29:06 1773 1

原创 redis分布式锁

分布式锁概述了解分布式锁之前,先要知道为什么要使用分布式锁,我们先了解下面的缓存异常缓存异常缓存穿透​ 是指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,并且处于容错考虑,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决​ 空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。缓存雪崩​

2022-01-06 20:09:43 608

原创 Session丢失

前言在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器。用户第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session,所以就会将用户踢到登录页面。这将大大降低用户体验度,导致用户的流失,这种情况是项目绝不应该出现的。模拟Session丢

2022-01-06 19:55:44 968

原创 flex布局

默认主轴在水平justify-content: space-between;justify-content: space-end;justify-content: space-center;justify-content: space-start;justify-content: space-around;justify-content: space-evenly;flex-direction: column;justify-content: center;f.

2022-01-05 12:11:44 238

原创 Docker安装及在Docker中安装软件

Docker与系统之间的关系安装DockerDocker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。查看内核版本uname -r CentOS发现版本cat /etc/centos-release拉取镜像:docker pull 镜像名称删除指定镜像:docker rmi $IMAGE_ID

2022-01-03 17:26:45 4603

原创 linux软件安装

安装MySql卸载CentOS自带的Mariadb查找是否有mariadb: rpm -qa | grep mariadb根据查询结果进行卸载: rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64传压缩包并解压我这里是用的xftp传输的,传文件有很多方法解压命令 tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar解压完成后可以卸载压缩包依次安装①rpm -ivh mysql-commu

2021-12-30 10:22:24 1418 1

原创 在linux上配置nginx反向代理及负载均衡

反向代理进入nginx.conf配置文件去更改配置文件vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pas

2021-12-30 09:37:08 1651

原创 线索化二叉树

先看一个问题将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树.问题分析:① 当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 }② 但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上.③ 如果我们希望充分的利用 各个节点的左右指针, 让各个节点可以指向自己的前后节点,怎么办?解决方案-线索二叉树线索二叉树基本介绍① n个结点的二叉链表中含有n+1 (公式 2n-(n-1)=n+1)个空指针域。利用二叉链表中的空

2021-12-28 21:41:51 906 1

原创 在linux(centos)上安装JDK

1.下载首先把在Windows上下载好的Jdk压缩包,然后传给centos2.传输这里传输文件我们写两种方式:第一种方式① 使用 lrzsz 来进行传输,下面是安装 lrzsz 的命令[root@VM-0-12-centos usr]# yum -y install lrzsz然后进入目标文件夹,输入 rz 就会弹出一个选择框,选中相应的文件即可第二种方式我们使用宝塔面板来进行传输,进入目标文件夹点击上传即可3.解压然后在目标文件夹解压tar -zxvf jdk-8u162-

2021-12-13 11:40:33 668

原创 静态代理和静态代理(Jdk动态代理和Cglib动态代理)

静态代理代理对象的两个概念:1、代理对象存在的价值主要用于拦截对真实业务对象的访问。2、代理对象应该具有和目标对象(真实业务对象)相同的方法。/** * @author acoffee * @create 2021-11-16 9:49 *///接口interface Cookie{ void cooking();}//实现类class CookieImpl implements Cookie{ @Override public void cooking(

2021-12-10 17:47:06 262

原创 Nginx入门

背景公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个

2021-12-09 20:25:28 1553

原创 Axios 、计算属性、侦听器

Axios什么是AxiosAxios 是一个开源的可以用在浏览器端和 NodeJS 的异步通信框架,她的主要作用就是实现 AJAX 异步通信 ,简单的讲Axios 是一个基于 promise 的 HTTP 库,就是可以发送get、post请求。说到get、post,我们原来都用Jquery。但是由于Vue、React等框架的出现,Jquery也不是那么符合现在的需求了。也正是Vue、React等框架的出现,促使了Axios轻量级库的出现,因为Vue等,不需要操作Dom,所以不需要引入Jquery.js了

2021-12-05 17:33:04 478

原创 Vue组件

什么是组件组件是可复用的 Vue 实例,说白了就是一组可以重复使用的模板,跟 JSTL 的自定义标签、Thymeleaf 的 th:fragment 等框架有着异曲同工之妙。通常一个应用会以一棵嵌套的组件树的形式来组织:例如页面头部、侧边、内容区,尾部,上传图片,等多个页面要用到一样的就可以做成组件,提高了代码的复用率。第一个 Vue 组件在实际开发中,我们并不会用以下方式开发组件使用 Vue.component() 方法注册组件:说明:Vue.component():注册组件my-com

2021-11-29 19:43:57 482

原创 Vue基础语法(指令)

我们对于基础语法,说白了就是实现元素赋值,循环,判断,以及事件响应即可!v-bind你看到的 v-bind 特性被称为指令。指令带有前缀 v- ,以表示它们是 Vue 提供的特殊特性。除了使用插值表达式{{}}进行数据渲染,也可以使用 v-bind指令,它的简写的形式就是一个冒号:<body> <div id="app"> <h1 v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</h1>

2021-11-29 18:57:32 135

原创 Vue入门

一、ES6语法ECMAScript6(后面简称ES6),它是JavaScripti语言的下一代标准。由于ES6是在2015年发布的,所以又称为ECMAScript2015(ES2015)。语法:let、 const 、 class、extends、super、 arrow functions、template string、destructuring、default、restarguments......常见的语法。1.1 letlet和lconst的用法与var类似,都是用来声明变量的,但是

2021-11-28 22:23:44 326

sc-text

sc-text

2023-02-27

空空如也

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

TA关注的人

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