- 浏览: 323926 次
- 性别:
- 来自: 武汉
-
文章分类
- 全部博客 (89)
- 蜗牛/ (0)
- android_app (22)
- android_activity (6)
- android_AudioManager (1)
- android_Dialog (4)
- android_EditText (3)
- android_ListView (3)
- android-Media (5)
- android_Notification (2)
- android_ProgressBar (1)
- android_sqlite (1)
- android_Service (1)
- android_SharedPreferences (1)
- android_TitleBar (3)
- android-WebView (3)
- android_常见问题解决方案 (2)
- (J2SE)XML (1)
- (J2SE)Java I/O流 (3)
- (J2SE)Socket 网络编程 (2)
- (J2SE)Java 基础 (3)
- (J2SE)Thread 学习笔记 (4)
- android google map (1)
最新评论
-
Mfeng:
Mfeng 写道评论竟然不能删除
java 实现文件/文件夹复制、剪切、删除 -
Mfeng:
评论竟然不能删除
java 实现文件/文件夹复制、剪切、删除 -
yizhesong:
如何更改回来?
android EditText设置不可写(转) -
zhb31415926:
写点有技术含量的,纯浪费时间的文章
ListView——ArrayAdapter -
somefuture:
龙哥IT 写道setTextView(int,String)? ...
Activity传递一个或者多个对象
1、Activity和Task
task就好像是能包含很多activity的栈。 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个activity所在的task栈。当用户按下返回键时,第二个activity从栈中弹出,第一个activity又在当前屏幕显示。这样,从用户角度来看,这两个activity就好像是属于同一个应用程序的,即使第二个activity是属于另外一个应用程序的。当然,这是指默认情况下。 task栈包含的是activity的对象。如果一个activity有多个实例在运行,那么栈中保存的是每个实例的实体。栈中的activity不会重新排列,只有弹出和压入操作。 一个task中的所有activity都以整体的形式移动。整个task可以被移到前台或后台。打个比方,当前的task包含4个activity–当前activity下面有3个activity。当用户按下HOME键返回到程序启动器(application launcher)后,选择了一个新的应用程序(事实上是一个新的task),当前的task就被转移到后台,新的task中的根activity将被显示在屏幕上。过了一段时间,用户按返回键回到了程序启动器界面,选择了之前运行的程序(之前的task)。那个task,仍然包含着4个activity。当用户再次按下返回键时,屏幕不会显示之前留下的那个activity(之前的task的根activity),而显示当前activity从task栈中移出后栈顶的那个activity。 刚刚描述的行为是默认的activity和task的行为。有很多方法能够改变这种行为。activity和task之间的联系,以及task中的activity的行为可以通过intent中的标记以及在manifest中的<activity>元素的属性控制。其中,主要的Intent标记有:
l FLAG_ACTIVITY_NEW_TASK
l FLAG_ACTIVITY_CLEAR_TOP
l FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
l FLAG_ACTIVITY_SINGLE_TOP
主要的<activity>属性有:
l taskAffinity
l launchMode
l allowTaskReparenting
l clearTaskOnLaunch
l alwaysRetainTaskState
l finishOnTaskLaunch
默认情况下,一个应用程序中的所有activity都有一个affinity–这让它们属于同一个task。然而,每个activity可以通过<activity>中的taskAffinity属性设置单独的affinity。不同应用程序中的activity可以共享同一个affinity,同一个应用程序中的不同activity也可以设置成不同的affinity。affinity属性在2种情况下起作用:当启动activity的Intent对象包含FLAG_ACTIVITY_NEW_TASK标记,或当activity的allowTaskReparenting被设置成true。
l FLAG_ACTIVITY_NEW_TASK标记
当传递给startActivity()的Intent对象包含FLAG_ACTIVITY_NEW_TASK标记时,系统会为需要启动的activity寻找与当前activity不同的task。如果要启动的activity的affinity属性与当前所有的task的affinity属性都不相同,系统会新建一个带那个affinity属性的task,并将要启动的activity压到新建的task栈中;否则将activity压入那个affinity属性相同的栈中。
l allowTaskReparenting属性
如果一个activity的allowTaskReparenting属性为true,那么它可以从一个task(TASK1)移到另外一个有相同affinity的task(TASK2)中(TASK2带到前台时)。
如果一个.apk文件从用户角度来看包含了多个“应用程序”,你可能需要对那些activity赋不同的affinity值。
2、运行模式
activity的launchMode属性可以有四种值:
l “standard” (默认)
l “singleTop“
l “singleTask“
l “singleInstance“
这4种模式可以按4种分类来区分,以下假设位于task1中的activity1启动activity2:
模式\分类 |
包容activity2的task |
一个activity是否允许有多个实例 |
activity是否允许有其它activity共存于一个task |
对于新的intent,是否总是实例化activity对象 |
standard |
如果不包含FLAG_ACTIVITY_NEW_TASK标记,则activity2放入task1,否则按前面讲述的规则为activity2选择task |
可被多次实例化,同一个task的不同的实例可位于不同的task中,每个task也可包含多个实例 |
允许 |
是的。当接收到新的intent时,总是会生成新的activity对象。 |
singleTop |
同standard |
同standard |
允许 |
已存在的activity对象,如果位于目标task的栈顶,则该activity被重用,如果它不位于栈顶,则会实例化新的activity对象 |
singleTask |
将activity2放到task1栈顶 |
不能有多个实例。由于该模式下activity总是位于栈顶,所以actvity在同一个设备里至多只有一个实例 |
允许。singleTask模式的activity总是位于栈底位置。目标activity实例已存在时,如果该实例刚好位于task栈顶,则接收intent,否则到来的intent将会被丢弃,但该可以响应该intent的那个activity所在的task将会被移到前台。 |
|
singleInstance |
同singleTask |
同singleTask |
不允许与其它activity共存于一个task。如果activity1的运行在该模式下,则activity2一定与activity1位于不同的task |
对于新到的intent,如果是由新创建的activity对象来接收,则用户可以通过返回键回到之前的activity;如果是由已存在的activity来接收,则用户无法通过返回键返回到接收intent之前的状态。
3、清空栈
当用户长时间离开task(当前task被转移到后台)时,系统会清除task中栈底activity外的所有activity。这样,当用户返回到task时,只留下那个task最初始的activity了。
这是默认的情况,<activity>中有些属性可以改变这种行为。
l alwaysRetainTaskState属性
如果栈底activity的这个属性被设置为true,刚刚描述的情况就不会发生。task中的所有activity将被长时间保存。
l clearTaskOnLaunch属性
如果栈底activity的这个属性被设置为true,一旦用户离开task,则task栈中的activity将被清空到只剩下栈底activity。这种情况刚好与alwaysRetainTaskState相反。即使用户只是短暂地离开,task也会返回到初始状态(只剩下栈底acitivty)。
l finishOnTaskLaunch属性
这个属性与clearTaskOnLaunch相似,但它只对单独的activity操作,而不是整个task。它可以结束任何activity,包括栈底的activity。当它设置为true时,当前的activity只在当前会话期间作为task的一部分存在,当用户退出activity再返回时,它将不存在。
另外还有一种方法能将activity强行从stack中移出。如果intent对象包含FLAG_ACTIVITY_CLEAR_TOP标记,当目标task中已存在与接收该intent对象的activity类型相同的activity实例存在时,所有位于该activity对象上面的activity将被清空,这样接收该intent的activity就位于栈顶,可以响应到来的intent对象。如果目标activity的运行模式为standard,则目标activtiy也会被清空。因为当运行模式为standard时,总会创建新的activity对象来接收到来的intent对象。
FLAG_ACTIVITY_CLEAR_TOP标记常常和FLAG_ACTIVITY_NEW_TASK一起使用。用2个标记可以定位已存在的activity并让它处于可以响应intent的位置。
4、启动任务(Task)
Intent filter中有”android.intent.action.MAIN” action和”android.intent.category.LAUNCHER” category的activity将被标记为task的入口。带有这两个标记的activity将会显示在应用程序启动器(application launcher)中。
第二个比较重要的点是,用户必须能够离开task并在之后返回。因为这个原因,singleTask和singleInstance这两种运行模式只能应用于含有MAIN和LAUNCHER过滤器的activity。打个比方,如果不包含带MAIN和LAUNCHER过滤器,某个activity运行了一个singleTask模式的activity,初始化了一个新的task,当用户按下HOME键时,那个activity就被主屏幕“挡住”了,用户再也无法返回到那个activity。
类似的情况在FLAG_ACTIVITY_NEW_TASK标记上也会出现。如果这个标记会新建一个task,当用户按下HOME键时,必须有一种方式能够让用户返回到那个activity。有些东西(比如notification manager)总是要求在外部task中启动activity,在传递给startActivity的intent中总是包含FLAG_ACTIVITY_NEW_TASK标记。
对于那种不希望用户离开之后再返回activity的情况,可将finishOnTaskLaunch属性设置为true。
“第二个比较重要的点是,用户必须能够离开task并在之后返回。因为这个原因,singleTask和singleInstance这两种运行模式只能应用于含有MAIN和LAUNCHER过滤器的activity。”
以下的讨论均建立在对应 singleTask 与 singleInstance activity 未设置 MAIN 与 LAUNCHER
1、假设该 Activity 启动模式是 singleInstance,叫 ActivityI
应用第一次启动时会创建一个 Task1,当你在 Task1 中的某个 Activity 中启动 ActivityI 时,一定会创建新的 Task(假设叫 Task2),并将 ActivityI 的实例放进 Task2 中。这个时候,当用户按下 Home,返回桌面,再从程序列表启动这个应用,则对应的 Task1 会被提到前台,你会看到启动 ActivityI 的那个 Activity,但对应的 ActivityI 你却看不到,因为 Task2 没有被提到前台。这就是上面所说的情况,但实际上是,如果你再启动 ActivityI,却会复用之前的 Task2 与 ActivityI 的实例。
2、假设该 Activity 启动模式是 singleTask,叫 ActivityT
同样应用第一次启动时会创建一个 Task1,当你在 Task1 中某个 Activity 启动 ActivityT 时,若发生动作的 Activity 与 ActivityT 的 taskAffinity 是相同的,会自动添加在 Task1 中,若 taskAffinity 不同,则新建 Task2 ,并将新创建的 ActivityT 放进 Task2,不管怎么样,对应的按下Home,再从程序列表返回,都能看到 ActivityT 的实例,因为 singleTask 在被启动的时候 默认都加了 NEW_TASK,会对之进行复用,因此这篇文章内的“那个activity就被主屏幕“挡住”了,用户再也无法返回到那个activity”本身就是有问题的。
总之,原作者的意思是提倡当一个应用退出时应该退出所有 Activity,而这种多 Task 的,就需要注意到这点。还有就是 singleInstance 的 Activity 应当能让用户更容易的返回,因此提倡设置 MAIN 与 LAUNCHER。
关于 四种模式,有一篇更简单易懂并且不像这篇文章这么多问题的文章,推荐你去看看:
http://marshal.easymorse.com/archives/2950
2 如何启动新的task 除了用singleInstance 或flag设成newtask 还有其他办法么
3 另外一个activity被设置成singleTop 和 falg 设成newTask 发现singleTop会期作用 newTask不会起作用
若您知道请告知 谢谢
1、singleTop 是默认在当前task里面寻找,除非加NEW_TASK;
singleTask 是默认在singleTask所在task寻找,加不加NEW_TASK一样(taskAffinity 一样则在相同task下寻找,因此同一包下启动,默认 taskAffinity 是一样,就是在当前task下寻找)
2、没有了
3、如果你说的是 singleTop,那么NEW_TASK会起作用仅限于从其他task启动(NEW_TASK 的作用首先会检查要启动的 Activity 的 taskAffinity 是否与当前 task 的affinity一样,如果一样则就把新建的Activity放在当前的task,否则才创建新的task,当前包你没有自己主动更改taskAffinity都是一样的),如果你说的是 singleTask 相对于 singleTop 来说 NEW_TASK 不会起作用,那么我第一点已经说明白了。
singletask 的效果是如果在电话本的任何子界面如何按电话键 之前的activity
及状态全部不保存 并且全部被销毁掉
clearTaskOnlaunch 的效果是如果长按home键重新进入应用的话 之前的
activity 及状态全部不保存 并且全部被销毁掉
之前的联系人导入导出是如果activity如果被stop的时候就会 停止导入导出
之前的效果 : 在其他子界面按电话或者home键重新进去 应用状态全部不保存 并
且全部被销毁 掉
预期效果 1 修改为联系人导入导出可以在后台运行,按电话键不会打断导入导出
运行,并且再次点击导入导出菜单会显示当前运行进度。
2 按home键后也不会电话键不会打断导入导出运行,并且再次点击导入导出菜单
会显示当前运行进度。
3 不会引起其他的bug。
A 是联系人主activity B 是导入导出主界面Activity C 是导出Activity
启动方式 A -> B ->C
思路1
如果模式singletask改成singleTop的话 我把启动的导入导出界面设置成
singleTask
这时候如果按电话键就不用把导入导出activity杀掉,再进入导入导出界面的话就
会显示当前的进度(达到了预期的效果)
如果模式clearTaskOnlaunch =true 去掉的话 同样我把启动的导入导出界面设置
成singleTask 如果按home键 进去到lanucher 并再次进入联系人应用的话也不会
把我的导入导出activity杀死
并且再进入导入导出界面的话就会显示当前的进度(达到了预期的效果)
但如果这么做的话 会引起很多其他的bug 如在tab下操作按返回键 后不能直接回
到launcher界面
思路2
A 设置成singleInstance 这样会保证 B和 C 与A 的taskID 不同 重新按电话键
或者从launcher重新进入
电话本都会保证 A 与B C不在同一个task里面 这时在A的onresume方法里面用
runningTask方法去检测 所有task里面
有没有一个栈顶是C 的task 如果有就把 直接重新启动C (C设置成singleTask)
(达到了预期的效果)
带来的bug 如进入 拨号设置 ->拨号键->电话本-> 导入导出 再按返回就直接返
回到拨号设置界面 A-B-C (如果B设置成singleInstance的话 C按返回键直接回到
了A)
解决此bug的办法 是从写每个tab 界面弹出的子界面的onbackpress 方法 强制直
接返回预想的界面
思路3 A 启动B 时设置falg new task 这样会保证 B和 C 与A 的taskID 不同 重
新按电话键 或者从launcher重新进入
电话本 A 与B C在同一个task里面 这样就不能用思路2类似的方法 ,
AffniteTask 是否会让重新启动的A 与 B和C 不在同一个task里面,(还没有相应
的demo测出来如何正确使用AffniteTask)(如果能的话应该是个不错的思路)
思路4 为什么google 原来设置成导入导出时 操作其他行为会停止导入导出?肯定
也有其原因的,个人理解导入导出这个行为用户不是需要经常去操作的,不像音乐
播放一样需要写在service里面
请问大师有没有更好的办法 或者针对以上思路有考虑不对的地方斧正
不好意思,这么久才回复你,我也算不上什么大师,也就是多做了点实验,我看你的这次回复,我直接都晕菜了- -!
首先你说的很对,的却导入导出如果要用Service来做的话,显然有点麻烦了(不过这的确也是一种选择),其实更简单的一种选择是
A,B,C 的 launcheMode 都是 standard(默认),设置 clearTaskOnLaunch="false"(默认), 这样你在 A,B,C 是同一栈,而按 Home ,或者你接电话,再从 Home 程序列表进入,会直接把A,B,C 所在栈提到最前,即看到的是 C(你可以弹出个 ProgressDialog 用 AsyncTask 或Thread + Handler 来导出)。
如果你 A (反正就是你的 MAIN 入口Activity)的launch 一定要设置为 singleTask,有以下几个方法:
1、B 和 C 不是 Activity 而是 Dialog
2、A 是 TabActivity,B 和 C 是嵌套在 A 中的 Activity 或者 View(暂时没有试验过)。
3、设置 C 为 singleInstance
发表评论
-
获取android设备的 子网掩码和默认网关?
2012-08-21 17:02 1080//获取mac地址 public String getLoc ... -
Android获取本机Mac地址及IP地址的方法
2012-08-21 16:29 16601、Android 获取本机Mac 地址方法: ... -
解决:Android Android requires compiler compliance level 5.0 or 6.0. 错误
2012-05-31 09:35 1891今天将ADT更新到最新的12.0版本,重新导入以前的工程,没想 ... -
Android 应用程序获得版本号
2012-05-14 20:54 1915我们可以在AndroidManifest.xml中设置程序的 ... -
android 状态栏、标题栏、屏幕高度
2012-03-02 10:40 403021.获取状态栏高度: decorView是window中的 ... -
MotionEvent中getX()和getRawX()的区别
2011-12-01 10:55 1588先看一段代码: public class Res exten ... -
获取View在屏幕中的坐标
2011-11-30 15:21 1518final int[] location = new int[ ... -
(转)区分Activity的四种加载模式
2011-10-22 15:49 1007在多Activity开发中,有可能是自己应用之间的Activi ... -
ADB适用方法(转)
2011-10-15 14:06 1059ADB是android sdk里的一个工具, 它的主要功能有: ... -
Eclipse 常用快捷键
2011-10-10 16:38 1567比较常用的Eclipse快捷键 ... -
Activity 半透明的设置
2011-09-22 09:59 1020http://norety.iteye.com/blog/64 ... -
InputStream byte互转
2011-09-21 21:41 969InputStream转byte[] private byte ... -
Android获取图片的4种方式
2011-09-21 21:32 12851. 图片放在sdcard中, Bitmap imag ... -
Android UI学习 - GridView和ImageView的使用
2011-09-21 09:16 32http://android.blog.51cto.com/2 ... -
Activity之间UI的另类"更新"
2011-09-08 18:31 23这里不讨论常见的UI更新方式,请先看以下代码: Update ... -
android中常见的回调模式
2011-09-08 10:02 1531最近做ListView网络图片的异步加载,以及下载网路MP3动 ... -
Android中悬浮窗口的实现原理和示例代码(转)
2011-08-30 11:12 993用了我一个周末的时间,个中愤懑就不说了,就这个问题,我翻遍全球 ... -
控件之-ListVew(美化ListView)
2011-08-23 21:02 21一:为ListView设置背景图片 //List ... -
横竖屏切换(转)
2011-08-15 09:07 4873摘一: 在开发游戏的时候,有些游戏是只能横屏玩的,所以手机竖立 ... -
Drawable、Bitmap、byte[]之间的转换(转)
2011-08-08 09:33 8531、Drawable → Bitmap public sta ...
相关推荐
Android编程入门是学习Android开发的基础,它涉及到许多关键概念和技术,包括应用程序的组成元素、Activity与Task管理、进程和线程以及元素的生命周期。 一、应用程序的组成元素 1. **Activity元素**:Activity是...
在Android应用开发中,理解应用程序模块、任务(Tasks)、进程(Processes)和线程(Threads)的概念至关重要。这些组件是构建高效、响应且资源管理良好的应用程序的基础。 1. **应用程序模块(Application Modules...
3. 设置affinities:`android:parentActivityName`属性可以指定Activity的亲和力,使回退操作更加直观。 4. 清空the back stack:通过`FLAG_ACTIVITY_CLEAR_TOP`或`FLAG_ACTIVITY_NEW_TASK`标志可以清除Back Stack中...
一、项目简介 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷 二、技术实现 jdk版本:1.8 及以上 ide工具:IDEA或者eclipse 数据库: mysql5.5及以上 后端:spring+springboot+mybatis+maven+mysql 前端: vue , css,js , elementui 三、系统功能 1、系统角色主要包括:管理员、用户 2、系统功能 前台功能包括: 用户登录 车位展示 系统推荐车位 立即预约 公告展示 个人中心 车位预定 违规 余额充值 后台功能: 首页,个人中心,修改密码,个人信息 用户管理 管理员管理 车辆管理 车位管理 车位预定管理,统计报表 公告管理 违规管理 公告类型管理 车位类型管理 车辆类型管理 违规类型管理 轮播图管理 详见 https://flypeppa.blog.csdn.net/article/details/146122666
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql 部署环境:maven 数据库工具:navica 更多毕业设计https://cv2022.blog.csdn.net/article/details/124463185
内容为Python程序设计的思维导图,适用于新手小白进行浏览,理清思路
2024-Stable Diffusion全套资料(软件+关键词+模型).rar
mmexport1741417035005.png
COMSOL三维锂离子电池全耦合电化学热应力模型:模拟充放电过程中的多物理场耦合效应及电芯内应力应变情况,COMSOL锂离子电池热应力全耦合模型,comsol三维锂离子电池电化学热应力全耦合模型锂离子电池耦合COMSOL固体力学模块和固体传热模块,模型仿真模拟电池在充放电过程中由于锂插层,热膨胀以及外部约束所导致的电极的应力应变情况结果有电芯中集流体,电极,隔膜的应力应变以及压力情况等,电化学-力单向耦合和双向耦合 ,关键词: 1. COMSOL三维锂离子电池模型; 2. 电化学热应力全耦合模型; 3. 锂离子电池; 4. 固体力学模块; 5. 固体传热模块; 6. 应力应变情况; 7. 电芯中集流体; 8. 电极; 9. 隔膜; 10. 电化学-力单向/双向耦合。,COMSOL锂离子电池全耦合热应力仿真模型
基于传递矩阵法的一维层状声子晶体振动传输特性及其优化设计与应用,声子晶体传递矩阵法解析及应用,Matlab 一维层状声子晶体振动传输特性 传递矩阵法在声子晶体的设计和应用中具有重要作用。 通过调整声子晶体的材料、周期和晶格常数等参数,可以设计出具有特定带隙结构的声子晶体,用于滤波、减震、降噪等应用。 例如,通过调整声子晶体的周期数和晶格常数,可以改变带隙的位置和宽度,从而实现特定的频率范围内的噪声控制。 此外,传递矩阵法还可以用于分析和优化声子晶体的透射谱,为声学器件的设计提供理论依据。 ,Matlab; 一维层状声子晶体; 振动传输特性; 传递矩阵法; 材料调整; 周期和晶格常数; 带隙结构; 滤波; 减震; 降噪; 透射谱分析; 声学器件设计,Matlab模拟声子晶体振动传输特性及优化设计研究
头部姿态估计(HeadPose Estimation)-Android源码
永磁同步电机FOC、MPC与高频注入Simulink模型及基于MBD的代码生成工具,适用于Ti f28335与dspace/ccs平台开发,含电机控制开发文档,永磁同步电机控制技术:FOC、MPC与高频注入Simulink模型开发及应用指南,提供永磁同步电机FOC,MPC,高频注入simulink模型。 提供基于模型开发(MBD)代码生成模型,可结合Ti f28335进行电机模型快速开发,可适用dspace平台或者ccs平台。 提供电机控制开发编码器,转子位置定向,pid调试相关文档。 ,永磁同步电机; FOC控制; MPC控制; 高频注入; Simulink模型; 模型开发(MBD); Ti f28335; 电机模型开发; dspace平台; ccs平台; 编码器; 转子位置定向; pid调试。,永磁同步电机MPC-FOC控制与代码生成模型
light of warehouse.zip
内容概要:文章深入讨论了工业乙醇发酵的基本原理及工艺流程,特别是在温度和气体排放(如CO2及其他有害气体)影响下的发酵效果分析。文章介绍了乙醇发酵的重要环节,如糖分解、代谢路径、代谢调控以及各阶段的操作流程,重点展示了如何通过Matlab建模和仿真实验来探索这两个关键环境因素对发酵过程的具体影响。通过动态模型仿真分析,得出合适的温度范围以及适时排除CO2能显著提升发酵产乙醇的效果与效率,从而提出了基于仿真的优化发酵生产工艺的新方法。 适用人群:从事生物工程相关领域研究的科学家、工程师及相关专业师生。 使用场景及目标:适用于实验室环境、学术交流会议及实际生产指导中,以提升研究人员对该领域内复杂现象的理解能力和技术水平为目标。 其他说明:附录中有详细的数学公式表达和程序代码可供下载执行,便于有兴趣的研究团队重复实验或者继续扩展研究工作。
本资源包专为解决 Tomcat 启动时提示「CATALINA_HOME 环境变量未正确配置」问题而整理,包含以下内容: 1. **Apache Tomcat 9.0.69 官方安装包**:已验证兼容性,解压即用。 2. **环境变量配置指南**: - Windows 系统下 `CATALINA_HOME` 和 `JAVA_HOME` 的详细配置步骤。 - 常见错误排查方法(如路径含空格、未生效问题)。 3. **辅助工具脚本**:一键检测环境变量是否生效的批处理文件。 4. **解决方案文档**:图文并茂的 PDF 文档,涵盖从报错分析到成功启动的全流程。 适用场景: - Tomcat 9.x 版本环境配置 - Java Web 开发环境搭建 - 运维部署调试 注意事项: - 资源包路径需为纯英文,避免特殊字符。 - 建议使用 JDK 8 或更高版本。
这是一款仿照京东商城的Java Web项目源码,完美复现了360buy的用户界面和购物流程,非常适合Java初学者和开发者进行学习与实践。通过这份源码,你将深入了解电商平台的架构设计和实现方法。欢迎大家下载体验,提升自己的编程能力!
系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
这是一款专为大学生打造的求职就业网JavaWeb毕业设计源码,功能齐全,界面友好。它提供简历投递、职位搜索、在线交流等多种实用功能,能够帮助你顺利进入职场。无论你是想提升技术水平还是寻找灵感,这个源码都是不可多得的资源。快来下载,让你的求职之路更加顺畅吧!
useTable(1).ts
实验一: 1、进行CCS6.1软件的安装,仿真器的设置,程序的编译和调试; 2、熟悉CCS软件中的C语言编程; 3、使用按键控制LED跑马灯的开始与停止、闪烁频率; 4、调试Convolution、FFT、FIR、FFT-FIR实验,编制IIR算法并调试,并在CCS软件上给出实验结果。 实验二: 1、利用定时器周期中断或下溢中断和比较器比较值的修改来实现占空比可调的PWM波形; 2、改变PWM占空比控制LED灯的亮暗,按键实现10级LED灯亮暗调整; 3、模拟数字转换,转换过程中LED指示,并在变量窗口显示转换结果; 4、数字模拟转换,产生一个正弦波,转换过程中LED指示,转换完成后在CCS调试窗口显示波形。 实验三: 1、SCI异步串行通信实验; 2、SPI及IIC同步串行通信实验; 3、CAN现场总线串行通信实验; 4、传输过程中LED指示。 实验四: 1、电机转速控制实验。