Java字符串根据\n分割数组无效
摘要:一、概述 在解析STOMP协议字符串的时候发现String.split("\\n")分割不起作用 二、解决办法 str.useDelimiter("\\\\n"); str.skip("\\\\n\\\\n"); str.split("\\\\n")
阅读全文
posted @
2024-08-20 17:41
飘杨......
阅读(73)
推荐(0) 编辑
日期工具类,获取全年每月有几周,分别是多少,且每周对应的是几号到几号
摘要:一、概述 项目需要做日程组件,其中涉及到了日历这块的内容。 需求: 1.获取全年有多少个月 2.获取每月有多少个周 3.获取每月每一天对应的是星期几 4.单独获取某一天对应的是星期几 5.把以上四条组织成为一个集合 二、代码示例 /** * 时间分割工具类 */ public class DateS
阅读全文
posted @
2024-04-25 10:39
飘杨......
阅读(112)
推荐(0) 编辑
SpringBoot获取当前操作用户的id/信息
摘要:一、概述 在一般性的基设需求中,有需要获取当前用户操作记录的情况,也就是说我们需要记录当前用户的信息。如:id、昵称、账号等信息。 这些信息一般用于记录用户的个人行为,例如:用户的操作日志,记录某些数据的更改或者添加者信息等。 本例主要用于记录更改及添加者信息(操作数据库时) 我希望借助mybati
阅读全文
posted @
2023-10-25 10:49
飘杨......
阅读(1450)
推荐(0) 编辑
SpringBoot单体用户登录校验
摘要:一、概述 要做一个有私有空间的单体的SpringBoot项目,用户的权限校验是必须得。需要指定哪些接口需要权限才能访问,哪些接口不需要权限就能访问。 目标: 1.用户登录、注册不需要权限校验,获取用户信息需要权限校验 2.获取用户信息通过token来获取(从token中取出用户id) 3.使用JWT
阅读全文
posted @
2023-09-14 10:52
飘杨......
阅读(260)
推荐(0) 编辑
深copy和浅copy
摘要:一、概述 突然就想到了深浅copy,所以就像说一说自己的理解,然后留作记录以后回顾 二、内容描述 主要分两个方面来说: 1.数据copy后两者是否有关联 2.改变一个值是否会影响另一个值的变化 浅copy: 一方数据发生变化后另一方数据也会跟着变化。也就是说原对象和copy对象所指向的内存地址是同一
阅读全文
posted @
2023-05-04 10:39
飘杨......
阅读(25)
推荐(0) 编辑
Android的TextView匹配子串并改变子串的字体颜色(所有存在的子串)
摘要:一、完全匹配指定字符串并改变指定字符串在TextView中的颜色 /** * @description 改变TextView的部分字体颜色 * @date: 2021/6/17 9:44 * @param view 要改变字体颜色的TextView * @param textColor 字体颜色 *
阅读全文
posted @
2021-06-17 19:38
飘杨......
阅读(266)
推荐(0) 编辑
Android使用AnnotationProcessor模仿ButterKnife
摘要:一、概述 在之前的一篇文章中,我们用反射实现了ButterKnife。但使用反射实现ButterKnife性能会受损。这一节我们使用AnnotationProcessor来实现一个ButterKnife(仅实现bindView作参考),在代码编译之前生成辅助类来帮助我们去掉繁琐的findViewBy
阅读全文
posted @
2020-03-21 23:49
飘杨......
阅读(1232)
推荐(0) 编辑
Handler、Looper、MessageQueue原理分析
摘要:一、概述 Android的消息机制是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。我们在开发中使用Handler一般是切换线程更新UI等操作。因为Android规范规定Android只能在主线程中更新UI,这一点可以在ViewRootIml的
阅读全文
posted @
2020-03-16 23:09
飘杨......
阅读(437)
推荐(0) 编辑
ThreadLocal原理分析
摘要:一、概述 简单点来说ThreadLocal其实是一个数据存储类,通过get(),和set(key)来实现对数据的存取。并且可以在指定的线程中存储取数据,而在这个线程中存储的数据对于其他线程是访问不到的。 什么情况下比较适合使用ThreadLocal来存取数据? 答:当数据的作用域是线程或者不同的线程
阅读全文
posted @
2020-03-16 12:29
飘杨......
阅读(188)
推荐(0) 编辑
HashMap原理分析(含1.8以后的红黑树)
摘要:一、概述 HashMap这个类不管是Java开发还是Android开发都会经常用到,当有数据需要通过键值对的形式存储的时候,使用Map会非常的方便。为什么要学习HashMap的原理呢?其中有两点原因: 1.通过对HashMap原理的学习,可以修炼开发者的内功,因为一旦理解的HashMap等于把数据结
阅读全文
posted @
2020-03-15 17:02
飘杨......
阅读(1588)
推荐(0) 编辑
TCP三次握手和四次挥手
摘要:一、概述 TCP的三次握手和四次挥手是一个老生长谈的问题,当然也是在面试中被问到的一个大概率的问题。之所以被经常问到是因为这个知识点是可以区别初级、中级、高级开发者的一个分水岭,可以达到筛选应聘者的目的。另外原因是公司可能真的会用到这方面的内容,例如:有些时候我们会选用websocket作为数据传输
阅读全文
posted @
2020-03-14 16:37
飘杨......
阅读(381)
推荐(0) 编辑
ButterKnife原理以及源代码分析
摘要:一、概述 相信绝大多数Android开发都用过ButterKnife这个框架,因为其老牌且知名。其通过注解来绑定视图,把开发从烦琐的findViewById中解放出来。 ButterKnife有两种实现形式: 1.使用注解编译器来实现,其结果就是编译略微耗时,但其运行基本无损。 2.完全使用反射来实
阅读全文
posted @
2020-03-12 22:08
飘杨......
阅读(1299)
推荐(0) 编辑
线程池原理分析
摘要:一、概述 众所周知Android中可以使用线程池来管理线程,有非常多的框架一旦涉及到多线程都会优先采用线程池来处理线程,例如:EventBus、Retrofit2、RxJava、OkHttp等框架。那么Android为什么能使用线程池呢?其实这源于Java的java.util.cuncurrent包
阅读全文
posted @
2020-03-11 20:17
飘杨......
阅读(406)
推荐(0) 编辑
仿EventBus做一个简单的基于订阅发布的事件总线
摘要:一、概述 在上一节分析了EventBus的源代码。本节仿照EventBus自己做一个事件总线框架,去掉了一些代码,只保留了核心框架,旨在梳理框架的框架原理,加深对框架流程的理解。 在贴出源代码之前先把这个自定义的EventBus的功能介绍一下。核心流程还是三个,注册、发布、取消注册(未写Annota
阅读全文
posted @
2020-03-11 16:57
飘杨......
阅读(416)
推荐(0) 编辑
使用LruCache和DiskLruCache手写一个ImageLoader
摘要:一、概述 在分析OkHttp3的缓存机制之前先手写一个实现了三级缓存的ImageLoader来整体感受一下LruCache和DiskLruCache的用法。本例实现了三级缓存,利用LruCache实现内存缓存,利用DiskLruCache实现磁盘缓存。整体的流程是:当用户请求一张图时,首先检查内存中
阅读全文
posted @
2020-03-02 11:55
飘杨......
阅读(419)
推荐(0) 编辑
OkHttp2连接池复用原理分析
摘要:一、概述 上一节讲了OkHttp3的从创建HttpClient到最后调用call.enqueue(callback)来执行一个网络请求并接收响应结果的源码分析流程。流程分析下来能够帮助我们理解这个框架,在理解整个执行流程的基础上我们分析一下上一节未分析到的遗留问题。比如:OkHttp3的连接池的复用
阅读全文
posted @
2020-02-29 15:40
飘杨......
阅读(1997)
推荐(0) 编辑
OkHttp执行流程源码分析
摘要:一、概述 先说下老生常谈的一个问题,我们为什么要学习OkHttp框架?在做技术选型的选型的时候一般看中技术的四项特点。1.是否稳定 、是否高效 2.使用是否方便。3.可扩展性是否够强 a.OkHttp已经被造出来好多年了,其应用范围非常的广泛,特别是这几年大大小小的公司都在使用,就连Google也把
阅读全文
posted @
2020-02-28 17:21
飘杨......
阅读(616)
推荐(0) 编辑
Android使用动态代理模仿Retrofit的create方法,使其可以返回任意的接口类型
摘要:一、概述 本节将模仿一下Retrofit的create泛型方法,根据传入的interface,生成一个代理对象。同个这个小例子可以加深对retrofit的理解 二、实际代码 定义一个book接口,通过动态带来创建其实现类,并调用其实现类的book方法 1.Book.java:普通的接口 2.ApiB
阅读全文
posted @
2020-02-26 13:36
飘杨......
阅读(1042)
推荐(0) 编辑
Android模仿Retrofit的建造者模式
摘要:一、概述 在Retrofit的框架中用的最多的是建造者模式,建造者模式对象与设置的值相分离层次结构更加清晰,在使用的时候通过链式调用赋值,层次清晰明了,避免了我们要new不多的对象需要构造多个构造函数,或者创建对象后一个个的赋值,非常的方便。下面我们也模仿一个建造者模式看看其神奇之处。 二、实例代码
阅读全文
posted @
2020-02-26 11:36
飘杨......
阅读(354)
推荐(1) 编辑
Retrofit2的GsonConverterFactory.create()和RxJava2CallAdapterFactory.create()的实现过程以及执行过程
摘要:一概述 上一节分析了retrofit2从创建到执行的完整流程,本节分析一下两个非常重要的功能。数据转换器的实现以及网络请求适配器的实现。 二、GsonConvertFactory.create()数据转换器的实现过程以及执行过程 我们先看下GsonConvertFactory.crete()的源代码
阅读全文
posted @
2020-02-25 22:34
飘杨......
阅读(3037)
推荐(0) 编辑