android jni 人头检测_2006年4月23日

编程入门 行业动态 更新时间:2024-10-10 11:25:19

posted @ 2007-06-06 22:39 murainwood 阅读(210) | 评论 (0) | 编辑 收藏

posted @ 2007-06-06 20:08 murainwood 阅读(163) | 评论 (0) | 编辑 收藏

posted @ 2007-06-05 01:25 murainwood 阅读(177) | 评论 (0) | 编辑 收藏

posted @ 2007-01-13 12:58 murainwood 阅读(190) | 评论 (0) | 编辑 收藏

posted @ 2006-10-21 06:19 murainwood 阅读(214) | 评论 (0) | 编辑 收藏

编程求解: 运动员打靶,10发子弹命中90环(每分成绩为0到10环不等)

求可能情况的总数

解法一:

#include

#include

int f(int n, int m)

{

int fn=0,i;

if(m<0||m>10*n) return 0;

if(n==1) return 1;

for(i=0;i<=10;i++)

fn+=f(n-1,m-i);

return fn;

}

int main()

{

int n,m;

printf("Please enter n and m:");

scanf("%d%d",&n,&m);

printf("\n%d发打中%d环有%d种可能.\n",n,m,f(n,m));

system("PAUSE");

return 0;

}

解法二:

#include"stdio.h"

int main(){

int num =1,i;

for(i=1;i<=10;i++)

num = num *(9+i)/i;

printf("%d",num);

}

个人观点:

计算机是一门和数学相关的学科,随着这门学科的发展,这种"本质"似乎被弱化了.解法1是很普通的方法,一般人都是这种思路.而解法二则是从数学角度考虑.简洁,快速.

上次去神码笔试,碰到一题

:给定一个数,如7899,把各位数值相加7+8+9+9=33,3+3=6,用这种方法计算机下去,求最后得到的个位数

我给出的解法:

#include "stdio.h"

int main(){

int i;

scanf("%d",&i);

printf("%d",i%9==0?9:i%9);

return 0

}//~end

posted @ 2006-10-15 18:15 murainwood 阅读(236) | 评论 (1) | 编辑 收藏

有6个英文字母,a,b,c ,d,e,f

从中任意取N个(N<=6)来排列.

已知 a 只能与 b 相连,

b不能和e,f相连

c不能和a相连

d不能和 a ,e相连

f 不能和 a,b相连

请打印出字母f或b 在末尾的组合顺序,用Java实现

我的解答:

import java.util.*;

/**

*

* @author ShenXiaoliang

*

*/

public class DemoGraph {

final static int VERTICE=6;

private ArrayList patheSet=new ArrayList();

private String[] ver={"a","b","c","d","e","f"};

private int[][] graph=new int[6][6];

private String path="";

private boolean[] isVisit=new boolean[VERTICE];

public DemoGraph() {

initiGraph();

for(int index=0;index

depthSearch(index);

show();

}

private void initiGraph(){

graph[0][1]=1;

graph[1][0]=1;

graph[1][2]=1;

graph[1][3]=1;

graph[2][1]=1;

graph[2][3]=1;

graph[2][4]=1;

graph[2][5]=1;

graph[3][1]=1;

graph[3][2]=1;

graph[3][5]=1;

graph[4][2]=1;

graph[4][5]=1;

graph[5][2]=1;

graph[5][3]=1;

graph[5][4]=1;

}

private void depthSearch(int start){

isVisit[start]=true;

path+=ver[start];

if(path.charAt(path.length()-1)=='f'||path.charAt(path.length()-1)=='b') patheSet.add(path);

for(int index=0;index

if(graph[start][index]==1&&isVisit[index]==false)

depthSearch(index);

else continue;

path=path.substring(0,path.length()-1);

isVisit[start]=false;

}

private void show(){

for(String pa:patheSet)

System.out.println(pa);

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

new DemoGraph();

}

}

posted @ 2006-10-12 00:43 murainwood 阅读(162) | 评论 (0) | 编辑 收藏

posted @ 2006-09-26 03:57 murainwood 阅读(279) | 评论 (0) | 编辑 收藏

自己想的一道题,算是30%原创吧

String a=new String("Hello");

a+="World";

问:a的内容最后是什么?

这两个语句,共生成了几个Java对象?

简单不?看样子非常简单吧,呵呵。

第一问:a(确切地说a引用的内容)是HelloWorld

第二问: 两个语句,一共生成了几个对象?

看第一个语句,说实话,用这种方式初始化String,实在是代码垃圾。这先不管啦。这个语句是老生长谈,一个或两个对象。

为何?第一次执行时创建了二个, 一个为字面量"Hello"(它本身是一个String对象), 一个为new String("Hello")(它是通过new创建的, 功能上和字面量"foo"完全一样, 但却是另一个对象).

第二次执行时, 只创建一个, 即new String("Hello"), 这是因为: "Hello"作为String字面量, 是存在于String Pool里面的, 第二次使用它时, 直接指向原有的String, 而不再创建新的String; 但new String("Hello")却每执行一次都创建一个新的,完全一样的String对象.

第二个语句呢?

3个对象。

首先是“World”,毋庸质疑。

那么然后呢?注意了,String是final类,不可改变。平时我们写Java会有个错觉,stringA+stringB就以为是前者尾巴接上后者脑袋。的确,在C/C++里就是如此。一点儿错都没有。

但是Java不是,Java设计者为了更多方面的考虑,他们把String设计成了final。

看一下JVM汇编指令吧

0: aload_0

1: invokespecial #1; //Method java/lang/Object."":()V

4: return

static void inti();

Code:

0: new #2; //class java/lang/String

3: dup

4: ldc #3; //String Hello

6: invokespecial #4; //Method java/lang/String."":(Ljava/lang/String;)V

9: astore_0   10: new #5; //class java/lang/StringBuilder

13: dup

14: invokespecial #6; //Method java/lang/StringBuilder."":()V   17: aload_0   18: invokevirtual #7; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;   21: ldc #3; //String Hello

23: invokevirtual #7; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;  26: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;

29: astore_0   30: return

}

仔细看一下我做的标记,JVM给我们生成了一个StringBuilder类。(我用的是JDK5,旧版本是StringBuffer类,单单这一点小改动就能让Java的速度提高很多)。让后用append方法载入Hello和World两个String的引用(明确地说转化成字符数组)。

当载入完成后,StringBuilder实例调用toString,生成一个新的String实例(暂时称为TempString)。

最后把引用a指向TempString

总结:两句语句总共生成了4个或5个Java类实例

PS:Java中没有指针实在是太不方便了。特别是在操作原始数据类型的时候。个人认为Java应该在这点上学学C#。指针不是洪水猛兽,对优秀程序员而言,指针是编程中的一种享受。

希望“海豚”(Java7)能出现指针吧---很不现实,还是等开源后的Java版本吧

posted @ 2006-08-14 03:18 murainwood 阅读(420) | 评论 (4) | 编辑 收藏

posted @ 2006-08-11 14:49 murainwood 阅读(129) | 评论 (0) | 编辑 收藏

Stack 和Heap的差别,上次华为研究生笔试题就考过。C语言的我很清楚:

Stack: automatic variables within functions

Heap: global variables (storage class external), and static variables

简而言之,最大的不同是:前者是函数变量的空间,后者是程序变量的空间

另外,Stack上分配内存是安全的。而Heap上分配内存则没那么爽了。调用malloc分配内存,是在Heap上开辟空间。一定要注意释放。否则老是memory leak

昨天有人问我JVM中的Stack和Heap的差别,当时心不在焉地照搬C语言敷衍了事。

中午起床,没事闲着看帖子。无意中想起这个问题,在Google搜索了一番。发现昨天的回答出了问题:

“ It is useful to know that these two different kinds of memory exist in Java. Stack memory is the program's memory, and heap memory resides outside of the program.”

Stack是程序内存,Heap内存存在于程序之外。这样子看起来和C语言中地Heap有些像诶(C语言中的Heap也是在mian()之外的)。再仔细看看

Stack memory stores primitive types and the addresses of objects. The object values are stored in heap memory.

类实例存在于Heap。类实例的的指针在Stack中存放。难怪JVM没有text segment ,在Stack就囊括了text segment。

这样做的好处,就是为了实现Java的垃圾回收机制。任何的类对象实例都在Heap中,在Stack中有它们的引用。当所以的线程都不在需要某个引用时,JVM的那个资源回收线程就会把该实例从Heap当中清楚掉。

文章告诉我,回收线程要做全局的检测来确定某个实例是否已经“无用”了。这样子,我们可以在代码上做些工作,来给回收线程加速。

Test t = new Test();

t.someAction();

// all done

t = null;

实例t不再有用时,就把他置为null,告诉JVM:你不用在Stack和Heap之间自己校验啦,我已经做好了标记,放心回收吧。

小结:Stack: Primitive data types(primitive types), the addresses of objects(=references).

Heap:  objects.

前者:基本类型和实例地址(引用),后者:类实例

posted @ 2006-07-31 16:28 murainwood 阅读(675) | 评论 (2) | 编辑 收藏

posted @ 2006-07-31 15:44 murainwood 阅读(135) | 评论 (0) | 编辑 收藏

posted @ 2006-07-31 06:12 murainwood 阅读(625) | 评论 (0) | 编辑 收藏

posted @ 2006-07-31 06:01 murainwood 阅读(203) | 评论 (0) | 编辑 收藏

项目第二阶段,管理客户端和管理服务器。架构C/S,技术RMI

今天上午做了一个简单的测试系统,用来测试前两天所编写的构件:写了一远程服务器,一个命令行客户端。OK,编译时也没出错。

然而运行起来,可怕的事情发生了:先前写的实体类无法传送给客户端。程序抛出了异常。仔细观察,发现是产生了对象无法序列化的IO异常。

RMI底层通过TCP协议进行通讯,ObjectInputStream和ObjectOutputStream来负责对象的输入和输出。实在是不明白,以前做RMI系统实验的时候,根本没遇到这种序列化异常:传String就传String,传Vector就传Vector。

猜想应该是我写的那些类无法序列化的缘故。参考了API文档,发现这个东西:MarshalledObject,可以对其构造方法的对象进行序列化(说穿了就是变成字节流)。

迅速改造了测试程序,OK,能穿对象了。但是.....序列化以后无法反序列化!天,类对象实例全部变成了组毫无意义的字节数组。

应该有其他的办法,SUN的Java文档实在不能和MSDN相比,太过于简单啦。

经过3个小时的资料查阅和测试,终于找到了种正确而且异常简单的方法:对先前的代码进行简单的重构:让他们统统实现java.io.Serializable接口。只改一行代码,全部解决!

^_^

posted @ 2006-07-24 14:44 murainwood 阅读(228) | 评论 (0) | 编辑 收藏

posted @ 2006-07-21 22:49 murainwood 阅读(82) | 评论 (0) | 编辑 收藏

http://www.apache

著名的Apache基金会官网,经常看看很有收获

http://www.eclipse

Eclipse基金会官网

http://saloon.javaranch

翻译过来叫Java会客厅比较好吧

http://www.matrix/

不用说了,国内比较好的Java论坛

http://www.csdn

国内最大的IT开发者站点....太浮躁,很喧嚣

http://www.mindview/

Bruce Eckel的网站,很值得一看

posted @ 2006-07-21 20:29 murainwood 阅读(116) | 评论 (0) | 编辑 收藏

设置类路径

结构

可通过对 JDK 工具使用 -classpath 选项(首选方法)或设置 CLASSPATH 环境变量来设置类路径。

C:> jdkTool -classpath path1;path2...

C:> set CLASSPATH=path1;path2...

每个 path 以文件名或目录结尾,该文件名或目录取决于将类路径设置成什么:

对于包含 .class 文件的 .zip 或 .jar 文件,路径以 .zip 或 .jar 文件名结尾。

对于未命名包中的 .class 文件,路径以包含 .class 文件的目录结尾。

对于已命名包中的 .class 文件,路径以包含“root”包(完整包名中的第一个包)的目录结尾。

用分号来分隔多个项目。使用 set 命令时,需要省略等号两边的空格(=)。其中 jdkTool 可以为 java、javac、javadoc,等等。有关详细列表,参见 JDK 开发工具。

说明

类路径告诉 Java 应用程序去哪里查找第三方和自定义类 -- 即不是 Java 扩展或 Java 平台一部分的类。在 JDK 1.2 中,JVM 和其他 JDK 工具通过依次搜索平台库、库扩展和类路径来查找类(有关搜索策略的详细信息,参见如何查找类)。

多数应用程序的类库都会充分利用扩展机制。因此,只有想要加载某个类库 (a) 未位于当前目录或其分枝包中 且 (b) 未位于扩展机制所指定的位置时,才需设置类路径。

如果用户是从旧版本 JDK 升级而来,则启动设置可能包括不再需要的 CLASSPATH 设置。这时应该删除任何非应用程序特定的设置。有些使用 Java 虚拟机的第三方应用程序可能修改 CLASSPATH 环境变量以包括它们使用的类库。这种设置可以保留。

可通过在调用 JVM 或其他 JDK 工具时使用 Java 工具的 -classpath 选项改变类路径(例如: java -classpath ...)。这是改变类路径的首选方法。还可通过使用 CLASSPATH 环境变量改变类路径。

注意:JDK 1.2 缺省类路径是当前目录。设置 CLASSPATH 变量或使用 -classpath 命令行开关将覆盖缺省值,因而如果想要在搜索路径中包括当前目录,则必须在新设置中包括“.”。

类可以存储在目录(文件夹)或归档文件(例如 classes.zip 或 classes.jar)中。有关归档文件的详细信息和类路径的工作原理,参见本文档最后的理解类路径和包名。

重要说明:JDK 旧版本在缺省类路径中还包括 /classes 项。该目录仅供 JDK 使用,且不用于应用程序类。应用程序类应该放置在 JDK 外部的目录。这样,安装新 JDK 时不必需要重新安装应用程序库。为了与旧版本的兼容性,使用 /classes 目录作为类库的应用程序在当前版本中仍能运行,但不能保证在以后的版本中它们还能运行。

使用 Java 工具的 -classpath 选项

Java 工具 java、jdb、javac 和 javah 具有 -classpath 选项,在工具运行时它将取代缺省类路径或由 CLASSPATH 环境变量所指定的类路径。这是改变类路径设置的推荐方法,因为这样每个应用程序可具有它所需的类路径而又不会干扰其他应用程序。

运行时工具 java 和 jdb 还具有 -cp 选项。该选项是 -classpath 的缩写。

对于非常特殊的情况,java 和 javac 都具有开关,使得可改变它们使用的路径以查找它们自己的类库。但是,绝大多数用户从来都不会用到这些开关。

使用 CLASSPATH 环境变量

如前一节中所述,一般用户将想要使用 -classpath 命令行选项。本节将介绍如何设置 CLASSPATH 环境变量或清除以前安装遗留下的设置。

设置 CLASSPATH

在 DOS 提示符下,可用 set 命令修改 CLASSPATH 环境变量。其格式为:

set CLASSPATH=path1;path2 ...

路径应该以指定驱动器的字母开头,例如 C:\...。这样,在偶然切换到不同驱动器时仍可找到类(例如,如果路径项以 \... 开头,并且当前位于驱动器 D: 上,则所需的类将在 D: 而不是 C: 驱动器上找)。

清除 CLASSPATH

如果 CLASSPATH 环境变量被设置成不正确的值,或启动文件或脚本程序设置了不正确路径,则可通过使用下列命令清除 CLASSPATH:

C:> set CLASSPATH=

该命令仅清除当前会话的 CLASSPATH。要确保在以后的会话中具有正确的 CLASSPATH 设置,则应该删除或修改启动设置。

更改启动设置

如果在系统启动时设置 CLASSPATH 变量,则查找它的位置取决于所使用的操作系统:

操作系统 方法

Windows 98 和

Windows 95 检查 autoexec.bat 文件中的 set 命令。

Windows NT 启动“控制面板”,选择“系统”,单击“环境”选项卡,并在“用户变量”部分中,检查 CLASSPATH 变量。

理解类路径和包名

Java 类被组织成包,而这些包被映射到文件系统中的目录。但是与文件系统不同的是,无论何时指定包名,都应指定完整包名 -- 永远不要仅指定它的一部分。例如,java.awt.Button 的包名总是应指定为 java.awt。

例如,假定想要 Java 运行环境在包 utility.myapp 中查找名为 Cool.class 的类。如果该目录的路径为 C:\java\MyClasses\utility\myapp,则应该将类路径设置成包含 C:\java\MyClasses。

要运行该应用程序,可使用下述 JVM 命令:

C:>  java -classpath C:\java\MyClasses utility.myapp.Cool

当该应用程序运行时,JVM 使用类路径设置查找在 utility.myapp 包中定义的任何其他类。

注意:应在命令中指定完整包名。例如,设置类路径包含 C:\java\MyClasses\utility 并使用命令 java myapp.Cool 是不可能的,因为这找不到该类。

(您可能想知道用什么定义类的包名。答案是:包名是类的一部分,并且不能修改,除非重新编译该类。)

注意:包规范机制一个有趣的结果是,属于相同包的多个文件实际上可存在于不同的目录中。对于每个类,包名都是相同的,但是每个文件的路径可从类路径中的不同目录开始。

文件夹和归档文件

当类存储在目录(文件夹)中时,例如 c:\java\MyClasses\utility\myapp,则类路径项指向包含包名第一个元素的目录(在这里为 C:\java\MyClasses,因为包名是 utility.myapp)。

但是当类存储在归档文件(.zip 或 .jar 文件)中时,类路径项则是该 .zip 或 .jar 文件的路径。例如,要使用位于 .jar 文件中的类库,则命令应该类似下述形式:

java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool

多重指定

要在目录 C:\java\MyClasses 和 C:\java\OtherClasses 中查找类文件,则可将类路径设置为:

java -classpath C:\java\MyClasses;C:\java\OtherClasses ...

注意两个路径之间用分号分隔。

指定次序

指定多个类路径项的次序是相当重要的。Java 解释器将按照目录在类路径变量中的次序在各个目录中查找类。在上例中,Java 解释器首先在目录 C:\java\MyClasses 中查找需要的类。只有当它在该目录中没有找到该类时,解释器才能到 C:\java\OtherClasses 目录中查找

posted @ 2006-07-20 20:29 murainwood 阅读(169) | 评论 (0) | 编辑 收藏

posted @ 2006-06-29 06:22 murainwood 阅读(4914) | 评论 (19) | 编辑 收藏

posted @ 2006-05-30 07:43 murainwood 阅读(287) | 评论 (1) | 编辑 收藏

据人说效果特别好,在Watson's 有的卖。

问题是,西安好像只有一家Watson's 专卖店,在南大街,怪远的,天热怕跑。记得去年易初莲花Watson's干姜汽水和苏打水大降价,我还买了老多,只是不知道那里有那牙膏没?

效果好的话,给表哥推荐,县城就有Watson's专卖店,门面要比西安的气派多了,导购MM也比南大街那家要漂亮。

唯一不爽的是价格有些贵,33块诶。

posted @ 2006-05-17 02:29 murainwood 阅读(829) | 评论 (0) | 编辑 收藏

posted @ 2006-05-06 17:30 murainwood 阅读(117) | 评论 (0) | 编辑 收藏

posted @ 2006-04-29 08:30 murainwood 阅读(121) | 评论 (0) | 编辑 收藏

posted @ 2006-04-23 23:48 murainwood 阅读(100) | 评论 (0) | 编辑 收藏

更多推荐

android jni 人头检测_2006年4月23日

本文发布于:2023-06-14 06:38:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1447642.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:人头   jni   android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!