202209-03 node事件循环中事件执行的顺序 目录事件循环浏览器环境事件循环node环境事件循环六个阶段(1)setTimeout和setImmediate(2)process.nextTick练习例子总结:事件循环在浏览器环境下我们的js有一套自己的事件循环,同样在node环境下也有一套类似的事件循环。浏览器环境事件循环首先,我们先来回顾一下在浏览器的事件循环:总结来说:首先会运行主线程的同步代码,每一行同步代码都会被压入执行栈,每一行异步代码会压入异步API中(如:定时器线程、ajax线程等;... 继续阅读 >
202109-07 浅谈Unity脚本生命周期与执行顺序 目录一、脚本生命周期二、MonoBehavior生命周期图三、脚本执行顺序四、自定义执行顺序一、脚本生命周期Unity脚本中的常见必然事件如下表所示名称触发时机用途Awake脚本实例被创建时调用用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数OnEnable当对象变为可... 继续阅读 >
202109-04 浅谈@Value和@Bean的执行顺序问题 问题描述使用@Autowired处理多个同种类型的bean,出现@Value和@Bean的执行顺序问题。首先使用扫描包+注解的方式注册User类型的不同bean,分别是user、user1,注册方式如下packagecom.fanyinhang.bean;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;/***@authorfanyinhang... 继续阅读 >
202106-19 聊聊golang中多个defer的执行顺序 golang中多个defer的执行顺序引用TureGo中的一个示例:packagemainimport"fmt"funcmain(){fmt.Println("counting")fori:=0;i<10;i++{deferfmt.Println(i)}fmt.Println("done")}程序执行结果为:countingdone9876543210从结果可以看出,defer的执行可以看做是一个FILO(FirstInLastOut)栈。在编写程序时,如果遇到下面的执行流程,id1先获取资源,然后id2通过id1获取,而id2的... 继续阅读 >
202102-24 C++ 程序抛出异常后执行顺序说明 1析构函数中是否可以抛出异常首先我们看一个常见的问题,析构函数中是否可以抛出异常。答案是C++标准指明析构函数不能、也不应该抛出异常!C++异常处理模型是为C++语言量身设计的,更进一步的说,它实际上也是为C++语言中面向对象而服务的。C++异常处理模型最大的特点和优势就是对C++中的面向对象提供了最强大的无缝支持。那么如果对象在运行期间出现了异常,C++异常处理模型有责任清除那些由于出现异常所导致的已经失效了的对象(... 继续阅读 >
202102-21 聊聊Spring AOP @Before @Around @After等advice的执行顺序 用过spring框架进行开发的人,多多少少会使用过它的AOP功能,都知道有@Before、@Around和@After等advice。最近,为了实现项目中的输出日志和权限控制这两个需求,我也使用到了AOP功能。我使用到了@Before、@Around这两个advice。但在,使用过程中,却对它们的执行顺序并不清楚。为了弄清楚在不同情况下,这些advice到底是以怎么样的一个顺序进行执行的,我作了个测试,在此将其记录下来,以供以后查看。前提对于AOP相关类(aspect、... 继续阅读 >
202010-24 Spring注解配置AOP导致通知执行顺序紊乱解决方案 今天在测试Spring的AOP时,发现使用注解配置AOP的方式会导致通知的执行顺序紊乱。【最终通知居然在异常通知之前执行了】测试代码(1)定义TargetInterface目标接口publicinterfaceTargetInterface{publicabstractvoidtargetProxy();}(2)定义TargetImpl目标类@Component("target")publicclassTargetImplimplementsTargetInterface{publicvoidtargetProxy(){System.out.println("targetproxy......");inti=1/0;/... 继续阅读 >
202010-20 Java.try catch finally 的执行顺序说明 示例1:publicstaticStringhello(){Strings="商务";try{returns;}catch(Exceptione){return"catch进来了";}finally{s="你好世界";returns;}}返回结果:你好世界,此时的返回顺序是finally>try示例2:publicstaticStringhello(){Strings="商务";try{returns;}catch(Exceptione){return"catch进来了";}finally{... 继续阅读 >
202009-28 浅谈Python3多线程之间的执行顺序问题 一个多线程的题:定义三个线程ID分别为ABC,每个线程打印10遍自己的线程ID,按ABCABC……的顺序进行打印输出。我的解法:fromthreadingimportThread,Lock#由_acquire解锁执行后释放_release锁def_print(_id:str,_acquire:Lock,_release:Lock)->None:foriinrange(10):_acquire.acquire()print(f"id:{_id}")_release.release()if__name__=='__main__':#创建三个锁供3个线程使用mutex1=Lock(... 继续阅读 >
202009-27 Java静态代码块作用及执行顺序解析 一般情况下,如果有些代码必须在项目启动的时候就执行,需要使用静态代码块。这种代码是主动执行的,需要在项目启动的时候就初始化。有些代码是在不创建对象的情况下,由其他程序来调用,需要使用静态方法。这种代码是被动执行的。静态方法在类加载的时候就已经加载,可以用类名直接调用比如main方法就必须是静态的这是程序入口两者的区别就是:静态代码块是自动执行的,而静态方法是被调用的时候才执行的。区别很简单:静态代码... 继续阅读 >