深入理解yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:def addlist(alist): for i in alist: yield i + 1取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项:alist = [1, 2,...
2024-01-10深入理解python中的yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:def addlist(alist): for i in alist: yield i + 1取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项:alist = [1, 2,...
2024-01-10Linux内核中断处理过程解析
导读中断是现代 CPU 工作方式中重要的部分。例如:当你每次在键盘上按下一个按键后,CPU 会被中断以使得 PC 读取用户键盘的输入。这个过程发生得相当快,以致于在使用体验上你不会感到任何变化或损害。此外,键盘并不是导致中断的唯一组件。一般来说,有三种类型的事件会导致 CPU 发生中...
2024-01-10深入讲解Swift的内存管理
前言LLVM编译器的好:Swift的内存管理除了要注意引用循环之外,几乎全部被LLVM编译器包揽,不需要开发人员操心。Swift 是自动管理内存的,这也就是说,我们不再需要操心内存的申请和分配。当我们通过初始化创建一个对象时,Swift 会替我们管理和分配内存。而释放的原则遵循了自动引用计数 (ARC) ...
2024-01-10深入理解Springcloud源码篇之Feign源码
Feign在项目中的配置和使用 在Springcloud中使用feign的时候,需要在配置类中加入一个@EnableFeignClients注解。代码如下:@SpringBootApplication//springboot 启动类@EnableFeignClients//开启eureka扫描@EnableDiscoveryClient//开启eureka客户端public class Application { public static void main( String[] arg...
2024-01-10深入理解Vue nextTick 机制
我们先来看一段Vue的执行代码:export default { data () { return { msg: 0 } }, mounted () { this.msg = 1 this.msg = 2 this.msg = 3 }, watch: { msg () { console.log(this.msg) } }}这段脚本执行我们猜测1000m后会依次打印:1、2、3。但是实际效果中,只会输出一次:3。为什么会出现这样的情况?我们来一探究竟。q...
2024-01-10深入理解React、Redux
React+Redux非常精炼,良好运用将发挥出极强劲的生产力。但最大的挑战来自于函数式编程(FP)范式。在工程化过程中,架构(顶层)设计将是一个巨大的挑战。要不然做出来的东西可能是一团乱麻。说到底,传统框架与react+redux就是OO与FP编程范式的对决。简单学习某项技术并不能让建立起一个全局理...
2024-01-10深入理解React&Redux
深入理解React&ReduxReactReact是什么为什么需要ReactReact如何实现组件可复用ReduxRedxu是什么有了React 为什么需要ReactRedux如何实现Redux工作流程总结ReactReact是什么React是一个帮助你构建页面UI的前端框架,React的组件就相当于MVC里面的View。React.js可以提供View层面的解决方案,但不能解决我们所...
2024-01-10深入理解SpringCloud之Eureka注册过程分析
eureka是一种去中心化的服务治理应用,其显著特点是既可以作为服务端又可以作为服务向自己配置的地址进行注册。那么这篇文章就来探讨一下eureka的注册流程。一、Eureka的服务端eureka的服务端核心类是EurekaBootstrap,该类实现了一个ServletContextListener的监听器。因此我们可以断定eureka是基于servlet容器...
2024-01-10xenomai内核解析之嵌入式实时linux概述
Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操...
2024-01-10csspadding内边距的理解
使用说明1、padding在元素中增加了内部间距。其目标可根据使用情况而变化。2、垂直padding不适用于有display:inline的元素,如果添加内部边距,不会影响元素,内部边距会覆盖其他内部元素。这只是一个友好的提醒,应该改变内部元素的display属性。语法padding:padding_value [padding_value] [padding_value] [padding_va...
2024-01-10手写一个Redux,深入理解其原理
Redux可是一个大名鼎鼎的库,很多地方都在用,我也用了几年了,今天这篇文章就是自己来实现一个Redux,以便于深入理解他的原理。我们还是老套路,从基本的用法入手,然后自己实现一个Redux来替代源码的NPM包,但是功能保持不变。本文只会实现Redux的核心库,跟其他库的配合使用,比如React-Redux准备...
2024-01-10深入理解Java IO的flush
Java的IO是一个大知识点,如果把它的知识点拆开来说的话估计能说一个星期,关于IO的体系可以看看下面这张图,接下来我们从一段代码开始聊吧,先看看下面这段代码public class Test { public static void main(String[] args) throws Exception { File file = new File("text.txt"); if(!file.exists()) { file.createNewFile(); } Fil...
2024-01-10深入理解React:diff 算法
目录序言React 的核心思想传统 diff 算法React diff两个假设三个策略diff 具体优化tree diffcomponent diffelement diff小结参考1.序言此篇文章所讨论的是 React 16 以前的 Diff 算法。而 React 16 启用了全新的架构 Fiber,相应的 Diff 算法也有所改变,不在这篇文章的讨论范围内。研究 React 的 Diff 算法重在...
2024-01-10深入理解Spring的容器内事件发布监听机制
本文内容纲要:- 2. JDK中对事件监听机制的支持- 2.1 基于JDK实现对任务执行结果的监听- 3.Spring容器对事件监听机制的支持- 3.1 基于Spring实现对任务执行结果的监听- 4.Spring事件监听源码解析- 4.1 初始化事件发布器流程- 4.2 注册事件监听器流程- 4.3 容器事件发布流程- 5.总结目录JDK中对事...
2024-01-10Vue中diff算法的理解
Vue中diff算法的理解diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结构进行重绘与回流,而diff算法能够使得操作过程中只更新修改的那部分DOM结构而不更新整个DOM,这样能够最小化操作DOM结构...
2024-01-10深入理解SpringAOP之代理对象
本文内容纲要:- 一、FactoryBean&BeanFactory&ObjectFactory- 二、AOP的核心探究- 2.1、核心接口初探- 2.2、源码分析- 三、基于AOP的核心类与接口实现代理- 1、先定义基本的JavaBean:- 2、自定义注解- 3、定义JavaBean的代理- 4、主程序 本篇文章主要带大家简单分析一下AOP的代理对象,至于AOP是什么,...
2024-01-10深入理解C♯ 7.0中的Tuple特性
介绍Tuple是异类对象的有序序列。 我们经常可以写出返回多个值的方法,所以我们需要创建一个包含多个数据元素的简单结构。 为了支持这些情况,Tuple 被添加到 C#。 Tuple 是包含多个字段用来表示数据成员的轻量级数据结构。如果一个方法返回多个相同类型的数值,那么它可以将这些值存储在一个...
2024-01-10Redis字符串原理的深入理解
前言来掘进都有两年多了一直当个小透明,今天终于发一次文章了.最近在看 Redis,感觉收获很多,写篇博客记录一下.Redis 有五种基础数据结构:string,list,set,zset,hash.其中 string是最最最简单的也是最常用的.这个数据类型虽然简单但是内部的结构设计却很是精致.基本介绍相比于 Java,在 Redis 中 string 是可...
2024-01-10Vue中$nextTick的理解
Vue中$nextTick方法将回调延迟到下次DOM更新循环之后执行,也就是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,能够获取更新后的DOM。简单来说就是当数据更新时,在DOM中渲染完成后,执行回调函数。描述通过一个简单的例子来演示$nextTick方法的作用,首先需要知道Vue...
2024-01-10深入理解 HttpSecurity【源码篇】
HttpSecurity 也是 Spring Security 中的重要一环。我们平时所做的大部分 Spring Security 配置也都是基于 HttpSecurity 来配置的。因此我们有必要从源码的角度来理解下 HttpSecurity 到底干了啥?1.抽丝剥茧首先我们来看下 HttpSecurity 的继承关系图:可以看到,HttpSecurity 继承自 AbstractConfiguredSecurityBuilder,同时实现了...
2024-01-10深入理解vue中scoped样式作用域的规则
先来说说实现方式vue中的样式作用域是通过属性选择器来实现的,例如同样一个类名,我们是通过 .类名[属性名] 来做区分的,我们这里主要是要搞清楚这里的属性名是怎么分配的。样式作用域规则接下来我们分情况来说一下样式作用域:对于有样式作用域的组件,该组件的所有后代元素都会具...
2024-01-10深入理解Swift语言中的闭包机制
在 Swift 中的闭包类似于结构块,并可以在任何地方调用,它就像 C 和 Objective C 语言内置的函数。 函数内部定义的常数和变量引用可被捕获并存储在闭包。函数被视为封闭的特殊情况,它有 3 种形式。在 Swift 语言闭合表达式,如下优化,重量轻语法风格,其中包括:推导参数并从上下文菜单返回值...
2024-01-10docx4j深入学习整理
引用官网上的一段话:docx4j是一个开源(ASLv2)Java库,用于创建和处理Microsoft Open XML(Word docx,Powerpoint pptx和Excel xlsx)文件。 docx4j的官网:https://www.docx4java.org/trac/docx4j ...
2024-01-10深入理解 WebSecurityConfigurerAdapter【源码篇】
我们继续来撸 Spring Security 源码,今天来撸一个非常重要的 WebSecurityConfigurerAdapter。我们的自定义都是继承自 WebSecurityConfigurerAdapter 来实现的,但是对于 WebSecurityConfigurerAdapter 内部的工作原理,配置原理,很多小伙伴可能都还不太熟悉,因此我们今天就来捋一捋。我们先来看一张 WebSecurityConfigurerAdapter ...
2024-01-10