自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呆若木鸡的专栏

生命在于静止......

  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 openssl交叉编译给android使用

交叉编译openssl需要在linux下编译。先下载ndk安装,下载openssl源码。然后执行如下命令编译。#ndk安装根目录export ANDROID_NDK_ROOT=/mnt/e/ndk/android-ndk-r14b#openssl代码根目录OPENSSL_DIR=/mnt/e/openssl/openssl-3.0.1cd $OPENSSL_DIRrm -rf ./outputmkdir ./output#设置编译的目标cpu类型,编译其他cpu类型的修改这两个参

2022-01-13 22:49:05 2573

原创 阿里云主机linux上vsftp不能上传文件解决

在阿里云主机的linux系统上,使用vsftp来上传文件到服务器,参照网上的文章配置了,发现可以连接,但始终无法上传文件到服务器。后来查资料发现,原来ftp分为主动模式和被动模式,区分如下:(一)主动FTP          主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发

2017-12-24 08:57:10 3203

原创 鼠标移动到div上显示子div实现要点

本例实现这样一个效果,当鼠标移动到div元素上时,显示子div,并且鼠标移到子div上子div仍然保持显示。当鼠标移出父子div时子div才又重新隐藏起来。子div显示的时候,重叠在后面其他div上,不能挤压后面其他div。网上找了很多例子没法完全达到这个效果,自己经过各种试验折腾了一天才搞出来,记录下来备忘。本例使用CSS样式来控制,先贴代码:无标题文档

2017-03-19 14:51:37 5815 1

原创 android布局之layout_weight应用

layout_weight用于将所有子控件按weight的比例来分配布局,该属性只能用于TableLayout和LinearLayout。    比如我想把LinearLayout的几个子控件均分,那么可以设置每个子控件的layout_weight为1:LinearLayout android:orientation="vertical" android:layout_

2016-07-26 22:48:53 583

原创 centos7安装后windows启动菜单修复

安装完centos7后,启动菜单里面的windows启动项不见了。使用如下方法修复:1.使用root身份(必须)打开 /boot/grub2/grub.cfg2.找到 ### BEGIN /etc/grub.d/30_os-prober ###   在后面添加   menuentry "Windows" {     insmod ntfs     set root=

2016-04-12 21:05:19 1488

原创 mysql中文乱码解决

在windows上安装了wamp环境。通过phpadmin创建了的表,字符串编码设置成utf8,在phpadmin中添加和查询数据中文显示都正常,但在自己写的php网页查询显示中文乱码。网上搜索有的文章基本都说在my.ini的[client],[mysql] ,[mysqld]都添加default-character-set=utf8然后重启mysql服务就可以。但实际按这样做却发现mys

2016-03-20 17:43:40 397

原创 wxAuiNotebook的wxAUI_NB_TAB_EXTERNAL_MOVE样式用法

     wxAuiNotebook是wxWidgets库中用于实现同一窗口显示多页的页面tab,这是一种很流行的页面布局方式。在wxWidgets中,可以将从wxWindow继承的页面添加到notebook中,页面上可以再放多个控件。另外,因为控件本身也从wxWindow继承,所以也可以将单个的一个控件添加到notebook中。     notebook的分页可以支持页面拖放,即拖动页面

2009-11-14 20:09:00 4765 7

原创 观察者模式

    观察者模式的意图是:定义对象间的一种关系,当一个对象的状态发生变化时,所有依赖于它的对象都能得到通知。    你可以考虑这样一种应用,当一个论坛注册了个新用户后,论坛程序自动发一个站内欢迎消息和email。以后可能还有需求说同时也用手机发一条短信等等。在这里面,新用户是一个对象,发站内欢迎消息是一个对象,发email也是一个对象,还有发手机短信也可以是个对象。当新用户注册时(状态改变)

2008-01-13 11:35:00 847

原创 定界加锁模式

     在多线程的程序中,当一个资源被多个线程共同访问时,就需要对该资源的访问进行加锁。加锁的操作不同的操作系统实现方式可能不同,如windows操作系统用CRITICAL_SECTION,Linux系统用pthread_mutex_t。尽管如此,对锁的操作却大致相同,一般有以下几个操作:初始化锁、加锁、解锁、删除锁。初始化锁和删除锁就像分配和释放内存一样,第一次使用前和最后一次使用后分别做一次

2008-01-13 11:31:00 1297

原创 包装模式

相信用C++的朋友都喜欢封装自己的类,我也是一样。为什么要封装呢?因为封装能给我们未来的工作带来好处:1、通过封装可以把现有接口改变成自己比较习惯的接口来使用;2、通过封装可以把相关的功能集中到一起,便于使用;3、通过封装可以把我们所需要使用的功能子集从原有的众多功能中分离出来,便于记忆与使用;4、封装可以使得我们写兼容不同平台的代码变得更加简洁;5、通过封装可以避免以后重复写繁琐的相同的代码,提

2008-01-13 11:26:00 1240

原创 linux下c编程起步一:掌握gcc基本用法

      初学时最好从命令行入手,这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。      编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。      gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。

2008-01-13 11:03:00 6432 1

转载 Linux 创建文件系统及挂载文件系统流程详解

作者:北南南北来自: LinuxSir.Org摘要:本文对新增硬盘,切割硬盘,创建硬盘分区,为硬盘分区创建文件系统,以及加载文件系统的流程做总结性论述;主要是为初学者弄清楚这一操作过程;本文涉及fdisk、mkfs、mount ... ... 等工具;对/etc/fstab 进行了解说;还有磁盘扫描工具fsck 等介绍;阅读此文,必须具备知识点:《Linux 查看磁盘分区、文件系统、使用情况的

2008-01-13 10:52:00 1284

原创 fedora8下配置yum从本地光驱更新软件

yum命令用于软件包的在线更新,该命令默认从网站上查找新的软件包进行更新。有人希望能从本地的光盘或ISO文件更新软件,下面介绍一下网上找到的一种方法:1. 把光盘或ISO文件mount到文件系统。假设我们将光盘mount到/mnt/cdrom下,在命令行输入:mkdir /mnt/cdrommount /dev/cdrom /mnt/cdrom第1行命令创建一个/mnt/cdrom的文件夹

2008-01-13 10:51:00 898

原创 fedora8的启动方式配置文件

1. /etc/inittab该文件配置启动的参数,其中id:5:initdefault:配置系统启动的方式。5表示以图形方式启动,3以命令行方式启动,在命令行启动登陆后,可以执行startx进入图形方式。 

2008-01-13 10:50:00 762

转载 yum详解

本文来源:http://hi.baidu.com/y2k1/blog/item/c88bd307dc157bcd7a8947f4%2Ehtml三、用YUM升级软件打开终端,切换到root用户,yum的操作大都须有超级用户的权限。首 先,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间,但比起yum 给

2008-01-13 10:49:00 3036

转载 linux软件安装之rpm篇

RPM 大全RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。 下面我们就来逐一的讲解吧。一、 安装RPM包RPM 软件包通常具有类似foo-1.0-1.i386.rpm 的文件名。其中包括 软件包的名称(foo),版本号(1.0),发行号(1), 和 硬件平台(i386)。安装一个软件包只需简单的键入以下命令:$ rpm -ivh foo-1.

2008-01-13 10:48:00 948

原创 Linux网络编程简介

    如果你已经熟悉Windows上的网络编程,那么转入Linux的网络编程是非常容易的。因为它们都使用socket api进行编程。以下范例代码演示了一个最简单的服务端程序。该程序在一个循环内不断监听接受新的连接,然后为每个连接创建一个新的线程来进行IO处理。 IO处理部分也是用最简单的,收到什么数据就返回什么数据。这种模型(per-conn-per-thread)较为简单,但效率也较低,效率

2008-01-13 10:46:00 1188 1

转载 linux fork函数的精辟解说

作者:ccf  发表于:2006-04-01 17:11:01 #include ; #include ; main () {     pid_t pid;          pid=fork();          if (pid                  printf("error in fork!");          else if (pi

2008-01-13 10:30:00 20740 15

转载 Linux下Makefile的automake生成全攻略

    作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。  在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GN

2008-01-13 10:29:00 1306

原创 Linux下automake软件编译与发布快速入门

本例假设要产生一个simserver1的软件包,源文件只有1个,simserver1.cpp。使用了pthread库。1.运行autoscan扫描源码目录执行$autoscan执行后生成configure.scan。2.编辑configure.in文件步骤1执行后生成了configure.scan,本步骤需要复制一份该文件并命名为configure.in,然后编辑该文件。命令如

2008-01-13 10:27:00 1629

转载 Linux常用命令

名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 参数: -n 或 --number 由 1 开始对所有输出的行数编号 -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 -s 或 --s

2008-01-13 10:27:00 677

原创 Linux下automake软件编译与发布之多级目录结构的处理

    在入门篇我们简单介绍了使用automake自动产生makefile的几个关键步骤,所有文件都在同一个目录下。但在比较大的项目中,很少将所有文件放在一个目录下的。本文针对这种情况做个简单介绍。        多级目录结构的软件,一般是单个程序、库文件或模块放在各自的目录中。automake要求每个目录都有自己的Makefile.am文件来编译各自目录下的代码。在顶级的目录中,有一个Mak

2008-01-13 10:25:00 2815

原创 Linux多线程及临界区编程例解

先贴示范代码://--------------------tmutex.h开始------------------------------//实现linux的互斥量c++封装#ifndef TMUTEX_H#define TMUTEX_H#include pthread.h>//线程互斥量struct ThreadMutex...{        ThreadMutex()        

2008-01-13 10:23:00 11807 4

原创 Linux信号量编程实例

作者:呆若木鸡    本例示范Linux信号量的基本用法。该范例使用了两个线程分别对一个公用队列进行入队和出队操作,并用信号量进行控制,当队列空时出队操作可以被阻塞,当队列满时入队操作可以被阻塞。主要用到的信号量函数有:sem_init:初始化信号量sem_t,初始化的时候可以指定信号量的初始值,以及是否可以在多进程间共享。sem_wait:一直阻塞等待直到信号量>0。sem_timedw

2008-01-13 10:21:00 26718 6

原创 TCP连接个数限制及调整方法

        在TCP应用程序中,双方的通信是面向连接的,在同一台计算机上的多个连接需要能相互区别。TCP协议里面是用[源IP+源Port+目的IP+目的 Port]来区别两个不同连接的。也就是说,只要这四个参数中有一个以上不同,这两个连接就不同。在BBS上面看到很多人简单地认为可使用的端口个数是可建立的连接的限制因素,其实这个不对的。服务端和客户端软件的连接限制因素是不同的,下面我们分别来

2008-01-13 10:19:00 10482

原创 获取本机IP地址列表

#include list>#include string>using namespace std;#include Winsock2.h>#pragma comment(lib,"Ws2_32.lib")int GetIPList(liststring> &iplist)...{WSADATA wsa;if( WSAStartup( 0x22, &wsa ) != 0 )...{   ret

2008-01-13 10:18:00 719

原创 冒泡排序算法

     冒泡排序算法也是一种简单的排序算法。它的基本思想是把相邻的元素两两比较,把大的往下层,比较完一趟后,就可以把最大的元素层到最下面。之后再对其它元素进行重复操作,直至全部有序。例如有一个序列data[1..n],把data[1]和data[2]比较,如果data[1]比较大,就交换位置,再把data[2]和data[3]比较,如果data[2]比较大,就交换位置,这样比较到data[n-1

2008-01-13 10:16:00 563

原创 选择排序算法

    选择排序的算法是,对一个数据序列data[m..n],选择出一个最小的和data[m]交换。这样经过n-1次选择,数据序列将会变成有序。即第一次从data[1..n]选择一个最小的,放到data[1]这个位置,第二次从data[2..n]选择出一个最小的,放到data[2]这个位置,这样重复到第n-1次,从data[n-1..n]选择出一个最小的,放到data[n-1]这个位置。这样数据就

2008-01-13 10:15:00 513

原创 快速排序算法

     快速排序算法是对冒泡排序算法的改进。它的基本思想是,通过一趟排序将序列分成两部分,其中一部分记录均比另一部分记录的值小。再分别对这两部分序列继续快速排序,以达到整个序列的有序。     在具体实现方法上是对序列data[s..t],以data[s]作为枢纽重新排列,把比data[s]大的都放到它前面,比data[s]小的都放到它后面,经过重新排列后s的位置也产生了变化,假设变为i(s

2008-01-13 10:14:00 528

转载 更快、更强 64位编程的三十二条军规

   即使目前没有为纳米电子学、空气动力学、分子静力学、细胞生命周期建模等等编写高级应用程序,说不定以下这32条规则,对你向更高级处理器移植程序会有所帮助。  近期以来,似乎大家都在谈及64位计算,如采用AMD Athlon 64处理器的笔记本、采用IBM PowerPC 970芯片的Apple G5、又或Intel Itanium架构是否会被取消,对此,IT界和新闻界似乎都还没有尽兴。新一轮

2008-01-13 10:12:00 985

原创 VC中调用WebService的超时设置

     在VS2003非托管代码中调用WebService的方法比较简单,通过在项目中添加Web引用,输入WebService的网址,向导就会自动生成一个WebService类,该类包含所引用WebService的接口,并且从CSoapSocketClientT template typename TClient = CSoapSocketClientT >class CGPSSer

2008-01-13 10:05:00 2085

原创 使用DLL在多个进程间共享全局变量

     默认情况下,同一个程序启动多个进程,它们各自的变量值是不会相互影响的。第二个实例启动后,在修改全局变量的时候,系统会运用内存管理系统copy- on-write的特性来防止修改了第一个实例的数据,即系统会再分配一些内存,并将全局变量复制到这块内存中,每个实例使用自己的内存空间上的数据而互不影响。有时候我们想在多个进程间共享数据,windows提供了这种方法,就是创建自己的共享数据节,

2008-01-13 10:03:00 6414 1

原创 windows平台上向64位移植c/c++的变量类型大小变化

windows平台上编译64位程序变量类型大小变化:类型      用32位编译的大小    用64位编译的大小char              1                                 1short             2                                 2int                 4             

2008-01-13 10:00:00 1007

原创 gcc开发环境设置与测试

   安装完debian linux后,开始测试gcc开发环境。因为自己是个linux菜鸟,以下仅为自己的试验记录,高手看过就算了。  首先是测试gcc命令能否使用。从图形界面启动后,启动终端后输入gcc命令,提示command not found,猜想可能是gcc没安装或者环境没设好。用软件包管理看到已经安装了gcc4.1,接着在/usr/bin 目录下找到gcc-4.1,于是在终端内输入g

2007-05-22 17:38:00 2628

原创 debian图形界面花屏

在Virtual PC 上装完debian4.0后,启动进入图形界面花屏。于是从single user模式 启动系统,在命令行下运行dpkg-reconfigure xserver-xorg重新配置xorg.conf。配置完后重启进入图形界面成功。xorg.conf在/etc/X11目录下,如果熟悉的话,也可以手动编辑该文件修改配置。

2007-05-18 11:36:00 3901

原创 直接插入排序法

     直接插入排序法是一种简单的排序方法,它的基本思想就是把一个元素按升序或降序插入已经有序的一个序列里面,插入后保持序列的有序。假设有序列data[1..n],则将data[2]插入data[1..1]中,将data[3]插入data[1..2]中,将data[4]插入data[1..3]中。如此经过n-1次的插入,便可以使data[1..n]有序。一次直接插入排序的算法如下:t

2007-05-03 16:08:00 2739

原创 二分查找

 二分查找法是算法课必讲的查找算法之一,它的理论学计算机的都知道。离开学校多年,很多东西都忘光了,如今重新复习算法,顺便整理整理,也作为学习的笔记。//在数组data中查找值为key的元素,找到返回下标(zero based),否则返回-1templatetypename T>int binsrch(T *data, unsigned len, T key );templatetypena

2007-05-01 16:44:00 853

原创 IP层网络数据抓包实现方法

    做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包。抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议、IP、UDP、TCP、甚至各种应用层协议),敏感数据的捕捉等。下面我们就来看看在windows下如何实现数据包的捕获。    WINSOCK本身就提供了抓取流经网卡的所有数据包的函数,虽然只能在

2007-04-18 23:11:00 5873 2

原创 VC++字节对齐总结

  字节对齐指的是定义一个变量(包括常量,以下出现的变量不再特别说明)时,该变量在计算机内存区域的起始地址按照多少的倍数来存放。比如按4对齐,则起始地址必须是4的倍数。字节对齐影响着计算机指令系统层读写变量的速度。这一点在计算机体系结构和汇编语言的书里面一般都有较详细的说明,在此不多作描述。主要总结一下编程时字节对齐的设置。  C++提供了指令来设置对齐方式。一个是pack pragma,该指

2007-03-10 23:39:00 4430

原创 若使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual

    在多态的设计中,如果准备使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual,否则程序将无法按预期工作。几种写法产生的运行结果如下:1、基类和派生类析构任一个为virtual,另一个非virtual,程序行为未定义,一般会产生运行时错误。2、基类和派生类析构都为非virtual,只有基类的析构被调用,派生类的析构不会被调用,一般会引起内存泄露。3、基类和派

2007-02-15 12:44:00 2777 1

avidemux_2.4.1

avidemux_2.4.1,小巧免费的的视频分割编辑工具。可以预览播放视频并选择其中的一段分割。

2009-02-19

空空如也

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

TA关注的人

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