自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红烧咸鱼的博客

躺着不站着....

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

原创 合并两个有序链表

题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解析:迭代法解决:遍历l1和l2若当前指向l1的指针的数小于当前指向l2指针的数,将小的l1指针的数取出,l1向后移动l2不动l2若小于l1也是...

2019-12-03 14:27:50 60

原创 从0到1整体认知分布式系统

概述分布式架构的发展历史与背景如何着手架构一套分布式系统Dubbo结构与设计说明一:分布式架构的发展历史与背景理解分布式架构:分布式架构是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。我们简单理解就是原来是一个节点干活,只有一个JVM进行操作。现在分布...

2019-12-03 01:42:26 141

原创 有效的括号

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:(1)左括号必须用相同类型的右括号闭合。(2)左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。...

2019-12-02 11:34:15 77

原创 最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解析我们使用了两种方法进行解析,但是都是水...

2019-11-28 16:40:17 61 2

原创 微服务开发(17)--Hystrix的原理&&Zuul的原理图

Hystrix的基本运行流程创建Command对象我们会判断熔断器是否开启当熔断器开启的时候,我们不会执行自己真正的逻辑,而是直接执行器降级方法,执行FallBack方法若FallBack方法执行成功,则返回Fallback方法的执行结果若Fallback方法执行失败,则抛出异常当熔断器关闭的时候,表示需要执行正常的逻辑当熔断器关闭走向正常的逻辑的时候,会先判断当前的...

2019-11-27 18:04:55 220

原创 颜色分类

题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意不能使用代码库中的排序函数来解决这道题示例输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶一个直观的解决方案是使用计数排序的两趟扫描算法。...

2019-11-26 20:37:25 168

原创 微服务开发(16)--SpringBoot源码分析外部tomcat启动war包的原理

前面我们已经介绍了SpringBoot的内置Tomcat的启动过程原理那么,SpringBoot打包成war包的时候,又是怎么运行的?在此之前先记结论SpringBoot程序是jar的方式,是通过IOC容器启动的方式,带动了Tomcat的启动;若SpringBoot程序是war包的方式,则是Tomcat启动带动了IOC容器的启动如何写一个war类型的SpringBoot程序首先打包...

2019-11-26 16:45:37 113

原创 微服务开发(12)--Hystrix的使用

分布式系统遇到的问题我们在使用分布式架构模式的情况下,会遇到服务雪崩等问题,先来明确几个概念服务扇出在分布式系统中,存在服务A调用服务B,而服务B又去调用服务C,服务D,这样的调用过程就是服务扇出服务雪崩或者级联故障在我们某一条扇出的服务调用链路中有一个服务,由于响应时间过程或者抛出异常,导致服务调用者老被占用越来越多的资源,从而导致整个系统崩溃,整个的过程就叫做服务雪崩或...

2019-11-26 15:13:00 50

原创 跳跃游戏

题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。注意:这里的到达最后一个位置表示的是只要经过就行,不一定非要刚好到达最后一个下标示例1输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例...

2019-11-25 21:23:06 37

原创 合并两个有序数组

题目给定两个有序整数组nums1和nums2,将nums2合并到nums1中,是的num1成为一个有序数组。说明初始化nums1和nums2的元素数量分别是m和n你可以假设nums1有足够的空间,空间大小大于或者等于m+n,以次来保存nums2中的元素示例输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3...

2019-11-23 21:50:29 25

原创 N皇后问题

题目n皇后问题研究的是如何将n个皇后放置在n*n的棋盘上。并且使皇后彼此之间不能相互攻击。皇后之间不能在同一行,同一列,正斜,反斜上同时存在上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…...

2019-11-23 12:05:16 24

原创 微服务开发(13)--ZUUL的使用

什么是网关Zuul是Netflix开源的微服务网关,它可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul的核心是一系列的过滤器Zuul网关也有负载均衡的功能,该负载均衡是服务端的负载均衡,因为客户访问网关,由服务网关来决定跳到哪一个服务,而不是自己决定的。一:主要功能身份认证与安全:识别每一个资源的验证要求,并且拒绝那些与要求不符合的请求审查与监控:在边缘位置...

2019-11-22 15:53:27 69

原创 最大子序之和

题目:给定一个整数组nums,找到一个具有最大和的连续子数组,子数组最少应该包含一个元素,返回其最大的和示例输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。要求时间复杂度O(n)思路:这个我们用动态规划的思路来解决,首先我们遍历数组如果sum > 0,则说明sum对...

2019-11-21 22:50:04 37

转载 MYSQL索引优化

参考这个

2019-11-20 14:15:52 25

原创 罗马数字转整数

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字...

2019-11-20 11:51:25 44

原创 整数反转

题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路...

2019-11-19 15:47:24 90

原创 无重复字符的最长子串

题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度实例1输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “w...

2019-11-19 14:40:36 26

原创 回文数

题目判断一个整数是否是回文数。回文数是指正序(从左到右)和倒序(从右到左)读都是一样的整数示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个...

2019-11-19 10:03:44 72

原创 微服务开发(10)--Feign的使用

SpringCloud OpenFeign什么是FeignFeign是Netflix开发的声明式,模板化的Http客户端。Feign可以帮助我们更加快捷的,优雅的调用Http API与Ribbon对比来说,Feign的速度相对会慢一点,Feign的底层实际上就是使用了Ribbon进行调用的Feign使用的是动态代理,而Ribbon使用的是拦截器Ribbon借由RestTemplate来...

2019-11-19 00:33:38 89

原创 微服务开发(9)--Ribbon的使用

SpringCloud Ribbon什么是RibbonSpringCloud Ribbon是基于NetFilix ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer(LB)获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。...

2019-11-18 23:26:21 56

原创 微服务开发(11)--Ribbon&Feign源码解析

Ribbon源码解析Ribbon的使用流程图从上图我们可以看到我们首先创建了一个Eureka集群,端口号分别为8001和8002User1服务和User2服务作为服务的提供方将自己的服务信息注册到Eureka中此时Order服务作为服务的消费者,我们会首先从Eureka中拉取服务注册列表,放到本地,做为缓存ribbon拉取的服务注册列表则是Order本都服务的注册列表,而不是自己从E...

2019-11-18 21:17:53 118

原创 两数相加

题目给出两个非空的链表用来表示两个非负整数。其中,他们各自的位数是按照逆序的方式进行存储的,并且他们的每个节点只能存储一位数字。如果,我们将这两个数字加起来,则会返回一个新的链表来表示他们的和。可以假设除了数字0以外,这两个数都不会以0开头示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:3...

2019-11-15 23:11:35 21

原创 两数之和

题目给定一个整数组nums和一个目标值target,请你在该数组中找出和为目标值的两个整数,并且返回他们的数组的下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例给定nums = [2, 7, 11, 15],target = 9因为nums[0] + nums[1] = 2 + 7 = 9所以返回[0, 1]解析(参考了leetco...

2019-11-14 16:01:19 19

原创 各位相加

题目描述:给定一个非负整数num,反复将各个位上的数字相加,直到结果是一位数为止,返回示例输入:38输出:2解释:各位相加的过程是:3 + 8 = 11, 1 +1 =2。由于2是一位数,所以返回2要求不使用循环或者递归,并且在O(1)时间复杂度内解决这个问题解析假设有一个三位数(其实几位数都行)n1 = 100 * a + 10 * b + c...

2019-11-14 11:41:43 49

原创 微服务开发(8)--Eureka源码深入分析(客户端)

Eureka客户端解析下图是我们Eureka客户端的主要流程分析:根据上图分析源码1. 查看我们的pom文件,发现我们导入了maven依赖 <!--Eureka的客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId&...

2019-11-13 00:39:55 129

原创 微服务开发(7)--Eureka源码深入分析(Server服务端)

看源码的方法:先使用: 先看官方文档快速掌握框架的基本使用抓主线: 找一个demo入手,顺腾摸瓜快速静态看一遍框架的主线源码(抓大放小),记得画出源码的主流程图,一定不要一开始就陷入源码的细枝末节,否则会把自己绕晕画图做笔记: 总结框架的一些核心功能点,从这些功能点入手深入到源码的细节,边看源码走向图,并对关键源码的理解做笔记,把源码里的闪光点都记录下来,后来可以借鉴到工作项目中,理解能力...

2019-11-13 00:10:38 136

原创 微服务开发(6)--微服务介绍及Eureka服务注册与发现详解

微服务入门一:微服务概述1. 微服务是什么(1)微服务的核心就是把传统的单机应用,根据业务将单机应用拆分成为一个个的服务,将其彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个个小的服务就是微服务。(2) 比如传统的单机电商应用,可以将整个服务化为订单,支付,库存,物流,积分等模块(这里的模块就是一个一个的s...

2019-11-11 17:40:11 73

原创 微服务开发(4)-- 手写starter启动器

自定义Starter在SpringBoot中我们已经分析了stater的原理,现在我们自己手写一个starter自定义starter的步骤(1)自定义starter(2)使用starter代码实现创建starter引入maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://ma...

2019-11-08 18:16:30 190

原创 微服务开发(5)--SpringBoot的内置Tomcat启动过程

内容讲解本章节我们主要讲解:(1)以redis的自动装配为例,如何修改RedisTemplate的序列化器(2)Bean的后置处理器的作用以及工作的时机(3)BeanPostProcess,InitializingBean以及自定义@Init的执行时机(4)tomcat的启动流程(==重点 ==)(5)如何扫描自己的组件,以及如何调用到@Import的注解如何修改RedisTem...

2019-11-07 23:39:22 602

原创 微服务开发(2)-- SpringBoot整合JDBC&Druid&MyBatis

SpringBoot整合JDBC代码实现导入maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

2019-11-06 23:03:57 65

原创 微服务开发(3)-- SpringBoot自动装配原理详解

SpringBoot自动装配原理详解这里我们以redis的集成为例,先体会下有自动装配和没有自动装配功能的代码的配置不使用自动装配功能(1)加入配置<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</art...

2019-11-06 21:23:33 582

原创 微服务开发(1)-- SpringBoot快速开始

一. SpringBoot的微服务开发利器什么是微服务,微服务和微服务架构的区别?目前而言,对于微服务业界没有一个统一的标准定义,但是通常而言提倡把单一的应用程序划分为一组小的服务每个小的服务都会运行在自己的进程中,服务之间通过轻量级的通信机制(http和rest api)来进行通信,那么这一个个的小服务就是微服务。单体架构:传统的单一电商应用来说,订单,支付,用户,商品,库存等模块...

2019-11-05 10:30:45 51

原创 分布式缓存架构(3)-Redis事务&主从复制&哨兵机制

Redis的主从复制概述:redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库,一类是从数据库,主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并且接受主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载均衡能力。主...

2019-11-03 03:24:38 76

原创 分布式缓存架构(2)-SpringBoot整合Redis

分布式Redis缓存什么是redis非关系型数据库,NOSQL可以设置有效期,是内存数据库,同时也可以将其持久化,保证数据的高可用Redis是由意大利人开发的一款内存高速缓存数据库,该数据库由C语言编写,Redis是一个key-value存储系统,他支持丰富的数据类型。如:string,list,set,zset(有序set),hashredis采用的是基于内存的采用单进程单线程模型的...

2019-11-01 16:50:09 56

原创 分布式缓存架构(1)-初始分布式缓存架构EhCache

为什么要使用缓存?为了减轻服务器端的压力缓存应用在什么地方?浏览器访问图片自带缓存技术CDN内容分发的时候做静态资源缓存代理缓存(Nginx)使用缓存技术的目的是为了减轻服务器端的压力。我们今天是在应用层去做缓存,就是代码层面实现缓存Session保存在服务器端,保存在单个JVM中,返回sessionId,将sessionId保存在响应头中,客户端存...

2019-10-28 17:38:16 78

原创 互联网安全架构(6)-基于OAuth2.0协议方式

Oauth2.0协议一般是用在互联网API开放平台上的,比如第三方联合登录等会用到Oauth2.0联合协议为什么会有Oauth2.0?因为在互联网开放平台中,接口互相调用,保证安全性的问题什么是开放平台?暴露公网IP提供API接口常见的开放平台:支付宝,微信,蚂蚁金服,百度等开放平台适合于大型互联网公司不同的开放平台对接的Oauth2.0的协议流程都是相同的,无非...

2019-10-27 01:30:29 67

原创 互联网安全架构(5)-基于AccessToken方式实现API设计

以一个小需求开始:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口的安全性?如何保证外网开放接口的安全性(1)搭建API网关接口,控制接口访问权限(2)开放平台设计,oAuth2.0协议。第三方联合登录的时候会使用,是用来针对API是否能够让外网访问到的权限,做安全认证(3)采用Https加密传输协议,使用Nginx配置Https证书...

2019-10-26 14:06:40 250

原创 互联网安全架构(4)-纯手互联网API接口幂等框架

纯手写API互联网幂等框架表单重复提交rpc远程调用的时候网络发生延迟的时候,可能会有重试机制针对上面的情况,我们就要设计程序的幂等性(幂等性:保证接口唯一,数据的唯一性,不重复)幂等性幂等性就是保证数据唯一的意思,保证幂等性就是防止了接口不能重复提交API接口幂等性的问题核心在于服务器的防御...

2019-10-25 12:10:57 80

原创 互联网安全架构(1)-Web常用攻击手段之XSS脚本&SQL注入攻击

XSS什么是XSS攻击手段XSS攻击使用JS脚本注入进行攻击;比如说在提交表单之后,展示到另一个界面,可能会受到XSS脚本注入,读取本地的cookie远程发送给黑客服务器端简单来说XSS就是想尽一切办法将可以执行的代码注入到网页中去,别入在输入框中写JS代码,恶意执行等CSRF是跨站请求的伪造,攻击者利用用户已经登录目标网站之后,诱导用户访问一个攻击的页面,利用目标网站对用户的信任,盗取...

2019-10-23 15:08:25 74

互联网安全架构(3)-Web常用攻击手段之上传文件漏洞&忘记密码漏洞&其他漏洞

忘记密码漏洞黑客使用抓包工具分析Http请求,在忘记密码找回的时候,需要发送一套短信验证码,如果验证码的数字比较短的时候,很容易使用暴力破解的方式攻击防御手段:(1)找回密码最好不要是单纯全部都是数字(2)建议验证码用数字+其他字符混合(3)如果找回密码接口重试5次以上还是错误,加上图形验证码,避免是机器(4)配置防止DDOS,限流,限制IP访问,黑名单和白名单在做值的传递的时候,...

2019-10-22 23:02:15 48

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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