工作总结
文章平均质量分 60
xinyi_java
热衷于编写代码,热衷于bug修复,热衷于强化自身技术,yxtp.love
展开
-
自定义注解
Spring AOP 默认是不会拦截本类方法调用的。AOP 通常是通过代理来实现的,而在同一类中的方法调用并不会触发代理,因此也不会触发 AOP。注解触发 AOP 切面,可以将这个方法抽取到另一个。这样,Spring AOP 将能够拦截这个被注解标记的类,并在这个新类上使用。原创 2024-01-03 15:25:41 · 950 阅读 · 1 评论 -
spring-cloud集成数据库版本迁移工具flyway
Flyway实现数据库版本同步有两种方式,一种就是直接导包,通过配置文件使用,还有一种就是自定义的方式。原创 2022-09-27 10:48:31 · 3114 阅读 · 4 评论 -
多线程、并发及线程的基础问题
多线程、并发及线程的基础问题原创 2022-08-24 14:37:40 · 318 阅读 · 0 评论 -
JavaSE 高级【反射-动态代理-设计模式-JVM】篇
目录一、 Java 中的反射1-1 .说说你对 Java 中反射的理解二、 Java 中的动态代理2-1 写一个 ArrayList 的动态代理类2-2 动静态代理的区别,什么场景使用?三、 Java 中的设计模式&回收机制3-1.你所知道的设计模式有哪些?3-2 单例设计模式3-3 工厂设计模式四、 JDK7 和 JDK8 区别JDK8:JDK7:五、 Jvm 虚拟机原理概述 垃圾回收器(又称为 gc)1.程序技术器2.虚..原创 2021-08-29 22:02:05 · 1747 阅读 · 43 评论 -
SpringCloud微服务总结
目录一.微服务架构衍变二.SpringCloud 概述三.SpringCloud 实战一.微服务架构衍变 1.1 单体架构 在应用初期,单体应用从成本、开发时间和运维等方面都有明显的优势,但是随着业务量和用户量的增加,导致代码的可读性和可维护性很差。同时面对海量的用户,数据库也会成为瓶颈。单体架构己经不能满足复杂的业务和海量的用户系统,改变单体架构势在必行。 1.2 SOA 架构 Service O原创 2021-09-07 16:49:55 · 2022 阅读 · 36 评论 -
solr中间件总结
目录1. 讲一下 solr 吧2. 为什么要用 solr3. Solr 在项目中怎么用的4. Solr 分词器有什么效果?5. 关于 IK 分词器扩展词汇实现自动添加用户搜索热词的方法.你有什么见解?6. 你们 solr 有专门的地方维护吗?是手动添加还是?(同步问题)7. 全文检索谁来定?8. ElasticSearch 和 Solr 的区别?1. 讲一下 solr 吧 嗯,solr在我们项目中主要是做站内搜索的时候用的Solr,我知道他底层原创 2021-09-07 13:35:17 · 716 阅读 · 1 评论 -
Tomcat7优化
目录1、目的2、服务资源配置3、优化配置3.1配置 tomcat管理员账户3.2 Tomcat的3种运行模式3.2.1 启动NIO模式3.3.1开启并且使用3.3.2 参数说明3.3.3 最佳实践3.4 连接器(Connector)3.4.1 通用属性3.4.4 最佳实践5 JVM参数的优化5.1JVM内存模型5.2 JVM参数5.3 在tomcat中设置jvm参数5.3.1 windows5.3.2 L...原创 2021-09-01 23:50:14 · 1032 阅读 · 10 评论 -
计算机【Java】基础知识总结
目录计算机硬件运算器控制器存储器输入设备输出设备软件系统软件应用软件和计算机的交互方式触屏操作语言识别人脸识别指纹识别图形化界面命令行交互和计算机交互的语言机器语言高级语言Java语言概述Java语言特点java环境的搭建注释关键字标识符常量变量数据类型字符类字符串类进制运算符键盘录入获取随机数流程控制方法数组面向对象思想类和对象构造方法代码原创 2021-08-30 15:47:17 · 1839 阅读 · 50 评论 -
Sentinel 是什么
Sentinel 是什么?概述 分布式系统的流量防卫兵 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级系统负载保护等多个维度保护服务的稳定性。 Sentinel 的历史:历史 2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的原创 2021-08-26 15:54:37 · 1115 阅读 · 2 评论 -
Nacos
Nacos概述 官方地址:https://nacos.io/zh-cn/ github地址:https://github.com/alibaba/nacos 1.1. 什么是 Nacos Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Naco..原创 2021-08-25 15:20:47 · 115 阅读 · 4 评论 -
SpringCloudAlibaba
简介 Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。 同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Sprin..原创 2021-08-25 14:51:48 · 255 阅读 · 3 评论 -
分布式事务解决方案
解决方案大致以下几种1.XA两段提交(低效率)-21 XA JTA分布式事务解决方案 1.1 基于XA协议的两阶段提交(2PC) 概述 两阶段提交协议(Two Phase Commitment Protocol),涉及到两种角色 一个事务协调者(coordinator) 负责协调多个参与者进行事物投票及提交(回滚) 多个事务参与者(particpants) 即本地事务执..原创 2021-08-24 16:43:37 · 403 阅读 · 6 评论 -
分布式事务介绍
分布式事务介绍1.1 什么是事务1.1 什么是事务 概述 数据库事务(简称:事务,Transcation)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成【由当前业务逻辑多个不同操作构成】 事务拥有以下四个特性,习惯上被称为ACID特性: 原子性(Atomicity) 事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行 付款收款要么一起执行成功,要么一起执行失败原创 2021-08-24 15:51:19 · 406 阅读 · 1 评论 -
static关键字的特点和注意事项
static关键字的特点和注意事项1-->随着类的加载就存在2-->在对象创建之前就已经存在可以被访问3-->某类中的静态变量可以被该类所有对象共享4-->静态可以被类名直接调用,也可以被对象调用5-->静态不能访问非静态...原创 2021-08-22 15:46:48 · 137 阅读 · 0 评论 -
hashSet底层去重原理
hashSet底层去重原理step1-->存入元素时,先比较要存入的元素的哈希值和集合中元素的哈希值是否一样step2-->如果要存入的元素哈希值不同直接存入集合step3-->如果存入元素的哈希值和集合元素的哈希值相同,再调用equals比较属性值,如果属性值相同,就不存入集合,属性值不相同,就存入集合...原创 2021-08-22 15:44:12 · 383 阅读 · 0 评论 -
秒杀业务分析
秒杀1 秒杀业务分析1.1 需求分析 所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。 秒杀商品通常有两种限制:库存限制、时间限制。 需求: (1)录入秒杀商品数据,主要包括:商品标题、原价、秒杀价、商品图片、介绍、秒杀时段等信息 (2)秒杀频道首页列出秒杀商品(进行中的)点击秒杀商品图片跳原创 2021-08-22 15:37:39 · 1972 阅读 · 6 评论 -
支付宝支付开发
一、二维码1 什么是二维码 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信原创 2021-08-22 15:20:30 · 2695 阅读 · 8 评论 -
异常的几种处理方式
异常的声明如果在某个方法中出现了编译时异常可以在当前方法上声明这个异常的类型,声明之后编译时异常就会消失 注意 异常的声明不能从根本上解决问题 声明一个编译时异常类型之后,系统不会在编译期间检查这段代码,但是在运行阶段,如果传入的数据不正确,也有可能出现错误情况 异常的声明只能处理编译时异常 异常的处理java虚拟机默认处理异常(默认处理方式) step1-->如果在代码中某个方法内出现了错误情况,系统就会把这个错误发生的原因,发原创 2021-08-22 11:52:58 · 6802 阅读 · 6 评论 -
IO流的分类
字节流字节输入流 inputStream 文件字节输入流 FileInputStream 高效缓冲字节流输入流 BufferedInputStream 字节输出流 outputStream 文件字节输出流 FileoutputStream 高效缓冲字节输出流 BufferedoutPutStream 转换流转换输入流 I..原创 2021-08-22 11:49:52 · 79 阅读 · 0 评论 -
抽象类的特点
1-->抽象类不能实例化/不能创建对象2-->抽象类中可以存在抽象方法也可以存在非抽象方法,但是抽象方法只能在抽象类中定义3-->抽象类中的子类重写所有的抽象方法就会变为普通类5-->抽象类需要定义构造方法,抽象类有子类,子类需要访问父类的构造方法4-->抽象类中定义了抽象方法,子类就需要重写该方法,不重写抽象方法就需要把子类变成抽象类...原创 2021-08-22 11:48:26 · 1355 阅读 · 0 评论 -
设计模式之-单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式有分为饿汉式和懒汉式概述特点 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 应..原创 2021-08-22 11:46:38 · 105 阅读 · 1 评论 -
资源服务授权
4.1 资源服务授权流程(1)传统授权流程 客户端先去授权服务器申请令牌,申请令牌后,携带令牌访问资源服务器,资源服务器访问授权服务校验令牌的合法性,授权服务会返回校验结果,如果校验成功会返回用户信息给资源服务器,资源服务器如果接收到的校验结果通过了,则返回资源给客户端。 传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根 据令牌获取用户的相关信息,性能低下。 (2)公钥私钥授权流程 传统的授权模式性能低下,每次都需要请求授权服原创 2021-08-21 16:48:22 · 767 阅读 · 5 评论 -
用户认证开发
5.1 需求分析执行流程: 1、用户登录,请求认证服务 2、认证服务认证通过,生成jwt令牌,将jwt令牌及相关信息写入cookie 3、用户访问资源页面,带着cookie到网关 4、网关从cookie获取token,如果存在token,则校验token合法性,如果不合法则拒绝访问,否则放行 5、用户退出,请求认证服务,删除cookie中的token 5.2 认证服务5.2.1 认证需求分析 1、登录接口 前端post提交账号、密码等原创 2021-08-22 11:34:45 · 190 阅读 · 0 评论 -
SpringSecurity OAuth2.0用户认证
1 用户认证分析概述 用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色然后授权访问对应的功能。 1.1 认证与授权 身份认证 用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。说通俗点,就相当于校验用户账号密码是否正确。 用户授权 用户认证通过后去访问原创 2021-08-21 16:27:00 · 1947 阅读 · 13 评论 -
什么是虚拟机类加载机制以及加载过程,以及类加载时机,双亲委派机制
虚拟机加载机制如果需要使用某一个类型,虚拟机把描述类的数据从class文件中加载到运行内存并对数据进行校验,转换解析初始化,最终形成可以被java虚拟机直接使用的类型就是虚拟机类加载机制加载过程加载 加载就是将class文件读入内存,并创建一个class对象 连接 连接就是验证是否有正确的内部结构,检验是否符合官方指定的class文件规范,准备负责为类的静态成员分配内存,并设置默认值,将类中的符号引用替换为直接引用 初始化 初始化就是给类中所有静态成员主观赋值 类加原创 2021-08-20 08:49:30 · 95 阅读 · 0 评论 -
什么是线程池,有和没有的区别
线程池就是存储线程的一个容器区别没有线程池 如果没有线程池的话,每次需要完成一个任务都需要创建一个线程对象,任务完成还需要对线程对象进行销毁,如果系统需要完成很多耗时比较短的任务,那么就需要投入大量的时间去创建和销毁线程,降低任务执行的效率 有线程池 如果有线程池的话,线程池会默认提供一些创建好的线程,一旦有任务,就会立即分配已经准备好的线程,然后完成任务之后线程自动回收到线程池中,等待下一个任务,还有一种情况就是,有些任务具有破坏性,会破坏执行任务的线程,然后线程池就会立即分配下一原创 2021-08-19 12:25:54 · 229 阅读 · 1 评论 -
网络编程三要素
IP地址IPv4IPv6端口号设备上应用程序的唯一标识通信协议应用层 http\https\FTP协议 传输层 UDP协议 用户数据报协议,UDP是无连接通讯协议 优点 使用UDP协议小号系统资源少,通信效率高 缺点 由于发送端和接收端不会建立连接,可能造成数据的丢失 TCP协议 传输控制协议 三次握手 客户端-服务端原创 2021-08-19 12:23:31 · 89 阅读 · 1 评论 -
zookeeper
https://archive.apache.org/dist/zookeeper/概述zookeeper是一个开源的分布式的,伪分布式应用提供协调服务的Apache项目。它是一种集中式服务,用于维护配置信息,,命名,提供分布式同步和提供服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施他们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬他们,这是得他们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署..原创 2021-08-19 12:17:56 · 1871 阅读 · 2 评论 -
Dubbo
官网:http://dubbo.apache.org/Dubbo核心概念概念 Apache Dubbo是一款高性能、轻量级的开源java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现 Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,故将其命名为Dubbox ..原创 2021-08-19 12:15:47 · 604 阅读 · 1 评论 -
redis
介绍概述 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(.原创 2021-08-19 12:13:17 · 173 阅读 · 1 评论 -
nginx
介绍Nginx(engine x)是一个高性能HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,Nginx1.0.4发布Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP原创 2021-08-19 12:11:34 · 138 阅读 · 1 评论 -
mybatis-Plus
概述Mybatis-Plus是一个MyBatis(opens new window 的增强工具),在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。愿景是称为MyBatis最好的搭档优势无侵入:制作增强不做改变,引入他不会对现有工程产生影响损耗小:启动会立即注入基本crud,性能基本无损耗,直接面向对象操作强大的crud操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分的crud操作,更有强大而条件构造器,满足各类使用需求。支持Lam原创 2021-08-19 11:04:17 · 134 阅读 · 1 评论 -
远程调用方式
RPCRemote Produce Call远程过程调用,类似的还有RMI(Remote Method Invocation,远程方法调用)。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型HTTPhttp其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。现在热门的Rest风格,就可以通过http协议来实现。...原创 2021-08-19 09:45:01 · 124 阅读 · 0 评论 -
消息队列(MQ)
概述消息队列,即MQ,Message Queue。消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。如果以后有其它系统也依赖商品服务的数据,同样监听消息即可,商品服务无需任何代码修改。AMQP和JMSMQ是消息通信的模型,并不是具体实现。现在实现MQ的有两种主流方式:AMQP、JMS。区别与联系 JMS是定义了统一的原创 2021-08-18 12:56:51 · 144 阅读 · 1 评论 -
微服务网关
概述网关是介于客户端和服务器端之间的中间层,不同的微服务一般会有不同的网络地址,所有的外部请求都会先经过网关这一层。也就是说,API 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由网关来做,这样既提高业务灵活性又不缺安全性微服务网关就是一个系统,通过暴露该微服务网关系统,方便我们进行相关的鉴权,安全控制,日志统一处理,易于监控的相关功能。优点+ 安全,只有网关系统对外进行暴露,微服务可以隐藏在内网,通过防火墙保护。+ 易于监控。可以在网关收集监控数据并将其推送到外部系统进行分析原创 2021-08-18 12:54:07 · 147 阅读 · 1 评论 -
熔断器组件Netflix Hystrix
熔断器Hystix介绍Hystix是Netflix的针对微服务分布式系统的熔断保护中间件,一个有关延迟和失败容错的开源库包,用于隔离访问远程服务、第三方库,防止出现级联失败。熔断器Hystix的原理和作用熔断器机制的原理很简单,像家里的电路保险丝,如果电路发生短路能立刻熔断电路,避免发生灾难。在分布式系统中应用这一模式之后,服务调用方可以自己进行判断某些服务反应慢或者存在大量超时的情况时,能够主动熔断,防止整体系统被拖垮。不同于电路熔断只能断不能自动重连,Hystrix可以实现弹性容错,原创 2021-08-18 12:52:07 · 216 阅读 · 1 评论 -
认识RPC
概念RPC,即Remote Procedure Call(远程过程调用),是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台的子程序,而程序猿无需额外地为这个交互作用编程(说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。)作用体现实现远程调用其它计算机的服务像本地服务一样调用远程服务...原创 2021-08-18 12:50:18 · 111 阅读 · 1 评论 -
认识HTTP
概念http协议:超文本传输协议,是一种应用层协议。规定了网络传输的请求格式、响应格式、资源定位和操作的方式等。但是底层采用什么网络传输协议并没有规定,不过现在都是采用TCP协议作为底层传输协议。http和rpc差别RPC并没有规定数据传输格式,这个格式可以任意指定,不同的RPC协议,数据格式不一定相同HTTP中定义了资源定位的路径,RPC中并不需要最重要的一点:RPC需要满足像调用本地服务一样调用远程服务,也就是对带哦哦用过程在API层面进行封装。HTTP协议没有这样的要求,因此请求、原创 2021-08-18 12:48:49 · 106 阅读 · 1 评论 -
用户鉴权处理
思路分析1.用户通过访问微服务网关调用微服务,同时携带头文件信息2.在微服务网关这里进行拦截,拦截后获取用户要访问的路径3.识别用户访问的路径是否需要登录,如果需要,识别用户的身份是否能访问该路径[这里可以基于数据库设计一套权限]4.如果需要权限访问,用户已经登录,则放行5.如果需要权限访问,且用户未登录,则提示用户需要登录6.用户通过网关访问用户微服务,进行登录验证7.验证通过后,用户微服务会颁发一个令牌给网关,网关会将用户信息封装到头文件中,并响应用户8.用户下次访问,携原创 2021-08-18 11:01:11 · 605 阅读 · 1 评论 -
基于LoadBalance服务调用
原理springcloud LoadBalancerClient 负载策略原理springcloud 提供了跟多组件以及大量与服务治理相关的抽象接口,LoadBalancerClient为springcloud提供的负载均衡器客户端。LoadBalancerClient先从提供的服务中获取某一个实例(默认策略为轮询),比如订单服务需要访问商品服务,商品服务有3个节点,LoadBalancerClient会通过choose(),方法获取到3个节点中的一个服务,拿到服务的信息之后取出服务ip信息,就原创 2021-08-18 10:58:28 · 477 阅读 · 1 评论