标签: software-design

Java:使用一个函数返回一些不同类型的值

我有一个readData()函数读取文件,返回几个不同的解析数据对象.现在,返回类型readData()Object[]:

Object[] data = readData();
MyGenome genome = data[0];
Species[] breeds = data[1];
//etc
Run Code Online (Sandbox Code Playgroud)

这感觉很尴尬.有没有更好的方法来返回这些数据?我不希望有像这样的单独函数readGenome(),readSpecies()因为这需要迭代文件两次.另外,我宁愿将所有数据收集包装在一个函数中.

类似的问题:在两个字符串之间返回至少四个字符匹配的函数:

public int[][] findMatch(String g0, String g1) { /* cool stuff */ }
//...
int[][] bounds = findMatch("ACOIICOCOCICOICA", "AOCCCCCCICCIIIIIOIAOCICOICOICA");
Run Code Online (Sandbox Code Playgroud)

bounds[0][0]g0上的左边界是哪里,是g0 bounds[0][1]上的右边界,bounds[1][0]是g1上的左边界,等等.这也有点尴尬.如果不连续查找键,很难对结果进行编码.

java oop software-design

1
推荐指数
2
解决办法
1507
查看次数

Runnable的实现是否允许在同一个实例上并发调用run()?

如果我有一个实现的类,java.lang.Runnable技术上没有什么能阻止多个线程run同一个实例上同时调用Runnable.例:

Runnable r = new MyRunnable();

//start thread 1
new Thread(r).start();

//start thread 2
new Thread(r).start();
Run Code Online (Sandbox Code Playgroud)

如果该run方法完全是"自包含的"(即不依赖于任何私有实例成员),这不是一个真正的问题,因为线程之间没有共享变量,因此您Runnable永远不会得到"损坏的"内部状态.但我认为,在大多数情况下,你Runnable 拥有它操纵在一些私人实例成员run,那么怎么办呢?

要使用示例,我的MyRunnable类有一个私有mode字段.主要目的是干净地停止run方法(通过设置modeSTOPPED),但它也有其他用途.

public static class MyRunnable implements Runnable
{
    enum Mode { RUNNING, PAUSED, STOPPED, FASTFORWARDING, REWINDING; }

    private volatile Mode mode;

    @Override
    public void run() 
    {
        mode = Mode.RUNNING;
        while (mode != Mode.STOPPED)
        { …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading software-design runnable

1
推荐指数
1
解决办法
705
查看次数

需要更好的数据库设计方法

我为订阅产品设计了一个数据库架构。用户可以选择从某个日期开始订阅一定天数。用户可以在几天内取消订阅,但之后仍保持订阅有效。这意味着如果用户订阅一个月,她可以在 10,15 和 20 天取消订阅,因此只需支付 27 天(30 减 3)。
到目前为止,我已经提出了这个模式。在此处输入图片说明

  • 每个用户都有一个配置文件。
  • 用户可以选择一个计划。
  • 一旦用户选择了一个计划,它就会被记为交易,它还存储有关该计划的开始日期和持续时间的信息。
  • 每笔交易都有付款(稍后重点介绍该部分)

现在,由于用户可以在任何一天取消订阅,我应该如何跟踪不同的用户和他们订阅的日期?

我想到的解决方案是创建一个新表 Plan_Transaction_user,它将跟踪该日期的每个日期和交易 ID。这样,如果用户在特定日期取消订阅,则该交易 ID 将没有该日期的记录。

表将如下所示:

Date       Transaction ID       
1-1-2017   1
1-1-2017   2
1-1-2017   3
1-2-2017   1
1-2-2017   3
Run Code Online (Sandbox Code Playgroud)

由于与 transaction_id 2 关联的用户在第 2 天取消了她的交易记录,因此该表中不存在。

现在,如果我有 5000 个客户群,那么在一年内最好的情况下,我将拥有 5000 * 365 ~ 180 万行。我确信这不是最好的方法。您能否向我建议更好的模式或对现有模式进行一些更有效的更改?以防万一您想知道我将使用 MariaDB (AWS RDS) 作为数据库并使用 Python 2 作为我的语言。

谢谢你,奥哈斯

mysql database-design software-design database-schema

1
推荐指数
1
解决办法
795
查看次数

将提供的接口链接到 Sparx Enterprise Architect (EA) 中的定义

我使用 EA 定义了我的软件系统。到目前为止我主要停留在高水平。我的组件之间的软件接口表示为结构元素“提供的接口”(紫色的小项目符号)和“必需的接口”(小套接字)。

现在,我想更进一步地了解细节,并定义与每个提供的接口相对应的API ,最好是作为类图。如果我能够为每个提供的接口(例如软件组件)创建一个嵌套的复合结构图,那就完美了。但 EA 似乎并没有启用此功能。

我所做的是创建一个嵌套在我的软件组件中的接口,然后使用依赖项链接将所需接口(紫色项目符号)链接到我的接口(紫色方块) 。然后我可以在我的界面中创建一个嵌套的复合结构图。但我怀疑这是否是最佳方法。

有人可以告诉我定义所需接口的“EA 批准”方式是什么吗?

谢谢 :)

components uml modeling software-design enterprise-architect

1
推荐指数
1
解决办法
2167
查看次数

如何在 PHP 7.4 中使用 DocBlocks?

一般来说,在 PHP 中使用 DocBlock 是最佳实践之一。它对于以前的 PHP 版本(小于 PHP 7.3 或特别是 7.4)非常有用。它通知开发人员有关类属性类型、预期参数类型和方法返回值(在 PHP 中缺乏严格类型的情况下)。

假设在 PHP 5.6 中,代码如下所示:

namespace App\Service\Catalog\Category;

use App\Entity\Catalog\Category\Category;
use App\Repository\Catalog\Category\CategoryRepository;

class CategoryService
{
    /** @var CategoryRepository */
    private $categoryRepository;

    /** @var int */
    private $currentNestingLevel = 1;

    /**
     * CategoryService constructor.
     * @param CategoryRepository $categoryRepository
     */
    public function __construct(Category $categoryRepository)
    {
        $this->categoryRepository = $categoryRepository;
    }

    /**
     * @param $parentCategoryId
     * @return array
     */
    public function getCategoriesDataByParentCategoryId($parentCategoryId)
    {
        $categories = $this->categoryRepository->getByParentCategoryId($parentCategoryId);
        $categoriesData = [];

        foreach ($categories as $category) …
Run Code Online (Sandbox Code Playgroud)

php software-design docblocks

1
推荐指数
1
解决办法
615
查看次数

预处理器指令对敏感信息安全吗?

我正在为我的 C++ 应用程序创建一个包含 HTML/CSS/JS 文件的存档,我不希望用户访问这些文件。所以,我决定用密码加密存档。

我的第一个想法是通过预处理器宏(通过 CMake)将密码存储在程序中。但是,安全吗?

您可以从编译的应用程序中访问密码吗?(exe,就我而言)如果可以的话,如何保护它?技术上可行还是我应该放弃并保持原样?

c++ security software-design

1
推荐指数
1
解决办法
49
查看次数

如何设计系统以在移动应用程序和 Web 上共享相同的内容?

我正在为 iOS、Android 和 Web 开发 LMS。移动应用程序是使用 Flutter 开发的,Web 是基于 React 的,我决定使用 Firebase 作为后端和存储。包含的功能就像一般的LMS,列表

  • 用户认证
  • 动态密码发送
  • 视频/图像/文件访问
  • 进度跟踪等

我想知道如何加快这种发展?如何在此开发中使用 REST API?如何在两个平台上共享相同的内容、用户数据?你还有什么建议吗?

您的建议对农村孩子的学习很有帮助。

project-management software-design firebase reactjs flutter

1
推荐指数
1
解决办法
69
查看次数

我应该如何设计电子商务类图?

我现在正在学习软件设计。我是一名前端人员,所以这可能是一个愚蠢的问题,但我真的很想知道答案。希望你能帮助我。

我必须设计一个电子商务系统。更具体地说,我正在设计电子商务中的购买系统。我对如何做到这一点做了一些研究并找到了 EAV。但在知道 EAV 是反模式之后,我不想使用它,而且我必须保持简单,以便像我这样的初学者理解设计。

这是class我自己设计的图。 我的电商购买功能类图

当然,我认为这个设计是不正确的。我花了大约三天的时间进行研究并思考如何解决这个Product问题ProductType

我只想有一个像iPhone这样的产品,比如有属于手机的属性,可乐有属于饮料的属性等等。

我怎么能这样做呢?

请告诉我如何以简单的方式解决这个问题,因为我对此很陌生。一些有关软件设计的文章或书籍也值得赞赏。

谢谢<3

java architecture uml class-diagram software-design

1
推荐指数
1
解决办法
8703
查看次数

在清洁架构设计中,我们是否需要为每一层创建一个单独的“项目”?

在清洁架构设计中,我们是否需要为每一层创建一个单独的“项目”?或者我们可以在同一项目上使用文件夹和命名空间定义图层吗?

我正在使用 Net Core 设计微服务架构中的新应用程序。我计划在我的设计中使用清洁架构原则。

我计划将以下项目结构用于我的每项单独服务。这是正确的方法吗?我正在努力减少项目数量。

  • 项目 1 - 演示
  • 项目 2 - 应用程序层、域层、持久层(这里各层通过文件夹和命名空间隔离)
  • 项目 3 - 基础设施
  • 项目 4 - 横切

.net software-design microservices asp.net-core clean-architecture

1
推荐指数
1
解决办法
2600
查看次数

恢复过时的Fox Pro应用程序

我正在和一个客户一起重振他14年前使用Foxpro2.6开发的旧软件.我的问题是客户端只有源代码(以.prg文件的形式)和数据库文件,但源代码中既没有任何文档也没有注释来指导我做什么...甚至数据库文件都没有正确命名.我在这种情况下的唯一选择似乎是通过.prg文件,并了解哪个命令更新哪个数据库记录和如何....但有大约300 .prg文件,我根本不知道Fox Pro(我的意思是我当这个东西变得过时时,它已经达到了第9个标准!).

任何建议或想法使这项工作变得简单,也许是一个.prg到C转换器,它可以帮助我很多.

请帮助....它正在成为一场噩梦

PS:我没有数据库转换的问题,但前端和功能源代码也写在FoxPro2.6并保存为.prg扩展是问题,因为我不知道语言,没有文档.

foxpro business-logic reverse-engineering software-design

0
推荐指数
1
解决办法
823
查看次数