- 博客(46)
- 收藏
- 关注
原创 组件化开发流程图笔记
概要本文只适合想要对组件化开发有个大概认知以及复习总结,新手应该看这篇文章在多人开发的时候,最简单的使用github托管源码,大家在开发过程中,通过push和pull代码,保持项目同步,然后打包运行测试。然而这只适合小型项目开发,在大型项目中,代码和功能都非常多,这导致编译和测试异常麻烦。基于上述,我们可以使用组件化来开发项目。所谓的组件化,是指开发的时候,把项目拆分成一个父模块和多个子模块(也就是
2017-08-30 03:26:01 2236
原创 JAVA——ClassLoader详解
概述之前的博客:Class装载过程讲解了一个类具体是怎么装载的,类装载分为加载、链接、初始化三个过程。Class装载对我们来说,最重要的是加载这个过程了。 java使用ClassLoader来加载一个类,他的主要工作是把二进制class文件加载到虚拟机里面去,并且返回一个Class对象,通过这个Class对象,我们可以获取一个类的方法和变量的元素。ClassLoader类的介绍classLoade
2017-08-29 06:15:04 534
原创 JAVA——Class装载
概述:JAVA Class文件的装载流程包含三个阶段:加载、链接、初始化。而链接又分为:验证、准备、解析三个步骤。 类并不是在任何时刻就马上装载的,他是需要一定的条件。正常情况下,类的装载分为主动和被动两种情况。其中主动装载会初始化一个类(这里所谓的初始化是初始化静态块和静态变量,而不是我们通常说的构造函数)。主动装载分为以下几种情况:使用new关键字或者通过反射、克隆、反序列化来创建一
2017-08-29 05:43:59 687
原创 Android高级开发必读文章
JAVA知识Android基础知识Android进阶知识Android框架计算机网络操作系统数据结构和算法写的非常好的一些博客
2017-08-29 05:08:10 425
原创 JAVA多线程技术(基础篇)——多线程技能
本章概要本章主要讲解了以下内容:线程如何启动如何使线程暂停如何使线程停止线程的优先级线程的安全问题使用多线程一个进程至少有一个线程在运行,在JAVA中,main运行所在的线程叫主线程。JAVA有两种方法实现多线程编程,一种是集成Thread类,一种是实现Runnable接口。实际上,Thread类继承了Runnable接口,使用Thread类意味着我们不能实现多重继承,在需要多重继承
2017-08-11 14:27:28 294
原创 C语言常见问题
struct定义问题:typedef struct Student{}Student,*StudentP;后面跟了一个Student和*Student。它的意思是typedef表示重新声明了两个类型,分别是Student和指针类型的Student。等价于:typedef struct Student Student;typdef struct Student *Student;int数组初始化
2017-07-21 16:11:11 246
原创 查找——冒泡排序
算法解释冒泡排序是我们最常见,也是最简单的一种排序。他的核心思想是通过迭代交换相邻的两个数字,不断的把小的数转移到数组的最前面去,把较大的数留在末端。他的时间复杂度是O(n^2)。冒泡排序有三种实现方法(严格的来说是两种),下面是这三种方法的实现代码:#include <stdio.h>#include <iostream>#include <time.h>#include <malloc.h
2017-07-20 18:09:33 274
原创 查找——冒泡排序
算法解释冒泡排序是我们最常见,也是最简单的一种排序。他的核心思想是通过迭代交换相邻的两个数字,不断的把小的数转移到数组的最前面去,把较大的数留在末端。他的时间复杂度是O(n^2)。冒泡排序有三种实现方法(严格的来说是两种),下面是这三种方法的实现代码:#include <stdio.h>#include <iostream>#include <time.h>#include <malloc.h
2017-07-20 18:09:33 258
原创 查找——冒泡排序
算法解释冒泡排序是我们最常见,也是最简单的一种排序。他的核心思想是通过迭代交换相邻的两个数字,不断的把小的数转移到数组的最前面去,把较大的数留在末端。他的时间复杂度是O(n^2)。冒泡排序有三种实现方法(严格的来说是两种),下面是这三种方法的实现代码:#include <stdio.h>#include <iostream>#include <time.h>#include <malloc.h
2017-07-20 18:09:32 260
原创 排序算法
排序的稳定性在一个数组中有两个值,分别是a,b且a=b,a在b的前面。排序后,如果a还在b的前面,我们把这种排序成为稳定排序,否之就是不稳定性排序内排序和外排序内排序是指在排序的时候,会把所有的数据都一次性加载到内存里去,而外排序则是分批加载。
2017-07-20 15:15:48 256
原创 查找——散列表查找(哈希表)
散列算法概念散列是通过一定的方法,直接将某个数据的key转化成访问地址。使得存储位置=f(关键字),通过f(key)我们能直接访问这个数据。我们把这种对应关系f成为散列函数,又称哈希函数。采用散列技术将记录存储在一块连续的空间中,这块连续的空间称为散列表或哈希表。关键字对应的存储位置我们称为散列地址。散列冲突两个关键字,通过函数计算出来的地址如果是一样的。对于这种情况,我们称之为冲突,并把key1和
2017-07-20 14:40:18 532
原创 查找——线性索引查找
索引的定义一本书的内容通常是无序的,如果没有目录,要想快速找到某一张,则需要将一本书按顺序翻过去,这是非常耗时的。计算机的索引跟图书目录类似,它记录了关键词和数据的位置。索引按照结构可以分为线性索引、树形索引、多级索引。实际上他们的命名是根据索引数据结构来区分的,线性索引是指索引项集合组织为线性结构。常用的线性索引有:稠密索引、分块索引、倒排序索引。稠密索引稠密索引是指每一条数据都有一个索引和其对应
2017-07-19 22:48:21 400
原创 查找——斐波那契查找法
算法定义斐波那契是二分法的改进版,他跟插值查找类似。不同的是它利用了数学领域的黄金分割法则(也就是0.618法则),它避免死板的二分法则,在概率学领域减少了查找次数。如下图,这个是待查找数组的结构,我们一定要注意左侧的长度是F[k-1],右侧的长度是F[k-2]-1。这跟我们见到的斐波那契数组(1,1,3,5,8,11……)不同,我们见到的数组是左侧大于右侧(如果不仔细看这里,很难理解后面的 k=k
2017-07-19 22:10:29 876
原创 查找——插值查找
算法说明插值查找说白了就是二分法查找的改良版本,在二分法查找的时候,mid这个数字每次都是取当前数组总数的二分之一,这样做就不太符合常理,因为很多情况下,大量数据分布是基本保持均匀的,比如说我们在查字典的时候要查“我”这个汉字,一般情况下,我们是直接往后面翻的,原因是我们基本上知道w是排在后面的。插值查找就是利用这样的特性来优化二分法查找(当然他的前提是基本分布均匀,否则的话效率比插值查找还慢)。插
2017-07-19 20:31:09 411
原创 查找——折半查找(二分法查找)
算法解释二分法查找针对的是一个已经排好序的查找数据结构。通常情况下,顺序查找需要逐一遍历,而二分法查找利用排序的优势,将查找范围每次逐步缩小二分之一,直到查找到为止。 下面是代码:#include <stdio.h>#include <iostream>#include <time.h>#include <malloc.h>#define MAXSIZE 10using namespac
2017-07-19 15:09:01 359
原创 C语言中遇到的一些问题
方法调用中的数组问题1.我们经常会在一个方法中定义一个数组,并通过指针返回这个数组。但值得注意的是,我们不能简单的使用int []定义,而是要使用malloc函数创建内存空间。原因是int数组定义的变量,在方法调用后会被回收。这会导致在方法调用结束后,我们无法使用这个数组。具体请看代码:int* randNumber(){ int arrays[] = {1,2,3,4,5};//定义一个数
2017-07-19 14:31:08 269
原创 查找——顺序查找
查找的基本概念查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定数值的数据元素。查找分为两种情况:静态查找和动态查找。静态查找是查询某个特定的元素是否在查找表中,检索某个特定的数据元素和各种属性。动态查找是查找时插入数据元素以及删除数据元素。顺序查找顺序查找又叫线性查找,是基本的查找技术,他的查找过程是从第一个记录开始,逐个进行比较,如果跟查询的值相等,则查找成功。如果没有任何值跟他
2017-07-19 14:23:21 332
原创 Linux系统操作笔记
Linux操作系统学习笔记Linux操作系统的最基础知识Linux的所有的内容都是以文件形式保存,包括硬件Linux不靠扩展名来区分文件类型,虽然有扩展名,但只是为了让系统管理员更清晰的知道文件类型而已硬盘是挂载在/dev/目录下的主分区最多只有4个,扩展分区只有一个,主分区加扩展分区最多有4个,逻辑分区最多只有22个Linux必须分区的是/(根分区)、swap分区(交换内存分区),推荐创
2017-07-07 16:05:38 1003
原创 C++语言学习笔记
C++是有bool类型的,而C没有,只能使用int类型等于1还是等于0来判断C语言的变量必须定义在函数体的最前面,而C++可以随意定义C++可以使用<<来连续输出值:cout<<a<<b<<endl;C++可以以下列方式输出进制内容:cout<<oct<<x<<endl;//输出8进制cout<<dec<<x<<endl;//输出10进制cout<<hex<<x<<endl;//输出十六
2017-06-24 12:59:41 394
原创 C语言学习笔记
标识符可以以字母、数字、下划线组成。并且首字母必须是下划线或者字母,不能猥数字,标识符长度最好不要超过8位,标识符是严格区分大小写的。char占一个字节、int(一般情况下占两个字节,不同情况下可能不一样,还有short int long int等等)、float(4个字节)、double(8个字节)、long double(16个字节)。格式化输出printf(“%x”),其中%d表示输出数字
2017-06-16 00:03:44 270
原创 CSS
css权重:内联样式>header定义的 样式>大于外部样式>浏览器缺省设置(默认设置)选择器: Css分为以下几大模块:选择器框模型背景和边框文本效果2D/3D 转换动画多列布局用户界面边框:边框有以下几种属性:border-radius(边框圆角) box-shadow (边框阴影) border-image(图像边框)背景:我们可以通过使用background-size设定
2017-06-15 11:27:33 283
原创 HTML5
很多老实的浏览器是不支持HTML5的,但是一般情况下,他们会把未知元素当成行内元素来处理,所以对于块元素,我们需要添加display:block属性,但是由于IE8以及之前的浏览器是不支持对未知标签添加CSS的,所以我们需要使用另一种方式:在头部添加下列代码<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trun
2017-06-14 21:27:10 274
原创 HTML基本标签
注意:空内容标签是指开始和结束在一起的标签,如<br/>,HTML标签大小写不敏感,但推荐使用小写标签 1. h标题 2. p段落 3. a超链接 target=”_blank”重新打开一个页面,我们也可以通过锚来定位页面内的元素,具体做法是:href=”#tips”其中tips是name名,如果找不到锚,就会直接跳转到页面顶端 4. img图片,我们可以设置alt设置未加载成功的时
2017-06-14 19:19:53 253
原创 HTML元素居中的几种办法
行内元素的居中行内元素的居中,是给父元素设置text-align:center来实现的块元素的居中所谓的块元素,是指单独占一行的元素,行内元素可以用display:block来成为块元素。块元素的居中分为两种情况:固定宽度:左右margin auto来实现不固定宽度:第一种方法:1.在要居中的元素中加入tab标签。2.设置margin 0 auto。第二种方法:将不定宽块元素通过display:
2017-06-13 17:28:47 664
转载 Android应用性能优化系列视图篇——恼人的分割线留白解决之道
相信很多一线的开发者都遇到过分割线,作为视觉设计中的最常用的元素之一,虽然简单易画,但在布局排版中往往却起影响视图层级结构的重要作用。往往由于一道小小的分割线,不仅在layout中多个数个视图,而且容易导致布局层级的加深,甚至还需要在Java代码中做逻辑控制。虽然Android官方提供的布局中,比如ListView、LinearLayout等对分割线都有了相应的实现,但是在处理分割线留
2016-08-31 16:36:38 418
转载 Android状态栏微技巧,带你真正理解沉浸式模式
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51763825 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。
2016-08-31 16:35:36 241
转载 java性能优化概要
下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关
2016-08-31 16:34:06 217
转载 基于Xposed修改微信运动步数
前言:Zygote 是 <a href="http://lib.csdn.net/base/15" class="replace_word" title="undefined" target="_blank" style="color:#df3434; font-weight:bold;">Android 的核心,每打开一个 app,Zygote 就会
2016-08-31 16:31:19 2547
原创 读书感悟
1、把自己未来要完成的计划拆分开来,精确到每一天。已经完成的是红色、等待完成的是黄色、未完成的是绿色。 2、孙正义当年分析四十个行业,然后整理出十米高的行业分析报告。 3、大胆去做,只要有百分之七十的可能性,就去做。 4、找出一个行业,他是朝阳行业,未来十年都是发展期,没有人做过。分析失败的可能性。
2016-08-22 14:47:40 327
原创 Android 5.0+新控件学习地址
CoordinatorLayout与滚动的处 理:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0717/3196.html http://blog.csdn.net/xyz_lmn/article/details/48055919 http://www.open-open.com/lib/view/open1438265
2016-08-12 16:29:26 393
原创 专业单词
这篇日记的主要用来记载平时在阅读文档的时候遇到的一些生词。每组100个。第一组established 建立、定制、确定open handset alliance 手机开放联盟,handset是手机、手持的意思,alliance是联盟的意思carriers 搬运公司、搬运人chip 残片缺口Qualcomm(or MediaTek) 高通或者联发科CTS全称Compatibi
2016-07-18 18:37:47 442
转载 深拷贝和浅拷贝
http://www.cnblogs.com/shuaiwhu/archive/2010/12/14/2065088.html 原文深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念,尤其在C++语言中,若不弄懂,则会在delete的时候出问题,但是我们在这幸好用的是Java。虽然java自动管理对象的回收,但对于深拷贝(深复制)和浅拷贝(浅复制),我们还是要给予足够的重视,因为有时这两个概
2016-07-18 18:35:18 243
原创 第十二章 通过异常处理程序
概要异常分为两种,一种是Error,一种是Exception。前者是系统编译时和系统错误。后者是程序代码错误。Exception的父类是Throwable。下面是重点内容:1.throws new Exception();代表着异常抛出。其实异常抛出跟方法返回差不多,异常抛出会从该点返回一个异常类,然后结束这个方法。2.我们会在try块后跟多个catch(Exception e)语句,值得注意的是
2016-07-18 18:34:48 360
原创 第十一章 持有对象
概要所谓的持有对象,直白的说就是容器类。在本章中,介绍的是一些基本和常用容器类的一些用法以及基本原理和区别。他并没有深入到底层实现级别。本章主要介绍了容器类的粗略组成结构。如Collection、Iterator、Map。与此同时,还介绍了一些我们常用的这些类的子类,如ArrayList、LinkedList、HashMap、TreeSet等等。在后面的第十八章,还会注重介绍其每个类的原理和使用范围
2016-07-18 18:34:26 273
原创 第十章 内部类
概要在平时的编程中,用的最多的内部类就是点击事件和Handler的使用。这个点,已经没心思遍题记这种废话了。直接切入主题上重点笔记吧: 1.当生成一个内部类对象的时候(静态类除外),此对象与制造它的外围对象之间就有了一种联系,所以它能够访问外围类的成员,而且不需要任何特殊条件。此外,内部类还拥有其外围成员的所有元素的访问权限,外围类也是可以直接访问内部类的private和protected修饰的变
2016-07-18 18:34:09 297
原创 第九章 接口
概要在很多人眼里,接口无非就是implements interfceA。事实上,仔细探寻接口,他有很多我们不经常用到的东西。接口在设计模式中,通过继承多个接口,能够实现多重继承的效果。除了在接口中申明方法,我们也可以在接口中定义变量,甚至是一个类。下面是这章的重点内容: 1.一个接口中的方法,只能是public的,不能用private和protected修饰,否则编译器会报错。如果我们不做任何修饰
2016-07-18 18:33:43 268
原创 第八章 多态
概要多态在Java面相对象编程中,应该是属于非常重要的一个内容。多态的概念在前面几章中也略有介绍,总的来说,多态就是向上转型后,我们在调用父类的引用时,能够产生子类的行为,有一些规范是比较繁琐复杂的,比如通过父类的引用,调用非静态方法,产生的是子类的行为,而调用其变量,拿到的是父类的数据,有很多规范是繁琐的,但他们却很符合使用场景。良好的设计模式跟多态息息相关,所以我们需要很好的了解多态。下面是重要
2016-07-18 18:33:14 282
原创 第七章 复用类
概要自从上次断网,几天没写博客,发现自己已经堆积了七篇没写了,感觉快要炸了。不管怎么样,今晚都要把第七章到第十四章的内容记载下来。本章主要讲了两个东西——继承和组合。并从代码设计学的角度讲了他们的优势和劣势。总的来说,就是劲量避免用继承,多用组合。以下是本章要点:1.一个类总是会继承一个对象,如果我们不具体指明,那就是默认继承Object。 2.如果基类不存在一个不含任何参数的构造器,那么在子类
2016-07-18 18:32:52 344
原创 第六章 访问控制权限
概要在本章中,介绍的是类的访问权限,它介绍了包的概念,以及private、protected、public跟包访问权限是如何限定一个类的数据和方法访问的。因为我们平时用的比较多,所以这章的内容会比较少。下面是记录的一些要点: 1. 当编写一个java源代码文件的时候,此文件通常被称作编译单元,有时也被称作转译单元。每个编译单元必须有一个后缀名.java,而在编译单元内则可以只有一个public类,
2016-07-18 18:32:33 537
原创 第五章 初始化与清理
概要在本章,主要介绍了类的初始化和清理相关知识。包括类成员初始化、方法成员初始化、static变量和static域的初始、static方法的调用等。于此同时,还介绍了finalize()方法的使用概念,以及垃圾回收器基本原理。 下面是本章记录的重点:1. 在方法调用中,对于基本类型,若传入的参数与实际参数类型不符合,会自动转化成精度更高的类型。例如:class A{ void f(int
2016-07-18 18:32:13 303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人