博客

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

重构 - 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 包。

纯音刺激 - 使用 Java 和 StackOverflow 实现 😂

本文介绍了一种使用 Java Sound API 实现的纯音刺激,主要利用了三角函数,根据采样率和录音时长S确定数组长度,然后,对于数组中的每个位置填充 Math.sin( 2 * Pi * t / p ) * 127,其中 t 为数组下标,p 为周期,其计算方法为采样率/声音频率Hz。

动态公告牌 - 使用 Vue 和 JavaScript 实现

本文介绍了一种... 极其无聊的 Vue 单页应用 —— 公告牌 —— 包含一个漂亮的动态渐变背景和动态数字大小的单页应用。可以用来计数,以及任何对外显示数字、简要信息的地方。关键是,动态渐变背景很漂亮。

1...678...16