博客

我的博客覆盖了前端、后端、客户端以及系统编程等领域,以构建高效、弹性、可维护的应用程序为目标。这里记录了我对一些新技术、新工具以及在项目中的开发实践,往前翻翻还有很多不着调的诗歌。

我的每日工作流 —— Microsoft TO-DO 使用指北

本文主要介绍了我对于 Microsoft TODO 这款由奇妙清单团队重新打造的“微软风格”的待办事项软件的理解,我使用它的方式可能和它被产品经理所期望工作的方式不同,但尽管如此,它仍然很好的帮助了我,我的使用方式,充分体现了 TODO Today 背后的根据截止日期划分优先级的理念,基于这套理念使用 TODO,思路简洁、清晰、一致,我认为可以最大限度的避免遗漏重要的工作,且避免清单整理的时间浪费和清单多次规划造成的思路混乱。

我的电子笔记进化史 —— 使用 iPad 学习指北

我的“便捷生产力设备”,在过去五年中,发生了许多变化,从讲究极致的便携,再到强调及时的生产力,似乎没有一个完美的选项。尽管如此,我还是从中摸索出了一条自己的选择 —— iPad +  Pencil + Cloud,这套选择考虑到了便携、阅读、批注和轻量生产的需求。

重构 - Deal with Generalization

这一章是关于重构概括关系的总结。概括关系,简而言之就是一种代码复用体系,也就是面向对象的类系统的重构。常见的概括关系重构包括字段和函数的上移和下移、构造函数的上移、使用工厂方法代替构复杂造器。除了处理一个现有的类型系统,还可以对类型系统进行更改,比如将父类拆分为父类和子类,将相关但是不同的类移动到父类后直接删除、合并抽象逻辑为父类、从函数中提取公共模板方法、定义两个类的角色 —— 接口。此外,本文还探讨了概括关系的两种选择:委托和继承,前者适用于 has 关系,后者适用于 is 关系。

重构 - Simplifie Function Call

本章是重构的第五章,主要讲解了函数调用的优化。注意,这和 Extract Method 很像,但是它们侧重于两个不同的方面,Extract 着重于对函数实现,也就是函数体的重构,而这里的 Function Call 则更侧重于对于调用函数的优化,包括对于函数名称、参数长度、责任和角色的处理。

重构 - Reorganize Data and Control Structure

这是重构的第四篇文章,主要讲解对于数据结构的重建问题。着重介绍了子封装方法代替字段、数据对象替代数据值、数据对象值和数据对象引用的转换、数组数据的拆分、数组数据对象的封装,也介绍了对于单向和双向数据绑定的处理、字段取代子类(组合而非继承)等惯用的数据组织习惯。在第二部分,讲解了对于控制结构的重构,包括表达式清晰化、控制结构优化、卫语句,最后介绍了空对象和多态对于减少控制结构样板代码的作用。

重构 - Redistribution Responsibility

本文介绍了重构的第二大法宝:重新为类分配责任,简而言之,其包括:字段和函数的迁移、类的拆分和合并、委托隐藏和中间人移除、对于不可写类的功能扩展。在上一节着重介绍的函数拆分,包括各种临时变量的处理,对包括脚本和一般、严肃类型语言均适用。而本文介绍的方法,更多侧重 OOP 语言,最好是统一对象访问的语言,比如 Strongtalk(一种 Smalltalk 的方言)、Scala(一种 Java 的方言)、Dart(一种试图替代 TypeScript 的可选类型语言)。

自动语音报告记录:使用阿里云一句话识别 API 构建

本文介绍了使用阿里云的一句话识别 API,使用 Java Sound API 和 JavaFx 进行的语音报告识别自动记录:自动的在被试语音报告数字的时候记录其回答的结果。实现使用了多线程技术,因为在录制声音、使用 Netty 发送语音到阿里云服务器、语音结果同义词转换和解析、语音结果展示方面都存在各种并发问题,经过优化,本实现的语音识别率(85% 可用)可满足需要。

重构 - Unit Test and Extract Method

本文介绍了重构的基础:单元测试,单元测试有助于确定重构前的软件行为,用以和重构之后进行对比验证,重构应该不引起任何的测试程序失败发生。本文也讲解了重构的重头戏:函数拆分,拆分有很多方案,包括各种临时变量的处理方法,要根据情景合理选择合适的方案。

重构 - Why Refactoring

这系列博客是我阅读《重构:改善既有代码的设计》一书的笔记。在原书中使用的是 Java 作为示例,而我使用的则是 Scala,本系列博客可为 Scala 重构提供类似的经验。

Java Sound 简明教程以及节律纯音实现

这是一份关于 Java Sound 的简明教程,以及我利用 Java Sound 实现的多种节律纯音实现方案。本教程主要介绍了声音的物理和编程含义,此外讲解了 Java Sound Sampled 包的基本用法:包括录音到流、文件、从流、文件中播放、事件等。本文并未涉及 Control API 和 MIDI 包。

1...456...14