GVKun编程网logo

在大型 Java 项目中有效管理可重用函数(在大型 java 项目中有效管理可重用函数吗)

5

对于想了解在大型Java项目中有效管理可重用函数的读者,本文将提供新的信息,我们将详细介绍在大型java项目中有效管理可重用函数吗,并且为您提供关于Apache在大型PHP文件上使用$_SESSION

对于想了解在大型 Java 项目中有效管理可重用函数的读者,本文将提供新的信息,我们将详细介绍在大型 java 项目中有效管理可重用函数吗,并且为您提供关于Apache 在大型 PHP 文件上使用 $_SESSION 变量的奇怪行为、bash – 在大型(30G)单行文件上运行sed会返回空输出、Dask Workflow 在大型 DataFrame 上并行进行集成预测、Django - 在大型 try 块中传递异常而不跳过整个块?的有价值信息。

本文目录一览:

在大型 Java 项目中有效管理可重用函数(在大型 java 项目中有效管理可重用函数吗)

在大型 Java 项目中有效管理可重用函数(在大型 java 项目中有效管理可重用函数吗)

大型 java 项目中的可重用函数管理至关重要,本文提供了最佳实践:创建模块化函数,明确职责和接口。将函数分组到模块中,保持代码组织。使用依赖注入实现松散耦合和可测试性。使用代码生成工具简化通用函数的生成。实战案例:用户身份验证函数通过封装在模块中并用于不同控制器,展示了可重用函数的有效管理。

在大型 Java 项目中有效管理可重用函数

大型 Java 项目中的可重用函数管理

简介

在大型 Java 项目中,可重用函数的有效管理至关重要,它可以提高效率、减少重复并增强代码的可维护性。本文将介绍最佳实践和实战案例,帮助你有效管理可重用函数。

立即学习“Java免费学习笔记(深入)”;

最佳实践

  • 创建模块化函数:设计函数时,将其作为模块化单元,具有明确的职责和输入/输出。
  • 使用接口和抽象类:通过接口和抽象类定义函数契约,以便它们可以轻松地互换或扩展。
  • 将函数分组到模块中:根据功能将相关函数分组到模块或包中,以保持代码组织有序。
  • 使用依赖注入:通过依赖注入框架将函数依赖性注入到客户端代码中,实现松散耦合和可测试性。
  • 使用代码生成工具:自动生成通用函数代码,例如持久性或日志记录函数,以简化和标准化这些任务。

实战案例

假设我们有一个 Java 项目,需要管理用户身份验证功能。我们定义一个可重用函数,如下所示:

public class AuthenticationService {

    public static boolean authenticate(String username, String password) {
        // 这里实现身份验证逻辑
        return true;
    }
}
登录后复制

我们将其作为模块的一部分包含在项目中,并在不同的控制器和服务中使用它,如下所示:

@RestController
public class UserController {

    @PostMapping("/login")
    public ResponseEntity<?> login(@RequestBody UserLoginRequest request) {
        if (AuthenticationService.authenticate(request.getUsername(), request.getPassword())) {
            // 创建并返回 JWT 令牌
        } else {
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
        }
    }
}
登录后复制

通过遵循这些最佳实践,我们有效地管理了可重用函数,提高了代码的可维护性、模块性和测试效率。

以上就是在大型 Java 项目中有效管理可重用函数的详细内容,更多请关注php中文网其它相关文章!

Apache 在大型 PHP 文件上使用 $_SESSION 变量的奇怪行为

Apache 在大型 PHP 文件上使用 $_SESSION 变量的奇怪行为

如何解决Apache 在大型 PHP 文件上使用 $_SESSION 变量的奇怪行为


我有一个包含大量 HTML 和 CSS 的大型 PHP 文件,后跟一段 PHP 代码。
但是,如果我在 PHP 代码开始之前添加超过 4199 个字符,则 PHP 代码 永远不会 没有正确执行(服务器仍然在 PHP 部分之后发送 HTML)。
但是如果我从命令行运行 PHP 文件,它就可以正常工作。

所以我想问题是 Apache 服务器配置以某种方式限制了执行的 PHP 文件的大小。


系统:

  • Ubuntu 服务器 20.10
  • Apache/2.4.46 (Ubuntu)
  • PHP 7.4.9 (cli)
  1. <?PHP code that works just fine ?>
  2. <!DOCTYPE html>
  3. <html>
  4. <div> lots of HTML (4200+ characters) </div>
  5. <?PHP code that is not properly executed ?>
  6. <div> more HTML that gets transmitted by the server </div>
  7. </html>

有人知道我可以在哪里更改此限制吗?

解决方法

也许出于性能原因,php文件只在开始时检查。如果没有 php 语句,则将其视为常规文本/html 文件。

所以如果你只需要一个问题的解决方案,在开头添加类似

<?php echo; ?>

然后该文件应该被识别为 php 文件,并且您可以在实际的 php 代码开始之前添加任意数量的 html 标签。

,

我在 /etc/php/7.4/apache2/php.ini 中找到了选项 output_buffering = 4096,我现在已经增加了,以便我的整个 PHP 文件在该限制范围内。


显然,问题与 PHP 会话有关,该会话在发送的第一个 4096 字节之后 声明。 (我认为由于数据传输的“拆分”,浏览器没有设置会话)

但我不确定这是否真的是问题所在。
我也在文件的开头尝试了 session_start(); 但这并没有解决问题。

@Hannes 感谢您的帮助。

bash – 在大型(30G)单行文件上运行sed会返回空输出

bash – 在大型(30G)单行文件上运行sed会返回空输出

我正在尝试使用sed在大型(30G)单行文件上执行简单的文字搜索/替换.

我希望这需要一些时间,但是,当我运行它时,它会在几秒后返回,当我查看生成的文件时,它的长度为零.

>输入文件有30G

$ls -lha Full-Text-Tokenized-Single-Line.txt  
-rw-rw-r-- 1 ubuntu ubuntu 30G Jun  9 19:51 Full-Text-Tokenized-Single-Line.txt

>运行命令:

$sed 's/<unk>/ /g' Full-Text-Tokenized-Single-Line.txt > Full-Text-Tokenized-Single-Line-No-unks.txt

>输出文件长度为零!

$ls -lha Full-Text-Tokenized-Single-Line-No-unks.txt 
-rw-rw-r-- 1 ubuntu ubuntu 0 Jun  9 19:52 Full-Text-Tokenized-Single-Line-No-unks.txt

我尝试过的事情

>在较短的文件上运行相同的示例:工作
>使用-e修饰符:不起作用
>逃避“<”和“>”:不起作用
>使用简单的模式行(‘s / foo / bar / g’)代替:不起作用:返回零长度文件.

编辑(更多信息)

>返回码为0
> sed版本是(GNU sed)4.2.2

对于像sed这样的基于行的编辑器,你不能指望它能够工作,因为它的工作单元(记录)是以换行符结束的行.

如果您的文件中有空格(以防止搜索模式分割),则可以使用一个建议

fold -s file_with_one_long_line | 
sed 's/find/replace/g'          | 
tr -d '\n' > output

PS.折叠默认宽度为80,如果您的单词长度超过80,您可以添加-w 1000或至少最长的单词大小以防止单词拆分.

Dask Workflow 在大型 DataFrame 上并行进行集成预测

Dask Workflow 在大型 DataFrame 上并行进行集成预测

如何解决Dask Workflow 在大型 DataFrame 上并行进行集成预测

我有一个不适合内存的大型 dask DataFrame。我试图从模型的列表中获得对整个数据集的预测。由于模型预测彼此独立,因此将它们与 dask 延迟并行化应该很容易。所以我尝试了以下方法:

将大型数据集加载到内存中:

  1. dfs = [delayed(pd.read_feather)(i) for i in [LOC1,LOC2,LOC3]]
  2. df = dd.from_delayed(dfs).repartition(partition_size="1GB")

使用delayed进行并行预测的逻辑(对于单个块):

  1. preds = []
  2. for i in range(lmodel.n_models):
  3. preds.append(delayed(models[i].predict)(data_chunk))
  4. # compute parallely
  5. preds = dd.compute(*preds)
  6. # later on we compute the mean
  7. preds = np.mean(preds,axis=1)

我想知道如何将这两种逻辑组合成一个 dask 工作流。由于整个数据帧不适合内存,因此需要以顺序方式进行预测(为了内存)。然而,对于每个块,我们可以并行化预测本身以节省我们的时间。 df.map_partition 用于顺序处理分区。但我不知道该怎么做。

我也想知道我们是否可以将worker的数量增加到7个。因为我在ensemble中有7个模型。请注意,数据加载、预测都需要在一台机器上完成。

在上面的代码中,preds 是一个列表,因此,即使我们在最后做了一个 np.mean,也会不必要地浪费空间。更优化的方法是将预测值除以模型总数,然后相加。使用 np.array 并聚合结果不起作用。有没有更好的方法来解决这个问题?

Django - 在大型 try 块中传递异常而不跳过整个块?

Django - 在大型 try 块中传递异常而不跳过整个块?

如何解决Django - 在大型 try 块中传递异常而不跳过整个块?

我在 django 中有一个视图,它根据用户输入收集大量数据。有时,并非所有数据都可用于特定查询。我目前有很大的 try 块,但它不太理想,因为它会跳过整个块并且不显示任何数据。

有没有什么方法可以在不执行大量单独的 try 块的情况下继续处理错误?这是一个更短的示例,用于展示我目前拥有的内容。

try:
   year1 = income[0][''date'']
   year2 = income[1][''date'']
   year3 = income[2][''date'']
   year4 = income[3][''date'']
   year5 = income[4][''date'']
except Exception as e:
   pass

如果 year5 不可用,这将通过整个块。一种解决方案是将每年都放在自己的 try 块中,但这会增加 100 行代码(如果不是数千行)。如果有一种简单的方法来维护成功收集的数据,并传递那些抛出异常的数据(或给它们一个默认值),那就太好了。

谢谢!

解决方法

如果你想给它们一个默认值,你可以使用字典的 get 方法:

year1 = income[0].get(''date'')

这将是执行此操作的最佳方法,您希望获取“日期”键(如果存在),否则为 None。

异常对于错误管理比条件分支更有用。

关于在大型 Java 项目中有效管理可重用函数在大型 java 项目中有效管理可重用函数吗的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Apache 在大型 PHP 文件上使用 $_SESSION 变量的奇怪行为、bash – 在大型(30G)单行文件上运行sed会返回空输出、Dask Workflow 在大型 DataFrame 上并行进行集成预测、Django - 在大型 try 块中传递异常而不跳过整个块?的相关知识,请在本站寻找。

本文标签: