JS常见的报错及异常捕获
在开发中,有时,我们花了几个小时写的Js 代码,在游览器调试一看,控制台一堆红,瞬间一万头草泥马奔腾而来。至此,本文主要记录Js 常见的一些错误类型,以及常见的报错信息,分析其报错原因,并给予处理方法。并且将介绍几种捕获异常的方法。注:本文使用的谷歌游览器验证,不同的游览器,报错可能会不一样。常见的错误类型含义:超出了最大的堆栈大小为什么报错?在使用递归时消耗大量堆栈,导致游览器抛出错误,因为游览器给分配的内存不是无限的。举个栗子:处理办法:使用递归的时候,设定一个条件来终止递归,否则会无限循环,直到用
零拷贝真的很重要!!!
零拷贝作为很多中间件和框架的核心知识,在很多场景有很多的应用,例如:JavaNIO、Netty底层的通信协议有用到零拷贝,Kafka之所以这么快也用到了零拷贝,RocktMQ存储的核心也有用到零拷贝,所以面试的时候,是经常出现的,是重点中的重点!一、IO的一些基本概念1.1、缓冲区缓冲区是所有I/O的基础,I/O讲的无非就是把数据移进或移出缓冲区;进程执行I/O操作,就是向操作系统发...
Redis过期删除是如何做的?
当一个键处于过期的状态,其实在 Redis 中这个内存并不是实时就被从内存中进行摘除,而是 Redis 通过一定的机制去把一些处于过期键进行移除,进而达到内存的释放,那么当一个键处于过期,Redis 会在什么时候去删除?几时被删除存在三种可能性,这三种可能性也代表了 Redis 的三种不同的删除策略。定时删除:在设置键过去的时间同时,创建一个定时器,让定时器在键过期时间来临,立即执行对键的...
Redis到底有没有ACID事务
要弄清楚 Redis 有没有事务,其实很简单,上 Redis 的官网查看文档,发现:Redis 确实是有事务,不过按照传统的事务定义 ACID 来看,Redis 是不是都具备了 ACID 的特性。ACID 指的是:原子性 一致性 隔离性 持久性我们将使用以上 Redis 事务的命令来检验是否 Redis 都具备了 ACID 的各个特征。1、原子性事务具备原子性指的是...
spring事务从底层掌握其实现原理
流程介绍主流程介绍众所周知,Spring事务采用AOP的方式实现,我们从TransactionAspectSupport这个类开始分析。获取事务的属性(@Transactional注解中的配置)加载配置中的TransactionManager.获取收集事务信息TransactionInfo执行目标方法出现异常,尝试处理。清理事务相关信息提交事务//1. 获取@Transac...
ApplicationContextAware接口的setApplicationContext方法调用过程
我们都知道实现了ApplicationContextAware接口的类会被调用setApplicationContext方法,从而获取到spring容器的上下文。但是这个调用过程缺很少有人知道,现在博主通过源码分析带大家掌握这个调用过程。1、当我们启动spring容器的时候,我们执行到refresh()方法。其中我们进入prepareBeanFactory(beanFactory);去看看。...
源码分析FactoryBean接口不为人知的秘密
FactoryBean接口在spring中是一个非常好用且容易被人忽略的接口。OK借助这个机会我们把它的秘密扒出来,让它落体出镜好吧。首先贴一个代码:import org.springframework.beans.factory.FactoryBean;public class FactoryBeanTest implements FactoryBean { private U...
如何在spring源码里面写注释并且能断点调试
热爱spring源码的同学,应该都希望在自己的spring源码jar包里面写点注释来加深对源码的理解,这篇博客主要就是告诉大家如何做到这点:1、下载spring源码我这里是下载的最新版本的spring源码,并且使用的是马云镜像,千万不要用GitHub下载,太慢了,慢得想死git clone --branch v5.1.3.RELEASE https://gitee.com...
spring中动态数据源切换失效问题剖析
我们在使用spring中动态数据源的时候,往往在业务代码中需要指定数据源,在进行业务操作的时候就会去指定的数据源操作数据:代码如下数据源,两个数据源,ds1,ds2:@Bean public DataSource dynamicDataSource() { Map<Object, Object> targetDataSources = new ...
spring事务中的超时时间很多人都不理解
在spring中如何使用事务是一个很大的问题,其中有一个我需要在这篇文章中着重讲解一下,就是spring事务中的超时时间问题,很多同学不知道如何才能是这个超时时间生效,导致在使用过程中出现各种各样的问题。1、使用mybatis框架来做数据库操作代码案例如下:@Transactional(propagation = Propagation.REQUIRED,timeout = 5) @...
带有@Transactional和@Async的循环依赖问题
今天我们来探讨一个有意思的spring源码问题,也是一个学生告诉了我现象我从源码里面找到了这个有意思的问题。首先我们看service层的代码案例,如下:@Service("transationServiceImpl")public class TransationServiceImpl implements TransationService { @Autowired Tr...
mysql数据库架构和同步复制流程
在分布式系统里面,往往制约整个系统发展的瓶颈点就是数据库,所以数据库的架构和高可用以及数据库的切分都是我们值得花大力气去学习的。首先我们来说说数据库的架构。1、mysql主从架构,如图:这种架构基本上90%以上会采用的数据库架构。这种架构的优点:1、数据库架构简单2、维护方便缺点:1、master存在单点问题,不能停机维护2、读压力大slave过多的话,主从同步会影响master的性能2、Dual Master 复制架构上面的主从架构存在明显的单点master问题,master不能停
Java工程师到底写简历才能有面试电话? 看完我写的内容再说
OK, 我们今天来聊一聊简历,从今年的金3银4到金9银10,这2段时间我收到了很多很多的简历每天人事根据招聘匹配度高的简历, 推荐到我这来, 我每天收到的Java简历至少有20封以上,但考虑到面试效率,90%以上的简历没看到20S钟就被PASS掉了, 为什么呢, 各种原因吧, 有的是排版, 有的简历内容随意, 20S钟之内没看到我想看的信息,各位小伙伴, 你们将简历投递给公司, 其实就跟你相亲一样, 简历是你给别人的唯一第一印象,所以,我今天从技术面试官的角度来给分享一下, 什么样的简历能触动面试官,并
为什么要学习源码?架构师告诉你原因
说起源码, 我相信大家都比较头疼, 有很多人面试也是坑在源码上, 那为什么要学习源码,我结合自己多年的源码阅读经验,一、James给大家总结几点:1、让个人技术快速成长:优秀的开源框架,底层的源码设计思想也非常优秀,同时还有含有大量的设计模式和并发编程技术,优秀的解决方案,熟读源码对猿们技术提升有很大帮助2、新技术学习能力:Java开源码框架的源码熟读后,若出现新的开源技术,能根据经验或官网资料快速掌握底层的实现,不怕技术更新迭代3、工作中解决问题能力:很多人开发过程中或线上遇到BUG, 首先
Seata事务操作实战,快速搞定分布式事务
Seata如何结合Naocs完成事务操作呢?1,下载seata2,安装seata3,seata启动4,Seata如何实现事务控制?1,引入jar包2,proxy代理数据源配置3,核心配置拷贝4,新建yml文件1,下载seatahttps://github.com/seata/seata/releases或到James的网盘下载链接:https://pan.baidu.com/s/1-18nNRULIR-LwPPyRHsIOg提取码:l6r9注意: 先需要把nacos启动2,安装seataA
<重要>James带你透彻分析三大代理模式
James带你透彻分析三大代理模式1.代理模式1.1.快速掌握静态代理1.2.JDK动态代理1.3.Cglib动态代理1.代理模式Java最经典的设计模式代理模式(Proxy), 在我们开发及框架源码中无处不在,其实说白了, 就是我们使用另外一种方式来访问A对象的方法, 其本质还是访问了A对象的方法, 只是对A对象方法访问的时候做了些扩展, 把A对象封装成代理对象AA, 即通过AA代理对象来访问目标对象. 这样就可以在A对象的基础上,实现其它的额外附加功能;AA对象也叫做代理对象, 在不动A对象的前.
微服务如何向Nacos进行注册及心跳检测?James带你从源码一步步深入分析
大家好, 我是James, 最近整理了一下客户端微服务向Nacos注册及心跳的源码分析, 希望对大家学习有帮助, 源码可以找我的助理要一下哈v: lzc1314592首先下载好Nacos的源码关于源码怎么导入到maven, 在预习资料有个文档,写的很清楚Nacos源码分析访问nacos启动业务服务然后再停掉一个服务发现变成1了如果客户端访问刚关闭的那台服务, 是不是会报错呢?有可能还会调到已停的服务, 怎么处理?其实就是做了一个服务降级的处理互联网线上一般对非核心非关键的
Redis队列和专业MQ的对比和选型
大家好,我是 Jack。我经常听到很多人讨论,关于「把 Redis 当作队列来用是否合适」的问题。有些人表示赞成,他们认为 Redis 很轻量,用作队列很方便。也些人则反对,认为 Redis 会「丢」数据,最好还是用「专业」的队列中间件更稳妥。究竟哪种方案更好呢?这篇文章,我就和你聊一聊把 Redis 当作队列,究竟是否合适这个问题。我会从简单到复杂,一步步带你梳理其中的细节,把这个问题真正的讲清楚。看完这篇文章后,我希望你对这个问题你会有全新的认识。在文章的最后,我还会告诉你关于「技术选型」的思路,文章有
spring循环依赖之三级缓存的深入理解
都知道Spring通过三级缓存来解决循环依赖的问题。但是是不是必须三级缓存才能解决,二级缓存不能解决吗?很多篇文章都说第二级缓存不能去掉,是因为创建代理时要用到,那第三级缓存可以去掉吗?要分析是不是可以去掉,就先过一遍Spring是如何通过三级缓存来解决循环依赖的。所谓的循环依赖,就是两个或则两个以上的bean互相依赖对方,最终形成闭环。比如“A对象依赖B对象,而B对象也依赖A对象”,或者“A对象依赖B对象,B对象依赖C对象,C对象依赖A对象”;类似以下代码:常规情况下,会出现以下情况:Spring解
看了这篇文章CAP你还不懂,我打你!
看完下面这些文字,保证你对CAP能理解的特别通透!!!关于 CAP 为何你读了那么多文章都还是搞不明白呢?因为 CAP 理论来自学术界,而解读 CAP 理论的人尝试用工程师的方式去阐述它,这本身就有了问题。CAP 本身基于状态,基于瞬态,是一个描述性的理论,它并不解决工程问题。但是,很多工程师却总是尝试为 CAP 做过多解读。比如,非要说 CAP 理论只能适合某某场景,非要说 CAP 理论里的一致性是非常强的一致性,把其和事务的一致性混为一谈。由于 CAP 是学术理论,并不是工程理论,它会舍弃很多现实世界的
今日推荐
周排行