前言 进程的内存映像 常用寄存器初识 call,ret 指令的作用分析 什么是系统调用 什么是 ELF 文件 程序执行基本过程 Linux 下程序的内存映像 栈在内存中的组织 缓冲区溢出 实例分析:字符串复制 缓冲区溢出后果 缓冲区溢出应对策略 如何保护 ebp 不被修改 如何保护 eip 不被修改? 缓冲区溢出检测 缓冲区注入实例 准备:把 C 语言函数转换为字符串序列 注入:在 C 语言中执行
介绍 TCP发送一个或一组报文,会等待收到报文的确认信息。重传,即发生在报文没有到达或确认信息没有及时返回的情况下。当发现网速变慢时,原因之一可能就是重传。发生重传的原因有多种,在客户机或服务器两边端口应用Wireshark有助于诊断问题。本文通过抓包实例阐述各种可能性。 更多信息 诊断过程: 在相应端口开始抓数据。 找到Analyze | Expert Info菜单。 在Notes之下,查找Re
第 10 章 算法设计和分析 利用计算机解决问题的关键是设计出合适的算法。对特定问题设计出求解算法,体现了 程序设计这种智力活动的创造性的一面。从事创造性活动需要创造性思维,而不能仅仅依靠 机械的模仿。虽然算法设计并没有一定之规,但计算机科学家总结出了一些行之有效的设计 方法,掌握这些方法对于利用计算机解决问题具有重要意义。利用计算机解决问题,并非只 要设计出正确的算法就行了,还需要分析算法的复杂
标题 内容 类型 通用 支持布局 N/S 所需脚本 https://c.mipcdn.com/static/v2/mip-stats-mta/mip-stats-mta.js 说明 MIP 腾讯移动分析mta组件基于腾讯移动分析 H5分析接入,请参照 API 将参数配置在 MIP 页。目前事件追踪支持 click, mouseup, 其它事件暂不支持。 示例 MIP 提供腾讯移动分析的插件,提供实
从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分析 Seata AT 模式在启动的时候都做了哪些操作。 客户端启动逻辑 TM 是负责整个全局事务的管理器,因此一个全局事务是由 TM 开启的,TM 有个全局管理类 GlobalTransac
1.首先来看下包结构,在seata-dubbo和seata-dubbo-alibaba下有统一由TransactionPropagationFilter这个类,分别对应apache-dubbo跟alibaba-dubbo. 分析源码 package io.seata.integration.dubbo; import io.seata.core.context.RootContext; im
1. 前言 在上一小节中,我们介绍了 Vue-Cli 初始化项目,本小节我们一起来分析以下 Vue-Cli 创建项目的文件结构。 2. 目录结构 首先我们先看以下用 Vue-Cli 创建项目的整体结构: 项目相关的代码,我们都放在 src 的文件夹中,该文件夹中的结构如下: assets 是资源文件夹,通常我们会把图片资源放在里面。 components 文件夹通常会放一些组件。 router 文
本书的前四章都是关于代码模式(异步与同步)的性能,而第五章是关于宏观的程序结构层面的性能,本章从微观层面继续性能的话题,关注的焦点在一个表达式/语句上。 好奇心最重的一个领域——确实,一些开发者十分痴迷于此——是分析和测试如何写一行或一块儿代码的各种选项,看哪一个更快。 我们将会看到这些问题中的一些,但重要的是要理解从最开始这一章就 不是 为了满足对微性能调优的痴迷,比如某种给定的JS引擎运行++
这一章将介绍这样一种技术,它把非确定性分析器(parser) 实现成一种嵌入式的语言。其中,第一部分将会解释什么是 ATN 分析器,以及它们是如何表示语法规则的。第二部分会给出一个 ATN 编译器,这个编译器将会使用在前一章定义的非确定性操作符。最后的几个小节则会展示一个小型的 ATN 语法,然后看看它在实际中是如何分析一段样本代码的。 23.1 背景知识 扩充转移网络(ATN),是 Bill W
校验者: @AnybodyHome @numpy 翻译者: @FAME Linear Discriminant Analysis(线性判别分析)(discriminant_analysis.LinearDiscriminantAnalysis) 和 Quadratic Discriminant Analysis (二次判别分析)(discriminant_analysis.QuadraticDis
Serverless 适合用于事件驱动型应用,以及定时任务。今天,让我们来看看一个事件驱动的例子。 在之前的那篇《Serverless 应用开发指南:CRON 定时执行 Lambda 任务》中,我们介绍了如何调度的示例。 最初我想的是通过 Lambda + DynamoDB 来自定义数据格式,后来发现使用 Kinesis Streams 是一种更简单的方案。 Amazon Kinesis Stre
作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性。这部分也是Jsoup最复杂的部分,需要一些数据结构、状态机乃至编译器的知识。好在HTML语法不复杂,解析只是到DOM树为止,所以作为编译器入门倒是挺合适的。这一块不要指望囫囵吞枣,我们还是泡一杯咖啡,细细品味其中的奥妙吧。 基础知识 编译器 将计算机语言转化为另一种计算机语言(通常是更底层的语言,例如机器码、汇编、
接上面一小节,开始看 TCPServer 的 code。 TCPServer的__init__函数很简单,仅保存了参数而已。 唯一要注意的是,它可以接受一个io_loop为参数。实际上io_loop对TCPServer来说并不是可有可无,它是必须的。不过TCPServer提供了多种渠道来与一个io_loop绑定,初始化参数只是其中一种绑定方式而已。 listen 接下来我们看一下listen函数,
Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封装了 epoll 性能较好。文章主要以分析 tornado 的网络部分即异步事件处理与上层的 IOstream 类提供的异步IO,其他的模块如 web 的 tornado.web 以后慢慢留作分析。
计算机科学中所说的代码覆盖率是一种用于衡量特定测试套件对程序源代码测试程度的指标。拥有高代码覆盖率的程序相较于低代码低概率的程序而言测试的更加彻底、包含软件 bug 的可能性更低。 --Wikipedia 在本章中,你将学到 PHPUnit 中与代码覆盖率相关的一切功能。通过这部分功能,能够了解在测试运行过程中执行了生产代码的哪些部分。它使用了 PHP_CodeCoverage 组件,