自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android 开机启动调试,system_process调试

下载,编译,导入,配置作为开发者,经常会对Debug工程进行调试,Android具有debug签名的应用才可以被调试,如果想调试系统源码呢?想要调试源码,首先必须要有源码,并且保证设备运行的源码和IED里的源码是同一份.下载和编译AOSP源码,本人使用的ubuntu LTS 16.04系统, 磁盘剩余空间至少要150G(如果编译时,提示空间不够,可以删掉".repo" 目录), 内存1...

2018-08-05 16:31:17 6375 1

原创 CountDownLatch|CyclicBarrier

        其实很早之前就有过这么个想法:比如有10个任务,其中有个任务A,A任务需要等待其他所有的任务完成后,再开始执行,这里每个任务都是在单独的线程完成,举个栗子:对Launcher类的App,需要对Android设备上的所有应用的入口信息处理,这个过程是相当长的,但是我们可以根据当前设备可用线程数,创建一定数量的线程,将入口处理分成多个任务单独处理,处理完后,一次性写入数据库.而写入出具...

2018-07-19 19:58:43 151

原创 算法|堆排序

        堆排序与之前提到的希尔排序,归并排序,快速排序是完全不同的排序算法,堆排序是唯一同时在空间和时间两个方面都有较优性能的算法,在空间上,不使用额外的空间,在时间上,又尽可能的快.学习堆排序,需要了解二叉树 的概念.两点:堆结构堆序性首先说堆结构,堆是一个完全二叉树,首先它必须是一颗二叉树,所谓二叉树,就是任意节点的子节点不超过两个,然后完全二叉树是在二叉树的结构上附...

2018-04-25 18:09:06 443

原创 算法|快速排序

算法实现请移步这里前面已经陆续有:选择排序 ,冒泡排序,插入排序,希尔排序,归并排序可以看到,是按照排序算法的性能来罗列的.快速排序和归并排序一样,也是"分治思想"的经典应用快速排序能很好的适用于各种各种的随机输入,并且大多数情况下,都要优于以上其他算法,并且只需要有限的辅助数组(归并排序需要额外的等量的内存空间),它的内存换也是相当的简单.上面提到它跟归并排序一样,也是使用"分治思想"来进行算法...

2018-04-22 20:39:39 171

原创 算法|归并排序

前面讲过的几种排序算法,选择排序,冒泡排序,插入排序,希尔排序,这些排序可以归为一类(算法实现请移步这里).因为他们是逐个元素依次比较和交换,其中插入排序对于有序元素有一定的优势,希尔排序是制造比较优势.这些排序算法都是内外循环的方式,一直到数据结束.而归并排序使用递归的方式,将数组分成无数个小的子数组,对子数组进行排序,然后依次将他们归并起来,从而达到对整个数组排序的目的.将两个有序的数组归并起...

2018-04-16 13:24:45 269

原创 算法|算法性能实测(选择|插入|希尔)

使用100w个随机数,随机数文件地址为: 随机数文件start sort...size 1048576select cost 418258Insert cost 94330 (优化过的插入排序,如果没有优化,可能需要两倍的时间! 插入排序优化)Shell cost 193随机数大小为 1048576 个数选择排序:418s插入排序:94s希尔排序:193ms可以看到希尔排序的巨大优势!将排序速度控...

2018-04-15 13:37:47 227

原创 算法|冒泡排序

前面讲过 选择排序 是基于元素比较的,现在这个是基于相邻元素比较的算法算法描述:使用从小到大的排序策略.从最后一个元素开始,按照从后向前的方向,相邻元素之间进行比较,如果发现后一个元素比前一个元素小,则交换,直至数组结束,这样就可以找出最小的元素,放在第一个位置.然后再次重复上面的策略,在剩下的元素中找到最小的元素放在第二个位置.直至整个循环结束算法实现为:public class BubbleS...

2018-04-15 13:32:08 319

原创 算法|希尔排序

理解希尔排序前,请务必先理解 插入排序,这是前提!插入排序的思路就是在未排序的数组中选择第一个元素,在已经排序的数组中找到合适的位置并插入.他相比选择排序的优势在于,如果数组部分有序,或者大多数元素理最终的位置都不太远,就可以大大减少比较和交换次数.但是存在这样情况,比如最小的元素恰好在数组的最末尾,它需要依次和相邻的元素比较和交换,所以我们需要进行需要N-1次比较和N-1次交换位置,才能将最小元...

2018-04-12 11:47:06 199

原创 算法|选择排序与插入排序比较

请先参考:选择排序 插入排序选择排序前面介绍了,对于任何数组而言,他的总的时间复杂度近似为:N2/2, 是随着数组的长度成平方级别的增长的,数组越长,算法的复杂度会成倍的增长.加入数组是完全有序的呢?或者部分有序,那么选择排序依然会对每个元素进行比较,也就是说,选择排序它无法感知到数组的有序特征如果是插入排序,前面也介绍了:第一种:数组已经排好序,则只需要N-1次比较就好了,不需要任何交换第二种:...

2018-04-11 14:59:38 1311

原创 算法|插入排序

前面已经讲过 选择排序, 冒泡排序,他们都是基于比较的排序,接下来介绍的插入排序虽然也是基于比较的,但是在某些情况下,他们较少元素之间的比较次数,相较选择和冒泡,排序性能可以降到平方级别以下插入排序的总体思路为:每次插入排序都是将某个未排序的元素插入到已经排好顺序的数组里面。描述:首先我们认为第一个元素已经排好顺序,毫无疑问,第一个元素只有他自己从第N个元素(下文称为:此元素)开始,将此元素与前面...

2018-04-09 13:46:56 204

原创 算法|选择排序

选择排序的算法描述:选定第一个元素,与剩下的元素逐一比较,找到最小的那个元素,直到数组结束,然后与第一个元素交换。选定第二个元素,与剩下的元素逐一比较,找到最小的那个元素,直到数据结束,然后与第二个元素交换。依次类推。。。直到第N个元素算法实现为:public class SelectSort { public static void main(String[] args) { ...

2018-04-09 10:56:19 311 2

原创 Double-check|并发原理

http://gee.cs.oswego.edu/dl/cpj/jmm.htmlhttps://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html先给自己挖个深坑

2018-11-14 08:59:30 493

原创 Http、Https姿势

http--超文本传输协议,是tcp/ip网络传输控制协议七层模型的应用层,应用层还有类似的协议比如,FTP,SMTP,POP等等。老的http版本就不说了,从http1.0开始,被广泛应用,其中http1.0不支持长链接,每次http请求都必须经过如下过程:建立连接--请求处理--断开连接http1.1在http1.0基础上做了很多优化,包括一下改进:1.支持长连接(默认开启...

2018-10-23 16:43:21 843

原创 关于散列算法的一些学习

参考地址:https://www.zhihu.com/question/20733617

2018-09-02 23:43:57 250

原创 Java Thread|线程的状态

以下内容全部为源码学习加上自己的经验所得Java线程分别有一下六种状态:NEW,RUNNABLE,BLOCKED,WAITING,TIME_WAITING,TERMINATED.①NEW状态,通过new Thread() 创建一个线程对象的时候,这是一个线程的初始状态,但是尚未启动!②RUNNABLE状态 在java 虚拟机中的可运行状态,但是可能会等待操作系统中的其他资源,如CP...

2018-09-01 17:11:28 178

转载 Java内存模型|并发|多线程

对Java 并发从软件架构到硬件架构的详细解释和描述,包括:线程通信线程同步内存模型内存同步指令重排内存屏障指令共享变量可见性共享变量的竞争Happens-before 特性等https://blog.csdn.net/suifeng3051/article/details/52611310...

2018-08-27 11:44:16 145

原创 ubuntu 软件安装目录查询

如果是dpkg安装的:查看dpkg的帮助。dpkg -l来查看软件的状态。dpkg -P来卸载软件,或者 dpkg --purge完全删除,包括配置文件例如查看 sogoupinyinii sogoupinyin 就是已经安装的软件,这里只匹配到了一个软件,另外一种就是:rc则表示已经被删除,但配置文件还存在.通过模糊匹配查找到 sogoupinyin的全名,然后 ...

2018-07-30 10:06:18 9576 1

原创 Android 屏幕适配

完成时间 7.15

2018-05-30 14:48:40 128

原创 面试总结

总结一下我在面试过程中的面试题以及要求.公司招人,会有各自的标准,但是无非就那几条:①价值观认同,这里面包括公司的创业文化,需要大家辛苦付出,可能会有加班的情况(互联网公司的普遍现象),认同公司的理念和愿景,愿意同公司一起发展.②学习能力③态度,这里面包括对自己团队,自己负责的业务,以及与同事的沟通等等.容易沟通,表述精准,传达到位也是很重要的,那种吵架,磨嘴皮子,打嘴炮的,就会产生严重的内耗,得...

2018-05-20 18:04:01 157

原创 3D|投影矩阵

完成时间2018-06-01

2018-05-07 14:56:39 1195

原创 3D仿射变换矩阵推导

仿射变换包括线性变换和平移变换,先来说线性变换中的旋转变换,这个稍微要复杂一点.讲这个之前,我假设你已经对线性代数有一定的了解,比如三角函数,向量,以及矩阵的相关知识(以及他们所代表的几何意义),如果以上知识不熟悉,很难看懂下面讲的内容.仿射变换包括旋转,缩放,平移,切变,反射...等等,在3D空间中,,所有这些效果都是通过矩阵来完成,也就是矩阵乘法实现,矩阵的乘法是满足结合律的,也就是说,我们可...

2018-05-04 19:43:11 10801 1

原创 三角形法则平行四边形法则

三角形法则,有时候又叫三角形定则,在物理学中,用来表示两个力的合成(在数学中,是两个首尾相接的向量).假如我们有两个方向的力,分别为a,b,当他们孤立的存在的时候,只是代表某个方向,以及在这个方向的力的大小,但是现实生活中,不可能只有单一方向的力,几乎所有物体的运动都受到不止一个力的作用,比如常见的重力,引力等等..当力a(既有大小,又有方向的矢量,数学中叫向量,本质是一样的,表现形式不同而已)和...

2018-04-25 11:38:13 23987 2

翻译 3D数学基础|矩阵

矩阵(2018-06-06)

2018-04-24 20:44:52 159

原创 3D数学基础|向量

先列一个大纲:介绍向量的定义,对应实际生活中的例子在物理学中的定义,数学中的定义,会分别举例子向量的数学运算,以及它所代表的几何意义,对应的几何空间运算向量的加法,减法向量与标量的乘法,除法向量与向量的点乘(又叫内积)向量与向量的叉乘(又叫外积)以及他们所代表的几何意义!一个既有大小,又有方向的量,在物理学中,叫矢量,在数学中,我们叫向量这就是一个向量,箭头所指的方向为向量的方向,本身的长度为向量...

2018-04-24 20:43:41 256

原创 3D数学基础|坐标体系

3D坐标体系!

2018-04-24 20:40:17 143

翻译 OpenGL ES|用户交互

使用预设程序使物体移动,比如旋转三角形对吸引用户注意非常有用,但是如果想让OpenGL ES图形与用户交互又该怎么做呢?让OpenGL ES 应用能响应触摸交互的关键是继承GLSurfaceView并重写OnTouchEvent()监听触摸事件.本课将向你展示如何监听触摸事件让用户旋转OpenGL ES的物体.设置触摸监听为了让OpenGL ES应用响应触摸事件,你必须实现 GLSurfaceVi...

2018-04-23 10:52:48 341

翻译 OpenGL ES|添加动画

添加动画在屏幕上绘制物体是OpenGL最基本的特性,但是你也可用通过使用Android graphics 框架,包括Canvas和Drawable来完成这件事.OpenGL ES 为三维空间的物体移动和变换提供了更多的能力或者以另外的独特方式提供超乎想象的用户体验.在这一课中,通过使用OpenGL ES添加运动让物体旋转,你又向前迈出了一步!旋转图形使用OpenGL ES2.0旋转绘制图相对比较简...

2018-04-23 10:51:32 773 1

翻译 OpenGL ES|应用投影和相机视角

在OpenGL ES环境中,投影和相机视角允许你以接近人眼观察物体类似的效果来绘制图形,这种类似物理视角的效果通过物体坐标系的数学变换来实现.       投影-这种变换通过调整基于GLSurfaceView的宽高的绘制对象的坐标.如果没有计算和变换,通过OpenGL ES绘制的对象因为与视图窗口比例不同而发生变形.当OpenGL视图被创建或者在OnSurfaceChanged()被rendere...

2018-04-23 10:50:21 542

翻译 OpenGL ES|绘制图形

本文来自 翻译: Draw shapes绘制图形定义图形之后,你可能想去绘制他们.使用OpenGL ES 2.0绘制图形需要的代码会比你想象的多一点,因为API提供了大量对图形渲染管线的控制.这一课讲解如何使用OpenGL ES 2.0的API绘制前一课定义的形状.初始化图形在绘制之前,你必须初始化和加载你要绘制的图形,除非在运行过程中,图形结构发生改变,为了高效利用内存和处理效率,你应该在ren...

2018-04-23 10:49:11 318

翻译 OpenGL ES|定义形状

定义图形创建高端图形的第一步是在OpenGL ES视图的上下文中定义被绘制的图形,如果你不知道OpenGL ES如何定义绘制图形的一些基础知识,使用OpenGL ES绘制可能会有点棘手.本课会讲解与Android设备屏幕相关的OpenGL ES坐标系统,图形定义的基础知识,图形的表面,以及定义三角形和正方形.定义三角形OpenGL ES允许你在三维坐标系中定义绘制物体.所以,在绘制三角形之前,你必...

2018-04-23 10:47:57 222

翻译 OpenGL ES 初始化

以下内容来自: Build an OpenGL ES environment  根据自己的理解翻译,烦请对照查看,省略了部分不要翻译的内容如果想使用OpenGL ES,在android应用中绘制图形,必须为图形创建view的容器,最直接的方式之一就是实现GLSurfaceView和GLSerfaceView.RendererGLSurfaceView是使用OpenGL ES 绘制图形的容器,而GL...

2018-04-23 10:46:30 376

翻译 用OpenGL ES展示图像

使用OpenGL ES展示图像Android框架提供了大量标准工具来创建漂亮的具有多种用途的用户交互接口.但是,如果你想在屏幕绘制中拥有更多控制,或者打算使用三维图形,你需要使用不一样的工具.由Android框架提供的OpenGL ES APIs提供了一系列的工具,用来展示你可以想象到的任何高端图形,动画,并且能利用GPU加速,大多数的Android设置都提供了对GPU的支持.这一课将会带你学习使...

2018-04-23 10:42:51 375

翻译 Android OpenGL ES OverView

Android OpenGL ES 总览完成时间,2018-06-01

2018-04-23 10:36:41 113

原创 Android|性能优化

一个好用的App,应该是一个对用户及时响应的,在用户打开页面(或者打开app)时,给出相应结果,用户点击按钮时的按下效果,或者动画效果,用户切换界面没有任何阻塞和卡顿的感觉,当用户滑动列表时,或者关闭页面时,能快速的响应用户的行为。而这一切的自然发生的前提是我们的应用要保持在60FPS,并且稳定,为什么是60FPS?这是由人眼和大脑协同工作的结果,人眼能感知到刷新上限就是60FPS,超过这个阈...

2017-03-15 12:13:27 516

原创 Android|插件化之ClassLoader

待完成

2017-03-15 12:10:43 210

原创 Android|MVP架构模式

待完成

2017-03-15 12:05:16 216

原创 android 图形图像之glide

待完成

2017-03-15 11:43:45 200

原创 Android|图形图像之Volley

待完成

2017-03-15 11:43:09 160

原创 Android|图像图像之PorterDuff

待完成

2017-03-15 11:40:56 183

原创 Android|图像图像之gradient

待完成

2017-03-15 11:39:58 239

随机数生成和读取,以及排序比较

随机数生成序列,并读取随机数,使用选择|插入|希尔排序,对随机数进行排序

2018-04-15

100w随机数序列

用于排序的 随机数序列,数值大小为1-1408576,从上到下排列

2018-04-15

TextPaintDemo

TextPaintDemo

2016-08-28

电子时钟 ——单片机课程设计

完整的单片机 电子时钟设计 包括实物图 仿真测试,实物测试,代码 和代码解释,

2011-12-27

Dos 命令大全

Dos命令大全,关于简单的创建文件,打开件,复制,删除,修改操作,改变文件属性,查看文件,创建用户等等一些最基本的,最贱打的操作

2011-10-23

空空如也

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

TA关注的人

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