源码

java集合类型源码解析之PriorityQueue

亡梦爱人 提交于 2020-01-29 09:59:16
本来第二篇想解析一下LinkedList,不过扫了一下源码后,觉得LinkedList的实现比较简单,没有什么意思,于是移步PriorityQueue。 PriorityQueue通过数组实现了一个堆数据结构(相当于一棵完全二叉树),元素的优先级可以通过一个Comparator来计算,如果不指定Comparator,那么元素类型应该实现Comparable接口。最终compare得出的最小元素,放在堆的根部。 成员变量 public class PriorityQueue<E> extends AbstractQueue<E> { transient Object[] queue; // non-private to simplify nested class access private int size = 0; private final Comparator<? super E> comparator; transient int modCount = 0; // non-private to simplify nested class access } PriorityQueue的成员变量和ArrayList高度类似: queue 元素存储空间数组,代表一棵完全二叉树,索引位置n的节点的左右子树分别为(2n+1)和(2n+2); size 元素数量 modCount

源码安装php和nginx问题记录

為{幸葍}努か 提交于 2020-01-29 08:52:17
1.没有php,ini 源码安装php后没有生成php.ini文件,将源码中的php.ini-development或者php.ini-production放到phpini的文件加载目录中 2.Nginx报No input file specified 使用sudo strace -p 2773 -s 1000 //绑定pid为nginx的进程号,设置字符串长度为1000定位具体报错 网上说把php.ini中的open_basedir注释掉即可,我发现我的已经被注释掉了,只能打开open_basedir并指向自己的php目录 ps:open_basedir选项为设置php可访问的目录权限 来源: CSDN 作者: 爬行的程序猿 链接: https://blog.csdn.net/qq_31112281/article/details/104002374

DVA 源码分析

不羁岁月 提交于 2020-01-29 06:04:29
NPM相关资源包: dva, dva-core, redux-saga, redux dva-core/createStore const app = dva() app.model() 在app启动前app.model方法将model准备好之后存入_models对象中 function model(m) { if (process.env.NODE_ENV !== 'production') { (0, _checkModel.default)(m, app._models); } var prefixedModel = (0, _prefixNamespace.default)((0, _objectSpread2.default)({}, m)); app._models.push(prefixedModel); return prefixedModel; } 在app启动后app.model方法会将model准备好之后存入_models后再执行saga步骤 function injectModel(createReducer, onError, unlisteners, m) { m = model(m); var store = app._store; store.asyncReducers[m.namespace] = (0, _getReducer.default)

权限的功能及源码流程

不打扰是莪最后的温柔 提交于 2020-01-29 04:04:01
基本使用 问题: 不同的视图赋予不同的权限,以用来访问 views.py from django.shortcuts import render, HttpResponse from django.http import JsonResponse from rest_framework.views import APIView from api import models ORDER_DICT = { 1: { 'name': 'qiu', 'age': 18, 'gender': '男', 'content': '...' }, 2: { 'name': 'xi', 'age': 19, 'gender': '男', 'content': '.....' } } def md5(user): import hashlib import time ctime = str(time.time()) m = hashlib.md5(bytes(user, encoding='utf-8')) m.update(bytes(ctime, encoding='utf-8')) return m.hexdigest() class AuthView(APIView): authentication_classes = [] def post(self, request, *args, *

Android 常用开源框架源码解析 系列 (四)Glide

瘦欲@ 提交于 2020-01-29 04:02:58
一、定义 Glide 一个被google所推荐的图片加载库,作者是bumptech。对Android SDk 最低要求是 API 10 与之功能类似的是Square公司的picasso 二、基本概念 Model :数据来源 :Uri、本地文件、资源ID Data :加工数据 Resource :对原始数据进行解码,解码之后的资源 resource Resource decode :资源解码器 TransformedResource:转换资源 TranscodedResource:转码,将静态、Gif动态图进行格式转换以便能加载 Target :目标图片 三、整体流程 A:Model图片数据源 ———ModelLoader加载—>原始数据Data——Decoder解码——> Resource——Transform裁剪——>TransformResource——Transcode转码——>TranscodeResource——封装——>Target 四、源码 引入 :compile 'com.github.bumptech.glide:glide:3.7.0' 4.1、使用流程三步曲: Glide .with(“上下文context”) .load(“url”) .into(“显示的控件资源"); 4.2、常用加载图片的配置参数: public void LoadImage(View

制作linux内核安装包

别等时光非礼了梦想. 提交于 2020-01-29 00:15:32
实验基于Centos 6.2 升级linux内核 直接在一个有编译环境的设备上,编译升级内核很简单。 make menuconfig 或者 拷贝现有系统的.config文件 修改.config文件 CONFIG_DEBUG_INFO=n (避免编译产生文件过大) make oldconfig make all -j4 make modules_install make install 制作linux内核安装包 有时需要在虚拟机上编译好内核后,安装到另外的设备上,而设备上工具有限,没有编译开发环境等。一种方式是通过nfs挂载,在设备上直接make modules_install,然后make install。 另外一种,就是手动拷贝安装。下面介绍怎么制作一个内核安装包,可以直接在设备上安装。以下以内核3.5.3为例说明。 1、编译 make all -j4 2、准备各种目录及文件 新建文件夹 kernel-3.5.3 export INSTALL_MOD_PATH=kernel-3.5.3 执行make modules_install 模块会安装到文件夹kernel-3.5.3中 拷贝源码目录下scripts中的depmod.sh 到kernel-3.5.3中 拷贝源码目录下arch/x86/boot/bzImage 到kernel-3.5.3中 拷贝源码目录下System

第五篇:HashMap的源码分析

与世无争的帅哥 提交于 2020-01-28 23:53:46
今天我们接着来学习HashMap的源码,HashMap的数据结构与ConcurrentHashMap的数据结构相同,所以学好HashMap对后面学习ConcurrentHashMap很有帮助。 目录 基本的全局常量 HashMap的数据结构 HashMap的散列函数 散列冲突的处理 HashMap的扩容机制 put 方法的源码解析 get 方法和remove的源码解析 环境 本代码基于JDK1.8 基本的全局常量 默认初始化的容器大小16: static final int DEFAULT_INITIAL_CAPACITY = 1 << 4 ; // aka 16 1 左移4位 最大的数据容量2的30次方。也就是说最多存放2的30次方个数据 static 来源: CSDN 作者: 飞哥上码 链接: https://blog.csdn.net/u014534808/article/details/104102276

ArrayDeque源码解析

梦想与她 提交于 2020-01-28 21:21:38
ArrayDeque ArrayDeque 是基于数组实现到的一个无界双端队列,容量可扩展,不允许null元素,因为移除位的元素将使用null填充。队列的容量是数组的长度,并且数组长度始终是2的次幂。使用 ArrayDeque 实现栈或者队列比使用 Stack 、 LinkedList 效率高。 双端队列可以从头部和尾部新增或移除元素。使用 head 和 tail 两个指针标识头节点和尾节点, (tail - head ) & (elements.length - 1) 计算元素个数。当 head = tail ,表明存储数组已满,扩容数组大小一倍。除去扩容,其余时间整个队列中 tail != head ,所以找到第一个null元素,数组遍历结束。 关键属性 // 底层元素存储, 默认长度为8 transient Object[] elements; // 队列头部元素 transient int head; // 队列尾部元素 transient int tail; // 默认最小容量,如果传递的容量小于8,则使用8作为传递容量,最后实际容量被修改为16 private static final int MIN_INITIAL_CAPACITY = 8; 构造函数 /** * 默认数组长度为16 */ public ArrayDeque() { elements = new

Spring源码学习(七) AOP

扶醉桌前 提交于 2020-01-28 21:20:54
目录 (一)AOP使用示例 (二)动态AOP自定义标签 (三)创建AOP代理 (一)AOP使用示例 (1)XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"> <bean class="vi.com.bean.postprocessors.BeanFactoryPostProcessorA"></bean> <bean id="user" class="vi.com

PriorityQueue源码解析

♀尐吖头ヾ 提交于 2020-01-28 16:53:06
PriorityQueue PriorityQueue 基于 小根堆 实现,是一个无界队列,不允许null元素。底层存储使用数组,索引n的元素的左右两个孩子索引分别为 2n + 1 和 2n + 2 。 PriorityQueue 元素通过比较器排序,如果比较器为空,则使用自然排序。 PriorityQueue 默认容量大小为11,当存储数组中总元素个数等于数组长度时,触发扩容。扩容时,如果原存储数组长度小于64,则扩容为原来的1倍,否则扩容50%,扩容中使用 Arrays.copyOf 复制旧数组元素到新数组。 关键属性 // 默认数组容量11 private static final int DEFAULT_INITIAL_CAPACITY = 11; // 存储队列元素 queue[n]的左右孩子分别为queue[2n + 1]、queue[2(n+1)] transient Object[] queue; // 优先队列中总元素个数 private int size = 0; // 排序比较器 private final Comparator<? super E> comparator; // 结构性修改次数 transient int modCount = 0; 构造函数 /** * 使用默认容量(11)、元素之间使用自然排序 */ public