自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

聚精会神搞建设

一心一意谋发展

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

原创 jdk源码分析之CopyOnWriteArrayList

CopyOnWriteArrayList的原理CopyOnWriteArrayList的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的数组,在新的数组上面修改,然后将新数组赋值给旧数组的引用,并通过volatile 保证其可见性,通过Lock保证并发写。底层数据结构private volatile transient Object[] array;final O

2016-05-25 14:53:09 705

原创 jdk源码分析之HashMap

HashMap的底层数据结构HashMap底层采用数组加链表的数据结构存储键值对 Hash根据key的哈希值转化为数组的下标将键值对存入数组中,数组的元素是一个链表,冲突的key放置在数组的同一个位置,使用链表将冲突的数据链接起来 数组的底层结构如下: /** * An empty table instance to share when the table is not in

2016-05-25 14:02:25 608

原创 jdk源码分析之ArrayList

ArrayList关键属性分析ArrayList采用Object数组来存储数据 /** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffe

2016-05-24 13:52:55 911

原创 jdk源码分析之LinkedList

LinkedList关键属性size表示当前链表保存了多少数据,first指针指向链表第一个数据,last指针指向链表最后一个数据 transient int size = 0; /** * Pointer to first node. * Invariant: (first == null && last == null) || *

2016-05-23 15:06:34 865

原创 Android开发获取相机拍照的原图(并非缩略图)

Android开发拍照上传是个很常见的功能,通过如下代码可以激活相机进行拍照: Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, PHOTO_REQUEST_CAREMA);通过下边的代码获取相机返回的照片数据: @Overri

2016-05-21 14:40:10 4548 1

原创 Android开发AsyncTask源码分析【模板方法模式】

模板方法定义了一个算法的框架,将框架中一些步骤延迟到子类中实现,使子类可以不修改一个算法的框架结构就可以重定义框架的某些步骤。模板方法实际上市封装一个固定的流程,流程的步骤在抽象类中已经定义好了,子类可以有不同的算法实现,这样就可以在框架流程不修改的情况下实现某下算法的替换AsyncTask的模板方法使用AsyncTask,只要构造AsyncTask对象,然后调用execute方法即可。

2016-05-19 21:07:53 470

原创 Android开发Message源码分析【享元模式|对象池】

享元模式是对象池的一种实现,尽可能减少内存的使用,使用缓存来共享可用的对象,避免创建过多的对象。Android中Message使用的设计模式就是享元模式,获取Message通过obtain方法从对象池获取,Message使用结束通过recycle将Message归还给对象池,达到循环利用对象,避免重复创建的目的

2016-05-19 14:54:21 1378 2

原创 Android开发Handler源码分析

Android中UI控件的访问是线程不安全的,加锁同步访问会影响性能,因此设置只能一个线程更新UI,就是主线程,或者说是UI线程。在UI线程中不能进行耗时的操作,耗时操作需要开启一个新的工作线程,工作线程不能更新UI,因此工作线程通过Handler通知UI线程更新UI

2016-05-19 12:48:17 438

原创 Android开发自定义控件实现一个折线图

实现一个如下图所示的折线图首先是控件绘图区域的划分,控件左边取一小部分(控件总宽度的八分之一)绘制表头,右边剩余的部分绘制表格确定表格的行列数,首先绘制一个三行八列的网格,设置好行列的坐标后开始绘制/*绘制三条横线*/canvas.drawLine(textWide, mLineYs[0], totalWidth, mLineYs[0], mPaintLine);

2016-05-18 17:15:39 5010 1

原创 AndroidStudio导入新项目一直卡在Building gradle project info的解决解决方案

尝试了各种办法,翻墙,离线gradle等,发现一个更好用更简单的办法:解决方案:1.随便找一个你能运行的as项目2.打开gradle-wrapper.properties,文件目录:项目/gradle/wrapper/gradle-wrapper.properties3.复制distributionUrl这一整行的内容,eg: distributio

2016-05-18 16:24:03 3131 1

原创 Android开发自定义控件实现一个圆形进度条【带数值和动画】

实现一个如下图所示的自定义控件,可以直观地展示某个球队在某个赛季的积分数和胜场、负场、平局数首先对画布进行区域划分,整个控件分上下两部分上边是个大的圆环,圆环中间两行文字,没什么难度,选好圆心坐标和半径后直接绘制即可,绘制文字也是如此。下部分是三个小的圆弧进度条,弧的末端绘制一个小的实心圆首先选好坐标和半径,然后先绘制三个圆环作为弧形进度条的背景之后从12点钟开始绘制进

2016-05-16 21:34:29 3595 2

原创 Android开发自定义控件实现一个球赛胜负数统计条

效果如下图所示,展示两个球队交战胜负信息首先此控件在水平方向均分为5份,第一份和第五份留白不绘制内容第二三四份分别绘制3列数据垂直方向分为N份,N和输入数据的最大值有关垂直方向下边百分之二十的空间显示文本,上边百分之八十的空间显示指定数量的横线,横线上方显示横线的数量因为垂直方向做了N等分,因此垂直方向相当于有了一个刻度,经过计算每条横线绘制在属于自己的刻度处即可‘

2016-05-12 16:04:27 921

原创 Android开发自定义控件实现一个足球积分榜RankBar

为了实现一个如下图红色方框所示的控件,系统自带控件并不能满足要求,因此需要继承View重新画一个这样的控件分析此控件发现分为3部分,中间的一列横线和左右两个标签中间的部分好绘制,通过循环调用canvas的drawLine方法即可然后分析左右两边的两个标签,因为左右两个是一样的,因此只分析左边的外围形状是一个圆环被拉出来了一个三角形,这个三角形是等边三角形,等边三角形的上边顶点设

2016-05-11 11:02:38 2181 1

原创 Android自定义控件之实现一个球赛比分条

效果图如下所示:该控件需要输入两个参数,左边的得分数和右边的的分数然后根据两边的得分的比例绘制中间的比分条首先将控件的宽度平均分配为10分,第一份和最后一份分别绘制左边的比分数字和右边的比分数字中间的8分宽度绘制比分条根据左右两个比分所占的比例,绘制两个两条首位相连的线段即可完整代码如下:public class CustomScoreBar extends V

2016-05-09 22:38:40 3104

原创 Android自定义控件实现一个带文本与数字的圆形进度条

实现的效果图如下所示:第一步:绘制下方有缺口的空心圆,称为外围大弧吧anvas.clipRect(0, 0, mWidth, mHeight / 2 + radius - textHeight * 3 / 4);第二步:计算绘制圆弧进度条时的起始角度,设置为外围大弧的左端点为进度值得起点,扫过的角度所占外围大弧的百分比就是进度值第三步:绘制数字、文字、百分号第四

2016-05-09 22:02:41 3603 1

原创 Android开发自定义控件实现一个饼状图

实现一个如图所示的控件,包括两部分,左边的饼状图和中间的两个小方块,及右边的两行文字实现起来比较简单,只是一些绘图API的调用核心代码在onDraw函数里边,,对静态控件进行绘制即可@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas); /*饼状图的x坐标*/ fl

2016-05-09 17:17:12 3401

原创 封装Volley使Volley的每个请求都自动保存和发送Cookie

思路很简单,每次请求获取到服务器返回的response就解析头部获取cookie并保存,发送请求的时候就从本地读取cookie添加到头部发送给服务器第一步,解析http response头部的cookie并保存,自定义一个Request并重写其parseNetworkResponse方法/** * 解析数据,保存Cookie * @param response * @return

2016-05-09 09:15:53 1581

原创 Android开发中利用imeOptions属性将键盘回车键改成搜索等功能键【提高用户输入体验】

Android中键盘输入是用户输入交互的最常用最直接的手段,关于键盘输入,有几点可以提高用户使用体验。第一:弹出键盘整体页面上移,使键盘不遮挡控件,需要在AndroidManifest设置对应Activity的windowSoftInputMode属性stateVisible    设置为这个属性,可以将软键盘召唤出来,即使在界面上没有输入框的情况下也可以强制召唤出来

2016-05-09 08:26:09 4856 1

原创 Android开发调用第三方邮件应用发送邮件

重构一个项目,发现发送邮件的功能是自己实现的,使用java的一个类库在app内部集成了发送邮件的功能。这样实现问题比较多,该类库并非针对android设计,用在android上有很多稳定,性能低下,并且不稳定。在一个app内部实现一个发送邮件的功能感觉是跟鸡肋的,要自己处理邮件通信协议,还要处理富文本编辑、发送附件等问题。其实调用第三方或者系统自带邮件功能发送邮件是比较好的解决办法,也

2016-05-06 16:38:32 4476

原创 RecyclerView.addFocusables出现空指针异常NullPointerException的解决办法

如果使用的RecyclerView是API22版本,或者更低版本,如果RecycleView没有设置LayoutManager,那么RecycleView将会包空指针异常,异常信息只会显示java.lang.NullPointerExceptionat android.support.v7.widget.RecyclerView.addFocusables这时候会出现一头雾水,原因就是

2016-05-04 16:34:17 2675

原创 Android 自定义一个轮播图

有限空间内展示更多的内容,轮播图是个不错的选择,本文将实现一个轮播图SlideShowView,效果如下图所示:因为轮播图的每一个页面都有文字和图片,为了整合图片和文字,SlideShowView选择继承Fraementpublic class SlideShowView extends FrameLayout轮播图的主要属性如下:/*存储图片链接*/priv

2016-05-03 10:26:52 926

原创 用getChildFragmentManager解决Fragment嵌套Fragment数据丢失的问题

如下图所示的布局,外边的红色大框是个fragment,中间的小框是个viewpager,里边包含了若干的fragment。再次进入外边这个frament的时候,会出现中间viewpager中fragment数据丢失的问题,整个显示是一个空白,textview的内容全部不见了。在Fragment里面嵌套Fragment 的话,不要用getActivity().getSupport

2016-05-03 09:46:14 3546

值得学习的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关注的人

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