自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式之代理模式(Proxy Pattern)

1. 概述代理模式(Proxy Pattern)也称为委托模式,它提供了一种代理以控制目标对象的访问;即通过代理对象访问目标对象。在某些情况下,目标对象不能被客户端直接应用,而代理对象可以在客户端和目标对象之间起到中介的作用,好比你将一些繁琐的事情交给第三方去管理,那么第三方就是你的代理。举个生活中的例子:假设我们想邀请一位明星,那么并不是直接联系明星,而是联系明星的经纪人,来达到同样的目的。明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决。1.1 定

2020-09-08 16:36:48 183

原创 Java之标准I/O总结

1. 流的概念在Java程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。流涉及的领域很广:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等。流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至外部,我们成为输出流,反之我们称为输入流。可以将流想象成一个“水流管.

2020-08-26 11:37:18 284

原创 Java编译期注解处理器APT

1. APT简介1.1 什么是APT?APT(Annotation Processing Tool)即注解处理器,它是一种处理注解的工具,也是javac中的一个工具。APT可以用来在编译时扫描和处理注解。1.2 APT的作用通过APT可以获取到注解和被注解对象的相关信息,在拿到这些信息后我们可以根据需求来自动的生成一些代码,省去了手动编写。在Android中有如ButterKnife、Dagger、EventBus等第三方框架,都采用了APT。注意,获取注解及生成代码都是在代码编译时候完成.

2020-08-21 15:47:20 467

原创 Java基础之注解Annotation总结

Java 注解用于为 Java 代码提供元数据。作为元数据,注解并不会直接影响你的代码执行。1. 注解的定义注解的定义与类的定义有些类似,只是将class换成@interfacexiu即可public @interface AnnTest { }但仅仅被@interface修饰还不够,一个完整的自定义注解还需要配合元注解使用。所以还先需要了解元注解是什么?怎么使用?2. 注解分类JDK自带注解:@Override、@Deprecated、@SuppressWarni..

2020-08-19 14:40:06 196 1

原创 Java基础之反射Reflection总结

反射基础什么是反射?Java反射是可以让我们在运行时获取类的方法、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况下,我们要使用的类在运行时才会确定,这个时候我们不能在编译期就使用它,因此只能通过反射的形式来使用在运行时才存在的类(该类符合某种特定的规范,例如 JDBC),这是.

2020-08-19 11:39:27 166

原创 Git之tag标签总结

标签的作用通常我们在发布正式软件的时候会打一个tag,tag会记录版本的commit id,如果后面出现问题,可以根据tag来进行回溯,这样比直接回溯commit id要方便的多。标签的命令操作创建标签创建标签如果没有填写commit id ,那么标签默认是打在最新提交的commit上的,即HEAD。git tag <tag> [commit id] 在实际开发中,我们有时候可能忘了打标签怎么办?先通过git log找到忘了打标签的commit记录commit i.

2020-08-14 14:12:54 258

原创 Git之checkout命令总结

创建/切换分支切换分支git checkout <branch> 创建并切换分支git checkout -b <branch> 创建分支并与远程分支相关联git checkout -b <branch> origin/<branch>等价于下面两条语句:git checkout -b <branch>git branch --set-upstream-to=origin/<branch> <.

2020-08-14 10:42:45 3740

原创 Git之branch分支总结

创建/切换分支创建分支git branch <branch>切换分支git checkout <branch>创建并切换分支git checkout -b <branch> 这条语句等价于上面两条语句查看分支查看本地分支git branch查看远程分支git branch -r查看所有分支(包括本地仓库和远程仓库)git branch -a重命名分支git branch -m branchOld branchNew删除分支.

2020-08-14 10:15:13 175

原创 Git之stash命令总结

git stash的作用将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作状态。注意:stash命令只针对于工作区和暂存区修改的文件,对于Untracked状态的文件是不生效的。stash可跨分支操作。git stash 常用场景当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再.

2020-08-13 18:02:14 678 1

原创 Git之理论基础

Git工作区域Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:Workspace:工作区,就是平时存放代码的地方。Stage(Index):暂存区,用于临时存放你的改动。Repository:仓库(本地仓库),就是安全存放数据的位置,这里面有你提交到所有版

2020-08-13 15:39:03 130

原创 Kotlin:Standard.kt标准库常用API总结

在 Kotlin 源码的Standard.kt标准库中提供了一些便捷的内置高阶函数( let、also、with、run、apply ),可以帮助我们写出更简洁优雅的 Kotlin 代码,提高开发效率。但前提是先要对高阶函数有所了解。// 比如这样初始化一个User// 这样的代码是不是简洁优雅,我是比较喜欢这种风格的val user = User().apply { this.name = "kotlin" this.age = 18 this.isMale = tru..

2020-08-12 17:45:22 438

原创 Kotlin:object关键字总结

object关键字主要有三种使用场景对象声明(object declaration)伴生对象(companion object)对象表达式(object expression)对象声明(object declaration)将类的声明和定义该类的单例对象结合在一起(即通过object就实现了单例模式)对象声明中不能包含构造器(包括主构造器和次级构造器)对象声明实例解析以及在kotlin和java代码中的调用object UserManager { fun saveUser..

2020-08-12 13:41:30 247

原创 C语言之函数指针以及应用实例

函数指针的定义一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,与数组名类似。我们可以将这个函数的首地址赋值给一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是函数指针。函数指针的定义形式// returnType:函数返回值类型// pointerName:指针名称// param list:函数的参数列表。参数可以同时指定类型和名称,也可以只指定类型,省略名称。跟函数声明类似returnTy

2020-08-12 09:37:15 3232

原创 Kotlin:in操作符总结

可以用in判断数字是否在某个区间// 检查x数值是否在1到4区间if (x in 1..4){}可以用in判断集合中是否存在某个元素// 检查list中是否有某个元素if (name in list){}可以用in遍历整个区间或者集合// 遍历for(i in 1..4){ print(i) // 1234}// 设置步长for(i in 1..4 step 2) { print(i) // 13}// for(i in 4..1) // error// .

2020-08-11 18:03:23 1188

原创 判断一个数是否为2的n的次方数的六种方法(Java实现)

判断一个数是否为2的n的次方数,是一个很简单的问题。但这里是以多种方式来解决此问题 方法一:将要判断的数转换成二进制数,从左至右,判断是否只有一个1public static boolean method01(int num){ if(Integer.toBinaryString(num).indexOf('1') == Integer.toBinaryString(num).last

2016-03-24 22:54:09 3174

万能的适配器

万能的适配器,适用于所有的GridView、ListView。

2016-03-24

空空如也

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

TA关注的人

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