解析函数

golang http server源码解析

删除回忆录丶 提交于 2019-12-10 15:23:36
golang 版本:1.12.9 简单的HTTP服务器代码: package main import ( "net/http" ) type TestHandler struct { str string } func (th *TestHandler)ServeHTTP(w http.ResponseWriter, r *http.Request){ w.Write([]byte(string(th.str+",welcome"))) } func main(){ http.Handle("/", &TestHandler{"Hi,Stranger"}) http.HandleFunc("/test",func(w http.ResponseWriter,r *http.Request){ w.Write([]byte("Hi,Tester")) }) http.ListenAndServe(":8000",nil)} 在浏览器输入“http://127.0.0.1:8000”得到输出“Hi,Stranger,welcome”;输入“http://127.0.0.1:8000/test”得到输出“Hi,Tester” handler的注册 handler的相关方法如下: func NewServeMux() *ServeMux func (mux *ServeMux)

python inspect模块解析

烈酒焚心 提交于 2019-12-10 13:37:31
inspect模块主要提供了四种用处: (1).对是否是模块,框架,函数等进行类型检查。 (2).获取源码 (3).获取类或函数的参数的信息 (4).解析堆栈 使用inspect模块可以提供自省功能,下面是关于自省的一些介绍:  首先通过一个例子来看一下本文中可能用到的对象和相关概念。 # coding: UTF-8 import sys # 模块,sys指向这个模块对象 import inspect def foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__ (self, name = ' kitty ' ): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问 print self.name, ' says Hi! ' # 访问名为name的字段,使用实例.name访问 cat = Cat() # cat是Cat类的实例对象 print Cat.sayHi # 使用类名访问实例方法时,方法是未绑定的(unbound) print cat.sayHi # 使用实例访问实例方法时,方法是绑定的(bound) 有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的某个字段赋值

php缓冲区解析

给你一囗甜甜゛ 提交于 2019-12-10 00:39:01
什么是缓冲区? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料. 其实缓冲区最本质的作用就是, 协调高速CPU和相对缓慢的IO设备(磁盘等)的运作. PHP在执行的时候,在什么地方有用到缓冲区? 想要了解PHP的缓冲区,就要知道执行PHP的时候,缓冲区被设置到了什么地方. 当执行PHP的时候,如果碰到了echo print_r之类的会输出数据的代码,PHP就会将要输出的数据放到PHP自身的缓冲区,等待输出. 当PHP自身的缓冲区接到指令(或者脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。),指示要输出缓冲区的内容时,将会把缓冲区内的数据输出到apache上, apache接受到PHP输出的数据,然后再把该数据存在到 apache自身的缓冲区 内,等到输出 当apache接受到指令,只是要输出缓冲区的内容时, 将会把缓冲区的内容输出,返回到浏览器. 由此可见,PHP要输出数据的时候,将会经过两个缓冲区(先是自身的,然后是apache的),再返回到浏览器. 缓冲区在PHP中起到什么作用? 1.最常见的就是在使用header函数之前,就已经输出了某些数据,这样会导致某些错误,例如 Cannot modify header information –

WinDbg查看没有正常显示的函数堆栈信息

本小妞迷上赌 提交于 2019-12-07 23:14:47
工作中难免需要查看dump,现在VC2015对dump的解析已经非常好了,自动化程度做的也很不错,只要设置了symbol路径,则绝大部分dump都可以自动解析。但有的dump,函数堆栈不够清晰,默认情况下windbg/cv2015都无法准确解析,这里就需要windbg来手动处理了。处理步骤如下: 1. 问题示例。 0:025> knb # ChildEBP RetAddr WARNING: Stack unwind information not available. Following frames may be wrong. 00 3211f0c0 76273520 ntdll!NtDelayExecution+0x15 *** ERROR: Symbol file could not be found. Defaulted to export symbols for kernel32.dll - 01 3211f0d0 75c2270d KERNELBASE!Sleep+0xf 02 3211f0e4 75c07890 kernel32!GetProfileStringW+0x15161 03 3211f0f4 75c0780f kernel32!UnhandledExceptionFilter+0x161 04 3211f180 77bd21d7 kernel32

Android RIL结构分析与移植

橙三吉。 提交于 2019-12-07 19:19:51
Android RIL结构分析与移植 介绍 本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。 包括四个主题: 1.Android RIL框架介绍 2.Android RIL与 WindowsMobile RIL 3.Android RIL porting 4.Android RIL的java框架 在本文档中将Android代码中的重要模块列出进行分析,并给出了相关的程序执行流程介绍,以加深对模块间交互方式的理解。 对于java代码部分,这里仅进行简单的介绍。如果需要深入了解,可以查看相关参考资料。 本文档中还对Android RIL的Porting部分内容进行了描述和分析。 针对对unix操作系统环境并不熟悉的读者,本文档中所涉及到的相关知识包括: Unix file system Unix socket Unix thread Unix 下I/O多路转接 以上信息可以在任意一份描述Unix系统调用的文档中找到。 1.Android RIL框架介绍 术语: fd unix文件描述符 pipe unix管道 cond 一般是condition variable的缩写 tty 通常使用tty来简称各种类型的终端设备 unsolicited response 被动请求命令来自baseband event loop

Halo(十三)

纵饮孤独 提交于 2019-12-07 17:54:19
Spring Boot Actuator 请求跟踪 Spring Boot Actuator 的关键特性是在应用程序里提供众多 Web 接口, 通过它们了解应用程序运行时的内部状况,且能监控和度量 Spring Boot 应用程序。 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> Spring Boot Actuator 默认会把最近100次的 HTTP 请求记录到内存中,对应的实现类是 InMemoryHttpTraceRepository。 使用 @Service public class TraceService { private final HttpTraceRepository httpTraceRepository; public TraceServiceImpl(HttpTraceRepository httpTraceRepository) { this.httpTraceRepository = httpTraceRepository; } public List<HttpTrace> listHttpTraces() { return

var,let和const深入解析(一)

百般思念 提交于 2019-12-07 16:51:47
es6有许多特别棒的特性,你可能对该语言的整体非常熟悉,但是你知道它在内部是如何工作的吗?当我们知道它的内部原理以后,我们使用起来也会更加的安心一些。这里我们想逐步的引导你,让你对其有一个更深入,更浅显的认识。让我们就先从es6中的变量开始讲起吧。 let和const 在es6中新引入了两种方式来申明变量,我们仍然可以使用广为传诵的var变量(然而你不应该继续使用它了,继续阅读来了解其中原因),但是现在我们有了两种更牛的工具去使用:let和const。 let let和var非常的相似,在使用方面,你可以使用完全相同的方式来声明变量,例如: let myNewVariable = 2; var myOldVariable = 3; console.log(myNewVariable); // 2 console.log(myOldVariable); // 3 但是实际上,他们之间有几处明显的不同。他们不仅仅是关键字变了,而且实际上它还让会简化我们的一些工作,防止一些奇怪的bug,其中这些不同点是: let是块状作用域(我将会在文章后面着重讲一下作用域相关的东西),而var是函数作用域。 let不能在定义之前访问该变量(var是可以的,它确实是js世界中许多bug和困扰的源头)。 let不能被重新定义。 在我们讲解这些不同点之前,首先我们看一个更酷的变量:const const

php mail函数发送html邮件不解析,linux+postfix

江枫思渺然 提交于 2019-12-06 22:48:28
今天想通过php发送邮件, 根据手册描述,发送html邮件需要指定header头 <?php $header="MIME-Version: 1.0\r\n"; $header.="From:admin@xxx.com\r\n"; $header.="Content-Type:text/html;charset=utf-8\r\n"; $message="<html><body><a href='http://xxx.com'></a></body></html>"; mail('cxz@163.com','测试邮件标题',$message,'-fadmin@xxx.com'); 结果发出的邮件还是显示源代码,html并未生效,连header头信息都当作文本显示出来了。 以为是postfix的原因,百度了一通,无解。 goole了一下,发现有老外的文章提到这个问题,解决办法是: header头信息末尾不要用 \r\n,用PHP_EOL替代,如下: $header="MIME-Version: 1.0".PHP_EOL; $header.="From:admin@xxx.com".PHP_EOL; $header.="Content-Type:text/html;charset=utf-8".PHP_EOL; 原因,php下换行符是\n,win下换行符是\r\n,这里PHP

理解Javascript执行过程

ⅰ亾dé卋堺 提交于 2019-12-06 11:16:33
Javascript是一种解释型的动态语言。 在程序中,有编译型语言和解释型语言。那么什么是编译型语言,什么是解释型语言呢? 编译型语言: 它首先将源代码编译成机器语言,再由机器运行机器码(二进制)。 解释型语言: 相对于编译型语言而存在的,源代码不是直接编译为目标代码,而是将源代码翻译成中间代码,再由解释器对中间代码进行解释运行的。 比如javascript/python等都是解释型语言(但是javascript是先编译完成后,再进行解释的)。 主要的编译型语言有c++, 解释型语言有Javascript, 和半解释半编译(比如java)。 一. 了解代码是如何运行的? 我们都知道,代码是由CPU执行的,但是CPU不能直接执行我们的if...else这样的代码,它只能执行二进制指令,但是二进制对应我们的可读性来说并不友好,比如二进制 11100000 这样的,我们并不知道它代表的是什么含义, 因此科学家们就发明了汇编语言。 汇编语言 什么是汇编语言? 它解决了什么问题? 汇编语言是二进制指令的文本形式,和二进制指令是一一对应的关系,比如加法指令 00000011 写成汇编语言就是ADD。那么汇编语言的作用就是将ADD这样的还原成二进制,那么二进制就可以直接被CPU执行。它最主要的作用就是解决二进制指令的可读性问题。 但是汇编语言也有缺点: 1. 编写的代码非常难懂,不好维护。 2

Django笔记4---路由系统

泪湿孤枕 提交于 2019-12-06 10:08:27
Django的路由系统 Django的路由系统指的是路径和函数的对应关系,之前只知道在urls.py内修改urlpattern的内容,知道正则匹配的路径开头与视图的匹配关系. Django的路由系统在Django中叫做URLconf系统,就像Django维护的一个目录,本质是URL与要为该URL调用的视图之间的映射表.来看看Django 1.11的URLconf官方文档是怎么说的吧: 针对Django里的app,想让其正常工作,也要为其设计一套URL以便浏览器访问该app不同的功能.在设计一个app的URL时,会建立一个Python模块,我们非正式的将其称作URLconf. URLconf用纯Python语言编写,提供了URL路径样式(正则表达式)与视图函数的对应关系.URLconf可长可短,还可以引用其他的映射关系,也可以动态生成. 简明的说,URLconf就是一个py文件,里边写上了URL和视图的对应关系,放在项目下边,作为URLconf配置文件.当有请求进来的时候,就会按照其中的配置发挥作用.URLconf文件的名称也可以自定义.在项目的根目录下约定俗成采用urls.py当做初始的URLconf配置文件. URLconf配置文件 URLconf文件 from django.conf.urls import url urlpatterns = [ url(regex, view