草庐IT

隔离机制

全部标签

[JDK8环境下的HashMap类应用及源码分析] 看源码了解HashMap的扩容机制

🌹作者主页:青花锁🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄、CSDN博客专家🌹简历模板、学习资料、面试题库、技术互助🌹文末获取联系方式📝系列文章目录[Java基础]StringBuffer和StringBuilder类应用及源码分析[Java基础]数组应用及源码分析[Java基础]String,分析内存地址,源码[JDK8环境下的HashMap类应用及源码分析]第一篇空构造函数初始化[JDK8环境下的HashMap类应用及源码分析]第二篇看源码了解HashMap的扩容机制文章目录系列文章目录效果展示1、步骤拆解2、使用空构造函数实例化HashMap3、使用Java的反射机

JVM类加载机制分析

1.类加载机制在之前的文章万字长文把[JVM]从头到尾讲一遍中详细讲了JVM虚拟机的内存结构和垃圾回收算法,如下图概述了JVM整个的运行机制,今天来讲讲最上面的类加载机制部分。JVM什么是类加载机制?Java虚拟机将编译后的.class文件加载到内存中,进行校验、转换、解析和初始化,到最终的使用,这就是类的加载机制。类的加载时机并未有明确的规定,但是类明确了类的初始化时机。2.类加载机制的过程类的加载机制大致分为五个过程:加载、验证、准备、解析、初始化。下面将分析每个过程中做了什么事。2.1加载通过ClassLoader加载一个Class对象到内存中。具体过程:通过全限定名获取此类的二进制字节

ZooKeeper源码解析——学习ApacheZookeeper原理,掌握其核心组件的数据模型、监听通知机制等

作者:禅与计算机程序设计艺术1.简介随着互联网的飞速发展,各种信息数据越来越多,数据的存储也越来越依赖于分布式文件系统或NoSQL数据库。而传统的单机数据库往往不具备弹性可扩展性和高可用容错能力,在面对海量数据时难免会遇到性能瓶颈。为了解决这一问题,人们又提出了分布式文件系统或NoSQL数据库,但这类数据库通常都采用Master-Slave模式,需要一个单点的协调者(Master)负责全局管理,并且不具备水平扩展能力。因此,当数据量达到一定规模后,仍然会面临如何横向扩展的问题。在分布式系统中,最知名的就是ApacheHadoop,它是一个开源的框架,提供大数据集并行处理的能力,其底层依赖HDF

【Spring】手动实现Spring底层机制-问题的引出

🎄欢迎来到@边境矢梦°的csdn博文🎄🎄本文主要梳理手动实现Spring底层机制-问题的引出 🎄🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈🎆喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路🎆Ps:月亮越亮说明知识点越重要(重要性或者难度越大)🌑🌒🌓🌔🌕   目录🌸底层难点问题的引出🚀🌈问题的概念解释🎈BeanDefinition🥝类加载器和类路径classPath🌸底层难点问题的引出🚀1.底层如何实现依赖2.底层如何实现singleton(单例池)3.底层如何实现prototype(多例)4.底层如何实现IOC容器创建和初始化(之前用反射实现过,较浅,继续深入)5.底层如何实现get

对操作系统虚拟内存机制的理解

1.如果把二进制程序全部加载到内存中,会出现一种情况就是明明内存还有空间,但是不够二进制程序的大小,所以也加载不了,这样很浪费内存,而且会产生外部碎片,所以就改良成2中描述的方案。2.采用页表的方式对内存进行管理。分页将物理内存和可执行程序划分成很小的区块,这个区块定义为页,每个页的大小为4k,二进制程序中不足4k的页默认为4k。操作系统会为每个进程维护一个页表。页表主要记录进程的页号与内存中的页号的对应关系。这样的话就没有要求二进制程序加载到物理内存中必须是连续的,不会产生外部碎片,但是因为二进制程序中不足4k的页默认为4k,会浪费一点点内存,称为内部碎片。但是因为内存有限,所以加载的二进制

搞懂EventLoop机制

写在最前:本文转自掘金#JavaScript是单线程的语言事件循环EventLoop,这是目前浏览器和NodeJS处理JavaScript代码的一种机制,而这种机制存在的背后,正是因为JavaScript是单线程语言。单线程和多线程最简单的区别就是:单线程同一个事件只能做一件事情,而多线程同一个时间能做多件事情。调用栈CallStack在JavaScript运行的时候,主线程会形成一个栈,这个栈主要是解释器用来最终函数执行流程的一种机制。通常这个栈被称为调用栈CallStack或者执行栈。调用栈,顾名思义是具有LIFO(后进先出,LastinFirstOut)的结构。调用栈内存放的是代码执行期

Kotlin机制总结

什么是kotlin?kotlin是静态类型的编程语言,运行于jvm之上。如果在编译时知道变量的类型,则语言是静态类型的,在运行时知道变量类型,则语言是动态类型。什么是extension(扩展)函数Kotlin可以对一个类的属性和方法进行扩展,对被扩展的类代码本身不会造成任何影响。扩展函数可以为已经存在的类添加新的方法,并且不会修改原来的类。classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setConten

[崩溃] Java和Android崩溃捕获机制

作为开发同学,每天都在面临各种各种的崩溃问题。我们都如果在Android应用中发生了未捕获的崩溃问题,不管是在主线程还是在子线程,应用都会直接退出。但是Java程序,子线程抛出的异常,不会引起程序的退出。那你们知道JVM是如何处理应用未捕获崩溃的吗?Android又是怎样在发生崩溃时让程序退出的呢?崩溃处理机制当一个线程抛出异常时,JVM会调用线程的dispatchUncaughtException方法,所有未被捕获的异常,最后都会交给UncaughtExceptionHandler处理。对于一个线程来说,UncaughtExceptionHandler有多个,首先有针对单个线程的unCaug

线程池的机制

老生常谈的问题:什么是线程池?线程池就是创建若干个可执行的线程放入一个池(容器)中,有任务需要处理时,会提交到线程池中的任务队列,处理完之后线程并不会被销毁,而是仍然在线程池中等待下一个任务。为什么要用线程池?1.创建/销毁线程伴随着系统开销,使用多线程过于频繁的创建/销毁线程,会很大程度上影响处理效率;这里线程池可以复用线程,线程池可以避免性能降低。2.线程并发数量过多,抢占系统资源从而导致阻塞;这里线程池可以显示最大线程数量。3.对线程进行一些简单的管理讲线程池原理之前,先讲一讲线程池原理要涉及到的阻塞队列。阻塞队列:阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这里

QT 之基础(一) 详解UI文件设计与运行机制

一、项目文件组成1.1创建一个项目文件    建立好项目如下 (1)项目组织文件【untitled.pro】存储项目设置文件QT+=coregui//表示项目中添加coregui模块greaterThan(QT_MAJOR_VERSION,4):QT+=widgets//条件执行语句,Qt主版本大于4时,才加入widgets语句TARGET=untitled//表示生成目标可执行文件的名称TEMPLATE=app//项目使用的模板是app(2)主程序入口文件【main.cpp】实现函数main()函数程序文件 #include"mainwindow.h"#includeintmain(inta