三层架构

昨天在做公司的新项目,涉及到一些数据库的访问,我就拿着自己半吊子的水平尝试去写。突然想起之前看的视频教程里有涉及到 POJO 和 DAO 之类的东西,同事写的代码里确实也使用到了这些,我就像尝试着把他们加入项目中,以方便以后切换数据库。但是问题就来了,我该在 MVC 中的哪个部分调用 DAO 呢?是 Model 还是 Controller?我无法自己找到结论,就又上网去学习了一下。

继续阅读“三层架构”

周记 2020-03-29~2020-04-04

祝我生日快乐=v=

这周是我从居家隔离中解禁的第一周。被老板迫不及待的拉回了公司上班,每天从早到晚都在改界面。到了晚上下班回家还没有网。一直到四月一日家里的网才装好,是Singtel的,感觉还不错。我顺便从网上买了20m的网线,打算过几天一次性解决wifi卡顿问题。

周三晚上新加坡的新冠肺炎病例累计达到了1000例,未知病例也超过100例了。现在看哪里都不安全,十分想回家工作。

这周也是抽出时间学了点新的知识,记录如下。

  • 初步了解了Node.jsSocket.io
  • 参考Socket.io的教程写了个简单的聊天室应用。几十行就搞定了,真的帅。
  • 初步了解了Webpack包,是用来打包网站资源的。感觉这个也是要用到熟悉而不是靠学会的东西。
  • 简单学习了Webpack的Asset Management和Output Management章节。

使用FXML设计用户界面

介绍

在使用JavaFX的过程中,除了通过代码定义用户界面,我们还可以通过FXML的形式。FXML是JavaFX创建的一种基于XML的用户界面标记语言。相比于Java代码,FXML由于结构层级明显,更加便于书写(然而xml格式很啰嗦),并且可以在程序运行过程中动态修改(在Maven JavaFX插件中并不能)并且更好的分离了界面和功能;但是它的缺点就是无法实现复杂的逻辑(如循环),并且载入速度相比Java代码较慢(微妙的慢一点点),以下就是一段JavaFX代码。

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane xmlns:fx="http://javafx.com/fxml/1">
    <center>
        <Button text="Hello" />
    </center>
</BorderPane>
继续阅读“使用FXML设计用户界面”

Gradle Wrapper和Gradle的关系

其实这个问题最重要的部分就是搞懂Gradle Wrapper是什么,当我们明白了什么是wrapper,自然就明白了关系是什么。

简单来讲,Gradle Wrapper是一段用来执行gradle指令的脚本。它包含以下几个部分

  • gradle-wrapper.jar 一个Java程序用来下载Gradle
  • gradle-wrapper.properties Wrapper的配置文件
  • gradlew, gradlew.bat 在不同操作系统上用来调用gradle-wrapper.jar的脚本文件
继续阅读“Gradle Wrapper和Gradle的关系”

双头龙杰奇洛攻略 Jakiro

杰奇洛,国内通常叫双头龙,海区里一般用名字Jakiro,是一个远程智力混子英雄。四个技能提供了大量的持续伤害,不错的减速,较强的推线和推塔能力。

首先这是我第一次提到混子英雄的概念,那什么是混子英雄呢?混子英雄,或者说混子辅助是我们对一些四五号位的统一评价,比如ddwe爱用的天涯墨客,小花她爱用的双头龙和术士。这些英雄有一些共同之处:一,低等级时没有硬控。这导致了两个后果,前期对线无法造成击杀,以及需要不停地蹭经验混等级。同时一些玩家无法做好前后期的转换,打到后面不放技能。二,几乎没有救人能力,队友被强杀时,几乎只能看着。三,技能释放较为安全。这也是混子英雄看起来最混的地方,它们不需要去先手别人,也不用吸收伤害。优势的时候在后面蹭助攻,劣势了总是最后一个死。不会雪中送炭,只能锦上添花。但是这并不意味着混子英雄就弱,在不同玩家手上的表现天差地别。双头龙就是一个满足了以上三点的英雄。

继续阅读“双头龙杰奇洛攻略 Jakiro”

移除JavaFX TitledPane的鼠标悬浮效果 Remove mouse hover effect on JavaFX TitledPane

有时候我会用JavaFX的TitledPane来区分UI中的不同部分,像这样。

TitledPane tp1 = new TitledPane();
tp1.setCollapsible(false);
TitledPane tp2 = new TitledPane();
tp2.setCollapsible(false);

通过setCollapsible()这个函数,让TitledPane不可折叠,然后用一个VBox把它们排好。

但是当我们把鼠标移动到TitledPane的标题栏上时,标题栏的背景颜色还是会变化,这就会给用户一种可以点击的错觉。经过一波操作之后,我发现可以通过修改TitledPane的css来解决这个问题。

tp1.setStyle("-fx-hover-base: -fx-base;");
继续阅读“移除JavaFX TitledPane的鼠标悬浮效果 Remove mouse hover effect on JavaFX TitledPane”

在JavaFX中实现全选/反选复选框 Make a “Select All/Check All” check box in JavaFX

全选复选框是一个十分常见的需求。比如在邮件管理软件中,我们需要对邮件进行批量移动和删除。除了在列表中的每一个条目前添加一个复选框来展示这条邮件的选中状态,我们通常还会添加一个全选复选框。这个复选框可以起到两个作用:

  1. 点击复选框来切换所有子项的选中状态。
  2. 告知用户子项的选中状态为“全选”,“全未选”还是“部分选中”。
Gmail中的“全选复选框”和“子项复选框”
继续阅读“在JavaFX中实现全选/反选复选框 Make a “Select All/Check All” check box in JavaFX”