
Java
文章平均质量分 67
乐征skyline
这个人的博客记录的都是一些胡思乱想,一些旁门左道、投机取巧的工具,以及一些文档/文献的翻译。
内容包括
1. Linux系统使用
2. Java/Android开发
3. Common Lisp相关知识(以后可能会有关于Scheme的)
4. 编程语言设计分析
5. 以后还会更新古典人工智能的技术。
对于评论,请不要期待我会回复,理由如下:
1. 懒!
展开
-
Java虚拟线程官方文档(译文)
平台线程是作为操作系统线程的瘦包装器实现的。平台线程在其底层操作系统线程上运行Java代码,并且平台线程在整个生命周期内捕获其操作系统线程。因此,可用的平台线程数量受限于操作系统线程的数量。平台线程通常有一个大的线程栈和其他由操作系统维护的资源。它们适合运行所有类型的任务,但它们可能是有限的资源。像平台线程一样,虚拟线程也是类的实例。但是,虚拟线程并不绑定到特定的操作系统线程。虚拟线程仍然是在操作系统线程上运行代码。翻译 2024-09-10 20:11:24 · 462 阅读 · 0 评论 -
Android小技巧:利用动态代理自动切换线程(续)
本文是针对上文的一个补充,补充一种简单的实现方式。上文中我们提到利用动态代理将对某个对象的方法调用自动切换到对应线程中去,只是探讨了可行性和局限,但如果每个功能都手动创建代理就显得有些繁琐。本文提供一个简单的工具来简化这个创建流程。原创 2024-07-25 14:40:52 · 708 阅读 · 0 评论 -
Android小技巧:利用动态代理自动切换线程
日常开发中,多线程编程是个难以避免的话题,开发者可以小心翼翼、谨慎地、严谨地编程来编写出高效的、安全的多线程程序,但是在长时间的维护中,难免因为其中某个人的某个疏忽而导致出现预料之外的并发问题。有没有一种简单粗暴的方法可以像Actor模型那样使得“某个类的方法只在某个线程中执行”并且在“进入这个类的方法时自动切换到对应线程”呢?。本文就介绍一种利用动态代理来完成这个任务。原创 2024-06-25 09:48:59 · 510 阅读 · 0 评论 -
尝试编写一个不需要记忆的工具(以RecyclerView的Adapter为例)
过去开发Android的时候,是一个非常常用的类,但是却用起来有些麻烦,于是就根据需要写了很多XXXAdapter之类的工具,也有很多开源可用的Adapter工具。如果只用一个,养成习惯后不成问题,但是如果比较多,就容易忘记或记错混淆。于是就有了一个想法:我能不能写一个不需要去记忆的工具,即便很长时间没用忘记了,也可以直接上手用。本文以为例,来分享我的思考和实现方式。原创 2024-05-20 16:17:03 · 740 阅读 · 0 评论 -
Android小工具:利用解构来简化Cursor内容的读取
Cursor这种代码基本没法复用,而且还都是纯手工代码,自动生成比较麻烦,我希望可以像用json映射那样,每个字段/列一行代码就完成这个任务,所以本文就仿照以前解构Bundle一样,来解构Cursor(完整实现差不多100行)。原创 2024-01-21 09:35:42 · 708 阅读 · 0 评论 -
Android小工具:利用解构来简化Bundle读写
这是典型的利用Bundle传参的示例,这里只有读取参数,自然有对应的写入参数,因为代码差不多,就省略了。这段代码几乎就是纯手工代码,每个词法单元都需要手敲1-3个字符,才能敲回车来补全。所以就想尝试利用类似解构的方式来简化这个读写过程。原创 2023-12-16 19:16:43 · 477 阅读 · 0 评论 -
Java小技巧:创建带缓存的过程
在平常开发中,我们经常遇到这样一类过程:有一定计算量,被频繁调用,但对于任意一个参数,结果是恒定的(换句话说,就是纯函数).本文就介绍一个简单的工具Memorizer来简化这个过程原创 2023-12-16 19:12:23 · 934 阅读 · 0 评论 -
NeoPreference延伸:为SharedPreferences配置项生成配置页面
代码地址:https://github.com/Nagi1225/NeoPreference.git前两个目标已经完成,参见和第三个目标是考虑到那些配置项可能对应用户偏好设置的情况,这样新增配置就不需要去修改页面,新增配置项的时候,页面就会自动补充;另外,也可以用于生成调试页面,不需要针对SharedPreferences再单独写调试页面。本文针对第三个目标给出一个方案。(暂时仅支持int、float等基本类型的配置项)原创 2023-11-26 11:01:39 · 591 阅读 · 0 评论 -
Andorid小技巧:TransactionTooLargeException的简洁处理
示例代码:https://gitee.com/spectre1225/big-data-demo.git。原创 2023-10-22 18:39:46 · 866 阅读 · 1 评论 -
Java和Kotlin的Field在继承中的不同表现
Kotlin是一个宣称与Java兼容性较好的语言,但在接触后发现一些技术还是有“概念上”的冲突,本文就记录下两者对象的Field(中文的说法有字段、域、属性、成员变量,下文若出现这些表达,指的都是这个东西)在继承中的不同表现。原创 2023-09-03 14:33:05 · 584 阅读 · 0 评论 -
Java小技巧:利用异常中断当前任务
在日常开发中,我们经常遇到调用别人的代码来完成某个任务,但是当代码比较耗时的时候,没法从外部终止该任务。本文介绍一种利用异常来终止这样的任务的方法。原创 2023-08-27 20:35:13 · 212 阅读 · 0 评论 -
函数式编程-将过程作为返回值的应用:获取未来的数据
之前的文章利用一等函数(First-class Function)的“可以将过程作为返回值”这一点来实现分步过程,本文介绍一种该性质极其相似另一种用途-获取未来的数据。(注意:本文旨在介绍一种编程技巧,希望可以给读者一点启发,并非介绍某类问题的最优解,实际使用还需具体问题具体分析)原创 2023-08-13 14:19:07 · 153 阅读 · 0 评论 -
函数式编程-将过程作为返回值的应用:分步过程
之前的文章提到函数式编程的一等函数(First-class Function)四个性质中有“可以将过程作为返回值”这一点,但这一点在实际使用中不如“将过程作为参数”(高阶函数)用得多。本文介绍一种这个性质用于分步函数的应用。原创 2023-08-06 16:33:48 · 157 阅读 · 0 评论 -
关于启动线程位置的一点思考
最近看到两段相似的代码,第一段是第二段为两段代码的差别仅在启动线程的位置。有时候写程序比较随意的时候,两种形式的代码都可以可能出现,下面记录下我对这种形式的一些想法。原创 2023-07-23 10:02:41 · 204 阅读 · 0 评论 -
Java集合工具:列表查找之position和find
操作集合时,查找列表中的元素是常见操作,本文记录一个平常使用的`List`查找工具方法。原创 2023-07-16 09:29:25 · 1309 阅读 · 0 评论 -
NeoPreference:一个简化SharedPreferences使用的工具
针对Android平台键值对的持久化存储,虽然Jetpack出了新的DataStore,但实际项目中SharedPreferences还是有大量使用,本文结合以前的使用经验给出一种极简且优雅且安全的实践。原创 2023-07-09 16:50:48 · 302 阅读 · 0 评论 -
Android小技巧:在通知RemoteViews中显示动画
在Android Notification显示中,我们通常显示一些静态元素,即便使用自定义布局,也不例外,因为有着诸多限制,例如使用的控件只有那些个基本控件,更新界面也必须通过提供的各种set方法。但有时候,我们就是想要去显示动画,因为动画可以提供更好的视觉效果。那么本文提供两种较简单的方法。原创 2023-06-22 14:28:06 · 3484 阅读 · 3 评论 -
Java小技巧:利用局部函数来隐藏和保护函数
在JavaScript中,我们可以利用functionJava并不能在方法里直接定义方法,不过好在 Java 8 借鉴一些函数式语言引入了Lambda表达式和函数式接口,这样Java也可以定义局部函数。//.... };} }如果想定义带返回值的局部函数,可以用Supplier} }如果是只接受参数无返回值的局部函数,则使用Consumer//.... };} }而既要参数又要返回值的就使用Function} }} }} }原创 2023-06-17 16:22:34 · 548 阅读 · 0 评论 -
一点Andorid开发小建议:妥善使用和管理Handler
在Android开发中,我们经常使用Android SDK提供的Handler类来完成线程间通信的任务,但是项目代码中,经常看到Handler过于随意地使用,这些使用可能有一些隐患,本文记录下这些问题,并给出相关建议。原创 2023-06-04 10:10:46 · 192 阅读 · 0 评论 -
记录一个因变量遮蔽引起的“友尽”级bug
之前在翻译学习EOPL过程中回顾以前的代码时发现一个让人后背发凉的隐患,一种极其罕见、但是一旦出现就难以发现并可能造成非常大影响的bug,本文就记录下这个问题。原创 2023-05-27 22:13:48 · 926 阅读 · 0 评论 -
Java集合工具:first和last
在平常开发过程中,我们经常会遇到截取列表片段的需求,比如取列表中前4个元素、取后四个元素。Java的`List`提供了`subList`方法,可以用来完成这些工作,但是使用起来并没有那么便利,于是就有了本文要介绍的两个工具方法:first和last。原创 2023-05-21 13:50:20 · 1153 阅读 · 0 评论 -
Java小技巧:利用蹦床和CPS消除递归中栈溢出
在编写递归程序时候,出现栈溢出并不是什么稀奇的事,这种时候,我们有时候可以利用尾递归优化,有时候可以改为循环写法,甚至还可以调整java虚拟机参数来改变栈大小。但是并非所有的递归都可以改写为其他形式,有些程序的递归写法甚至是最优最简写法,改成其他形式就得手动维护计算的上下文,这是非常麻烦的。这个时候就得直面栈溢出问题了。本文就介绍一个简洁但不简单的工具来消除栈溢出。原创 2023-05-13 16:14:06 · 679 阅读 · 1 评论 -
Java集合操作工具:some、any以及every
我想大家在平常开发中应该经常遇到这样场景:想要从集合中找到符合某个条件的元素,或者判断集合中是否存在某种数据,又或者是判断集合中的所有元素都符合某个要求。本文就介绍几个实用工具原创 2023-04-22 21:38:45 · 1430 阅读 · 0 评论 -
参数有效性检测的隐患
对参数进行有效性检测看上去是在为安全考虑,但是却包含了一些隐患。文本就分享一些我对这类隐患的一些思考。原创 2023-04-08 20:44:14 · 309 阅读 · 0 评论 -
EventBus 注册过程优化
EventBus 注册过程优化原创 2023-04-02 10:28:10 · 463 阅读 · 0 评论 -
为Activity的启动添加约束条件
回想起刚开始做Android开发工作时,有一个烦恼:当拿到一个新项目的时候,想从界面的跳转来梳理整个App的功能,结果发现根本没有对应的产品文档,然后代码中启动Activity的代码散落在Activity以外的各种地方,例如自定义view中、Fragment中、各种Adapter中......这样就造成一些麻烦。本文分享一些处理经验。原创 2023-03-26 17:44:01 · 454 阅读 · 0 评论 -
SharedPreferences的一种极简优雅且安全的用法
针对Android平台键值对的持久化存储,虽然Jetpack出了新的DataStore,但实际项目中SharedPreferences还是有大量使用,本文结合以前的使用经验给出一种极简且优雅且安全的实践。原创 2023-03-19 17:19:39 · 400 阅读 · 0 评论 -
关于Java方法重写的一些反思
最近在开发中遇到一个关于Java方法重写的一些问题,对于方法重写的用法以及可能导致的问题产生了一些思考,本文用于记录下这些想法。原创 2023-02-25 08:32:47 · 1056 阅读 · 0 评论 -
默认生成的接口实现方法体的问题
随着集成开发环境越来越强大,编程开发工作也变得越来越高效,很多的代码都不需要逐字输入,可以利用代码生成和自动补全来辅助开发。但是这样的便利也可能引起一些疏忽,本文就Java开发中默认生成的接口实现方法来谈谈以前遇到的问题。原创 2023-02-19 11:02:22 · 500 阅读 · 0 评论 -
省略if表达式中else的问题
最近看到自己以前写的代码,很多的if表达式用作防御,没有写else,看的时候产生一些疑惑,还有一些想法,由本文记录这些想法。原创 2023-02-05 09:21:08 · 964 阅读 · 0 评论 -
else子句的陷阱
写完上一篇关于else-if子句的陷阱后,想起来以前还遇到过类似的关于else子句以及switch表达式中default条件的陷阱,本文就记录这个问题,并给出相关解决方案/建议。原创 2023-01-08 13:25:15 · 438 阅读 · 0 评论 -
else-if表达式的二义性陷阱
if表达式/语句大概是所有开发者日常用到的语法中最多的,但最近在看以前的代码时想到到一个很容易发生但开发的时候经常忽略的问题,本文就记录下这个问题,并在最后提出一些建议。原创 2022-12-31 10:18:07 · 893 阅读 · 0 评论 -
利用Lazy简化单例模式的编写
相信大部分Java开发者在工作中都用到过单例模式(即便这个设计模式并不是一个让人称道的模式),对于饿汉式的编写还好,双检锁懒汉式的编写就比较繁琐了。本文就提供一种简化方式。原创 2022-11-26 06:41:19 · 319 阅读 · 0 评论 -
ViewOptional:一个安全便利的查找View的工具
一个安全便利的查找View的工具原创 2022-08-14 15:04:55 · 723 阅读 · 0 评论 -
CollectionUtil:一个函数式风格的集合工具
本文分享一个函数式风格的集合操作工具。原创 2022-07-31 16:51:34 · 1020 阅读 · 0 评论 -
NumberOptional:一个字符串转数字的工具
一个简单、全面的字符串转数字的工具原创 2022-07-23 16:09:30 · 2009 阅读 · 0 评论 -
利用动态代理方便安全地生成requestCode
本文就介绍一种100行代码不到的利用动态代理实现的生成requestCode的极简方法。原创 2022-07-16 10:27:54 · 328 阅读 · 0 评论 -
Java小技巧:20行代码实现惰性求值
20行代码给Java提供惰性求值的支持原创 2022-06-18 17:17:02 · 595 阅读 · 0 评论 -
将DataBinding整合到ViewHolder的一种极简方式
自从DataBinding和ViewBinding出现后,Android开发中获取界面元素就变得非常方便。而本文主要介绍一种极简的方式在ViewHolder中利用ViewBinding/DataBinding原创 2022-06-05 19:40:37 · 857 阅读 · 0 评论 -
将DataBinding整合到Activity/Fragment的一种极简方式
自从Google推出DataBinding/ViewBinding后,获取视图控件变得简单、高效且安全。而Activity中原本public class TestActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView原创 2022-05-29 19:18:50 · 785 阅读 · 0 评论