自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rainbowchou的技术日常

记录有用及有趣的东西 [email protected]

  • 博客(39)
  • 收藏
  • 关注

原创 从Java文件到程序运行起来的场景分析

整体流程1.我们写完代码,是以一个xxx.java的文件存储代码的,这就是Java的源代码文件2.2.有了源代码文件还不够,这是面向程序开发者的语言,而不是面向JVM的语言,所以还有一个编译的过程,将xxx.Java → xxx.class,这个class文件就是所谓的字节码文件,是可以供JVM来识别运行的。3.有了class文件,还需要将文件加载到JVM中,这里就使用到了classloa...

2019-08-26 13:05:36 280

翻译 [翻译]为什么选择SpringBoot?

之前在一篇博文里从自己的角度去理解了SpringBoot,看起来有些意犹未尽。最近在英文网站上发现一篇不错的文章,更加详细地说明了SpringBoot,所以转载过来分享下。之前写的文章链接如下:什么是SpringBoot?在这之前,不得不感叹一句,Google是真的

2019-07-09 19:56:11 357

翻译 [翻译]Java隐藏的五个秘密

原文链接如下:原文阅读译文随着编程语言的发展,隐藏的功能开始出现是不可避免的,创始人从未想过的结构(constructs)开始蔓延到普通用途。(,不好翻译,总体意思就是有些功能本来是一种功能,但是在其他用途方面反而发挥作用)其中一些特征逐渐成为人们的习惯,并成为语言中公认的用语,而其他的一些特性则相反,被降级到语言社区的黑暗角落。在本文中,我们将看看大量Java开发人员经常忽略的五个Java...

2019-07-07 19:48:07 280

翻译 [翻译]关于Spring Boot的十个好问题

最近看到一些不错的英文文章,想分享下。于是想翻译下,顺便自己也再看上一遍原文链接如下:SpringBoot文章原文链接译文在这篇文章中,我们将会讨论10个有趣的SpringBoot相关的问题。这些问题有些狡猾,但是都是些非常常见的问题。@SpringBootApplication 注解内部做了什么事情?在SpringBoot的官方文档中介绍说,@SpringBootApplicat...

2019-07-04 14:01:39 145

原创 聊聊SparseArray

首先从字面意思来理解下这个概念:SparseArray = Sparse +Array翻译下就是稀疏数组,也就是说首先它是一个数组,然后它的特性是稀疏接下来说说为什么会有这种结构的存在?我们都知道在Java中(这里只讨论Java),数组都是第一时间定义,然后初始化出来,最后才能使用的,也就是说在我们实际使用之前,数组已经在内存中进行内存分配,并进行值得初始化,这样的话,就有一个问题,我们不...

2019-07-03 21:52:21 124

原创 TCP/IP 主体知识点概述(四)

接上文 讨论非邻近段重传的解决方案也就是说 利用一个比特位来标记选择性确认,为了保证可靠性,tcp会重传确认之后的所有段,但是选择性确认的段不用重传重传定时器的时间讨论这个问题为什么值得讨论呢?原因如下动态重传为什么要进行tcp的流量控制?简单点说就是网络传输与计算机本地进程处理速度不对等流量不进行控制所导致数据丢失窗口关闭 窗口糊涂综合症出现窗口关闭的本质...

2019-06-11 21:47:57 148

原创 TCP/IP 主体知识点概述(三)

接上文TCP的报文段格式:TCP的伪首部这部分可以结合udp的伪首部来看,udp的原理来源于此接下来介绍伪首部 为什么需要尽管说,伪首部这个概念在现在看来某些方面有些过时,但是它确实提供了更好的可靠性保障,起到锦上添花的作用MTU与MSS滑动窗口进一步解释滑动发送窗口滑动接收窗口TCP的超时 重传 重传队列TCP中一个很重要的问题 相邻段的重传如何保证以下这...

2019-06-11 21:15:18 133

原创 TCP/IP 主体知识点概述(二)

接上文TCP滑动窗口的推导:最简单的不可靠协议过程带有定时器和重传的基本可靠协议TCP滑动窗口基本属性:滑动窗口图示:TCP的抽象业务模块:TCP的建立 以及有限状态机相关:TCP的三次握手:网上很多讨论这个东西,其实一点也不玄乎,就是将原本独立发送的syn和ack合并在一条发送以上过程注意与下面的流程区分开来TCP的初始序列号相关问题:以上说明的图...

2019-06-11 17:34:50 190

原创 TCP/IP 主体知识点概述(一)

最近在看一本书 TCP/IP指南相对于 那本经典 TCP/IP详解 卷1 这本书语言比较生动,容易理解。在我看来,就传授知识点这一点上 这本是明显好于 TCP/IP详解 卷1的。TCP/IP详解 卷1更适合于当作工作需要的时候,当成手册来查。我更关注TCP/UDP相关的章节,也针对自己觉得有用的地方进行了截图,一直放在有道云笔记里,发现还不如分享出来,随时可以看看,我的截图任何一张图都可以当作...

2019-06-11 15:25:19 182

原创 什么是Spring Boot?

最近it领域有一个非常火热的框架 —— SpringBoot,那么要如何理解这个框架的内涵呢?这篇文章我想通俗易懂的给朋友们介绍下这一框架,不涉及过多的技术用语。一句话总结说得简单粗暴一点,SpringBoot就是Spring的再封装,并给出很多的默认选项,从而能使项目能够快速开发,快速部署。总的来说就是简化了Spring的开发流程。简化部署?以前的Java EE 开发 部署都比较麻烦...

2019-06-05 18:55:36 235

原创 [即时问题解决]Java关于NoSuchMethod之类错误

很久没有更新Blog了,实属最近一段时间实在太忙了,最近才安稳下来,恰好遇到一个问题,顺手更新一篇最近做开发的时候遇到一个问题:java.lang.NoSuchMethodError这其实确实是比较好处理的问题,我首先想到的就是会不会代码写得有误呢?那应该是不可能的,如果是代码写的有误,应该是在编译期间就报错了,为啥还会来到运行时呢。然后再一想,会不会是反射调用出现了问题呢?我顺着An...

2018-04-18 20:35:45 4654

原创 [即时问题解决]捕获Android Native Crash

Android的Crash 问题分为Java 的Runtime Crash 和使用Jni而导致的Native 代码Crash。Java Runtime Crash是非常容易定位的,使用 : adb logcat > $path在其中就可以很容易地看出Java Crash的问题代码位置。然而,Native Crash 则没有那么容易定位,首先 一般relese版本的动态链接So库都是

2018-01-15 21:50:32 3163

原创 [即时问题解决]Log打印出现字符串截断

今天遇到一个十分诡异的问题情况是这样的:在Android应用开发中,我负责开发的naive模块需要在特定时刻向Java应用层通过JNI透传一个字符串,这个其实就是一个普通的XML文件,特点就是超大,大约有4000多bytes,在后期调试中发现一个问题:通过native代码的日志和Android应用层原生Log API打印的log都出现的截断现象,就是说xml不完整,当时第一个怀疑的原因就是数据截断了

2017-12-12 23:46:41 2091

原创 设计一个有限状态机及其思路

# 前言我之前一直觉得状态机是一个比较难理解的概念。所以遇到相关的问题都会觉得自己理解得不是很透彻,上周一个同事在给我分析问题的时候,无意间就谈到了状态机的流程,在分析问题的时候,没想那么多,感觉很顺畅的感觉,后知后觉发现原来这就是状态机了!我对于状态机原理什么的不懂,只从自己的实践的角度来分析下怎么去设计一个状态机,以及是怎么一个流程。# 有限状态机在说明流程之前,我觉得先说说为什么需要状态机,同

2017-12-02 12:55:20 8740

原创 Java内存区域理解

前言最近的经验告诉我,大家在挑选技术书籍时候一定要慎重,若是买到不适合自己情况,真的是既浪费金钱,更重要的是浪费了时间。宁愿花费几天甚至一周的时间来好好选择自己所需要的书籍,这样做是非常值得的,原因有二:好书值得一读再读,每读一遍都有新的体验,买来总是不会错的不会浪费金钱,也不会浪费时间作为搞技术的,书籍的花费是绝不能吝啬的,网上找的大部分文章包括我这篇,都大概只能解决当前问题,因为我也是为了

2017-10-16 23:30:00 296

原创 Android IP获取解读

前言最近工作没有前段时间那么忙碌了,我翻了翻自己有道云笔记记录的最近一段时间解决的一些工作上的问题,还是蛮多的,所以想着抽几个知识点来梳理成Blog吧。概述IP现在是个很重要的东西,现在只要跟互联网相关的东西基本都是构建在IP网络之上的,IP 数据包几乎可以承载任何数据。在Android平台上,一般发起网络请求,都会使用Http协议,可能使用的库不同,比如会有最基本的 HttpUrlConnecti

2017-10-14 14:34:15 1329 2

原创 Linux共享库概述

Linux共享库概述共享库是一种将库函数打包成一个单元使之能够在运行时被多个进程共享的技术。这种技术能够节省磁盘空间和RAM。在继续阐述共享库之前,先来说说静态库,它是比共享库更早的存在。静态库也称为归档文件,它的作用就是将一组经常被用到的目标文件组织进单个库文件,这样以来,就可以使用它来构建多个可执行程序,并且在构建各个应用程序的时候无需重新编译原来的源代码。从以上的描述中,可以看出,静态库必须和

2017-10-12 22:17:25 2673

原创 Linux线程简述

线程概述与进程(process)类似,线程(thread)是允许应用程序并发执行任务多个任务的一种机制。一个进程中可以包含多个线程。重点是 同一程序中的所有线程都会执行相同程序,它们共享同一份全局内存区域,其中包括了初始化数据段,未初始化数据段,以及堆内存段。可以这么说,传统UNIX进程只是多线程程序的一个特例,在一个进程中只有一个线程。线程的优点在说明线程的优点之前,先说说进程的缺点,毕竟一种新事

2017-10-07 18:16:45 273

原创 Linux进程简述

关于Linux进程相关的几个内容Linux进程的创建 对应于函数:fork()Linux进程的退出,结束 对应于函数:exit() Linux进程的执行 对应于函数:execve()对于进程的创建,系统调用fork()允许一个进程(父进程)创建一个新进程(子进程)。新的进程几乎就等于父进程的翻版,子进程获得了父进程的栈,数据段,堆和执行文本段的拷贝。对于进程的终止,则是使用exit(stat

2017-10-06 03:19:30 311

原创 Linux信号简述

什么是信号?信号在Linux中是发生某种事件的通知机制,它既可以由内核发送给用户进程,也可以又另一用户进程发送给进程。每一个信号都有其唯一的编号以及目的。信号的传递信号传递一般来说都是异步行为,这就意味着信号的中断进程执行的位置是不可预测的。当然,同样也有同步的信号(硬件信号),既然是同步,那么这个信号就可以在某一个时间点是可以预期的重现信号的传递。对于信号的处理信号的默认处理方式一般是:忽略信号

2017-10-06 01:26:42 347

原创 博客近期的写作学习目标

杂谈 好久没有更新blog了,其一是因为工作略忙,其二是因为csdn之前在搞手机验证,感觉非常不爽,索性就不登录csdn了,后来一想我这种菜鸟还是用csdn的好,实用。由于最近的工作已经跟Android系统没有多大的关系,都是业务强相关的东西,但是感觉只是单纯地去学习,看书的话,会非常枯燥,而且效率也不会太高,所以我想给自己定几个学习目标,这几个目标是结合了工作中所遇到的某些问题的疑问 大略上来说,

2017-06-18 21:10:54 638

原创 关于Android源码的获取

Android源码最直接获取的方式无疑就是Android官方提供的方法。具体教程如下:Google官方关于Android获取的方法也可以使用清华的源:Android源码清华源以上是最直接的方式,不过相对会麻烦很多,我今天在网上冲浪的时候,发现一位好心人一直在更新Android源码的压缩包文件,是存储在百度网盘中的,这样的话,获取Android就非常简单了,直接可以获取了。真心感谢这位非常nice的开

2017-04-29 23:04:54 724

原创 TelecomManager与TelephonyManager区别与分析

许久没有写Blog了,其实这段时间的工作,可以写的内容有很多,但是其一是因为工作太忙了没有时间进行整理,其二则是自己懒了,说是没有时间,但是如果想的话,总能找到时间来进行的,不是吗?这次我想讨论的话题是关于Android 5.0之后出现的TelecomManager,以及一直就存在的TelephonyManager,它们之间的联系以及差别。我之前在网上有看到这方面的资料,基本的观点是TelecomM

2017-03-26 22:34:48 6349

原创 Android Parcel对象详解

今天在公司没什么很急的事情,想起这几天一直在用Parcel这个类来做一些工作,但是我对这个类有比较强烈的陌生感,感觉它比较叼,我不是一个仅仅满足于使用的人,尤其是这种仅仅从使用方法上猜不到其实现,让人没有安全感的类,我更是决定将它将它进行比较详细地分析。关于Parcel的使用在分析Parcel之前,首先按照分析流程,介绍下关于Parcel的相关常规使用。首先是关于Parcel的获取:Parcel p

2017-01-09 22:40:17 36177 11

原创 Android源码编译以及调试相关记录

前言新年第一天,这篇文章本来是想放到昨天写的,不过拖延症发作,拖着拖着便第二天了。这几天连续加班解决问题,有时候想,为什么这问题这么多坑,为什么这机器速度那么慢,诸如此类的抱怨,感觉每一天的进度都是慢得不行。不过当问题解决后,突然感觉有一种豁然开朗的感觉,回头看,这些所谓的坑貌似也不过尔尔。我想踩坑,折腾的过程就是成长的过程吧,有抱怨,有痛苦,不过完成之后那种柳暗花明的感觉,让我有了一种成长的感觉(

2017-01-01 12:37:46 1190

原创 Eclipse项目迁移到Android Studio记录

前言这个标题就说明了这篇文章是一个踩坑之旅,相当蛋疼的一周。虽说这一周也不是只做这一件事,全力做的话,差不多两天这样子。我只想说一句话:珍爱生命,远离Eclipse,前提是还是作为一个Android开发者的角度,Eclipse不管从哪方面来说,都是一个优秀的IDE,但是仅就对Android来说,我们拥有更好的选择, 那就是Android Studio。填坑之旅其实我已经不知道如何开始讲起了,碰到的坑

2016-11-26 15:00:33 383

翻译 Android自定义View教程(四)

优化View现在你已经有了一个设计得还算不错的view了,具体来说,会在状态改变之间使用手势和转换进行回应,确保了biew可以运行得很有挥着效率。为了防止UI在重放的时候感觉缓慢,不流畅,你需要确保动画能保证运行在一秒60帧。做少一些,频率不要太频繁为了让你的view提速,要在调用比较频繁的步骤中减少不必要的代码。要从onDraw()开始这一优化,这一步骤将会是最大的性能开销。你应该尽量减少在onD

2016-11-12 13:37:25 493

翻译 Android自定义View教程(三)

创建view的交互性绘制UI只是创建自定义view的一部分。你也需要让你的view对用户的输入做出反馈。对象需要像真实的事物一样作出反应。举个例子,图片不能再某个地方突然就弹出来,因为在真实的世界中,对象不是那么做的。相对地,图片需要从一个地方移动到另一个地方。UI应该能够感知到细微地行为方式,并且模仿出真实世界中的最佳反馈方式。举个例子,当用户快速滑动UI对象的时候,他们在最开始的时候应该感知到有

2016-11-12 13:36:33 339

翻译 Android自定义View教程(二)

自定义绘图自定义View最重要的一部分就是它的外观了。自定义绘图可以使简单的,也可以是复杂的,这取决于你的应用需求。这篇教程将包含一些最常用的操作。覆写 onDraw()绘制自定义View最重要的一步就是覆写onDraw()方法。Ondraw()方法的参数是一个可以用于绘制自身的canvas对象。Canvas定义了很多绘制方法,比如:ext, lines, bitmaps,还有一些其他的显示基类。你

2016-11-12 13:36:01 240

翻译 Android 自定义View教程(一)

创建一个View类一个设计良好的自定义view和其他任何设计良好的类一样。对于一系列的特定功能进行封装,提供简单易用的接口,还需要更有效率地使用CPU与内存。为了成为一个设计良好的类,一个自定义View需要做到以下几点:符合Android的标准使用Android XML Layouts 提供自定义的属性发送可接受的事件在Android多版本具有兼容性Android框架层提供了很多基类以及X

2016-11-12 13:35:14 346

原创 学习资源整理分享

本周我的计划是翻译一下开源项目:Realm 的官方使用文档的,因为我对这个很感兴趣,这个库的使用是面向对象的,使用上感觉很容易理解。但是,在我快看完,准备着手做这个的时候,突然发现这货官方是有中文版的!这就相当尴尬了:Realm官方中文文档计划被打乱了,不想写新文章,那就来分享一下我最近常用的一些学习文档。首先是一个Andorid 源码查看网站:androidxref,这个网站上几乎可以看到所有版本

2016-10-29 19:37:39 815

原创 Toast原理解析

谈到Toast,我想只要是做过Android开发的恐怕没有不知道的吧,毫无疑问,Toast是一个非常方便的组件,能在任何能获取上下文的地方进行弹窗提示,既然是弹窗那么我们就可以知道,Toast应该是Window的一部分了。在这篇文章中,不对Window讲解,默认这部分内容是已知的。我对Toast的理解最先来自 艺术探索 这本书,在了解了其基本原理之后,我觉得自己去摸索下源码来巩固自己的理解,于是有了

2016-10-16 14:08:39 3539 2

原创 Android多线程及Handler机制

—   Android多线程编程是很常用的一种编程方式,使用方式看起来也相对固定,不过其中一些细节我之前由于没有注意到踩了不少坑,遂记录之。线程的优先级Android中的线程优先级是Linux进行设定的,设定范围依据数字,范围位:-20~19,这其中-20为最高优先级,而19则相对地为最低优先级。可能有人会问,线程优先级有什么作用,线程都是用来进行并发处理,有何区别? 其实就是为了保证使那些不太

2016-09-25 10:56:13 612

原创 android开发艺术探索相关问题

主要是记录自己在android开发艺术探索阅读过程中第一遍没有读懂的地方的总结,方便二次阅读总结学习p061页,binder的死亡代理;p112页,binder连接池;p146页,顶级view对点击事件的分发过程;p288页,属性动画的工作原理源码阅读,流程理清楚;

2016-03-26 17:18:45 300

原创 图像的模糊处理原理

最近微信上的那个给红包让看图片的小功能真的是异常火爆啊,我也忍不住去弄了一波,昨晚在看博客的时候发现有大牛发了一个相关的原理解释,我看完之后,赶紧自己记录学习一下。让我们来回顾下微信上的这个小功能的操作:在没点击前,图像是一种模糊状态,然后点击给红包之后,那么就可以看到真正的图片了。从整个过程来看,无疑最主要的就是这个图像的模糊操作了,具体可以使图像模糊的方法很多,这里主要讲讲原理:我们都知道,彩色

2016-01-27 12:21:42 10874

原创 关于c中的for循环边界的设置

关于for循环边界的设置for循环是一个非常常用的循环语句,比如我们有这么一个循环语句: for(int i=0;i<10;i++) {}这是一个很标准的for循环语句,大家一般都是这么写的,不过为什么这么写呢?这其中的缘由都由一个叫做“差一错误”的错误导致的,这个错误也可以这么说,“栏杆错误”。下面我们来举个例子:假如我们有这么一个需求,在100英尺长的边界,每隔10英尺就插一个栏杆,那么我们

2015-12-16 12:47:32 3396

原创 Android Context小总结

想说的不久前看了郭霖老师的关于Context的博客写的非常好,感觉很受用,为了加深自己的理解,记录下这篇博客。关于Context Context直接翻译就是上下文的意思,Android和Java程序一个很大的不同就是你不能随意在你想要的地方new一个对象,因为有上下文的限制,对于上下文我是这么理解的: * 依上下文的字面来说: 就是一个对象或者是组件不能够凭空出现,必须有一个线索,而这个线索

2015-12-01 12:36:06 435

原创 触摸事件类MotionEvent的一些小细节

触摸事件类MotionEvent的一些小细节

2015-11-18 22:58:24 606

原创 Android事件分发,拦截的流程梳理

2.View>ViewGroup这个过程,这个过程称之为Android的事件处理返回 其中ViewGroup的部分可以有多层嵌套,处理方式如上1.2依次进行。

2015-11-17 12:20:57 429

空空如也

空空如也

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

TA关注的人

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