我来自后端/胖客户端背景,所以也许我错过了一些东西......但是我最近看了一个开源JWT令牌服务器的来源,并且作者对await/async感到疯狂.喜欢在每个方法和每一行.
我得到的模式是...在一个单独的线程中运行长时间运行的任务.在我很厚的客户端,我会使用它,如果一个方法可能需要几秒钟,以便不阻止GUI线程...但绝对不是一个需要几毫秒的方法.
这是否过度使用await/async你需要的web dev或类似Angular的东西?这是在JWT令牌服务器中,因此甚至没有看到它与任何这些服务器有什么关系.这只是一个REST终点.
如何让每一行异步都能提高性能?对我来说,它会破坏所有这些线程的性能,不是吗?
我有以下方法将双数组转换为List<string>:
static Dest Test(Source s)
{
Dest d = new Dest();
if (s.A24 != null)
{
double[] dd = s.A24;
int cnt = dd.Length;
List<string> lst = new List<string>();
for (int i = 0; i < cnt; i++)
lst.Add(((double)dd[i]).ToString());
d.A24 = lst;
}
else
{
d.A24 = null;
}
return d;
}
Run Code Online (Sandbox Code Playgroud)
根据我的基准测试,在循环中执行List.Add()似乎是最快的方式,击败所有各种LINQ和转换技巧.
这真的很慢.一百万次呼叫2400ms(任何CPU,更喜欢64位).所以我正在尝试各种方法来加快速度.我们假设我无法缓存源列表或目标列表等.
所以无论如何,我偶然发现了一些奇怪的东西...如果我将lst.Add()行改为强制转换为十进制而不是双精度,那么它会更快,更快.900毫秒vs 2400毫秒.
这是我的问题
1)十进制有更高的准确性然后加倍,所以我不应该在类型转换中丢失任何东西,对吗?
2)为什么Decimal.ToString()比Double.ToString()快得多?
3)这是一个合理的优化,还是我错过了一些关键的细节,它会回来咬我?
我并不担心使用更多的内存,我只关心性能.
此时测试数据没有任何复杂功能,只需使用:
s.A24 = new double[] { 1.2, 3.4, 5.6 };
Run Code Online (Sandbox Code Playgroud) 我最近升级到 VS 2022 17.2.0。现在,每次启动 VS 时,都会提示我登录。该对话框顶部显示“Visual Studio”,底部有一个标有“登录选项”的按钮。
我对链接到 Microsoft 帐户没有兴趣。
我进入了“工具”| 选项| 环境 | 帐户并取消选中所有复选框。仍然收到登录提示。
有什么办法可以禁用它吗?这仅在 17.2.0 上开始发生。
注意:这不是带有“现在不”选项的对话框。
编辑:虽然 yukim 的解决方法确实有效,但我发现通过降级到 JDK 8u251 与 8u261,sigar 库可以正常工作。
注意:我将 JDK 11.0.7 作为我的主要 JDK,所以我在 Cassandra 的批处理文件中覆盖了 JAVA_HOME 和 PATH。
打开管理员提示和...
版本
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)
蟒蛇--版本
Python 3.8.5
Run Code Online (Sandbox Code Playgroud)
编辑 #1切换到 Python 2.7.18,这至少使 cqlsh 在没有服务器上启动并出错,而在 3.8.5 上它甚至没有运行。
回声%JAVA_HOME%
c:\progra~1\java\jdk1.8.0_261
Run Code Online (Sandbox Code Playgroud)
当我运行 cassandra.bat 时,我得到:
Detected powershell execution permissions. Running with enhanced startup scripts.
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
WARNING! Automatic page file configuration detected.
It …Run Code Online (Sandbox Code Playgroud) 我正在构建一个REST服务,它将托管多个控制器(微服务).总的来说,我们可以调用服务"Bob".因此昂首阔步地展示了"Bob"/"Bob Microservices的集合".然后列出控制器名称.现在,它只是显示XYZ,ABC等.有没有办法可能有swagger显示"XYZ - XYZ API的集合"或类似的东西?
似乎swagger显示方法的///摘要,但不显示控制器.
我是NER和的新手Spacy。尝试找出需要进行哪些文本清理(如果有)。似乎我发现一些例子修剪了前导和尾随空格,然后用开始/停止索引进行处理。我看到一个例子,那个人做了一堆清理工作,但他的准确性非常差,因为所有索引都搞乱了。
澄清一下,数据集是用 DataTurks 注释的,所以你得到像这样的 json:
\n "Content": <original text>\n "label": [\n "Skills"\n ],\n "points": [\n {\n "start": 1295,\n "end": 1621,\n "text": "\\n\xe2\x80\xa2 Programming language...\nRun Code Online (Sandbox Code Playgroud)\n因此,通过“破坏索引”,我的意思是,如果你去掉前导\\n,则需要更新起始索引,以便它仍然正确对齐。
所以这确实是个问题,如果我开始从开头、结尾或中间删除字符,我需要将规则应用于内容属性并调整开始/结束索引以匹配,不是吗?我猜显然是“是”:),所以我想知道需要进行多少清洁工作。
\n那么您会删除\\ns、项目符号、前导/尾随空格,但保留标准标点符号,如逗号、句号等?
小写、停用词、词形还原等内容又如何呢?
\n我在看过的一些示例中看到的一个问题是,开始/停止索引确实会因清理而丢失,因为在删除字符以保持同步时,您需要更新每个注释。
\nIE
\nA 0 -> 100\nB 101 -> 150\nRun Code Online (Sandbox Code Playgroud)\n如果我删除charat position 50,那么我需要调整B to 100 -> 149。
我有一个如下所示的控制器方法:
[HttpPost]
[Consumes("application/x-www-form-urlencoded")]
[Produces("application/json")]
public async Task<IActionResult> GenerateTokenAsync([FromForm]TokenParameters tokenParameters)
Run Code Online (Sandbox Code Playgroud)
TokenParameters 看起来像这样:
public class TokenParameters
{
/// <summary>
/// Specifies the grant type. Must be "password".
/// </summary>
[Required]
public GrantType? grant_type
{
get;
set;
}
/// <summary>
/// Specifies the username.
/// </summary>
[Required]
public string username
{
get;
set;
}
/// <summary>
/// Specifies the password.
/// </summary>
[Required]
public string password
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但 Swagger UI 没有拾取成员的 /// 三斜杠注释。我的其他控制器使用 FromBody 和 /// 三斜杠注释可以很好地配合它们。看起来底部的模型部分接收了注释,但当我查看控制器时,我正在谈论浅绿色部分中的模型描述。
我查看了架构注册表,描述确实在那里。
编辑:使用 …
我有一个"昂贵"的第三方组件.该组件不是线程安全的.所述组件托管在WCF服务内(暂时),因此......每次呼叫进入服务时,我都必须新建组件.
我想要做的是拥有一个说16个线程的池,每个线程都旋转它们自己的组件副本,并且有一个机制来调用该方法并将其分配给16个线程中的一个并返回值.
所以很简单:
var response = threadPool.CallMethod(param1, param2);
Run Code Online (Sandbox Code Playgroud)
它可以阻止调用,直到它得到响应,因为我需要响应才能继续.
有什么建议?也许我正在过度思考它并且ConcurrentQueue由16个线程提供的服务可以完成这项工作,但是现在确定方法返回值将如何返回给调用者?
我正在试图弄清楚如何计算圆周围的文字标签的位置.这比你第一次阅读时想象的要复杂得多.
我得到了基础知识:
X = ptCenter.X + (dRadius * Math.Cos(dAngle * Math.PI / 180.0))
Y = ptCenter.Y + (dRadius * Math.Sin(dAngle * Math.PI / 180.0))
Run Code Online (Sandbox Code Playgroud)
那么,这将给出我在圆角dAngle上的点与半径dRadius.当然,DrawText(任何种类,但我特别使用DrawingContext.DrawText,如果这对你的答案有任何不同)绘制时给定的点作为文本的左上角.
问题是,这不是绘制文本的正确位置.以下是该问题的说明:
Jan水平居中于点2月从左下角绘制,而Mar似乎是水平中间的那种4月垂直居中等等.
标签不是以统一的方式定位在点周围.它取决于你绘制的角度.
我需要绘制的标签数量可能会有所不同,因此硬编码软糖因素已经出来了.我需要绘制的角度也可以变化,因此也没有任何软糖因素.所有这一切都必须在飞行中计算.
看起来好像0,90,180,270是特殊情况,而其他似乎是在点周围垂直半中心,但根据你所谈论的圆圈的哪一边向右或向左绘制?
我在这里走在正确的轨道上吗?或者是否有"已知"算法?
谢谢.
是否有一个很好的示例(C#),说明如何在RabbitMQ中进行直接回复?我想要做的是让X生产者发布一条消息(“我为某人做了一些工作”),我希望X消费者中的一位能够捡起它,进行工作并发送回响应。不是基本的Ack,而是一些数据,即计算结果。当然,响应必须回到正确的生产者。
制片人:
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
var properties = channel.CreateBasicProperties();
properties.Persistent = true;
channel.BasicPublish(exchange: "",
routingKey: "hello",
basicProperties: properties,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
}
Run Code Online (Sandbox Code Playgroud)
消费者:
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
channel.BasicQos(prefetchSize: 0, …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×2
asp.net-core ×2
swagger ×2
swagger-ui ×2
asynchronous ×1
cassandra ×1
python ×1
rabbitmq ×1
spacy ×1
wcf ×1
wpf ×1