软件工程实践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端架构的设计

//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端主页部分根据用户选择时间显示光点


  • 其他
    1. 设置TextView在布局居中显示:
      1、在xml文件设置:Android:gravity="center";
      2、在程序中设置:mTvTitle.setGravity(Gravity.CENTER);

  • 如上所述内容没有覆盖到这段时间所学,但如上内容在这段时间的学习也仅仅只是达到会用的程度而已,距离分析源码,自定义组件等仍有很长的道路需要努力。
    另截取部分学习过程中对于一些链接的记录:
    技术分享
    以上,由于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 恶意代码分析

测试工具Jtest:用于代码优化和测试——《软件工程综合实践专题》第四次个人博客

软工实践个人总结

[buaa-SE-2017]个人作业-回顾

个人技术博客——linux服务器配置以及flask框架

个人作业——软件工程实践总结作业