0x00 引言 本篇对drf中的mixins进行简要的分析总结.Mixins在drf中主要配合viewset共同使用,实现http方法与mixins的相关类与方法进行关联. from rest_framework import viewsets 在这个viewset中,只要有5类Minxin,他们与http方法对应如下: 下面,我们将逐个Mixins介绍! 0x01 CreateModelMixin # 源码 class CreateModelMixin(object): ""&quo…
快速实例 Quickstart 序列化 创建一个序列化类 简单使用 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式.我们可以通过声明与Django forms非常相似的序列化器(serializers)来实现. models部分: from django.db import models # Create your models here. class Book(models.Model): title=mode…
0x00  引言 官方文档:http://www.django-rest-framework.org/drf为我们提供强大的通用view的功能,本博客对这些view进行简要的总结分析.首先,我们看一下主要的几种view以及他们之间的关系. 这其中,还涉及了mixins,主要也分为5类: 0x01 django View 首先,我们使用django自带的view,获取一个课程的列表: # drf是通过json的格式进行数据交互的,所以这里也返回json数据 import json from dja…
最近在研究Zepto的源码,这是第一篇分析,欢迎大家继续关注,第一次写源码笔记,希望大家多指点指点,第一篇文章由于首次分析原因不会有太多干货,希望后面的文章能成为各位大大心目中的干货. Zepto是一个匿名函数的运行结果,而zepto是该匿名函数中定义的一个对象,注意区分 zepto.matches match = ~zepto.qsa(parent, selector).indexOf(element) zepto.qsa:zepto优化过的选择器 zepto.qsa(parent, sele…
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载联系作者并保留声明头部与原文链接https://luzeshu.com/blog/redis1 本博客同步在http://www.cnblogs.com/papertree/p/7159802.html 这个系列博客大部分完成于一年前,基于3.0.5版本(但是代码行数不一定完全相符,调试过程中会修改一些代码). 这一篇博客针对第二篇涉及到的redisClient.redisDb.redisObject(robj)等几个结构体,以及redi…
AsyncTask源码笔记 AsyncTask在注释中建议只用来做短时间的异步操作,也就是只有几秒的操作:如果是长时间的操作,建议还是使用java.util.concurrent包中的工具类,例如Executor, ThreadPoolExecutor, FutureTask等. 使用 AsyncTask类中定义了三个重要的参数类型:Params, Progress, Result.还有四个重要的过程:onPreExecute, doInBackground, onProgressUpdate,…
Arrays.java是Java中用来操作数组的类.使用这个工具类可以减少平常很多的工作量.了解其实现,可以避免一些错误的用法. 它提供的操作包括: 排序 sort 查找 binarySearch() 比较 equals 填充 fill 转列表 asList() 哈希 Hash() 转字符串 toString() 这个类的代码量很多,Java1.7中有4000多行.因为每一种基本类型都做了兼容,所以整个类真正逻辑不多.下面简单介绍一下它各个功能的实现: 排序 这里的排序实现有两种 一种是为基本类…
以前没想过这么个问题:Tomcat怎么处理webapps下项目,并且我访问浏览器ip: port/项目名/请求路径,以SSM为例,Tomcat怎么就能将请求找到项目呢,项目还是个文件夹类型的? Tomcat部署webapps下项目方法位于:HostConfig#deployApps,别问怎么知道的,看源码,也可以支持看下我前面的博客,虽然介绍粗枝大叶,但是也能走到这步了. 介绍下deployApps,最开始获取两个配置,分别是catalina-home/webapps以及catalina-hom…
一.Tomcat启动的入口 Tomcat初始化简单流程前面博客介绍了一遍,组件除了StandardHost都有博客,欢迎大家指文中错误.Tomcat启动类是Bootstrap,而启动容器启动入口位于 Catalina 的start方法:  因为反射调用Bootstrap的Catalina实例的start方法. Catalina启动分为两个大阶段,一是启动Server(start方法),二是 Server启动之后等待(await方法) 一.StandardServer#start 按照之前记录 T…
根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Connector实例化到初始化的过程 国际惯例这个词最近很常见,那国际惯例,我先放上Tomcat各个组件结构图:Connector地位,一个Service下可以有多个Connector,和Container愉快的生活在Service里: 先来看看server.xml中对于Connector元素的位置以及如…
Tomcat8源码笔记(四)Server和Service初始化 介绍过Tomcat中Service的初始化 最先初始化就是Container,而Container初始化过程是咋样的? 说到Container的初始化,Tomcat8源码笔记(三)Catalina加载过程 这篇文章记录了Tomcat是怎样解析server.xml的流程,再此基础上,我们来分析Container的初始化. 这是Catalina定义的解析规则,之前都是添加的Rule接口的实现,而RuleSet可以理解为一堆Rule更具象…
上一章 简单说明下Tomcat各个组件: Server:服务器,Tomcat服务器,一个Tomcat只有一个Server组件; Service:业务层,是Server下最大的子容器,一个Server可以包含多个Service组件: Connector:连接器,Service的子容器,一个Service可以有多个Connector连接器,作用体现在对外,接收客户端请求,HTTP.TCP等: Container:Service核心组件,通常有Engine.Host.Context.Wrapper,作…
之前介绍过 Catalina加载过程是Bootstrap的load调用的  Tomcat8源码笔记(二)Bootstrap启动 按照Catalina的load过程,大致如下: 接下来一步步分析加载过程 一.initDirs 从系统环境变量.VM参数中读取java.io.tmpdir, 并校验文件夹合法性: 未指定java.io.tmpdir,会抛出异常,所以我们启动时指定VM参数: -Djava.io.tmpdir=E:/Tomcat_Source_Code/apache-tomcat-8.0.…
搭建一个简单的Go Web服务器 Go语言标准库 - net/http 在学习Go语言有一个很好的起点,Go语言官方文档很详细,今天我们学习的Go Web服务器的搭建就需要用到Go语言官方提供的标准库 net/http,通过http包提供了HTTP客户端和服务端的实现.同时使用这个包能很简单地对web的路由,静态文件,模版,cookie等数据进行设置和操作.如果对http概念不是太清楚的朋友可以自行google. http包建立Web服务器 package main import ( "fmt&…
上篇笔记讲到了聚合函数的实现并且带大家看了聚合函数是如何注册到ClickHouse之中的并被调用使用的.这篇笔记,笔者会续上上篇的内容,将剖析一把ClickHouse聚合流程的整体实现. 第二篇文章,我们来一起看看聚合流程的实现~~ 上车! 1.基础知识的梳理 ClickHouse的实现接口 Block类 前文我们聊到ClickHouse是一个列式存储数据库,在内存之中用IColumn接口来作为数据结构表示数据. 而Block则是这些列的集合,也就是说Block包含了一组列,而无数个Block就…
前言 前面在学习 JUC 源码时,很多代码举例中都使用了线程池 ThreadPoolExecutor,并且在工作中也经常用到线程池,所以现在就一步一步看看,线程池的源码,了解其背后的核心原理. 公众号:『 刘志航 』,记录工作学习中的技术.开发及源码笔记:时不时分享一些生活中的见闻感悟.欢迎大佬来指导! 介绍 什么是线程池 线程池(英语:thread pool):一种线程使用模式.线程过多会带来调度开销,进而影响缓存局部性和整体性能.而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务.…
前言 时至今日,Spring 在 Java 生态系统与就业市场上,面试出镜率之高,投产规模之广,无出其右.随着技术的发展,Spring 从往日的 IoC 框架,已发展成 Cloud Native 基础设施,衍生出大量 Spring 技术栈,如大家熟知的 Spring Boot.Spring Cloud 和 Spring Security 等. 毋庸置疑,Spring 早已成为 Java 后端开发事实上的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分Java 后端程序员在日常工…
ReactElement 源码笔记 ReactElement通过 createElement创建,调用该方法需要 传入三个参数: type config children type指代这个ReactElement 的类型 config指代这个ReactElement 的属性对象 children指代这个ReactElement 的子元素节点 字符串比如 'div','p'代表原生DOM,称为HostComponent Class 类型是我们继承自 Component 或者 PureCompone…
笔者在源码笔记1之中分析过ClickHouse的聚合函数的实现,但是对于各个接口函数的实际如何共同工作的源码,回头看并没有那么明晰,主要原因是没有结合Aggregator的类来一起分析聚合函数的是如果工作起来的.所以决定重新再完成一篇聚合函数的源码梳理的文章,帮助大家进一步的理解ClickHouse之中聚合函数的工作原理. 本系列文章的源码分析基于ClickHouse v19.16.2.2的版本. 1.IAggregateFunction接口梳理 话不多说,直接上代码,笔者这里会将所有聚合函数的…
下图是springmvc的执行流程 图片来源:https://www.jianshu.com/p/8a20c547e245 DispatcherServlet根据url定位到Controller和方法,依赖的是HandlerMapping接口的各个实现类,其中,RequestMappingHandlerMapping是专门用来处理注解方式的Controller的 下面,我们分RequestMappingHandlerMapping的加载以及RequestMappingHandlerMapping…
分享一下笔者研读ClickHouse源码时分析函数调用的实现,重点在于分析Clickhouse查询层实现的接口,以及Clickhouse是如何利用这些接口更好的实现向量化的.本文的源码分析基于ClickHouse v19.16.2.2的版本. 1.举个栗子 下面是一个简单的SQL语句 SELECT a, abs(b) FROM test 这里调用一个abs的函数,我们先打开ClickHouse的Debug日志看一下执行计划.(当前ClickHouse不支持使用Explain语句来查看执行计划,这…
今天是猿灯塔“365篇原创计划”第五篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源码解析(二): Netty 的 Channel Netty 源码解析(三): Netty的 Future 和 Promise Netty 源码解析(四): Netty 的 ChannelPipeline 当前:Netty 源码解析(五): Netty 的线程池分析 Netty 源码解析(六): Channel 的 register 操作 Netty 源码解…
01 restful规范 目录 01 restful规范 1. 什么是restful规范 2.restful规范详细 1. 什么是restful规范 restful是一套规则,是程序间进行数据传输的一种约定 REST 与技术无关,代表的是一种软件架构风格,REST 是 Representational State Transfer 的简称,中文翻译为"表征状态转移" REST 从资源的角度来审视整个网络,它将分布在网络中某个节点的资源通过 URL 进行标识,客户端应用通过 URL 来获…
笔记要求 了解Java语言 了解Spring Framework的基础 会使用Maven 关于本笔记 起因 本职数据分析,为公司内部人员开发数据处理系统,使用了Python/Django+Bootstrap的选型,完成后不甚满意,便试着学习C#,第一次接触C#的Web框架完全懵了,后来才转向Java,有了懵过之后的C#/Web资料经验,大概明白了Spring Framework的门道,发现Spring其实应该与C#/Web差不多吧. 大概明白了Spring Springwork的编写,到使用Sp…
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意义 'use strict' 严格模式:代码规范及其不推荐严格模式理由rootjQuery根节点:document 获取及其声明意义readyList DOM加载相关……typeof undefined 字符串形式'undefined'的存放及其意义. 先看开头的注释: /*! * jQuery J…
Camera的架构与Android系统的整体架构保持一致,如下图所示,本文主要从以下四个方面对其进行说明. Framework:Camera.java Android Runtime:android_hardware_Camera.cpp Library:Camera Client和Camera Service HAL:CameraHardwareInterface 一.Framework:Camera.java Camera是应用层软件直接使用的类,涵盖了启动.预览.拍摄及关闭等操作摄像头的全…
jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类库相比,它剑走偏锋,从 web 开发的实用角度出发,抛除了其它 Lib 中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库.其使用简单,文档丰富,而且性能高效,能极大地提高 web 系统的开发效率.因此可以说是 web 应用开发中最佳的 Js 辅助类库之一.大部分开发者正在抛弃 Prototype,而选择Jquery 做为他们进行 web 开发的 JS 库. 如是开发人员仅仅只…
用了backbone一段时间了,做一些笔记和总结,看的源码是1.12 backbone有events,model,collection,histoty,router,view这些模块,其中events是最基础的,其他的模块的prototype全部都扩展了他,所以events是非常重要的,真的很重要,还好代码比较简单,也比较好理解 这个里面的代码是从backbone里面剥离出来,然后一点一点研究和调试出来的,可以单独运行,依赖underscore (function(){ this.Backbon…
关于KV数据库leveldb的介绍,网上已经太多了,这里只是自己再学习源码过程中,整理的笔记,磁盘存储和内存存储的结构用了伪代码表示出来了,首先是内存中存储结构,然后是log文件存储结构和磁盘数据sst文件存储结构. MemTable存储格式 MemTable底层是用skiplist(跳跃表)进行存储, 数据全部存储在内存中, 具体结构设计如下: class MemTable { enum ValueType { kTypeDeletion = 0x0, /*正常标记*/ kTypeValue…
学习Django的时候知道,在Django请求的生命周期中,请求经过WSGI和中间件到达路由,不管是FBV还是CBV都会先执行View视图函数中的dispatch方法 REST framework是基于Django的API框架,REST framework采用的是CBV的请求模式. 所以在一个项目中,使用了REST framework的时候, 请求到达REST framework后,也先执行REST framework中的dispatch方法 先来看看dispatch方法的源码 def disp…