底层 原理class
【Java 并发】【九】【AQS】【二】基于AQS的互斥锁机制、底层源码深度剖析
1 前言 上一节我们从整体上分析了什么是AQS以及AQS内部的数据结构,那么这节我们就从acquire和release入手,分析一下AQS为独占锁提供的机制:到底是怎么在获取资源失败进入等待队列的?以及释放资源的时候怎么唤醒后继节点的线程竞争锁的? 2 acquire 方法源码解析 首先我们看一下A ......
软考笔记(9)--计算机组成原理2--指令系统
前言 CPU就是一个执行各种计算机指令的逻辑机器,计算机指令也叫做机器语言。不同CPU支持的语言可能不同,比如Inter的CPU和苹果手机ARM的CPU就支持不同的指令,每个CPU能支持的指令组合在一起就是计算机指令集。 指令是计算机执行操作的命令,计算机的所有指令集合构成计算机的指令系统,指令系统 ......
Redis持久化RDB和AOF原理解析、使用和优缺点对比
前言 本文讲述 Redis 两种持久化方式 RDB 和 AOF 优缺点以及原理。 为何需要持久化? Redis 是基于内存操作的,进程终止、服务器宕机后内存数据会丢失,但是在很多使用场景中我们希望数据不丢失,服务重启之后数据还能恢复到停机前的状态,特别是使用 Redis 做数据库的情况。 Redis ......
Redis布隆过滤器的原理和安装使用
前言 本文讲述布隆过滤器 (RedisBloom) 的基本原理和安装使用。 RedisBloom是什么? RedisBloom 是 Redis 中过滤器模块,可以用来判断值是否存在,常用来解决缓存穿透问题。 查询数据时,先用 RedisBloom 判断数据是否存在,不存在则直接返回,存在则从缓存 / ......
Kafka原理解析
前言 从整体浅析Kafka集群结构、和Zookeeper之间的关系、长轮询机制、消息生产和消费以及顺序消费等。 名词解释 Broker(Kafka服务) Controller(唯一充当控制器的Kafka服务) Topic(消息主题,一个主题包含多个) Partition(消息分区),Replica( ......
c++ struct和class
c++中对象通常用struct和class表示。 在c语言中,struct用来创建结构体,结构体中只能包含基本数据成员。 而在c++中struct能包含成员函数,能实现多态(继承)。 c++中struct和class的功能十分类似,但是在面向对象的过程中class的使用较多,两者的区别如下: str ......
GPIO原理与寄存器
GPIO的工作方式 输入 浮空输入模式 输出缓冲器被禁止,施密特触发输入被激活,不接上拉和下拉电阻,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器。 上拉输入模式 输出缓冲器被禁止,施密特触发输入被激活,上拉电阻接通,不接下拉电阻,当I/O引脚无输入信号时,读取到的数据为1,即高电平 ......
ThreadLocal原理
一、什么是ThreadLocal ThreadLocal是线程内的局部变量,仅在线程的生命周期内起作用。变量值在线程间不可见。 二、ThreadLocal的使用 ThreadLocal使用详情如下: 1 import java.util.concurrent.CountDownLatch; 2 3 ......
10静态路由原理及配置
1.路由: 从源主机到目标主机的转发过程 (路由器就是能够将数据包转发到正确的目的地,并在转发的过程中选择最佳路径的设备就是路由器) 2.根据路由表转发数据 1网段要给4网段发送消息:主机1的数据首先到路由器A这里,路由器A 这里首先会查询路由器表,查看自己的路由表中数据发送到4网段数据需要出来的接 ......
(第六篇)__iter__、__next__及for循环执行原理(可迭代对象、迭代器、生成器)
摘要:只要有__iter__,那么这个对象就是可迭代对象,若对象有__iter__和__next__两种方法,则这个对象为迭代器对象。 一、概念 什么是迭代? 迭代就是重复,但是每一次重复都与上一次有关联,这就是迭代。 """ 这不是迭代,这是简单的重复 """ while True: print( ......
new操作符的原理
首先这里是一个构造函数: function Fun(age,name){ this.age=age this.name=name } 这个是创建的函数: function create(fn,...args){ 1.创建了一个空对象 var obj = {} 2.将空对象的原型指向构造函数的对象 O ......
golang pprof 监控系列(3) —— memory,block,mutex 统计原理
golang pprof 监控系列(3) —— memory,block,mutex 统计原理 大家好,我是蓝胖子。 在上一篇文章 golang pprof监控系列(2) —— memory,block,mutex 使用里我讲解了这3种性能指标如何在程序中暴露以及各自监控的范围。也有提到memory ......
一文带你弄懂 Maven 拉包原理
业务需求开发的时候,我们总是会遇到拉不到依赖包的情况。此时如果不清楚 Maven 拉取依赖包的原理,那么很可能找不到问题所在。今天树哥就带大家了解下 Maven 拉包的原理,让你在遇到问题的时候能快速解决! 三种仓库 在 Maven 中,仓库指的是存放代码构建的一个位置。从分类上来说,Maven 仓 ......
基础原理 | 善用数据手册
【1】STM32F103ZET6定义 STM32 =基于ARM核心的32位微控制器 F =通用类型 103 = 增强型 Z = 引脚数目为144脚(引脚越多外设越多) E = 512K字节的闪存存储器 T = 封装为LQFP(LQFP144) 6 = 工业级温度范围-40~85 【2】引脚定义 引脚 ......
考研复试 数据库原理背诵内容(自用版本)
知识点背诵 什么是数据库的事务(事务处理)? 数据库的事务是对数据库操作的一组集合,这些操作要么全部成功,要么全部失败,一旦有一个操作失败,则整个事务回进行回滚,回到事务开始前的状态 请解释ACID是什么意思? ACID是指事务的四个特性,即 原子性:事务一旦进行则必须全部完成,一旦有一个操作失败, ......
考研复试 数据库原理知识点整理(自用版)
###知识点整理 数据与语义不可分 数据库:长期储存在计算机内,有组织可共享的大量数据的集合 为了抽取有用信息,转换为有用信息 数据库管理系统:数据管理软件,高效运用和管理数据 数据定义(DDL) 数据组织,存储和管理 数据操纵语言(DML) 数据的事务管理和运行管理 数据库的建立和维护功能 数据库 ......
数据库系统原理之数据库应用设计与开发实例
数据库应用设计与开发实例 第一节 需求描述与分析 在此,结合某高校个性化课程在线选课的实际需求,给出一个简化的需求分析 一、功能性需求 1 管理员后台模块 学生信息管理 教师信息管理 课程信息管理 班级信息管理 2 学生使用模块 查询课程 浏览所选课程 查询成绩 3 教师使用模块 我的课程 登分 二 ......
go run、build、install、get的原理和区别
学习go也有好些年头了,都没怎么研究过go的编译命令。真是惭愧。今天学习并记录下 结论: go run 专门用来运行命令源码文件的命令,一般用来运行单个文件 go build 主要是用于测试编译。编译某个包或者项目,在当前目录下生成可执行文件 go install 编译并安装代码包或者源码文件的。 ......
一文带你弄懂 Maven 拉包原理
业务需求开发的时候,我们总是会遇到拉不到依赖包的情况。此时如果不清楚 Maven 拉取依赖包的原理,那么很可能找不到问题所在。今天树哥就带大家了解下 Maven 拉包的原理,让你在遇到问题的时候能快速解决! 三种仓库 在 Maven 中,仓库指的是存放代码构建的一个位置。从分类上来说,Maven 仓 ......
cpp: create class
PigInfo.h #ifndef PIGINFO_H #define PIGINFO_H #include <iostream> #include<string.h> #include<math.h> using namespace std; /* 实体类 https://learn.micros ......
virtualenv、virtualenvwrapper创建虚拟环境与使用原理
摘要:virtualenv和virtualenvwrapper是创建和管理python虚拟环境的工具包,virtualenvwrapper是virtualenv的封装与扩展而来,方便创建、删除、切换虚拟环境 一、原理 macos ~/.bash_profile添加系统环境变量: export WOR ......
属性指令之class和style
说明 class与style本身是属性指令,但是他们比较特殊,应用更广泛。 # class :class='变量' 变量可以为:字符串、数组、对象 推荐使用数组,因为class可以使用多个参数 # style :style='变量' 变量可以为:字符串、数组、对象 推荐使用对象 class # 先定 ......
干货| 动态更新(热更新)机制及技术原理分享
近期工作提到动态更新比较多,今天也借此机会,梳理一下相关的机制原理同大家分享。 动态机制及技术原理 动态研发模式就是一种基于云端的移动应用开发方法,主要能让开发者快速构建和发布多端的移动应用,实现业务的敏捷迭代和热更新,提高用户体验和运营效率。实现动态更新的原理可以分为两个部分:应用程序更新机制和资 ......
堆块chunk介绍及unlink漏洞利用原理
堆块chunk介绍及unlink漏洞利用原理 chunk结构 当进程动态分配内存时,系统会在堆中创建一个chunk(堆块)。chunk包含chunk头和chunk体两部分 chunk头中有两个字段: prev_size:前一个chunk的size,前指的之前分配的内存,也就是低地址相邻的chunk ......
《逆向工程核心原理》之DLL注入
DLL注入 DLL注入指的是向运行中的其他进程强制插入特定的DLL文件。从技术细节来说,DLL注入命令其他进程自行调用LoadLibrary() API,加载(Loading)用户指定的DLL文件。DLL注入与一般DLL加载的区别在于,加载的目标进程是其自身或其他进程。下图描述了DLL注入的概念。 ......
VLAN原理与配置
什么是VLAN 传统以太网由于泛洪等操作容易产生网络安全和垃圾流量问题,而且广播域越大,网络安全问题和垃圾流量问题就越严重。为了解决此类问题,人们引入了VLAN——虚拟局域网技术。 通过在交换机上部署VLAN,可以将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域,由此可以有效地提升 ......
原理图1
【1】用STM32单片机驱动一个5V的继电器: 继电器 SRD-05VDC-SL-C 引脚:一共五个引脚,两个是线圈(1和4),一个是公共端(5),一个常开一个常闭(2和3) 三极管:STM32单片机引脚高电平为3.3V,用NPN型三极管,则高电平导通,低电平截止。如果用PNP型,由于三极管压降是0 ......
【Java 并发】【八】【Atomic】【四】Strimped64分段锁实现原理
1 前言 上一节我们对LongAdder的底层源码、实现机制进行了深入了剖析,包括AtomicInteger在高并发竞争下导致的大量自旋的问题,以及LongAdder是怎么使用分段锁优化这个问题的。我们最后看到longAccumulate托底的方法,这一节我们来深入的分析一下Striped64的分段 ......