- 博客(23)
- 收藏
- 关注
原创 分布式事务——SEATA服务端搭建
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata是阿里巴巴开源的一站式分布式事务解决方案中间件,以高效并且对业务0 侵入的方式,解决微服务场景下面临的分布式事务问题。Transaction Coordinator(TC,事务协调器)维护全局事务和分支事务的状态,驱动全局事务提交或回滚。Transaction Manager(TM,事务管理器)定义全局事务的范围,开始事务、提交事务、回滚事务。
2023-07-21 17:08:25 304
原创 sleuth+zipkin--链路追踪
在大型系统的微服务化构建中,一个系统被拆分成了许多微服务。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。在这种架构中,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心【区域】,也就意味着这种架构形式也会存在一些问题:l 如何快速发现问题?l 如何判断故障影响范围?l 如何梳理服务依赖?l 如何分析链路性能问题以及实时容量规划?
2023-07-19 14:19:09 139
原创 微服务架构
将项目所有模块(功能)打成jar或者war,然后部署一个进程优点: 1:部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可。2:技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。缺点: 1:系统启动慢,一个进程包含了所有的业务逻辑,涉及到的启动模块过多,导致系统的启动、重启时间周期过长;2:系统错误隔离性差、可用性差,任何一个模块的错误均可能造成整个系统的宕机;3:可伸缩性差:系统的扩容只能只对这个应用进行扩容,无法结合业务模块的特点进行伸缩。
2023-07-14 20:01:19 124
原创 rabbitMQ高级
在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。confirm 确认模式。
2023-07-14 16:44:13 103 1
原创 RabbitMQ 的工作模式
RabbitMQ 提供了 6 种工作模式:简单模式、work queues、Publish/Subscribe 发布与订阅模式、Routing 路由模式、Topics 主题模式、RPC 远程调用模式(远程调用,不太算 MQ;暂不作介绍)。
2023-07-12 21:22:21 106 1
原创 MQ消息中间件简介&安装RabbitMQ
MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。它是应用程序和应用程序之间的通信方法。2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
2023-07-12 20:54:51 194 1
原创 解决session共享问题&前端不支持cookie的效果
DefaulWrbSessionManager获取请求头中JSESSION的值,通过RedisSessionDao从redis中查询该值对应的key,如果存在则认为当前用户登录。客户发送请求时,再请求头中携带sessionId, 然后重写DefaultWebSessionManager中getSessionId()的方法。我们发现跨域请求,会发送两个请求:第一个OPTIONS请求,第二个请求是真实的请求。---提供了redis存储session的类。(1)修改shiro的配置类。(2)修改前端登录方法。
2023-07-11 18:50:50 212
原创 Vue-安装Nodejs&NPM&vue脚手架
点击官网下载,根据使用的系统选取自己需要的安装包。(2)点击创建,选择文件保存的路径(该目录必须在本地),点击下方创建。(1)在子组件中使用props来声明变量 用来接受父组件传递的数据。使用vue --version 查看当前是否安装vue脚手架。<2>使用注解---再每个接口中使用@CrossOrigin。(3)如果启动失败,请关联自己的node的安装路径。(1)安装成功后点击打开(和idea使用一样)第二种: 后端解决.----这里使用该方法。<3> idea打开---安装vue插件。
2023-07-10 18:50:43 645 1
原创 SSM+Shiro安全框架
--判断该是否具有该注解的权限---才会执行对应的资源方法。-- 启动Shrio的注解 shiro加在controller应该属于springmvc的配置 -->发现上面注解不生效-----spring没有开启该注解的驱动---spring配置文件加入如下内容。--namesapce的内容必须和对应的接口路径映射-->--shiro-spring整合的依赖-->--spring的相关依赖-->--mybatis的依赖-->--mysql驱动-->--druid依赖-->(3)修改spring配置文件。
2023-07-06 19:44:59 49 1
原创 Shiro框架
身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的如果自己完成认证和授权相对来说比较麻烦。可以使用第三方框架帮你完成认证和权限的绑定。
2023-07-05 19:09:00 70
原创 ngnix的配置文件的介绍及nginx中的核心业务功能
自定义了server创建一个目录main 并在该目录下创建一个main.html注意: 你修改了nginx配置文件,必须重新加载配置文件一个nginx对应多个server。
2023-06-30 17:15:01 71
原创 redis非关系型数据库
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。redis它是一个开源的数据库,缓存的服务器,它里面可以存放字符串,hash,列表,集合数据类型的数据,它的计算基于内存进行计算的。
2023-06-30 16:34:08 689
原创 shell脚本
用来声明脚本由什么shell解释,否则使用默认shell/bin/bash必须以#!/bin/bash开头echo 输出语句执行: ./脚本文件名.sh注意: 权限不足。
2023-06-28 17:10:30 88 1
原创 了解nginx以及安装
Nginx是一款轻量级的服务器/服务器及(IMAP/)代理服务器,在-like 协议下发行。其特点是占有内存少,并发能力强, 高达 50,000 个的响应 ,事实上nginx的并发能力在同类型的服务器中表现较好。反向代理服务器。
2023-06-28 17:04:51 68 1
原创 Linux中安装JDK&tomcat&mysql
思考: 如何把window下的文件放入到linux下。可以直接使用finallshell拖过去。统一放在: /usr/soft目录下(1)解压该软件:(2)重命名解压后的目录(3)配置jdk的环境变量再任何目录下都可以识别Jdk命令(4)刷新配置使其生效。
2023-06-27 20:26:31 77 1
原创 SpringBoot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的领域(rapid application development)成为领导者。
2023-06-27 19:24:57 65 1
原创 Linux系统
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。
2023-06-26 17:30:28 94 1
原创 springboot整合swagger接口文档&springboot整合mybatis-plus(单表增删改查)
编写和维护接口文档是每个程序员的职责,根据Swagger2可以快速帮助我们编写最新的API接口文档,再也不用担心开会前仍忙于整理各种资料了,间接提升了团队开发的沟通效率(它就是可以api接口,它可以对你书写的接口进行说明。并以文档的形式存在。(简称 MP)是一个的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。愿景:我们的愿景是成为 MyBatis 最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍特征:无侵入。
2023-06-19 21:10:18 196
原创 Stream流
Java8的两个重大改变,一个是Lambda表达式,另一个就是Stream API表达式。Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找、过滤、筛选等操作。
2023-06-14 20:53:43 48
原创 JDK8-新特性&Lambda表达式&内置函数式接口&方法引用
静态方法引用 类名::静态方法 lambda表达式: (参数)->类名.静态方法(参数)实例方法引用:对象::实例方法 lambda表达式: (参数)->对象.实例方法(参数)对象方法引用:类名::实例方法 lambda表达式: (参数1,参数2....)->参数1.实例方法(参数2..)构造方法引用: 类名::new lambda表达式: (参数)->new 类名(参数);
2023-06-14 15:33:32 103
转载 泛型与注解
注释:注释给开发人员看的。对你的代码加以解释,程序编译后该注解不可见。注解:注解给程序看的,该注解在编译后仍然存在。@Controller @RequestMapping() ---Spring程序看的。@Override JVM虚拟机看。重写特点:方法名要和父类被重写的方法一致,参数列表要一致,返回值要一致。访问修饰符不能小于父类访问修饰符。抛出的异常不能大于父类异常。如果注解不被解析,那么注解就没有任何意义。1. @Override: 表示方法重写,只要使用了该注解必须符合重写的规则。
2023-06-06 19:50:43 79 1
原创 死锁&线程通信&线程状态
当第一个线程拥有A对象锁标记,并等待B对象锁标记,同时第二个线程拥有B对象锁标记,并等待A对象锁标记时,产生死锁。一个线程可以同时拥有多个对象的锁标记,当线程阻塞时,不会释放已经拥有的锁标记,由此可能造成死锁。
2023-06-05 21:25:43 75 1
原创 java多线程与线程安全问题
/1.重写run方法:现成的执行任务@Overridei < 20;i++) {//1.创建线程对象//2.开启线程 ---当获取到cpu时间片,那么该线程就会执行run方法的任何代码//多线程//一个线程,先执行run,在执行mainj < 30;j++) {获取当前线程的名称第一种: 通过父类Thread中的getName()可以获取线程名称。必须为Thread的子类。
2023-06-04 16:08:39 559 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人