自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (3)
  • 收藏
  • 关注

原创 iTerm2连接远程主机

以前在Windows上都是通过sftp,winscp之类的ssh客户端连接远程linux主机。 Mac下一只用的是iTerm2终端,查了一下,它也具备ssh客户端的功能。通过iTerm2->Preferences->Profiles增加一个ProfileiTerm2也支持和远程主机见传输文件 上传 scp local_file username@ip:remote_file scp -

2017-09-12 19:03:35 13467

原创 FreeSWITCH的端口设置

关于freeswitch的文章,几乎所有的文章,都是讲的怎么在本地搭建环境,所以一直没有关注它的端口设置问题。今天申请了阿里云,在云上安装了freeswitch之后运行不起来,用netstat -anp|grep 5060查看端口并没有在监听,所以想到了云环境下应该需要设置下端口。因为如果freewitch处于防火墙后面,需要在防火墙上开启相关端口映射,否则freeswitch 收不到外面过来的数据

2017-09-12 16:09:28 10779

原创 阿里云centos7.03源码安装freeswitch

1,刚申请的阿里云并没有开发需要的各种软件工具,需要自己安装。 2,freeswitch版本号为偶数的是稳定版本,目前最新的是v1.6。安装必须的依赖包 yum install git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fspr

2017-09-12 15:16:50 1680 1

原创 The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path

通过maven创建webapp项目之后,WEB-INF/index.jsp会有一个错误提示,The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path。其实只要在Build Path中加入Tomcat的library就可以解决这个错误了。

2017-09-09 15:26:37 1450

原创 一步一步学Spring-通过xml装配bean

创建maven工程 创建好的工程如图: 引入Spring依赖包 在pom.xml中加入spring-context包,这个包会自动导入所有其它的依赖包。 下面的例子通过spring把Hello类对象通过构造器注入到App类。 Hello类代码: App类代码: 要通过spring的xml配置文件实现bean的依赖注入,当然要先创建这个文件,文件内容如下: 这个文件

2017-09-09 13:39:39 874

原创 Eclipse里调出Tomcat server视图

通过菜单Window->Show View打开Show View窗口 设置之后,在eclipse右下方区域就出现了Servers视图 新建一个Tomcat Server 点击Finish之后就建好了一个Server 这个时候还是Stopped的状态。修改Tomcat Server配置为了部署webapp在这个Server上运行,还需要做一点修改 右键单击上面的Server实例,在右

2017-09-09 11:06:33 13701 1

原创 maven创建webapp出错

刚刚在eclipse里面通过maven创建webapp,结果总是报错,以前都是可以的,不知道什么时候系统出了问题。google了一下,原来是maven的插件损坏了,删除进入maven本地仓库org\apache\maven\archetypes\maven-archetype-webapp\1.0目录,然后重启eclipse就恢复正常了。

2017-09-09 10:26:37 1038

原创 查看已安装Tomcat的版本号

Tomcat提供了一个查询自身版本号的方法,要查询Tomcat的版本号,必须知道Tomcat所在的准确目录。在Mac系统下,Tomcat一般安装在/Library/Tomcat/bin。打开终端(Terminal),输入命令:sh /Library/Tomcat/bin/catalina.sh version返回信息如下: Using CATALINA_BASE: /Library/Tomca

2017-09-09 10:10:47 10659

原创 select编程涉及到的函数和数据结构记录

1.1 select函数原型 int select( int nfds, fd_set *readset, fd_set *writeset, fd_set* exceptset, struct timeval *timeout );头文件select位于:#include

2017-09-04 15:13:33 557

转载 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少

前言曾几何时我们还在寻求网络编程中C10K问题(有关C10K问题请见文章《The C10K problem(英文在线阅读、英文PDF版下载、中文译文)》)的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并

2017-09-04 12:57:25 1041

原创 RTSP协议阅读(rfc2326)

RTSP协议和HTTP比较像,不同的是,HTTP只能承载在TCP之上,并且只能是客户端发消息给服务器,RTSP的话,没有规定传输层,可以是TCP,也可以是UDP,如果是TCP,服务器也可以主动发送request消息给客户端。RTSP版本号RTSP采用主从(.)数字形式来表示版本,ABNF语法是RTSP-Version = “RTSP” “/” 1*DIGIT “.” 1*DIG

2017-09-01 11:55:56 866

原创 文件IO操作

在对一个文件或者设备进行读写之前,都需要先打开,以获得该文件或者设备的操作指针,也就是文件描述符。有了文件描述符,后续就可以进行读取,修改操作了。 头文件 <fcntl.h> 函数声明 int open(const char *pathname, int flags, mode_t mode); 返回值 成功:返回文件描述符;失败:-1 头文件 <unistd.h>

2017-09-01 00:00:28 485

原创 live555源码阅读(一)

功能说明UsageEnvironment是个抽象接口类,不能直接实例化使用,其功能是通过子类逐步实现的,整个类层次结构如下: UsageEnvironment主要定义了两大类功能接口,一个是缓存错误信息字符串,一个是重载<<实现向stderr打印日志信息。 BasicUsageEnvironment0在UsageEnvironment的基础上实现了缓存错误信息字符串的功能。 BasicUs

2017-08-31 17:48:02 875

原创 XCode调试填写命令行参数

菜单Product->Scheme->Edit Scheme,弹出一个对话框如下,在Run->Arguments按顺序填写需要的命令行参数。

2017-08-30 21:06:24 6596

原创 子节对齐

什么是子节对齐考虑下面这样一个结构体定义: struct _student{    char sex;    int length;    char name[10];   };   struct _student student; 由于在x86下,GCC默认按4字节对齐,它会在sex后面填充3个子节,在name后面填充2个子节,以使得length在内存的4子节整数倍边界上,同时也使得

2017-08-28 20:18:13 396

原创 大小端和网络子节序

什么是大小端模式?下面以unsigned int value = 0x12345678为例,分别看看在两种字节序下其存储情况,我们可以用unsigned char buf[4]来表示value Big-Endian: 低地址存放高位,如下: 高地址   —————   buf[3] (0x78) – 低位   buf[2] (0x56)   buf[1] (0x34)   buf[0]

2017-08-28 17:17:10 547

原创 FreeSWITCH通话测试

FreeSWITCH使用make install安装完成后,默认就配置了1000~1019共20个账户,不用做任何其它配置,就可以开始我们的基本通话测试了,非常人性化。 测试的话,我们需要找一个客户端,我测试了几款开源的客户端:X-Lite,Zoiper,Linphone,X-Lite和Zoiper免费版本不支持视频,最好用的是Linphone,但是Linphone在MAC机器上一直无法regis

2017-08-27 22:57:13 5565 1

原创 FreeSWITCH加载非默认模块

FreeSWITCH的架构设计的非常好,可以通过动态加载模块来扩充功能。 通过源码安装的时候,FreeSWITCH缺失只安装了一些基本模块,还有很多模块并没有安装,可以通过如下的方法进行安装。编辑freeswitch/modules.conf文件,找到要安装的模块,去掉前面的注释符号#。在命令行执行make mod_xxx-install命令,这样就编译相应模块,并把编译后的动态库安装的/us

2017-08-27 17:28:43 4047

原创 live555服务器测试

系统信息MAC OSX 10.11.6。 从地址http://www.live555.com/liveMedia/public/下载源代码,在命令行进入到源码根目录,执行make install编译安装,安装目录在/usr/local/bin。 和源码下载目录一起的还有一些用来测试的音视频文件,下载test.264到刚才的安装目录下,然后执行live555MediaServer就启动了服务器。s

2017-08-26 20:24:33 1343

原创 免费的STUN服务器

当SIP终端在使用私有IP地址时,可能需要配置STUN服务器。 公开的免费STUN服务器有:stunserver.orgstun.xten.comstun.fwdnet.netstun.wirlab.netstun.iptel.orgstun.ekiga.net

2017-08-23 01:00:18 14496

原创 freeswitch查看注册用户

freeswitch可以通过fs_cli命令sofia status profile internal reg查看所有已经在其上注册的用户。reeswitch@StelladeMacBook-Air.local> sofia status profile internal regRegistrations:==============================================

2017-08-23 00:31:43 11970

原创 如何查询自己的公网IP

一般我们都是在某个局域网内部,由于NAT的存在,其IP地址是经过转换的,那么如何得知转换后的公网IP呢?有两个在线工具可以帮你快速知道自己的外网地址,一个是国内的http://ip138.com,一个是国外的http://ifconfig.me。可以通过浏览器访问上面的站点查看,也可以通过curl工具查看:StelladeMacBook-Air:~ stellazhou$ curl ifconfig

2017-08-23 00:16:02 107863 10

原创 用markdown写表格

第一行写表格的标题行,写法是|列标题|列标题| 第二行固定写|-|-|就可以了,前两行这样写,就被识别成是一个markdown表格 后面就是表格的行,也是用|分割,和第一行数目相同。 要注意的是,表格的最后一行之后要空一行,才能写其它内容。 下面是一个样例:|变量|说明||-|-||hostname|主机名||local_ip_v4|本地IPv4地址||local_mask_v4|本

2017-08-22 20:07:56 2228

原创 freeswitch配置之autoload_configs

autoload_configs目录下的各种配置文件会在系统启动时装入。一般来说都是模块级的配置文件,每个模块对应一个。文件名一般以“模块名.conf.xml”的方式命名。

2017-08-22 19:36:46 970

原创 freeswitch配置

freeswitch相较于其它开源SIP PBX系统有一个强大的配置系统。所有的配置是从conf/freeswitch.xml开始的,freeswitch.xml的作用是通过X-PRE-PROCESS预处理指令聚合所有其它的配置文件成一个超大的xml文件,freeswitch解析这个文件存储到内存中freeswitch.xml缺省的内容很简单。<X-PRE-PROCESS cmd="include"

2017-08-22 18:13:02 1162

原创 freeswitch配置之全局变量

freeswitch在vars.xml中通过X-PRE-PROCESS的set指令定义了一些全局变量,这些全局变量在freeswitch运行期间都是有效的。这些全局变量可以在其它地方引用,引用的方式是$${var}。在加载vars.xml之前,freeswitch就已经算出并设置了一些全局变量。 变量 说明 hostname 主机名 local_ip_v4 本地IPv4地址

2017-08-22 17:21:40 3877

原创 resiprocate编译测试

从github下载的源码,无论怎么配置boost的include路径,总是报编译错误。无奈,只能从tarball源码编译。tarball的源码从https://www.resiprocate.org/files/pub/reSIProcate/releases/下载,下载后解压到reciprocate目录下,然后执行下面命令就可以编译安装了。$ cd resiprocate$ ./configur

2017-08-21 17:47:01 1512

原创 Xcode打开已有的Qt工程

找到 .pro 所在路径, 敲击以下命令:qmake -spec macx-xcode project.pro open project.xcodeproj

2017-08-18 10:02:10 1633 1

转载 Test Kernel with grub

http://sig9.com/bochs-grubBochs+Grub, Testing KernelsLack of resources means finding newer, crooked ways of doing things,including emulating them. Being an os development enthusiast with just

2010-01-09 11:54:00 499

原创 decode和encode

首先要明确一点就是python中的字符串在内部都是以unicode存储的。decode的意思是把一个unicode字符串”解码“成期望的编码,decode完后,不仅编解码变了,而且该字符串会从unicode类型的字符串变成普通的str字符串;而encode相反,意思是把一个非unicode字符串“编码”成unicode,encode完后,不仅编解码变了,而且该字符串会从普通的str字符串变成uni

2009-12-11 00:39:00 1116

原创 gettext中的一点缺憾

在python中做国际化编程,自然是首选gettext了,不过在使用过程中遇到了不少问题。1、程序中待翻译字符串只能是english字串,chinese字串无法翻译,如下面一段程序:#!/usr/bin/env python# -*- coding: gb2312 -*-import gettexten = gettext.translation(test, localedir=

2009-09-03 02:02:00 1183

原创 list和tuple互转

在网上看到不少人问过这个问题,有人是这样做的: def make_list(t):    l = []    for e in t:        l.append(e)    return l 虽然没有错,确多写了不少代码,效率估计也不好。曾经我也遇到个这个问题,当时用了如下的方法: l = [e for e in t]这种方法术语据说叫做列表推导

2009-08-27 23:39:00 52431 1

原创 正则替换

今天遇到一个问题,要求把A1;A2;A3;B1;B2这样的一个字符串转换成A3;A4;A5;B1;B2 ,也就是把所有A字符串后面的数字向上偏移2,如果A字符串比较少并且后面的数字固定的话,用string.replace一个个替换当然是可以的,但是如果不是那样的话就麻烦大了。首先想到的当然是用正则了。看了re模块的sub函数,定义如下: sub(pattern, rep

2009-08-27 22:59:00 630

原创 import和__import__(8/27补充)

1、今天写一个程序,要在A模块中执行B模块,于是就在B模块中定义一个start函数,然后在A中import B,再执行B.start()。虽然事实证明这样是可行的,但是感觉太土了,python一定有更好的方法。google了一下,没有发现,不过有个贴子提到import module的时候,python其实就执行了一次该module,试了一下确实如此。 ---test.py代码---

2009-08-26 02:01:00 525

原创 boost编译

1、下载到boost官方网站www.boost.org下载最新的版本1.39.0,解压后路径e:/boost_1_39_0。 2、编译bjam在网上看了一篇文章,说官网上有对应版本的编译好的bjam,没有找到,所以不得不自己动手了。按照官网上的说明,其实做起来也不难(http://www.boost.org/doc/libs/1_39_0/doc/html/jam/building

2009-08-16 22:12:00 474

qt+ffmpeg播放音视频

使用qt和ffmpeg播放音视频,在别人的代码上做的修改,同步的不是很好,后续要改进。

2017-08-29

qt+ffmpeg播放音频

使用qt和ffmpeg播放音频。

2017-08-29

QT+ffmpeg播放视频

使用qt和ffmpeg播放视频。

2017-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除