日拱一卒(八)

1.文件存储

openFileOutput 和 openFileInput,其中openFileOutput 有两种模式MODE_PRIVATE(新写入的内容会覆盖先前的内容)、MODE_APPEND(新写入的内容追加到原有的内容);另外两种已经被废弃:MODE_WORLD_READABLE(表示当前文件可以被其他应用读取),MODE_WORLD_WRITEABLE(表示当前文件可以被其他应用写入

2.SharedPreferences:

存储用其内部类Editor操作

3.SQlite数据库:

  • SQLiteOpenHelper中getReadableDatabase()和getWritableDatabase()区别:当数据库不可写入的时候,getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常。
  • 什么是事务?SQlite中如何使用事务?

事务是用来保证数据库操作的一系列操作都成功的机制,如果成功数据替换成新的,否则还原成原有的数据。

使用方式:主要三个方法

db.beginTransaction();-----------在需要开启事务的数据库一系列操作前面开启事务

db.setTransactionSuccessful();--------------在数据库一系列操作完成后标志事务成功

db.endTransaction(); ----------------标志事务结束:

public class MainActivity extends Activity {

	private MyDatabaseHelper dbHelper;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);
		……
		Button replaceData = (Button) findViewById(R.id.replace_data);
		replaceData.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				SQLiteDatabase db = dbHelper.getWritableDatabase();
				<span style="color:#ff0000;">db.beginTransaction(); // 开启事务</span>
				try {
					db.delete("Book", null, null);
					if (true) {
						// 在这里手动抛出一个异常,让事务失败
						throw new NullPointerException();
					}
					ContentValues values = new ContentValues();
					values.put("name", "Game of Thrones");
					values.put("author", "George Martin");
					values.put("pages", 720);
					values.put("price", 20.85);
					db.insert("Book", null, values);
					<span style="color:#ff0000;">db.setTransactionSuccessful(); // 事务已经执行成功</span>
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					<span style="color:#ff0000;">db.endTransaction(); // 结束事务</span>
				}
			}
		});
	}

}

  • 如果数据库结构存在变动,数据库升级时如何避免先前的数据丢失?

主要是对onUpgrade方法的处理,不能简单粗暴的的删除所有表,在强制onCreate;不要删除先前的表,而是在先前的表上做修改或者添加的操作。






内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向与逆向运动学求解、正向动力学控制以及基于拉格朗-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导与仿真实践,利用人工神经网络对复杂的非线性关系进行建模与逼近,提升机械臂运动控制的精度与效率。同时涵盖了路径规划中的RRT算法与B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模与ANN求解方法;②理解拉格朗-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿与高精度轨迹跟踪控制;④结合RRT与B样条完成平滑路径规划与优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析与神经网络训练,注重理论推导与仿真实验的结合,以充分理解机械臂控制系统的设计流程与优化策略。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值