本文环境python3.5.2,django1.10.x系列 1.根据上一篇文章分析了,django-admin startproject与startapp的分析流程后,根据django的官方实例此时编写好了基本的路由和相应的处理函数,此时需要调试我们写的接口此时本地调试,django框架提供了python manage.py runserver 命令来本地调试. 2.runserver的特点是启用多线程处理请求,并可以监控当文件修改后自动重启服务,以达到服务重启极大方便了本地的调试,根据官方文…
django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I believe to become a better developer you MUST get a better understanding of the underlying software systems you use on a daily basis and that includes p…
前言 ​ 好多人对技术的理解都停留在懂得使用即可,因而只会用而不会灵活用,俗话说好奇害死猫,不然我也不会在凌晨1.48的时候决定写这篇博客,好吧不啰嗦了 ​ 继续上一篇文章,后我有个问题(上文:"一篇文章理解web框架本质&手撸一个web框架https://www.cnblogs.com/xiaoyuanqujing/articles/11641028.html") ​ 问:django是如何通过网络socket层接收数据并将请求转发给django的urls层 ​ 有的人张口就…
一 前言 Django是如何通过网络socket层接收数据并将请求转发给Django的urls层? 有的人张口就来:就是通过wsgi(Web Server Gateway Interface)啊! Django框架完全遵循wsgi协议,底层采用socket.socketserver.select网络模型实现,可以利用操作系统的非堵塞和线程池等特性. Django本身是用python代码实现的wsgi服务,并发非常低,默认6个,而线上部署Django项目时一般采用C语言实现的uwsgi. 二 顺藤…
1.ArrayList源码和多线程安全问题分析 在分析ArrayList线程安全问题之前,我们线对此类的源码进行分析,找出可能出现线程安全问题的地方,然后代码进行验证和分析. 1.1 数据结构 ArrayList内部是使用数组保存元素的,数据定义如下: transient Object[] elementData; // non-private to simplify nested class access 在ArrayList中此数组即是共享资源,当多线程对此数据进行操作的时候如果不进行同步控…
### 前言 前面我们讲了 [Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f) [Okhttp3源码解析(1)-OkHttpClient分析](https://www.jianshu.com/p/bf1d01b79ce7) [Okhttp3源码解析(2)-Request分析](https://www.jianshu.com/p/5a85345c8ea7) ### newCall分析 ##### Call初始化 我们首先看一下在哪用到了Cal…
### 前言 前面我们讲了 [Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f) [Okhttp3源码解析(1)-OkHttpClient分析](https://www.jianshu.com/p/bf1d01b79ce7) 今天主要分析下Request源码! ### Request初始化 当我们构建完OkHttpClient对象,需要构造Request对象,构造方式如下: ###### 1.Get请求 ``` final Request r…
Spring mvc之源码 handlerMapping和handlerAdapter分析 本篇并不是具体分析Spring mvc,所以好多细节都是一笔带过,主要是带大家梳理一下整个Spring mvc的执行流程,以及如何根据URL查找处理器Controller的实现 (适合那些刚阅读源码不知道如何下手的人) http://www.guojinbao.com/borrow/borrowDetail/GETadLPjnf0[d].do 如何根据URL地址---->找到正确处理器Controller…
HashMap的源码学习以及性能分析 一).Map接口的实现类 HashTable.HashMap.LinkedHashMap.TreeMap 二).HashMap和HashTable的区别 1).HashTable的大部分算法做了同步,线程是安全的,HashMap没有同步,线程不安全. 2).Hashtable不允许key或value使用null值,HashMap可以. 3).两者对key的hash算法和hash值到内存索引的映射方法不同. 三).HashMap的实现原理 HashMap的底层…
前言 在高并发的环境下,当我们使用一个公共的变量时如果不加锁会出现并发问题,例如SimpleDateFormat,但是加锁的话会影响性能,对于这种情况我们可以使用ThreadLocal.ThreadLocal是将公共变量copy一份到线程私有内存中以消除并发问题,ThreadLocal是JDK内部提供的高效解决并发问题的工具类之一,本文介绍ThreadLocal的重要方法的源码实现以及相关问题的分析. 数据结构 由上图可以看出,在Thread中维护了一个Entry的列表,Entry存储的是公共变…