- 博客(34)
- 收藏
- 关注
原创 Hello Kotlin
今天使用了一下kotlin, Google指定的Android官方开发语言。简单记录一下。一、使用Android Studio 配置开发环境我的AS版本是2.2.2,在打开AS之后,只需要在File-Settings-Plugins-Brower Repositories中搜索KOTLIN插件,点击安装,59.3Mb大。安装完成之后,重新启动AS即可。二、使用kotlin和平常一样,新建项目,然后点
2017-08-09 08:19:51
339
转载 ThreadLocal的设计理念与作用
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。1.如何创建ThreadLocal变量 以下代码展示了如何创建一个ThreadLocal变量:private ThreadLocal myThreadLocal = new Threa
2017-07-28 15:36:38
289
转载 浅析HashMap与ConcurrentHashMap的线程安全性
本文要解决的问题:最近无意中发现有很多对Map尤其是HashMap的线程安全性的话题讨论,在我的理解中,对HashMap的理解中也就知道它是线程不安全的,以及HashMap的底层算法采用了链地址法来解决哈希冲突的知识,但是对其线程安全性的认知有限,故写这篇博客的目的就是让和我一样对这块内容不熟悉的小伙伴有一个对HashMap更深的认知。哈希表在数据结构中有一种称为哈希表的数据结构,它实际上是数组的推
2017-07-08 22:49:07
524
原创 在Manifest中注册ContentProvider的写法和含义
最近在做项目时候,使用到了ContentProvider来共享数据,使用ContentProvider时候,必须在Manifest文件中进行注册,类似于这样<provider android:authorities="list" android:enabled=["true" | "false"] android:exported=["tr
2017-06-18 10:43:41
3349
原创 Android向sdCard中写文件
这几天在做项目时候,需要将一些数据存储在sd卡中,之前没实现过,今天参照网上的一些教程实现了一下,很简单的.特此记录一下.写一个小的demo,要实现的功能就是将一个字符串写入到文件中,将这个文件保存到sd卡中,再将这个字符串从sd卡中读取出来.这样就大概了解了外存的读写了. 布局文件很简单 就一个textview,用来显示读取出来的字符串 首先记得添加两条权限,用来创建文件和写入文件在外存中.<
2017-06-12 22:36:03
404
原创 Android在Listview的一个item中设置多个控件
最近在做项目时候,遇见一个需求,听上去还听简答的,Listview中肯定是有很多个item的,如何在每个item中设置多个按钮呢?设置一个的很简答,但是设置两个三个以及多个的呢?肯定是自己重新定义item布局再重写adpter了啦~实现出来的样子是这样的 首先来定义一个接口public interface ListItemClickHelp { void onClick(View it
2017-06-06 16:41:06
1074
原创 Android View的绘制过程
简而言之,Android view的绘制过程包含三个过程: OnMeasure( )OnLayout( )OnDraw( )其中,OnMeasure( )负责确定view本身所占的空间和大小(这里的大小指长和宽)。 OnLayout( )过程确定view在其父view中的具体位置,并且根据具体位置来调整view的最终绘制大小。 OnDraw( )则负责将view在canvas中绘制出来。 如
2017-05-31 22:27:56
396
原创 Kotlin 成了 Android 开发的官方语言
Java 和 C++ 之后,Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持。Kotlin 由 Java 集成开发环境 IntelliJ IDEA 的开发商 JetBrains 开发,2012 年开源,采用 Apache 2.0 许可证,它是一个运行在 Java 虚拟机上的静态类型编程语言。Kotlin 虽然与 Java 的语法不兼容,但设计成可以与
2017-05-18 20:47:25
882
原创 字符串分隔
题目要求:连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理,记录一个特别精妙的算法。import java.util.*;/* * 连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 */public class StringDivide
2017-05-03 21:59:53
215
原创 实现二叉排序树
二叉排序树,即二叉查找树,它具有如下的特点:如果左子树不为空,那么左子树上的所有结点均小于它的根节点的值。如果右子树不为空,那么右子树上的所有结点均大于它的根节点的值。左右子树也分别为二叉排序树。 二叉排序树的代码如下所示:package BiTree;/* * 实现一棵二叉排序树 * 2 *
2017-05-02 20:37:13
196
转载 Android Studio 快捷键(转)
Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) Ctrl+E或者Alt+Shift+C 最近更改的代码 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+Shift+Space 自动补
2017-05-02 15:18:36
216
原创 Android利用代码开启关闭飞行模式
今天做项目时候,需要用到代码来开关Android的飞行模式,其实比较简单啦,哦,在4.2之前. 在Android中设置飞行状态是用BroadCast的,可以通过发送action为”Intent.ACTION_AIRPLANE_MODE_CHANGED”的广播来打开或状态飞行模式. 首先,修改飞行模式需要android.permission.WRITE_SETTINGS权限,请自行添加.对权限就是
2017-04-27 17:28:10
16612
3
原创 找出数组中出现次数最多的数字&找出数组中只出现一次的数字
用map存储,key为数组中的元素,value为元素出现的次数,若数组中的元素都只出现了一次,则map.put(num[i],1),否则,每当检测到map中的key已经包含有数组元素时,将map中与之的value值加1,表示次数+1,最后再在map中找出value最大key,输出。package array;import java.util.*;/* * 找出数组中出现次数最多的数字 * 思路
2017-04-25 20:37:17
1255
原创 求一个数组中的第二大的数字
原理就是设置两个变量,一个用来存储最大元素max,另一个用来存储第二大的元素sec,遍历一次数组,比较的时候,如果数组中的值比比最大元素max大,则将max设置为这个数,将sex设置为max.当数组中的值比max小的时候,要注意将当前值和sec值进行一下比较,取大的存储。就是这么个思路。package array;public class GetMaxItem { public static
2017-04-24 22:47:38
899
原创 用时间复杂度O(1)的算法求栈中的最小元素
总体思想是以空间来换时间,设置两个栈,其中一个栈放元素,一个栈放最小的值,在push时,判断新push进去的元素和原先栈中的元素哪个小,小的才有资格入栈;在pop元素时候,要记得将存放最小值的栈的栈顶元素也pop出来。很简单。栈的实现用链表的实现方式。/* * 用O(1)的时间复杂度求栈中的最小元素 */public class MyStack1 { LinkedStack<Integ
2017-04-24 20:33:58
492
原创 队列的两种实现方式
和栈类似,用数组和链表来实现了了队列 首先是数组实现的;/* * 用数组实现一个队列 * 未处理边界情况 */public class MyQueue<E> { int size; int i=0;//队列头 private Object[] queue; public MyQueue(){ queue=new Object[10];
2017-04-20 22:15:07
358
原创 Java栈的两种实现方式
用数组和链表两种方式来实现了栈 首先来看用数组实现的,比较简单import java.util.Arrays;/* * 用数组来实现一个栈 * 栈:后进先出 * 主要有push pop peek isEmpty * peek 负责获取栈顶元素 在数组的实现中 peek负责获取最新存放在数组中的元素 stack[size-1] * 这样在pop取出元素的时候直接获取peek()的值就好
2017-04-20 22:11:52
1835
原创 实现单链表中的增删查改(2)
今天亲手写了一次单链表的增删查功能,实现了~package link;/* * 实现一个单链表的增删查改 */class Node<E>{ Node<E>next; E data; public Node(E data){this.data=data;} public void display(){ System.out.print(data+"
2017-04-20 22:06:42
218
原创 Android中checkbox实现重置
今天在实现某个小功能时候,涉及到了CheckBox,在一个页面上写了20个复选框了,很多,要写一个重置的按钮,当按下按钮之后可以实现将复选框中的对勾全部去掉,正好,在之前我已经将我的这20个checkbox放入一个list中了。public List<CheckBox>checkboxList=new ArrayList<>();这样在实现全部重置的时候就很好办啦!看以下几行代码:brn_reset
2017-04-18 17:26:15
1744
原创 bash:bison未找到命令
今天在一台新的计算机中编译android源码时候,输入make命令之后,终端提示 bash:bison未找到命令 解决的办法很简单,$ sudo apt-get install bison 即可!
2017-03-23 16:23:13
4297
原创 leetcode题目之两数求和
题目很简单,返回数组中等于目标的两数的下标。用了两种方法去求解。第一种两层循环,时间复杂度O(n^2) 第二种用了hashmap。时间复杂度O(n). question: Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may
2017-03-15 11:04:04
380
原创 归并排序的实现
归并排序是利用递归与分治技术将数据序列划分为越来越小的半子表,再对半字表排序,最后再用递归方法将排好序的半子表合并成为越来越大的有序数列。具体流程可以通过下面一张图来说明。 先将要排序的数列划分为不能再分的子序列,然后一一排序。归并排序的代码如下:package learn_link;public class MergeSortTest { public static void main(
2017-03-14 20:18:30
162
转载 如何单独编译Android源代码中的模块
第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.
2017-03-12 19:54:03
242
原创 冒泡排序和快速排序
冒泡排序是排序算法中最简单的。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。/*冒泡排序*/ /** * 冒泡排序 * 比较相邻的元素。如果第一个比第二个大,就交换他们两个
2017-03-10 11:07:37
210
原创 java实现链表
主要定义了两个类,一个节点类,一个单链表类 先看节点类//节点类 public class Node { protected Node next; //指针域 protected int data;//数据域 public Node( int data) { this. data = data; } //显示此节点 public void di
2017-03-09 21:33:25
188
原创 栈和队列的“转换”
今天在复习数据结构时候,看到栈和队列这一章,有两个很有意思的问题, 1 如何使用两个栈来实现一个队列 2 如何使用两个队列来实现一个栈 思想都比较简单,简而言之就是两边儿来回倒 附两张图即可说明 接下来 记录一下这两个功能的java代码实现 首先是两个栈 实现一个队列package learnstack;import java.util.Stack;/* * 本程序计划使用两个栈来
2017-03-09 16:24:16
228
原创 随手记录一些常用的函数
昨天在做某企业的在线编程题的时候,虽然没做出来,但是其中用到了一些看似十分普通却不一定一下能想起来的方法函数,在此特地记录一下。 涉及到的功能嘛 注释里都有比较清楚的写。 有将一个字符串转换成UTF-8编码 16进制和2进制的相互转换 将一个字符串装进一个整型数组等等 下面挨个总结吧1 将一个字符串bstr装进整型数组num[ ] String bstr="your string"
2017-03-08 21:01:13
208
原创 优化ListView
Listview在Android中非常的重要,也非常的常见,我们在写一些重型的数据显示任务或者要在listview中加载一些图片时候,就应该想到对其进行优化,同样,在Android面试笔试的时候,这个问题也作为一个十分常见的问题出现,我们现在来好好总结一下,从大的方面来说,优化listview主要可以从以下几个方面入手。 *①Item布局,层级越少越好,使用hierarchyview工具查看优化。
2017-03-08 20:34:57
252
原创 对apk进行重新签名
在将应用提交到应用市场时候,应用市场会使用第三方工具为你的应用进行加固,加固之后会要求你将你的应用下载下来重新签名,记录一下重新签名的步骤。将你的应用名称后缀由apk改为zip打开zip格式的应用,将其中的META-INF文件删除再将你的应用后缀名由zip改为apk将你的keystore.jks文件和刚刚修改好的apk放在同一个文件夹下cmd进入这个文件夹在cmd中键入如下命令D:\s
2017-03-02 10:23:33
422
原创 使用mob为Android应用增加短信验证功能
在Android应用进行登录注册的时候,为了确保用户的手机号真实可用,以及忘记密码时候找回方便,现在的应用大都集成了短信验证功能,但是自己和通信运营商对接太过于昂贵和麻烦,于是,mob为我们做了这一点贡献。先贴出地址;[mob官网](http://www.mob.com/)mob可以为我们提供短信验证sdk,我们只要集成他的sdk即可。首先,我们需要去注册认证,用邮箱注册就可以,之后,点击进入后台
2017-03-01 10:37:19
425
原创 Android使用百度地图SDK实现定位功能
百度地图的sdk在地图和定位方面是非常有用的开发工具。我们应该学会如何使用它,最近的小项目中使用到了定位功能,于是自然想到了使用百度地图sdk。接下来讲一下怎么使用它的定位sdk实现简单的定位功能。 首先你需要登录百度账号,注册成为开发者。链接如下: http://lbsyun.baidu.com/ 然后,我们选择Android定位SDK http://lbsyun.baidu.com/in
2017-02-23 22:34:31
1177
原创 Android中使用MD5对密码进行加密
Android中使用MD5对密码进行加密最近在做一个小小的项目,其中用到了登录和注册,登录注册的demo网上很多,这里就不详细描述,在注册新用户和登录时候,Android设备都要向服务器发送密码,为了用户的安全,密码一定不能明文发送,所以这里采用了MD5对密码进行加密,比较简单,直接看代码。在工程目录下先创建一个MD5类可以直接复制以下代码//此处导入你的包名import java.security
2017-02-22 09:23:26
4993
原创 TaintDroid编译完成后在模拟器上运行
TaintDroid是安卓环境中一种动态污点追踪系统,简单来说,TaintDroid可以实现当有隐私数据泄露或者外流时候,系统向用户发出通知信息。最近我一直在研究TaintDroid运行出来是什么东东,具体的编译过程以后再讲,总之有很多坑,网上也有很多教程,在我编译了近两个小时 之后,终于编译完成,当你编译完成TaintDroid之后,你会生成一个system.img文件。这个文件的路
2017-02-21 17:00:46
451
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人