首页 > TAG信息列表 > 底层

【Spring系列】- Bean生命周期底层原理

上次学到动手模拟Spring底层实现,简单学习了一下Spring,对spring有所了解,接着就来分析spring中bean的生命周期的步步流程。1|2流程接下来会根据Bean生命周期一步一步去学习,spring在创建bean对象的过程中,还是做了许多的操作,从依赖注入,通过初始化以及前后操作,最后创建了bean对象放入Map

【深入浅出 Yarn 架构与实现】2-2 Yarn 基础库 - 底层通信库 RPC

RPC(Remote Procedure Call) 是 Hadoop 服务通信的关键库,支撑上层分布式环境下复杂的进程间(Inter-Process Communication, IPC)通信逻辑,是分布式系统的基础。允许运行于一台计算机上的程序像调用本地方法一样,调用另一台计算机的子程序。 由于 RPC 服务整体知识较多,本节仅针对对 Yarn R

Python字典底层实现原理

字典是否是有序   在python3.6之前,字典是无序的,但是python3.7+,字典是有序的   在3.6中,字典有序是一个implementation detail,在3.7才正式成为语言特性,因此3.6中无法确保100%有序 字典的查询、添加、删除的时间复杂度   字典的查询、添加、删除的平均时间复杂度都是O(1),相比列

面试问题整理

项目相关 项目中用到的C++技术栈 1.vector扩容机制(扩容用到的STL器件?没答出来) 两倍扩容问题: 为什么呈倍数扩容(时间复杂度更优) 对于n次插入操作, 采用成倍方式扩容可以保证时间复杂度O(n), 而指定大小扩容的时间复杂度为O(n^2) 为什么是1.5倍扩容(空间可重用) 当k == 2时:

synchronized在Jdk1.6后的底层优化分析

JDK1.6 对synchronized锁的实现引入了大量的优化来减少锁操作的开销,如: 偏向锁、轻量锁、自旋锁、适应性自旋锁、锁消除、锁粗化 等等技术。 讲synchronized之前,先说一些知识点。   锁的本质是可以理解为更新一个标识,就synchronized而言,这个标识是存在对象头中。   64位Hots

Vector底层实现

Vector底层实现 vector的三个私有成员 :_start   记录初始位置 , _finish 记录有效字符 , _endofstoage  记录容量大小 vector会存储的类型不同,所以要用模版来定类型  typedef T* iterator; iterator _start; iterator _finish; iterator _endofstoage; 也就是T*  

底层原理解释

GIL GIL是Python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行Python程序的时候会霸占Python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线

redis的底层原理

1. String:   C语言字符串的缺陷:在c语言中,对字符串操作时,char* 指针只是指向字符数组的起始位置,而字符数组的结尾位置就用\0表示,意思是指字符串的结束   1. 获取长度需要 O(n)         (SDS 是O(1)解决的)   2. 除了字符串的末尾之外,字符串里面不能有”\0“字符,不能保存像

Redis的底层数据结构

SET name "xiaolincoding" OK > HSET person name "xiaolincoding" age 18 0 > RPUSH stu "xiaolin" "xiaomei" (integer) 4 这些命令代表着: 第一条命令:name 是一个字符串键,因为键的值是一个字符串对象; 第二条命令:person 是一个哈希表键,因为键的值是一个包含两个键值对的哈希

从HashMap的执行流程开始 揭开HashMap底层实现

☺ 心得:如何学习源码: 从某个执行过程入手,建议先从整体入手,了解底层的数据结构是怎么一步一步优化的。最后,在了解完底层的数据结构优化过程后,从重要的核心方法入手,从它的执行流程入手,先去网上搜索了解它的执行流程过程(推荐看流程图),再去看源码。 (1) 从某个执行过程入手,建议先从

golang

Go与Java对比 用途场景 1.Java的用途 用途一:服务器后端系统开发(web后端、微服务后端支付系统、业务系统、管理后台,各种后台交互的接口服务)。 用途二:大数据框架的底层实现和Java的API支持。(Hadoop)。 用途三:其它中间件的底层开发。(Tomcat、RocketMq、Hbase、Kafka、SpringCloud

HashMap的一些底层知识点

HashMap的底层数据结构? 数字+链表+红黑树 HashMap的存取原理? ①.判断键值对数组table[i]是否为空或为null,否则执行resize()进行扩容; ②.根据键值key计算hash值得到插入的数组索引i,如果table[i]==null,直接新建节点添加,转向⑥,如果table[i]不为空,转向③; ③.判断table[i]的首个元

Docker/Linux 底层网络基础

Docker 底层网络基础 一. 网络命名空间 为了支持网络协议栈的多个实例,Linux 在网络栈中引入了网络命名空间,这些独立的协议栈被隔离到不同的命名空间中。 处于不同命名空间中的网络栈是完全隔离的,彼此之间无法通信,就好像两个“平行宇宙”。 通过对网络资源的隔离,就能在一个宿主机上

字典的底层实现原理

Python字典的底层实现原理 这个问题可以从三个方面来回答: 1.python字典及其特性 字典是Python的一种可变、无序容器数据结构,它的元素以键值对的形式存在,键值唯一,它的特点搜索速度很快:数据量增加10000倍,搜索时间增加不到2倍;当数据量很大的时候,字典的搜索速度要比列表快成百上千倍1

动态数组底层是如何实现的

动态数组底层是如何实现的 引言: 提到数组,大部分脑海里一下子想到了一堆东西 int long short byte float double boolean char String 没错,他们也可以定义成数组 但是,上面都是静态的 不过,咱们今天学习的可是动态的(ArrayList 数组) 好接下来,我们一起来下面的内容 2.1 动态数组的位

并发拓展--框架并发底层原理(很重要!)

框架底层并发原理 # 1.django和flask项目的并发量 取决于使用的wsgi框架 (根据前端的请求,开设线程去执行视图函数) 故:项目部署 采用 uwsgi 且 动静分离, 增加项目的并发量 # 2.django和flask都是同步框架 来一个请求,wsgi框架就开启一个线程,执行视图函数

浏览器底层原理

目录浏览器是如何解析CSS选择器的?浏览器是如何进行界面渲染的?重绘(repaint)和重排(回流reflow)是什么?何时会触发重排?重绘重排角度, 我们应该如何优化页面渲染性能 ? 浏览器是如何解析CSS选择器的? 在生成渲染树的过程中,渲染引擎会根据选择器提供的信息来遍历 DOM 树,找到对应的 DOM

八股文

八股文 ArrayList和Linklist ArrayList 底层是数组 常用于遍历、读取速度更快 用于查,数据的访问 LinkList 底层是链表 一个节点指向另一个节点 增删改更快 java接口和抽象类有哪些区别? 抽象类: 接口: 语义上的区别: 抽象类一般用来描述一个你可以想象出来的东西,他是一

HashMap底层原理(精讲)

这几天专门研究了一下HashMap 整理一下 位运算 讲HashMap之前先复习一下位运算 名称 符合 规则 与 & 全1为1 其余为0 或 | 有1为1 其余为0 异或 ^ 不同为1 相同为0 左移 << 各二进位全部左移若干位,高位丢弃,低位补0 右移 >> 各二进位全部右移若干位,对无符

什么叫可测试代码

越“底层”的代码越可测试 如题这个“底层”如何理解呢?答即被调用的次数约多月底层,相对应的他对外部的依赖越少。这样可以减少很多单元测试时的依赖注入问题; 越“顶层”的代码越不可单元测试 因为依赖内容过多,构造函数依赖注入如同梦魇一般一层套一层,耗费的成本过多。所以一般建议

逆向工程学习记录

  首先逆向是个困难的工作,需要理论,也需要实践。 理论方面,必须清楚的认识逆向的本质是什么。放到更大的环境下来看,逆向从来不是最终目的,最终目的一般是要实现某个东西。 广义上,逆向不仅仅是调试二进制可执行格式,反汇编,破解。逆向是心理模型的建立过程,以及模型实现的底层细节的

redis底层数据结构

一丶Redis底层结构 1. redis 存储结构 redis的存储结构从外层往内层依次是redisDb、dict、dictht、dictEntry。 redis的Db默认情况下有16个,每个redisDb内部包含一个dict的数据结构。 redis的dict内部包含dictht的数组,数组个数为2,主要用于hash扩容使用。 dictht内部包含dictEntry

python3.6字典底层变化

前言 在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。 但是从Python 3.6开始,字典是变成有顺序的了。你先插入键值对A,后插入键值对B,那么当你打印Keys列表的时候,你就会发现B在A的后面。 不仅如此

计算机底层知识学习

进程:系统进行资源分配和调度的基本单位。   进程 —— 执行中的程序,形成所有计算的基础。但程序本身不是进程,如存储在磁盘上包含一些指令的文件内容(常称为可执行文件)。程序只是被动的实体,进程是活动实体。当一个可执行文件被load入内存时,一个程序才能成为进程。   系统由一组

开启写博客之路

2022.7.10 记录自己第一天写博客。 自我介绍一下哈,我是一位从事BMS软件开发的菜鸟工程师,工作前两年主要做一些应用层控制策略和算法的工作。嵌入式对我来说还很陌生,不过随着工作的接触,逐渐接触到单片机底层开发,一头扎进去,感觉掉进万丈深渊。不过还得给自己加油打气,一点一点学习,一