4 hzulwy

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 11w+

设计模式之备忘录模式

备忘录模式用于保存对象当前状态(即属性),并且在之后可以再次恢复到此状态,这有点像我们平时说的"后悔药"。备忘录模式实现的方式需要保证备保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可将该对象恢复到原先保存的状态。使用场景(1)需要保存一个对象在某一个时刻的状态或部分状态。(2)如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象

2020-07-06 00:11:04

设计模式之装饰者模式

定义动态地给一个对象添加一些额外地职责使用场景需要透明且动态地扩展类的功能时代码展示//装饰者模式最主要的是要区分哪些类是装饰者,哪些类是被装饰者public abstract class Person {//装饰者类 public abstract void dressed();}public class Boy extends Person{ @Override public void dressed() { System.out.pri.

2020-06-30 09:23:34

设计模式之原型模式

定义用原型实例指定创建对象的种类,通过复制这些原型创建新的对象。使用场景(1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型避免这些消耗。(2)通过new产生一个对象需要非常繁琐的数据准备或访问权限,这时可以使用原型模式。(3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用,即保护性拷贝(修改拷贝对象的属性不会影响到被拷贝对象(原型对象)的属性)。需要注意的是,通过实现Cloneable接口的原型模式在调用.

2020-06-26 21:20:05

设计模式之工厂方法模式

定义定义一个用于创建对象的接口,让子类决定实例化哪个类。使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式。public interface Car { public void make(); public void buy();}public class BMW implements Car{ @Override public void make() { System.out.println("生产宝马.

2020-06-26 03:09:12

TypeScript基础入门2

函数与js一样,ts可以创建有名字的函数和匿名函数。定义函数function add(x: number, y: number): number { return x + y;}//有名字的函数let myAdd = function(x: number, y: number): number { return x + y; };//匿名函数函数类型包含了两个部分:参数类型和返回值类型.所以我们可以给一个变量赋值一个函数类型:let add2:{x:number,y:numb

2020-06-21 20:30:09

TypeScript基础入门1

安装TypeScript使用命令 npm i typescript --save即可为当前目录安装typescript,但是typescript的tsc命令并不能直接运行typescript代码,它只是将ts代码编译成js代码,生成一个js文件,所以通常我们还会安装typescript的运行时ts-node:npm i -g ts-node.注意:ts-node并不等于typescript的node.js,仅仅封装了typescript的编译过程,提供直接运行typescript的能力。类型与函数

2020-06-21 17:23:49

Android开源框架之Retrofit

Retrofit是一个类型安全的HTTP的客户端,在Android和Java中都可使用。Retrofit通过注解实现RESTful网络接口,底层使用Okhttp完成网络请求的实现。另外,Retrofit封装了主线程和子线程的切换以及网络数据的解析,在使用上要比OkHttp便利不少。Retrofit的使用步骤添加依赖dependencies { //Retrofit依赖 c...

2020-05-09 20:36:39

Android Studio中的Git实践

Git是一个开源、分布式的版本控制系统,与集中式版本控制系统(如SVN)最大的区别在于每个开发者都会有一个本地仓库,代码可以提交到本地,不需要依赖远程代码仓库。创建远程仓库通常一个项目需要创建一个远程代码仓库。我们可以使用GitHub、GitLab等代码托管平台,或者也可以使用GitLab、Gitblit等部署一个代码服务器。创建一个远程空仓库的时候,不要添加README、.gitigno...

2020-05-06 21:47:32

Android开发之ProGuard技术

ProGuard简介ProGuard一共包括以下4个功能,其中每个功能都是可选的,我们可以通过配置脚本来决定执行其中的哪几个功能,ProGuard的执行流程如下图。压缩(Shrink):侦测并移除代码中无用的类、字段、方法和属性。优化(Optimize):对字节码进行优化,移除无用的指令。混淆(Obfuscate):使用a、b、c、d这样简短而无意义的名称,对类、字段和方法进行重命名。...

2020-05-03 00:42:56

软件架构形式

C/S(客户端/服务器)一般我们使用的软件都是C/S架构,例如:QQ、微信、淘宝C代表客户端,用户通过客户端来使用软件S表示服务器,服务器负责处理软件的业务逻辑特点软件使用前必须得安装,像手机或电脑使用QQ、微信都要安装客户端软件更新时,服务器和客户端同时更新C/S架构的软件不能跨平台使用,像手机版的QQ不能再windows上运行C/S架构的软件客户端和服务器通信采用的是自己...

2020-05-02 21:10:20

NodeJS基础知识之2

包(Package)CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具。CommonJS的包规范由包结构和包描述文件两个部分组成。包结构:用于组织包中的各种文件包描述文件:描述包的相关信息,以供外部读取分析包结构注意:除了package,json文件是必需的之外,其他文件都是非必需的。包描述文件NPM(Node Package Manager)...

2020-05-01 19:51:51

NodeJS基础知识之1

简介Node.js是一个能够在服务器端运行JavaScript代码的跨平台JavaScript运行环境。Node大部分模块都是用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。Node.js可以理解成一个已经实现好功能的服务器,它通过命令行的形式将程序员实现好功能的js代码导入服务器中运行进而得到结果。程序员也可以...

2020-05-01 18:35:04

Android运行时权限

在Android6.0之前,,如果我们需要某一个权限会在AndroidManifest.xml添加标签,app尚未启动时就要求用户授予或者拒绝某些系统权限在Android6.0及以后的版本,引入了运行时权限的设计规范。运行时权限会在APP运行时请求用户对权限进行授予或拒绝,严格把控app安全风险。下面介绍Android运行时权限常规开发步骤在AndroidManifest.xml文件中...

2020-04-21 16:57:50

Android开源框架之OpenDanmaku

简介OpenDanmaku是Android中第三方的弹幕控件,在播放视频和直播软件中过程中弹出用户的评论,并且以滚动的方式显示。使用下载地址:https://github.com/linsea/OpenDanmaku项目关联库Gradle dependencies { compile 'com.linsea:opendanmaku:1.0.0@a...

2020-02-05 19:49:22

Android开源框架之TabLayout

简介我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合。达到很漂亮的效果。但是TabPageIndicator是第三方的,而且比较老了,当然了现在很多大神都已经开始自己写TabPageIndicator来满足自己的需求,在2015年的google大会上,google发布了新的Android Support Design库,里面包含了几个新的控件,其中就有一个...

2020-02-04 21:15:42

Android开源框架之Banner

简介Banner能实现循环播放多个广告图片和手动滑动循环等功能。因为原生ViewPager并不支持循环翻页, 要实现循环还得需要自己去动手。Banner框架可以进行不同样式、不同动画设置, 以及完善的api方法能满足大部分软件首页轮播图效果的需求。使用下载地址:https://github.com/youth5201314/banner项目关联库dependencies{ ...

2020-02-03 20:36:08

Android开源框架之UniversalVideoView

简介在Android上播放视频最简单的方法是使用SDK中内置的VideoView,然后加上MediaController来控制视频播放暂停等,但是这样有一个缺点是无法定制自己的控制UI,所以这里提供一个自定义播放控件,它可以设置多种自定义属性(如loading样式,错误视频等),并且很容易在全屏与非全屏之间切换,另外支持Android V2.3及以上系统.使用下载地址:https://gi...

2020-02-03 11:13:46

Android开源框架之Android-PullToRefresh

简介PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListView、ExpandableListView、GridView、WebView、ScrollView、HorizontalScrollView、ViewPager等多种常用的需要刷新的View类型,而且使用起来也十分方便。使用下载及官方案例地址:https://github.com/chrisbanes/Andr...

2020-02-02 21:08:41

二叉树基础(上)

首先来看,什么是“树”?再完备的定义,都没有图直观。所以我在图中画了几棵“树”。你来看看,这些“树”都有什么特征?树里面每个元素我们叫作“节点”;用来连线相邻节点之间的关系,我们叫作“父子关系”。比如下面这幅图,A节点就是B节点的父节点,B节点是A节点的子节点。B、C、D这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。我们把没有 父节点的节点叫作根节点,也就是图中的节点E。我们...

2020-02-01 22:26:55

Android开源框架之Fresco

简介Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。相对于ImageLoader,拥有更快的图片下载速度以及可以加载和显示gif图等诸多优势,是个很好的图片框架。特点内存管理:在5.0以下系统,Fresco将图片放到一个特别的内存区域。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅...

2020-01-31 13:59:20

查看更多

勋章 我的勋章
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。