原博客https://www.fenice.website已经废弃,其中内容将在数个周内迁移至本博客。 本博客当前地址为临时迁移所用,迁移完成后仍旧使用原博客地址
在今天的互联网相关开发工作之中以Java为基础的开发环境和各类框架以及SDK百花齐放,如果从头造轮子或者手动管理各种依赖包显然是不可行的,更不要提工程开发之中的CI/CD、测试、文档、容器化部署等等工作了。对比C/C++开发领域的Makefile或者CMake这样的自由度极高但是通常生态缺损管理混乱的情况来说,Java侧的构建工具要用户友好的多。事实上最先可用并且好用的Java构建工具是Ant,然而随着时代的车轮滚滚向前,目前大行其道的是Maven以及正在丰富自身以求获得目光的Gradle。如果从事Java开发工作,那么对于Maven不会用不了解简直是贻笑大方,本文就从最基础的安装和配置,以及最重要的Maven的核心概念介绍这样的工具。
在GoF23类设计模式之中,出了用于使用多态特征创建对象的五种设计模式之外,另有7个设计模式用于调整对象的数据结构和组织形式以获得更加复杂或者便利于当前使用状况的对象,这些设计模式并不着眼于对象的创建或者具体的使用阶段,他们的核心在于处理对象和对象以及抽象和具体实现之间的组合关系和结构,因此被称为结构型模式(Structral Pattern)。随着我们业务逻辑的扩张和处理情况的不断复杂化,随之而来的就是抽象结构复杂化和冗余臃肿的问题,这个时候因此引发的各种不兼容或者高耦合性就要使用这些设计模式妥善处理。
在所有的GoF23种设计模式之中有5类设计模式的作用机制产生于“创建一个抽象的具体实现”阶段,也就是将类对象进行实例化的阶段。这些设计模式从构造目的上分为一类:创建型模式(Creational Pattern)。有时候我们的业务逻辑的抽象程度很高而对应的实现手段或者实现场景非常复杂多变或者我们需要严格控制抽象到实现的流动的情况下我们就需要从创建对象的“根源步骤”去构造系统,并且其他的设计模式在现实业务场景之中或多或少需要与创建类设计模式进行组合。
相信大多数软件工程师的起点都是C语言,之后可能根据专注领域的不同接触了不同的面向对象编程语言,特别是Go或者Kotlin这种经常发愈发糖的语言更能够令人心情愉悦。然而不同于刚毕业的朋友们,无论是接触工程实际问题两三年的新手或者是深入实际业务的老鸟都会遇到一道厚厚的桎梏——为什么将实际业务需求转换成代码的过程总是这样蹭蹬?为什么项目总会变成一堆屎山代码?笔者在早期非常傲慢的认为这是能力孱弱的程序员们的借口和无病呻吟,直到眼睁睁看着自己投入无数精力的项目不可阻挡的变成了一坨大粪才重视起设计模式的问题。
在日常的电子开发过程中,降压是一个经常的需求,当然了目前市场上有许许多多的产品例如集成了开关器件的Converter和只具有环路控制的Controller芯片,辅助以厂商提供的数据表和选型工具(例如MPS DC-DC在线设计工具)可以很轻松的画出原理图和选型。但是在进行需要自主抉择的选型和一些要求严格的状况(极高的转换效率或者极大的输出功率——往往是不友好的电流)的情况下,我们仍然需要知道这背后的选型原理,并且Buck-Boost变换器几乎是入门DC-DC开关电源的“大头守卫”。
在日常进行电子设计/嵌入式开发的过程中,我们经常碰到这种状况:是的串口工作良好,但是我想要更加直观和更加方便的交互——这种时候我们就要用到UI界面了。当然,交互方式是多种多样的,例如触摸或者某种实体按钮,或许我们还会用一些UI框架例如LVGL或者更加重量级的Qt-Embedded等等……但是无论如何我们不可能绕开屏幕。并且很多时候我们并不想在这个“非核心”的功能上倾注太多资源,无论是软硬件开销还是开发时间……这时候一块1寸大小的单色点阵屏幕是不错的选择。
无论你是做UI开发、嵌入式开发还是纯C++开发,你或许都听说过大名鼎鼎的Qt框架。那么Qt到底是什么、包含什么、能够实现什么样的功能、有什么样的限制呢?要了解这些事情,就必须先从Qt的基础概念、体系结构开始逐步递进学习。当然,安装Qt对于某些开发者而言已经十分劝退了,这就是Qt教给我们的第一课——要么耐心要么弃坑。
在使用了四年的Wordpress之后,我终于对于Wordpress冗杂的架构和PHP代码对人的无限折磨失去了兴趣,尽管WordPress算是这世界上最强大的建站工具之一。然而,面对Halo这样一个新兴的国产建站工具以及我所熟悉的SpringBoot+Vue框架,我终究选择从wp迁移到Halo来,预计迁移工作将会在几周之内顺利完成而配套的Halo插件开发和个性化调整工作将会持续到年末。