06 2022 档案
摘要:NameServer :服务的注册与发现中心 如果要启动RocketMQ 必须先启动NameServer 启动完之后 在启动borker broker会 去NameServer注册服务 里面包含 主题 地址 队列等相关信息 生产者会去向NameServer 请求路由信息 根据路由信息(主题 队列 进
阅读全文
摘要:List ArrayList Vector LinkList Set HashSet TreeSet LinkedHashSet Queue Map 大方向上,HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。上图中,每个绿色 的实体是嵌套类 Entry 的实例,Entry 包含四个
阅读全文
摘要:方法区(永久代) 线程共享 用于存储被 JVM 加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 运行时常量池 是方法区的一部分。Class 文件中除了有类的版本、字段、方法、接口 字面量 和 符号引用 堆 线程共享 新生代(Eden区、From Survivor区和To Survivor
阅读全文
摘要:@configuationProperties 可以读取yml中配置的属性 支持松散绑定 lastName last_name @email @validated 在webmvcAutoConfiguartion 里面的WebMvcAutoConfiguartionAdapter 里面的addRes
阅读全文
摘要:seata 事物发起者 @gloableTranstional TM 事物参与者 RM 也就是调用其他服务数据库相关操作 服务端 TC seataServer 源码 全局事物扫描器扫描@gloableTranstional注解 被注解的方法进行代理增强 AT 2PC 3PC
阅读全文
摘要:wget http://download.redis.io/releases/redis-6.0.6.tar.gz tar -vxzf redis-6.0.6.tar.gz wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/re
阅读全文
摘要:g++: command not found的解决 G++没有装或却没有更新 以下方法都可以试试: centos: yum -y update gcc yum -y install gcc+ gcc-c++ ubuntu: apt-get update gcc apt-get install g++
阅读全文
摘要:导入依赖 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.9.1</version> </dependency> /** * 生产者 同步生
阅读全文
摘要:https://github.com/apache/rocketmq/tree/master/docs/cn nameServer(集群部署) 注册中心 管理broker https://github.com/apache/rocketmq/blob/master/docs/cn/RocketMQ_
阅读全文
摘要:取消订单 取消订单出现的情况 1 下订单后超过30min没有支付 需要触发关单操作 2 支付失败 同样需要关单关单: 1 定时任务 定时去检查 缺点 线程损耗 2 消息中间件 rabbitMQ rabbitMQ:生产者发送消息到我们得交换机 对应的队列中 发送的消息是存在TTL的 如果发送的消息在T
阅读全文
摘要:<component name="RunDashboard"> <option name="configurationTypes"> <set> <option value="SpringBootApplicationConfigurationType" /> </set> </option> <o
阅读全文
摘要:redis 主从复制 能解决HA高可用 主写 从读 做读写分离 但是容量问题没法解决可以根据不同的业务 访问不同的redis 数据可以分类 交集不多 数据不能拆 将每笔数据 通过算法 hash+取模(modula)(redis有多少台) sharding分片 弊端 取模的值是固定的 影响分布式下的扩
阅读全文
摘要:/** * 前戏,做容器刷新前的准备工作 * 1、设置容器的启动时间 * 2、设置活跃状态为true * 3、设置关闭状态为false * 4、获取Environment对象,并加载当前系统的属性值到Environment对象中 * 5、准备监听器和事件的集合对象,默认为空的集合 */ prepar
阅读全文
摘要:Str.endsWith(String) 以string 为结尾返回true 否则 返回falsestr.indexOf(String str) 返回str在字符串第一次出现索引 没有返回-1/ str.indexOf(String str, int index) 返回从index位置开始查找字符串
阅读全文
摘要:ClassPathXmlApplicationContext setConfigLocations(configLocations);//当前是设置配置看路径 还有一种是设置资源 而且这里还有系统环境和系统属性 username=Administrator AbstractApplicationCo
阅读全文
摘要:用来解析当前系统所需要的资源 生成唯一表示 在AbstractRefreshableApplicationContext中获取getid 创建一个工厂类
阅读全文
摘要:spring 准备阶段做了什么? 1设置容器启动时间 * 2设置标志位 * 3获取环境对象 验证属性资源 * 4存储预刷新监听器和 事件的集合对象 进入obtainFreshBeanFactory 设置beanFactory 是否允许覆盖 与否允许bean之间存在循环依赖 创建beanFactory
阅读全文
摘要:JDK JRE JVM JDK:api开发 JRE:运行环境 JVM 和操作系统虚拟机 类加载机制是什么? 类加载机制 包含 装载(loading ) 链接(linking) 初始化(lnitalizing) 一 装载 (loading ) 1 将ClassFile--》字节流 》类加载器class
阅读全文
摘要:2pc 和3pc 是强一致性处理解决方案 Seata 分布式事物 http://seata.io/zh-cn/docs/overview/what-is-seata.html 首先我们向各个数据库中插入一张undolog表 CREATE TABLE `undo_log` ( `id` bigint(
阅读全文
摘要:本地事物 在一个服务器中生效的事物我们称为本地事物 事物的特性 事物A和事物B公用一个事物 事物C 新建一个新的事物 在service中调用自身其他事物的方法时候 事物的传播会失效 因为会绕过代理对象的处理但是在springboot中在上面这种写法并不会生效 @transactional本身是通过代
阅读全文
摘要:spring 是什么? spring 是框架 是一个生态 springboot springcloud ioc (思想) :控制反转 原来我们需要一个对象的时候需要自己去new 现在由spring容器替我们创建 我们需要直接去容器中拿就可以了 Di(手段):依赖注入 把属性进行注入的操作 IOC 容
阅读全文
摘要:当我们在调用提交订单时 如果因为网络波动问题造成点击多次 调用方法或者接口不会改变业务状态 可以保证重复调用的结果和单次调用的结果一致 场景 1前端重复提交 2接口超时重试 3消息队列重复消费天然幂等性行为 以sql语句为例 select * from user where id=1 无论怎么查询
阅读全文
摘要:之前设置了spring的session共享 认证拦截 订单服务中的所有请求都是必须在认证的情况下处理的 所有我们需要添加一个校验是否认证的拦截器 先去session中获取信息 如果不为空则放行 如果为空 那么需要登陆 跳转到登录页 public class AuthInterceptor imple
阅读全文
摘要:<!--session共享--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <depende
阅读全文
摘要:当我们点击商品时 会将商品添加到购物车 购物车中会出现多个不同的商品 那么如何将商品存储到redis中呢? 如果说将购物车中的信息当成一个list集合存入redis中 键为 redis:1 值为{[skuid:1,subtitle:'华为'],[skuid:2,subtitle:'小米']} 但是这
阅读全文
摘要:#复制原文件备份 mv /etc/apt/sources.list /etc/apt/sources.list.bak #修改sources.list cat <<EOF >/etc/apt/sources.list deb http://mirrors.ustc.edu.cn/debian sta
阅读全文
摘要:CentOS 7 Minimal 使用如下命令安装中文语言包 yum groupinstall "Chinese Support" 因为这个命令是CentOS 6的 出现如下错误: 正确的安装方式为 yum install kde-l10n-Chinese 1.安装中文语言包 先查看系统是否有安装中
阅读全文
摘要:当我们微服务下面的多个子系统有父子域名关系 一级域名和二级域名有父子关系的话 我们可以使用分布式session解决会话的统一管理 当我们在多个独立的系统之间 需要实现单点登陆的话 我们需要额外添加一个 单点登陆的认证服务器 JWT可以解决单点登陆 https://search.gitee.com/?
阅读全文
摘要:当同一个集群中的 两个相同服务 seesion存在不能共享的问题 1 解决方法 集群环境下 可以使用session复制 当用户a访问第一个节点 登陆成功后会存储到session中去 然后将session同步到其他节点 优点 :在tomcat支持 只需要修改配置文件即可 缺点 不支持水平扩展 当集群越
阅读全文
摘要:微博开放平台 https://open.weibo.com/ 创建应用 然后根据code信息 我们可以去授权服务器获取对应的token信息 获取token信息只支持post 方式提交 我们可以使用postman 方式提交 https://api.weibo.com/oauth2/access_tok
阅读全文
摘要:@RequestMapping @RequestMapping( value = "/***" ,method = RequestMethod.GET) @RequestMapping( value = "/***" ,params = {"username!=root","password"})
阅读全文
摘要:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc
阅读全文
摘要:allOf:等待所有任务完成 anyOf:只要有一个任务完成 public class CompletableFutureDemo05 { private static ThreadPoolExecutor executor=new ThreadPoolExecutor(5, 50, 10, Tim
阅读全文
摘要:runAfterEither:不能获取完成的线程的返回结果,自身也没有返回结果 * acceptEither:可以获取线程的返回结果,自身没有返回结果 * applyToEither:既可以获取线程的返回结果,自身也有返回结果 public class CompletableFutureDemo04
阅读全文
摘要:如果有多个异步任务 希望在前两个异步任务完成之后在执行的任务 thenCombine :可以获取前面两线程的返回结果,本身也有返回结果 * thenAcceptBoth:可以获取前面两线程的返回结果,本身没有返回结果 * runAfterBoth:不可以获取前面两线程的返回结果,本身也没有返回结果
阅读全文
摘要:public class CompletableFutureDemo02 { private static ThreadPoolExecutor executor=new ThreadPoolExecutor(5, 50, 10, TimeUnit.SECONDS, new LinkedBlocki
阅读全文
摘要:创建异步对象 CompletableFuture 提供了四个静态方法来创建一个异步操作。 ```java static CompletableFuture<Void> runAsync(Runnable runnable) public static CompletableFuture<Void>
阅读全文
摘要:public class ThreadPoolDemo { public static void main(String[] args) { //第一中获取的方式 ExecutorService service = Executors.newFixedThreadPool(10); //第二种获取方
阅读全文
摘要:public class ThreadDemo { //定义一个线程池对象 private static ExecutorService service=Executors.newFixedThreadPool(5); public static void main(String[] args) t
阅读全文
摘要:journalctl 按page键到日志最后面xfs_repair -v -L /dev/sda3 sda3 是你虚拟机上显示的名称
阅读全文
摘要:恢复内容开始 关闭thymeleaf 缓存 创建对应的vo 我们需要检索数据库中的相关商品信息 我们需要提交相关的检索条件 为了统一的管理提交的数据 我们需要创建一个vo来封装信息 @Data public class SearchParam { private String keyword;//页
阅读全文
摘要:关闭thymeleaf 缓存 创建对应的vo 我们需要检索数据库中的相关商品信息 我们需要提交相关的检索条件 为了统一的管理提交的数据 我们需要创建一个vo来封装信息 @Data public class SearchParam { private String keyword;//页面传递查询全文
阅读全文
摘要:在mall-search 中引入thymeleaf <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency
阅读全文
摘要:<!--导入springCache依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> sprin
阅读全文
摘要:当我们 向数据库写入数据的时候 显然会和缓存中的数据造成不一致 所以会在数据库写完操作后 向缓存中更新数据 这就是双写 但是双写存在问题 假如线程1 在写数据库的时候 刚刚写完 还没来得及向缓存中同步数据 线程2 写数据库 写缓存在 线程1 之前执行完了 那么就会造成数据的不一致 解决方法 1 加锁
阅读全文
摘要:https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95#26-%E5%8D%95redis%E8%8A%82%E7%82%B9%E6%A8%A1%E5%BC%8F <dependency> <
阅读全文
摘要:解决方案 在数据库中查询没有 为null 那么将这个查询字段作为key, value 为null 存储到redis 中 并为这个key 加入过期时间 缓存没有命中..... >查询数据库操作.缓存没有命中.....缓存没有命中.....缓存没有命中.....缓存没有命中.....缓存没有命中....
阅读全文
摘要:缓存分类 本地缓存 把缓存数据存储在内存中(Map<String Object>) 分布式缓存 /** * 根据父编号 获取对应的子菜单信息 * @param list * @param parentCid * @return */ private List<CategoryEntity> quer
阅读全文
摘要:/** * 根据父编号 获取对应的子菜单信息 * @param list * @param parentCid * @return */ private List<CategoryEntity> queryByParentCid(List<CategoryEntity> list,Long pare
阅读全文