30s源码刨析系列之函数篇】的更多相关文章

前言 由浅入深.逐个击破 30SecondsOfCode 中函数系列所有源码片段,带你领略源码之美. 本系列是对名库 30SecondsOfCode 的深入刨析. 本篇是其中的函数篇,可以在极短的时间内培养你的函数式思维. 内容根据源码的难易等级进行排版,目录如下: 新手级 普通级 专家级 正文 新手级 checkProp const checkProp = (predicate, prop) => obj => !!predicate(obj[prop]); const lengthIs4…
MapReduce编程刨析: Map map函数是对一些独立元素组成的概念列表(如单词计数中每行数据形成的列表)的每一个元素进行指定的操作(如把每行数据拆分成不同单词,并把每个单词计数为1),用户可以自定义一个把数据拆分成不同单词并把单词计数为1的映射map函数),事实上每个元素都是被独立操作的,而原始列表没有被修改,因为这里创建了一个新的列表来保存新的答案. public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> { //设定Context…
基本流程概述 - 与django相比是两种不同的实现方式. - django/tornado是通过传参数形式实现 - 而flask是通过上下文管理, 两种都可以实现,只不实现的方式不一样罢了. - 上下文管理: - 说上下文管理前要先提一下threadinglocal,它为每一个线程开辟一块独立的空间,但是Flask不是用它做得,它自己实现类一个local类 - 其中创建了一个字典来保存数据,这个字典的key是用线程的唯一标识,如果有协程用greelet拿的一个唯一标识,可以是线程的也可以支持协…
目录 1.Hash的计算规则? 2.HashMap是怎么形成环形链表的(即为什么不是线程安全)?(1.7中的问题) 3.JDK1.7和1.8的HashMap不同点? 4.HashMap和HashTable的区别? 5.ConCurrentHashMap? 为什么加载因子是0.75 HashMap构造函数: HashMap数组默认的值 tableSizeFor(int cap) 为什么HashMap的容量一定是2的幂 put方法 resize()方法 hash()方法 为什么使用(n - 1) &…
看源码前我们必须先知道一下ConcurrentHashMap的基本结构.ConcurrentHashMap是采用分段锁来进行并发控制的. 其中有一个内部类为Segment类用来表示锁.而Segment类里又有一个HashEntry<K,V>[]数组,这个数组才是真正用 来存放我们的key-value的. 大概为如下图结构.一个Segment数组,而Segment数组每个元素为一个HashEntry数组 看源码前我们还必须了解的几个默认的常量值: DEFAULT_INITIAL_CAPACITY…
[String 是如何实现的?它有哪些重要的方法?] String 内部实际存储结构为 char 数组,源码如下: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { // 用于存储字符串的值 private final char value[]; // 缓存字符串的 hash code private int hash; // Default to 0 //…
[基本结构] 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的: JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示: 数组中的元素我们称之为哈希桶,它的定义如下: static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next…
线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在. 一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源.更加轻量化,也因此被称为轻量级的进程. 线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态: NEW,新建状态,线程被创建出来,但尚未启动时的线程状态: RUNNABLE,就绪状态,表示可以运行的线程状态,它可能正在运行,或者是在排队等待操作系统给它分配 CP…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先从概念理解,从中央调度器,携带参数request,调度到HandleMapping处理器映射器,处理器映射器返回处理器执行链给中央调度器 我从底层走一遍,印证这个概念: 1.都说是中央调度器的,所以先找到中央调度器DispatcherServlet 2.从他里面找到一个方法   ctrl+f 找(doDistch) protected void doDispatch(HttpServletRequest…
def clean_name(self) value = self.cleaned_data.get('name') if "金-瓶-梅" not in value: raise ValidationError("不符合要求") return value 重写clean方法…
MVVM大比拼之AngularJS源码精析 简介 AngularJS的学习资源已经非常非常多了,AngularJS基础请直接看官网文档.这里推荐几个深度学习的资料: AngularJS学习笔记 作者:邹业盛 .这个笔记非常细致,记录了作者对于AngularJS各个方面的思考,其中也不乏源码级的分析. 构建自己的AngularJS .虽然放出第一章后作者就写书去了.但这第一部分已经足以带领读者深入窥探angularJS在核心概念上的实现,特别是dirty check.有愿意继续深入的读者可以去买书…
简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有特点有: 双工绑定基于 observe 模式,性能高. 插件和扩展机制非常完善,无论在数据层还是展现层都能满足各种复杂的需求. 向下支持到IE6 文档.测试完备,社区较活跃. 入口 以下分析都将对照 github 上3.x的版本.有一点需要先了解:ko 使用 google closure compi…
MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多来自knockout.angularjs等大牌框架影响,但作者相信 vue 在性能.易用性方面是有优势.同时也自己做了和其它框架的性能对比,在这里.今天以版本 0.10.4 为准 入口 Vue 的入口也很直白: 1 var demo = new Vue({ el: '#demo', data: {…
[原创]K8_Delphi源码免杀系列教程[2014] 虽是2014年的,但免杀思路方法并未过时 比如函数动态调用\代码注释法等至今依然有效 链接:https://pan.baidu.com/s/1HgiFvSwNm8An1eaOYx2n8A 提取码:ka58…
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkplayer播放器源码分析之音视频输出--视频篇 一步步实现windows版ijkplayer系列文章之三--Ijkplayer播放器源码分析之音视频输出--音频篇 一步步实现windows版ijkplayer系列文章之四--windows下编译ijkplyer版ffmpeg 一步步实现windows版…
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkplayer播放器源码分析之音视频输出--视频篇 一步步实现windows版ijkplayer系列文章之三--Ijkplayer播放器源码分析之音视频输出--音频篇 一步步实现windows版ijkplayer系列文章之四--windows下编译ijkplyer版ffmpeg 一步步实现windows版…
学习资料:开涛的<跟我学SpringMVC.pdf> 众所周知,springMVC是比较常用的web框架,通常整合spring使用.这里抛开spring,单纯的对springMVC做一下总结. 概念 HandlerMapping:处理器映射,对请求的URL进行映射为具体的处理器(如果有拦截器也包含拦截器,会将Handler和多个HandlerInterceptor封装为HandlerExecutionChain对象) HandlerAdapter:处理器适配器,适配不同类型的处理器,如Cont…
一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resources/. 本文是自己第一次尝试写源码阅读的文章,会努力将原理和源码实现流程结合起来.文中有几个点目前也是没有弄清楚,若是写在一篇博客里,时间跨度太大,但又怕后期遗忘,所以先记下来,后期进一步阅读源码后再添上,若是看到不完整版博文的看官,对不住! 文中若是写的不准确的地方欢迎留言指出. 源码系列基于Fl…
一. jwt token校验源码简析 1.1 前言 之前使用jwt签发了token,里面的头部包含了加密的方式.是否有签名等,而载荷中包含用户名.用户主键.过期时间等信息,最后的签名还使用了摘要算法进行不可逆的加密. 同时检验签名时还需进行签名的碰撞检测,判断该token是否合法.jwt提供了一个校验token的认证方法,使用时只需要CBV中进行局部身份验证配置即可.使用如下: from rest_framework_jwt.authentication import JSONWebTokenA…
前言 问题 阶段 1:基本初始化 阶段 2:检查哨兵模式,执行 RDB 或 AOF 检测 阶段 3:运行参数解析 阶段 4:初始化 server 资源管理 初始化数据库 创建事件驱动框架 阶段 5:执行事件驱动框架 参考链接 Redis 源码简洁剖析系列 前言 main 函数是 Redis 整个运行程序的入口.源码主要在 server.c 文件中. 前面 6 篇文章分析了 Redis 的基础数据结构. Redis 源码简洁剖析 01 - 环境配置 Redis 源码简洁剖析 02 - SDS 字符…
声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 从Sizzle1.8开始,这是Sizzle的分界线了,引入了编译函数机制 网上基本没有资料细说这个东东的,sizzle引入这个实现主要的作用是分词的筛选,提高逐个匹配的效率 我们不直接看代码的实现,通过简单的实现描述下原理: 以下是个人的理解,如果有错误欢迎指出! Javascript有预编译与我们说的编译函数是不同的概念 什么是JavaScript的“预编译”? function Aaron() { alert("he…
从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译现有的代码 51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本 去MYSQL官网下源码:https://dev.mysql.com/downloads/mysql/ 选 SOURCE  CODE 下载解压.选VS code来查看, 用VS打开发现这些目录 ,根据了解到的目录结…
Spring源码深度解析系列-----------org.springframework.aop-3.0.6.RELEASE…
简介 druid是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,druid还扩展了监控统计.防御SQL注入等功能. 本文将包含以下内容(因为篇幅较长,可根据需要选择阅读): druid的使用方法(入门案例.JDNI使用.监控统计.防御SQL注入) druid的配置参数详解 druid主要源码分析 使用例子-入门 需求 使用druid连接池获取连接对象,对用户数据进行简单的增删改查(sql…
目录 LinkedList 源码学习 LinkedList继承体系 LinkedList核心源码 Deque相关操作 总结 LinkedList 源码学习 前文传送门:Java小白集合源码的学习系列:ArrayList 本篇为集合源码学习系列的LinkedList学习部分,如有叙述不当之处,还望评论区批评指正! LinkedList继承体系 LinkedList和ArrayList一样,都实现了List接口,都代表着列表结构,都有着类似的add,remove,clear等操作.与ArrayLis…
目录 Vector源码学习 Vector继承体系 Vector核心源码 基本属性 构造器 扩容机制 Enumeration 概述 源码描述 具体操作 Vector总结 Vector源码学习 前文传送门: Java小白集合源码的学习系列:LinkedList Java小白集合源码的学习系列:ArrayList Vector是JDK1.0中的集合,是集合中的老大哥,其中大部分的方法都被synchronized关键字所修饰,与ArrayList和LinkedList不同,它是线程安全的(关于线程安全,…
什么是logback logback 用于日志记录,可以将日志输出到控制台.文件.数据库和邮件等,相比其它所有的日志系统,logback 更快并且更小,包含了许多独特并且有用的特性. logback 被分成三个不同的模块:logback-core,logback-classic,logback-access. logback-core 是其它两个模块的基础. logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J. logback-access 提供…
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 druid 一样,HikariCP 也支持监控功能. HikariCP 是目前最快的连接池,就连风靡一时的 BoneCP 也停止维护,主动让位给它,SpringBoot 也把它设置为默认连接池. 看过 HikariCP 源码的同学就会发现,相比其他连接池,它真的非常轻巧且简单,有许多值得我们学习的地方,尤其性能提…
简介 这是 Mybatis 系列博客的第四篇,我本来打算详细讲解 mybatis 的配置.映射器.动态 sql 等,但Mybatis官方中文文档对这部分内容的介绍已经足够详细了,有需要的可以直接参考.所以,我将扩展一些其他特性或使用细节,掌握它们可以更优雅.高效地使用 mybatis. 这里补充一点,本文的所有测试例子都是基于本系列 Mybatis 第一篇文章的项目,其他相关博客如下: Mybatis源码详解系列(一)--持久层框架解决了什么及如何使用Mybatis Mybatis源码详解系列(…
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository 层中解耦出来,除了这些基本功能外,它还提供了动态 sql.延迟加载.缓存等功能. 相比 Hibernate,Mybatis 更面向数据库,可以灵活地对 sql 语句进行优化. 针对 Mybatis 的分析,我拆分成使用.源码分析.生成器等部分,已更新5篇博客,都放在 Mybatis 这个系列里,内容…