小编Ami*_*adi的帖子

将计算值存储在数据库中是一个坏主意吗?

假设我正在开发一个在线商店项目。因此,我必须在数据库中创建一个名为“Product”的表。假设我还希望用户能够“喜欢”我的产品。这需要我创建另一个名为“ProductLike”的表来存储用户的 ID 以及他们喜欢的产品的 ID(联结表)。

主要场景:每次用户向我的网站发送请求以获取产品页面时,我都必须重新计算该产品的点赞数。

我的问题是:所以,我知道标准方法不是将“计算值”存储在数据库中(规范化)。但像这样的案例呢?(我的意思是计算某些东西可能会很昂贵的情况)。例如,在上面的示例中,在“Product”表中拥有一个名为“NumberOfLikes”的列来存储计算出的产品点赞数以便快速检索不是更好吗?

sql database sql-server database-design relational-database

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

为什么带有 <use> 标签的 SVG 不像普通 SVG 那样缩放?

我有一个 SVG 图标,我为它设置了一个固定的高度(比如 50 像素),但我希望它的宽度是自动的,也就是说,无论它需要什么都取决于图标。(很常见和正常的情况,对吧?)。

现在,我一直把头撞在墙上的问题是,我打算用<symbol>标签定义它,然后使用<use href="...标签引用它,而不是将 SVG 内联嵌入到 HTML 中,然后这样做显然需要我设置一个固定的宽度和一个固定的高度,否则它总是默认为大约 150px,而不是仅仅默认为图标的宽度;当您直接嵌入 SVG 时,情况并非如此,您可以在以下两个片段中看到所有这些都在起作用:

直接嵌入SVG:(按预期工作,宽度与图标的宽度一致)

.icon {
  height: 50px;
  width: auto;

  /* Aesthetics: */
  background-color: gray;
  border-radius: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<svg class="icon" viewBox="0 0 22.832 27.398">
    <g transform="translate(-42.667)"> <g transform="translate(42.667)"> <path class="a" d="M62.074,9.133V7.991a7.991,7.991,0,1,0-15.982,0V9.133a3.429,3.429,0,0,0-3.425,3.425V23.973A3.429,3.429,0,0,0,46.092,27.4H62.074A3.429,3.429,0,0,0,65.5,23.973V12.557A3.429,3.429,0,0,0,62.074,9.133Zm-13.7-1.142a5.708,5.708,0,0,1,11.416,0V9.133H48.375ZM63.216,23.973a1.143,1.143,0,0,1-1.142,1.142H46.092a1.143,1.143,0,0,1-1.142-1.142V12.557a1.143,1.143,0,0,1,1.142-1.142H62.074a1.143,1.143,0,0,1,1.142,1.142Z" transform="translate(-42.667)"></path> </g> <g transform="translate(50.658 13.128)"> <path class="a" d="M195.425,245.333a3.416,3.416,0,0,0-1.142,6.639v1.922a1.142,1.142,0,1,0,2.283,0v-1.922a3.416,3.416,0,0,0-1.142-6.639Zm0,4.566a1.142,1.142,0,1,1,1.142-1.142A1.143,1.143,0,0,1,195.425,249.9Z" transform="translate(-192 -245.333)"></path> </g> </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

但是使用<use>标签:(宽度不知从何而来!)

.icon {
  height: 50px;
  width: auto;

  /* Aesthetics: */
  background-color: gray;
  border-radius: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<svg style="display: none;">
    <symbol …
Run Code Online (Sandbox Code Playgroud)

html css svg

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

如果委托不能重载,那么“Func”和“Action”如何有 16 个重载?

我一直在学习委托(在 C# 中),我读过的所有文章都说委托不能重载(与方法不同)。但是当我使用 'Func' 和 'Action' 方法(它们是 .NET 内置委托)时,我注意到它们已被重载:

在此处输入图片说明

这怎么可能?

.net c# delegates overloading

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

我们应该将密码重置为令牌并将其存储在数据库中吗?

我正在为我的ASP.NET应用程序执行密码重置机制.

我想知道,如果有人获得访问我的数据库,他们可以轻松读取密码重置令牌并更改用户的密码,我不应该散列'密码重置令牌',然后将它们存储在我的数据库中?

注意:我说的是"密码重置令牌",而不是实际的"密码"

c# asp.net password-protection

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

LambdaExpression.Compile() 是否创建动态加载的额外程序集?

我想要几个使用表达式树动态创建的例程。似乎使用它们的最简单方法是创建LambdaExpression然后调用LambdaExpression.
Compile()产生一个可调用的委托。

  1. 这种解决方案可能会带来哪些性能损失?
  2. 编译过程中到底发生了什么?
  3. 是否创建并动态加载了具有额外新类类型的额外程序集?
  4. 每次我打电话时都会发生这种情况吗Compile()
  5. TypeBuilder使用and创建一个新类型并包含所有例程作为该类型的静态方法是否更好MethodBuilder

欢迎任何建议!

.net clr expression

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

如何向 Blazor 组件添加 HTML 属性(类等)?

这似乎是一个非常基本的问题,但我还没有找到我正在寻找的答案。

假设您有一个名为 的 Blazor 组件<Button>,该组件具有诸如Label等参数。当您使用该组件时,这些参数的接收方式类似于 HTML 属性:

<Button Label="Sign Up" />
Run Code Online (Sandbox Code Playgroud)

但是如何为组件设置实际的 HTML 属性?!例如,假设您想为组件表示的元素提供额外的类,或标题属性、角色或类型等。以下显然不起作用,因为组件标记上的所有属性都是预期的成为该组件的参数:

<Button Label="Sign Up" class="foo" type="submit" id="bar" />
Run Code Online (Sandbox Code Playgroud)

因此,我能想到的唯一方法是为该组件内的每个属性声明一个参数(公共属性)。

<button type="@Type" class="button @Class" id="@Id">@Label</button>

@code {
    [Parameter]
    public string Class { get; set; }

    [Parameter]
    public string Type { get; set; }

    [Parameter]
    public string Role { get; set; }

    [Parameter]
    public string Id { get; set; }

    // And others
}
Run Code Online (Sandbox Code Playgroud)

然后在使用组件时你这样做:

<Button Label="Sign Up" Class="foo" Id="bar" Type="Submit" />
Run Code Online (Sandbox Code Playgroud)

但这显然并不理想。这不方便,而且看起来像是一个不必要的抽象层。

所以,我的问题是:这应该怎么做?如果有这样的事情,那么“标准”的方法是什么。难道没有比为每个属性声明参数更方便的方法吗?

我一般是 …

blazor blazor-server-side blazor-webassembly

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

C#中的圆积分数

我一直在搜索这个问题几个小时,但我找不到答案所以我问它:

我正在寻找一种方法或一些四舍五入25,599,99925,000,00025,599,99930,000,000:

 int num1 = 25599999;
 Console.WriteLine(RoundDown(num1, 6 /* This is the places (numbers from end that must be 0) */)) // Should return 25,000,000;
Run Code Online (Sandbox Code Playgroud)

或者向上:

 int num1 = 25599999;
 Console.WriteLine(RoundUp(num1, 6 /* This is the places (numbers from end that must be 0) */)) // Should return 30,000,000;
Run Code Online (Sandbox Code Playgroud)

注意:我不是在寻找一种舍入十进制数的方法.

.net c# int numbers rounding

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