java
文章平均质量分 52
Ciruy B.Heimerdinger
我是一名兴趣使然的博主
展开
-
Java文件删除操作File#delete()
Java文件删除操作File#delete()这个算是一个非常通用并且常见的API了,但是其实这个方法在删除文件的时候其实是有一些限制的。如下,我们可以看见这个API返回值代表着删除是否成功:public boolean delete() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkDelete(path); }原创 2021-07-20 22:22:19 · 1324 阅读 · 3 评论 -
Android Studio自定义视图无法预览
Android Studio自定义视图没有办法预览我想大家应该都和我一样,如果看到布局的编码的时候如果右边能够非常直观地显示出对应的视图,心里会非常舒心,像官方提供的tools命名空间就是为了这个目的而存在的。而且如果视图能够预览,其实无形中能够提高我们的开发效率。但是,是不是总有一些时候,你会发现右边的预览界面出了问题,怎么也显示不出来?这个时候,在以前我,我也会吐嘈一句,谷歌开发的什么垃圾,连预览这种简单的功能都做不好吗?然而,其实大多数情况下,垃圾的是我自己。尝试来重现这个情况,首先我定一个一个原创 2021-04-29 19:27:16 · 2315 阅读 · 0 评论 -
Json解析不允许子类父类变量重名的原因
之前项目中遇到过当Json遇到子类和父类有同样的变量的时候会直接报错,类似这样。Caused by: java.lang.IllegalArgumentException: class com.bjzc.bluelecomm.Son declares multiple JSON fields named money今天突然想到如果是java本身不支持这样的操作的话,应该在编译的时候就提示报错不是吗?结果尝试了一下,果然,Java原生是支持这样的操作的,并且顺带一提,那个类的方法所使用的就局部变量都是优原创 2021-02-25 16:42:51 · 1082 阅读 · 0 评论 -
WeakReference回收问题
WeakReference回收问题这个类算是一种标记,和C的指针给人的感有点像,但是起的作用可能比指针要大。我们都知道,java虚拟机的垃圾回收算法为可达性分析算法,即在回收垃圾前对垃圾进行分析和标记,然后这个标记的过程就是关键。亲爱的朋友,我们都知道WeakReference是在下一次gc的时候会将WeakReference所指向的内容回收,然后SoftReference则是在full gc的时候才会将指向的内容回收,那么问题就来了。reference真的这么蠢吗?也就是如果不仅仅只有referenc原创 2021-02-22 18:11:51 · 654 阅读 · 0 评论 -
Mockito cannot mock/spy because : - final class 问题
Mockito cannot mock/spy because : - final class 问题现象:出现报错,且报错信息如下Mockito cannot mock/spy because : - final class问题发生的原因:低版本类不支持mockfinal类的,我们尝试反编译一下kt代码就知道了。解决方案:将mockito-core的依赖更改为mockito-inlinetestImplementation 'org.mockito:mockito-inline:3.3原创 2021-01-21 14:58:00 · 8669 阅读 · 1 评论 -
第二期 AOSP 环境搭建、下载和编译 《手机就是开发板》遇到问题解决
第二期 AOSP 环境搭建、下载和编译 《手机就是开发板》遇到问题清华大学软件镜像站:repo从这里下载https://mirror.tuna.tsinghua.edu.cn/help/git-repo/这个地址已经失效:https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repoUbuntu开发环境下遇到的环境问题梳理:从github拉取代码,安装python3.6https://blog.csdn.net/weixin原创 2020-12-25 21:52:28 · 789 阅读 · 2 评论 -
RxPermission原理解析
前言(废话)说真的,看到RxPermission的代码实现的时候,我还是比较吃惊的,毕竟,就三个必需类,即Permission,RxPermissions,RxPermissionFragment。如果是我自己实现的话,估计要从最初的Activity类开始,定义抽象类之类的,或者封装成Controller,不然再疯狂一些就用APT。但是这些方法怎么想成本都挺大的,我也是挺懒的一个人,所以最后还是决定去看看到底RxPermission,结果发现实现还是挺简单的。我个人认为,把东西变得简单才是本事,把东西弄原创 2020-12-11 20:50:27 · 2004 阅读 · 0 评论 -
关于开发过程中的空指针问题
关于开发过程中的空指针问题从以下角度来说明怎么在一定程序上,合理避免这个问题。public字段的使用多层局部变量调用所产生的NullPointException问题public字段的使用其实项目中应该避免直接对于局部变量的直接使用,因为虽然开发者自己用的爽了,但是造成的结果就是可拓展性和可维护性低了,而且耦合性高了。但是通过方法的方式不同,如果通过方法来进行间接的获取对象实例可以更好地保护对象,合理地限制调用者的不法操作的影响范围,而且遇到需求变化的时候,就只需要对实体类本身进行改动就行了。原创 2020-12-08 16:32:20 · 252 阅读 · 0 评论 -
Java类加载机制:双亲委托模型
Java类加载机制:双亲委托模型前言(废话)一如既往,这篇博客是我极为浅显的理解,仅仅是我记录我自己成长的一环而已。我以前听我老师说过,什么是进步,进步就是当你三个月后重新再看自己的代码,发现那就是垃圾。如果不是这样,那么就意味着你在三个月中其实毫无进步!思维导图类加载器分类基本和现代计算机操作系统的内存区分用户区和系统区的思路一致。将加载类的操作区分为加载系统类BootstrapClassLoader以及系统类的扩展库ExtClassLoader,以及运行应用时的加载应用自带类AppCl原创 2020-11-25 20:06:56 · 209 阅读 · 1 评论 -
Java IO在Android中应用(三):Apk加固去壳
Java I/O在Android中应用(三):Apk加固去壳前言(废话)现在在动车上,因为最近接到一个紧急的出差任务,需要去一趟江苏我们移动应用的客户现场。说真的,本来其实我是很困的,但是车上有一位大汉睡着了,鼾声大作,不知道为什么,我真的是一点睡觉的心思都没有了。然后我想想,晚上还打算写一点博客,而且我的博客比较特殊,常常都会进行一些吐槽,因此,最后决定不如直接在这嘈杂的高铁上把晚上的一部分博客完成吧。毕竟时间其实是我们每一个人一生中最廉价,但是同时又是最无价的一种资源吧。少年时候的我,很喜欢看原创 2020-11-25 18:54:57 · 394 阅读 · 0 评论 -
Java I/O在Android中应用(一)
Java I/O在Android中应用(一)前言(废话)本来想周末拉一拉进度的,结果跑完10KM马拉松之后,发现自己已经完全没有力气再去做任何事情了。讲一些日常的事情吧,最近家里人说要给我介绍对象认识,还和我说很漂亮,过年的时候见面。然后我就开始各种幻想,对方到底是什么样的大家闺秀呢?说实话,为什么我这样平时完全不运动的人能跑完10KM呢?因为我妈妈和我说,要不要考虑一下邻家的XXX,此处可以脑补一下周星驰电影里的如花。所以你完全可以想象,我在内心里不断呻吟,不断呐喊。我告诉自己,为了我下半生(身)原创 2020-11-16 23:06:41 · 312 阅读 · 0 评论 -
Java序列化闲聊:序列化和Json
前言其实我挺纠结的,在纠结到底要不要写这个模块的博客,因为序列化这个模块说简单,按照一些人的说法,其实也就是调两个函数的事情,说困难,铺开就让人感觉范围很广。序列化什么是序列化,我们在编程的时候,看到的花花绿绿的对象们,肯定在计算机里面通过一种方式存储;在网络上进行传输的时候,也肯定需要规定一种方式来让传输的双方能互相理解,不然我传输过去的数据即使你获取到了,也毫无意义。这种方式就是序列化,然后将序列化后的数据再通过规则转换回我们所需要的内容的方式就是反序列化。《深入理解计算机系统》前几章就有这么原创 2020-11-13 00:05:00 · 722 阅读 · 2 评论 -
Java多线程闲聊(五):AQS
Java多线程闲聊(五):AQS前言今天的第二篇了,我肚子里也没有那么多的墨水,所以这第二篇的前言,就免了吧。正文AQS,AbstractQueueSynchronizer,是Java官方所提供的一种同步机制。如果说让我逐行来讲每行代码到底说了些什么,我想其实真的可能今天晚上我不用睡觉了。所以作为资深的懒人,还是按照我一贯的思路,讲讲整体的思路吧。首先AQS继承自AbstractOwnableSynchronizer,后面简称AOS,这个类的作用就是简单地定义一种排他的线程同步机制,而并没有原创 2020-11-10 23:02:04 · 223 阅读 · 1 评论 -
Java多线程闲聊(六):synchronized关键字
Java多线程闲聊(六):synchronized关键字前言这篇文章我会在博客置顶,为什么呢?因为,三篇引用的文章写得太好了,我害怕后面看不到了!让我想想,感觉昨天的前言把最近肚子里的墨水都说完了。所以,今天想在前言里写一些什么有一种肠道炎的感觉,斟酌再三,决定就不写啦!还是写写吧,很多时候,我写博客,仅仅是为了记录我自己的成长过程,如果哪里写的有问题,那正说明我还有很大的进步空间,这的确是一件好事。我之前撤过两篇文章,每篇都有几千字,为什么撤掉了呢?因为别人看到了,向我提出了疑问,然后我发现,那原创 2020-11-10 22:44:23 · 196 阅读 · 0 评论 -
Java多线程闲聊(四):阻塞队列与线程池原理
Java多线程闲聊(四)-阻塞队列与线程池原理前言复用永远是人们永恒的主题,这能让我们更好地避免重复制造轮子。说到多线程,果然还是绕不开线程池,那就来聊聊吧。人们往往相信,世界是存在一些规律的,然后科学是了解规律的最好的方式。但是科学从来不自诩真理,因为所有的科学结论从本质上来说,都是假说。即使是教科书上所写的内容,也只是最接近真理的一种说法。或许真理本身,根本不存在。我还记得三体里面的科学家们的自杀,因为对他们来说,其实科学本身就是一种宗教了。当他们发现用科学的方式任然无法解释由智子带来的理论原创 2020-11-09 21:38:35 · 352 阅读 · 0 评论 -
Java多线程闲聊(二):活锁和死锁
Java多线程闲聊(二):活锁和死锁这两个情况其实都是应该需要避免的情况,为了便于自己的回顾,我还是希望通过尽可能简单的表达来进行简要的归纳。何谓死锁,就是正正紧紧按照Java的规范进行编程依然会出现的导致线程无法正常运行的问题。我个人更倾向于这个问题是Java语言本身的弊端,或者说是很多语言的弊端。或者说同步锁的机制其本身是不是缺乏一定的思考呢?当然这是马后炮,只要是人设计出来的东西,都不可能完美,总会存在一些缺陷。为什么这么说呢?因为锁的机制追本溯源,其实过于简单暴力,大多数情况下,把事情变得简原创 2020-10-30 15:37:11 · 303 阅读 · 0 评论 -
Java多线程闲聊(一):概论
其实我对Java有较高的好感度已经是很久之前的事情, 因为Java是第一门让我感觉很有成就感的语言。想想那些青葱岁月,走出过去已经让我花了太多太多的时间,我想说的是,今后,我要努力让自己面向未来。很遗憾,我不擅长记忆,因为很多时候,我的记忆被过去的悲伤所占据,我被困在名为不可名状的深邃所占据,在茫茫迷雾里摸索,在不见一切的幽暗海底里彷徨。我曾经以为人生仅仅是一场游戏,我曾经以为自己的人生毫无意义,我曾经尝试让自己沉沦,但是内心的倔强却将我连根拔起,让我不断地重新认识自己,让我认清自己的窘态。说到多线原创 2020-10-27 16:01:44 · 253 阅读 · 0 评论 -
包装模式和代理模式
包装模式和代理模式两个实现的方式其实相当类似,但是思想其实有相当大的差距。包装模式是在已有的基础上进行新的功能的添加,比如说,在IO中添加缓存的操作,被包装的类实际上是可见的,所以会有我们日常中常常能够见到的多层构造的骚操作。但是代理模式,就是把使用者当成傻子,我通过一个接口或者别的方式告诉你,我这个代理能做什么,你所能看见的仅仅是我希望让你看见的,我不希望让你看见的,你管不着。代理模式在一定程度上相当于一层封装,借用了依赖倒转原则。代理分为静态代理和动态代理,静态代理通过聚合的方式间接调用代理对象的原创 2020-08-31 22:32:00 · 1126 阅读 · 0 评论 -
Java基础-我所理解的泛型
Java基础-我所理解的泛型引用【java】泛型中,? extends T 与 ? super T 的区别、看法_winrh的博客-CSDN博客_泛型 extends前言Java基础系列,我所整理的仅仅是自己平常没有用到的,或者是自己不太了解的内容。Java的泛型其实仅仅是伪泛型,为什么这么说呢?其实Java的泛型其实仅仅是一种文字游戏,我所能思考到的唯一的好处就是他能够在编译阶段发现一些强转的问题,在后续的归纳中我会逐步给你进行归纳。说真的,我还真的不知道Java的泛型还有这样的表示方法原创 2020-08-08 23:19:37 · 271 阅读 · 0 评论 -
稀有名词解释——Java 堆污染(犄角旮旯问题)
稀有名词解释——Java 堆污染(犄角旮旯问题)有些面试官喜欢问一些稀有名词,彰显其渊博的知识背景。所谓堆污染,简单的说就是当一个泛型类型变量赋值给不是泛型类型变量,这种错误在编译期间能被编译器警告,但是可以忽略,直到运行时报错。ArrayList list=new ArrayList();list.add(100);ArrayList strList=list;String p=strList.get(0);//运行时出错System.out.println§;Exception in t转载 2020-08-04 15:06:28 · 669 阅读 · 0 评论 -
Java函数式折叠,循环,记忆化效率初识
Java函数式折叠,循环,记忆化效率初识最近在啃函数式编程思想,真的,感觉这本书让我受益匪浅,而且很有可能,这本书锁涵盖的知识会成为我实现梦想的必不可少的基石之一。在Java中实现函数式编程的一个很重要的思想是函数的折叠。其应用之一就是如何解决大规模递归造成的StackOverFlow问题,实现思路是通过尾递归的方式将基于栈的递归调用转换为基于堆的递归调用。这几个概念性的问题自己去查,我这里不会去特地说明,写这篇博客的主要目的仅仅是给自己做一个备忘录,帮助他人仅仅是次级的目的。打我呀~以下是基于J原创 2020-07-05 17:54:19 · 482 阅读 · 0 评论 -
AndroidStudio 3.4 自定义注解处理器不起作用
解决方案有两个:1. 将根项目的gradle版本降到3.2.1同时将项目的gradle版本降到4.6即可(这里可以不是4.6,只是我之前的版本是4.6)如图2.在Gradle 5.0将忽略compile classpath中的annotation processor,需要手动添加到annotation processor path如下implementation 'c...原创 2020-01-13 11:18:28 · 2014 阅读 · 0 评论 -
NaN 是什么?它的类型是什么?如何可靠地测试一个值是否等于 NaN ?
NaN 属性代表一个“不是数字”的值。这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字(例如, "abc" / 4),要么是因为运算的结果非数字(例如,除数为零)。虽然这看上去很简单,但 NaN 有一些令人惊讶的特点,如果你不知道它们的话,可能会导致令人头痛的bug。首先,虽然 NaN 意味着“不是数字”,但是它的类型,不管你信不信,是 Number...转载 2019-12-05 13:52:47 · 953 阅读 · 0 评论 -
格式化时间中HH:mm:ss与hh:mm:ss的区别
yyyy-MM-dd HH:mm:ss 后面的时分秒是24小时制yyyy-MM-dd hh:mm:ss 后面的时分秒是12小时制————————————————版权声明:本文为CSDN博主「鹏鹏博客」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u013782879/article...转载 2019-11-19 18:35:16 · 2519 阅读 · 0 评论 -
编码问题(BOM头简单了解)
浅谈编码问题中文编码gb2312 (采用两个字节保存字符汉字,英文数字一个字节)GBK (采用两个字节保存字符汉字,英文数字一个字节)GB18030 (英文数字都是一个字节,中文是两个或四个字节)Unicode字符集(包含每个国家的所有字符)国际通用unicode编码 使用两个字节—65536个字符,浪费空间为了节省空间使用转码形式utf-8 使用 1 、2、3个字节 (EF B...转载 2019-10-15 19:47:15 · 483 阅读 · 0 评论 -
[java]处理utf-8 bom字符串的bom头
char[] bomChar = "带bom的字符串".toCharArray();//转为char数组char[] noneBomchar = new char[bomChar.length - 1];//数组第一个元素是bom头,去掉它for (int j = 0; j < noneBomchar .length; j++) {noneBomchar [j] = bomChar[...转载 2019-10-15 19:46:41 · 647 阅读 · 0 评论 -
开发日记-20190517 关键词 函数式编程(一)
前言:这块其实是我对于《Java函数式编程》的读书笔记,有句话其实说的挺不错,每当你需要二刷一本书的时候,说明这本书你白读了。所以我争取一遍搞定它,不做浪费时间的二刷操作。第一章《函数式编程的优势》读书笔记:函数式编程没有副作用=>你感受不到其存在没有变量改变没有打印到控制到或者其他设备没有写入文件,数据库,网络或者其他什么没有抛出异常程序是为完全不函数...原创 2019-05-17 23:37:50 · 348 阅读 · 0 评论 -
开发日记-20190518 关键词 函数式编程(二)
前言现在白天不喝咖啡根本没有精力,双休日还是适当早点睡吧,不然双休和不双休完全没有区别真的很尴尬。我可不想礼拜一的状态和礼拜五一样。第二章 在Java中使用函数本章要点理解显示世界中的函数在Java中表示函数使用lambda使用高阶函数使用柯里化函数使用函数式接口编程原书P.211. 全函数的定义e.g Strictly speaking, models in f...原创 2019-05-18 22:07:31 · 343 阅读 · 0 评论 -
开发日记-20190430 关键词 apt,aspectj,javassist
感谢和部分素材来源于:https://www.jianshu.com/p/dca3e2c8608a说真的,工作一年了,最开始对于这三个玩意印象真的不是很深刻,因为就我个人作为做业务的打工仔来说,单单是apt的使用都是在重构的时候强行给自己加戏才用到的。但是,嘛,我对于这些聪明人为什么要特地发明这么多,生僻而装逼的名词倍感兴趣。我的职责就是尝试以简单的语言来讲清楚这些玩意到底是什么东西,虽然很多...原创 2019-04-30 22:41:09 · 360 阅读 · 0 评论 -
开发日记-20190429 关键词 患病 NDK
昨晚明明是11:30就睡了的,但是今天早上连站都站不稳,即使早上请了半天假依然身体十分无力,腰还十分疼痛,实在没有办法。我的感觉是晚上睡觉的时候睡相太差导致的,所以,今后晚上睡觉就算开空调也最好不要放那么多床被子在床上了。今天估计能看的东西没有以前那么多了,适当看一些东西就睡觉吧,毕竟身体情况放在这里,如果把身体直接搞坏,那就真的得不偿失了。今天看到很好的博客,找个时间专门看看把。...原创 2019-04-29 17:00:18 · 299 阅读 · 0 评论 -
开发日记-20190428
不同进程可以通过一些粗粒度的通信机制来交换数据套接字信号处理器共享内存信号量文件线程会共享进程范围内的资源如果没有明确的同步机制来协同对共享数据的访问,那么当一个线程正在使用某个变量时,另一个线程可能同时访问这个变量。反思从很久很久以前,就感觉高级语言正在把所有人变得越来越愚蠢,我一直以为自己是一个绝对的异类,但是直到我看到这篇博客,一切豁然开朗,果然,思...原创 2019-04-28 21:42:28 · 619 阅读 · 0 评论 -
java线程池
原创 2019-04-02 19:20:56 · 221 阅读 · 0 评论 -
反射机制源码及原理学习
感谢:http://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html#反射源码解析脑图先行(好像已经说清楚了= =,那就不废话说文字了= =):原创 2019-03-27 23:38:57 · 431 阅读 · 0 评论