RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
Aycon
Asked: 2025-02-16 20:09:20 +0000 UTC

在工厂方法中释放部分创建的对象的正确方法是什么?

  • 7

我有一个需要MyClass实例化A和初始化的类。所有三个类都继承了。我无法访问这些类的源代码,但是它们的构造函数可能会因某些参数组合而引发异常。我知道在构造函数中抛出异常是一种不好的做法,因为它可能会导致类在内存中处于不一致的状态(不变违反)。因此,我没有使用直接构造函数,而是使用在内部进行初始化的工厂方法,并且。如果至少有一个类,并且已引发异常,则该函数也会引发异常。我知道如果我无法创建,那么我至少应该释放该类并引发异常。我还知道,如果我无法创建该类,我至少应该释放先前创建的和,然后在中引发异常。BCIDisposableABCMyClass.Create()ABCCreateABCBACABCreate

请告诉我是否有一个好的模式或代码示例,如果我无法构建类,我该如何清除以前初始化的部分MyClass?
如果有多于三个部分怎么办?我正在考虑使用堆栈Stack<IDisposable>来清理各个部分。


应
@user7860670 的要求添加一个最低限度可重现的示例。看来这段文字太难理解了:

class A: IDisposable
{
  private readonly int p_value;

  public A(int value)
  {
    ArgumentOutOfRangeException.ThrowIfNegative(value);
    p_value = value;
  }

  public void Print()
  {
    Console.WriteLine($"Value is: {p_value}");
  }

  public void Dispose()
  {
    Console.WriteLine("A disposed");
  }
}


class B : IDisposable
{
  private readonly int p_value;

  public B(int value)
  {
    ArgumentOutOfRangeException.ThrowIfLessThan(value, 10);
    p_value = value;
  }

  public void Print()
  {
    Console.WriteLine($"Value is: {p_value}");
  }

  public void Dispose()
  {
    Console.WriteLine("B disposed");
  }
}


class C : IDisposable
{
  private readonly int p_value;

  public C(int value)
  {
    ArgumentOutOfRangeException.ThrowIfLessThan(value, 20);
    p_value = value;
  }

  public void Print()
  {
    Console.WriteLine($"Value is: {p_value}");
  }

  public void Dispose()
  {
    Console.WriteLine("C disposed");
  }
}

class MyClass
{
  private readonly A a;
  private readonly B b;
  private readonly C c;

  protected MyClass(A _a, B _b, C _c) { a = _a; b = _b; c = _c;}

  public MyClass Create(int _value)
  {
    // Maybe throw error
    A a = new A(_value);

    // Maybe throw error
    // Need free A
    B b = new B(_value);

    // Maybe throw error
    // Need free A
    // Need free B
    C c = new C(_value);

    return new (a, b, c);
  }
}
c#
  • 1 个回答
  • 70 Views
Martin Hope
ardan
Asked: 2025-02-16 20:06:54 +0000 UTC

俄语符号为什么不加密?

  • 3

为什么此代码会加密除俄语字符之外的所有字符?

这里我搜索并替换字母表中的字符:

private void encrypting(Path sourcePath, Path resultPath, List<Character> alphabet, int key) {
    try (FileChannel source = FileChannel.open(sourcePath, StandardOpenOption.READ);
         FileChannel result = FileChannel.open(resultPath, StandardOpenOption.WRITE)) {
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        while (source.read(buffer) != -1) {
            buffer.flip();
            while (buffer.hasRemaining()) {
                byte b = buffer.get();
                char c = (char) b;
                int index = alphabet.indexOf(c);
                if (index != -1) {
                    int newIndex = Math.floorMod(index + key, alphabet.size());
                    char encrypted = alphabet.get(newIndex);
                    result.write(ByteBuffer.wrap(new byte[]{(byte) encrypted}));
                } else {
                    result.write(ByteBuffer.wrap(new byte[]{(byte) c}));
                }
            }
            buffer.clear();
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

这里将俄文字母添加到字母表中:

for (char i = 'А'; i <= 'Я'; i++) {
    alphabet.add(i);
}
for (char i = 'а'; i <= 'я'; i++) {
    alphabet.add(i);
}

需要加密的原始字符串:

Бородино Borodino 1234567890(),?>

加密结果:

Бородино%Gtwtinst%6789:;<=>5-.1ED

为什么此代码会加密除俄文字母之外的所有字符?

java
  • 1 个回答
  • 63 Views
Martin Hope
dvr2d2
Asked: 2025-02-16 19:39:16 +0000 UTC

Python。远程机器人。无法将打开 Web 应用的按钮发送到频道

  • 4

我是一名自学成才的初级程序员。我遇到了以下困难:我无法代表机器人向频道(其中机器人自然是管理员)发送带有附加内联按钮的消息来打开 Web 应用程序。发生错误:错误请求:BUTTON_TYPE_INVALID

此外,当通过私人消息发送代码时,它**可以**正常工作。我不明白这有什么困难。我附上了代码

chan = номер канала / id телеги чтобы в личку летело
chan_win_post = 'проверка проверковна'
board_app = types.InlineKeyboardMarkup(row_width=1)
url = types.InlineKeyboardButton(text='РАБОТАЙ', web_app=types.WebAppInfo('ссылка на веб_ап'))
board_app.add(url)
bot.send_message(chat_id=chan, text=chan_win_post, parse_mode="HTML", reply_markup=board_app)
python-3.x
  • 1 个回答
  • 33 Views
Martin Hope
Vitalizzare
Asked: 2025-02-16 16:46:08 +0000 UTC

如何突出显示折线图上的减少和增加区域?

  • 5

我正在 Google 电子表格中构建折线图。需要做什么才能以不同的颜色显示上升部分和下降部分?

我尝试通过使用公式创建辅助列并将其叠加在原始图表上来实现这一点(此处的列包含要显示的数据,请参见下文,并且公式的写法就像在单元格和中B一样):C2D2

=if(($B2>$B3)+($B2<$B1), $B2, na())
=if(($B2<=$B3)*($B3>$B4)+($B1<=$B2)*($B2>$B3), $B2, na())

这是当前结果,其中区域 12-13、23-24、28-29 的颜色不正确(困难之处在于类型为 的锯齿状区域[1, 2, 1, 2, 1],其中每一步都会交替增加和减少):

图表下降部分颜色不正确

我想通过创建一个公式来避免使用脚本,例如,将下降趋势分成单独的列,或者在相邻趋势之间添加中间空的半步。我不知道该怎么做。

实验文件

我处理的数据:

步 价值
1 9577
2 9601
3 9454
4 9329
5 9422
6 9238
7 9517
8 9589
9 9603
10 9564
11 9610
12 9623
十三 9616
14 9633
15 9249
16 9525
17 9549
18 9498
19 9391
20 9512
21 9530
22 9550
23 9565
24 9541
二十五 9568
二十六 9567
二十七 9571
二十八 9595
二十九 9527
三十 9621
31 9566
google-spreadsheet
  • 1 个回答
  • 75 Views
Martin Hope
AMIACK
Asked: 2025-02-16 06:02:07 +0000 UTC

计算机科学统一国家考试的一项艰巨任务

  • 4

我无法正确解决计算机科学统一国家考试中的问题,老师们拒绝帮助,我不明白为什么解决方案是错误的,我将在下面给出我的代码和问题陈述,请解释我错在哪里,提前谢谢! (与 KompEGE 一起完成的任务,我将文件附加到下面的任务中)

#17685 重拍 04.07.24(等级:棺材)

文本文件由十进制数字、“+”和“*”符号(加法和乘法)组成。确定连续序列中的最大字符数,该序列是具有非负整数(无符号)的有效算术表达式,其值为零。在这个表达式中,没有两个算术运算符号彼此相邻;运算顺序由数学规则决定。数字符号中没有不重要的(前导)零。 24.txt

答案 169

请注明您答案的字符数。

s = open("24_17641.txt").read()
while "**" in s or "++" in s or "*+" in s or "+*" in s:
    if "**" in s:
        s = s.replace("**", "* *")
    if "++" in s:
        s = s.replace("++", "+ +")
    if "*+" in s:
        s = s.replace("*+", "* +")
    if "+*" in s:
        s = s.replace("+*", "+ *")
s = s.split()
print(s)
a = [i[1:-1] for i in s if i != "+" and i != "*"]
a = a[1:-1]
mx = 0
for i in a:
    if eval(i) == 0:
        mx = max(mx, len(i))
print(mx)
python
  • 2 个回答
  • 237 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5