首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python源码剖析

作为主流的动态语言,Python不仅简单易学、移植性好,而且拥有强大丰富的库的支持。...此外,Python强大的可扩展性,让开发人员既可以非常容易地利用C/C++编写Python的扩展模块,还能将Python嵌入到C/C++程序中,为自己的系统添加动态扩展和动态编程的能力。....为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Python的运行原理都是非常重要的。...本书以CPython为研究对象,在C代码一级,深入细致地剖析Python的实现。书中不仅包括了对大量Python内置对象的剖析,更将大量的篇幅用于对Python虚拟机及Python高级特性的剖析。...本书适合于Python程序员、动态语言爱好者、C程序员阅读

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

浏览缓存机制剖析

强缓存 一旦资源命中强缓存,浏览便不会向服务发送请求,而是直接读取缓存。...协商缓存的响应结果,不仅验证了资源的有效性,同时还更新了浏览缓存。主要更新内容如下: ? Age:0 表示命中了代理服务的缓存,age值为0表示代理服务刚刚刷新了一次缓存。...Age 出现此字段,表示命中代理服务的缓存。它指的是代理服务对于请求资源的已缓存时间,单位为秒。...这样老式浏览和新的浏览,通过代理,就分别拿到了未压缩和压缩版本的资源,避免了都拿同一个资源的尴尬。...上述虽能禁用缓存,但只有部分浏览支持,而且由于代理不解析HTML文档,故代理服务也不支持这种方式。 IE8的异常表现 实际上,上述缓存有关的规律,并非所有浏览都完全遵循,比如IE8。

1.3K60

浏览缓存机制剖析

浏览对于请求资源, 流程如图所示: ? 可以看到浏览的缓存机制分为两个部分: 1、当前缓存是否过期? 2、服务中的文件是否有改动? 第一步:判断当前缓存是否过期 这是判断是否启用缓存的第一步。...如果浏览通过某些条件(条件之后再说)判断出来,ok现在这个缓存没有过期可以用,那么连请求都不会发的,直接是启用之前浏览缓存下来的那份文件,此时状态码为200 第二步:判断服务中的文件是否有改动 1...public VS. private 要知道从服务到浏览之间并非只有浏览能够对资源进行缓存,服务的返回可能会经过一些中间(intermediate)服务甚至甚至专业的中间缓存服务,还有CDN...强缓存 一旦资源命中强缓存, 浏览便不会向服务发送请求, 而是直接读取缓存....Age 出现此字段, 表示命中代理服务的缓存. 它指的是代理服务对于请求资源的已缓存时间, 单位为秒.

60070

服务虚拟化剖析-1

前面几期主要介绍了数据中心中fabric网络架构以及部署网络自动化的关键技术,从本期开始我们将注意力下移到服务。...每个物理服务都有自己的CPU、内存、I/O等,服务内部还会有虚拟交换机华为叫v-switch,通过v-switch来执行软交换,v-switch是通过CPU虚拟出来执行软交换行为,其作用是实现服务内部虚机业务的互通...服务通过安装虚拟化操作系统,在此基础上部署虚机,虚机中可以安装主流的操作系统,VM以寄居的形式处在物理服务之上,同时虚机之间互相并列且隔离共用底层的一套硬件设备,虚机内部的操作系统叫gust os与物理服务的...物理服务通过一系列的资源切片,如CPU分成多个V-CPU、物理内存复用、同时I/O芯片组也支持多channle,可以把虚拟化的计算机资源组织给不同的虚机,多虚机共用一套硬件资源从而答复提升服务利用率...,如果把操作系统直接安装在裸金属服务上,其利用率一般只有30%,通过虚机的形式可将利用率提升到80%。

4.6K30

「ShardingSphere」SQL 解析源码剖析

在阅读官方文档的过程,看到这么一段描述:“核心由SQL解析 => 执行优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并的流程组成”。...抱着内心这样奇奇怪怪的疑问,让我们来通过本篇文章来剖析“SQL解析”的源代码吧! 二、官方文档解释 官方使用这个图片来解释,分库分表后的数据查询过程。这里引用下图片以及步骤的简单说明。...执行优化,合并和优化分片条件,如OR等。 SQL路由,根据解析上下文匹配用户配置的分片策略,并生成路由路径 SQL改写,将SQL改写为在真实数据库中可以正确执行的语句。...SQL执行,通过多线程执行异步执行。 结果归并,将多个执行结果集归并以便于通过统一的JDBC接口输出。...五、总结 以上是“SQL解析”的源代码内容,这部分代码主要运用到了工厂模式、单例模式、cache 缓存,以及 antlr 解析 SQL 语法的第三方插件来实现的。

1.3K30

「ShardingSphere」SQL 解析源码剖析

在阅读官方文档的过程,看到这么一段描述:“核心由SQL解析 => 执行优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并的流程组成”。...抱着内心这样奇奇怪怪的疑问,让我们来通过本篇文章来剖析“SQL解析”的源代码吧! 二、官方文档解释 官方使用这个图片来解释,分库分表后的数据查询过程。这里引用下图片以及步骤的简单说明。...执行优化,合并和优化分片条件,如OR等。 SQL路由,根据解析上下文匹配用户配置的分片策略,并生成路由路径 SQL改写,将SQL改写为在真实数据库中可以正确执行的语句。...SQL执行,通过多线程执行异步执行。 结果归并,将多个执行结果集归并以便于通过统一的JDBC接口输出。...五、总结 以上是“SQL解析”的源代码内容,这部分代码主要运用到了工厂模式、单例模式、cache 缓存,以及 antlr 解析 SQL 语法的第三方插件来实现的。

97841

Python源码剖析之整数对象

utm_source=qq&utm_medium=social ❈ 在《Python源码剖析》中,Python的版本为2.5,而在Python3中,前面提到,int类型的底层实现是Python2中的long...我们来看一下在Python2.7中,PyIntObject的实现: Python2中的整数对象PyIntObject实际上就是对C原生类型long的一个包装。...这时候,Python选择了另一种策略。 大整数对象 Python的设计者的策略是:对于小整数对象,直接把它们全部缓存在对象池中。...我们可以看到,通过_PyInt_Init的调用,Python创建了这些小整数对象,然后它们就会在整个运行周期中一直存在,直至解释毁灭。...Python3中int的实现 int即long 我们在之前提到,在Python3中int底层实现就是以前Python2中的long类型。

1.3K80

深度剖析Python字典和集合

“字典这个数据结构活跃在所有Python程序的背后,即便你的源码里并没有直接用到它”,摘抄自《代码之美》第18章Python的字典类:如何打造全能战士。字典是Python语言的基石!...“集合”这个概念在Python中算是比较年轻的,使用率也比较低,我只在元素去重和求差集并集时使用过。...正是如此,Python标准库里的所有映射类型都是利用dict来实现的。...如果没有,函数会把m当作包含了键值对(key, value)元素的迭代Python里大多数映射类型的构造方法都采用了类似的逻辑。...setdefault 当字典dk不能找到正确的键的时候,Python会抛出异常。也许每个Python使用者都知道可以用d.get(k, default)来代替dk,给找不到的键一个默认的返回值。

1.5K00

Clojure 运行原理之编译剖析

本文为第一篇,涉及到的主要内容有:编译工作流程、Lisp 的宏机制。...编译工作流程 与解释型语言里的解释类似,编译型语言通过编译(Compiler)来将源程序编译为字节码。...一般来说,编译包括两个部分: 前端:词法分析 → 语法分析 → 语义分析 后端:分析、优化 → 目标代码生成 Clojure 的编译也遵循这个模式,大致可以分为以下两个模块: 读取 Clojure...} String token = readToken(r, (char) ch); return interpretToken(token); } Reader 的行为是由内置构造(...emit 这里需要明确一点的是,Clojure 编译并没有把 Clojure 代码转为相应的 Java 代码,而是借助 bytecode 操作库 ASM 直接生成可运行在 JVM 上的 bytecode

94330

Golang 大杀之性能剖析 PProf

Interactive terminal use:交互式终端使用 Web interface:Web 界面 可以做什么 CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存)...Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏 Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括定时通道...在特定的场景中,PProf 给定位、剖析问题带了极大的帮助。 希望本文对你有所帮助,另外建议能够自己实际操作一遍,最好是可以深入琢磨一下,内含大量的用法、知识点 ?。...原文地址:Golang 大杀之性能剖析 PProf 觉得本文对你有帮助?请分享给更多人。

2.2K30

Python猫荐书系统之四:《Python源码剖析

先来看看今天的主角是谁:《Python源码剖析——深度探索动态语言核心技术》,2008年出版,作者 @陈儒 ,评分8.7分。 ? 是的,你没看错,出版年份2008年。...书的内容简介中有这一段,我看了便觉得兴趣满满: 本书以CPython为研究对象,在C代码一级,深入细致地剖析Python的实现。...书中不仅包括了对大量Python内置对象的剖析,更将大量的篇幅用于对Python虚拟机及Python高级特性的剖析。...全书主要分两部分,第一部分(1-6章)剖析Python的几大内建对象(如整数、字符串、列表、字典),涉及对象创建、维护、缓冲池、提升效率的机制等内容;第二部分(7-16章)剖析Python虚拟机,涉及虚拟机框架...——@膘 很好的讲解Python源码剖析的书籍,深入讲解了Python的各种特性是如何通过C语言实现的,对于想了解Python底层实现的程序员很有帮助,讲解的很详细,不过看底层C实现看多了也确实容易乏味

1.1K30

高性能MySQL(二):服务性能剖析

文章目录 前言 性能优化简介 通过性能剖析进行优化 理解性能剖析 剖析MySQL查询 慢查询日志 pt-query-digest 优秀资料 慢SQL定位分析 前言 我准备开一个新的系列,这是我以前接触不多的新领域...---- 在他们的技术咨询生涯中,最常碰到的三个性能相关的服务请求是:如何确认服务是否达到了性能最佳的状态、找出某条语句为什么执行不够快,以及诊断被用户描述成“停顿”、“堆积”或“卡死”的某些间歇性疑难杂症...数据库服务的目的是执行SQL语句,所以它关注的是查询或者语句(查询 == 发送给服务的指令)。 优化:我们假设优化是服务在一定的工作负载下尽可能的而减少响应时间。...这个时候性能剖析就可以派上用场了。 ---- 通过性能剖析进行优化 性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行排序,将重要的任务排到前面。...---- 理解性能剖析 1、值的优化的查询 性能剖析不会自动给出哪些查询值得时间去优化。 对一个占总响应时间不超过5%的查询进行优化,无论如何努力,收益也不会超过5%。

72920

LAMP-各PHP加速性能剖析

参与测试的加速:Xcache,Opcache,hhvm Xcache简介 前面已经介绍了PHP加速的原理和功用(参见LAMP-PHP-fpm服务配置),xcache作为目前使用广泛的PHP加速之一...,其性能比早期的eAccelerator加速要优良,故本次就对比一下PHP程序在执行时加速xcache对其的性能影响。...类似,都是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务负载,但性能却比Xcache更加优越,详见测试结果 安装Opcache wget...index.php即可 # 注:为了更好的测试出PHP加速的缓存特性,可连续多测试几次,得到稳定值 测试结果对比 从上图可以看出,PHP加速对PHP程序的执行过程加速明显;综合每秒的请求数和PHP...服务的负载来看: xcache使得PHP程序的执行效率提升了3-4倍; Opcache使得PHP程序的执行效率提升了6-7倍; 据说hhvm对PHP程序的加速效果更加强悍。

66010

1.1 jvm核心类加载--jdk源码剖析

通过启动这个java类, 会由这个类引导加载加载并创建很多其他的类加载. 而这些加载才是真正启动并加载磁盘上的字节码文件. 第四步:真正的去加载本地磁盘的字节码文件,然后启动执行main方法....没有被真正使用的类不会被加载 二. jvm核心类加载 类主要通过类加载来加载, java里面有如下几种类加载 1....自定义类加载: 负责加载用户自定义路径下的类包 引导类加载是由C++帮我们实现的, 然后c++语言会通过一个Launcher类将扩展类加载(ExtClassLoader)和应用程序类加载(AppClassLoader...应用程序加载加载....那么,第一个bootstrap引导类加载, 那引导类加载返回的为什么是null呢?

51830
领券