Linux性能分析工具-Perf基本使用

  1. 什么是Perf
    Perf是Linux下进行软件性能分析的工具,在Linux kernel 2.6.31中首次亮相,此后成为内核开发中最活跃的领域之一。
    Perf将Linux性能测量中CPU的硬件差异抽象出来并且提供了一个简单的命令行接口。
  2. 事件(Events)
    Perf支持一系列“可测量”的事件,Perf工具通过对这些可测量的事件的采样和统计来分析程序运行的细节,从而分析程序的性能或者瓶颈从而进行改进。
    这些可测量的事件可能来自不同的来源,比如:
    (1)来自kernel的一些计数器,比如content-switches,这些events称为software events[……]

继续阅读

发表在 Linux | 留下评论

C/C++module从Python2升级到Python3

https://docs.python.org/3/howto/cporting.html

发表在 未分类 | 留下评论

C++扩展Python

最近在写一个小项目,需要用到C++ Python扩展功能。

主要用到以下这些功能:

  1.  Python 调用C++的代码
  2. 在C++代码中回调Python代码

官网文档见:https://docs.python.org/3/extending/extending.html#calling-python-functions-from-c

要在Python中调用C++的代码

需要将C++代码编译成动态库(此动态库即Python可用的模块),并且需要按照一定的格式定义需要被Python调用的函数

如下:

假如模块名称为mymodule,则需要按如下格式定义一个名为initmymodu[……]

继续阅读

发表在 Python | 留下评论

Apache2 启用SSL的方法

  1. 几个相关的指令
    (1) a2enmod/a2dismod :enable/disable模块
    (2)a2ensite/a2dissite: enable/disable site
  2. 证书的获取/生成
    因为自己生成的证书是不会被各浏览器信任的,所以推荐使用免费证书,常用的免费证书申请渠道有:
    (a):Let’s Encrypt: https://letsencrypt.org/
    (b):freeSSL: https://freessl.org/
    以freeSSL为例,申请成功后,会产生full_chain.pem private.key这两个文件,分别为证书和私钥文件。
  3. 开启Apac[……]

继续阅读

发表在 未分类 | 留下评论

[面试]计算两个数组元素差值的最大值?

几个月前去某公司面试,面试官问了一个算法题:给定两个整型数组A和B,如何计算两个数组元素之差的最大值?当时估计一紧张就不知道怎么想的,连什么动态规划都出来了。现在想想其实是一个很简单的问题,根本用不到什么动态规划。

思路:

两个数组元素的差,其实对应到数轴上的两点之间的距离,既然这两个点来自两个数组,其实只要其中一个最大,另一个最小,那么这样的两点之间的距离肯定就是最大的。

方法:

一次遍历数组A:找到A的最大值Amax和A的最小值Amin

一次遍历数组B:找到B的最大值Bmax和B的最小值Bmin

计算两个“距离”:

ABS(Amax-Bmin)和ABS(Bmax-Amin)[……]

继续阅读

发表在 算法 | 留下评论

测试

这是一篇测试文章。

发表在 未分类 | 留下评论

Ubuntu php开发环境搭建

1. 安装apache2

sudo apt-get install apache2

安装完毕后在浏览器输入主机IP应看到如下页面:

 

2. 安装mysql

sudo apt-get install mysql-server
sudo apt-get install mysql-client

记住安装过程中设置的密码

安装完毕后可通过命令简单测试是否安装成功

3.安装php

 

sudo apt-get install php5 libapache2-mod-php5

在最新版本安装完成时,可看到

* Restarting web server[......]

继续阅读

发表在 Linux | 留下评论

Python数据类型之set

set(集合)是一个无序不重复元素集,这些元素在集合中是不按顺序存放的,数据类型也不要求相同。

set的基本操作包括:创建、添加、删除、交集、并集、差集等

创建:

添加:

删除:

update方法:将要传入的参数拆分,作为集合的元素,注意传入的参数必须是“可迭代”的(iterable)

传入不可迭代的参数会报错,例如int型

交集、并集、差集:

 

集合的典型应用:可以用于输出list中不重复的元素

发表在 Python | 留下评论

Linux系统进程类型

交互进程:由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。

批处理进程:这种进程和终端没有联系,是一个进程序列。

监控进程(也称守护进程):Linux系统启动时启动的进程,并在后台运行。

发表在 Python | 留下评论

Python字符串format函数

python从2.6开始支持format,一种新的更加容易读懂的字符串格式化方法。

1. 替代旧的%输出

旧的格式化输出方法:

#!/usr/bin/python
name = 'Tom'
age = 18
print '%s is %d years old' % (name,age)

使用format函数格式化输出:

#!/usr/bin/python
name = 'Tom'
age = 18
print '{0} is {1} years old'.format(name,age)

相比于旧的输出方式,字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用[……]

继续阅读

发表在 Python | 留下评论