自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

聚精会神搞建设

一心一意谋发展

  • 博客(37)
  • 资源 (6)
  • 收藏
  • 关注

原创 【动态规划】求最大连续bit数

功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1    输入: 一个byte型的数字    输出: 无     返回: 对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数输入例子:3输出例子:

2016-03-29 21:03:40 1253

原创 【动态规划】字符串最小编辑距离Java实现

问题:给定一个源串和目标串,能够对源串进行如下操作:在给定位置上插入一个字符替换任意字符删除任意字符要求写一个程序,返回最少的操作数,使得对源串进行这些操作后等于目标串。源串和目标串的长度都小于2000。 关于编辑距离编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次

2016-03-23 21:06:08 4577

原创 Java中Integer的valueOf方法,-128到127的整数将被缓存

Java中int和Integer使用==比较将Integer拆箱成int后比较大小(jdk版本不小于1.5)Integer和Integer之间==比较,是对象之间的比较,看两个引用是否指向同一个内存地址但是一个字节的整数-128到127之间的整数将被缓存至IntegerCache所有一个字节大小的Integer都存储于IntegerCache中,new创建的除外pu

2016-03-23 10:17:10 4807 1

原创 EventBus源码解读详细注释(6)从事件发布到事件处理,究竟发生了什么!

EventBus内部存储了事件到此事件所有订阅者的map,因此post事件的时候,可以找到订阅了此事件的所有订阅者,然后根据订阅者对此事件的线程模型,在对应的线程里边,通过反射调用事件处理函数。先看EventBus里边两个重要的map/*下边的两个map的数据都是各个线程都可以访问的,因此访问的时候要对这两个map加锁*//*事件到订阅者列表的map,key是事件,也就是消息处理方法

2016-03-21 20:45:18 772

原创 EventBus源码解读详细注释(5)事件消息继承性分析 eventInheritance含义

如果post(A),A extends B implements C,D implements C那么onEvent(A)、onEvent(B)、onEvent(C)、onEvent(D)四个事件处理方法那些能得到调用呢答案是onEvent(A)、onEvent(B)、onEvent(C)这三个先用简单的实验验证,然后源码分析写一个简单的Activity测试public c

2016-03-21 15:52:37 1995 1

原创 EventBus源码解读详细注释(4)register时刷新的两个map

EventBus中有两个重要的map,一个是事件到订阅者列表的map,另一个是订阅者到事件列表的map,每次register的时候都要动态刷新这两个map的数据。正是因为有了这两个map,EventBus在post事件的时候才可以根据事件类型找到所有订阅了此事件的订阅者,然后使用反射调用订阅者的事件处理方法。先看看EventBus中这两个map是如何定义的/*事件到订阅者列表的map,

2016-03-20 21:09:10 1057

原创 EventBus源码解读详细注释(3)PostThread、MainThread、BackgroundThread、Async四种线程模式的区别

PostThread:直接在发布者线程里边调用事件处理方法MainThread:如果发布者线程是主线程,那么直接在发布者线程(主线程)里边调用事件处理方法;如果发布者线程不是主线程,就把此事件送到主线程消息循环处理队列,在主线程中调用事件处理BackgroundThread:如果发布者线程是主线程,那么把此事件发送到一个专门处理后台线程的消息循环处理队列,该队列管理多个后台线程;如

2016-03-20 11:31:40 4605

原创 EventBus源码解读详细注释(2)MainThread线程模型分析

EventBus的线程模型为何要定义事件模型?因为在Android的中线程的使用有以下的限制:1 主线程不能被阻塞,UI的更新位于主线程,耗时操作如网络处理在后台线程 2 事件的发送和处理可能会位于不同线程通过使用EvenBus的线程模型,我们可以定义处理事件的线程类型。EventBus中有四种线程模型:PostThread,MainThread,Backgroun

2016-03-20 00:25:09 1679

原创 EventBus源码解读详细注释(1)register的幕后黑手

register(this)就是去当前类,遍历所有的方法,按照事件处理方法的命名规则约束(onEvent开头,只有一个参数,非static,非abstract的public方法)过滤出事件处理方法然后进行存储。然后循环遍历当前类的父类,做同样的处理。通过阅读源代码发现如果子类没有覆写父类的事件处理方法,那么父类的事件处理方法将会加入事件处理方法列表。 private synchronize

2016-03-17 16:32:50 1154

原创 Android自定义控件模仿iOS滑块SwitchButton

SwitchButton可以点击的时候切换状态,类似CheckBox在拖动的时候,也可以根据拖动的距离判断是否切换状态,类似ToggleButton因此要区别出单击事件和拖动事件实现效果如图所示:自定义的SwitchButton如下:public class SwitchButton extends View implements View.OnTouchListene

2016-03-15 21:56:39 1466

原创 Android开发Style的使用,控件共同属性的抽取

Android开发中可以使用Style来为大量相同的控件设置相同的属性,减少代码的重复如图所示,两排6个控件具有很多相同的属性,如果不适用Style统一管理相同的属性,布局写起来麻烦,修改起来更麻烦先在styles.xml中添加共有的属性stylestyle name="hisCardTable"> item name="android:textColor">@co

2016-03-15 21:35:05 4062

原创 【组合控件】android自定义控件之带文字的ImageView

android自带的ImageView控件是不能添加文字的,如果出现大量ImageView和TextView同时出现的布局,可以组合定义一个控件,将ImageView和TextView组合成一个控件如下图所示:public class ImageButtonWithText extends LinearLayout { public ImageView imageV

2016-03-15 21:28:17 7768 2

原创 Android计算两个时间戳的差值,以字符串的形式表示

好比新闻系统,会有发布时间的标示,如果发布时间显示的是几天前发布,几个小时前发布,给用户的体验可能会更好因此需要将两个时间戳的差值转换为字符串/** * Created by wangshihui on 2015/10/26. * 暂时只提供计算两个时间的差值 */public class TimeUtils { /* *计算time2减去time1的差

2016-03-15 20:28:50 9163

原创 Android中dp和px转换的工具类【工具类静态方法注意防止内存泄露】

工具类静态方法一定注意context,防止内存泄露/** * Created by wangshihui on 2015/11/25. * 像素之间的转换 */public class DpPxUtils {// public static int dip2px(Context context, float dpValue) {// final float

2016-03-15 17:02:15 697

原创 Android客户端apk自动检测更新自动下载自动安装的实现方法

改进了一个可以检测版本更新自动下载自动安装的客户端升级方案。在下载之前删除之前的历史下载文件,减少垃圾数据。先给出核心类public class DownloadService extends Service { private DownloadManager mDownloadManager; private long enqueue; private B

2016-03-14 22:03:39 9428 1

原创 Android递归删除文件夹下所有文件

在做App客户端apk安装包自动更新自动下载的时候,如果每次检测到有更新并自动下载,但是用户在下载完成后并不安装新包,这样多次检测后会下载多个安装包,造成垃圾数据。因此需要在下载前删除之前的下载数据。需要一个删除某一文件夹下所有文件的方法。/** * 递归删除文件和文件夹 * @param file 要删除的根目录 */public void RecursionDeleteF

2016-03-14 21:47:01 7492 1

原创 Android静态工具类ToastUtil因为传入content不当导致Activity内存泄露

实现了一个防止内容重复弹出的Toast工具类,防止内容重复弹出,并且新的Toast会立刻覆盖旧的Toast,不会排队等待就Toast显示结束才显示public class ToastUtil { private static String oldMsg; protected static Toast toast = null; private static lo

2016-03-14 15:33:46 5399

原创 Android融云使用不当产生的内存泄露和BUG(匿名类回调导致Activity内存泄露)

先看看代码,然后讨论代码中出现的问题 /** * IMKit SDK调用第二步,建立与服务器的连接 */ RongIM.connect(token, new RongIMClient.ConnectCallback() { /** * Token

2016-03-14 15:09:18 1637

原创 Android二维码ZXing扫描区域大小的调整,提高扫描速度

Zxing本身默认的扫图区域最大只有 360*480    需要拉开很远的距离才能将整个二维码扫描到因此需要我们自己调整取图大小在CameraManager.java这个类中进行调整默认的大小是 以下这4个参数 // private static final int MIN_FRAME_WIDTH = 240;// private static final int MIN_F

2016-03-14 10:14:40 12131 4

转载 ImageView通过matrix实现手势缩放,放大,缩小 ,移动

转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/1023/1579.html测试有效关于ImageView的手势缩放,有很多种方法,绝大多数开源自定义缩放都是修改了ondraw函数来实现的。但是ImageView本身有scaleType属性,通过设置android:scaleType="matrix" 可

2016-03-12 22:53:37 2806

原创 Android获取App的版本名称和版本号

自动更新需要比较版本名称决定是否更新。比较现有App的版本名称和服务器返回的最新的版本名称/** * @param context * @return * 获取版本名称,一个浮点数版本名称,给人看的 */public String getVersionName(Context context) { return getPackageInfo(context).ver

2016-03-12 15:28:00 1678

原创 Android动态设置布局,为LinearLayout动态添加子控件

View view = getActivity().getLayoutInflater().inflate(R.layout.category_select_popupwindow_right, null); LinearLayout linearLayoutContainer=(LinearLayout)view.findViewById(R.id.linear_layout_c

2016-03-10 23:05:10 9603

原创 Android中通过Tag为View保存数据绑定数据

项目中有时候需要为View绑定数据,比如每一个云标签都对应服务器一个标签id,View中setTag可以方便的为控件绑定数据。为控件绑定数据:selectCategory.setTag(R.id.tag_id, id);selectCategory.setTag(R.id.tag_type, type);读取控件绑定的数据:Object object=selectCa

2016-03-10 22:55:16 1859

原创 通过Gson将服务器返回的JSON对象转换为POJO类

先使用postman获取接口返回的response,然后使用插件将response转换为bean类文件。然后就可以通过Gson转换了。Gson gson = new Gson();mBean = gson.fromJson(response.toString(), QueryAllHelpBean.class);其中转换插件有个小问题,比如价格是float,但是接口返回

2016-03-10 22:38:47 1839

原创 Fragment回调了onResume方法却并没有进去前台可见

Fragment回调了onResume方法却并没有进去前台可见,所以不能仅仅依靠onResume判断是不是fragment是否可见fragment有个方法专门判断fragment是否可见/** * @return The current value of the user-visible hint on this fragment. * @see #setUserVisibleHi

2016-03-10 22:28:44 2431 1

原创 使用EventBus解耦,简化组件通信

使用了EventBus后不同界面不同组件之间的信息交换将会变得非常容易,使用起来也非常简单,暂时没有发现什么副作用注意这里使用的是greenrobot的EventBus,包名为de.greenrobot.event使用方法:第一步;注册与解注册:@Overridepublic void onStart() { DebugLog.v("onStart()")

2016-03-10 21:43:12 1081

原创 Android中界面切换时卡顿点击无效的另类原因

项目中出现一个用户体验很差的地方,就是点击一个ImageView跳转到另一个Activity,发现经常需要点击多次才能跳转成功。开始以为是常规的性能优化问题,后来发现是可点击范围太小了,如果点击做不到快准狠,很难产生有效的点击。记录在此,防止以后犯同样的错误。原来的布局:ImageView android:id="@+id/iv_people" android:layo

2016-03-10 21:20:05 2791

原创 获取VolleyError的详细信息,方便和服务器后台定位错误

项目中有时候一个网络请求出现问题,只知道是服务器错误,不知道具体出错原因和出错位置,使后台开发人员工作量增大,开发效率变低。给出一个可以获取网络请求失败具体出错原因和出错位置的方法因为网络出错的原因很多,偶尔会出现空指针引起的闪退,因此捕获这个空指针,防止闪退,也不影响逻辑,因为这只是实现方便查看服务器出错信息的功能new Response.ErrorListener() {

2016-03-10 20:52:54 3109

原创 Android检测手机是否有网络连接可用

应用中有个需求,就是需要每个Volley请求失败的时候,判断是服务器的500错误还是手机网络连接出现问题。服务器错误可以通过VolleyError判断。给出一个检测检测手机是否有Internet访问数据连接的方法public class CheckNewWorkConnection { static public boolean isNetworkConnected(Conte

2016-03-10 20:37:57 986

原创 Activity之间传递Bitmap,将Bitmap转换为Byte数组后传递

Activity之间传递数据的大小是有限制的,Bitmap又往往比较大,如果直接传递Bitmap的话总是会出现各种问题,因此需要将Bitmap转换为Byte数组后再传递转换后发送:ByteArrayOutputStream baos=new ByteArrayOutputStream();  bitmap.compress(Bitmap.CompressFormat.PNG

2016-03-08 16:01:00 6212

原创 解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题

Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果这篇文章写的不错,但是按照这篇文章使用二维码的话会出现竖屏扫描图像拉伸变长的问题(有一个地方计算错误),解决拉伸变长的问题后又会出现闪退的问题(传输大Bitmap对象导致闪退,改为Byte数组或者不传递Bitmap)其他地方不动,即可完美移植二维码扫描功能改动一:CameraConfig

2016-03-08 15:52:25 6963 8

原创 Android自定义对话框,背景颜色透明

弹出对话框的代码: final Dialog dialog = new Dialog(this,R.style.TransparentDialog2); dialog.setCancelable(true); //设置Dialog没有标题,这个一定要在设置内容之前定义 dialog.reque

2016-03-08 10:21:47 3536

原创 Android使用Volley上传文件

一个项目中用到的使用Volley上传头像文件的例子/** * Created by wangshihui on 2015/11/30. * 上传文件 * url:..... method:post 参数:file 接口给的参数:file 就是表单的key,传给mFilePartName; 这是个测试类,测试上传头像没有问题,适合只上传单个文件的场景

2016-03-03 20:26:04 4985 1

原创 Android文件操作(SD卡、缓存)工具类

getCacheDir()方法用于获取/data/data//cache目录getFilesDir()方法用于获取/data/data//files目录应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾

2016-03-01 16:44:21 2594

原创 Android产生圆角图片Bitmap

圆角图片很常用,也比较美观,可以将服务器获取的图片以圆角的形式作为背景如下图所示的圆角背景图片:首先输入一个Bitmap,然后经过处理输出一个圆角Bitmap/*第二个、第三个参数是px,使用时看看是不是需要转换成dp*/public static Bitmap getRoundCorner(Bitmap bitmap, int pixelsX,int pixel

2016-03-01 16:34:41 1523

原创 ListView通过OnScrollListener判断第一项数据或最后一项数据处于可视状态

下拉刷新和上拉加载更多的前提是能够判断当前显示的数据在数据源中的位置,第一个数据和最后一个数据是否处于可视状态

2016-03-01 16:10:05 1023

原创 ListView中同时包含多种布局

比如有一个聊天类的ListView,要求我的消息和别人的消息分开,用ListView实现,可以为我的消息和别人的消息设置布局文件

2016-03-01 15:44:50 768

值得学习的MySQL行级锁、表级锁、页级锁详细介绍

值得学习的MySQL行级锁、表级锁、页级锁详细介绍

2019-03-13

为什么说B+树比B树更适合做文件索引

为什么说B+树比B树更适合做文件索引

2019-03-13

「Redis」Redis是单线程的,但Redis为什么这么快?

「Redis」Redis是单线程的,但Redis为什么这么快?

2019-03-13

如何成功运行Apache Mahout的Taste Webapp-Mahout推荐教程-Maven3.0.5-JDK1.6-Mahout0.5

教你成功运行mahout的taste webapp例子,网上的很多资料说的不清楚,或者版本冲突。正确的版本是jdk1.6 maven3.0.5 mahout0.5 。 摸索良久,亲测有效!

2016-11-23

安卓二维码生成与扫描完美解决方案

Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果 这篇文章写的不错,但是按照这篇文章使用二维码的话会出现竖屏扫描图像拉伸变长的问题(有一个地方计算错误),解决拉伸变长的问题后又会出现闪退的问题(传输大Bitmap对象导致闪退,改为Byte数组或者不传递Bitmap) 其他地方不动,即可完美移植二维码扫描功能

2016-03-08

10小时学会c语言,初学者入门必看。高效学习。

十小时学会c语言,初学者必看的入门读物Word文档

2011-04-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除