![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 52
Bert.King
这个作者很懒,什么都没留下…
展开
-
Leetcode - 485. 最大连续 1 的个数
Leetcode -485 最大连续1的个数的题目解答思路原创 2022-12-29 01:22:12 · 735 阅读 · 0 评论 -
isAssignableFrom() 证实了Java是非纯面向对象语言
人有见识就不轻易发怒;宽恕人的过失便是自己的荣耀今天回顾了一下Glide源码,然后在ImageViewTargetFactory看到新鲜东西。public class ImageViewTargetFactory { @NonNull @SuppressWarnings("unchecked") public <Z> ViewTarget<ImageView, Z> buildTarget( @NonNull ImageView view, @Non.原创 2021-07-27 15:45:53 · 222 阅读 · 1 评论 -
Gson解析遇到转义的问题
善与恶的相互渗透是自然法则中的常规现象,有些事情不是能用好坏善恶定义的。1. 背景# 原来的JSON字符串是这个的。{ "deviceNo": "lmi", "h5Url": "https://web.xxx.com/info/singleBoard?boardId=10086&ref=setting_product", "nativeUrl": "io://xxx.com/product/detail?id=1731&name=feedback"}采用Gson 的 .原创 2021-07-23 20:17:01 · 1533 阅读 · 0 评论 -
初识字节码框架ASM
使用ASM遇到第一个错误:1. IllegalArgumentException异常主要原因:ASM具体参考自:1. Caused by: java.lang.IllegalArgumentException2. Caused by: java.lang.IllegalArgumentException2.修改JDK版本引起的问题IDEA 'Error:java: 无效的源发行版——解决方案主要原因:电脑安装的JDK版本 和 项目的JDK版本不一致所引起的。...原创 2021-07-07 21:56:22 · 157 阅读 · 0 评论 -
Sharing is only supported for boot loader classes because bootstrap classpath has been appended
人不敬我,是我无才。我不敬人,是我无德。人不容我,是我无能,我不容人,是我无量。人不助我,是我无为,我不助人,是我无善。Debug是一种能力。1. 警告今日在使用 IDEA 进行Debug调试代码时,遇到了以下奇怪的警告:Java HotSpot™ 64-Bit Server VM warning:Sharing is only supported for boot loader classes because bootstrap classpath has been appen.原创 2021-01-14 00:54:12 · 3412 阅读 · 2 评论 -
总结一下Java的排序API
贵而不显,华而不炫。韬光养晦,深藏不露。在我们平时的开发过程中,一般都是借助于Comparator实现比较功能的。但是这篇文章不讨论这个话题,咱要的是能直接使用的API。在刷题LeeCode的过程中,遇到数组or字符串的时候,很多情况下都是需要将其排序的。我们总不至于自己实现个冒泡,快排之类的排序算法吧。这道题 455. 分发饼干 就需要用到数组的排序。PS : 根据个人刷题的经验: 关于数组的算法题,若题目中出现最值问题,一般都需要进行排序。进入正题——Java 排序的APIJ.原创 2021-01-13 00:15:54 · 1795 阅读 · 0 评论 -
Java注解系列之5th(完结)
前文提到注解解释器增量的问题,我们知道这分为两种情况:隔离(Isolating)聚合(Aggregating)这两种情况,都还具有 动态(dynamic) 的配置项在开发中,我们如何选择呢?我们今天就来讨论一下。1. 聚合注解解释器(Aggregating annotation processors)顾名思义,这种模式就是将多个源文件聚合为一个或者多个输出文件或者验证信息。1.1 实例探讨这里拿官例说明一下:processor/src/main/java/ServiceRegis原创 2020-08-17 21:20:19 · 319 阅读 · 0 评论 -
Java注解系列之4th
关于注解的增量更新的相关话题1. 背景Starting with Gradle 2.1, it is possible to compile Java incrementally.(Gradle 2.1 支持 Java的增量编译。)Starting with Gradle 4.7, the incremental compiler also supports incremental annotation processing. Annotation processors need to opt i原创 2020-08-17 21:15:29 · 759 阅读 · 0 评论 -
Java注解系列之3rd
只有你尽力了 才有资格说运气不好否则你所受的痛苦都是罪有应得如何知道自己是否真的尽力?嗯,这是个问题…接着前面的两篇文章来讨论:注解解释器(Annotation Processor) 负责 处理 注解, 那 又是WHO 让注解解释器起作用的呢?要想回答这个问题,我们首先来看一下业界标杆是怎么做的。1. EventBus VS ButterKnife对于Android开发者而言,EventBus 和 ButterKnife 绝对不会陌生吧.(当年)两者对于Android开发界,不亚于蒸汽机.原创 2020-08-17 00:47:48 · 604 阅读 · 3 评论 -
Java注解系列之2nd
吾不知其名,强名曰道。夫道者:有清有浊,有动有静;天清地浊,天动地静;降本流末,而生万物。清者,浊之源,动者,静之基;人能常清净,天地悉皆归。我们仅仅了解注解(Annotation),那如何让注解起作用呢,这就需要注解解释器(Annotation Processor) 出场啦。如果有这方面的经验,那肯定知道大名鼎鼎的AbstractProcessor。真正让注解起作用的就是它背后的功劳。大家可以通过项目AnnotationsExplorer去真正实践注解,关于此项目运行的任何问题,您都可以先到.原创 2020-08-17 00:27:47 · 160 阅读 · 0 评论 -
Java注解系列之1st
岁月不居,时节如流,而立之年,忽焉将至作为Android开发者,我们经常在项目中看到注解的身影(尤其以早期的EventBus和ButterKnife为甚),所以掌握它是非常有必要的。Java注解JDK1.5之后引入的注解参考自:注解的分类:按照来源来分:元注解:定义注解的注解,位于java.lang.annotation包下。@Target@Retention@Documented@Inherited@Repeatable(1.8)自定义注解:JDK注解,第三方库注解,.原创 2020-08-17 00:15:23 · 227 阅读 · 0 评论 -
Synchronized方法or代码块?
疾风知劲草,板荡识诚臣,勇夫安识义,智者必怀仁.无论是开发还是面试,作为自认为不再是菜鸟的我们,在并发编程中,我们会理所当然地认为:synchronized关键字所修饰的区域应该是越小越好.(synchronized是互斥锁,即重量级锁,相对开销 会比较大)有兴趣的读者,可以参看本人的这篇博客: 关于synchronized的面试题能坚持读到这里的朋友,此时心中肯定会有疑问:莫非我错了?这里暂且不论对错,先继续往下看…1. synchronized修饰方法/** * @A.原创 2020-08-06 23:26:47 · 389 阅读 · 0 评论 -
Java 对象内存模型系列-3rd
志不立,如无舵之舟,无衔之马,漂荡奔逸,终亦何所底乎。通过前面的文章,我们知道,Java对象主要分为下面几个部分:对象头1. mark word2. class pointer实例数据对齐填充数组长度(仅适用于数组对象)对象头分为Mark word和 Class Pointer两部分。2,3,4的内容都相对简单,我们可以一笔带过。但是对于对象头的其中两部分内容,有点丈二和尚之感。今天我们就来聊一聊他们。1. 透过Object的定义看对象头首先我们先来通过源代码来大概看一下.原创 2020-08-05 23:56:33 · 206 阅读 · 0 评论 -
巧证默认构造函数的存在性
今日之失,未必不为后日之得。Java编程语言的『面向对象』已经深入人心。自然而然,构造器(构造函数)作为类和对象的桥梁,深刻地理解它的重要性不言而喻。构造器是用来初始化对象的。一般而言,我们都会将Class理解为蓝图(blueprint)亦或是模板。而对象则是Class概念下更加具体化的东西。对于动物这个概念而言,我们可以将其作为Class类存在,那么具体的动物(老虎,大象,狮子.ie)就可以被看成对象。这篇文章的重点在于构造器,所以关于Class(类) 和 对象(Object) 的关系就不详.原创 2020-08-04 08:56:13 · 211 阅读 · 0 评论 -
Java 对象内存模型系列-2nd
知行合一:知之真切笃实处即是行,行之明觉精察处即是知。从上一篇文章中我们搞明白对象的组成及其所占内存大小。口说无凭,事实为证。有些朋友希望能亲自验证结论是否正确。安排,今天他来了一. JOL(Java Object Layout)1.1 JOL(Java Object Layout)的简介深入了解的请移步至:JOL的官方地址引用其介绍的一段话:JOL (Java Object Layout) is the tiny toolbox to analyze object layout.原创 2020-07-30 23:59:54 · 148 阅读 · 0 评论 -
Java 对象内存模型系列-1st
此心光明,亦复何言『Everything is an object in java』在Java中,万物皆是对象。在我们日常工作中,我们都知道所谓的『对象』就是 Object 以及继承自Object的类的实例。另外我们也知道Java的对象都是存储分配在堆上的。(PS:这里不讨论JVM的优化内容)开发这么过年,你优化性能的时候肯定考虑过一个对象的大小,但是你有没有想过堆上到底存储的是什么?这里的两个问题:对象所占内存的大小;对象在内存中的样子;如果不知道What,就开始来猜大小,这就纯属X.原创 2020-07-29 22:58:22 · 190 阅读 · 0 评论 -
线程的方法之yield()
山近月远觉月小,便道此山大于月。若人有眼大如天,当见山高月更阔。关于Thread的 yield() 方法,在实际的开发过程中,说实话真的是很不常见。但是在面试过程中怕是司空见惯啦。正由于其开发中几乎见不到它的身影,一般情况下,我也懒得去理它。但是由于最近在回顾Kotlin Coroutine相关内容时,再次见到了它的身影,那么看起来绕不开它。咳咳咳~~,扶我起来…1. 单词yield在英语中,yield means to let go, to give up, to surrender.原创 2020-07-28 23:21:21 · 262 阅读 · 0 评论 -
带你走进Java世界——ClassLoader
凡事莫当前,看戏何如听戏好;做人须顾后,上台终有下台时;一:类加载器(ClassLoader)JDK1.9以前,我们所熟知的JVM内置的三种类加载器:Bootstrap ClassLoaderExtension ClassLoaderApplication ClassLoader其中Extension ClassLoader 和 Application ClassLoader 都是URLClassLoader的子类。1. Bootstrap ClassLoaderBootst.原创 2020-07-28 23:18:39 · 223 阅读 · 0 评论 -
线程的方法之join()
人不敬我,是我无才,我不敬人,是我无德。人不容我,是我无能,我不容人,是我无量。人不助我,是我无为,我不助人,是我无善。1. join()Waits for this thread to die.(等待调用线程消亡…)当我们在一个线程(宿主线程)上调用 join() 方法,则该线程(宿主线程)进入等待状态,直到调用join()的线程(调用线程)终止。有很多朋友对Thread的join()理解不到位,原因就在于闹不清楚这里面的两个名词:宿主线程调用线程下列代码:class .原创 2020-07-28 23:08:34 · 360 阅读 · 0 评论 -
Protocol Buffers ,你了解吗?
已识乾坤大,犹怜草木青由于公司业务发展,需要开发海外版项目,深入了解 Firebase 在此不得不羡慕国外开发者的幸福啊。在国内,我们可能需要集成多家的SDK,而Firebase算是集大成者。Firebase 基于Google基础架构而构建,其提供了登录授权,用户数据分析,数据库,消息推送及性能监测与崩溃报告等功能,详细内容,请移步:Firebase官网今天,在集成 Firebase Crashlytics 崩溃分析报告和 Firebase Performance Monitoring 性能监.原创 2020-07-13 20:58:13 · 514 阅读 · 0 评论 -
使用FastJson解析库的那些事儿
义以为之,礼以行之,逊以出之,信以诚之,为做事之顺道。多少好事,因礼不周,言不逊,信不孚,致生障碍者,比比皆是。FastJson库的Github地址fastjson是阿里巴巴推出的开源JSON解析库,即:解析JSON格式的字符串Java Bean 序列化为JSON字符串;JSON字符串反序列化为Java Bean;下面来主要来谈一下使用FastJson库所遇到的问题:问题1. 序列化Or反序列化的问题1.1 问题描述:在开发中,为了方便往往在生成Java Bean时,.原创 2020-05-29 21:45:10 · 259 阅读 · 0 评论 -
Kotlin的访问权限管理
遇横逆之来而不怒遭变故之起而不惊当非常之谤而不辩原创 2020-04-22 23:12:28 · 2855 阅读 · 0 评论 -
RxJava3的CallAdapter
吉人之辞寡,躁人之辞多RxJava + Okhttp + Retrofit 目前仍然是大多数Android项目的网络框架基石。光阴似箭,岁月如梭,Rxjava 推出3.0版本已有时日,遂打算将项目中的RxJava进行升级操作。OkHttp相关库:okhttp库okhttp的日志拦截器Retrofit相关库:Retrofit库retrofit-converters 或者引入...原创 2020-04-20 21:39:32 · 1737 阅读 · 4 评论 -
剖析LeakCanary—— 下篇
不要小看那些信靠上帝的人,祂能借着他们成就大事本篇文章就是为了说明LeakCanary是如何打造Android平台上的内存泄漏监测过程。按照剖析LeakCanary—— 中篇的思路进行展开论述。1. 总览LeakCanary的Android实现过程这里先罗列一些涉及Android平台的具体实现类AndroidWatchExecutor —> WatchExecutorAndr...原创 2020-04-15 23:22:18 · 247 阅读 · 0 评论 -
剖析LeakCanary—— 中篇
为善不见其益,如草里冬瓜,自能暗长;为恶不见其损,如庭前春雪,势必潜消。官网的一句话:千里之堤,溃于蚁穴“A small leak will sink a great ship.” - Benjamin FranklinLeakCanary 这个库,作为Android开发者应该都不会陌生。它的主要作用就是帮助我们找出内存泄漏的地方,帮助我们开发者减少OOM的发生。LeakC...原创 2020-04-14 23:52:30 · 268 阅读 · 0 评论 -
剖析LeakCanary—— 上篇
狭路相逢宜回身,往来都是暂时人。1.吐槽大会今天刚到工位上组内同事跑过来问我,What’s 引用队列? 中午吃饭闲聊时,才知道面试被问住啦。这里根据其描述,大概总结如下:Java中的四种引用类型?并简述一下其区别?平时开发中一般用到哪几种啊?(据实回答,否则分分钟打脸,同事的脸现在还是红的呢 ~2333)了解**引用队列(Reference Queue)**吗?(这都回答不出来...原创 2020-04-14 23:51:23 · 197 阅读 · 0 评论 -
Handler的前世今生——面试篇
言不必当,极口称是,未交此人,故意底毁;卑庸可耻,不足与论事。——《冰鉴》1. 背景2020年注定是不平凡的一年,“金三银四”怕是被疫情给变了性质,希望面试者都能进入自己心仪的公司。今天面试了一个5年左右的Android开发者,感觉java基础和Android知识都比较不错。在面试Android岗位时,Handler总是绕不开的一个话题 (PS:如果一切顺利,就不存在这篇文章啦)...原创 2020-04-13 23:25:49 · 220 阅读 · 0 评论 -
深入理解Java之LinkedHashMap —— 04
人生哪能多如意,万事只求半称心。在日常工作中,我们经常使用HashMap,但HashMap是无序的,这让我们有点犯难…所以JDK中给我们预备了LinkedHashMap,今天我们就来认识一下它。1. LinkedHashMap的特点LinkedHashMap 熟悉的陌生人对于有些开发者,可能都没直接使用过LinkedHashMap,但只要一提到LRUCache基本上都两...原创 2020-04-06 22:51:39 · 214 阅读 · 0 评论 -
深入理解Java之HashMap —— 03
1. HashMap的操作流程1.1 HashMap的构造函数首先我们来看一下HashMap的构造函数: /** * Constructs an empty {@code HashMap} with the specified initial * capacity and load factor. * * @param initialCapacity...原创 2020-04-04 20:54:01 · 236 阅读 · 0 评论 -
深入理解Java之HashMap —— 01
《精要主义》书中的一些感悟:几乎没有事物的次要性,再怎么高估都不过分。试着利用精要主义打破用忙碌衡量成功的浅见吧。无论是在工作or面试中,HashMap都是我们经常打交道的。所以今天我们源码的角度来窥探其奥妙。1.HashMap的结构1.1 JDK1.7版本在JDK1.7以前的设计,HashMap采用数组+单链表的实现方式,链表就是用来处理Hash冲突的。学过数据结构的人都知...原创 2020-04-03 23:22:48 · 198 阅读 · 2 评论 -
深入理解Java之HashMap —— 02
生之智慧,在于摒弃不必要之事。若要最大限度成就真正重要之事,切忌贪多求全,事事应允。文章目录1. HashMap的灵魂1.1 hash()1.1.1 这样设计的目的?2. HashMap的精髓2.1 key 为null的hash值?2.2 如何确定桶下标?2.3 确定桶下标为什么采用位运算而不是取模运算?2.4 位运算如何保证下标不越界呢?3. HashMap容量必须为2的幂1. Hash...原创 2020-04-03 23:21:13 · 195 阅读 · 0 评论 -
LeeCode 693 - daily02
记一段《能力陷阱》的一段话:我们很乐于去做那些我们擅长的事,于是就会一直去做,最终就使得我们会一直擅长那些事。做得越多,就越擅长,越擅长就越愿意去做。这样的一个循环能让我们在这方面获得更多的经验,但却容易陷入能力陷阱,在其他方面无法突破。温水煮青蛙—— 每个人都要特别警惕这种能力陷阱,避免把大量时间花在日常琐事上。与君共勉关于二进制的问题主要涉及以下几种操作:与或非异或左...原创 2020-04-01 22:55:28 · 107 阅读 · 0 评论 -
重构改善既有代码的设计—— 读书笔记3
当我们对代码理解不够深刻时,往往会感觉 重构改善既有代码的设计 这本书的内容过于浮夸,颇有“初闻不知曲中意,再闻已是曲中人”之感.但根据个人经验,还是希望能尽早地运用其中的一些技巧。该篇文章的内容主要来自于书中的第6章——重新组织函数文章目录1. 提炼函数(Extract Method)优化版本1:优化版本2:优化版本3:2. 内联函数(Inline Method)3. 内联临时变量(Inl...原创 2020-03-29 22:02:26 · 137 阅读 · 0 评论 -
关于synchronized的面试题
在面试过程中,我们经常会被考察多线程的问题。多线程虽然好用,但若使用不当将会带来很多并发问题。如何保证线程安全自然是绕不开的话题。最近公司要招贤纳士,在面试的过程中,我发现所有人都知道关键字synchronized是用来线程同步,保证线程安全的。但是再深入聊下去,很容易陷入尴尬之境。我也只能客气地说“换个话题“,或者“今天就先聊到这里“…(PS:会不会我太装13了呢?但是简历上一般都是5+的工...原创 2020-03-10 13:55:27 · 4652 阅读 · 5 评论 -
Mac下配置环境变量的辛苦历程
最近新入手了一个Mac,就把公司的电脑交回去啦。安装一系列的软件以及配置环境变量自然是少不了的。但是前途是光明的,道路永远都是曲折的。耳畔突然想起了“几度风雨几度春秋…“随有此文章,来记录一下这其中的坎坷历程…1. JDK下载过慢问题下面提供让你体验飞一样的感觉的下载地址(本人亲测有效):Oracle北洋网站华为云镜像清华大学开源软件镜像站AdoptOpenJDK这里贴个...原创 2020-03-08 19:23:29 · 715 阅读 · 2 评论 -
关于String的面试题
文章目录1.String类是可变吗?如何实现的?1.1 讲一下String为什么这样设计?2.是否看过String的源码,其hashCode()是如何实现的?2.1 这里为什么乘以31?2.2 String为什么要重写hashCode?## 标题2.2.1 equals() 和 " == "的区别?2.2.2 equals() 和 hashCode()方法有什么联系?2.2.3 hashCode...原创 2020-03-06 17:08:48 · 219 阅读 · 0 评论 -
线程池6th卷:大展经纶补天手
人生无常,世事难料,做生意当然是有成功也有失败…总公司为了便于管理,当然需要实时掌握所创建的连锁店的状态(runState)。聊一聊Doug Lea的生意经1.第一阶段:Executor早期创业时候不想那么多,能做生意就行。所以只有一个方法:execute()public interface Executor { void execute(Runnable command)...原创 2020-03-05 18:41:42 · 231 阅读 · 0 评论 -
线程池5th卷:不畏浮云遮望眼
随着业务发展的需要,总公司集团老总(Doug Lea ) 提出了能支持预定功能(scheduled)的饭店经营模式(ScheduledExecutorService)。PS: schedule:安排,计划,预定1.战略:ScheduledExecutorService观摩一下其内部新增的功能schedule(Runnable/Callale, delay, TimeUnit ):在指...原创 2020-03-05 11:51:29 · 128 阅读 · 0 评论 -
线程池4th卷:大鹏展翅恨天低
四.线程池之大鹏展翅恨天低线程池(饭店)的各个环节你都摸清楚了,而且在餐饮业已经积累了口碑,资源,技术,,但你不会忘记你当初的目标:融资上市…。梦想虽远,好在路在脚下。开加盟连锁店,为志同道合的创业人士开辟一条捷径。纵观Java多线程的设计,我们目前所讨论的只是其中的一部分。这里主要讨论:ThreadPoolExecutor,后续将全面展开,若有期待,请下方评论@。1. 初级阶段:n...原创 2020-03-04 21:52:43 · 204 阅读 · 0 评论 -
线程池3rd卷:龙卧浅滩等海潮
笑谈ThreadFactory全世界让一个人沉默并不比一个人让全世界沉默更具有正当性。——约翰•密尔眼看你的饭店生意越做越大,又出现了一个头疼的问题——厨师管理问题。福祸相依,你发现有些厨师培训学校的校长开始主动找你喝茶,大家都心知肚明,这是“醉翁之意不在酒”,校长是来推销自己的学生,进而提高学校的就业率。你表面上装出一副为难的样子,心中已有主意。ThreadFactory就是我们抽象的...原创 2020-03-04 16:53:23 · 257 阅读 · 0 评论