源码分析

Struts2 源码分析-----Hello world

今天第一天学习struts2,没学过怎么办,那当然是helloworld。感觉嘛,学习的基本流程都差不多,就是helloworld,开发环境,然后就是逐个按照知识点打demo,打着打着你就会发现struts2已经掌握地差不多了,让后就可以action了。程序员就需要不停地学习,学习能力当然是最重要地噢。 第一步:新建一个Dynamic Web Project 项目结构: 第二步:从官网下载的一个 »

鸿蒙轻内核M核源码分析:LibC实现之Musl LibC

摘要:本文学习了LiteOS-M内核Musl LibC的实现,特别是文件系统和内存分配释放部分。 本文分享自华为云社区《鸿蒙轻内核M核源码分析系列十九 Musl LibC》,作者:zhushy。 LiteOS-M内核LibC实现有2种,可以根据需求进行二选一,分别是musl libC和newlibc ... »

php包管理利器composer源码分析2

Installer.php:188, Composer\Installer->run() InstallCommand.php:119, Composer\Command\InstallCommand->execute() Command.php:242, Composer\Command\InstallCommand->run() Application.php:843, Co »

【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析

前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别。 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是如何来实现分布式锁的。 Zookeeper初识 文件系统 Zookeeper维护一个类似文件系统的数据结构 image.png 每个子目录项如NameService都被称为znoed,和文件系统一样, »

Mybatis3源码分析(3)流程走向

分析源码我们还是从编程式demo入手 我们通过建造者模式创建一个工厂类,配置文件的解析就是在这一步完成的,包括 mybatis-config.xml 和 Mapper 适配器文件。 首先进入build 进入XMLconfigBuilder–这里就是配置文件创建的地方 可以看到这里有很多解析文件的类 解析节点–这里可以看出文件只解析了一次。 解析文件还是比较简单的,基本上就是读取文件的内 »

第二人生的源码分析(二十二)调用OpenGL显示人物名称的函数

继续前一次所介绍的人物名称显示,再来仔细地深入分析字体渲染,到底怎么样设置OpenGL函数才能显示出来呢?先来看下面一段代码: #001void LLFontGL::renderQuad(const LLRectf& screen_rect, const LLRectf& uv_rect, F32 slant_amt) const #002{ #003 glTexCoord2f(u »

zookeeper源码分析02 序列化

核心接口InputArchive和OutputArchive 输入流具体实现BinaryInputArchive   反序列化 从zookeeper的配置中读取extraMaxBuffer大小,Math.max(1024,extraMaxBuffer) 从输入流中读取字节byte 还可以从输入流中读取以下不同的数据类型 输出流OutputArchive  序列化 各种数据类型,写到输出流 »

uboot 源码分析一

这一篇主要是了解uboot。 在分析uboot的Makefile的时候我们知道他的入口地址在cpu/arm920/start.s 打开文件cpu/arm920/start.s:  (1)硬件设备初始化。  依次完成各步奏的执行顺序:    1.将cpu设置成管理模式(svc)。 reset:/* * set the cpu to SVC32 mode */mrs r0,cpsrbic r0,r0, »

Java并发编程笔记之ReentrantLock源码分析

ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞后放入该锁的AQS阻塞队列里面。 首先我们先看一下ReentrantLock的类图结构,如下图所示: 从类图可以知道,ReentrantLock最终还是使用AQS来实现,并且根据参数决定内部是公平锁还是非公平锁,默认是非公平锁。 首先我们先看ReentrantLock源码,看到其构造函数及其参数 »

Flink State Rescale性能优化

背景 今天我们来聊一聊flink中状态rescale的性能优化。我们知道flink是一个支持带状态计算的引擎,其中的状态分为了operator state和 keyed state两类。简而言之operator state是和key无关只是到operator粒度的一些状态,而keyed state是 ... »

HashMap原理及源码分析

1. HashMap原理2. HashMap源码分析3. HashMap在java8中的改变 hashmap原理 HashMap简单来说就是一个散列表,存储着key-value键值对 HashMap的存储结构是一个数组加链表的结构,在java8之后链表在长度超过TREEIFY_THRESHOLD树化阈值且map中的元素数量超过了MIN_TREEIFY_CAPACITY最小树化容量,则会转化成红黑 »

Spring Cloud学习 之 Spring Cloud Ribbon(执行流程源码分析)

Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 分析: 总结: 分析: ​ 在上篇文章中,我们着重分析了RestTemplate,主要是因为,如果我们采用Ribbon进行服务间的调用的话,要用到这个类,现在我们就先来看看怎么使用RestTemplate配合Ribbon进行服务间的调用。 @SpringBoot »

Hessian源码分析(二)------ HessianProxy

Hessian在客户端一块采用Proxy模式,当客户端调用远程接口时,HessianProxy会代理这个动作,在invoke方法中,把客户端请求的方法和参数序列化为预订格式的输出流,主要流程如下图所示: 下面我将详细解析一下invoke源码: [java]view plaincopy publicObjectinvoke(Objectproxy,Methodmeth »

hsqldb源码分析系列4 查询引擎之查询操作

     查询过程前面解析类似insert,最终调用是在下面这个QuerySpecification类的getSingleResult方法,RangeVariable是查询条件相关     private Result getSingleResult(Session session, int maxRows) { int[] limits = sortAndSlice.get »

Netty 源码分析之 二 事件流在ChannlePipeline中的流转

channelPipeline是一个接口,其实现类为DefaultChannelPipeline;通常像pipeline中添加channelHandler时最终都会调用以下方法: @Override public ChannelPipeline addLast(String name, ChannelHandler handler) { return addLast(null, name, »

JDK源码分析系列---ArrayList和LinkList

ArrayList和LinkList的源码分析 概要 ArrayList和LinkList是常用的存储结构,不看源码先分析字面意思,Array意思是数组,可知其底层是用数组实现的,Link意思是链接,可知是以链表实现,这两种数据结构各有什么特点呢?在实际开发中,我们要如何选择? 1.ArrayList ArrayList是实现了List接口的可变数组,即动态数组,它不仅实现了List的可选操 »

open-ethereum-pool以太坊矿池源码分析(1)-main入口分析

# open-ethereum-pool以太坊矿池-main入口 ## 命令行启动 ```shell ./build/bin/open-ethereum-pool config.json ``` ## Main入口流程图 ## config.json配置文件 ```json {     "threads": 2,     "coin": "eth",     "name": "main", »

比特币源码分析--比特币架构

比特币源码分析--比特币架构        前面的一系列文章我们结合源码对比特币的主要模块进行了梳理和分析。本文我们将这些模块拼接起来,看看比特币的整体架构。      比特币的整体架构图如下:            (1)P2P网络层       完成P2P的组网,网络连接管理,节点状态的维护,为比特币提供数据传输服务;      (2)安全与共识层       这一层主要向上层提供安全与数据共 »