自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

景月娇-Kathy

最大的敌人是自己

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

原创 稻盛和夫《干法》

疫情已经持续了3年了,国家双减政策也这期间落地了,我所在的互联网教育行业一下子从鼎盛走向了衰落,我也成为了被裁大军中的一员。本想着终于有时间出去看看世界,却因为疫情哪里也去不了,索性就在家休养生息了2个多月。在这段迷茫的日子里,我学会了蒸包子、炖汤和烙大饼等一系列生存技能。6月初,看着那些早出晚归的同龄年轻人们,我没有了安全感,我需要工作。可是,在大环境的影响下,公司很多都在裁员,招聘的公司很少,即使有,也大都是打着招聘的幌子给HR增加绩效而已。问了几个还在工作的朋友,听到的回复是:“公司卷的很。”“天天加

2022-07-01 12:02:49 115 1

原创 情绪赋能领导力

管理的实质是计划、组织、领导和控制,但在整个管理的过程中还有一个重要的影响因素——情绪。一位心理学家说:“人类最深刻的本质是渴望得到赏识。”德鲁克也认为:“管理的本质就是激发善意和本能。”......

2022-06-30 16:40:09 214 1

原创 JAVA中的协变和逆变

协变逆变的概念可变性是以一种类型安全的方式,将一个对象当做另一个对象来使用。如果不能将一个类型替换成为另一个类型,那么这个类型就称之为:不变量。协变:如果某个返回的类型可以由其派生类替换,那么这个类型就是支持协变的。逆变:如果某个参数类型可以由其基类替换,那么这个类就是支持逆变的。如Function, 在这里R 作为函数的返回值, 所以这个泛型要协变, 而T用在函数的参数上所以要用逆变Function<? super Dog,? extends Animal> f1;协变如:L

2020-12-27 21:18:04 1911 2

原创 一致性Hash

目的一致性Hash是一种特殊的Hash算法,解决了简单Hash算法在分布式Hash表中存在的动态伸缩问题。栗子redis做数据分布式存储(高并发,海量数据)方法演进1、Hash算法hash(节点属性name)=200200 % 3 = 2新增一个节点200 % 4 = 0问题:新增节点后,缓存失效,造成缓存雪崩。2、一致性Hash用hash的非负整数值范围做一个圆环对集群的节点的某个属性(比如节点名)求hash值,放在环上对数据key求hash值,也放在环上,按顺时针方向找到

2020-12-09 20:12:08 125

原创 IOC

IOC英文:Inverse of control控制翻转,又被称之为依赖注入,是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC在其他语言上也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(key,value),Map中存放的是各种对象。将对象之间的相互依赖的关系交给IOC容器来管理,并由IOC容器完成对象的注入。我们完全不用考虑对象是如何被创建出来的,这样可以很大程度上简化应用的开发,把应用从复杂的依

2020-12-09 20:09:40 243

原创 爬虫入门小程序-java

来个小程序,先小爬一下。。。1.pom文件 <dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version>

2020-08-19 21:51:30 185

原创 你一定会了解的灰度发布

什么是灰度发布?在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍蓝绿部署如图:所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版.

2020-07-23 19:50:57 193

原创 本地git 连接 gitlab 的配置

配置1、点击 git bash ,输入 ssh-keygen,三下回车,在你的 C:\Users\用户名.ssh 的路径下生成一个公钥的私钥2、打开公钥,复制其中的内容,打开git,在设置中输入复制的公钥如下图3、title一般会自动生成原理为了在不同平台/网络主机之间的通信安全, 很多时候我们都要通过ssh进行认证. ssh认证方式主要有2种:① 基于口令的安全认证: 每次登录的时候都要输入用户名和密码, 由于要在网络上传输密码, 可能存在中间人攻击的风险;② 基于密钥的安全认证:

2020-07-19 09:06:50 1229

原创 git、GitHub、gitLab

简要介绍:git,是一种版本控制系统,是一个命令,是一种工具gitHub,是一种基于git实现的在线代码仓库,包含一个网页界面,向互联网开放gitLab,是一种基于git实现的在线代码仓库软件,个人可以用gitLab搭建一个GitHub一样的系统,一般用于在企业、学校等内部网络搭建git私服。怎样选择?如果个人写的代码是不重要的,可以让所有人看看,选择开源,选哪一个都没差别。如果个人写的代码比较有点水平,不想让别人看到,就使用gitlab。最主要原因gitlab免费支持私人仓库,而gith

2020-07-19 08:16:28 100

原创 vue cli3 生产环境打包压缩Gzip

1.安装打包工具:npm install --save-dev compression-webpack-plugin2、配置vue.config.js 文件const CompressionWebpackPlugin = require("compression-webpack-plugin");const productionGzipExtensions = ["js", "css"];module.exports = { productionSourceMap: false, devSe

2020-06-29 20:35:34 894

原创 js 开始日期+天数=结束日期

输入开始日期,天数 dateAddDays() { console.log(this.getNewDay("2016-03-01", 30)); }计算结束日期 getNewDay(dateTemp, days) { dateTemp = dateTemp.split("-"); //转换为MM-DD-YYYY格式 var nDate = new Date(dateTemp[1] + "-" + dateTemp[2] + "-"

2020-06-24 14:41:38 690

原创 java 可变参数 T...

T…(T是某种类型,…可变,所有T…就是某有类型的可变参数的意思)常见数组操作 String[] values= new String[]{"jingyuejiao","caoxueliang"};可变数组操作 private static <T> T[] of(T...values){ return values; } String[] values1=of("jingyuejiao","caoxueliao","yuanr

2020-06-24 10:05:28 1288

转载 js获取当前时间字符串 格式yyyy-MM-dd HH:MM:SS

代码/**获取当前时间 格式:yyyy-MM-dd HH:MM:SS*/function getCurrentTime() {var date = new Date();//当前时间var month = zeroFill(date.getMonth() + 1);//月var day = zeroFill(date.getDate());//日var hour = zeroF...

2020-05-02 09:23:44 3624 2

原创 报错:const definitions are not supported by current javascript version

报错信息:当前javascript版本不支持const定义出现这个问题的原因是EcmaScript 6 里面才有的关键字,以往的版本没有,所有要改一下版本,方法如下:

2020-04-08 17:51:58 3472 1

原创 vue-绑定class样式

1、数组语法我们可以借助于v-bind指令来实现:HTML:<div id="app"> <div v-bind:class="activeClass"></div> <div v-bind:class="errorClass"></div> <div v-bind:class="[activeClas...

2020-04-07 17:28:32 144 1

原创 v-else

你可以使用 v-else 指令来表示 v-if 的“else 块”:<div id="app"> <h1 v-if="Math.random() > 0.5"> 看到我啦?!if </h1> <h1 v-else> 看到我啦?!else </h1></div&...

2020-04-07 16:32:50 5981

原创 vue-生命周期钩子

文章目录1.生命周期2.钩子函数1.生命周期每个 Vue 实例在被创建时都要经过一系列的初始化过程 :创建实例,装载模板,渲染模板等等。Vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每当Vue实例处于不同的生命周期时,对应的函数就会被触发调用。生命周期:2.钩子函数beforeCreated:我们在用Vue时都要进行实例化,因此,该函数就是在Vue实例化时调用,也可以将他...

2020-04-07 11:56:16 99

原创 ES6-map和reduce

数组中新增了map和reduce方法。1、mapmap():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。举例:有一个字符串数组,我们希望转为int数组let arr = ['1','20','-5','3'];console.log(arr)arr = arr.map(s => parseInt(s));console.log(arr)2、r...

2020-04-07 11:03:09 445

原创 ES6-箭头函数结合解构表达式

比如有一个函数:const person = { name:"jack", age:21, language: ['java','js','css']}function hello(person) { console.log("hello," + person.name)}如果用箭头函数和解构表达式var hi = ({name}) => c...

2020-04-07 10:58:20 197

原创 ES6-对象的函数属性简写

比如一个Person对象,里面有eat方法:let person = { name: "jack", // 以前: eat: function (food) { console.log(this.name + "在吃" + food); }, // 箭头函数版: eat2: food => console.log(person...

2020-04-07 10:56:49 1045

原创 ES6-箭头函数

ES6中定义函数的简写方式:一个参数时:var print = function (obj) { console.log(obj);}// 简写为:var print2 = obj => console.log(obj);多个参数:// 两个参数的情况:var sum = function (a , b) { return a + b;}// 简写为:...

2020-04-07 10:55:15 77

原创 ES6-函数参数默认值

在ES6以前,我们无法给一个函数参数设置默认值,只能采用变通写法: function add(a , b) { // 判断b是否为空,为空就给默认值1 b = b || 1; return a + b; } // 传一个参数 console.log(add(10));现在可以这么写: function add(a ...

2020-04-07 10:53:47 94

原创 ES6-解构表达式

1、数组解构let arr = [1,2,3]我想获取其中的值,只能通过角标。ES6可以这样:const [x,y,z] = arr;// x,y,z将与arr中的每个位置对应来取值// 然后打印console.log(x,y,z);结果:2、对象解构例如有个person对象:const person = { name:"jack", age:21, ...

2020-04-07 10:28:36 376 1

原创 ES6-var、let和const

1、 var之前,js定义变量只有一个关键字:varvar有一个问题,就是定义的变量有时会莫名奇妙的成为全局变量。例如这样的一段代码:for(var i = 0; i < 5; i++){ console.log(i);}console.log("循环外:" + i)你猜下打印的结果是什么?2、 letlet所声明的变量,只在let命令所在的代码块内有...

2020-04-07 00:11:25 73

原创 ZuulFilter过滤器

文章目录1、过滤器1.1 ZuulFilter1.2 过滤器执行生命周期1.3 使用场景2、自定义过滤器2.1 定义过滤器类2.2 测试Zuul作为网关的其中一个重要功能,就是实现请求的鉴权。而这个动作我们往往是通过Zuul提供的过滤器来实现的。1、过滤器1.1 ZuulFilterZuulFilter是过滤器的顶级父类。在这里我们看一下其中定义的4个最重要的方法:public ab...

2020-04-06 23:33:23 1574

原创 SpringCloud-Zuul网关实践

文章目录1 zuul网关1.1 新建工程1.2 编写配置1.3 编写引导类1.4 编写路由规则1.5 启动测试2. 面向服务的路由3 简化的路由配置4 默认的路由规则5 路由前缀1 zuul网关1.1 新建工程填写基本信息:添加Zuul依赖1.2 编写配置server: port: 10010 #服务端口spring: application: name: a...

2020-04-06 11:13:10 173

原创 SpringCloud-Zuul网关入门

文章目录Zuul的引入过程1. 未引入前2. 不足3. 问题解决Zuul简介Zuul加入后的架构Zuul的引入过程1. 未引入前通过前面的学习,使用Spring Cloud实现微服务的架构基本成型,大致是这样的:我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载。为了使得服务...

2020-04-05 16:39:46 85

原创 SpringCloud-Feign入门

文章目录引言简介1.导入依赖2.开启Feign功能3.Feign的客户端总结引言在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:String user = this.restTemplate.getForObject("http://service-provider/user/" + id, String.class);如果就学到这里,你可能以后需要编写...

2020-04-05 11:53:21 256

原创 Hystrix-服务熔断

一、熔断原理熔断器,也叫断路器,其英文单词为:Circuit Breaker熔断状态机3个状态:Closed:关闭状态,所有请求都正常访问。Open:打开状态,所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。Half Open:半开状态,open状态不是永久的,打...

2020-04-03 17:39:02 176

原创 Hystrix-线程隔离,服务降级

一、线程隔离示意图:解读:Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理,什么是服务降级?服务降级:优先保证核心服务,而非核心服务不可用或弱可用用户的请求故障时,不会被阻塞,更不会无休止的等待或者看...

2020-04-03 17:20:12 226

原创 SpringCloud-雪崩问题的解决方法

文章目录一、雪崩产生的原因二、Hystix解决雪崩问题三、降级和熔断一、雪崩产生的原因微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:如图,一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。如果此时,某个服务出现异常:例如微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,...

2020-04-03 16:47:00 1441

原创 zuul启动报错:com.netflix.zuul.exception.ZuulException: Forwarding error

报错给SpringClout项目搭了一个Zuul网关,结果启动之后,一访问就报错,最直接的信息就是:1、com.netflix.zuul.exception.ZuulException: Forwarding error2、Caused by: com.netflix.client.ClientException: Load balancer does not have available ...

2020-03-26 11:43:48 18838 2

原创 Eureka服务注册与获取

文章目录一、Eureka服务注册1、pom.xml2、application.yml3、引导类 4、重启项目,访问Eureka监控页面查看二、Eureka服务获取1、修改UserController代码一、Eureka服务注册注册服务,就是在服务上添加Eureka的客户端依赖,客户端代码会自动把服务注册到EurekaServer中。修改itcast-service-provider工程在...

2020-03-23 21:51:10 777

原创 EurekaServer搭建

文章目录1、完整的Pom文件:2、编写application.yml配置:3、修改引导类,在类上添加@EnableEurekaServer注解:4、启动服务,并访问:http://127.0.0.1:100861、完整的Pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apach...

2020-03-23 21:22:27 80

原创 Eureka注册中心简介

EurekaEureka百度百科为什么要用Eureka?Eureka做什么?原理图Eureka百度百科Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。...

2020-03-23 16:27:04 333

原创 RPC和HTTP对比

文章目录1、 OSI七层网络模型2、优缺点3、总结无论是微服务还是SOA(面向服务的架构),都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?常见的远程调用方式有以下2种:RPC和Http。其中Http大家很熟悉不多说,RPC是什么呢?RPC基础概念RPC就是远程过程调用协议,其作用就是客户端与服务端之间的远程调用,就像本地自己调用一样,让服务端进行服务化1、 OSI七层网络模...

2020-03-23 11:10:17 3114 2

原创 HTTP 请求工具类-RestTemplate

RestTemplate什么是RestTemplate?一个简单的例子手动指定转换器(HttpMessageConverter)什么是RestTemplate?传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。一个简单的例子定义一个简单...

2020-03-22 13:19:46 808

原创 解释@Bean 和@Autowired

搜索全网,这是我看到的最简单的对@Bean 和@Autowired的解释:@Bean 和 @Autowired 做了两件完全不同的事情:@Bean 告诉 Spring:“这是这个类的一个实例,请保留它,并在我请求时将它还给我”。@Autowired 说:“请给我一个这个类的实例,例如,一个我之前用@Bean注释创建的实例”。...

2020-03-22 00:01:22 1479 2

原创 idea代码格式美化快捷键

做项目经常会遇到代码格式混乱的情况,Ctrl+Alt+L 快捷键就可以解决这个问题,如果不管用,可能是因为热键占用的问题,试一试 Ctrl+Shift+Alt+L,帮你的代码重归整洁。...

2020-03-20 16:22:12 17205 2

原创 反向代理负载均衡模式的优缺点-nginx

反向代理反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。负载均衡反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。...

2020-03-16 15:23:03 543

空空如也

空空如也

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

TA关注的人

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