- 博客(153)
- 收藏
- 关注
原创 看别人代码的一点点感悟
最近在看别人之前写的代码,写的真的是一言难尽,感觉逻辑混乱,方法职责不单一,使用四张表的数据,总数据量也就几十万条,用了多线程,在代码中处理树形结构,一个查询表头的方法,代码都写了一千多行,虽然需要功能也可以实现,但真的可以有更简单的实现方式,我试着写了一下,sql生成树形结构,代码中处理特殊的数据,总的代码不超过两百行,查询时间比之前可能还要快一些。写代码,自己必须思路清晰,有条理,每一行代码每一个方法实现什么功能,写之前,之中,之后多想想设计模式六大原则,对业务代码也是适用的。
2023-09-20 18:45:44 122
原创 Collections工具类中emptyList()、emptyMap()、emptySet()中空集合添加元素报错的问题
方法返回值类型为集合时,虽然使用以上三个空集合作为返回值,可以不用判断空指针问题,但是调用者往集合中添加数据时,会报UnsupportedOperationException异常。因为继承了抽象集合类,在添加数据时会调用父类的add()或put()方法,直接抛异常如果返回的空集合中不在添加元素可以使用以上方法,毕竟少占用一些内存。感觉有点鸡肋的一个方法...
2022-01-22 10:15:00 821
原创 maven install报ValidatorException: PKIX path building failed解决办法
主要是因为仓库地址证书在java的$JAVA_HOME/jre/lib/security/cacerts中不存在,验证不通过,提示这个错误解决办法:获取网站的证书,添加到java的该文件中1、获取网站安全证书,建议通过Chrome浏览器打开2、点击证书-》详细信息-》复制到文件-》导出文件格式选择Base64编码的X.509格式-》保存地址及文件名称填写3、把导出的文件导入到java文件中,以window系统为例keytool -import -file 导出文件的地址(例:D:\j
2022-01-08 17:27:56 644
转载 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketException"socket closed
问题描述:年后上班第一天,日常操作打开idea准备debug模式启动tomcat项目,却启动失败报错:Unable to open debugger port (127.0.0.1:60157): java.net.SocketException "socket closed"。原因分析: 可能是端口被占用导致,其他软件占用了tomcat的端口。 可能是在打开Tomcat的...
2019-12-09 23:02:32 2114
转载 Flex 布局教程:语法篇
网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地...
2019-12-07 11:02:58 147
原创 Mysql创建用户和数据库并授权
1、create user '用户名'@'%' identified by'密码';2、create database 数据库名;3、授予全部权限grant all privileges on 数据库名.* to 用户名@localhost identified by '密码';4、授予一部分权限grant select,insert,delete,update,create,...
2019-11-24 10:01:04 834
转载 IDEA设置Maven下载source、document
1、打开Maven设置2、在import设置中勾选source和document3、对原项目进行重新下载,打开右侧Maven projects,选中所有项目模块之后,点击download sources and/or documentation,即可重新下载依赖jar的源码及文档4、下载之后结果如下5、如果报Cannot download sources Sourc...
2019-11-02 16:36:26 11142
原创 window.open页面关闭后刷新父页面
当我们在前端window.open打开一个页面,在页面操作完关闭,需要刷新父页面的时候,会因为没有获取到子页面的关闭而不刷新。该怎么解决呢?var flag = window.open(url);var loop = setInterval(function(){ if(flag.closed){ clearInterval(loop); paren...
2019-09-23 20:35:51 2797
原创 ORA-01830:日期格式图片在转换整个输入字符串之前结束
今天查询数据库,在比较日期时出现错误:ORA-01830:日期格式图片在转换整个输入字符串之前结束错误原因:date类型不能包含秒以后的精度。解决办法:截取日期字符串数据库中的日期格式:s_atime = "2019-08-29 16:32:32.707"to_date(s_atime ,'yyyy-mm-dd')传入的是’yyyy-mm-dd’这种形式的,而程序调用...
2019-08-29 18:09:01 8236
转载 快速排序(过程图解)
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。假设我们现在对“612 7...
2019-08-08 19:50:41 1034
转载 关于微服务架构的描述
微服务翻译自Martin Fowler网站Microservices一文。文章篇幅较长,阅读需要一点耐心。本人水平有限,若有不妥之处,还请各位帮忙指正,谢谢。过去几年中出现了“微服务架构”这一术语,它描述了将软件应用程序设计为若干个可独立部署的服务套件的特定方法。尽管这种架构风格尚未有精确的定义,但围绕业务能力、自动部署、端点智能以及语言和数据的分散控制等组织来说,它们还是存...
2019-08-06 23:18:50 476
转载 熔断框架如何做技术选型?选用 Sentinel 还是 Hystrix?
如何做技术选型?Sentinel 还是 Hystrix?Sentinel 是阿里中间件团队研发的面向分布式服务架构的轻量级高可用流量控制组件,于 2018 年 7 月正式开源。Sentinel 主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户提升服务的稳定性。大家可能会问:Sentinel 和之前经常用到的熔断降级库 Netflix Hystrix 有什么异同呢?本文...
2019-08-06 23:03:13 674
转载 基于 timeout 机制为服务接口调用超时提供安全保护
基于 timeout 机制为服务接口调用超时提供安全保护一般来说,在调用依赖服务的接口的时候,比较常见的一个问题就是超时。超时是在一个复杂的分布式系统中,导致系统不稳定,或者系统抖动。出现大量超时,线程资源会被 hang 死,从而导致吞吐量大幅度下降,甚至服务崩溃。你去调用各种各样的依赖服务,特别是在大公司,你甚至都不认识开发一个服务的人,你都不知道那个人的技术水平怎么样,对那个人根本不了...
2019-08-06 20:42:17 288
转载 深入 Hystrix 线程池隔离与接口限流
深入 Hystrix 线程池隔离与接口限流前面讲了 Hystrix 的 request cache 请求缓存、fallback 优雅降级、circuit breaker 断路器快速熔断,这一讲,我们来详细说说 Hystrix 的线程池隔离与接口限流。Hystrix 通过判断线程池或者信号量是否已满,超出容量的请求,直接 Reject 走降级,从而达到限流的作用。限流是限制对后端的服...
2019-08-06 20:36:09 187
转载 深入 Hystrix 断路器执行原理
RequestVolumeThresholdHystrixCommandProperties.Setter() .withCircuitBreakerRequestVolumeThreshold(int)表示在滑动窗口中,至少有多少个请求,才可能触发断路。Hystrix 经过断路器的流量超过了一定的阈值,才有可能触发断路。比如说,要求在 10s 内经过断路器的流量必须达到 2...
2019-08-06 20:35:08 143
转载 基于本地缓存的 fallback 降级机制
基于本地缓存的 fallback 降级机制Hystrix 出现以下四种情况,都会去调用 fallback 降级机制:断路器处于打开的状态。 资源池已满(线程池+队列 / 信号量)。 Hystrix 调用各种接口,或者访问外部依赖,比如 MySQL、Redis、Zookeeper、Kafka 等等,出现了任何异常的情况。 访问外部依赖的时候,访问时间过长,报了 TimeoutExcep...
2019-08-06 20:33:44 293
转载 基于 request cache 请求缓存技术优化批量商品数据查询接口
基于 request cache 请求缓存技术优化批量商品数据查询接口Hystrix command 执行时 8 大步骤第三步,就是检查 Request cache 是否有缓存。首先,有一个概念,叫做 Request Context 请求上下文,一般来说,在一个 web 应用中,如果我们用到了 Hystrix,我们会在一个 filter 里面,对每一个请求都施加一个请求上下文。就是说,每一...
2019-08-06 19:10:36 225
转载 深入 Hystrix 执行时内部原理
深入 Hystrix 执行时内部原理前面我们了解了 Hystrix 最基本的支持高可用的技术:资源隔离+限流。创建 command; 执行这个 command; 配置这个 command 对应的 group 和线程池。这里,我们要讲一下,你开始执行这个 command,调用了这个 command 的 execute() 方法之后,Hystrix 底层的执行流程和步骤以及原理是什么...
2019-08-04 08:20:37 132
转载 Hystrix 隔离策略细粒度控制
Hystrix 隔离策略细粒度控制Hystrix 实现资源隔离,有两种策略:线程池隔离 信号量隔离对资源隔离这一块东西,其实可以做一定细粒度的一些控制。execution.isolation.strategy指定了 HystrixCommand.run() 的资源隔离策略:THREADorSEMAPHORE,一种基于线程池,一种基于信号量。// to use thre...
2019-08-04 08:19:17 1080
转载 Hystrix 信号量机制实现资源隔离
基于 Hystrix 信号量机制实现资源隔离Hystrix 里面核心的一项功能,其实就是所谓的资源隔离,要解决的最最核心的问题,就是将多个依赖服务的调用分别隔离到各自的资源池内。避免说对某一个依赖服务的调用,因为依赖服务的接口调用的延迟或者失败,导致服务所有的线程资源全部耗费在这个服务的接口调用上。一旦说某个服务的线程资源全部耗尽的话,就可能导致服务崩溃,甚至说这种故障会不断蔓延。Hyst...
2019-08-04 08:17:02 406
转载 Hystrix 线程池技术实现资源隔离
基于 Hystrix 线程池技术实现资源隔离上一讲提到,如果从 Nginx 开始,缓存都失效了,Nginx 会直接通过缓存服务调用商品服务获取最新商品数据(我们基于电商项目做个讨论),有可能出现调用延时而把缓存服务资源耗尽的情况。这里,我们就来说说,怎么通过 Hystrix 线程池技术实现资源隔离。资源隔离,就是说,你如果要把对某一个依赖服务的所有调用请求,全部隔离在同一份资源池内,不会去...
2019-08-04 08:16:03 97
转载 电商网站详情页系统架构
小型电商网站的商品详情页系统架构小型电商网站的页面展示采用页面全量静态化的思想。数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面,推入 Nginx 服务器。用户浏览网站页面时,取用一个已经静态化好的 html 页面,直接返回回去,不涉及任何的业务逻辑处理。下面是页面模板的简单 Demo 。<html> <body>...
2019-08-04 08:14:45 187
转载 Hystrix 介绍
参考Hystrix Home。Hystrix 是什么?在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix 通过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用...
2019-08-04 08:13:47 99
转载 集群部署时的分布式 Session 如何实现?
面试题集群部署时的分布式 session 如何实现?面试官心理分析面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式 session。当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,这里只是说一下常见的几个问题,也...
2019-08-04 08:11:04 101
转载 分布式事务了解吗?你们如何解决分布式事务问题的?TCC 如果出现网络连不通怎么办?XA 的一致性如何保证?
面试题分布式事务了解吗?你们是如何解决分布式事务问题的?面试官心理分析只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧。先不说你搞过没有,起码你得明白...
2019-08-04 08:09:25 317 1
转载 使用 Redis 如何设计分布式锁?使用 Zookeeper 来设计分布式锁可以吗?以上两种分布式锁的实现方式哪种效率比较高?
面试题一般实现分布式锁都有哪些方式?使用 redis 如何设计分布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?面试官心理分析其实一般问问题,都是这么问的,先问问你 zk,然后其实是要过渡到 zk 相关的一些问题里去,比如分布式锁。因为在分布式系统开发中,分布式锁的使用场景还是很常见的。面试题剖析redis 分布式锁官方叫做RedLock...
2019-08-04 08:07:50 220
转载 Zookeeper 都有哪些应用场景?
面试题zookeeper 都有哪些使用场景?面试官心理分析现在聊的 topic 是分布式系统,面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些认知了。那么他可能开始要跟你聊分布式相关的其它问题了。分布式锁这个东西,很常用的,你做 Java 系统开发,分布式系统,可能会有一些场景会用到。最常用的分布式锁就是基于 zookeeper ...
2019-08-04 08:06:45 240
转载 如何自己设计一个类似 Dubbo 的 RPC 框架?
面试题如何自己设计一个类似 Dubbo 的 RPC 框架?面试官心理分析说实话,就这问题,其实就跟问你如何自己设计一个 MQ 一样的道理,就考两个:你有没有对某个 rpc 框架原理有非常深入的理解。 你能不能从整体上来思考一下,如何设计一个 rpc 框架,考考你的系统设计能力。面试题剖析其实问到你这问题,你起码不能认怂,因为是知识的扫盲,那我不可能给你深入讲解什么 kafk...
2019-08-03 11:36:11 227
转载 分布式服务接口请求的顺序性如何保证?
面试题分布式服务接口请求的顺序性如何保证?面试官心理分析其实分布式系统接口的调用顺序,也是个问题,一般来说是不用保证顺序的。但是有时候可能确实是需要严格的顺序保证。给大家举个例子,你服务 A 调用服务 B,先插入再删除。好,结果俩请求过去了,落在不同机器上,可能插入请求因为某些原因执行慢了一些,导致删除请求先执行了,此时因为没数据所以啥效果也没有;结果这个时候插入请求过来了,好,数据插...
2019-08-03 11:35:27 473
转载 分布式服务接口的幂等性如何设计(比如不能重复扣款)?
面试题分布式服务接口的幂等性如何设计(比如不能重复扣款)?面试官心理分析从这个问题开始,面试官就已经进入了实际的生产问题的面试了。一个分布式系统中的某个接口,该如何保证幂等性?这个事儿其实是你做分布式系统的时候必须要考虑的一个生产环境的技术问题。啥意思呢?你看,假如你有个服务提供一些接口供外部调用,这个服务部署在了 5 台机器上,接着有个接口就是付款接口。然后人家用户在前端上操...
2019-08-03 11:34:35 312
转载 如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?
面试题如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?面试官心理分析服务治理,这个问题如果问你,其实就是看看你有没有服务治理的思想,因为这个是做过复杂微服务的人肯定会遇到的一个问题。服务降级,这个是涉及到复杂分布式系统中必备的一个话题,因为分布式系统互相来回调用,任何一个系统故障了,你不降级,直接就全盘崩溃?那就太坑爹了吧。失败重试,分布式系统中网络请求如此...
2019-08-03 11:33:51 166
转载 Dubbo 的 spi 思想是什么?
面试题dubbo 的 spi 思想是什么?面试官心理分析继续深入问呗,前面一些基础性的东西问完了,确定你应该都 ok,了解 dubbo 的一些基本东西,那么问个稍微难一点点的问题,就是 spi,先问问你 spi 是啥?然后问问你 dubbo 的 spi 是怎么实现的?其实就是看看你对 dubbo 的掌握如何。面试题剖析spi 是啥?spi,简单来说,就是service...
2019-08-03 11:32:57 161
转载 Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
面试题dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?面试官心理分析继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理。说白了,就是看你对 dubbo 熟悉不熟悉:dubbo 工作原理:服务注册、注册中心、消费者、代理通信、负载均衡; 网络通...
2019-08-03 11:31:51 370
转载 Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
面试题dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?面试官心理分析上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少要知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基本的。接着就可以针对底层进行深入的问问了,比如第一步就可以先问问序列化协议...
2019-08-03 11:30:59 541
转载 说一下 Dubbo 的工作原理?注册中心挂了可以继续通信吗?
面试题说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?面试官心理分析MQ、ES、Redis、Dubbo,上来先问你一些思考性的问题、原理,比如 kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的...
2019-08-03 11:29:59 170
转载 为什么要进行系统拆分?如何进行系统拆分?拆分后不用 Dubbo 可以吗?
面试题为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗?面试官心理分析从这个问题开始就进行分布式系统环节了,现在出去面试分布式都成标配了,没有哪个公司不问问你分布式的事儿。你要是不会分布式的东西,简直这简历没法看,没人会让你去面试。其实为啥会这样呢?这就是因为整个大行业技术发展的原因。早些年,印象中在 2010 年初的时候,整个 IT 行业,很少有人谈分布...
2019-08-03 11:28:54 311
转载 如何设计一个高并发系统?
面试题如何设计一个高并发系统?面试官心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天...
2019-08-02 15:41:56 158
转载 如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
面试题你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?面试官心理分析高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压...
2019-08-02 15:40:58 134
转载 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
面试题es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?面试官心理分析这个问题,包括后面的 redis 什么的,谈到 es、redis、mysql 分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿!有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过 es 集群,...
2019-08-02 15:39:42 417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人