
学习
smarts
自信 乐观 勇敢 坚持
展开
-
android SparseArray 分析
介绍sparseArray 是安卓系统提供的一种专用于存储 integer To object的数据结构,其内部的存储结构不同于 hashMap,内部使用的是两个数组:内部使用两个数组来分别存储key和value, 在不指定容器大小的情况下,默认大小是 10,存储:key-value 按照key的值顺序分别存储在key 和 value数组中获取:获取数据的时候是使用的二分查找 mKey 数组所以相对hash map优势:(1) 避免hashMap 的 integer 自动装箱过程;(2原创 2021-07-02 09:23:30 · 192 阅读 · 0 评论 -
Flutter Image 缓存剖析
Flutter Image 缓存剖析背景image widget分析背景 图片展示是应用程序中最常见的功能,在androd中有一些很经典的插件来处理图片的展示、图片的缓存,例如著名的ImageLoader,Glide,Frescho,flutter 官方也提供了Image的widget来展示图片,Image内部封装了具体文件如果获取,以及数据怎么缓存;image widget...原创 2020-03-22 22:17:29 · 2360 阅读 · 0 评论 -
ubuntu 12.04 设置远程共享桌面
为了解决Windows远程桌面访问Ubuntu 12.04 之一 中提到的VNC远程桌面的缺点(见http://www.linuxidc.com/Linux/2012-07/64801.htm),我们采用第二种方法XRDP,该方法支持多用户登录并远程桌面。1、首先在Ubuntu 12.04 中安装GNOME桌面:sudo apt-get install gnome-panel转载 2017-03-02 09:58:40 · 2658 阅读 · 1 评论 -
字符编码
随便说说字符集和编码快下班时,爱问问题的小朋友Nico又问了一个问题:"sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。"并不是所有简单的问题都很容易回答,就像这个问题一样。于是我答应专门写一篇BLOG来从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许转载 2017-03-29 14:07:24 · 235 阅读 · 0 评论 -
Android内存优化(使用SparseArray和ArrayMap代替HashMap)
在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。原创 2017-03-16 10:54:28 · 340 阅读 · 0 评论 -
adb log 命令介绍
1.android log系统 2.logcat介绍logcat是android中的一个命令行工具,可以用于得到程序的log信息log类是一个日志类,可以在代码中使用logcat打印出消息常见的日志纪录方法包括:方法描述v(String,String) (vervbose)显示全部信息d转载 2017-11-23 10:50:57 · 1953 阅读 · 0 评论 -
java 虚拟机内存模型
历史: CPU对磁盘的读写速度,远远跟不上 CPU 的计算速度,为了解决这个问题,所以引入了内存; 随着 CPU 的发展,内存的读写速度也跟不上CPU的计算速度,为了解决这个问题,硬件厂商又在每个cpu上增加了高速缓存,所以现在 CPU 和内存的交互就变成:原创 2017-12-18 20:02:38 · 291 阅读 · 0 评论 -
android 应用程序 电量优化
应用程序电量优化:1 允许网络连接批量执行 批量请求数据 2 发起请求前先判断网络的可达性 3 使用缓存数据 减少网络连接的次数 4 使用gzip 缓存数据原创 2018-01-04 10:16:05 · 239 阅读 · 0 评论 -
LRU和LFU的区别
LRU和LFU的区别 转载 2011年10月12日 17:20:20 标签:算法 53144LRU和LFU是不同的!LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!比如,第二种方法的时期T为10分钟,如果每分钟进行转载 2018-03-02 14:36:32 · 269 阅读 · 0 评论 -
一种android 界面卡顿分析方法
android 应用程序是由消息驱动的,分析界面卡顿的问题时往往需要找到耗时的操作,来定位具体产生卡顿的原因,Looper的loop函数就是不断获取消息队列消息的函数,并执行消息体回调.在loope 函数内有两个日志打印代码, // This must be in a local variable, in case a UI event sets the logger ...原创 2018-03-30 11:05:15 · 1476 阅读 · 0 评论 -
图解排序算法之堆排序
https://www.cnblogs.com/chengxiao/p/6129630.html转载 2018-06-06 11:49:38 · 189 阅读 · 0 评论 -
简单分析下glide的实现机制
glide是目前非常流行和受欢迎的图片框架,这个框架从设计架构上看非常弹性,例如对文件格式的支持就是采用了注册的方式, dataLoadProviderRegistry = new DataLoadProviderRegistry(); StreamBitmapDataLoadProvider streamBitmapLoadProvider = ...原创 2018-06-08 16:52:52 · 473 阅读 · 0 评论 -
view.post 和handler发送消息的区别
有个同事问我这个问题,我们往主线程发送一个runnable,有两种方法可以使用,一种是定义一个主线程的handler,通过handler.postRunnable()来执行,一种方法是通过view.post来执行,那么这两种方式有什么区别,具体使用时应该怎么选择。 我们首先要明白的就是两种方式有什么区别,要搞清楚这个问题,就要分析系统究竟是怎么实现的。对于handler.postRunna...原创 2018-06-20 00:15:36 · 832 阅读 · 1 评论 -
android dalvic 虚拟机内存参数
dalvik.vm.heapstartsize 堆分配的初始大小,调整这个值会影响到应用的流畅性和整体ram消耗。这个值越小,系统ram消耗越慢,但是由于初始值较小,一些较大的应用需要扩张这个堆,从而引发gc和堆调整的策略,会应用反应更慢。相反,这个值越大系统ram消耗越快,但是程序更流畅。 dalvik.vm.heapgrowthlimit ...原创 2017-09-19 10:28:29 · 1037 阅读 · 0 评论 -
安卓弹框盖在输入法键盘上解决方法
当输入法键盘显示的时候,弹出全屏弹框,这时默认情况下输入法键盘会消失,弹框会铺满整个屏幕,界面就会闪烁的效果,想让弹框弹出后输入法键盘不消失,输入法键盘盖在键盘上面,解决方法是修改弹框的window属性,Dialog的安卓官方文档有这样一段描述:Note: Activities provide a facility to manage the creation, saving and rest...原创 2019-02-26 14:31:15 · 520 阅读 · 0 评论 -
聊下git merge --squash
你经常会面临着将dev分支或者很多零散的分支merge到一个公共release分支里。但是有一种情况是需要你处理的,就是在你的dev的分支里有很多commit记录。而这些commit是无需在release里体现的。develop 主分支develop主分支最近的一个commit是”fix imageprint bug.”。我们拉出一个分支进行项目开发,里面会有很多commit...转载 2019-02-26 20:23:01 · 369 阅读 · 0 评论 -
android 命令打包
所以久而久之很多人都不会最基础的打包方式,现在就来捋顺关系首先是步骤 ,网上最少有三步,最多有8步,其中一些函数都已经被废弃,所以,笔者选择比较通用的6步1.用aapt命令生成R.java文件2.用javac命令编译java源文件生成class文件3.用dx.bat将class文件转换成classes.dex文件4.用aapt命令生成资源包文件resou转载 2016-08-22 15:54:45 · 647 阅读 · 0 评论 -
数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。简单来说,就是:第一范式:具有原子性第二范式:主键列与非主键列遵循完全函数依赖关系第三范式:非主键列之间没有传递函数依赖关系 在实际开发中最转载 2016-01-14 18:04:38 · 349 阅读 · 0 评论 -
使用MulticastSocket进行手机之间的多播消息发送
DatagramSocket只允许数据报发送给指定的目标地址,而MulticastSocket可以将数据报以广播方式发送到数量不等的多个客户端。若要使用多点广播时,则需要让一个数据报标有一组目标主机地址,当数据报发出后,整个组的所有主机都能收到该数据报。IP多点广播(或多点发送)实现了将单一信息发送到多个接收者的广播,其思想是设置一组特殊网络地址作为多点广播地址,每一个多点广播地址都被看做原创 2014-12-18 19:50:18 · 1973 阅读 · 0 评论 -
activity启动模式分析launchemode
我们在开发项目的过程中,会涉及到该应用中多个Activity组件之间的跳转,或者夹带其它应用的可复用的Activity。例如我们可能希望跳转到原来某个Activity实例,而不是产生大量重复的 Activity。这样就需要我们为 Activity 配置特定的加载模式,而不是使用默认的加载模式。Activity 有四种加载模式[1] standard 模式 这是默原创 2015-04-10 16:53:08 · 554 阅读 · 0 评论 -
判断程序是否处于后台的方法
public static boolean isBackground(Context context) { boolean isBackground = false; ActivityManager activityManager = (ActivityManager) context .getSystemService(Con原创 2015-05-26 10:14:01 · 867 阅读 · 0 评论 -
使用Eclipse中提供的Refactor(重构)工具
重构是对软件内部结构的一种调整,目的是在不改变软件行为的前提下,提高其可理解性,降低其修改成本。开发人员可以使用一系列重构准则,在不改变软件行为的前提下,调整软件的结构。有很多种原因,开发人员应该重构代码,例如之前的开发人员代码写得很烂、自己以前设计时有缺陷、需求变更需要添加一些新的功能或修改原有功能等等。Martin Fowler在其著名的>一书中谈到了为何重构的几点原因:1.转载 2015-11-06 15:32:09 · 359 阅读 · 0 评论 -
关于单例的几点注意事项
单例在实际的项目中个使用频率比较高,比如环境类,工具类,管理器类,都应该设计成单例,即保证项目运行中该类对象只有一个类对象存在;第一种写法:class SingleTon{ private SingleTon() { (1) } public stat原创 2014-12-07 21:54:34 · 705 阅读 · 0 评论 -
android的布局优化
在布局优化中,Androi的官方提到了这三种布局、、,并介绍了这三种布局各有的优势。1、布局重用标签能够重用布局文件,简单的使用如下:[html] view plaincopyprint?LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and转载 2015-10-28 10:34:53 · 322 阅读 · 0 评论 -
Android布局中Layout_weight的属性
本文详细介绍了Android布局中Layout_weight的属性,它是用来分配属于空间的一个属性,你可以设置他的权重。最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够 说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出来和大家分享。首先看一下Layout_weight属性的作用:它是用来转载 2015-10-28 11:04:06 · 558 阅读 · 0 评论 -
排序算法小结
排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。 上面的这张图来自一个PPT。它概括了数据结构中的所有常见的排序算转载 2015-11-16 17:44:19 · 696 阅读 · 1 评论 -
Java继承和多态原理
public class MainClass { public static void main(String[] args) { Fu f = new Zi(); Zi z = new Zi(); System.out.println("f.num:"+f.num); System.out.println("z转载 2015-11-01 21:32:29 · 453 阅读 · 0 评论 -
HTTP返回码总结
http状态码/http返回码详解 HTTP状态码(HTTP Status Code)表示http服务器对与请求HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。 所有状态码的第一个数字代表了响应的五种状态之一: 1xx:请求收到,继续处理 2xx:操作成功收到,转载 2015-11-03 00:55:28 · 769 阅读 · 0 评论 -
HashMap的存储结构
HashMap的存储结构:属于连续存储空间和非连续存储空间结构的组合,数组的每一个元素存储一个hash,HashMap的代码片段: /** * Allocate a table of the given capacity and set the threshold accordingly. * @param newCapacity must be a原创 2015-11-02 15:42:16 · 1259 阅读 · 0 评论 -
android studio 自动生成R文件影响编译的解决方法
1 工程目录不是一个标准的eclipse工程,也不是一个标准的android studio工程,而是由多个文件夹,通过编译脚本在编译时刻拷贝文件夹形成一个完整的工程目录,目的是可以为不同的平台配置不同的功能,问题就是在用android studio看完整的工程代码时,只能通过new—>import project 来完成,默认情况下这样生成的工程会自动生成gen文件夹,并且有R文件生成,这时用命令原创 2016-01-06 20:36:14 · 4766 阅读 · 1 评论 -
Eclipse 安装 html插件
用Eclipse 安装html插件,后可以直接在ECL原创 2014-11-11 15:55:14 · 2446 阅读 · 0 评论