自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 zookeeper实现配置中心

准备工作:zookeeper环境(单机、集群都可)一、实现思路因为zookeeper是通过zab协议实现的,能够保证数据在分布式系统中的一致性,可以实现配置中心的需求。具体实现思路创建连接;通过watch去监听各个事件的发生,从而做出对应的操作,如:监听到配置被修改,则同步修改本地服务的配置;通过回调函数去查看节点的状态、类型 和 结果。一般zookeeper会使用异步操作,所以需要使用到回调函数来获取一些返回结果,如:新增一条配置,被监听到,在回调函数可以获得其节点的状态 和 新增的值。.

2022-01-30 12:02:09 3130

原创 为什么使用Zookeeper

近期对zookeeper进行了学习,简单做一个知识总结。一、什么是ZookeeperZooKeeper是一个分布式的、开放源码的分布式协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。由于Hadoop生态系统中很多项目都依赖于zookeeper,如Pig,Hive等, 似乎很像一个动物园管理员,于是取名为Zookeeper。二、为什么要使用Zookeep.

2022-01-29 18:24:11 1963

原创 Redis内存策略

说明:这八种算法是基于redis5.0版之后的,他新增了allkeys-lfu,volatile-lfu这两种算法,也就是多了LFU算法,而LFU与LRU算法不同在于:LRU是淘汰最近最少使用的页面进行淘汰,而LFU是要求在页面置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但是以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。1.Redis内存策略1.1.内存使用情况说明Redis将数据

2022-01-17 15:57:44 370

原创 Redis持久化

为什么要对redis进行持久化?redis是一个内存数据库(非关系型数据库),当redis服务器重启,或电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。1.Redis持久化思想redis操作时,首先操作的都是内存中的数据。redis根据自身的配置选择不同的持久化方式,定期将内存中的数据保存到本地磁盘中,当redis重启服务时,首先会根据配置文件中指定的持久化文件恢复内存数据。2.RDB模式特点:定期实现数据备份,但是可能丢失数据;说明:如果实现用户操作100

2022-01-17 15:55:02 624

原创 Redis内存策略

说明:这八种算法是基于redis5.0版之后的,他新增了allkeys-lfu,volatile-lfu这两种算法,也就是多了LFU算法,而LFU与LRU算法不同在于:LRU是淘汰最近最少使用的页面进行淘汰,而LFU是要求在页面置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但是以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。1.Redis内存策略1.1.内存使用情况说明Redis将数据

2022-01-17 15:54:15 619

原创 Redis分片机制

1.分片概念及机制的作用如果没有分片机制,Redis就被局限于单机所支持的内存容量。Redis的分片机制允许数据拆分存放在不同的Redis实例上,每个Redis实例只包含所有键的子集。可以减轻单台Redis的压力,提升Redis扩展能力和计算能力。如果我们只使用一个Redis实例,让Redis宕机将会直接停止服务,所以我们可以采取分片机制,将原来一台Redis实例维护的数据,改为由多个Redis实例共同维护这部分数据。2.分片方案2.1.范围分片分片需要将不同key映射到不同Redis实例上存储,所

2022-01-17 15:48:08 3445

原创 Redis穿透、击穿、雪崩解决方案

1.缓存穿透key对应的数据在数据源并不存在,每次针对key的请求从缓存中获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。解决方法:采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对低层存储系统的查询压力。如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们扔把这个空结果进行缓存,但它的过期时间会很

2022-01-17 15:46:02 410

原创 设计模式——单例模式

【每周一文】开始设计模式之旅开篇单例模式(Singleton Pattern):只能有一个实例,控制创建对象的方式,只能通过一种方式去实例化;为了解决一个全局使用的类频繁地创建与销毁。一、使用场景要求生产唯一序列号;数据库的连接池不会反复创建;spring中⼀个单例模式bean的⽣成和使⽤;在我们平常的代码中需要设置全局的的⼀些属性保存二、优缺点优点:在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例;避免对资源的多重占用(比如写文件操作)。缺点:没有接口.

2021-12-05 17:49:29 3032

原创 设计模式开篇

【每周一文】作为一名当代码农,看到自己代码中的ifelse随处可见,给人的第一感觉是不整洁,逻辑不清晰,没有很好的遵循程序设计的原则;想着手去修复这些问题时,发现力不从心,这才意识到设计模式的重要性,所以开始接下来的“不归路”吧。开篇谁发明了设计模式?设计模式的概念最早是由克⾥斯托佛·亚历⼭⼤在其著作 《建筑模式语⾔》 中⾸次提出的。 本书介绍了城市设计的 “语⾔”,提供了253个描述城镇、邻⾥、住宅、花园、房间及⻄部构造的模式, ⽽此类 “语⾔” 的基本单元就是模式。后来,埃⾥希·伽玛、 约翰·.

2021-12-05 16:10:09 299

原创 SpringBean这一生要经历什么?

每天闲暇时间会来看一些“大鸟的输出”,学到很多知识,但忘的也快,所以给自己立个flag,把学到的东西记录下来,让它在脑子里停留时间更长一些,开始每周一文,话不多说,Iet’s go…开篇对于日常通过关键字new创建的Bean(对象),会经历实例化、初始化、销毁,都是JVM在帮我们运作,今天,我们来探讨一下SpringBean是怎样运作的呢。一、SpringBean的一生(执行顺序)二、代码测试代码测试结果:==========Spring容器初始化开始==========12月 03, .

2021-12-04 00:31:41 203

原创 Js的作用域和闭包

作用域的嵌套将形成作用域链,函数的嵌套将形成闭包。闭包与作用域链是JavaScript区别于其他语言的重要特征之一。作用域ES5中,作用域分为:全局作用域和函数作用域。全局作用域最外层函数定义的变量拥有全局作用域,任何内部函数都可以访问。var out = "out";function fn(){ console.log(out);}fn();局部作用域局部作用域一般只在固定的代码片段内可以访问,而对于函数外部无法进行访问。function fn(){ var inner =

2021-10-08 19:37:05 221

原创 java的继承,js是怎么实现的呢?

原型和原型链要点:理解原型的关键:所有的引用类型(数组、函数、对象)可以自由扩展属性(除null以外);所有的引用类型都有一个“proto”属性(也叫隐式原型,它是一个普通的对象);所有的函数都有一个“prototype”属性(也叫显式原型,他也是一个普通的对象);所有引用类型,它的“proto”属性指向它的构造函数的“prototype”属性;当试图得到一个对象的属性时,如果这个对象本身不存在这个属性,那么就会去它的“proto”属性(也就是它的构造函数的“prototype”属性)中去..

2021-10-08 19:36:46 96

原创 SpringBoot全局异常配置

上篇提到通过@ControllerAdvice和ResponseBodyAdvice接口实现对请求接口的拦截封装处理,进行统一格式返回,问题来了:程序在执行过程中难免会出现异常,怎样处理,是否也可以统一处理?实现全局异常处理1 创建返回异常信息枚举类ResultCodeEnum:用于封装错误信息,方便异常抛出时调用。package com.liyi.common.exception;import lombok.Getter;/** * @Author xuke * @Descripti.

2021-10-08 19:35:10 226

原创 架构学习-统一接口返回标准

对于统一返回的封装优化1.R类的封装格式为:{ code:200, data:{...}, message:""}package com.liyi.common;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Datapublic class R { public Integer code; public Object date;

2021-10-08 19:34:29 169

原创 Swagger应用

1.Swaggerswagger是依赖内嵌在项目中的一款在线文档测试工具,为我们带来很多便捷,检验接口的有效性。2.具体实现2.1 在pom.xml中引入依赖<!-- Swagger --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</v

2021-10-08 19:33:46 72

原创 SpringBoot中日志配置

1.打印日志的目的在日常开发中,会遇到不同的异常,日志方便我们去排查处理。2.SpringBoot的日志在SpringBoot的web启动依赖中包含有关于logging中的三个框架。分别为slf4j、logback、log4j3.slf4j、logback、log4j三者有何关系3.1 slf4j (Simple logging Facade for Java)意为简单日志门面,它只是一个接口,不实现日志的具体功能,为日志系统提供一套标准的调用api。日志的格式,记录级别,输出方式等功能都要通

2021-10-08 19:33:15 859

原创 什么是Bean、IoC

1.Bean定义Srping官方文档的bean定义In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans.A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC contai

2021-10-08 19:32:44 397

原创 前端开发规范

一、编程规约1.命名规范1.1.1 项目命名全部采用小写方式,已中划线分隔。正例:clinic-help / honlivhp-zhyy反例:clinic_help / honlivhpZHYY1.1.2 目录命名全部采用小写方式,以中划线分隔,有复数结构时,要采用复数命名法,缩写不用复数。正例:pages / components / utils / demo-styles / img反例:page / Components / Util / demo_styles / imgs【特殊

2021-10-08 19:32:09 426

原创 Vue路由跳转

一、<router-link tag="a" :to="{name:'测试页',params:{id:1} } }">点击跳转(name)</router-link>this.id = this.$route.params.id;二、<router-link tag="a" :to="{path:'./test',query:{id:1} } }">点击跳转(path)</router-link>this.id = this.$route.

2021-10-08 19:31:20 53

原创 Cookie和Session

1.Cookie客户端会话技术数据存储在客户端,只能存String类型,并且大小有限制,一般为4KB,Cookie数据有限制(20个),不同浏览器不同;一个Tomcat服务器中的共享问题:Cookie的获取限制,通过setPath()设置访问范围限制,默认为当前虚拟目录;多个Tomcat服务器下的共享问题:通过setDomain()设置域名,如果一级域名相同,二级域名下的cookie是可以访问到的;Cookie的持久化存储,setMaxAge()设置存储时间,如果不设置,默认关闭浏览器即删除(整数

2021-10-08 19:30:52 47

原创 Java基础02——API1

个人学习总结:API-API(Application Programming Interface)应用编程接口,一切可以调用的东西都是API。一、Object-所有对象的顶级父类。-存在java.lang包中,这个包不需要部门手动导包。常用方法:String toString()返回该对象的字符串表示int hashCode()返回该对象的哈希码值bool...

2020-03-12 11:51:12 129

原创 Java基础01——面向对象总结

个人学习总结:面向对象面向对象(OOP)是一种思想,通过这中思想可以把生活中复杂的事情变得简单化,万物皆对象。三大特征:封装性、继承性、多态性。每个对象具有三个特点:对象的状态——基本特征(如:姓名、性别…);对象的行为——功能(学习、工作…);对象的标识——唯一的地址值(身份证号)。一、封装-封装是指隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式。-好处:提高安全性...

2020-03-08 19:46:35 596

空空如也

空空如也

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

TA关注的人

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