当前位置:文档之家› 从零开始学Android

从零开始学Android

从零开始学Android
从零开始学Android

从零开始学安卓经典教程

本文是入门android的经典教材,文中既有图片直观的展示,又有文字的详细说明,并且给出了相应代码,对于初学者来说是极好的入门材料。

--谨以感谢原作者

什么是OPhone

OPhone是基于Linux、面向移动互联网的终端基础软件及系统解决方案。

OPhone SDK是专为OPhone平台设计的软件开发套件,它包括OPhone API,OPhone 模拟器,开发工具,示例代码和帮助文档(摘自OPhone官方网站:

https://www.doczj.com/doc/217479076.html,/)。简而言之,OPhone是一个移动终端的操作系统,移动终端包括手机、MID、NetBook等等。与其他领域的编程一样,OPhone编程并没有什么神秘之处,只需简单的学习就可以掌握大部分的概念。剩下的就是尽情发挥你的想象力了。

写作本文的目的

为了普及OPhone编程的基本知识,并通过复刻一个坦克大战游戏让读者了解2D 游戏编程的简单思路。文中的程序结构和实现方法并非最优,希望能起到一个抛砖引玉的作用,让更多的人加入到OPhone开发的行列中来。

谁适合阅读本文

虽然本文叫做“从零开始OPhone编程”,但并不能面对那些对编程一无所知的读者。实际上,本文要求读者了解java语言的基本知识,最好会使用eclipse。在文章的每个章节都标有难度,有能力的读者完全可以跳过相对容易的章节直接阅读自己感兴趣的内容。

本文的时效性

本文只适合当前版本的OPhone SDK(v1.0),本文的代码、图片、链接可能会因时间推移而失效。

第一章搭建开发环境

工欲善其技,必先利其器。我们要做的第一件事就是搭建Android开发环境。本文只介绍Windows下的安装方法,Linux下的安装方法请参考官方网站的介绍。

与PC编程略有不同的是,Android的程序需要在模拟器中运行。因此,我们需要一个集成开发环境,一个SDK和一个模拟器。因为Android编程使用java语言,所以我们还需要JDK,最好使用安装版本

(https://www.doczj.com/doc/217479076.html,/javase/downloads/index.jsp)选用JDK 6 Update 16 Windows版即可。

集成开发环境我们选用eclipse,可以使用eclipse3.3到3.5的任意版本(https://www.doczj.com/doc/217479076.html,/eclipse/downloads/)最好下载JDT集成版。然后我们可以从Android官方网站(https://www.doczj.com/doc/217479076.html,) 下载Android SDK(当然,如果你不能翻墙,可以到国内的网站下载),SDK全部安装完毕之后,还需要安装eclipse插件。插件是用来扩展eclipse功能的。开发Android 用的插件叫ADT(Android Developer Tools),它可以帮助我们完成创建项目,向模拟器部署并运行程序,调试程序等工作。关于ADT的功能,在后面使用中我们会逐渐熟悉。

安装ADT的方法如下(以eclipse3.4为例):

启动eclipse,选择菜单中的Help -> Software Updates

点击Add Site

点击Archive…

找到OPhone SDK安装目录下tools\ophone\ ADT-0.8.0.zip(因为我已经安装好了ADT,所以出现了重复URL的提示),点击OK即可开始安装

ADT安装完毕后还要简单配置一下,打开菜单中的Window -> Preferences

找到Android项,通过Browse按钮指定Android SDK的安装位置

至此为止,Android的安装环境就全部搭建完毕了。下一章节,我们会遇见经典的helloworld,下章见!

第二章创建第一个程序Hello Tank

现在开始,我们要真正写作Android程序了。虽然前面安装过程那么复杂,但是写起程序来却是非常简单。而且为了让大家有一个直观的认识,本文不会叙述大段的原理,而是在编码的过程中渗透对原理、概念的讲解。

让我们打开eclipse,选择菜单中的File -> New -> Project…

选择Android -> Android Project

下面需要我们输入项目的一些信息,因为我们要复刻经典游戏坦克大战,所以我们的程序就取名Tank

这样,一个Android项目就创建完成了,我们可以在eclipse的Package Explorer 看到我们的项目

托ADT的福,虽然我们只输入了几个名字,但这个项目实际上已经可以运行了。右击项目名,选择Run As -> Android Application

不出意外的话,你会看到一个手机模拟器被启动,而我们刚刚建立的程序会被运行起来

如果你发现模拟器启动了,而程序并没有被运行,可能需要手工启动程序。这里我们用到一个重要的工具DDMS(Davlik Debug Manager)。运行DDMS快捷方法是点击eclipse右上角的Open Perspective,如果在弹出的列表中没有DDMS,那么点击Others

选择DDMS

这样我们就打开了DDMS界面,这个工具我们以后会经常用到。

刚刚说到模拟器启动了而程序并没有被运行,很可能是在模拟器启动过程中DDMS失去了与模拟器的链接。解决方法很简单:

点击Devices标签下的工具栏,选择Reset adb

然后右击项目名称,Run As -> Android Application。

除了右击运行项目,还可以通过工具栏上的运行按钮启动程序

在运行按钮左边的是Debug按钮,这两个我们以后也会经常用到。

现在我们已经有了第一个可以运行的Android,虽然你可能对ADT生成的一堆文件感到一头雾水,也不知道程序界面上那一句“Hello World, Main”是从哪里来的,但是没关系,随着本文的深入你会逐渐熟悉Android项目的目录结构,程序设计的原则和方法,以及调试和部署的方法。现在读者可以自己熟悉一下模拟器的操作,让我们下章再见。

第三章显示文字和图片

从本章开始,读者就要编写代码了。按照作者的原则——少一些理论,多一些实践,代码中可能会有跳跃的地方。但是请大家不要着急,随着学习的深入,你很快就会了解其中的奥秘。不过在开始之前,我们还是要先来理顺一下思路,看看完成一个坦克大战游戏需要哪些工作:首先,我们需要一个基本的程序,这个程序能够在 Android上运行;这个程序要能够显示图形包括地图,主角和NPC 等等;程序能够接受用户的输入,控制主角移动;程序要能够控制NPC和子弹的移动;程序还能对各种事件做出判断,比如击中敌人,获得物品,胜利或者失败。

现在我们就从基本程序开始,一步一步实现它。

首先,让我们看一下刚刚生成的文件目录

在源文件目录下,只有Main.java和R.java两个文件,刚刚被我们命名成Main.java的文件就是程序的入口文件。而R.java是由插件来维护的资源定义文件,我们先不管它。

Main.java内容如下:

package org.yexing.android.games.tank;

import android.app.Activity;

import android.os.Bundle;

public class Main extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/217479076.html,yout.main);

}

}

很幸运,Main.java的代码非常之少,而且还有一段注释,以致我们很容易知道函数onCreate的作用,需要解释的只是 setContentView()。先不要管注释中提到的Activity和setContentView的参数https://www.doczj.com/doc/217479076.html,yout.main,我们使用setContentView的另一种形式:setContentView(View view)。setContentView 的作用是设定当前使用的视图即View(依此理解,可以有很多个View,需要用哪个就可以把他作为 setContentView的参数显示出来)。View是一个非常重要的组件,它可以用来显示文字,图片,也可以接收客户的操作,比如触摸屏,键

盘等等,而我们的游戏中正是需要绘图和交互,看来View很符合我们的需要(但是请注意,使用View并不是我们的最终方案,原因会在后面说明。此处介绍 View 是为了讲解基础的图形和用户控制)。

下面我们就要订制一个属于自己的View,可以通过继承自系统提供的View,并重载相关的函数来实现。创建类的方法如下:

右击包名 New -> Class

我们将这个View类命名为GameView,并且由android.view.View继承

点击Finish,一个View类就创建好了。这里是第一次创建类,以后就不会有图片演示了,请大家记住的这个方法。GameView创建好了,但是代码还有一些错误,这里介绍一下eclipse的使用技巧,将鼠标悬停在有错误的位置,或者将光标停在有错误的行,然后按Ctrl+1键,就会出现修改建议,大部分时候,使用修改建议都可以改正我们的错误,如图

可以看出来,刚刚的错误是因为没有创建构造函数,选择修改建议的第二项,增加一个构造函数

public GameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

我们的View就创建好了。

回到Main.java,刚刚说了,只要将View作为setContentView的参数,这个View 就可以被显示出来:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new GameView(this));

}

现在让我们运行模拟器,看看程序变成什么样子了(启动模拟器的方法见第二章)。

不要意外,屏幕上就是一片空白,因为我们创建了一个View,但是没有让它显

示任何内容。下面我们就会在View上显示一段文字和一张图片。

让View显示内容也很简单,只需要重载View的onDraw函数,把相应的语句写入onDraw中即可。打开GameView.java,点击菜单 Source ->

Override/Implement Method…

选中onDraw点击OK

下面这段代码就会被加入到程序当中,所有与显示有关的代码都会在这里面完成@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

}

这里我们遇到了又一个非常重要的类Canvas,Canvas一般翻译成画布,所有的绘图操作都是通过Canvas中的函数来完成的,比如显示文字的函数

Canvas.drawText(),显示位图的函数Canvas.drawBitmap(),以及各种绘制图形的函数如 Canvas.drawRect(),Canvas.drawArc()等等。下面让我们显示一段文字在屏幕上:

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

canvas.drawText("坦克大战", 50, 50, new Paint());

}

坦克大战四个字已经出现在了屏幕上。让我们来详细看一下这条语句:

canvas.drawText("坦克大战", 50, 50, new Paint());

第一个参数是要显示的文字,第二、第三个参数是文字在屏幕上的坐标,说到坐标得多讲两句。在2D编程中,屏幕坐标的原点是屏幕的左上角,横向向右增大,纵向向下增大,如上图所示。最后一个参数是Paint,通常翻译成画笔,它决定了文字或图形的颜色,字体,线条粗细等等,后面用到相应属性的时候会详细介绍。那么这条语句就是在屏幕上(50,50)的位置用缺省的画笔写出“坦克大战”四个字。另外如果eclipse提示代码错误,不要忘了用Ctrl+1。

有了文字,下面就是图像了。显示图像比显示文字略微复杂一些,首先我们要准备一张位图,图片必须是png格式的,文件名只能是小写字母,数字和下划线。

battlecity.png

然后将这张图片copy到工程的res/drawable目录下。可以直接在eclipse的目录树中粘贴。

显示位图的函数是Canvas.drawBitmap(),drawBitmap有很多种形态,我们先看其中最简单的一种

canvas.drawBitmap(bitmap, left, top, paint)

乍一看似乎和drawText差不多,4个参数有三个都相同,但这第一个参数bitmap 要比文本复杂得多。首先,他是一个Bitmap类实例,因为我们现在还不需要这个类的其他功能,所以不过多介绍Bitmap,只考虑它是怎么来的。得到Bitmap 实例的方法也有很多种,这里只介绍其中的一种

BitmapFactory.decodeResource(res, id);

此方法可以返回一个bitmap实例,但是这个函数还需要两个参数res和id。res是Resources实例,而id是一个整数,下面让我们分别了解这两个参数。res的地位跟bitmap差不多,只需要作为参数被使用,因此,只要得到实例就可以了,获得Resources实例的方法如下:

res = context.getResources();

天哪,事情越来越复杂了,因为这段代码里面有多了一个陌生面孔context。context是Context实例,Context通常翻译做上下文,这个名称似乎有点晦涩,他究竟是什么呢?让我们回头看看写好的程序

public GameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

这时候我们有一个context实例,继续朔源而上,在Main.java中

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new GameView(this));

}

原来,context指向Main类。好了,我们终于找到res的源头了。还有另外一个分支第二个参数id。

BitmapFactory.decodeResource(res, id);

id是一个整形,它到底是谁的id呢?我们还是得往前面找,还记得我们第一次见到函数setContentView时什么样子么

setContentView(https://www.doczj.com/doc/217479076.html,yout.main);

对,他的参数是https://www.doczj.com/doc/217479076.html,yout.main,后来被我们替换成了GameView实例。

https://www.doczj.com/doc/217479076.html,yout.main就是一个整数。它被定义在文件R.java中,我们前面讲过R.java 是由插件维护的资源定义文件。说到这里大家应该猜到了吧。让我们打开R.java 文件

public final class R {

public static final class attr {

}

public static final class drawable {

public static final int battlecity=0x7f020000;

public static final int icon=0x7f020001;

}

public static final class layout {

public static final int main=0x7f030000;

}

public static final class string {

public static final int app_name=0x7f040001;

public static final int hello=0x7f040000;

}

}

果然,位图文件battlecity.png在这里面也被分配了一个id:

R.drawable.battlecity,没错,就是它了,这就是我们要找的id。至此为止,我们终于可以使用drawBitmap了。

对于一次创建,多次使用的资源,我们把他放到构造函数里面。增加了图形显示的GameView如下:

public class GameView extends View {

Bitmap bmp;

public GameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

Resources res = context.getResources();

bmp = BitmapFactory.decodeResource(res, R.drawable.battlecity);

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

canvas.drawText("坦克大战", 0, 50, new Paint());

canvas.drawBitmap(bmp, 0, 100, new Paint());

}

}

运行效果

第四章响应用户事件

上一章介绍了如何显示文字和图片,一般来说,下一步就该讲到动画了。可是我们前面说了,使用View不是最终的选择,要实现动画还需要很多复杂的代码。相对来说,学习如何响应用户事件要简单些。

本章前半部分讲解按键事件的响应,但是这也不是最终方案,因为实际上的手机可能没有硬键盘,需要使用虚拟键盘,所以后半部分我们会讲解虚拟键盘的设计和实现。

同绘图一样,View也是通过回调函数来响应用户事件的。键盘事件的回调函数有多个,以对应不同的事件,我们暂时只用到onKeyDown,对应按键被按下的事件,其他函数以后用到再介绍。让我们重载onKeyDown(重载一个函数的方法前面章节有介绍):

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

return super.onKeyDown(keyCode, event);

}

onKeyDown有两个参数:keyCode和event,通过keyCode能判断是哪个键被按下,event比较复杂,包含了这次按键更多的信息,我们暂时先不考虑它。

现在我们要通过按键控制主角向四个方向移动。所谓移动,就是将主角的图像在不同的位置显示出来,也就是改变函数drawBitmap中的第二、第三个参数。比如用户按下右方向键,我们就把横坐标增加,这样下次显示出来的时候,主角就会往右一点。为了节约时间,我们就把刚刚显示的图片BattleCity作为主角好

了。首先定义两个全局变量x和y,然后在onKeyDown中改变x、y的值,然后重绘View。因为代码没有什么难度,所以不做讲解了。

public class GameView extends View {

int x=0, y=0;

……

@Override

protected void onDraw(Canvas canvas) {

……

canvas.drawBitmap(bmp, x, y, new Paint());

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

switch(keyCode) {

case KeyEvent.KEYCODE_DPAD_UP:

y -= 10;

break;

case KeyEvent.KEYCODE_DPAD_DOWN:

y += 10;

break;

case KeyEvent.KEYCODE_DPAD_LEFT:

x -= 10;

break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

x += 10;

break;

}

postInvalidate(); //通知系统重绘View

return super.onKeyDown(keyCode, event);

}

}

完成后我们肯定很想测试一下,但是此时你会发现,按键根本没有任何反应。这就是我们要特殊指出的地方。View被显示时,缺省情况下没有获得焦点,就是说,按键动作没有发送给View,所以需要在构造函数中增加一句

public GameView(Context context) {

……

setFocusable(true);

}

再运行程序,看看图片是否按照我们的指令运动起来了。

前面说过,很多手机没有硬键盘,所以我们需要一个软键盘的解决方案。软键盘就是在屏幕上显示一个键盘,然后响应用户的触摸屏操作,模拟成键盘操作。对于坦克大战,我们只需要在屏幕上显示一个模拟的游戏手柄(显示图片的方法大家没有忘记吧,显示位置可以根据模拟器自行调整):

在用户触摸模拟手柄上的方向键和开火键时进行相应的操作。我们拿方向键做演示,步骤如下:首先确定四个方向键在屏幕上的区域(上图的红色方框),然后在触摸屏事件的响应函数中判断事件是否发生在方向键区域中,最后如果事件发生在区域中进行相应的操作。

下面,我们引入一个非常有用的类Rect(RectF与Rect基本相同,不过以float 作为坐标参数),rect是rectangle的简写,顾名思义,这个类代表了一个矩形。Rect通过矩形4个边来定义这个矩形的范围。他们分别是left,right,top,bottom,如图所示:

转化为屏幕坐标,top是矩形坐上角的纵坐标,left是矩形坐上角的横坐标,right是矩形右下角的横坐标,buttom是右下角的纵坐标。有了 Rect我们就可以方便的表示虚拟手柄各个键的位置。同时Rect还提供了一些很有用的函数,其中Rect.contains(x, y)能够判断点(x, y)是否在矩形框中,正好是我们需要的。

现在我们就可以开始编码了,首先为虚拟键盘的方向键创建Rect(可以用绘图工具测量坐标):

Rect rKeyUp = new Rect(56,290,86,320);

Rect rKeyDown = new Rect(56, 350, 86, 380);

Rect rKeyLeft = new Rect(26, 320, 56, 350);

Rect rKeyRight = new Rect(86, 320, 116, 350);

然后重载触摸屏响应函数:

@Override

public boolean onTouchEvent(MotionEvent arg0) {

// TODO Auto-generated method stub

return super.onTouchEvent(arg0);

}

下面我们要做的是,首先判断触摸屏操作是不是按下,如果是,取得坐标(x,y),然后判断坐标所在的按键,做出相应的操作

@Override

public boolean onTouchEvent(MotionEvent arg0) {

// TODO Auto-generated method stub

if (arg0.getAction() == MotionEvent.ACTION_DOWN) {

int ax = (int) arg0.getX();

int ay = (int) arg0.getY();

if (rKeyUp.contains(ax, ay)) {

y -= 10;

} else if (rKeyDown.contains(ax, ay)) {

y += 10;

} else if (rKeyLeft.contains(ax, ay)) {

x -= 10;

} else if (rKeyRight.contains(ax, ay)) {

x += 10;

}

postInvalidate(); //不要忘记刷新屏幕

}

return super.onTouchEvent(arg0);

}

现在让我们运行一下,每次用鼠标点击模拟手柄的方向键,图片就会移动

第一章 从零开始学电脑

1.了解电脑的基本组成一般我们看到的电脑都是由:主机(主要部分)、输出设备(显示器)、输入设备(键盘和鼠标)三大件组成。而主机是电脑的主体,在主机箱中有:主板、CPU、内存、电源、显卡、声卡、网卡、硬盘、软驱、光驱等硬件。从基本结构上来讲,电脑可以分为五大部分:运算器、存储器、控制器、输入设备、输出设备。 2.了解电脑系统电脑系统分为硬件和软件两大部分,硬件相当于人的身体,而软件相当于人的灵魂。而硬件一般分为主机和外部设备,主机是一台电脑的核心部件,通常都是放在一个机箱里。而外部设备包括输入设备(如键盘、鼠标)和输出设备(如显示器、打印机)等。软件一般分为系统软件和应用软件。 3.组装一台电脑需要选购哪些基本部件(1)、机箱,一般电脑的主要零件都放在这里。(2)、显示器,用来看电脑的工作过程,要不然,你都不知道电脑究竟在做什么。(3)、键盘和鼠标,向电脑输入有用的命令,让它去为我们工作。(4)、主板,这是一块很重要的东西,虽然它长得有点“丑”,这里是决定你这台电脑性能的重要零件之一哦。(5)、内存,当电脑工作时,电脑会在这里存上存储数据,相当于人的记忆。(6)、CPU,也称中央处理器,是电脑运算和控制的核心。(7)、显卡,电脑通过这个玩意传送给显示器。(8)、声卡,电脑通过这个玩意传送声音给音箱的哦。(9)、硬盘,平常人们常说我的硬盘有多少G多少G,就是指这个硬盘的容量,而G数越多能装的东西便越多。(10)、软驱,就是插软盘的玩意,现在一般都用3.5英寸的,古老年代用5.25英寸的,现在我们去买人家都不卖了。(11)、光驱,听CD当然少不了这个,有时候你要安装某些软件都是在光盘上的,所以这个用处太大。(12)、电源,主要用于将220V的外接电源转换为各种直流电源,供电脑的各个部件使用 4. 如何评价一台电脑的好和坏当然,一台电脑的好坏,是要从多方面来衡量的,不能仅看其中某个或者几个性能指标。而一般评价一台电脑的好坏的性能指标有如下几种:(1)、CPU的类型和时钟频率这是电脑最主要的性能指标,它决定了一台电脑的最基本性能。以前我们常说的286、386、486、586、686等就是按CPU的型号来叫的。时钟频率是一台电脑按固定的节拍来工作的一种衡量方法吧,又称为主频,时钟频率越高,时钟周期就越短,它执行指令所需要的时间便越短,运算速度就越快。(2)、内存的容量内存的单位是MB,平常人们总说我的内存有多少多少MB 就是指这个,如32MB、64MB、128MB、256MB等,一台电脑,它的内存容量越大,则电脑所能处理的任务可以越复杂,速度也会越快。(3)、外部设备的配置情况高档电脑一般都有软好的显示器、键盘、鼠标、音箱等等。(4)、运行速度一台电脑的运行速度主要是由CPU和内存的速度所决定的。(5)、总线类型总线位数越多,机器性能越高。(6)、兼容性是否具有广泛的兼容性,包括能否运行所有电脑上开发的各种应用软件和接受电脑各类扩展卡电脑硬件基础知识(一) 1.了解电脑的基本组成一般我们看到的电脑都是由:主机(主要部分)、输出设备(显示器)、输入设备(键盘和鼠标)三大件组成。而主机是电脑的主体,在主机箱中有:主板、CPU、内存、电源、显卡、声卡、网卡、硬盘、软驱、光驱等硬件。从基本结构上来讲,电脑可以分为五大部分:运算器、存储器、控制器、输入设备、输出设备。2.了解电脑系统电脑系统分为硬件和软件两大部分,硬件相当于人的身体,而软件相当于人的灵魂。而硬件一般分为主机和外部设备,主机是一台电脑的核心部件,通常都是放在一个机箱里。而外部设备包括输入设备(如键盘、鼠标)和输出设备(如显示器、打印机)等。软件一般分为系统软件和应用软件。3.组装一台电脑需要选购哪些基本部件(1)、机箱,一般电脑的主要零件都放在这里。(2)、显示器,用来看电脑的工作过程,要不然,你都不知道电脑究竟在做什么。(3)、键盘和鼠标,向电脑输入有用的命令,让它去为我们工作。(4)、主板,这是一块很重要的东西,虽然它长得有点“丑”,这里是决定你这台电脑性能的重要零件之一哦。(5)、内存,当电脑工作时,电脑会在这里存上存储数据,相当于人的记忆。(6)、CPU,也称中央处理器,是电脑运算和控制的核心。(7)、显卡,电脑通过这个玩意传送给显示器。(8)、声卡,电脑通

Android初涉JNI,从零打造你的第一个demo

Android初涉JNI,从零打造你的第一个demo 最近打算重构项目中的部分代码,将部分耗时或者敏感的代码放到native中实现。说来惭愧,本人今年3月份才开始接触android开发,虽然一早就知道android中可以使用c/c++代码,但一直没有尝试。于是趁着这次机会研究一下android中的ndk开发,花了一个下午加一个上午,经历了种种悲剧后终于跑通了第一个demo。在整个过程中参考了无数文章,也走了很多弯路,特此写下本文章,希望帮助刚刚接触JNI的童鞋们更快的上手。 上面说的貌似是废话,现在开始进入正题。我的开发环境是windows+eclipse,因此在开始真正写代码前,还需要在windows上搭建相关环境才能编译.so文件。这里我推荐看下https://www.doczj.com/doc/217479076.html,/jdksummer/articles/2166057.html这篇配置文章写的很详细。 假设你现在已经搭建好了开发环境,那么开始吧!(听着音乐,开始我们的学习吧!!) 1.打开eclipse新建一个android的工程,就叫"MyFirstJNI"吧。建立后添加一个class 文件作为jni的接口,我是这样添加的

在该类中添加如下代码:都是一些很简单的函数^^ package om.example.myjni; 2 3 public class JNI { 4 public native void write(); 5 public native String sayHello(); 6 public native int plus(int a, int b); 7 } 这个就是native code在java中的接口了。添加完成后,build project。第一步的准备工作就此完成,很容易吧。 2.打开cmd并定位到刚刚新建的"MyFirstJNI"工程目录下的bin/classes目录,执行”javah -classpath . -jni com.example.myjni.JNI“,没有意外的话,bin/classes 目录下应该会产生一个com_example_myjni_JNI.h文件。这个就是native code需要实现的函数了。

项目管理实习报告范文

项目管理实习报告范文 篇一:项目管理实习报告 一、实习目的 总的来说本次实习的主要目的可以分为四块:(x)、了解了—般民用建筑施工前的准备工作和整个施工过程;(x)理论联系实际,巩固和深入理解了已学的理论知识(如测量、建筑材料、建筑学、建筑结构等),并为后续课程的学习积累感性知识和初步的认识;(x)、通过亲身参观施工实践,培养了分析问题和解决问题的独立工作能力,为将来参加工作打下基础;(x)、通过亲身观察施工现场的工作和劳动,向老师和工地工作人员学习请教,了解房屋施工的基本生产中的生产技术技能。 二、实习内容 x、看图识图:我们看图的图纸的项目为萧山恒逸金榈湾xx 号楼,架空一层为自行车库,地上六层,结构总高度xx.xx米,建筑表面积为xx.xx平方米,总体积为xx.xx米。其为结构等级二级,耐火等级二级的民用建筑物,设计使用期限xx年。图纸主要包括他的结构图,单体图,单体大详图和节能专篇及设计说明。 x、工地参观学习:本次工地实习主要参观的是宋都阳光国际位和校医院。宋都阳光国际位于城市东部杭州最具发展潜力的

区域及钱江新城二期东扩地带——江干区九堡南片区,地块北临杨公路,西接圆梦园别墅区,东为规划房产项目,南面钱塘江,沿江面视线非常好,具有极佳的一线江景资源。宋都阳光国际总体定位高端,整体设计融人文环境和自然生态于一体,通过完善的配套、便捷的交通、超前的生活理念打造一个集亲水性、园林化、生态式、标志性为一身的滨江高品质生活高尚住宅区。而校医院也是我们学校最近在建的一个新工程,由浙江省省直建筑设计院负责设计,由浙江建安实业集团股份有限公司负责施工,将在今年的xx月份左右完工。 本次参与实习的是我们大三工程管理专业的,专业知识和各方面的阅历并不丰富,所以这次的实习对我们来说更重要的是一个向别人学习的机会。在本次为期一个月的实习过程中,不仅学到许多书上没涉及到的知识,还了解了本专业以后所要工作的内容,以及我们应该注意的知识的积累和加深,这才是同学们最大的收获。实习是我们接触社会的试脚石,是我们在大学学习中不可或缺的一个环节。这十天的实习并没有浪费。我们从一个仅仅对课本有所了解到理论结合实际,对工程施工的流程有了大致的了解,对工作人员施工条件的艰苦有了深刻的体会。而去了工地也发现了许多不足。从开始,脑子中想把自己学的理论知识与现实结合起来可怎么也办不到。连基本的知识都搞混了。于是,在

基于Arduino的中小学生编程课程开发与项目设计

基于Arduino的中小学生编程课程开发与项目设计 摘要:Arduino是当前主流的电子设计平台,基于单片机系统的开源易学性受到编程爱好者的青睐。本文首先分析了本研究课题的背景及其现状,从中得出课题研究的目的与意义。再通过对中小学编程课程开发所需的技术支持,进一步介绍了Arduino平台、程序开发、ArduBlock图形化编程软件、传感器以及基础电子元件等。接着分析了中小学编程课程的主要内容及编程内容模块,最后基于Arduino开源设计平台正式进行编程课程的开发设计,由浅入深地为中小学的学生设计编程课程目前较为流行的电子互动平台。希望能借此帮助我国中小学学生提高编程理解能力,锻炼计算思维能力,最终实现中小学生独立性的思考和创造力的培养。 关键词:Arduino;计算思维;编程课程;开发设计 Abstract:Arduino Arduino is the current mainstream electronic design platform, and the open source and easy learning of SCM system is favored by programmers.Firstly, this paper analyzes the background and current situation of this research subject, and obtains the purpose and significance of the research.Through the technical support for programming curriculum development in primary and secondary schools, the Arduino platform, program development, ArduBlock graphical programming software, sensors and basic electronic components are further introduced.Then analyzes the main content and the programming of primary and secondary schools curriculum programming content module, based on the Arduino platform officially open source design programming curriculum development and design, design for primary and secondary school students in 1 programming course at present more popular electronic interactive platform.It is hoped that this will help our primary and middle school students improve their understanding of programming, exercise their thinking ability, and finally realize the independent thinking and creativity of primary and middle school students. Key words:Arduino; Computational Thinking; Programming Course; Development Design

建设工程项目管理规划

建设工程项目管理规划由于建设工程项目管理的特殊性、严谨性、科学性,决定了它不同于一般的项目管理工作。必须对项目进行进度控制、费用控制、质量控制、安全管理、合同管理、信息管理及组织和协调。进行一系列的规范化、程序化、科学化的管理。通过利用组织论的管理工具对管理工作提出更高的要求以达到效益最大化,最终使目标达到增值的目的。 一、进度控制 项目开工前需依据合同约定编制开、竣工时间进度网络计划图。在对各工序持续时间对计划进行分解制定月、旬进度计划和里程碑事件时间。当计算工期不能满足计划工期时,应对某项工作的时间进行压缩以达到最终合同约定竣工时间。 二、费用控制(成本控制)成本控制是关系到目标效益能否实现的关键工作。应从设计、材料采购、施工工艺、仓库管理等方面进行把控。做好材料领用单管理工作。 三、质量控制 为达到工程质量所采取的作业技术的活动成为质量控制,也就是说质量控制是为了监视质量的形成过程。质量环节所有阶段引起不合格或不满意效果的因素,以达到质量要起获取经济效益而采取的工程质量作业技术和活动。质量必须做到三个阶段:即事前控制、事中控制、事后控制。事前控制是关键。 四、安全管理 安全无小事,安全管理是工程项目管理工作的重中之重,必须建立安全生产责任制。以公司经理挂帅,项目经理是第一安全负责人的安全工作领导小组,严格执行安全技术十二项规定。安全目标“从零开始,向零奋斗” 。 五、具体实施办法 1.组建项目管理部 项目经理技术负责人采购员(材料 仓管员资料员电工 厨师门岗财务人员 职责: 项目经 ①贯彻执行国家行政部门有关法律、法规和标准,执行公司的各项管理制度。 ②经授权组建项目部,确定项目管理机构,选择招聘管理人员。对项目人员依据项目管理规定进行考核、评价、奖惩。 ③负责对施工项目过程全面管理,组织制定项目部各项管理制度。 ④严格履行和建设单位签订的合同和公司签订的“项目管理目标责任书” ,并进行阶段性目标控制,确保项目目标实现。 ⑤负责编制绩效管理规划和施工组织设计。做好新工艺、新材料、新技术的推广工作。 ⑥严格财务制度,做好成本分析和核算工作。 ⑦强化安全文明施工,及时发现和处理安全事故。 技术负责人 ①熟悉图纸、施工规范和相关技术标准,做好签证和工程量计量及工作。 ②在项目经理领导下主持编制施工组织设计和专项施工方案。对管理工作提出合理化建设性 方案。 ③负责施工测量、防线和对老兀作业的技术交底工作、参加图纸会审。 ④对施工进度、质量、安全进行把控,做好事事有计划,事事有结果,事事有检查。 ⑤完成领导交办的临时工作。 材料员(采购员) ①根据材料采购计划做好采购工作。

从零开始学习电脑硬件知识

从零开始学习电脑硬件知 识 Prepared on 21 November 2021

从零开始学习电脑硬件知识 在日常生活和工作中,有很多老师在使用电脑的时候,会因为没有了解过电脑的硬件知识,遇到很多解决不了的电脑问题,也经常感到普及电脑知识的必要性,有很多基本的知识可以有助于我们更好地学习电脑的应用。这里我们介绍一下电脑硬件的组成,先让想学习电脑硬件而又对硬件不熟悉的老师了解一下。电脑的构成大致分为四部分运算单元就是大脑,专门负责各种运算,由中央处理器CPU和显卡GPU,两部分组成。存储单元是负责记忆的小脑,主要包括硬盘和内存。然而他们都需要安装在主板上,主板就有点像我们的躯体一样,电源像提供血液的心脏一样通过主板向电脑提供电能。输入输出单元说的是输入指令的鼠标键盘和显示画面的显示器,这个单元就不需要多说了。简单的来说CPU 相当于人的大脑 , 发出各种指令来协调各个部分的工作,内存是个中转仓库 , 中转各种指令 , 数据等等。电脑关机后数据不保留 , 硬盘是最终载体 , 所有的数据 , 歌曲 , 电影等等都是保管在硬盘中 , 硬盘中的数据在关机后保留。机箱就是把这个整体固定在一个固定的环境中 , 通过电源来给各个部分来进行供电 , 通过显卡来输出显示信号 , 最后在显示在显示器上。键盘鼠标进行电脑的各项操作。音箱通过主板上的集成声卡来输出各种声音。网卡是组建局域网或者上网的时

候发送和接收数据。电脑的硬件说白了就是能摸的都是硬件,摸不到就属于软件。电脑硬件一般情况下是不容易损坏的 , 只有软件方面的问题比较多 , 只有把软件方面的故障全部排除后最后才考虑硬件方面的问题。CPU(中央处理器)是一块超大规模的集成电路,是一台电脑的运算核心和控制核心。它的功能主要是解释电脑指令以及处理电脑软件中的数据。CPU有着处理指令、执行操作、控制时间、处理数据四大作用。CPU是计算机的大脑,负责所有设备的运算。就是无论做什么都需要CPU发出指令才能执行。CPU分析运算的速度越快,电脑反应就越快。如果没有CPU,那么电脑就是一堆废物,无法进行工作。怎么分辨它的性能的好坏呢一般来说CPU的核心数越多,单核频率越高,性能就越好。CPU分析运算的速度越快,电脑反应也就越快。生产CPU的主要有两个厂家,Intel和ADM。外观都是正方形的薄薄的,可是里面却是集成了十多亿个晶体管。全称显示接口卡,又称显示适配器,是电脑最基本配置、最重要的配件之一。显卡作为电脑主机里的一个重要组成部分,是电脑进行数模信号转换的设备,承担输出显示图形的任务。对于从事专业图形设计的人来说显卡非常重要。在科学计算中,显卡被称为显示加速卡。显卡将电脑里的信号转换后输出到显示器上显示出来。还协助CPU 对图像进行处理,提高电脑整体的运行速度。显卡分独立

Arduino初学系列3:Arduino,按键,LED

3 Arduino,按键,LED 3.1 问题描述:如何采用Arduino控制器和按键同时控制LED的闪烁 在前面的2个例子中,都是简单地通过将程序烧录到Arduino控制板,然后由控制板来控制LED灯的闪烁,缺乏人情味。那能不能在Arduino控制的过程中,再加上与人的互动呢?答案是肯定的。在这个实验中,我们将增加一个新的材料按键按钮来和Arduino一起控制灯的闪烁。 3.2 所需材料 表3-1:所需材料 序号名称数量作用备注 1 Arduino软件1套提供IDE环境最新版本1.05 2 Arduino UNO开发板1块控制主板各种版本均可 3 USB线1条烧录程序随板子配送 4 杜邦线若干条连接组件 5 发光二极管(LED)1个 LED闪烁 6 电阻(10,200Ω)2个限流 7 多功能面包板1块连接 8 按键按钮1个开关 在进行实验之前,我们先介绍按键按钮的相关属性。 按键按钮 按键是一种经常使用的设备,通过按键可以输入指令和数据来控制电路的开与关,从而达到控制某些设备的运行状态。在本实验中,通过给按键输入高低电平来控制LED灯的闪烁。开关的种类繁多复杂,比如厨房用的单孔开关,卧房用的双控开关,楼道用的声控开关等等,均属于开关的范畴。在我们实验中,主要是用微型开关,但其种类也很多,如图3-1所示。 图3‐1 微型按键开关种类 在本实验中采用的微型开关大致为6*6*5mm的四脚开关。如图3-2所示。

图3-2 本实验用的按键 值得注意的是,1和2是一边的,3和4是一边的,中间有道痕分开。其原理如图3-3所示,当按键按下去时,1,2,3,4四个管脚接合在一起,2根导线连通,变成一根导线。电路导通,起到触发(关)作用。当松开按钮,1,2,3,4四个管脚断开,起到开的作用。 图3‐3 按键按钮原理图 3.3 实验原理图 当按键按钮按下,获取一个高电平,触发在Arduino控制下的LED闪烁。当然,我们也可以设置为按键按下是LED灯不亮,当松开按键时,LED灯闪烁,请看后面的代码分析。原理图如3-4所示,就是在实验1的基础上增加一个按键按钮。

项目管理实习报告

项目管理实习报告 关于《项目管理实习报告》,是我们特意为大家整理,希望对大家有所帮助。 项目管理实习的进行能帮助实习生们验证自己的职业抉择。项目管理实习报告是小编为大家带来的,希望对大家有所帮助。 篇一:项目管理实习报告 一、实习目的 总的来说本次实习的主要目的可以分为四块:(1)、了解了—般民用建筑施工前的准备工作和整个施工过程;(2) 理论联系实际,巩固和深入理解了已学的理论知识(如测量、建筑材料、建筑学、建筑结构等),并为后续课程的学习积累感性知识和初步的认识;(3)、通过亲身参观施工实践,培养了分析问题和解决问题的独立工作能力,为将来参加工作打下基础;(4)、通过亲身观察施工现场的工作和劳动,向老师和工地工作人员学习请教,了解房屋施工的基本生产中的生产技术技能。 二、实习内容 1、看图识图:我们看图的图纸的项目为萧山恒逸金榈湾24号楼,架空一层为自行车库,地上六层,结构总高度18.150米,建筑表面积为3815.97平方米,总体积为8586.29米。其为结构等级二级,耐火等级二级的民用建筑物,设计使用期限50年。图纸主要包括他的结构图,单体图,单体大详图和节能专篇及设计说明。 2、工地参观学习:本次工地实习主要参观的是宋都阳光国际位和校医院。宋都阳光国际位于城市东部杭州最具发展潜力的区域及钱江新城二期东扩地带——江干区九堡南片区,地块北临杨公路,西接圆梦园别墅区,东为规划房产项目,南面钱塘江,沿江面视线非常好,具有极佳的一线江景资源。宋都阳光国际总体定位高端,整体设计融人文环境和自然生态于一体,通过完善的配套、便捷的交通、超前的生活理念打造一个集亲水性、园林化、生态式、标志性为一身的滨江高品质生活高尚住宅区。而校医院也是我们学校最近在建的一个新工程,由浙江省省直建筑设计院负责设计,由浙江建安实业集团股份有限公司负责施工,将在今年的10月份左右完工。 本次参与实习的是我们大三工程管理专业的,专业知识和各方面的阅历并不丰富,所以

从零开始学电脑,一步一步到高手(硬件篇和软件篇)

硬件篇: 电脑硬件的组成: (菜鸟篇) CPU:目前常见的CPU主要是由2个厂家生产,一个是AMD公司的,高端产品是 速龙系列,低端是闪龙系列,另外就是INTER公司,高端产品是奔4系列,低端是赛扬系列.这两年开始流行的双核CPU在2个公司的高端产品中都有相应的型号 . CPU的知识比较多,具体的可以再网上查询,这里就不多说了.提醒一句,CPU是造不了假的,只有外盒,风扇等附加品存在假货. 主板: 目前的主板的主芯片都是国外制造的,芯片厂家主要有NVIDIA,ATI,INTER,AMD,VIA,SIS等等,各大主板厂家自己研发PCB板来进行主板的设计,分别来满足2个CPU厂家的CPU需要. 显卡:目前的显卡分为独立和集成显卡,生产独立的显卡芯片主要有2个厂家垄断,NVIDIA 和ATI 公司,生产集成显卡芯片有INTER,NVIDIA,ATI,SIS等等.各大显卡厂家利用显卡芯片提供的显卡GPU来进行显卡的设计和组装. 内存:目前所有内存的颗粒都是国外制造的,主要是韩国制造.国内不过是生产PCB板和封装 的过程.内存主要有3种,一种是SD内存(已淘汰),一种是DDR内存,一 种是DDR II代内存.未来还有DDR III代内存. 硬盘:常见的硬盘有三星,西数和希捷,基本上是希捷一枝独秀,容量在20GB以上的基本上都是7400转的,低于20GB的一般都是5400转的,转速越高,硬盘读些数据的速度越快.提醒一句:

硬盘的生产环境要求比较高,所有的硬盘都是国外生产. 机箱+电源:这两样东西没有什么技术含量,都是国内制造. 光驱:常见的有CD-ROM(类似VCD机),CD刻录机(兼容VCD,可以刻录VCD),DVD光驱(类似DVD 机,兼容VCD),康宝(相当于DVD光驱多了个刻录VCD光盘的功能),DVD刻录机(VCD,DVD播放和VCD,DVD刻录功能) 显示器:常见的有两种类型,CRT 和LCD ,一种是普通显示器, 一种是液晶显示器,普通显示器常见的发展过程和电视机相似,尺寸从14 15 17 19 21,屏幕从球面超平视觉纯平物理纯平.液晶显示器尺寸从14 15 17 19寸,目前流行的宽屏有17 19 20 21寸等等.LCD显示器的液晶面板都是国外制造的. 声卡:常见的有集成声卡和独立声卡,绝大多数的主板都集成的有集成声卡,可以满足普通 消费者的是使用.独立声卡一般应用于高端,这里就不多说了. 网卡:常见的有独立和集成网卡,绝大多数的主板都集成有集成网卡,可以满足普通消费者 的使用,独立网卡主要应用于特殊要求的用户.这里不多说了. 键盘+鼠标:相对没有什么技术含量,属于损耗品.跟个人喜好有关系 音箱+耳麦:相对没有什么技术含量,属于损耗品.跟个人喜好有关系. 软驱:基本上已经淘汰,这里就不讨论了. 综述:: 主板就是个平台,把CPU,内存,显卡,硬盘,光驱通过数据线或者直接安装来组成一个工作整体.CPU相当于人的大脑,发出各种指令来协调各个部分的工作,内存是个中转仓库,中转各种指令,数据等等.关机后数据不保留,硬盘是最终载体,所有的数据,程序,歌曲,电影等等都是保存在硬盘中,硬盘中的数据在关机后保留.机箱就是把这个整体固定在一个固定的环境中,通过电源来给各个部分来进行供电,通过显卡来输出显示信号,最后在显示在显示器上.键盘鼠标来进行电脑的各项操作.音箱通过主板上的集成声卡来输出各种声音.网卡是组建局域网或者上网的时候发送和接收数据.电脑的硬件说白了就是能摸的到的都是硬件,摸不到的就属于软件.电脑硬件一般情况下是不容易损坏的,只有软件方面的问题比较多,只有把软件方面的故障全部排除后最后才考虑硬件方面的问题.

北京海淀区2010届高三年级第一学期期中练习(物理)

海淀区高三年级2009—2010学年第一学期期中练习 物 理 2009.11 有一个选项是正确的,有的小题有多个选项是正确的。全部选对的得3分,选对但不全的得2分,有选错或不答的得0分。把你认为正确答案的代表字母填写在题后的括号内。 1.从地面以一定的速度竖直向上抛出一小球,小球从抛出点上升到最高点所用时间为t 1,从最高点下落到抛出点所用时间为t 2。若空气阻力的作用不能.. 忽略,则对于t 1与t 2大小的关系,下列判断中正确的是 ( ) A .t 1= t 2 B .t 1< t 2 C .t 1> t 2 D .无法断定t 1、 t 2哪个较大 2.如图1所示,直线AB 和CD 表示彼此平行且笔直的河岸。若河水不流动,小船船头垂直河岸由A 点匀速驶向对岸,小船的运动轨迹为直线P 。若河水以稳定的速度沿平行河岸方向流动,且整个河中水的流速处处相等, 现仍保持小船船头垂直河岸由A 点匀速驶向对岸,则小船实际运动的轨迹可能是图中的( ) A .直线P B .曲线Q C .直线R D .曲线 S 3.某同学站在电梯底板上,利用速度传感器和计算机研究一观光电梯升降过程中的情况,图2所示的v -t 图象是计算机显示的观光电梯在某一段时间内速度变化的情况(向上为正方向)。根据图象提供的信息,可以判断下列说法中正确的是( ) A .在0~5s 内,观光电梯在加速上升,该同学处于失重状态 B .在5s ~10s 内,该同学对电梯底板的压力等于他所受的重力 C .在10 s ~20s 内,观光电梯在加速下降,该同学处于失重状态 D .在20 s ~25s 内,观光电梯在加速下降,该同学处于失重状态 4.若物体在运动过程中所受到的合外力不为零,则在运动过程中 ( ) A .物体的动能可能不变 B .物体的动量可能不变 C .物体的加速度可能不变 D .物体运动的方向可能不变 5.图3(甲)所示为以O 点为平衡位置、在A 、B 两点间做简谐运动的弹簧振子,图3(乙)为这个弹簧振子的振动图象,由图可知下列说法中正确的是( ) A .在t =0.2s 时,弹簧振子可能运动到 B 位置 B .在t =0.1s 与t =0.3s 两个时刻,弹簧振子的速度相同 C .从t =0到t =0.2s 的时间内,弹簧振子的动能持续地增加 D .在t =0.2s 与t =0.6s 两个时刻,弹簧振子的加速度相同 图1 图3

arduino从零开始学

第1章进入Arduino的世界 欢迎来到Arduino的世界!Arduino是一个开源的开发平台,在全世界范围内成千上万的人正在用它开发制作一个又一个电子产品,这些电子产品包括从平时生活的小物件到时下流行的3D打印机,它降低了电子开发的门槛,即使是从零开始的入门者也能迅速上手,制作有趣的东西,这便是开源Arduino的魅力。通过本书的介绍,读者对Arduino会有一个更全面的认识。 本章知识点: Arduino的起源与发展 Arduino的特点 Arduino开发板简介 Arduino的未来展望 什么是Arduino 什么是Arduino相信很多读者会有这个疑问,也需要一个全面而准确的答案。不仅是读者,很多使用Arduino的人也许对这个问题都难以给出一个准确的说法,甚至认为手中的开发板就是Arduino,其实这并不准确。那么,Arduino究竟该如何理解呢

1.1.1 Arduino不只是电路板 Arduino是一种开源的电子平台,该平台最初主要基于AVR单片机的微控制器[1]和相应的开发软件,目前在国内正受到电子发烧友的广泛关注。自从2005年Arduino腾空出世以来,其硬件和开发环境一直进行着更新迭代。现在Arduino已经有将近十年的发展历史,因此市场上称为Arduino 的电路板已经有各式各样的版本了。Arduino开发团队正式发布的是Arduino Uno和Arduino Mega 2560,如图1-1和图1-2所示。 图1-1 Arduino Uno R3 图1-2 Arduino Mega 2560 R3 图1-1和图1-2所示的开发板就是所谓的Arduino I/O印刷电路 板(Printed Circuit Board, PCB)。 Arduino项目起源于意大利,该名字在意大利是男性用名,音译为“阿尔杜伊诺”,意思为“强壮的朋友”,通常作为专有名词,在拼写时首字母需要大写。其创始团队成员包括:Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti 6人。Arduino的出现并不是偶然,Arduino最初是为一些非电子工程专业的学生 [1] 关于AVR单片机的内容会在第3章进行介绍。

ERP面试-项目经理面试必看PMP知识教学文案

_项目经理面试必看PMP知识 自进入ERP咨询实施行业以来,一直都在不断地学习、实践、总结,不断地在项目中经历着痛苦抑或者快乐的磨砺和蜕变,‘痛并快乐着’是我很长一段时间以来的真实感受。从一个懵懂而又充满激情的青年学生,经过技术支持顾问到ERP实施顾问再到ERP管理咨询顾问的转变,个中感受,每每回想起来,颇有一番滋味。 回首起来,自1996年毕业,1998年步入ERP行业以来,凡9年间,共经历了3个主要的发展阶段: 一、技术支持工作为主的工程师 1998年有幸进入某台资企业,并幸运地(至少当时应该是)得以有机会参与,后来主导整个企业的ERP项目实施与后续的技术支持工作。当时是从工程设计职位转行作ERP实施,当时行业的工作经验应该是从零开始,好在有台湾的咨询顾问指导,尽管如此,还是走了很多弯路,碰到了很多问题,其中很多问题现在在项目实施过程中仍然时时会遇到,几乎项目管理中的典型问题都曾遇到了,只是当时没有系统学习过项目管理的知识(PMBOK)无法给以准确的总结罢了。现将当时所遇问题列举如下,算是对当时工作做一个小结了: 1.项目范围问题 首先是实施模块的界定,其次更重要的是实施这些模块带给整个企业的价值点,这个就是范围,也叫边界。ERP是一套管理系统,或者称之为管理工具,它一定要给企业带来价值,但是需要带来哪些价值?体现在哪些具体的职能部门?哪些作业流程上?这个要界定清楚,需求看起来很宽泛,但需要细化分解到每一个可以执行的层面,只有将边界搞清楚了,实施才有目标,才有的放矢,才便于项目的最终验收。 台湾顾问在此方面的确很有经验,调研做的非常仔细,项目范围说明书也做的非常细致,而且一定要企业的高管签字确认。 2.项目时间管理问题 谈及时间管理,台湾顾问在时间上的确做到不错,提前有计划确认。但对于企业而言,配合实在是难以如愿。直至后来咨询方提高了顾问人天费用后才予以重视,这个对于我后来从事实施工作的计划性有很大的助益。——没有计划,就难以分清工作之轻重缓急,虽然计划跟不上变化,但计划一定要强化执行,尤其对于顾问方,一定要坚持与客户方确认,督促客户制定相应的考核制度以作保证! 3.项目沟通问题 在甲方作项目经理的这段时间,使我印象很深刻的就是:所有项目相关的事宜均需书面表达,并顾问方、企业方确认,让当时是客户项目经理的我由感觉繁琐到接受确实经历了一段时间。 4.项目经理授权问题 这里指的是企业方项目经理的授权,在项目开工之初一定切记要跟企业方的高层沟通清楚,项目经理的人选很重要,对其做出的授权是否到位更重要。一个企业的网络管理员很难相信能做好各强势部门间的沟通协调,在管理基础尚好的外资企业尚且如此,况私营企业乎?当时的我就是因授权不到位,吃了不少苦头。最后还是靠顾问支招,才得以度过内部协调这道难关! 5.业务流程重组问题 要充分地调研,多层次、多角度地考虑业务流程重组对企业现有管理模式的冲击和影响,否则可能会埋下诸多项目失败的’地雷’,或许说严重了些,但我确实遭遇了: 单体企业的核算突然变成了类似多体企业的事业部制核算,给ERP的业务处理着实造成了不小的混乱,如果抗不住只能改回原来的模式。——早知如此,何必当初呢?换言之,若要改革,何不坚持到底?孰优孰劣、孰是孰非,事先一定要搞清楚。

从零开始学电脑

从零开始学电脑 本文从电脑的硬件、软件等电脑的方方面面为电脑初学者讲解了电脑入门知识,包括电脑硬件的组成、软件、电脑上网安全和操作系统等,从零开始学电脑,让你一步一步成为电脑高手。 硬件篇: 电脑硬件的组成: (菜鸟篇) CPU:目前常见的CPU主要是由2个厂家生产,一个是AMD公司的,高端产 品是速龙系列,低端是闪龙系列,另外就是INTER公司 ,高端产品是奔4系列,低端是赛扬系列.这两年开始流行的双核CPU在2个公司的高端产品中都有相应的型 号. CPU的知识比较多,具体的可以再网上查询,这里就不多说了.提醒一句,CPU是造不了假的,只有外盒,风扇等附加品存在假货. 主板: 目前的主板的主芯片都是国外制造的,芯片厂家主要有NVIDIA,ATI,INTER,AMD,VIA,SIS等等,各大主板厂家自己研发PCB板来进行主板的设计,分别来满足2个CPU厂家的CPU需要. 显卡:目前的显卡分为独立和集成显卡,生产独立的显卡芯片主要有2个厂家垄 断,NVIDIA 和ATI 公司,生产集成显卡芯片有

INTER,NVIDIA,ATI,SIS等等.各大显卡厂家利用显卡芯片提供的显卡GPU来进行显卡的设计和组装. 内存:目前所有内存的颗粒都是国外制造的,主要是韩国制造.国内不过是生产PCB板和封装的过程.内存主要有3种,一种是SD内存(已淘汰),一种是DDR内存, 一种是DDR II代内存.未来还有DDR III代内存. 硬盘:常见的硬盘有三星,西数和希捷,基本上是希捷一枝独秀,容量在20GB以上的基本上都是7400转的,低于20GB的一般都是5400转的,转速越高,硬盘读些数据的速度越快.提醒一句: 硬盘的生产环境要求比较高,所有的硬盘都是国外生产. 机箱+电源:这两样东西没有什么技术含量,都是国内制造. 光驱:常见的有CD-ROM(类似VCD机),CD刻录机(兼容VCD,可以刻录VCD),DVD光驱(类似DVD机,兼容VCD),康宝(相当于DVD光驱多了个刻录VCD光盘的功能),DVD刻录机(VCD,DVD播放和VCD,DVD刻录功能)

从零开始学VC系列教程完整版

从零开始学VC系列教程一.信息显示实验 题外话:第一次写教程,不知道该怎么开始.以前见过的教程可能都会介绍比较多的理论然后才开始讲实际操作,我想对于VC,理论讲得太多大家可能更糊涂,所以选择了这个方案,我们先一步步照着做,每一次只介绍一两个知识点,并且把理论放在后面说明,希望大家能喜欢这种方式,并对这种方式提出意见和建议,以便以后章节更适合大家的学习. 或许我写的还不能称之为教程,只是一些操作步骤及说明,通过这些练习,希望能使大家对VC 有一个新的认识.VC的功能是十分强大的,但我们一般并不会用到所有的功能,就像大家熟悉的KeilC一样,其实Keil功能也是很多的,平时也没见谁把Keil的功能都用到了.基于此,我写的这个教程可能在VC专业人士看来比较简单.不是要班门弄斧,而是希望推行上位机技术,形成一个氛围让大家来学习交流,PC机与下位机结合毕竟也是发展的一个方向.望高手谅解小辈的不自量力.同时,我们结合单片机编程,让大家明白上位机控制方法及原理,当然这是今后章节的内容了. 本节内容:学会在文本框中显示文本,学会弹出式对话框使用. 学习目的:信息显示是人机交互的基础,同时,信息显示也为以后的程序调试打下基础. 1.新建工程.打开VC6.0点击[文件]->[新建],弹出如下对话框. 在工程选项中选择MFC AppWizard[exe],选择好工程存入的位置,然后在工程名称中填入工程的名称,例如Eg01,填入Eg01后.VC会在我们选择的路径后自动加入一个以工程名命名的文件夹作为工程目录.完成按[确定]就会进入工程向导,出现以下的提示.

在这个我们选择[基于对话框]就行了.单文档及多文档方式会在以后详细介绍.这里也简要说明一下.①单文档.程序一次只能处理一个文档对象(文件).像写字板,记事本等.②多文档.程序一次可以处理多个对象(文件),像word之类的,可以同时打开多个文件.③基本对话框.程序一般用于处理一些比较小的,工具型的软件.像双龙的ISP下载软件,Easy 51Pro等都是基于对话框.一些不是很复杂的工业软件也通常可以用基于对话框的形式,这种方式的优点是所见即所得,一些控件可以像VB一样拖到工作区就行了.选好以后直接按[完成]就可以了.至于[下一步]的向导,这里我们先不管.然后会进入以下的画面.其中红色及绿色是我的标注,看不清图片可以下载图片放大. 选中静态文本框[TODO:在这里设置对话框控制],单击指标右键,在弹出的快捷菜单中选择[属性Properties]菜单项,弹出如下对话框 修改IDC_STATIC为IDC_FIRSTLABEL,标题可以写为”第一个应用程序”然后关闭这个对话框,就可以看到刚才的静态文本框内容变为”第一个应用程序”了. 在刚才的操作中,我们将静态文本框的ID改为了IDC_FIRSTLABEL,在VC中,ID是控件的标志,不能有相同的ID出现,但允许多个名为IDC_STATIC的ID号.所以,一般并不把文件名命为 IDC_STATIC,除非以后我们不想在程序中改变这个控件的属性.有一些控制,例如GroupBox一般并不在程序中改变什么,所以不改变其ID号.ID是程序访问控件的标识,所以一个应用程序中不能有重复ID. 按下来我们要添加一个按钮. 用鼠标将控件条上的按钮拖到对话框上,可以看到对话框上多了一个按钮.?用上叙方法,改变按钮ID为IDC_BTN1,标题改为”显示”,这样就做好一个按钮了.下面我们为按钮添加代码. 双击按钮,会出现以下的提示框. 按[OK]为按钮添加响应函数,出面以下画面 void CEg01Dlg::OnBtn1()

android 和 ios的优点和缺点

Android 和iOS 孰优孰劣:真实应用开发过程告诉你答案 随便搜索一下“Android vs. iOS”,都会出现很多关于哪个平台更好的争论,大多数的争论点都是关于市场占有率、易用性和设备分化等问题。当然也有一些“以开发者的角度”去比较这两个平台的文章,但是很少有从技术上做深入的比较,通常也只是用一个简单的示例应用介绍一些基本的特性。缺少这种深入的比较其实是有原因的:一个公司要做一个足够复杂的移动应用,通常需要一个人或团队做Android,另外一个人或团队做iOS。这两个平台使用不同的编程语言(Java和Objective-C),提供不同的SDK,使用不同的开发工具,所以人力资源分配上各做各的平台也就不奇怪了。 GQueues是一个在线任务管理器,之前只有一个HTML5版本。最近我完成了 GQueues for Android 和GQueues for iPhone & iPad 的开发。虽然这两个应用的复杂程度不能和第一人称射击游戏相提并论,但也绝不简单–为用户存储和管理数以千计的任务信息、支持多账户、提供到WEB端的后台同步、复杂的过滤、排序和分组功能。通过这次的实践,我希望透过独特的视角,分析和比较为这两个平台开发GQueues应用的过程。 统计概况

Android App iOS App 启动日期Sept 21, 2012 Mar 2, 2013 第一个可测的 Dec 22, 2012 June 10, 2013 Beta版本 应用发布日期Jan 31, 2013 July 18, 2013 项目总耗时 4.25 months 4.5 months Ramp Up Time 1 week 2 weeks 开发耗时870 hours (approx) 960 hours (approx) Beta测试 34 days 38 days &Bugfix Beta测试人员 92 people 48 people 人数 代码行数26,981 lines 23,872 lines 应用大小 1.1 MB 3.5 MB 视频预览GQueues for Android Video GQueues for iOS Video 下载 学习曲线 我已经写了12年的代码,但这是我写的第一个Android应用,也是我写的第一个偏向数据处理的iOS应用(2010年我做过两个iOS 3上的游戏,但那两个游戏主要只涉及一些动画和蓝牙连接)。我最后一次用Java是在研究生阶段,而我的Objective-C也仅限于那两个游戏。所以对于这两个平台,我基本上可以算是从零开始。 简单讲,只需要花一半学习iOS的时间来学习Android,我就能开始Android开发。对于Android,我花了一周时间用来看书、跟着一些教程做一些测试应用,这些测试应用包含了GQueues将会用到的一些核心功能。做完这些,我基本上算是打好了为GQueues设计架构的基础,同时也可以开始为这个项目写代码了。在接下来的一周我可以很轻松自如地基于Android做开发,而不再需要依赖某个资源去实现新特性了。 对于iOS,我同样按照上面的流程,但我花了两周时间做各种测试/实验,才让自己觉得可以开始为这个项目写一些基础代码了。其中大部分的时间都花在研究CoreData各种复杂的API上面。搞清楚怎么设置、怎么在线程安全的前提下,为每个用户集中管理PersistentStoreCoordinators和ManagedObjectContexts也花了些功夫,最重要的是要支

相关主题
文本预览
相关文档 最新文档