从头启动Microsoft SQL Server(在Linux上)容器后...
$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pa$$word' -p 1433:1433 \
-d --name mssql microsoft/mssql-server-linux
Run Code Online (Sandbox Code Playgroud)
...创建Docker 检查点 ...
$ docker checkpoint create mssql cp1
Run Code Online (Sandbox Code Playgroud)
...失败:
Error response from daemon: Cannot checkpoint container mssql:
failed to read checkpoint reader:
open /var/lib/docker/containers/f2eb8d17e95630332bbeab887b9e03a1b91efcd8907f69b82805a788331316e2/checkpoints/cp1/cgroup.img:
no such file or directory
Run Code Online (Sandbox Code Playgroud)
这是在Ubuntu 18.04上,安装了CRIU并启用了实验模式:
$ docker version
Client:
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:35:57 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - …Run Code Online (Sandbox Code Playgroud) 如何使用NEST 应用地理距离范围过滤器?它似乎是这样的
var results = client.Search<MyDataType>(s => s
.Filter(m => m.GeoDistance(c => c.Location, f => f.Distance(100, GeoUnit.mi)));
Run Code Online (Sandbox Code Playgroud)
但是如何传递目标位置的长/纬度呢?
(类似的问题已被要求 Java客户端)
Dart允许链接期货按顺序调用多个异步方法而不嵌套回调,这很棒.
假设我们想首先连接到像Redis这样的数据存储,然后运行一堆顺序读取:
Future<String> FirstValue(String indexKey)
{
return RedisClient.connect(Config.connectionStringRedis)
.then((RedisClient redisClient) => redisClient.exists(indexKey))
.then((bool exists) => !exists ? null : redisClient.smembers(indexKey))
.then((Set<String> keys) => redisClient.get(keys.first))
.then((String value) => "result: $value");
}
Run Code Online (Sandbox Code Playgroud)
四种异步方法,但代码相当容易阅读和理解.几乎看起来步骤是同步并按顺序执行的.美丽!(想象一下,必须使用嵌套的JavaScript回调编写相同的代码......)
不幸的是,这不会很有效:我们从.connect方法中获得的RedisClient 仅被分配给一个局部变量,该变量不在后续.thens的范围内.所以,redisClient.smembers和redisClient.get实际上将抛出一个空指针异常.
显而易见的解决方法是将返回值保存在具有函数范围的另一个变量中:
Future<String> FirstValue(String indexKey)
{
RedisClient redisClient = null;
return RedisClient.connect(Config.connectionStringRedis)
.then((RedisClient theRedisClient)
{
redisClient = theRedisClient;
return redisClient.exists(indexKey);
})
.then((bool exists) => !exists ? null : redisClient.smembers(indexKey))
.then((Set<String> keys) => redisClient.get(keys.first))
.then((String …Run Code Online (Sandbox Code Playgroud) 假设我们有一个排序集合,例如SortedSet或SortedList,有很多(10M +)元素.大量的查询正在发生,因此性能很重要.从运行时比较,我的印象是,LINQ到对象不采取排序的优势,因此不能服用的潜在性能提升的优势下.
第一个例子 - 计算范围内的元素:
var mySortedSet1 = new SortedSet<int>();
// populate ...
int rangeCount = (from n in mySortedSet1
where ((n >= 1000000000) && (n <= 2000000000))
select n).Count();
Run Code Online (Sandbox Code Playgroud)
不完全确定LINQ to Objects在内部执行什么操作,最坏的情况是它检查每个元素是否为O(n).通过利用二进制搜索排序O(log n)的下限和上限,可以更快地完成.
第二个示例 - 在集合列表上选择多个:
var myListOfSortedSets = new List<SortedSet<int>>();
// populate...
var q = myListOfSortedSets.SelectMany(s => s).OrderBy(s => s);
foreach (var n in q)
{
Console.WriteLine(n);
}
Run Code Online (Sandbox Code Playgroud)
如果LINQ to SQL Objects要利用排序,它可以有效拉链 - 将所有已排序的集合合并到O(n)中的一个大型排序列表中.然后可以忽略结果上的.OrderBy,因为列表已经排序.
相反,SelectMany将所有已排序的集合连接成一个大的(现在未排序的)列表,这将需要另一个O(n log n)排序.这可以通过删除.OrderBy并观察元素写入控制台的顺序来轻松验证.
我的问题是:是否已经有一个替代的,更高效的LINQ to SortedSet/SortedList实现?
i4o看起来很有趣,但它似乎需要二级索引集合来提高原始集合的查询性能.我只是希望通过利用排序来对我的已排序集合进行查询以更快地运行.
根据最新的评论这个线程,.TT模板将现在毕竟可以在ASP.NET 5开始支持Visual Studio的更新1.
哪个恕我直言会很好,因为在使用T4MVC多年后,我当然不想回到使用魔术字符串作为路由/视图名称(容易出错且不重构友好).
但是,我无法使用ASP.NET 5 RC和Visual Studio Professional 2015 Update 1.
这是我尝试过的:
错误NU1002项目WebApplication1中的依赖关系T4MVCExtensions 3.16.5不支持框架DNXCore,Version = v5.0.
T4MVC.tt,T4MVC.tt.hooks.t4并T4MVC.tt.settings.xml给ASP.NET 5解决方法:Visual Studio中的.TT文件确实提供了"运行自定义工具" .......但是运行转换会抛出NullReferenceException:
Severity Code Description Project File Line Suppression State
Error Running transformation: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.GetProjectItem(ProjectItems items, String subPath) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 1398
at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.GetProjectItem(Project project, String name) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 1378 …Run Code Online (Sandbox Code Playgroud) ASP.NET Core 的标签助手似乎不能与DynamicRouteValueTransformer结合使用。
这是一个 MCVE:假设我们有一个带有两个动作的简单控制器......
public class GenericController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult Add()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
... 以及带有标签助手Index的Add操作的视图链接asp-action:
<!DOCTYPE html>
<html>
<body>
<a asp-action="Add">Add new!</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我们现在/Generic在浏览器中打开并检查页面时,我们会注意到 ASP.NEThref为控制器操作生成了预期值:
<a href="/Generic/Add">Add new!</a>
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。现在让我们创建一个DynamicRouteValueTransformer将所有请求路由到同一个控制器的...
public class Transformer : DynamicRouteValueTransformer
{
public override ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
if (values.ContainsKey("controller"))
{
values["originalController"] = values["controller"];
values["controller"] …Run Code Online (Sandbox Code Playgroud) Angular.JS和Jekyll都使用{{和}}标记表达式的开头和结尾.因此,如果您同时使用两者,则存在冲突,Jekyll通常会消除或混淆Angular表达式.
一个解决方法是告诉Angular使用不同的符号$interpolateProvider,例如:
var app = angular.module('app', [],
function($interpolateProvider) {
$interpolateProvider.startSymbol('[[{').endSymbol('}]]');
});
Run Code Online (Sandbox Code Playgroud)
还有一种方法可以告诉Jekyll使用不同的开始和结束符号吗?
更新:为什么?只是试图找到一种侵入性较小的方法来解决冲突,因为我的项目通常包含比Jekyll标记更多的Angular标记.
Slack 具有复制链接功能,可将单个聊天消息的深层链接复制到剪贴板:
这是此类深层链接的示例(已混淆):
https://myworkspace.slack.com/archives/CqwertGU/p1234567898000159
我想做的是,从给定该链接的 Slack API 获取该消息的详细信息。
之后的第一个字符串/archives/是频道的 ID。不过我不太清楚第二个字符串:
channels.history也可用于从存档中提取单个消息。您需要消息的
ts值,以在通道中唯一标识它。您还需要该频道的 ID。
所以,我发现p1234567898000159上面链接中的值几乎是消息的ts值,但不完全是(Slack API 不会接受它):需要删除前导,并且后面p还必须插入一个.第10位数字:1234567898.000159
将所有这些放在一个 API 请求中......
https://slack.com/api/channels.history?latest=1234567898.000159&channel=CqwertGU&count=1&pretty=1&token=mytoken123&inclusive=true
...我收到了包含所有消息详细信息的回复,这正是我所需要的。
我的问题是:我这样做对吗?我真的需要通过ts这种方式从 URL 参数构造消息的值,还是有更好、更强大、官方支持的方法?
出于分析目的,我想对大量 IP 执行反向 DNS 查找。“大”的意思,每小时至少几万。我正在寻找提高处理速度的方法,即降低每批的处理时间。
将Dns.GetHostEntry的异步版本包装到可等待任务中已经有很大帮助(与顺序请求相比),导致吞吐量约为。100-200 IPs/秒:
static async Task DoReverseDnsLookups()
{
// in reality, thousands of IPs
var ips = new[] { "173.194.121.9", "173.252.110.27", "98.138.253.109" };
var hosts = new Dictionary<string, string>();
var tasks =
ips.Select(
ip =>
Task.Factory.FromAsync(Dns.BeginGetHostEntry,
(Func<IAsyncResult, IPHostEntry>) Dns.EndGetHostEntry,
ip, null)
.ContinueWith(t =>
hosts[ip] = ((t.Exception == null) && (t.Result != null))
? t.Result.HostName : null));
var start = DateTime.UtcNow;
await Task.WhenAll(tasks);
var end = DateTime.UtcNow;
Console.WriteLine("Resolved {0} IPs in {1}, that's {2}/sec.",
ips.Count(), …Run Code Online (Sandbox Code Playgroud) 在 GitHub Actions 工作流定义文件中,有一组您可以在表达式中使用的内置函数。
例如: ${{ toJson(github) }}
是否有任何可以在表达式中使用的字符串操作函数,例如toLowerCase?
文档页面没有提到任何内容。但是,我想知道 Github 是否在幕后使用某种标准模板/表达式 eval 库,它提供了更多的开箱即用功能。
.net ×2
asp.net-core ×2
angularjs ×1
asp.net ×1
async-await ×1
c# ×1
coreclr ×1
dart ×1
dart-async ×1
dns ×1
docker ×1
jekyll ×1
linq ×1
nest ×1
r4mvc ×1
reverse-dns ×1
slack ×1
slack-api ×1
sortedlist ×1
sortedset ×1
sql-server ×1
t4mvc ×1