函数调用

Btrace入门到熟练小工完全指南

狂风中的少年 提交于 2020-03-10 10:19:51
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。 BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息。而不需要不断地修改代码,加入System.out.println(), 然后重启,然后重启,然后重启应用!!! 同时,特别严格的约束,保证自己的消耗特别小,只要定义脚本时不作大死,直接在生产环境打开也没影响。 在网上搜索BTrace出来的文章都有点旧了,而且不够详细,于是决定,重新写一份。 码这么多的字好辛苦,请保留原文链接: http://calvin1978.blogcn.com/articles/btrace1.html 1. 概述 1.1 快速开始 BTrace搬家了!! 已经搬离了Sun,搬到了 http://github.com/btraceio/btrace ,目前的版本已经是1.38。 在Release页面里下载最新Zip版,解压就能用,UserGuide和 Samples 也在里面。 先抄一个UserGuide里的例子: import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.*; @BTrace public class HelloWorld { @OnMethod( clazz =

Btrace 使用小结

怎甘沉沦 提交于 2020-03-10 09:14:36
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。 BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息。而不需要重启应用! 只要定义脚本时不作大死(比如查看谁调用了HashMap的put方法),直接在生产环境打开也没影响。 1.简介 项目地址:http://github.com/btraceio/btrace 用户指南:https://kenai.com/projects/btrace/pages/UserGuide 在Release页面里下载最新Zip版,解压就能用 tar -zxvf btrace-bin-1.3.8.3.tgz export JAVA_HOME=/opt/taobao/java export PATH=$JAVA_HOME/bin:$PATH ./bin/btrace -cp /home/admin/projectname/target/projectname/BOOT-INF/classes 2016 SlowCall.java ./bin/btrace -cp /home/admin/projectname/target/projectname.war/WEB-INF/classes:/home/admin/projectname/target/projectname.war/WEB

优化PHP代码的40条建议

心已入冬 提交于 2020-03-10 08:21:59
优化PHP代码的40条建议 40 Tips for optimizing your php Code 原文地址: http://reinholdweber.com/?p=3 英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。 1. If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2. echo is faster than print. echo 比 print 快。 3. Use echo’s multiple parameters instead of string concatenation. 使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4. Set the maxvalue for your for-loops before and not in the loop. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5. Unset your variables to free memory,

提高PHP性能的实用方法+40个技巧优化您的PHP代码

荒凉一梦 提交于 2020-03-10 08:21:13
1、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。 2、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 3、$row['id'] 的速度是$row[id]的7倍。 4、echo 比 print 快,并且使用echo输出时用逗号而不是句点代替字符串连接效率更高,比如 echo $str1,$str2。 5、在执行for循环之前确定最大循环数,不要把 count/strlen/sizeof 等每次都要重复做的但结果都一样的事情放到 for 循环的条件语句中,另外最好运用foreach代替for循环。 6、及时注销那些不用的变量,尤其是大数组,对象之类的,以便释放内存。 7、require_once()代价昂贵,据测试数据来看,使用require_once比require慢3-4倍,具体的解决办法可先检查是否存在引用然后决定是都需要require。 8、include和require文件时尽量不要使用相对路径,因为使用相对路径的时候它会首先查找指定的php包含路径,然后查找当前目录,因此会检查过多路径,所以最佳选择是使用绝对路径。 9

Kotlin系列 - 高阶函数与标准库中的常用函数(三)

社会主义新天地 提交于 2020-03-10 03:39:44
Kotlin细节文章笔记整理更新进度: Kotlin系列 - 基础类型结构细节小结(一) Kotlin系列 - 函数与类相关细节小结(二) 1.高阶函数 基本概念: 传入或者返回函数的函数 函数引用:引用的函数名前加上 :: 有以下几种类型: 类成员方法引用: 类名::成员方法名 扩展函数引用: 类名::扩展函数名 实例函数引用: 实例名::成员方法名 包级别函数引用: ::函数名 第一个例子: 打印数组中的元素(传入包级别函数) fun main(args:Array<String>) { args.forEach(::println) //函数引用 } public actual inline fun println(message: Any?) { System.out.println(message) } public inline fun <T> Array<out T>.forEach(action: (T) -> Unit): Unit { for (element in this) action(element) } forEach(action: (T) -> Unit) :要求传入了一个函数,参数为 (action: (T) -> Unit) ,类型为 一个参数T ,返回值为 Unit println(message: Any?) :类型为 一个参数T

Erlang OTP行为模式behaviour——gen_event

匆匆过客 提交于 2020-03-09 18:26:49
说明 最近笔者在学习otp行为模式,在查阅相关资料时发现网上有关erlang的资料不是很多,也不够详细。在参考官方文档以及其他作者的文章后,决定写这篇博客。算是自己对知识的复习,也为诸君提供一些参考。 1.gen_event 简介 Gen_event实现了通用事件处理,通过其提供的标准接口方法以及回调函数,在OTP里面的事件处理模块是由一块通用的事件管理器和任意数量的事件处理器,并且这些事件处理器可以动态的添加和删除。一个事件可以用来记录error,alarm,info, warning等信息。一个事件管理器可以安装一个或多个事件处理器,当一个事件管理器接受到一个事件的通知时,这个事件将会被所有的已安装的事件处理器依次处理。 事件管理器是作为一个进程实现的,每个事件处理器都是一个回调模块。且事件管理器实质上是一个{Module,State} 组成的列表,Module是事件处理器,State为该事件处理器内部状态。 2.事件处理器 不多废话,直接上代码,以下为一个事件处理器标准模板,具体函数将在后面做出详细解释。事件处理器可以有多个。 -module(info_logger). -behaviour(gen_event). %% gen_event callbacks -export([init/1, handle_event/2, handle_call/2, handle

Python基础知识点总结【面试必过】

时光总嘲笑我的痴心妄想 提交于 2020-03-09 15:01:37
数据类型: 数字类型(int、float、bool(True or False)、complex) 字符串(str) —— ' ' or " " 相关操作:通过下标获取内容,对字符串进行多步操作前一般需要进行切片[:],保证原字符串不会随着操作变化。(注意:起始坐标和结束坐标都看省略,步进根据自己的需要与否决定是否设置,有时候很简单的解决某些问题) 注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九起起巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 常用方法: capitalize 使指定字符串首字母大写 center(width, fillchar) 将原字符串变成指定的长度并且内容居中,剩下的部分使用指定的字符填充 rjust(width, fillchar) 将原字符串变成指定的长度并且内容右对齐,剩下的部分使用指定的字符填充 字符串1.join(字符串2) 在字符串2中的每个字符之间插入一个字符串1 列表(list)—— [1,2,3] 相关操作:列表的操作与字符串的操作基本相同,不过需要注意的是字符串的操作对象是单个字符,列表的操作对象是列表中的元素。 常用方法: append 在列表的末尾添加一个元素 insert

c++构造函数的作用---13

人走茶凉 提交于 2020-03-09 12:25:54
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ http://blog.csdn.net/tidyjiang/article/details/52073671 一、 构造函数是干什么的 class Counter { public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: // 数据成员 int m_value; } 该类对象被创建时,编译系统对象分配内存空间, 并自动调用该构造函数->由构造函数完成成员的初始化工作 eg: Counter c1; 编译系统为对象c1的每个数据成员(m_value)分配内存空间,并调用构造函数Counter( )自动地初始化对象c1的m_value值设置为0 故: 构造函数的作用:初始化对象的数据成员。 二、 构造函数的种类 class Complex { private : double m_real; double m_imag; public: // 无参数构造函数 // 如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做 // 只要你写了一个下面的某一种构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数

dajngo基础

强颜欢笑 提交于 2020-03-09 11:32:10
Django入门及简单的demo练习 一 、什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。 如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。 正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。 这个接口就是WSGI:Web Server Gateway Interface。 实例: 1 from wsgiref.simple_server import make_server 2 3 4 def application(environ, start_response): 5 start_response

python学习笔记(七):面向对象编程、类

不羁的心 提交于 2020-03-09 09:28:27
一、面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想。在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功能。举个例子,你要做饭,可以用电磁炉,也可以用煤气灶。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程。 提到面向对象,就不得不提到另一种编程思想,面向过程;什么是面向过程呢,面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。这种思想比较好理解,其实这也是一个人做事的方法,我们之前编程的思想也都是使用这种思想。这种编程思想,只要前面有一个步骤变了,那么后面的就也要变,后面维护起来比较麻烦,这样的编程思想,我们在写一些简单的小程序、只执行一次的脚本时可以使用。而面向对象呢,面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。这种思想比较适合多人的分工合作,就像一个大的机关,分各个部门,每个部门分别负责某样职能,各个部门可以充分发挥自己的特色,只要符合一定前提就行了。 举个例子:比如刚才说的一个大的机关,要做某一个项目,从面向过程的思想来说,应该是这样分析的