自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RxJS学习笔记

RxJS学习笔记Observable和Observer简介订阅和退订Hot Observable 和 Cold Observable创建类操作符创建同步数据流创建异步数据的Observable对象简单创建着重介绍fromEventfromEventPatternajax合并数据流一阶合并高阶Observable辅助类操作符功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定

2020-10-27 17:34:19 1328

原创 设计模式(二)

设计模式14、组合模式(Composite)模式讲解14、组合模式(Composite)抽象问题:对于这种具有整体与部分关系,并能组合成树形结构的对象结构,如何才能够以一个统一的方式来进行操作呢?组合模式的定义:将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性;组合模式解决问题的思路就是引入一个抽象的组件对象,作为父对象;组合模式的关键在于这个抽象类;模式讲解认识组合模式的目的是:让客户端不再区分操作的是组合对象还是叶子对象,而

2021-12-06 22:45:55 469 1

原创 设计模式一

临时1、简单工厂模式simplefactory包1、简单工厂模式接口的思想就是“封装隔离”;简单工厂的本质是:“选择实现”;接口是一种特殊的抽象类,接口与抽象类的选择:优先使用接口在既要定义子类的行为,又要为子类提供公共的功能时,应使用抽象类simplefactory包example1 案例 使客户端知道了接口和实现类,违背了接口的思想;example2 使用简单工厂模式进行封装隔离;example3 是对exam1的重构;简单的一步使实现类对客户端隐藏了起来,但是却实现的内部组

2021-11-22 23:31:01 412

原创 MySQL必知必会

MySQLMySQL必知必会数据检索排序MySQL必知必会数据检索LIMIT使用,第一个参数为开始位置,第二个参数为要检索的行数,例如 SELECT * FROMcityLIMIT 1,1where子句中,and的优先级高于orlike 通配符- 只匹配单个字符%配置多个字符使用正则表达式 REGEXP正则 搜索两个串之一, 匹配 | 例如SELECT * FROMcityWHERE CountryCode REGEXP 'ABW|AFG';排序order by

2021-10-20 21:11:23 256

原创 Linux--Centos

Centos文件、目录常用操作文件或目录归档(打包和解压缩)打包(zip、gzip)查看命令软链接(快捷方式)用户用户管理(需要管理员来执行)用户和组的概念文件权限可执行脚本脚本环境变量虚拟机网络文件传输vi 文本编辑(vi基于命令行 gedit 基于GUI)yum进程文件、目录linux使用统一的目录树结构/ /home /root /bin /mut /usr /etc普通用户只能操作自己的用户目录,root用户没有限制;常用ls (list) 列出当前文件和目录-l 详细参数

2021-10-18 18:14:50 109

原创 面试SSM

面试Spring1、在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的!MyBatis1、MyBatis为什么只有接口,没有实现类?Spring1、在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的!spring采用动态代理机制来实现事务控制;spring 在扫描bean的时候会扫描方法上是否包含@Transactional注解,如果包含,spring会为这个bean动态地生

2021-10-08 21:12:41 80

原创 【笔记】SpringCloud(5)之Spring Cloud Bus(消息总线)、Spring Cloud Stream(消息驱动)、Spring Cloud Sleuth(分布式服务跟踪)

Spring Cloud BusSpring Cloud Bus结合RabbitMQRabbitMQ前置知识使用原理指定刷新范围架构优化kafka实现消息总线kafka知识Spring Cloud Stream使用(rabbitmq)Spring Cloud Sleuth初始化原理抽样收集抽样收集整合Spring Cloud Bus通常使用轻量级的消息代理来构建一个公用的消息主题,让系统中所有的微服务实例都连接上来,由于该主题中产生的消息会被所有的实例监听和消费,所以称它为消息总线;结合Rabbi

2021-10-07 23:06:17 482

原创 【笔记】SpringCloud(4)之Spring Cloud Zuul(API网关服务),Spring Cloud Config(配置中心)

Spring Cloud Zuul构建网关请求路由请求过滤路由匹配路由前缀本地跳转cookie 与头信息Hystrix和Ribbon的支持过滤器构建网关创建Spring Boot 项目, 命名api-getaway,pom文件中加入spring-cloud-starter-zuul 、应用主类添加@EnableZuulProxy (使用注解开启API网关服务功能)配置Zuul的基础信息 (应用名 端口号等)请求路由传统路由方式# 传统路由配置 单实例配置 - 没有服务治理框架的时候

2021-10-07 14:10:48 247

原创 【笔记】SpringCloud(3)之Spring Cloud Feign (声明式服务调用)

Spring Cloud Feign前言使用参数绑定继承特性(抽取公有复用)Ribbon配置重试机制前言整合了Spring Cloud Ribbon 、Spring Cloud Hystrix,提供了声明式的web服务客户端定义方式;使用创建Spring Boot 项目,引入spring-cloud-starter-feign、spring-cloud-starter-eureka-server;应用主类添加@@EnableFeignClients 开启Feign;Service接口定义使用@

2021-08-29 13:15:12 119

原创 【笔记】SpringCloud(2)之Spring Cloud Ribbon/Hystrix

Spring Cloud Ribbon/Hystrix客户端负载均衡Spring Cloud Ribbon前言基于Http和Tcp的客户端负载均衡工具RestTemplateRibbon参数配置与Eureka结合ribbon重试服务容错保护Spring Cloud Hystrix使用Hystrix断路器模式Hystrix接口和注解的使用方法使用服务降级(fallback是Hystrix执行失败后的备用方法)线程池划分、命令令名称、分组客户端负载均衡Spring Cloud Ribbon前言基于Htt

2021-08-27 19:55:25 163

原创 【笔记】SpringCloud(1)之Spring Cloud Eureka

Spring Cloud Eureka前言高可用注册中心服务发现和服务消费前言服务调度方式:1、使用Http的Resful API 或轻量级发送协议,实现信息传递与服务调用的触发;2、通过轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件;#搭建服务注册中心(Eureka-Serve)创建基础的的SpringBoot工程,引入spring-cloud-starter-eureka-server依赖;@EnableEurekaServer (服务端注解)注解启动一

2021-08-24 23:03:18 106

原创 SpringMVC、Spring、Mybatis杂谈

Mybatis笔记2Mybatis 的优缺点?优点缺点Mybatis 的 XML 文件有哪些标签属性?Mybatis的一级缓存Mybatis的二级缓存#{}和${}Mybatis 的优缺点?优点SQL写在XML配置文件中,便于统一管理;提供了很多插件(分页插件/逆向工程),并与Spring有很好的集成;提供XML,支持动态SQL提供映射标签,支持对象与数据库的ORM字段关系映射。提供对象关系映射标签,支持对象关系组建维护。缺点SQL编写量巨大SQL依赖于数据库Mybatis 的

2021-08-12 14:39:38 137

原创 MySQL杂谈

MySQL杂谈1、MySQL 的逻辑架构2、MySQL的读写锁3、MySQL的锁策略4、数据库死锁解决5、事务6、事务特性7、事务的四种隔离级别8、MVCC(多版本并发控制)9、谈一谈InnoDB10、谈一谈MyISAM11、谈一谈Memory引擎12、查询执行流程13、VARCHAR和CHAR14、DATETIME 和 TIMESTAMP15、数据类型有哪些优化策略16、索引有什么作用17、MySQL的B-Tree索引18、了解Hash索引吗19、什么是自适应哈希索引?20、什么是空间索引?21、什么是全

2021-08-11 20:01:52 139

原创 【笔记】Spring源码深度解析-3(AOP)

AOP动态AOP自定义标签如果声明了自定义的注解,那么就一定会在程序中的某个地方注册了对应的解析器。#mermaid-svg-WDiL3rYlaxsAdJVe .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-WDiL3rYlaxsAdJVe .label text{fill:#333}#mermaid-

2021-08-04 14:29:26 224

原创 【笔记】Spring源码深度解析-2(ApplicationContext)

Spring源码深度解析-2容器的扩展功能1、设置配置路径2、扩展功能3、环境准备4、加载BeanFactory4-1、定制BeanFactory4-2、加载 BeanDefinition5、功能扩展6、BeanFactory的后处理6-1、激活注册的BeanFactoryPostProcesser6-2、注册BeanPostProcessor6-3、初始化消息资源6-4、初始化ApplicationEventMulticaster6-5、注册监听器7、初始化非延迟加载单例8、finishReresh容器

2021-08-04 11:58:16 164

原创 【笔记】Spring源码深度解析-1

Spring源码深度解析容器的基本实现核心类介绍(org.springframework.beans)DefaultlistableBeanFactoryXmlBeanDefinitionReaderBean的基本容器XmlBeanFactory默认标签的解析(省略)bean标签的解析及注册alias标签的解析import标签的解析嵌入式beans标签的解析自定义标签的解析(省略)自定义标签使用自定义标签解析bean的加载FactoryBean的使用缓存中获取单例bean从bean的实例中获取对象获取单例准

2021-08-02 17:17:09 139

原创 高效并发之线程安全与锁优化(2)

线程安全与锁优化线程安全Java中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立线程安全的实现方法当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用放方运行热呢其他的协调操作,调用这个对象的行为都可以获得正确的结果没那就称这个对象是线程安全的;线程安全Java中的线程安全Java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立;不可变不可变的对象一定是线程安全的,无论

2021-07-22 22:33:41 80

原创 【笔记】深入理解Java虚拟机之程序编译与代码优化(4)

【笔记】前端编译与优化1、前端编译与优化1-1、概述1-2、Javac编译器1、解析与填充符号表1、词法、语法分析2、填充符号表2、注解处理器3、语义分析与字节码生成1、标注检查2、数据及控制流分析3、解语法糖4、字节码生成1-3、Java语法糖1、泛型2、自动装箱、拆箱及遍历循环3、条件编译1、前端编译与优化1-1、概述编译器是一个很含糊的表达,要放到具体的上下文环境中去讨论;前端编译器:把*.java文件转变成*.class的过程;即时编译器(JIT):运行期把字节码转变成本地机器码的过程

2021-07-22 19:50:17 94

原创 高效并发之Java内存模型与线程(1)

高效并发之Java内存模型与线程Java内存模型主内存与工作内存内存间交互操作对于volatile型变量的特殊规则针对long和double型变量的特殊规则原子性、可见性、有序性先行发生原则Java与线程线程的实现Java内存模型现代计算机系统加入一层或多层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲;Java内存模型主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量存储到内存和从内存中取出变量值这样的底层细节;(这里的变量指的是实例字段,静态字段和构成数组对象

2021-07-20 21:56:37 71

原创 Effective Java笔记(五)

Effective Java笔记(五)并发78、同步访问共享的可变数据79、避免过度同步80、executor、task和stream 优先于线程81、并发工具优先于wait和notify82、线程安全性的文档化83、慎用延迟初始化序列化85、其他方法优先于Java序列化86、谨慎地实现Serializable接口87、考虑使用自定义的序列化形式88、保护性地编写readObject方法89、对于实例控制、枚举类型优先于readResolve90、考虑用序列化代理代替序列化实例并发78、同步访问共享的可

2021-07-15 15:56:54 64

原创 Effective Java笔记(四)

Effective Java笔记(四)8、通用编程57、将局部变量的作用域最小化58、for-each循环优先于传统的for循环59、了解和使用类库60、如果需要精确的答案,请避免使用float和double61、基本类型优先于装箱基本类型62、如果其他类型更适合、则尽量避免使用字符63、了解字符串连接的性能64、通过接口引用对象65、接口优先于反射机制66、谨慎使用本地方法67、谨慎地进行优化68、遵守普遍接受的命名惯例9、异常69、只针对异常的情况才使用异常70、对可恢复的情况使用受检异常,对于编程错误

2021-07-15 11:27:09 103

原创 【笔记】深入理解Java虚拟机之程序编译与代码优化(5)

后端编译与优化后端编译与优化1、概述2、即时编译器(JIT)1、解释器与编译器2、编译对象与触发条件3、编译过程3、提前编译器(AOT)4、编译器优化技术后端编译与优化1、概述字节码看作程序语言的一种中间表示形式,那么编译器无论在何时,何种状态下把Class文件转化成与本地基础设施相关的二进制机器码,都可以视为整个编译器的后端。提前编译器或即时编译器都不是Java虚拟机必需组成部分。后端编译器性能的好坏,代码优化质量的高低确实衡量一款商用虚拟机优秀与否的关键指标之一;2、即时编译器(JIT)

2021-07-13 22:37:26 107

原创 Effective Java笔记(三)

Effective Java笔记(三)5、枚举和注解34、用enum代替int常量35、用实例域代替序数36、用EnumSet代替位域37、用EnumMap代替索引38、用接口模拟可扩展的枚举39、注解模式优先于命名模式40、坚持使用Override注解41、用标记接口定义类型6、Lambda和Stream42、Lambda优先于匿名类43、方法引用优先于Lambda44、检查使用标准的函数接口45、谨慎使用Stream46、优先选择Stream中无副作用的函数47、Stream要优先用Collection

2021-07-13 16:32:45 65

原创 Effective Java笔记(二)

Effective Java笔记(二)3、类与接口15、使类和成员的可访问性最小化16、要在共有类而非公有域中使用访问方法17、使可变性最小化18、复合优先于继承19、要么设计继承并提供文档说明,要么禁止继承20、接口优先于抽象类21、为后代设计接口22、接口只用于定义类型23、类层次优于标签类24、静态成员类优于非静态成员类25、限制源文件为单个顶级类4、泛型26、请不要使用原生态类型27、消除非受检的警告28、列表(List)优先于数组3、类与接口15、使类和成员的可访问性最小化尽可能地使每个类

2021-07-12 17:24:04 85

原创 【笔记】深入理解Java虚拟机之虚拟机执行子系统 (3)

虚拟机字节码执行引擎1、运行时栈帧结构1-1、局部变量表1-2、操作数栈1-3、动态连接1-4、方法返回地址2、方法调用2-1、解析2-2、分派3、动态类型语言支持3-1、java.lang.invoke3-2、invokedynamic4、基于栈的字节码解释执行引擎4-1、解释执行4-2、基于栈的指令集与基于寄存器的指令集4-3、基于栈的解释器执行过程所有的Java虚拟机的执行引擎输入、输出都是一致的:输入的是字节码二进制流,处理过程是字节码解析执行的等效过程,输出的是执行结果。1、运行时栈帧结构

2021-07-11 21:27:27 90

原创 深入理解Java虚拟机之虚拟机执行子系统 (2)

虚拟机类加载机制1、概述2、类加载的时机3、类加载的过程1、加载2、验证3、准备4、解析5、初始化1、概述虚拟机的类加载机制: 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以直接被虚拟机直接使用的java类型,这个过程被称作虚拟机的类加载机制。2、类加载的时机一个类型从加载到虚拟机内存开始,到卸载出内存为止,他的整个生命周期经历加载、验证、准备、解析、初始化、使用、卸载七个阶段。验证、准备、解析三个部分统称为连接。加载、验证准备、初始化和卸

2021-07-09 22:43:41 112

原创 (Effective java笔记一)

Effective java笔记1、创建和销毁对象1、用静态工厂方法代替构造器2、遇到多个构造器参数时要考虑使用构建器3、用私有构造器或者枚举类型强化Singleton属性4、通过私有构造器强化不可实例化的能力5、优先考虑依赖注入来引入资源6、避免创建不必要的对象7、消除过期的对象引用8、避免使用终结方法和清除方法9、try-with-resources 优于try-finally对于所有对象都通用的方法10、覆盖equals 时请遵守通用约定11、覆盖equals总要覆盖hashCode12、始终要覆盖t

2021-07-09 11:34:12 57

原创 深入理解Java虚拟机之虚拟机执行子系统 (1)

深入理解Java虚拟机之虚拟机执行子系统1、类文件结构1-1、 Class类文件的结构1-1-1、魔数与Class文件的 版本1-1-2、常量池1、类文件结构1-1、 Class类文件的结构class文件是一组以字节为基础的二进制流,各个数据项严格按照顺序紧凑子排列在文件之中,中间没有添加任何分隔符。Class文件格式采用一个类似C语言结构体的伪结构来存储数据,伪结构只有两种数据类型:无符号数和表。无符号数属于基本的数据类型,u1、u2、u4、u8、代表一个字节,二个字节,8个字节的的无符号数

2021-07-07 22:57:48 103

原创 (总结)深入理解Java虚拟机之自动管理内存

深入了解Java虚拟机1、Java内存区域与内存溢出异常1-1、运行时数据区1、Java内存区域与内存溢出异常1-1、运行时数据区 1、程序计数器

2021-05-08 13:25:06 226

原创 分布式缓存

分布式分布式理论体系分布式设计策略分布式系统设计实践java的引用分布式理论体系分布式设计策略如何检测你还活着 (心跳检测)如何保证高可用(主备模式、互备模式、集群模式)容错机制重试机制负载均衡分布式系统设计实践全局ID生成UUIDID生成表模式Snowflake结合缓存方案哈希取模分配数据分布方式,哈希函数计算求余, 余数作为数据的服务器索引编号处理。路由表一般需要全局计算的节点。(比如用户抽奖,预算进行拆分到不同逻辑数据库,预算使用完便不在进行路由)

2021-04-25 16:51:26 119

原创 红黑树

红黑树红黑树的性质旋转插入新结点红黑树的性质一颗红黑树是满足下面红黑性质的二叉搜索树每个结点或是红色的,或是黑色的。根结点是黑色的。每个叶节点(NIL)是黑色的。如果一个结点是红色的,则它的两个子结点是黑色的。对每一个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。1、为了便于处理红黑树代码中的边界条件,使用一个哨兵来代表NIL,哨兵T.nil是一个与树中普通结点有相同属性的对象,它的color为黑色,而其他属性可以为任意值,所有指向NIL的指针都用指向哨兵T.

2021-04-19 20:33:57 78

原创 kafka学习总结

kafka概念安装和配置安装配置生产者创建生产者发送消息序列化器消费者消费者和消费者群组深入kafak概念消息:kafka的数据单元。批次:一组消息,这些消息属于同一个主题和分区。消息模式:有许多可选的数据结构,例如JSON,XML,Avro等。主题:kafka的消息通过主题来分类。分区:一个主题可以被分为若干个分区。生产者:创建消息。消费者:读取消息。偏移量:另一种元素据,不断递增的整数值,创建消息时,kafka会将它加到消息中,在给定的分区中,每个消息的偏移量都是唯一的。消费者群组:

2021-04-08 17:22:09 340 1

原创 Redis学习

reids一级目录二级目录三级目录一级目录二级目录三级目录

2021-03-31 17:28:20 100

原创 RabbitMQ

rabbitMQ1、理解消息通信1.1channel(信道)1.2AMQP消息路由1.2.1 AMQP1.2.2 队列1.2.3 路由键1.2.4 交换机类型1.2.5 多租户模式1.2.6 持久化1、理解消息通信1.1channel(信道)信道是建立在“真实的”TCP连接内的虚拟连接,AMQP命令都是通过信道发出去的,每条信道都会被指派一个唯一ID(AMQP会帮忙记住ID), 发布消息,订阅队列和接收消息都是通过信道完成的。1.2AMQP消息路由1.2.1 AMQPbasic.consum

2021-03-30 16:01:20 186

原创 mybatis笔记1

Mybatis源码学习一、SqlSessionFactorySqlSession三级目录一、SqlSessionFactorySqlSessionFcatory构建过程 //创建私有静态的引用,确保该引用只会建立一个且不能被外部直接修改 public static SqlSessionFactory sqlSessionFactory=null; //使用静态代码块,以保证该部分代码在类加载的同时就能首先被加载 static { try {

2021-03-29 09:31:55 108

原创 资本论

资本论1.范畴构建社会事实2.资本雇佣劳动

2021-02-19 13:08:26 188

原创 Java线程知识总结

Java 守护线程和用户线程** 唯一的区别是判断JVM(虚拟机)何时离开。**当所有的用户线程都执行完,只存在守护线程在运行时,JVM就退出。守护线程的特性:JVM退出的时候,守护线程会自然退出。Java程序在main() 执行退出的时候,会触发JVM退出操作,但JVM退出方法会等待所有非守护线程都执行完毕。Thread.setDaemon(true) (将用户线程转成守护线程,需要在start()方法之前调用)。Thread final Thread thread1 = new Thr

2021-01-05 15:38:32 146

原创 SpringBoot 学习笔记三:RESTful和Transactional注解

一、RESTful API简述所有的东西都是资源,所有的操作都是对资源的增删改查(CRUD)。 对资源的增加、删除、修改、查询对应着POST、DELETE、POT、GET。 无状态(针对状态的web开发而言) 在基于状态的Web服务中,Client与Server交互的信息(如:用户登录状态)会保存在Server的Session中。再这样的前提下,Client中的用户请求只能被保存有此用户...

2019-08-02 14:07:18 225

原创 SpringBoot

一、java配置的实现java配置通过@Configuration 和@Bean实现。@Configuration 声明当前类是一个配置类,相当于一个Spring配置。 @Bean 注解在方法上,声明当前方法的返回值为一个Bean二、AOP 面向切面编程引入AOP的相关依赖 AOP的相关注解 @Aspect 注解声明一个切面 @Component 让此切面成为Spr...

2019-08-01 17:15:26 144 1

原创 断点续传-服务端下载Demo

参考其他人博客总结:客户端: /** * 下载 * @param locationFilePath 本地已下载的文件路径 * @param url 请求服务端路径 */ public static void download(String locationFilePath,String url) { FileOutputS...

2019-04-22 17:40:53 256

空空如也

空空如也

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

TA关注的人

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