AOP原理解析
MainConfigOfAOP.class/** * AOP: * 指在程序运行期间动态的将某段代码切入到指定方法指定位置运行的编程方式 * 1. 导入AOP模块:Spring aop,(Spring-aspects) * 2. 定义一个业务逻辑类(MathCalculator),在业务逻辑运行时将日志进行打印(方法之前、方法运行、方法之后、方法异常) * 3. 定义一个日志切面(LogAspect...
2024-01-10解析HOT原理
2020-06-09 19:31:01一、疑问 前段时间;QQ群里有人对“这个表(0,4)这行数据我做了update操作,查看索引的page数据,看到索引一直指向(0,4),用ctid="(0,4)"查询业务表是查不到数据的;然后我做了表的vacuum,reindex甚至drop/create index,还是这样的”感到疑惑。 在PostgreSQL8.3实现了(heap only tuple)HOT...
2024-01-10自旋锁原理分析
1. 概念自旋锁的目的是在短期间内进行轻量级的锁定,解决对某项共享资源的互斥使用,在等待锁重新可用期间进行自旋,所以自旋锁不应该被持有时间过长,如果需要长时间锁定的话,推荐使用信号量。实际操作的数据结构如下:2. 获取锁最终执行的代码是体系结构相关的自旋锁实现:arch_spin_lock...
2024-01-10深入分析ES存储原理
es写数据es写数据的过程1、客户端选择一个 node 发送请求过去,这个 node 就是 coordinating node(协调节点)。2、coordinating node 对 document 进行路由,将请求转发给对应的 node(有 primary shard)。3、实际的 node 上的 primary shard 处理请求,然后将数据同步到 replica node。4、coordinating node 如果发现 primary node ...
2024-01-10JVM垃圾回收原理解析
概述Java运行时区域中,程序计数器,虚拟机栈,本地方法栈三个区域随着线程的而生,随线程而死,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收问题。而Java堆和方法区则不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存可能也不一眼,我们只有...
2024-01-10玩转Koa之核心原理分析
Koa作为下一代Web开发框架,不仅让我们体验到了async/await语法带来同步方式书写异步代码的酸爽,而且本身简洁的特点,更加利于开发者结合业务本身进行扩展。本文从以下几个方面解读Koa源码:封装创建应用程序函数扩展res和req中间件实现原理异常处理 一、封装创建应用程序函数利用NodeJS可...
2024-01-10缺氧蒸汽涡轮机吞热原理分析
《缺氧》在游戏的后期各个工业设备会产生大量的温度,降温也是游戏后期的难题之一,下面为大家带来的是缺氧蒸汽涡轮机吞热原理分析,一起来看看吧。今天我们来做一个游戏科普向的介绍,主角是游戏中非常重要的设备——蒸汽涡轮机,它是游戏中除了野外反熵热量中和器以外唯一的负熵热控装...
2024-01-10HDFS的HA集群原理分析
1.简单hdfs集群中存在的问题不能存在两个NameNode单节点问题 单节点故障转移2.解决单节点问题找额外一个NameNode备份原有的数据 会出现脑裂脑裂:一个集群中多个管理者数据不一致 这种情况称之为脑裂3.如何解决启动多个NameNode时保证同一时刻只有一个NameNode工作 避免脑裂发生 QJM 使用Zook...
2024-01-10JS实现微信摇一摇原理解析
本文为大家分享了JS实现微信摇一摇的原理,供大家参考,具体内容如下实现原理:1.微信摇一摇事件需要有硬件支撑,必须要求手机中有陀螺仪2.在JS中给window添加ondevectionmotion事件。该事件在手机晃动,即手机中的陀螺仪发生旋转,该事件会触发3.触发ondevectionmotion事件,会产生一个事件对象,通...
2024-01-10浅析JSONP技术原理及实现
跨域问题一直是前端中常见的问题,每当说到跨域,第一浮现的技术必然就是JSONPJSONP在我的理解,它并不是ajax,它是在文档中插入一个script标签,创建_callback方法,通过服务器配合执行_callback方法,并传入一些参数JSONP的局限就在于,因为是通过插入script标签,所以参数只能通过url传入,因此只能...
2024-01-10NAT 原理以及 UDP 穿透
作者:0x7F@知道创宇404实验室时间:2021年4月12日0x00 前言一直对 P2P 和 NAT 穿透的知识比较感兴趣,正巧最近看到一篇不需要第三方服务器实现 NAT 穿透的项目(https://github.com/samyk/pwnat),经过学习研究后发现这个项目也有很多局限性;借此机会,学习了下 NAT 原理和 UDP 穿透的实现。本文详细介绍了 NAT ...
2024-01-10C#线程委托实现原理及方法解析
很多时候写windows程序都需要结合多线程,在C#中用如下得代码来创建并启动一个新的线程。Thread thread = new Thread(new ThreadStart(ThreadProc));//实例化一个线程thread.IsBackground = true;//将线程改为后台线程thread.Start();//开启线程但是很多时候,在新的线程中,我们需要与UI(Windows窗体设计器用户界面)进行交...
2024-01-10Vue解读之响应式原理源码剖析
目录初始化initState()initProps()initData()observe()ObserverdefineReactive()依赖收集DepWatcher依赖收集过程移除订阅派发更新notify()update()queueWatcher()flushSchedulerQueue()updated()defineProperty 缺陷及处理Vue.set()重写数组方法总结先看张图,了解一下大体流程和要做的事初始化在 new Vue 初始化的时候,会对我们组件的数据 prop...
2024-01-10MySQL示例DTID主从原理解析
目录1.GTID基本概念2.GTID优点3.GTID的工作原理4.GTID比传统复制的优势5.启动的方法6.GTID(一主一从)配置6.1环境:6.2在主库上给从库授权:6.3确保数据一致操作6.4配置主库6.5配置从库6.6配置主从复制7.GTID(一主俩从)8.GTID(俩主一从)1.最新环境2.所有服务器均关闭防火墙或者放行防火墙3.授权连接master01库授...
2024-01-10JAVA泛型的继承和实现、擦除原理解析
这篇文章主要介绍了JAVA泛型的继承和实现、擦除原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下很多的基础类设计会采用泛型模式,有些应用在使用的时候处于隔离考虑,会进行继承,此时子类如何继承泛型类就很讲究了,有些情...
2024-01-10【原创】LinuxRCU原理剖析(一)初窥门径
背景Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基说明:Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio1. 概述RCU, Read-Copy-Update,是Linux内核中的一种同步机制。RCU常被描述为读写锁的替代品,它的特点是读者并不需要直接与写者进行同步,...
2024-01-10【原创】LinuxRCU原理剖析(二)渐入佳境
背景Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基说明:Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio1. 概述我会假设你已经看过了《Linux RCU原理剖析(一)-初窥门径》本文将进一步去探索下RCU背后的机制。2. 基础概念2.1 Grace Period继续...
2024-01-10【漫画】CAS原理分析!无锁原子类也能解决并发问题!
本文来源于微信公众号【胖滚猪学编程】、转载请注明出处在漫画并发编程系统博文中,我们讲了N篇关于锁的知识,确实,锁是解决并发问题的万能钥匙,可是并发问题只有锁能解决吗?今天要出场一个大BOSS:CAS无锁算法,可谓是并发编程核心中的核心!温故首先我们再回顾一下原子性问题的原...
2024-01-10浅谈PHP无限极分类原理
1.递归:程序调用自身的编程技巧称为递归2.案例:/** * @param 递归 $[name] */function deeploop(&$i=1){ echo $i; $i++; if($i < 10){ deeploop($i); }}deeploop();结果:1234567893.global/** * @param 递归 $[name] */$i = 1;function deeploop(){ global $i; //Global的作用是定义全局变量,但是这个全局变量不是...
2024-01-10JVM对象创建和内存分配原理解析
创建对象当 JVM 收到一个 new 指令时,会检查指令中的参数在常量池是否有这个符号的引用,还会检查该类是否已经被加载过了,如果没有的话则要进行一次类加载。接着就是分配内存了,通常有两种方式:指针碰撞空闲列表使用指针碰撞的前提是堆内存是完全工整的,用过的内存和没用的内存各...
2024-01-10索引失效底层原理分析,这么多年终于有人讲清楚了
前言吊打面试官又来啦,今天我们讲讲MySQL索引为什么会失效,很多文章和培训机构的教程,都只会告诉你,在什么情况下索引会失效。比如:没遵循最佳左前缀法则、范围查询的右边会失效、like查询用不到索引等等但是没有一个人告诉你,索引失效的原理是什么,老哥今天就告诉大家,让你们知其...
2024-01-10CAS原理分析及ABA问题详解
public boolean compareAndSwap(int value, int expect, int update) {// 如果内存中的值value和期望值expect一样 则将值更新为新值update if (value == expect) { value = update; return true; } else { return false; }}大致过程是将内存中的值、我们的期望值、新值交给CPU进行运算,如果...
2024-01-10存储卷原理和编排
Volume基础Volume(存储卷)是Pod中能够被多个容器访问的共享目录。k8s的volume被定义在pod上,与pod的生命周期相同,支持多种先进的分布式文件系统。下面是一个使用emptyDir类型挂载存储卷的例子:apiVersion: v1kind: Podmetadata: name: test-pdspec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeM...
2024-01-10详解编译器编译原理
详解编译器编译原理什么是gcc 什么是gcc:gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器(GNU C Compiler),现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL语言等。gcc支持多种硬件平台,甚至对Don Knuth 设计的 MMIX 这类不常见的计算机都提供了完善的支持gcc主要特征 1)gcc是一个...
2024-01-10Vue模板编译原理
写在开头写过 Vue 的同学肯定体验过, .vue 这种单文件组件有多么方便。但是我们也知道,Vue 底层是通过虚拟 DOM 来进行渲染的,那么 .vue 文件的模板到底是怎么转换成虚拟 DOM 的呢?这一块对我来说一直是个黑盒,之前也没有深入研究过,今天打算一探究竟。Vue 3 发布在即,本来想着直接看看 Vue 3 ...
2024-01-10浏览器背后C++服务编译耗时优化原理及实践
导读本文从黑产攻击方式、木马恶意行为、监控及防御方案等角度对Lnkr木马进行分析,此类木马影响范围较广,攻击手法多样,但国内目前相关的资料却非常稀少,希望本文的实践经验和总结能对从事相关安全检测的同学有所帮助。一、事件概述2020年10月,美团安全运营平台发现流量中存在恶意Jav...
2024-01-10深入了解Vue3模板编译原理
目录ParseTransformcacheHandlershoistStaticprefixIdentifiersPatchFlagshoiststype 变化Codegen代码生成模式静态节点帮助函数 helpershelpers 是怎么使用的呢?如何生成代码?Vue 的编译模块包含 4 个目录:compiler-corecompiler-dom // 浏览器compiler-sfc // 单文件组件compiler-ssr // 服务端渲染其中 compiler-core 模块是 Vue 编译的核心模...
2024-01-10【JS】浏览器原理--编译流程初探
Browser Introduction浏览器基础架构浏览器主要组成部分渲染引擎的基本工作流Parsing & DOM tree construction解析流程编译流程HTML解析遵循的原则:DOM Document Object Model 我们看一个例子被解析为解析算法流标记算法DOM树构造算法当解析器创建好时,Document 对象也创建好了在树的构建阶段,会改变包含 Document ...
2024-01-10深入了解Vue3模板编译原理
目录ParseTransformcacheHandlershoistStaticprefixIdentifiersPatchFlagshoiststype 变化Codegen代码生成模式静态节点帮助函数 helpershelpers 是怎么使用的呢?如何生成代码?Vue 的编译模块包含 4 个目录:compiler-corecompiler-dom // 浏览器compiler-sfc // 单文件组件compiler-ssr // 服务端渲染其中 compiler-core 模块是 Vue 编译的核心模...
2024-01-10内核编译步骤及模块管理
内核编译步骤及模块管理 设定内核参数的方法:echo VALUE > /proc/sys/TO/SOMEFILEsysctl -w kernel.hostname=能立即生效,但无法永安有效。 永久有效需要修改配置文件/etc/syctl.conf修改完配置文件不会理解生效,需要执行以下命令才能立即生效。sysctl -p 让内核从读配置文件 sysctl -a 显示所有内核参数及其...
2024-01-10原始类型谓词导致编译错误
我不明白为什么原始类型Predicate会导致编译错误,即使我有一个类型转换。我们来看下面的例子:原始类型谓词导致编译错误从包含不同对象的列表中获取延伸Number的列表,并将其转换为Number并收集到List。List<Object> objectList = Arrays.asList(1, 3.4, 2, new Object(), ""); List<Number> numbers = objectList .stream() ...
2024-01-10编译原理-语法编译器设计实现
实验目的掌握生成语法分析器的方法,加深对语法分析原理的理解。掌握设计、编制并调试语法分析程序的思想和方法。本实验是高级语言程序设计、数据结构和编译原理中词法分析原理等知识的综合。实验内容布置内容及要求输入:无二义性的上下文无关文法G一段词法分析的输出记号流输...
2024-01-10