自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(384)
  • 资源 (19)
  • 收藏
  • 关注

原创 Android apt 遇到问题的例子

这篇apt 的Demo 是为了解释我在编写apt 代码时遇到的一个问题。简单写一下步骤,解释下遇到的问题。 as 版本:4.1.1 (版本不同配置上可能会有所不同)前言这里就简单仿照ButterKnife写个BindV的注解。先看下最终的使用class MainActivity : AppCompatActivity() { @BindV(R.id.tv) // 1 注解 lateinit var tv: TextView; override fun onCreate(sa

2021-01-07 11:51:14 617

原创 Android apt被注解为Kotlin写的代码时不能自动生成文件bug

记录一下自己遇到的问题, 写了个类似Butterknife,通过注解可以自动生成代码的逻辑,但是在运行的时候发现并没有生成相关文件。具体解释一下,(1)自己写了一个类似ButterKnife可以在编译时生成对应文件的apt(Annotation processor tool 注解处理器)(2)注解在一个Kt文件上,编译后没有自动生成对应的文件,但是注解在java文件上就可以生成对应的文件。Demo 链接原因:涉及到注解的注解处理器依赖也会由annotationProcessor替换成kapt解

2021-01-07 11:50:45 1350 1

原创 Android 进程通信

Android Framework下的跨进程通信方式管道(pipe):半双工,单向的,只能读或者只能写,一般在父子进程间使用。(Looper 4.4版本之前用的管道,后面被替换为eventfd)Socket:全双工,既可以读也可以写,两个进程之间无需亲缘关系。(zygote使用的是socket)共享内存:很快,不需要多次拷贝,进程之间无需亲缘关系。(进程之前大数据传输,比如图片,会被使用)信号:单向的,发出去之后怎么处理是别人的事,只能带个信号,不能带其他参数,知道进程pid就能发信号,而且可以一次

2020-12-30 11:45:19 378

原创 Android 线程通信

Handler相关代码分析:Handler 持有 Looper 和 MessaegeQueue可以在子线程创建handler吗可以,需要调用Looper.prepare和Looper.loop主线程的Looper和子线程的Looper的区别子线程的Looper可以退出,主线程的Looper不可以退出Looper 和MessageQueue 有什么关系一对一的关系消息循环过程是怎么样的Looper.loop() 通过 for (;???? 死循环,不断从messageQueue中

2020-12-29 21:03:28 234

原创 HashMap conCurrentHashmap Linkedhashmap Linkedhashset Arraymap SparseArray

HashMap1 hashMap底层实现原理数组加原理 数组过多会转成树的方式2 hashMap 怎么扩容的根据扩容因子 和 所能承载的表的容器量 2的倍数扩容,树里边rehash 看是否需要调整位置,rehash 1.7到1.8 有个rehash的区别为什么长度最开始是16呢?hashMap是线程安全的吗?想要线程安全需要用什么?concurrentHashMap也有1.7 1.8的区别 头插法与尾插法LinkedHashMap一般什么情况下用到需要记录顺序的时候使用LinkedHa

2020-12-27 20:51:37 322

原创 java 的注解 反射 http 协议 socket

注解https://zhuanlan.zhihu.com/p/85612062https://juejin.cn/post/6844903636733001741注解的作用用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。ps:元数据的概念(1)元数据在开发中的作用就是做数据约束和标准定义,可以将其理解成代码的规范标准(代码的模板);(2)代码的模板(元数据)不直接影响代码的执行,它只是帮助我们来更快捷的开发;注解的本质是

2020-12-27 16:56:35 223

原创 TCP与UDP 的区别

二者区别:面向连接 vs 无连接可靠性 vs 不保证可靠性有序性 vs 无序速度慢(因为要建立连接) vs 速度快 (比如视频)量级大 vs 量级小详细描述UDP:1 面向非连接2 不维护连接状态,支持同时向多个客户端传输相同的消息3 数据包报头只有8 个字节,额外开销比较小4 吞吐量只受限于数据生成速率,传输速率以及机器性能5 尽最大努力交付,不保证可靠交付,不需要维持复杂的连接状态表6 面向报文,不对应用程序提交的报文信息进行拆分或者合并TCP:...

2020-12-27 16:53:55 214

原创 Http 相关面试题

1 问题:在浏览器地址栏键入URL,按下回撤之后经历的流程答案:1 DNS解析2 TCP连接3 发起HTTP请求4 服务器处理请求并返回HTTP报文5 浏览器解析渲染页面6 连接结束问题: HTTP 状态码五种可能取值1xx:指示信息----表示请求已接收,继续处理2xx: 成功—表示请求已被成功接收、理解、接受3xx:重定向—要完成请求必须进行更进一步的操作4xx: 客户端错误:请求有语法错误或者请求无法实现5xx: 服务端错误–服务器未能实现合法的请求常见状态码200 o

2020-12-27 16:20:32 234

原创 Java 基础--线程 锁 线程池

线程1 概念进程与线程的区别:进程:是资源分配的最小单位线程:是cpu调度的最小单位进程是抢占处理机的调度单位,线程属于某个进程,共享其资源线程只由堆栈寄存器 程序计数器 和 TCB组成进程与线程的区别线程不能看作独立应用,而进程可以看作独立应用进程有独立的地址空间,相互不影响,而线程只是进程的不同执行路径线程没有独立的地址空间,多进程的程序比多线程程序健壮进程的切换比线程切换开销大线程中start 与 run 方法的区别start() 会创建一个新的子线程并启动run()只是T

2020-12-25 20:06:45 512

原创 Java基础-- 继承 多态 泛型 接口 动态绑定 动态代理

继承1 概念:之所以叫继承,是因为子类继承了父类的行为与属性,父类有的行为和属性子类也都有,子类可以增加子类特有的属性,子类的实现方式也可能与父类不同优点:一方面,可以复用代码,公共的行为与属性可以放到父类中处理,子类只需要关注子类特有的。另一方面,不同的子类可以统一管理多态1 概念:多态:就是一种类型的变量,可以引用多种类型的实际变量动态绑定:比如我们有个父类Shape 实现了draw方法, Shape就是静态类型,而Shape的子类 Rectangle Circle 之类的就是动态类型,

2020-12-25 00:10:57 677

原创 Android 题

java基础:设计模式: https://danfeng.blog.csdn.net/article/details/101048315算法:

2020-12-24 10:23:48 180

原创 Java基础 JVM 、垃圾回收、classloader

JVM 相关问题1 Jvm(java虚拟机运行时内存) 包括哪些区域?包括线程私有的区域 和线程公有区域线程私有区域: 程序计数器、虚拟机栈、本地方法栈线程公有区域:堆、方法区程序计数器:当前线程正在运行的字节码指令地址(行号)虚拟机栈(OutOfMemoryError 、StackOverflowError):存储运行程序所需要的数据 指令 返回地址,每个方法执行的时候都会创建一个栈帧,栈帧中存储了 局部变量 、操作数栈(方法中调用方法的时候)、动态链接(涉及多态的时候),返回地址,每一个方

2020-12-24 01:37:19 408

原创 AppBar半收缩效果

这种效果一般用在顶部最开始是个视频样式中,滚动过程中视频收缩.借助的主要是AppBarLayout.Behavior ,相关代码如下:自定义CollapseAppBarBehaviorpackage com.google.android.material.appbarclass CollapseAppBarBehavior : AppBarLayout.Behavior { constructor() : super() constructor(context: Context?.

2020-12-22 12:18:54 200

原创 Android RecyclerView 吸顶效果(二)

请先阅读Android RecyclerView 吸顶效果(一),推荐参考第一篇文章的方案来实现,这里只是帖一下第二种方案的代码,简单的介绍一下ItemDecoration实现效果:ItemDecoration太懒了,截个图,如有侵权,请告知,会进行删除!主要代码StickyItemDecorationclass StickyItemDecoration(val context: Context, val mList: MutableList<Bean> = mutableLis

2020-11-05 20:31:28 482

原创 Android RecyclerView 吸顶效果(一)

实现效果:实现方案介绍recyclerView实现吸顶效果有2种方案:方案1: 通过ItemDecoration 并重写对应的getItemOffsets()、onDraw()、onDrawOver()方法方案2: 通过xml布局,并设置RecyclerView的scrollListener的监听的方式简单讲下2种方式优缺点:方案1:优点:封装性好,使用友好,相关逻辑封装在ItemDecoration中,没有外部逻辑缺点:扩展性不好,需要通过canvas进行绘制,如果吸顶控件ui比较复杂,

2020-11-05 16:28:47 2839 2

原创 zsh配置新命令

公司项目进行了平台迁移,因此命令行进行了定制化比如我们的git命令被定制成了kkgit,这时候我的zsh就出现问题了,比如下图这种: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201020104529852.png#pic_center)那zsh要怎样配置新命令:vi .bash_profile...

2020-10-22 18:14:23 1805

原创 Git 常用命令

**1 查看所有分支(远程分支+本地分支) **git branch -a2 切换分支git checkout 分支名3 删除分支git branch -D 分支名4 下拉更新代码git pull --rebase** 5 文件状态查询**git status** 6 代码从工作区提交到暂存区 **git add ,或者git add 文件绝对路径** 7 取消某个添加到暂存区的文件**git reset HEAD 文件绝对路径** 8 将暂存区里的改动给提

2020-07-27 21:37:23 707 1

原创 设计模式——解释器模式

解释器模式定义

2020-03-27 11:48:53 241 1

原创 自我反思

这里只想记录一下自己工作上的反思能力方面(1)需要提升自己的语言表达能力,学习怎么将一个问题表达清楚,还有学习如何与产品沟通(2)做需求前需要充分地了解产品的需求点是什么,只有更好的了解了产品大大的需求点,才能更好的沟通及解决相关问题,比如由于历史代码架构原因,产品提出的某个需求当下的架构是满足不了,快速开发当下的需求的,此时就需要根据产品需求点,提出合理的解决方案,从而达到双方的共识。(...

2020-02-27 20:54:42 816 1

原创 Java 设计模式

点击文字可进行跳转创建型简单工厂模式(Simple Factory)工厂方法模式 (Factory Method)抽象工厂模式(Abstract Factory)建造者模式(Builder)原型模式(Prototype)单例模式(Singleton)结构型模式适配器模式(Adapter)桥接模式(Bridge)组合模式(Composite)装饰模式(Decorator)外...

2020-01-03 17:12:42 300

原创 mac adb配置 及zsh 配置

mac下配置adb(1)打开你的as找到你的sdk的位置(2)打开终端,通过cd +/Users/wangdanfeng/Library/Android/sdk进入sdk目录下,再cd 到platform-tools 目录下(3)运行下面两行命令touch .bash_profileopen .bash_profile在文档中添加下面两行export PATH=${PATH}:...

2019-10-30 18:30:41 1299

原创 设计模式——享元模式

享元模式定义

2019-10-29 20:52:59 340 1

原创 设计模式——中介者模式

中介者模式定义:

2019-10-28 07:54:17 399

原创 设计模式——迭代器

迭代器定义提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示(简单来说就是遍历)类型:行为型使用场景(1)访问一个集合对象中的各个元素又不暴露该对象的内部表示(2)为遍历不同的集合结构提供一个统一的接口优缺点优点:分离了集合对象的遍历行为缺点:类的个数成对增加其他相关设计模式迭代器模式和访问者模式:都是迭代的访问集合对象中的各个元素,区别:访问者模式扩...

2019-10-27 23:28:27 330

原创 设计模式——适配器模式

适配器模式定义:将一个类的接口转换成客户期望的另一个接口,使原本就扣不兼容的类可以一起工作类型:结构型适用场景:已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。优点:(1)能提高类的透明性和复用,现有的类复用但不需要改变(2)目标类和适配类解耦,提高程序扩展性(...

2019-10-27 22:57:47 247

原创 设计模式——外观模式

外观模式定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口外观模式定义了一个高层接口,让子系统更容易使用类型:结构性使用场景:(1)子系统越来越复杂,增加外观模式提供简单调用接口(2)构建多层系统结构,利用外观对象作为每层的入口,简化层间调用优点:简化了调用过程,无需了解深入子系统,防止带来风险减少系统依赖,松散耦合更好地划分访问层次符合迪米特法则,即最少直...

2019-10-27 22:56:39 204

原创 设计模式——状态模式

状态模式定义允许一个对象在其内部皇台改变时改变他的行为类型:行为型使用场景一个对象存在多个状态(不同状态下行为不同),且状态可相互转换状态转换的情况比较复杂优缺点优点:将不同的状态隔离把各种状态的转换逻辑,分布到state的子类中,减少相互间依赖增加新的状态非常简单缺点:状态多的业务场景导致类的数目增加,系统变复杂与其他模式的关联状态模式与享元模式有时候配合使用De...

2019-10-27 13:00:41 317

原创 设计模式——抽象工厂

抽象工厂定义抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,无须指定他们具体的类类型:创建型适用场景客户端不依赖于同一产品实例如何被创建、实现等细节强调一些列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复代码提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现优缺点优点:具体产品在应用蹭代码隔离,无须关心具体创建细节将一个系列的产品...

2019-10-25 19:10:23 269

原创 设计模式——工厂方法模式

定义定义一个创建对象的接口,但实现让这个接口的类来决定具体实例化哪个类,工厂方法让类的实例化推迟到子类中进行类型:创建型使用场景(1)创建对象需要大量重复的代码(2)客户端不依赖于产品类实例如何创建、实现等细节(3)一个类通过其子类来指定创建哪个对象优缺点优点:用户只需要关心所需产品对应的工厂,无需关心创建细节加入新产品符合开闭原则,提高可扩展性缺点:类的个数容易过多,增...

2019-10-21 07:56:23 228

原创 设计模式——访问者模式

访问者模式简介定义封装作用于某种数据结构(如List Set Map等)中各元素的操作可以在不改变各元素的类的前提下,定义作用于这些元素的操作类型:行为型适用场景访问者模式平时被使用到的比较少(1)一个数据结构包含很多类型的对象(2)数据结构与数据操作分离优缺点优点增加新的操作很容易,即增加一个新的访问者缺点增加新的数据结构比较困难具体元素的变更比较麻烦相关设计模式...

2019-10-20 23:32:28 161

原创 设计模式 ——命令模式

命令模式简介定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,对请求排队或记录请求日志,以及支持可撤销的操作优点(摘自大话设计模式)(1)比较容易地设计一个命令队列(2)在需要的情况下,可以比较容易地将命令记入日志(3)允许接受请求的以放决定是否要否决请求(4)可以容易地实现对请求的撤销和重做,新增加的具体命令类不影响其他类使用场景需要抽象出待执行的操作,然后...

2019-10-20 22:34:55 393

原创 设计模式——简单工厂模式

简单工厂模式介绍定义由工厂对象决定创建出哪一种产品类的实例类型:创建型优缺点优点简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖只需要传入一个正确的参数,就可以获取你需要的对象。缺点增加新产品的时候需要修改工厂类的逻辑,违背了开闭原则。与工厂模式工厂方法模式定义一个用于创建对象的接口,让子类...

2019-10-10 20:05:57 180

原创 设计模式——备忘录模式

备忘录模式介绍定义保存一个对象的某个状态,以便在适当的时候恢复对象类型行为型使用场景保存及回复数据相关业务场景优缺点优点为用户提供一种可恢复机制,存档相关信息缺点资源占用实例package com.df.designpatterns.mementopattern;public class Memento { private String title; pr...

2019-10-10 20:04:55 179

原创 设计模式——模板方法模式

模板方法模式简介定义定义了一个算法的骨架,并允许子类为一个或者多个步骤提供实现模板方法使子类在不改变算法结构的情况下,重新定义算法的某些步骤类型:行为型使用场景(1)一次性实现一个算法的不变部分,将可变的行为留给子类(2)各个子类中的公共行为被提取出来,并集中到一个公共父类中,从而避免代码重复优点提高复用与扩展 符合开闭原则相关设计模式模板方法与工厂方法模式工厂方法是模板方...

2019-10-09 08:34:00 199 1

原创 常见算法

在这里插入代码片二分查找算法public class Test { public static void main(String[] args) { int[] array=new int[]{1,2,3,4,5,6,7,10}; int index=binarySearch(array,0,array.length-1,10); Sy...

2019-09-28 23:10:40 226

原创 Kotlin伴生对象

伴生对象:必须声明在某个类中。(1)应用一例子:java中我们可以通过StringUtil.isEmpty()的方式直接调用如下代码public class StringUtil { public static boolean isEmpty(String str){ return "".equals(str); }}在kotlin中如果我们想直接调用...

2019-09-28 23:03:23 1060

原创 设计模式——组合模式

组合模式简介定义将对象组合成树形结构,以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性类型:结构型适用场景(1)希望客户端可以忽略组合对象与单个对象的差异的时候(2)还有就是处理树形结构的时候,比如菜单,菜单下面有子菜单,子菜单下面还有菜单,以及目录,目录下有子目录优缺点优点:可以清除地定义分层次的复杂对象,表示对象的全部或部分层次让客户端忽...

2019-09-24 00:09:50 169

原创 设计模式——建造者模式

建造者模式介绍定义将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示用户只需要指定需要建造的类型就可以得到他们,建造的过程及细节不需要知道类型:创建型适用场景对象有非常复杂的内部结构(很多属性)想把复杂对象的创建与适用分离优缺点优点:封装性好,创建于与使用分离,一定程度上进行解耦缺点:产生多余的Builder对象,同时产品内部如果发生变化,建造者也需要进行...

2019-09-23 15:49:47 384

原创 设计模式——原型设计模式

定义:指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。特点:不需要知道任何创建的细节,不调用构造函数创建型使用场景类初始化消耗较多资源new 产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)构造函数比较复杂循环体中生产大量对象时优点:原型模式性能比直接new一个对象性能高简化创建过程缺点:必须配备克隆方法对克隆复杂对象或对克隆出的对象进行复杂改造时...

2019-09-23 13:25:00 360

原创 设计模式——策略模式

定义:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法变化,不会影响到使用算法的客户。if……else……类型:行为型适用场景:系统有很多类,而他们的区别仅仅在于他们的行为不同一个系统需要动态地在集中算法中选择一种。优点:开闭原则避免使用多重条件转移语句提高算法的保密性和安全性缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类产生很多策略类相关...

2019-09-23 11:09:02 157

kotlin-for-android-develapers-中文

kotlin-for-android-develapers-中文.pdf文档 。提供给大家

2017-10-20

彩色圆形进度条

彩色圆形进度条

2017-05-17

xf-adobecc2015

AE用于产生注册码的 xf-adobecc2015

2017-05-04

android事件分发机制

android事件分发机制

2016-12-29

VMware-MAC-patch-unlock-all-v120

VMware-MAC-patch-unlock-all-v120.zip 安装教程请查看本人博客

2016-12-16

Android 车牌识别

Android 车牌识别

2016-12-13

PHP 与MySQL+web开发相关文档

PHP 与MySQL+web开发相关文档

2016-12-13

window下本地git服务器搭建详解

window下本地git服务器搭建与使用详解

2016-11-18

pdfview基于我的一篇博客

http://blog.csdn.net/danfengw/article/details/50351673 基于这篇博客提供的源文件

2016-11-10

tinkerDemo的两个apk可以安装试一下

tinkerDemo简单的实现了热补丁,具体的还没尝试,安装上baseApk(app-debug-1019-15-16-03)之后,将patch_signed_7zip放置到Environment.getExternalStorageDirectory()+File.separator;+ "FixPath"+File.separator+"patch_signed_7zip.apk";路径下面,如果你不能确定该路径,具体详见里面的说明。具体的实践详见博客。http://blog.csdn.net/danfengw/article/details/52848948

2016-10-19

EchartDemo

利用Echart在Android端实现柱状图饼图的展示

2016-02-18

tomcatplugin

tomcatplugin用于Ecplise中搭建Servelet时的插件使用

2016-02-18

apache-tomcat-7.0.63-windows-x64.zip

用于Serverlet服务器的搭建,作为搭建Servelet的插件使用

2016-02-15

SVN插件Tortoise

该SVN插件主要是用于Ecplise的SVN的配置,用于同步和管理代码

2016-01-31

SVN插件(Tortoise)

该SVN插件主要是用于ecplise的,用于代码版本管理

2016-01-31

录制gif动画工具

该工具可以用于录制gif动画,类似于我博客中的效果图

2015-12-01

反编译工具及其用法

APP反编译工具及其使用方法的说明,说明详细,使用简单。

2015-11-03

空空如也

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

TA关注的人

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