自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BridgeGeorge

一只蹒跚学步的蜗牛,关注科技,热爱技术,在通往未来的道路上埋头前行。...

原创 理解声音

声音的本质 声音是一种压力波,当演奏乐器,拍打一扇门或者敲击桌面时,振动都会引起空气有节奏的振动,使周围的空气产生疏密变化,形成疏密相间的纵波,由此就产生了声波,这种现象会一直延续到振动消失为止。 声波三要素 声波的三要素是频率,振幅和波形,频率代表音阶的高低,振幅代表响度,波形代表音色。 频率 ...

2019-12-31 18:53:38 258 0

原创 设计模式——工厂方法模式和抽象工厂模式

工厂方法模式和抽象工厂模式 工厂方法模式(Factory Method) 工厂方法模式是创建型设计模式之一。工厂方法模式是一种结构简单的设计模式。 定义 定义一个用于创建对象的接口,让子类决定实例化哪个类。 使用场景 在任何需要生成复杂对象的地方,都可以使用工厂模式。 UML 图 代码演示 抽...

2019-07-30 11:33:12 57 0

原创 Android跨进程传输超大bitmap的实现

需求背景 项目中有个需求是这样的,在主进程Activity 中选择或者编辑一张背景图产生一个bitmap 对象,要传递给 B进程(推流进程)作为推流引擎的背景图,这个bitmap 有可能比较大,因为要尽量保证清晰度,所以这个bitmap还有可能比较大,所以必然会涉及到跨进程传输大型bitmap 的...

2019-07-29 21:29:13 2176 7

原创 自定义View-- 绘制一个表盘

自定义View-- 绘制一个表盘 看到一加OS 上的表盘不错,所以仿写一个同时复习一下自定义View的内容。 分析表盘结构 一个圆形白色表盘,12个刻度点,3个指针,一个中心点,一个当前时间指示点。 采用何种绘制方案 很简单,直接覆写onDraw 方法 ,在canvas 上绘制内容即可,都是最基...

2019-07-27 19:00:41 121 0

原创 深入理解 Android 组件的 exported 属性

Activity的exported属性在单个App可能用得比较少,但对于对外接口的Activity或公司内部多个应用间接口调用的设计会有比较大的影响。本文基于android 6.0.1的源码谈谈Activity的exported属性,内容分为2部分: 来自官方文档的描述 下面来详细的了解一下四大组...

2019-07-10 21:06:48 6323 1

翻译 深入RecyclerView(一)

原文链接:https://developer.android.com/guide/topics/ui/layout/recyclerview 用RecyclerView来创建列表视图 如果你的应用需要显示一个滚动的列表视图,并且这个列表包含了大量数据(或一些频繁更改的数据,则可以按照本篇文章的...

2018-06-11 18:06:36 826 0

翻译 Android性能优化——合理进行内存管理

原文链接 https://developer.android.com/topic/performance/memory-overview https://developer.android.com/topic/performance/memory 内存管理概述 Android运行时(...

2018-06-01 20:44:47 1251 0

翻译 Android 性能优化——通过线程提高性能

通过线程提高性能 在Android开发中学会熟练使用线程可以帮助你提高应用程序的性能。本文将从以下几个方面讨论了线程使用:使用UI或主线程;应用程序生命周期与线程优先级之间的关系;Android平台提供的帮助你管理线程复杂性的方法。每个部分都向你描述了潜在的陷阱和避免它们的策略。 主线程 ...

2018-06-01 20:39:27 1405 0

原创 Ubuntu 14.04编译Android 2.3.7源代码记录

编译环境 机型 MacBook Pro 2015款 8G+256G SSD 虚拟机 下安装操作系统 Ubuntu 14.04 LTS 64位(可以通过http://mirrors.163.com/ubuntu-releases/) Android 2.3.7 r1 jdk 1.6 下载地址...

2018-05-28 13:16:48 554 0

翻译 Android性能优化——优化应用启动时间

优化应用启动时间 用户希望App能够快速相应和加载,应用启动缓慢会带来糟糕的用户体验,导致用户恶评,甚至会卸载你的应用。 这篇文章提供的信息能够帮助你优化应用的启动时间。首先,我们先来了解应用启动的内部原理,接下来,我们会讨论如何分析启动性能。最后,最后我们会介绍一些影响启动性能的常见问题,并...

2018-05-20 16:46:45 5256 0

原创 直播技术总结

直播现状 直播平台200+,用户规模3.25亿,市场规模已到90亿。 基础条件成熟 4G+Wifi 软硬件水平提升,游戏行业的培养,弹幕文化。 人性的驱动 窥探,炫耀,虚荣,色。 实时互动 文字,图片,视频。 赢利点 直播打赏抽成 观众送直播礼物 商品交易分红...

2018-03-06 10:44:03 1555 0

原创 算法系列——二分查找算法及其变体总结

基础二分查找只能找到指定target在序列中的位置,假如target有重复值,二分查找只能返回其中某个target的位置,这个位置并不确定,主要跟target值的起始位置和重复序列的长度有关系。

2017-12-18 00:07:30 856 2

原创 算法系列——排序算法总结

排序分类 按照是否在内存中分类 根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。 对于内排序来说,排序算法的性能主要是受3个方面影响: 时间性能,辅助空间,算法的复杂性。 按照算法的实现复杂度分类 简单算法 冒泡排序、简单选择排序和直接插入排序属...

2017-12-17 22:48:40 224 0

原创 算法系列——字符串匹配朴素算法和KMP算法

字符串匹配算法主要是两类,最基本的暴力解法,也叫做朴素算法,另一种是KMP算法。本篇给出两种算法的最简单化的写法,便于面试时记忆和书写,当然重点还是理解其算法思想。朴素匹配算法被搜索的字符串称为主串,待搜索的字符串称为模式串。朴素模式匹配算法的基本思想: 对主串的每一个字符作为子串开头,与模式...

2017-12-17 15:24:43 932 0

原创 算法系列——Sqrt(x)

题目描述 Implement int sqrt(int x). Compute and return the square root of x. 解题思路 程序实现 public class Solution { public int mySqrt(int x) { ...

2017-12-14 19:34:43 187 0

原创 算法系列—— 输出所有的笛卡尔积组合

题目描述给定任意数量一维数组集合,输出所有的笛卡尔积组合。 例如,A={a,b}, B={0,1,2},则 A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}解题思路这道题目运用 典型的递归回溯思路解决比较容易。程序实现 public cl...

2017-12-12 23:57:13 5209 1

原创 设计模式——装饰者模式

装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 我们通过下面的实...

2017-10-14 22:25:17 254 0

原创 设计模式——外观模式

外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍意图:为...

2017-10-14 20:32:39 238 0

原创 设计模式——状态模式

状态模式介绍在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。...

2017-10-01 02:49:18 338 0

原创 设计模式——责任链模式

介绍责任链模式(Iterator Pattern),是行为型设计模式之一。 我们将多个首尾相连所构成的模型称为链。对于链式结构,每个节点都可以被拆开再连接,因此具有很好的灵活性。将这样一种结构应用于编程领域,将每个节点看作是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端出发,沿着链...

2017-10-01 02:14:59 363 0

原创 Java并发编程深入学习—— synchronized

synchronized介绍synchronized是Java中的关键字,是一种同步锁。 它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整...

2017-09-27 19:46:49 254 0

原创 Java并发编程深入学习——Lock锁

Lock锁介绍在Java 5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile。Java 5.0 增加了一种新的机制:ReentrantLock.它并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。Lock接口Lock接...

2017-09-27 19:34:19 281 0

原创 Java虚拟机(九)——多态性理解

介绍  对于面向对象的三大特征,很多人可以毫不犹豫地讲出来,封装,继承,多态。封装,和继承自不必说,而对于多态的理解,可能对于不少人来说,总好像理解了,但是好像又有点迷惑,这篇文章着重介绍这个特性。  多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同...

2017-09-27 17:45:45 223 0

原创 Java集合框架源码分析(四)——LinkedHashMap

LinkedHashMap简介LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。Linked...

2017-09-22 17:59:12 237 0

原创 Java 集合框架源码分析(三)——HashMap

HashMap简介HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMa...

2017-09-22 17:19:34 470 0

原创 Java 集合框架源码分析(二)——LinkedList

LinkedList简介LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用。LinkedList同样是非线程安全的,只在单线程下适合使用。LinkedList实现了Serializable接口,因此它支持序列化,能...

2017-09-22 17:03:57 514 1

原创 Android View滑动的方法总结

layout()如果你将滑动后的目标位置的坐标传递给layout(),这样子就会把view的位置给重新布置了一下,在视觉上就是view的一个滑动的效果。public class DragView extends View{ private int lastX; private int la...

2017-09-21 16:13:10 195 0

原创 Android FragmentPagerAdapter与FragmentStatePagerAdapter

FragmentPagerAdapter是Android-support-v4支持包里面出现的一个新的适配器,继承自PagerAdapter,是专门用来给支持包中出现的ViewPager进行数据适配的。 PagerAdapter在之前的文章中进行过简单的介绍,不记得怎么使用的可以先去看一下。 ...

2017-09-11 18:53:04 207 0

原创 Android性能优化——优化viewPager

当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即Fragment需要加载UI内容,而又频繁地切换Fragment,就容易产生卡顿现象(类似在ListView快速滑动的同时加载图片容易卡顿)。 1.Fragme...

2017-09-11 18:27:44 991 0

原创 Android ImageView&ImageButton 显示图片的一些总结

首先设置布局中的imageView如下 ImageView android:id="@+id/imge2" android:layout_width="match_parent" android:layo...

2017-09-11 18:19:21 1674 0

原创 算法系列——数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解题思路看到了很多人会这样写:public static double powerWithExponent(double base,int exponent){ d...

2017-09-05 12:24:31 221 0

原创 算法系列——逆置一个栈

题目描述一个栈一次压入了1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1.将这个栈转置后,从栈顶到栈底为1、2、3、4、5,解题思路空间复杂度为O(n)生成一个辅助栈,依次从原来栈中弹出压入辅助栈中,返回最后结果。递归方法不利用辅助栈,递归调用取得栈底元素的子函数然后将其压入原有栈中。...

2017-09-05 11:53:06 688 0

原创 算法系列——滑动窗口最大值

题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,...

2017-09-04 15:05:15 772 0

原创 算法系列——机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+...

2017-09-04 10:17:51 1276 0

原创 算法系列——扑克牌的顺子

##题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺...

2017-09-04 09:49:26 794 0

原创 算法系列——n个骰子的点数

题目描述把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 s。输入 n,打印出 s 的所有可能的值出现的概率。解题思路此题目解法很多,其中使用动态规划法最好理解,代码也比较简洁1.现在变量有:骰子个数,点数和。当有c个骰子,点数和为k时,出现次数记为dp(c,k)。那与c-1个骰子阶段之间的关...

2017-09-01 17:50:07 2185 2

原创 算法系列——最长公共子串

给出两个字符串,找到最长公共子串,并返回其长度。 注意事项 子串的字符应该连续的出现在原字符串中,这与子序列有所不同。 样例 给出A=“ABCD”,B=“CBCE”,返回 2

2017-09-01 16:42:29 509 0

原创 算法系列——数组中只出现一次的数字

题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路 程序实现

2017-09-01 16:12:28 350 0

原创 算法系列——和为S的连续正数序列

题目描述 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你...

2017-09-01 15:38:16 362 0

原创 算法系列——和为S的两个数

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。解题思路指针对撞法,采用双指针法,i,j从数组两端开始往中间靠拢,如果 array[i]+array[j]程序实现public class Solution { ...

2017-09-01 15:19:07 422 0

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