上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 59 下一页
  2011年8月19日
摘要: 下载源代码八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。 使隶属于同一进程的各线程协调一致地工作称为线程的同步。MFC提供了多种同步对象,下面我们只介绍最常用的四种:临 阅读全文
posted @ 2011-08-19 11:16 一个人的天空@ 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 下载源代码七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息较复杂,我们可以定义一个结构,通过传递指 阅读全文
posted @ 2011-08-19 11:14 一个人的天空@ 阅读(1999) 评论(2) 推荐(0) 编辑
摘要: 下载源代码五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。 在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建 阅读全文
posted @ 2011-08-19 11:11 一个人的天空@ 阅读(7538) 评论(0) 推荐(1) 编辑
摘要: 下载源代码一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒} 编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有必要学习——多线程编程。二、多线程概述 进程和线程都是操 阅读全文
posted @ 2011-08-19 11:10 一个人的天空@ 阅读(728) 评论(0) 推荐(0) 编辑
  2011年8月8日
摘要: linux自动启动服务很简单,最简单的是把启动命令放到/etc/rc.d/rc.local文件里。这样就可以每次启动的时候自动启动服务了。例如对于 apache,编译好apache后会在安装目录的bin下生成apachectl文件,这是个启动脚本,我们只需要把这个命令加到rc.local里就可以了:echo /usr/local/apache/bin/apachectl >> /etc/rc.d/rc.local此外我们还可以使用chkconfig命令来把某项服务加到系统的各项运行级别中,步骤如下:1 创建启动脚本,对于apache、mysql、ssh这样的软件都是自己带的,我们只 阅读全文
posted @ 2011-08-08 15:33 一个人的天空@ 阅读(726) 评论(0) 推荐(0) 编辑
  2011年7月29日
摘要: 你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下。一、背景shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。但是有时候我们可能会需要实现和交互程序如ftp,telnet服务器等进行交互的功能,这时候我们需要用到shell的自动交互功能,本文收集了较常用的三种自动交互方法,并进行了比较和总结。二、需 阅读全文
posted @ 2011-07-29 16:50 一个人的天空@ 阅读(2284) 评论(0) 推荐(0) 编辑
摘要: 最近比较懒,博客一直都没更新,上次有人问ant 来编译android 工程,这里我就完整的整理了一下。如果你嫌弃IDE太慢或者觉得手动编译更Cool,不用IDE你可以学到更多。也是成为牛人的必修课啊!一,准备antant 官网可下载http://ant.apache.org/ant 环境配置:1。解压ant的包到本地目录。2。在环境变量中设置ANT_HOME,值为你的安装目录。3。把ANT_HOME/bin加到你系统环境的path。更多的介绍可以去google相信有很多二,详细步骤和说明,这里我们要知道一些Android命令。前提条件已配置好android sdk 环境,所以可以在任意目录下执 阅读全文
posted @ 2011-07-29 11:23 一个人的天空@ 阅读(5448) 评论(0) 推荐(1) 编辑
  2011年7月25日
摘要: Apk签名首先要有一个keystore的签名用的文件.keystore是由jdk自带的工具keytool生成的.具体生成方式参考一下:开始->运行->cmd->cd 到你安装的jdk的目录这里我是 C:\Program Files\Java\jdk1.6.0_10\bin然后输入:keytool -genkey -alias asaiAndroid.keystore -keyalg RSA -validity 20000 -keystore asaiAndroid.keystore-alias 后跟的是别名这里是 asaiAndroid.keystore-keyalg 是加密 阅读全文
posted @ 2011-07-25 16:56 一个人的天空@ 阅读(659) 评论(0) 推荐(0) 编辑
摘要: [前言]我们平时在开发android应用程序的过程中,一般都是利用eclipse集成开发环境,所以生成的apk有debug版本的签名权限,但是如果我们想要发布一款应用程序,并且希望在真机上运行的话,就需要进行签名。[工具]Java开发环境中的Keytool 和 Jarsigner,注意配置好环境路径,输入命令后有如下提示信息:C:\Documents and Settings\F1034740\桌面\博客文章>Keytoolkeytool 用法:-certreq [-v] [-protected] [-alias <別名>] [-sigalg <簽章演算法>] [ 阅读全文
posted @ 2011-07-25 16:49 一个人的天空@ 阅读(1648) 评论(0) 推荐(0) 编辑
摘要: ProGuard简介ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:http://proguard.sourceforge.net/。 Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。引用ProGuard官方的一段话来介绍就是: ProGuardis a free Java class file shrinker, optimizer, obfuscator, and preverif 阅读全文
posted @ 2011-07-25 14:09 一个人的天空@ 阅读(34586) 评论(1) 推荐(3) 编辑
摘要: 写这篇文章之前,有些犹豫,我会不会因此而打开了一个潘多拉魔盒呢?后来一想,Android类似的恶意软件早已问世,说明这世上已经有不少软件安全专家或者黑客们对此并不陌生了。而我,仅仅是作为一个传道者,将这个少数人知道的秘密告诉大家。于是我心安多了,我想我是在为Android软件安全行业早日成熟起来做贡献吧~!所谓APK指的是Android操作系统的应用程序安装文件。所谓Crack,简单地理解为“破解”。我具体指的是反编译APK文件进行汇编级的代码分析,并修改或插入自己的代码,重新签名打包为APK文件,以达到改变程序原有行为的目的。由以上的说明可知,我们要Crack一个APK文件,主要流程有三步: 阅读全文
posted @ 2011-07-25 14:08 一个人的天空@ 阅读(3071) 评论(0) 推荐(0) 编辑
摘要: 一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到现在即将问世的Android2.3.4。这些隐藏的API本身可能是不稳定的,所以,使用隐藏API,意味着程序更差的兼容性。如果要我给出建议的话,最好还是不要使用隐藏的API。不过有时为了实现Android应用某些特殊的功能或者效果,隐藏的API往往能发挥意想不到的作用。这些API具体能做些什么事,我就不在这里举例了。正好,如果你不知道隐藏API能做什么的话,那么还是尽早放弃使用它们吧……不想长篇大 阅读全文
posted @ 2011-07-25 14:07 一个人的天空@ 阅读(3550) 评论(0) 推荐(0) 编辑
摘要: Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过JavaReflectionAPIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制。你会嗤之以鼻地告诉我,Java反射机制没啥用。或许在J2EE、J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该机制会带给你许多惊喜。如果熟悉Android,那么你应该知道,Google不知出于什么原因,在系统源码中一 阅读全文
posted @ 2011-07-25 14:06 一个人的天空@ 阅读(2680) 评论(1) 推荐(2) 编辑
摘要: Java内存管理机制在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。Java语言对内存管理做了自己的优化,这就是垃圾回收机制。Java的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由GC(garbagecollection)负责自动回收不再使用的内存。上面是Java内存管理机制的基本情况。但是如果仅仅理解到这里,我们在实际的项目开发中仍然会遇到内存泄漏的问题。也许有人表示怀疑,既然Java的垃圾回收机制能够自动的回收内存 阅读全文
posted @ 2011-07-25 14:05 一个人的天空@ 阅读(48022) 评论(2) 推荐(12) 编辑
摘要: 又是很长时间没有更新博客了,客观原因是真的很忙,主观原因是自己太懒了。但是想想,知识、经验都是慢慢积累起来的,不总结、不反思、不记录,很多时候这些本应该积累的东西,就渐渐被遗忘了。写在博客里,一方面是为了与大家交流分享,另一方面是记录自己走过的路,反思自己做过的事,这样忙工作才不算是白忙。对自己、对大家都有好处。想是这样想,但真正忙起来的时候就什么都顾不了了。所以,趁着五一长假,终于有时间写一点东西,用于分享,用于记录。公司推行敏捷开发已有些时日了。IBM的顾问每周也还会飞来辅导一下,新的知识已经不多,主要还是跟进解决一些在日常执行中遇到的问题,纠正一些错误的理解。关于敏捷开发的概念和好处这些 阅读全文
posted @ 2011-07-25 14:02 一个人的天空@ 阅读(3651) 评论(0) 推荐(0) 编辑
上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 59 下一页