- 博客(31)
- 收藏
- 关注
原创 Java代码质量小结
代码质量小结根据Sonar修改代码的小结主要结合 Sonar的规则和目前项目中的代码来分析目录代码质量小结目录Bug与漏洞1. 给基本数据类型赋值前应该先做强制类型转换2. 使用float和double的注意事项3. if语句的判断条件不应该是一个确定值性能提升1.数组的复制建议使用System.arraycopy()2.字符串转为基本数据类型的推荐用...
2018-04-18 21:17:52
1474
原创 Apk瘦身指南
0.序Apk大小影响应用的安装速度,内存使用,电量损耗。用户的流量即选择下载的可能性。1.了解Apk的构成2.最小化代码使用代码混淆ProGuard检查依赖的第三库,尽量统一,减少依赖通过依赖配置transitive避免
2017-06-16 12:37:39
374
原创 使用AndroidStudio自定义Gradle插件
使用AndroidStudio自定义Gradle插件1.概述目标:编写一个Gradle插件,学习自定义Gradle插件。功能:利用lint自动删除无用资源。实现思路:先执行lint任务,通过解析生成的xml文件,找到id为UnusedResources的文件路径,并遍历删除,输出日志。开发工具:Android Studio 2.4。2.内容2.1新建一个工程,再新建一个Module作为插件模
2017-06-15 15:45:45
1798
原创 Android单元测试
什么是单元测试?(摘自百度百科)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的
2015-09-25 13:25:09
630
原创 NDK基本开发及适用场景
IDE:Android Studio 1.3 操作系统:Ubuntu 14.04 LTS基本使用1.去官网下载NDK,配置好路径2.新建JNIClass文件来写Java类public class HelloClass { static { System.loadLibrary("app"); // module的名字 } public native S
2015-09-16 15:51:44
2001
原创 从Zero学习String源码
源码版本:JDK_1.7.0_55String的常用方法public final class String //注意final implements java.io.Serializable, Comparable<String>, CharSequence { //保证只能初始化一次,用字符数组来存 private final char value[]; // 存储h
2015-09-09 10:09:47
359
原创 Activity生命周期之横竖屏切换
下面讨论 API 12 以上的情况 (之前是不需要设置screenSize,并且可能与下面不一样)关键在于 Activity中的一个属性configChanges(可以不写)所有属性值的具体含义与用途,请自行查文档 <activity android:name=".activities.FirstActivity" android:configChanges=
2015-09-07 13:04:25
332
原创 WeakReference在Android中的使用
弱引用(WeakReference)用于非必需对象。被弱引用关联的对象只能生存到下一次垃圾收集发生之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。1. 非UI线程处理Bitmap(可以替换为其它对象)以下摘自官网class BitmapWorkerTask extends AsyncTask { private final WeakReference im
2015-08-28 18:02:42
8282
1
原创 GC基本原理学习(Garbage Collected)
引言Java的内存动态分配和垃圾收集的问题,都交给了JVM来处理。意注,将JVM运行数据区(虚拟机栈【栈帧】,程序计数器,堆内存)粗略的分为栈和堆(所有线程共享),回收的是堆中的对象实例。不是栈中的引用类型。 那么JVM是如何处理的? 从三个问题来分析: 1. 哪些内存需要回收? 2. 什么时候进行回收? 3. 如何回收? 注:现代收集器基本采用分代收集算法,堆分为:新生代和老年代
2015-08-27 11:29:17
1622
原创 join()之让线程按顺序执行
Thread中的join()主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将在子线程运行结束前结束。如果主线程想等待子线程执行完成后再结束(如,子线程处理一个数据,主线程需要取到这个值),则需要用到join()。作用是:等待线程对象销毁。join()在内部使用wait()方法进行等待,sychronized使用“对象监视器”原理。使所属的线程A正常执行run(),而当前线
2015-08-24 15:01:57
3166
3
原创 从Zero分析Picasso源码
Picasso 是 Square 开源的图片缓存库,主要特点有:包含内存缓存和磁盘缓存两级缓存。在 Adapter 中自动处理 ImageView 的缓存并且取消之前的图片下载任务。方便进行图片转换处理。
2015-08-22 17:58:52
808
原创 Fragment 学习小结
参考 : http://developer.android.com/guide/components/fragments.html一 概述Android 3.0(API level 11)加入,为了使界面更灵活,可复用,动态生成。二 要点:必须嵌入在Activity中,生命周期受Activity影响当在Activity中添加Fragment时,实际是在加入到ViewGroup中。(可直接用)成
2015-08-06 16:37:23
397
原创 浅析layout_weight属性,gravity属性,layout_gravity属性
参考:http://developer.android.com/guide/topics/ui/layout/linear.htmllayout_weight属性 <基于LinearLayout 下的view>布局权重,意味这个view在当前布局中占据多大空间(比重)拥有更大weight值的view被允许扩展填充满parent view.(填满剩余空间)所有view默认weight值为0
2015-07-31 10:35:24
524
原创 android之布局优化
标签(空格分隔): android 性能优化 xml前期知识储备1. LayoutInflate主要是用于加载布局的.其实setContentView()方法的内部也是使用LayoutInflater来加载布局的.只不过这部分源码是internal的,不太容易查看到。LayoutInflater技术广泛应用于需要动态添加View的时候,比如在ScrollView和ListView中,经常都可以看
2015-07-29 16:59:38
478
原创 Activity详解(主要参考官网)
总述活动是应用程序的组件,提供一个让用户可进行交互相关的操作的屏幕。例如,拨打电话,照相,发短信,显示地图。系统分配给每个活动一个窗口,用来绘制它的用户界面。一般窗口会充满屏幕,但也可能比屏幕更小或浮在其它窗口的顶端(用户看到的最外层)。一个应用程序通常包括许多互相松散的绑定一起的activity(藕合度低)。典型地,有一个activity被特殊的作为‘main’activity,代表用户第一次使用
2015-07-23 15:20:03
3679
原创 Windows OS 下我做为开发人员常用的一些软件
由于近期要出远门了,不方便带2个笔记本(本人在校是用2台电脑,dell(win7)和macbook air(mac os))要舍弃常用的dell本本了。并且以后打算少用windows【等win10出来以后在议】。整理了一下常用的工具软件如下:1. Visio - 画UML图2. LICEcap -录制gif 动态图3. Sublime Text - 文本编辑器4.
2015-07-14 21:39:34
559
原创 面试Android开发实习生经历
面试时间是在晚上7点半,QQ聊天进行的。这里我直接说提过的问题吧:1.先自我介绍一下.2.然后根据你的介绍进行提问(如:你说自己喜欢关注移动互联网新闻,他会问你怎么关注移动互联网新闻)。3.那手机app有什么你觉得不错的软件推荐一下吗?4.问你推荐应用的理由。5.开始问java基础了。6.对于StringBuilder和StringBuffer的区别?7.那fina
2015-07-10 19:51:26
5066
原创 如何在ListView中嵌入ViewPager
最近2个月一直忙着做项目,一个是挑战杯的互联网专项赛事,最终获得了国家三等奖。另一个是湖南省程序设计大赛应用开发类。终于忙完了。其中需要在listview中嵌入viewpager。于是网上学习了下。主要在第一个item中加入viewpager。这里贴出适配器的代码package zero.com.nweq.adapter;import android.content.Conte
2015-07-01 18:23:00
680
原创 Scala编写的简单Socket聊天程序
这几天被Scala吸引住了,去图书馆借了本《快学Scala》,发现很funny~,然后无意在youtube上看到一个关于scala的socket编程。于是跟着学习,整理了一下代码,如下:服务器代码:package com.serverimport java.net.{ServerSocket,Socket}import java.io.BufferedInputStreamimpo
2015-05-05 23:43:42
4534
2
原创 分析开源oschina客户端(二)
初步策划:1.src 目录结构:com.hnust.news - 全局设定包括 Application.java AppContext等。启动管理com.hnust.news.adapter - 各容器适配器com.hnust.news.api -API客户端接口,用于访问网络数据Com.hnust.news.common - App工具包Com.hnust.new
2015-04-29 13:29:33
462
原创 分析开源oschina客户端的源码(一)
由于近来要做一个个性化新闻推送的客户端。便来学习学习oschina的设计。目前开源了1.7的版本。一,目录结构和引用的jar:主要来分析目录src的分类:1.前面四项,com.barcode.* 都是关于扫描二维码的代码,是之后集成的。 2.com.weibo.net 里面是关于微博的分享,含有OAuth认证,调用微博分享页面等。3.greendroid.w
2015-04-27 10:25:58
877
1
原创 国内某鹅厂2015实习生招聘笔试知识点
应聘岗位方向:软件开发考试时间:2个小时题型:一、.25道不定向选择题。二、4道问答题。涉及知识点:1.设计模式2.哈希表3.概率论4.TCP/IP协议5.C++ 多态与继承6.信号量-死锁-并发进程7.数据库SQL查询操作8.常见关系型SQL与NoSQL9.二叉树10.大端-小端11.函数安全检测12.Objective-C类型
2015-04-18 16:48:20
718
转载 公共技术点之面向对象六大原则
一、单一职责原则 ( Single Responsibility Principle )1.1 简述单一职责原则的英文名称是Single Responsibility Principle,简称是SRP,简单来说一个类只做一件事。这个设计原则备受争议却又及其重要的原则。只要你想和别人争执、怄气或者是吵架,这个原则是屡试不爽的。因为单一职责的划分界限并不是如马路上的行车道那么清晰,
2015-04-12 17:27:31
483
原创 Mac OS 下配置ADB 环境变量
刚刚在看第一行代码 ,数据库这章要配置adb环境变量,,,没有讲mac下的。于是自己弄了好半天。原来要注意在最末 加上 “/”。最好加上tools 的目录路径。打开终端 输入 vi .bash_profile ;选择 e ;编辑加入:export PATH=${PATH}:$HOME/Library/Android/sdk/tools/:$HOME/Library/
2015-04-09 16:50:09
479
转载 从机器学习谈起
原文链接:泡在网上的日子在本篇文章中,我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。这篇文档也算是 EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。当然,本文也面对一般读者,不会对阅读有相关的前提要求。在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅
2015-03-31 16:16:14
710
原创 依赖注入之Android RoboGuice简单使用
维基百科解释:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的
2015-03-30 09:09:12
528
翻译 认识Volley-网络数据管理
原文:http://developer.android.com/training/volley/index.htmlVolley是一个HTTP库,它能够帮助Android apps更方便的执行网络操作,最重要的是,它更快速高效。Volley 有如下的优点:自动调度网络请求。高并发网络连接。通过标准的HTTP的cache coherence(高速缓存一致性)使得磁盘与内存缓存
2015-03-29 10:43:14
525
1
原创 初涉XML解析
Extensible Markup Language (XML) 是一组将文档编码成机器可读形式的规则,也是一种在网络上共享数据的普遍格式。经常更新内容的网站比如新闻网站和博客上都提供XML feed来记录更新的信息,以便用户进行订阅读取。解析器我们用XMLPullParser ,Android 官网推荐。如果对xml不熟悉可以先看下http://www.w3cschool.cc/xml
2015-03-28 11:07:58
415
原创 利用AsyncTask进行网络操作之下载HTML
一方面巩固下AsyncTasK 的用法,另一方面熟悉下基本的网络操作。那么我们一边实践一边学习吧:网络操作必须记得在manifest.xml 加入:1.联网的方式:Android 中提供了 HTTPClient 和 HttpURLConnection 两种方式 二者均支持HTTPS ,流媒体上传和下载,可配置的超时, IPv6 与连接池(connection po
2015-03-27 19:05:59
1075
1
原创 AsyncTask的基本用法
昨天复习了一下多线程和handler的用法,今天再来分享下AsyncTask的用法,虽然很基础,但是很重要。AsyncTask的介绍,引用一下官网的英文doc:AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and p
2015-03-26 10:10:16
383
原创 Android多线程的简单使用
1.何时使用多线程?(耗时操作,避免主线程阻塞)当我们进行IO操作,如文件操作,网络操作,数据库操作,以及一些复杂运算和开发定时功能,这时就需要用到多线程编程了。2.如何使用?接下来做一个定时功能的小Demo,首先新建一个android project ,写一个主布局文件:main.xml:<LinearLayout xmlns:android="http://schemas
2015-03-25 19:11:17
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人