软件工程实践2017——个人技术博客
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程实践2017——个人技术博客相关的知识,希望对你有一定的参考价值。
android:
- 写一个记事本Demo
概述: 团队项目开始前,为了快速上手Android,有过这个练手,由于只用了一个晚上,目前只有增改功能,时间很紧,一直没机会去完善。Github,程序图示如下:
????
??与团队相关: 熟练对SQLite进行操作
????????使用RecycleView控件展示数据
- 学习MVP模式
概述: MVP模式从经典的MVC模式演变而来,Model层负责提供数据,View层负责视图显示,Presenter层负责逻辑处理。其三层之间的逻辑关系:
学习时主要参阅:MVP 模式简单易懂的介绍方式
????????Android MVP 详解
????????MVP Android Example
对于上面的链接,MVP Android Example 个人感觉是一个非常好的例子,在其Markdown文件中HOW-IT-WORKS.md的图示,简洁明了指明了程序中流程走向,配合MVP三层逻辑关系图更易理解,在团队的编程中,对于如何编写MVP模式的代码主要参考于此。
与团队相关: 团队项目采用MVP模式,学习MVP模式编写耦合度低,层次清晰的代码
- 学习Android基类设计
概述: 一般Android应用开发都会写一个BaseActivity来封装一些使用频率较高的方法,而对于每个项目其涉及到的东西有通性也有异性。对于基类,一般有视图初始化,数据初始化,跳转方法,接收传值方法,生命周期重写函数等。
学习时主要参阅:知乎:BaseActivity 里到底应该写哪些内容?
????????MVP Base
????????Base
关于以上链接,主要是针对基类的相关介绍,有的则是项目中Base目录的代码文件,学习时,关于基类,零碎的接收他人所总结的应该写什么感觉还是远远不够,没有在这个基类所在的环境去理解它,感受它,对于掌握运用来说还是不够。学习时,只剖析了一份较为完整的开源项目,理解其前后作用。
与团队相关: 负责Android端架构的设计
- 学习使用Gson库解析json
概述:Google推出的将Java对象转换为JSON并返回Java序列化/反序列化的Json库。
学习时主要参阅:Gson User Guide
????????你真的会用Gson吗?Gson使用指南系列
????????Gson源码
以下是学习时,总结现阶段处理常用的代码:
//Test类
Gson
//json写入文件
String outFilePath = "output.txt";
File outFileName = new File(outFilePath);
OutputStream out = new FileOutStream(outFileName);
JsonWrite writer = new JsonWriter(new OutputStreamWriter(out,"UTF-8"));
writer.setIndent("\\t");
writer.beginArray();
for (test: testList){
gson.toJson(test,Test.class,writer);
}
writer.endArray();
writer.close();
//读取json文件
String inFilePath = "input.txt";
File inFileName = new File(inFilePath);
InputStream in = new FileInputStream(inFileName);
JsonReader reader = new JsonReader(new InputStreamReader(in,"UTF-8"));
reader.beginArray();
while (reader.hasNext()){
Test test = gson.fromJson(reader,Test.class,);
testList.add(test);
}
与团队相关: 客户端与服务端数据交换格式使用JSON,掌握JSON处理方法
- 学习Android动态权限封装
概述: Android 6.0之前申请权限在AndroidMainfest配置文件中进行配置即可,而Android 6.0之后则需要动态获取权限。Google官方将权限分为普通权限和危险权限,而在这两类权限中又有权限组的概念,申请同一组权限只需一次,不用重复申请。
权限组如下:
学习时主要参阅:API指南简介
????????Android 6.0 运行时权限简洁封装
????????Android 6.0权限管理及其封装
关于以上链接,主体思想就是将用户动作而需要获取的权限存储起来,然后进行权限获取。关于动态申请权限,之前对其基本没什么概念,导致了在实践课同学录的团队编程中被坑到,当时写导出纪念册功能,写完后,不管怎么样相册都无法保存本地,而那部分的代码又有执行进去,一直在怀疑自己文件IO的代码处理有问题= =时间浪费++,一番debug后才发现原因。
与团队相关: Android端涉及读取写入等危险权限需要动态获取权限
- 学习SQLite,创建数据库
概述: SQLite是一款轻型服务器,其是Typelessness,亦即无类型,创建表时可不指明类型。SQLite中,原始的存储只有以下几种:- NULL。只有null。
- INTEGER。有符号整数,根据值的大小存储在1-4字节中。
- REAL。浮点数,储存为8字节的IEEE浮点数。
- TEXT。文字字符串,根据数据库编码存储(UTF-8/UTF-16BE/UTF-16LE)
BLOB。纯数据储存。
学习时主要参阅:第一行代码
目前在设计数据库时,主要对于日期如何表示有过疑惑。特此记录:在JavaBean文件中对于日期可以声明类型为long
,如下获得时间即可插入java.util.Date date = new java.util.Date(); long datetime = date.getTime();
与团队相关: 负责Android端数据库设计及创建
- 学习编写日期选择器
概述: 日期选择器有两种实现方法,一种是直接在Activity中使用,另一种是通过FragmentDialog来使用。
学习时主要参阅:Android开发之DatePickerDialog与TimePickerDialog的功能和用法详解
????????android选择时间攻略
编写这部分代码时候,bug主要不是出现在日期选择器上,而是关于Date返回的日期中月份是从0开始算起,而在设置显示时候手动设置自增,导致后部分用于数据库查找一直不对,调试了很久才发现顺手给月份自增了。
与团队相关: Android端主页部分根据用户选择时间显示光点
- 学习Activity之间数据传递
概述: Activity之间的数据传递基本常见方法有四种:- Intent传递简单数据
- Bundle传递数据包
- 传递值对象
- 获取Activity的返回参数
学习时主要参阅:Activity 之间的数据交互
????????Activity之间传递数据的方式及常见问题总结
与团队相关: Android端活动之间跳转数据的传递
- 其他
- 设置TextView在布局居中显示:
1、在xml文件设置:Android:gravity="center";
2、在程序中设置:mTvTitle.setGravity(Gravity.CENTER);
- 设置TextView在布局居中显示:
- 如上所述内容没有覆盖到这段时间所学,但如上内容在这段时间的学习也仅仅只是达到会用的程度而已,距离分析源码,自定义组件等仍有很长的道路需要努力。
另截取部分学习过程中对于一些链接的记录:
以上,由于Android个人是开荒状态,所以对于一些基础知识在一开始没能马上记下来,后期需要时时翻阅,另外,一边实践一边学知识点都是比较零散的,所以把学习过程中认为较简单易懂的教程保存下来。
Git
学习时主要参阅:git—local-branching-on-the-cheap
????????GitHub团队项目合作流程——致敬西瓜学长
????????Git教程——廖雪峰的官方网站
遇到的问题:
- [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
Git提供了一个换行符检查功能(core.safecrlf
),可以在提交时检查文件是否混用了不同风格的换行符。
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf
来打开此项功能,如果是在Windows系统上,把它设置成true
,这样当签出代码时,LF会被转换成CRLF:$ git config --global core.autocrlf true
Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf
设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:$ git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF
,会在Mac和Linux系统上,包括仓库中保留LF
。
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false
取消此功能,把回车符记录在库中:$ git config --global core.autocrlf false
(使用git的时候不止这一个,有的解决完忘了做记录了)
附上git-flow经典流程图
以上是关于软件工程实践2017——个人技术博客的主要内容,如果未能解决你的问题,请参考以下文章
2017-2018-2 《网络对抗技术》 20155322 Exp4 恶意代码分析