自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫步前行

emmmm..

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

原创 EClass课堂项目(二)-数据库

项目采用的bmob云数据库主要包含5个数据库表(下划线为主码,含组合主码)①User(username,teacherId,studentId,password):负责用户登录信息②Teacher(teacherName,teacherId):教师信息表③Student(studentName,studentId):学生信息表④Message(time,text,sender):通知消息表⑤IsC...

2018-03-05 18:23:59 483

原创 EClass课堂项目(一)-登录注册

登录注册功能实现登录实现LoginActivity(登录活动) (PS.因为是对前期项目的整理,因此含有部分其他代码,当时未学习注解使用,最好使用注解对View实现实例创建,以及对业务逻辑代码进行分离,比如此处的教师学生判断,登录进行的数据库判断,降低耦合性,更好实现MVC模型,之后有时间会进行重构) 代码主要包含几部分: ①输入用户名和密码,与数据库中的用户名密码进行比对(这里...

2018-03-05 15:25:02 2387

原创 HTTPS中的加密算法相关

HTTPS中的加密算法相关一、密钥密钥是一种参数,它是在使用密码cipher算法过程中输入的参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文     二、数字签名   三、数字证书:...

2018-03-03 13:29:51 347

原创 DNS

DNS一、什么是DNS它所提供的服务是用来将主机名和域名转换为IP地址的工作 二、DNS查询过程   

2018-03-03 13:28:04 210

原创 TCP/IP网络模型

一、物理层/实体层 二、链接层 2.Mac地址3.广播 三、网络层1.作用 2.ip协议3.ip数据包 4.arp协议 四、传输层  五、应用层 

2018-03-03 13:27:02 164

原创 HTTPS

HTTPS一、HTTPS是什么?1.HTTPS 2.SSL/TLS协议 3.HTTPS整体架构图 4.HTTPS传输速度  二、TLS/SSL握手1.密码学原理1)对称加密 2)不对称加密 2.数字证书  3.SSL与TLS握手整个过程  ...

2018-03-03 13:25:28 184

原创 HTTP协议

HTTP协议一、HTTP协议简介1.基本概念1)协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则 2)HTTP协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器 2.URI和URL的区别:URIURI:是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源file...

2018-03-03 13:23:08 102

原创 设计模式-责任链

设计模式-责任链一、责任链模式详解1.概念是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止 2.使用场景1)有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定2)在不明确指定接收者的情况下,向多个对象中的一个提交一个请求3)可动态指定一组对象处理请求,客户端可以动态创建职责链来处...

2018-03-03 13:19:45 111

原创 设计模式-观察者

设计模式-观察者1.概念定义对象之间的一种对多依赖关系,使得每当一个对象状态发送改变时,其相关依赖对象皆得到通知并被自动更新 2.使用场景1)一个抽象模型有两个方面,其中一个方面依赖另一个方面 2)一个对象的改变将导致一个或多个其他对象也发送改变 3)需要在系统中创建一个触发链 3.UML结构图分析 4.代码实现    两种观察者比较:1)为什么不用List?2)是否有替代品   二、观察者模式在...

2018-03-03 13:17:46 151

原创 设计模式-模板方法

设计模式-模板方法一、模板方法模式详解1.概念模板方法是通过定义一个算法骨架,而将算法中的步骤延迟到子类,这样子类就可以复写这些步骤的实现来实现特定的算法 2.使用场景1)多个子类有公有的方法,并且逻辑基本相同时 2)重要、复杂的算法,可以把核心算法设计为模板方法 3)重构时,模板方法模式是一个经常使用的模式 3.UML结构图分析   4.实际代码分析   抽象模板/具体模板定义的数量和类型/模板...

2018-03-03 13:16:21 107

原创 设计模式-策略

设计模式-策略1.概念定义一系列的算法,把它们一个个封装起来,并且使他们可互相替换。本模式使得算法可独立于使用它的客户而变化。 2.使用场景一个类定义了多种行为,并且这些行为在这个类的方法中以多个条件语句的形式出现,那么可以使用策略模式避免在类中使用大量的条件语句。 3.UML结构图分析 4.代码分析    5.策略模式优点1)上下文(Context)具体策略(ConcreteStrategy)是...

2018-03-03 13:15:01 103

原创 设计模式-组合

设计模式-组合一、组合模式详解1.概念将对象以树形结构组织起来,以达成“部分-整体”的层次结构,客户端对单个对象和组合对象的使用具有一致性。 树的结构->组合设计模式 2.使用场景1)需要表示一个对象整体或部分层次2)让客户能够忽略不同对象层次的变化 3.UML结构图分析 4.代码        5.组合模式优点1)高层模块调用简单2)节点自由增加  二、组合模式在android中的实际运用...

2018-03-03 13:13:55 147

原创 设计模式-外观

设计模式-外观一、外观模式详解1.概念外观模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单得使用子系统。它负责把客户端的请求转发给子系统内部的各个模块进行处理。 2.使用场景1)当你要为一个复杂子系统提供一个简单接口时。2)客户程序与抽象类的实现部分之间存在着很大的依赖性3)当你需要构建一个层次结构的子系统时 3.UML结构图分析 4.代码    5.外观模式优点1)由...

2018-03-03 13:12:35 105

原创 设计模式-装饰模式

设计模式-装饰模式一、装饰模式详解1.概念装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 2.使用场景(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责 (2)当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式 3.UML结构图...

2018-03-03 13:11:35 133

原创 设计模式-adapter

设计模式-adapter 一.adapter模式详解1.适配器模式定义将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper) 2.类适配器1)类适配器定义类的适配器模式把适配的类的API转换成目标类的API 2)UML结构图解释 3)code    4)总结类适配器使用对象继承的方式,是静态的定义方式 对于类适配器,适配器可以重定义Ada...

2018-03-03 13:10:29 205

原创 设计模式-builder

设计模式-builder一、java的builder模式详解1.概念建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象和创建过程分离 2.使用场景当构造一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候 3.UML结构体分析  4.实际代码分析     总结1.Builder:它为创建一个产品Product对象的各个部件指定抽象接口2.ConcreteB...

2018-03-03 13:08:14 148

原创 设计模式-单例

设计模式-单例一、单例介绍1.单例概念单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例 2.好处对应频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销 由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间 二、单例的六种写法和各自特点饿汉  public class...

2018-03-03 13:04:47 121

原创 Java高级技术-反射

Java高级面试-反射一、编译时vs运行时编译时:将Java代码编译成.class文件的过程,不涉及内存运行时:就是Java虚拟机执行.class文件的过程,用到内存调用 编译时类型:编译时类型由声明该变量时使用的类型决定(animal)运行时类型:运行时类型由实际赋给该变量的对象决定(dog)Animal animal = new Dog(); 动态绑定-调用引用实例的方法1.在编译时,是调用声...

2018-03-03 13:02:28 193

原创 Java高级技术-GC相关

 Java高级面试-GC相关 一、classloader1.什么是类加载器ClassLoader就是用来动态加载class文件到内存当中用的 2.类加载类型(站在程序员角度)BootStrap ClassLoader:启动类加载器,由C++语言实现(针对HotSpot),负责将存放在<JAVA_HOME>\lib目录或-Xbootclasspath参数指定的路径中的类库加载到内存中,即...

2018-03-03 12:27:41 139

原创 Java高级技术-注解

Java高级面试-注解一、注解概念1.什么是注解Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法 基本的规则:Annotation不能影响程序代码的执行,无论增加、删除Annotation,代码都始终如一的执行 2.什么是metadata1)元数据以标签的形式存在于Java代码中2)元数据描述的信息是类型安全的3)元数据需要...

2018-03-03 12:25:33 159

原创 Java高级技术-异常

Java高级面试-异常一、异常体系1.error/Exception 2.运行时异常和非运行时异常  二、异常使用1.运行Java异常处理机制1)try...catch语句2)finally语句:任何情况下必须执行的代码3)throws子句:声明可能会出现的异常4)throw语句:抛出异常 2.异常处理的原理1)Java虚拟机用方法调用栈(method invocation stack)来跟踪每个...

2018-03-03 12:21:54 291

原创 Java高级技术-多线程

Java高级面试-多线程一、多线程创建1.thread/runnable1)继承Thread类  2)实现Runnable接口   2.两种启动线程方法的区别Thread类实现了Runable接口。都需要重写里面Run方法。 区别实现Runnable的类更具有健壮性,避免了单继承的局限。Runnable更容易实现资源共享,能多个线程同时处理一个资源。 3.star方法和run方法的区别区别:调用s...

2018-03-03 12:16:28 128

原创 Java高级技术-IO

Java高级面试-IO一、java网络编程1.基础知识1)ip地址和端口号2)tcp/udp协议3)URL同一资源定位器 4)InetAddress 2.socket1)创建socket实例 2)客户端链接①创建Socket对象②连接建立后,通过输出流向服务端发送请求信息③通过输入流获取服务器响应的信息④关闭响应资源  3)服务端连接①创建ServerSocket对象,绑定监听端口②通过accep...

2018-03-03 12:07:41 212

原创 热门前沿知识-进程保活

进程保活一、Android进程的优先级1.Foreground process(前台进程)2.Visible process(可见进程)3.Service process(服务进程)4.Background process(后台进程)5.Empty process(空进程) 二、Android进程的回收策略1.Low memory killer:通过一些比较复杂的评分机制,对进程进行打分,然后将分...

2018-03-03 11:39:10 200

原创 热门前沿知识-Android热更新

Android热更新一、热更新流程1.线上检查到严重的crash2.拉出bugfix分支并在分支上修复问题3.jenkins构建和补丁生成4.app通过推送或主动拉取补丁文件5.将bugfix代码合到master上 二、主流热更新框架介绍1.Dexposed2.AndFix3.Nuwa 三、热更新原理1、Android类加载机制PathClassLoaderDexClassLoader 2.热修复...

2018-03-03 11:35:44 243

原创 热门前沿知识-Android插件化

Android插件化一、插件化的由来65536/64k 二、插件化要解决的问题 1.动态加载apk 在Android中可以跟java一样实现动态加载jar,但是Android使用德海Dalvik VM,不能直接加载java打包jar的byte code,需要通过dx工具来优化Dalvik byte code。Android在API中给出可动态加载的有:DexClassLoader 和 PathCl...

2018-03-03 11:25:55 175

原创 热门前沿知识-MVC/MVP/MVVM

MVC/MVP/MVVM 一、MVC1.MVC定义M:业务逻辑处理(自定义Modele接口:数据库、网络、耗时操作)V:处理数据显示的部分(xml布局)C:Activity处理用户交互问题(Activity) 2.MVC特点耦合性低可扩展性好模块职责划分明确 3.MVC实例讲解 添加接口实现接口,在接口中实现想要的功能,定义抽象方法 4.总结①利用MVC设计模式,使得项目有了很好的可扩展和维护性②...

2018-03-03 11:23:42 163

原创 Android异常与性能优化-其他优化

其他优化一、android不用静态变量存储数据1.静态变量等数据由于进程已经被杀死而被初始化2.其他数据传输方式:文件/sp/contentProvider 二、有关Sharepreference的安全问题1.不能跨进程同步2.存储Sharepreference的文件过大问题 三、内存对象序列化序列化:将对象的状态信息转换为可以存储或传输的形式的过程Serializeble Parcelable1...

2018-03-03 11:19:28 124

原创 Android异常与性能优化-冷启动优化

冷启动优化一、什么是冷启动1.冷启动的定义冷启动就是在启动应用前,系统中没有该应用的任何进程信息 2.冷启动/热启动的区别热启动:用户使用返回键退出应用,然后马上又重新启动应用 特点①冷启动:冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。②热启动:热启动因为会从...

2018-03-03 11:14:43 159

原创 Android异常与性能优化-内存管理

内存管理一、内存管理机制概述1.分配机制2.回收机制 二、Android内存管理机制1.分配机制让更多的进程存在在内存当中2.回收机制 三、内存管理机制的特点1.更少的占用内存2.在合适的时候,合理的释放系统资源3.在系统内存紧张的情况下,能释放掉大部分不重要的资源,来为Android系统提供可用的内存4.能够很合理的在特殊生命周期中,保存或者还原重要数据,以至于系统能够正确的重新恢复该应用 四、...

2018-03-03 11:06:27 132

原创 Android异常与性能优化-内存泄漏

一、java内存泄漏基本知识1.java内存的分配策略1)静态存储区(方法区,静态数据、全局变量) 2)栈区(局部变量) 3)堆区(new出来的对象、数组,有GC) 2.java是如何管理内存的  3.java中的内存泄漏内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄漏  二、Android内存泄漏1.单例  2.匿名内部类(改...

2018-03-03 10:56:40 142

原创 Android异常与性能优化-UI卡顿

UI卡顿一、UI卡顿原理60fps->16ms Overdraw(background和子布局设置重叠) 二、UI卡顿原因分析1.人为在UI线程中做轻微耗时操作,导致UI线程卡顿 2.布局Layout过于复杂,无法在16ms内完成渲染 3.同一时间动画执行的次数过多,导致CPU或GPU负载过重 4.View过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU或GPU负载过重 5.Vi...

2018-03-03 10:52:26 319

原创 Android异常与性能优化-Bitmap

Bitmap面试有关问题详解1.recycle  2.LRU(最近最少使用) 通过泛型类并使用LinkedHashMap并使用get()和put()方法来完成缓存添加和获取操作  缓存满时使用trimToSize把最早最少用的缓存对象从缓存队列移除并添加新的缓存对象 3.计算inSampleSize  4.缩略图  5.三级缓存网络缓存本地缓存内存缓存(优先加载)...

2018-03-03 10:47:44 123

原创 Android异常与性能优化-ANR&OOM

Anr&OOM面试详解一、Anr1.什么是anrApplication Not Responding(程序无响应) 2.造成anr的主要原因应用程序的响应性是由Activity Manager和WindowManager系统服务监视的 ·主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞·主线程中存在耗时的计算 Android中哪些操作是在主线程呢?Activity的所有生命周期...

2018-03-03 10:39:43 438

原创 开源框架-glide

glide图片框架面试问题一、使用  二、源码详解http://blog.csdn.net/yulyu/article/details/60331803

2018-03-03 10:32:39 114

原创 开源框架-Butterknife

Butterknife原理一、Butterknife使用简介其实就是一个依托Java注解机制来实现辅助代码生成的框架 1.绑定一个view2.给一个View添加点击事件3.给多个View添加点击事件4.给ListView setItemClickListener   二、Butterknife原理1.开始它会扫描Java代码中所有的ButterKnife注解2.ButterKnifeProcess...

2018-03-03 10:20:06 187

原创 开源框架-Volley

Volley源码解析一、volley使用简介1.首先需要获取到一个RequestQueue对象2.创建一个StringRequest对象3.将StringRequest对象添加到RequestQueue里面 总结:通过newRequestQueue(...)函数新建并启动一个请求队列RequestQueue后,只需要往这个RequestQueue不断add Request即可。 二、volley源...

2018-03-03 10:16:42 192

原创 开源框架-retrofit

retrofit源码解析一、retrofit使用简介1.在retrofit中通过一个接口作为http请求的api接口2.创建一个Retrofit实例3.调用api接口  一、retrofit源码剖析动态代理1.首先,通过method把它转换成ServiceMethod;2.然后,通过serviceMethod,args获取到okHttpCall对象;3.最后,再把okHttpCall进一步封装并返...

2018-03-03 10:13:56 181

原创 开源框架-OkHttp

OkHttp源码解析一、OkHttp使用简介1.创建一个OkHttpClient对象2.创建一个request对象,通过内部类Builder调用生成Request对象3.创建一个Call对象,调用execute(同步)/enqueue(异步) 同步:   异步:   二、OkHttp源码分析  可见Interceptor(拦截器)是 OkHttp 最核心的一个东西,不要误以为它只负责拦截请求进行一...

2018-03-03 09:55:37 183

原创 Android项目构建-Proguard

Proguard面试问题详解一、proguard到底是什么ProgGuard工具是用于压缩、优化、混淆我们的代码,主作用是可以移除代码中的无用类、字段、方法和属性同时可以混淆 二、proguard技术的功能1.压缩(打包时删掉无用类) 2.优化(对字节码文件优化,移除.class文件里的无用字节码指令)字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式,它本身是二进制文件,但是...

2018-03-03 02:14:02 164

空空如也

空空如也

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

TA关注的人

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