自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yaofengdoit的博客

分享技术 分享生活

  • 博客(33)
  • 收藏
  • 关注

原创 每天学点Linux系列——linux常用基本命令

一、常用系统工作命令echo:用于在shell中打印shell变量的值,或者直接输出指定的字符串语法:echo(选项)(参数)说明:选项-e:激活转义字符 比如\b 删除前一个字符 选项-n 不自动换行举例:echo -e “qqw\bwe” 输出:qqwedate: 显示或设置系统时间与日期语法: date(选项)(参数)说明: 参数<+时间日期格式>:指定显示时使用的日期时间格式举例: date +"%Y-%m-%d" 输出:

2020-06-13 19:11:05 280

原创 spring5-aop简单记录

一、What?AOP,面向切面编程OOP面向对象编程的模式,OOP的主要功能是数据封装、继承和多态。OOP把系统看作多个对象的交互AOP是一种新的编程方式,AOP把系统分解为不同的关注点,或者称之为切面相关概念:Aspect:切面,即一个横跨多个核心逻辑的功能,或者称之为系统关注点Joinpoint:连接点,即定义在应用程序流程的何处插入切面的执行Pointcut:切入点,即一组连接点的集合Weaving:织入,指将切面整合到程序的执行流程中Target Object:目标对象,即真

2020-06-13 19:08:08 266

原创 微服务-Ribbon

    Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现,通过Spring Cloud Ribbon的封装,在微服务架构中使用客户端负载均衡调用非常简单。Ribbon是Spring Cloud整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质量和性能。一、客户端负载均衡负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。负载均衡分为:服务端负载均衡,又分为硬件负载均衡(比如F5)、软件负载均衡(比如

2020-05-30 21:40:59 440

原创 微服务-Nacos

    Nacos,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。这是官网对Nacos的定义。一、功能动态配置服务:以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。服务发现及管理:Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。动态DNS服务:通过支持

2020-05-30 21:38:24 408

原创 微服务RPC框架-Feign

    一个成熟的微服务集群,内部调用必然依赖一个好的RPC框架,比如:基于http协议的feign,基于私有tcp协议的dubbo。本文内容介绍feign。一、What?如果不使用rpc框架,那么调用服务需要走http的话,配置请求head、body,然后才能发起请求。获得响应体后,还需解析等操作,十分繁琐。Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真

2020-05-30 21:36:44 6708 2

原创 读书笔记之《大型分布式网站架构设计与实践》

    分布式系统的设计,涉及通信协议、远程调用、服务治理、系统安全、存储、搜索、监控、稳定性保障、性能优化、数据分析、数据挖掘等各个领域。这本书作者结合淘宝网的实际工作经历,重点介绍大型分布式系统的架构设计。写的时间比较早了,知识点相对来说全面,但是不够深入,架构思想还是很值得学习的。一、面向服务的体系架构(SOA)本章主要介绍和解决下面问题:HTTP协议的工作方式与HTTP网络协议栈的结构?如何实现基于HTTP协议和TCP协议的RPC调用,它们之间有何差别,分别适用何种场景?如何实现服务的动态

2020-05-30 21:32:02 212

原创 读书笔记之《Java并发编程的艺术》—— 四

由于内容过多,分一个系列来写,这是第四篇。九、Java中的线程池线程池用于异步或并发执行任务的场景,合理使用线程池带来的好处:(1)降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗;(2)提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行;(3)提高线程的可管理性,使用线程池统一分配、调优和监控。1、线程池的实现原理当向线程池提交一个任务后,线程池的主要处理流程:(1)线程池判断核心线程池里的线程是否都在执行任务,如果不是,那么创建一个新的工作线程来执行任务

2020-05-30 21:27:43 203

原创 读书笔记之《Java并发编程的艺术》—— 三

由于内容过多,分一个系列来写,这是第三篇。六、Java并发容器和框架1、ConcurrentHashMap的实现原理和使用HashMap1.7、1.8在多线程并发情况下都会出现死循环。HashTable使用synchronized保证线程安全,在线程竞争激烈的情况下,效率很低。ConcurrentHashMap1.7使用锁分段技术提升并发访问率。首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。ConcurrentHas

2020-05-30 21:23:20 203

原创 读书笔记之《Java并发编程的艺术》—— 二

由于内容过多,分一个系列来写,这是第二篇。三、Java内存模型1、Java内存模型的基础线程之间的通信机制有两种:共享内存和消息传递。在Java里,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。局部变量、方法定义参数、异常处理参数不会在线程间共享。Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。线程之间的共享变量存储在主内存,每个线程都有一个私有的本地内存(本地内存是JMM的一个抽象概念,并不真实存在)。JMM通过

2020-05-30 21:18:19 317

原创 读书笔记之《Java并发编程的艺术》—— 一

前言    这本书集合JDK的源码讲了Java并发框架、线程池的原理等,深入到JVM、CPU层面来讲解。推荐看过《Java多线程编程核心技术》之后,可以继续研究此书,提高自己。全书分为11章,下面将记录个人认为每章中重要的知识点。一、并发编程的挑战    并发编程的目的是为了让程序执行的更快,并不是启动更多的线程就能让程序最大限度的并发执行。需要考虑很多因素,比如上下文切换、死锁,以及硬件和软件资源的限制。1、上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行完一个时间片后会切换到下一

2020-05-30 21:09:39 288

原创 读书笔记之《Redis开发与运维》—— 三

由于内容过多,分一个系列来写,这是第三篇。五、持久化    持久化功能有效的避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。1、RDBRDB持久化是把当前进程数据生成快照保存在硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。手动触发的命令有:save和bgsave命令。save命令会阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上不要用。bgsave命令,Redis进程执行fork操作创建子进程,RDB持久化

2020-05-30 17:11:36 325

原创 读书笔记之《Redis开发与运维》—— 二

由于内容过多,分一个系列来写,这是第二篇。三、小功能大用处1、慢查询分析    慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息记录下来。注意是命令执行前后,redis客户端执行一条命令分为四步:发送命令、命令排队、命令执行、返回结果。所以没有慢查询不代表客户端没有超时问题。    redis提供了slowlog-log-slower-than和slowlog-max-len配置。slowlog-log-slower-than用于设置阀值,单位微秒,默认

2020-05-30 17:06:53 202 1

原创 读书笔记之《Redis开发与运维》—— 一

前言    读书笔记系列主要记录自己看的书籍中的知识点,算是一个归纳整理吧。Redis在我们的日常开发中可以说是很常用了,《Redis开发与运维》这本书讲解了Redis开发和运维的方方面面,很系统、全面,关键是实用。特来撸撸它,记录一番。全书分为14章,下面将记录个人认为每章中重要的知识点。一、Redis初识    Redis是一种基于键值对(key-value)的NoSQL数据库,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)

2020-05-30 16:59:40 352

原创 读书笔记之《Java多线程编程核心技术》

一、前言    读书笔记系列主要记录自己看的书籍中的知识点,算是一个归纳整理吧。《Java多线程编程核心技术》这本书主要讲解了Java多线程相关的知识。全书分为7章,下面将记录个人认为每章中重要的知识点。二、Java多线程的基础1、进程和线程进程是资源分配的最小单位,线程是CPU调度的最小单位。直观点理解:对于操作系统来说,一个任务就是一个进程,比如打开一个浏览器就是启动一个浏览器进程,打开两个记事本就启动了两个记事本进程。有些进程不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等

2020-05-30 16:48:17 204

原创 一文带你搞定ThreadLocal原理与使用

一、前言    成员变量会产生线程安全问题,局部变量不会有线程安全问题,因为局部变量是线程私有的,而成员变量是线程共享的。高并发的时候,调用一些公有的对象资源的时候,会有线程安全的问题。解决线程安全问题:(1)对成员变量进行加锁,这样的话其他线程要使用的话,就必须等待,耗时;(2)把成员变量变成局部方法变量,很显然,这样的话不合理,设置为局部变量,就不能在各个方法中使用了。这个时候可以使用Thr...

2020-04-10 23:06:20 193

原创 JVM系列(二)——Jvm内存结构

    JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块,由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆);栈又分为java虚拟机栈和...

2020-02-03 15:27:32 116

原创 记一次dubbo连接zookeeper注册中心发生异常的排查经历

    spring boot集成dubbo项目启动过程中报错,错误信息如下:2020-01-19 17:42:30.466 ERROR - [main] org.springframework.boot.SpringApplication.reportFailure(822) | Application run failedjava.lang.IllegalStateException: z...

2020-01-19 22:41:00 2081

原创 JVM系列(一)——java的类加载机制

    前言:之前零零碎碎学习过很多jvm相关的知识,由于平时工作业务代码并不会涉及过多jvm底层原理,所以很多知识点看了又忘,忘了又看。这次终于下定决心再来撸一遍,并写下此jvm系列文章。笔者才疏学浅,很多内容通过看书和查阅他人博客获取,在此感谢分享!1.何为类的加载?    类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个j...

2020-01-17 12:53:42 133

原创 mysql基础知识

前言:本文主要总结一下mysql常见的基础知识,内容比较基础,对于更多深入的内容,后面会写专门系列。1.MySQL本身实际上是一个SQL接口,它的内部包含了多种数据引擎,常用的包括:InnoDB:由Innobase Oy公司开发,支持事务;MyISAM:MySQL早期集成的默认数据库引擎,不支持事务。    MySQL接口和数据库引擎的关系就好比浏览器和浏览器引擎的关系。切换浏览器引擎不影...

2020-01-02 12:46:00 199 1

原创 spring5源码分析系列(九)——基于Annotation的依赖注入

    前言:从Spring2.0以后的版本开始,Spring引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以取代XML配置文件。注解可以大大简化配置,提高开发速度,但不能完全取代XML配置方式。XML方式更加灵活,并且发展的相对成熟,这种配置方式为大多数Spring开发者熟悉;注解方式使用起来...

2019-12-27 17:02:36 250

原创 spring5源码分析系列(八)——基于XML的依赖注入(二)

    前言:上一篇讲到了populateBean方法对Bean属性的依赖注入,此篇继续后面的内容。7.BeanDefinitionValueResolver解析属性值    当容器在对属性进行依赖注入时,如果发现属性值需要进行类型转换,比如属性值是容器中另一个Bean实例对象的引用,则容器首先需要根据属性值解析出所引用的对象,然后才能将该引用对象注入到目标实例对象的属性上去,对属性进行解析...

2019-12-27 10:28:37 133

原创 spring5源码分析系列(七)——基于XML的依赖注入(一)

    前言:前面系列文章分析了Spring IOC容器的初始化过程,接下来分析Spring的依赖注入。1.依赖注入发生的时间    当Spring IOC容器完成了Bean定义资源的定位、载入和注册以后,IOC容器中已经管理Bean定义的相关数据,但是此时IOC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况发生:(1)用户第一次通过getBean方法向IOC容索要Bean...

2019-12-27 10:27:02 141

原创 spring5源码分析系列(六)——IOC容器的初始化(四)

前言:上一篇讲到了解析子元素,此篇我们继续后面的内容。(15)解析过后的BeanDefinition在IOC容器中的注册接下来分析DefaultBeanDefinitionDocumentReader对Bean定义转换的Document对象解析的流程中,在其parseDefaultElement方法中完成对Document对象的解析后得到封装BeanDefinition的BeanDefinit...

2019-12-24 23:00:16 129

原创 spring5源码分析系列(五)——IOC容器的初始化(三)

前言:上一篇讲到了DocumentLoader将Bean定义资源转换为Document对象,此篇我们继续后面的内容。(9)XmlBeanDefinitionReader解析载入的Bean定义资源文件XmlBeanDefinitionReader类中的doLoadBeanDefinitions方法是从特定XML文件中实际载入Bean定义资源的方法,该方法在载入Bean定义资源之后将其转换为Doc...

2019-12-24 22:54:03 157

原创 spring5源码分析系列(四)——IOC容器的初始化(二)

前言:上一篇讲到了Xml Bean读取器(XmlBeanDefinitionReader)调用其父类AbstractBeanDefinitionReader的reader.loadBeanDefinitions方法读取Bean定义资源,此篇我们继续后面的内容。(5)AbstractBeanDefinitionReader的loadBeanDefinitions方法方法源码如下://重载方法,...

2019-12-24 22:50:16 128

原创 spring5源码分析系列(三)——IOC容器的初始化(一)

前言:IOC容器的初始化包括BeanDefinition的Resource定位、载入、注册三个基本过程。本文以ApplicationContext为例讲解,XmlWebApplicationContext、ClasspathXmlApplicationContext等都属于这个继承体系,这些都是我们日常开发中很熟悉的。其继承体系如下图:ApplicationContext允许上下文嵌套,通...

2019-12-22 20:00:11 211

原创 spring5源码分析系列(二)——spring核心容器体系结构

首先我们来认识下IOC和DI:IOC(Inversion of Control)控制反转:控制反转,就是把原先代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。所以需要创建一个容器,并且需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是可配置的文件。DI(Dependency Injection)依赖注入:指对象是被动接受依赖类而不是自己主动去找,即对象不...

2019-12-20 18:36:34 147

原创 spring5源码分析系列(一)——spring5框架模块

spring总共大约20个模块,这些模块被整合在核心容器(Core Container)、AOP和设备支持、数据访问及集成、Web、报文发送、Test 6个模块集合。组成Spring框架的每个模块集合或者模块都可以单独存在,也可以一个模块或者多个模块联合实现。模块组成和功能如下:1、核心容器:spring-beans、spring-core、spring-context、spring-exp...

2019-12-17 23:11:36 182

原创 java基础知识总结

1.变量类型基本类型:基本类型的变量“持有”某个数值;引用类型:引用类型的变量“指向”某个对象。2.基本数据类型基本数据类型是CPU可以直接进行运算的类型。java中的基本数据类型有:整数类型:byte short int long浮点数类型:float double字符类型:char布尔类型:boolean3.== 和 equals==判断两个变量或者实例是不是指向同一个...

2019-12-09 22:37:57 87

原创 JDK下bin文件夹常见几个可执行文件

bin目录下有很多的可执行文件:java.exe:运行Java程序,就是启动JVM,让JVM执行指定的编译后的代码;javac.exe:Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);jar.exe:用于把一组.class文件打包成一个.jar文件,便于发布;javadoc.exe:用于从Java源码中自动提取注释并生...

2019-12-07 16:44:06 2415

原创 git常用命令总结——覆盖日常开发全操作

前言:Git是目前世界上最先进的分布式版本控制系统,对的,最先进!1. 版本库,又名仓库,repository可理解成一个目录,目录里的所有文件都可被Git管理,Git可以跟踪每个文件的修改、删除等。版本库里最重要的是称为stage(也叫index)的暂存区,然后是Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD。注意:工作区指电脑上看到的目录,和版本库是不同...

2019-11-28 16:01:57 168

原创 inner join on会过滤掉两边空值的条件

前两天工作过程中,遇到一个问题,关于join on查询的,对于查出来的结果一直都很疑惑,这里记录一下。1.首先看下面这条sql查询语句:查询出来的结果是250532.加个 o.lat = n.lat 的条件:查询出来的结果是155863.现在我们将条件改成 o.lat != n.lat,查出来的结果是不是应该显示 25053-15586的差值呢?我们发现结果并不是预想的那样,而是...

2019-11-26 15:33:02 2349

原创 夏天的味道

人生若只如初见

2017-05-11 10:49:12 309

空空如也

空空如也

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

TA关注的人

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