小编nik*_*eee的帖子

定义TypeScript回调类型

我在TypeScript中有以下类:

class CallbackTest
{
    public myCallback;

    public doWork(): void
    {
        //doing some work...
        this.myCallback(); //calling callback
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的类:

var test = new CallbackTest();
test.myCallback = () => alert("done");
test.doWork();
Run Code Online (Sandbox Code Playgroud)

代码有效,因此它会按预期显示消息框.

我的问题是:我可以为我的课程领域提供任何类型的课程myCallback吗?现在,公共字段myCallback的类型any如上所示.如何定义回调的方法签名?或者我可以将类型设置为某种回调类型?或者我可以做些什么吗?我必须使用any(隐式/显式)吗?

我试过这样的东西,但它不起作用(编译时错误):

public myCallback: ();
// or:
public myCallback: function;
Run Code Online (Sandbox Code Playgroud)

我在网上找不到任何解释,所以我希望你能帮助我.

types callback typescript

146
推荐指数
7
解决办法
16万
查看次数

如何正确实现TAP方法?

我想提供一个基于任务的异步模式样式方法.在等待该方法时,我发现这两种提供方法的方法之间没有任何区别:

// GetStats is a delegate for a void method in this example
public Task GetStatsAsync()
{
    return Task.Run(GetStats);
}

public async Task GetStatsAsync()
{
    return await Task.Run(GetStats);
}

// Usage:
await GetStatsAsync();
// Difference?
Run Code Online (Sandbox Code Playgroud)

上层方法似乎比下层方法具有更少的开销.在查看MSDN博客时,我注意到他们似乎使用较低的方法.(例如,在本文中)

为什么?究竟有什么区别?他们似乎都工作.

.net c# task-parallel-library async-await

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

使用C#嵌入mspaint就像写字板一样

我刚刚看了一下wordpad.有一个名为"插入油漆图"的功能区按钮.当我点击那个按钮时,mspaint会打开并提示我画一些东西.画完东西后,我可以点击"更新文档"按钮.没有保存选项(仅"将副本另存为"). 没有退出按钮 此外,没有退出按钮.相反,它显示"退出并返回到文档"按钮.

现在我的问题是:我的C#桌面应用程序中是否以及如何从此功能中受益?我想过一些IPC,但我无法弄清楚它是如何工作的.有人有个主意吗?

.net c# api ipc paint

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

如何将System.Drawing.Image转换为字节数组?

嗨,我正在尝试将图像转换为字节数组,将其作为byte()传递给sql.我试图使用Image Converter,但它一直在失败

Dim converter As New ImageConverter
nRow.Signature = converter.ConvertTo(imgSignature, TypeOf(Byte())
Run Code Online (Sandbox Code Playgroud)

我一直得到的错误是字节是一种类型而不是表达式

vb.net image bytearray

10
推荐指数
2
解决办法
5万
查看次数

SQLite中的Base64?

有没有类似的东西

SELECT * FROM foo WHERE base64(bar) LIKE '%bararar%'
Run Code Online (Sandbox Code Playgroud)

在SQLite?

如果没有,在其他SQL风格的数据库中是否还有其他可比较的函数?(MySQL,MSSQL等)

我真的需要知道这个,因为我有一个庞大的数据库,其中一些base64编码的字符串包含一个我必须过滤掉的特定字符.希望可以有人帮帮我.

database sqlite base64 filter

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

验证.NET Framework程序集

我刚刚浏览了我们的德语VB.NET论坛,有一些有趣的东西让我有点头疼.

实际上可以使用ReflexIL或其他IL编辑器编辑 .NET Framework程序集.您唯一要绕过的是程序集的强名称签名.更改程序集IL后,您必须运行sn.exe -Vr [assemblyname]以跳过强名称验证.之后,您必须清除缓存的本机映像.只需浏览C:\Windows\assembly目录并删除与装配相关的每个图像.然后重启.登录后,运行ngen install [assemblyname].现在生成新的原生图像.

这有效.我在我的虚拟环境(Windows XP x86)中验证了此过程.现在让我最担心的是你可以轻松绕过.NET VerifyHash或者VerifyData方法RSACryptoServiceProvider.这实际上也有效.我和我的一位朋友测试过可以验证这个问题(见截图).这很容易.

例如,如果我创建构建在.NET Framework加密类许可制度,它可以绕过系统范围内每一个使用框架的系统上.NET应用程序.此外,每个人都可以通过挂钩方法来记录更改我调用的functios的输入.

现在我的问题是:既然这可能是一个很大的问题,我怎么能做些什么呢?当然,恶意用户可以只编辑我的应用程序,但这不会像在系统范围内那样糟糕.我正在考虑一些框架校验和验证,但由于.NET Framework有很多不同的更新,这似乎是不可能的.

任何解决方案或建议?Microsoft是否以某种方式处理此问题?

.net security cil ngen .net-assembly

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

Angular.js - 使用间隔应用过滤器

我正在为datetime对象使用自定义的angular.js过滤器:

function relativeTimeFilter()
{
    return function (dateObj) {
        return getRelativeDateTimeString(dateObj);
    };
}

function getRelativeDateTimeString(dt)
{
    if(!dt) return "undefined ago";

    var delta = dt.getSeconds();
    if (delta < 0) return "not yet";
    if (delta < 1 * 60) return delta == 1 ? "one second ago" : delta + " seconds ago";
    if (delta < 2 * 60) return "a minute ago";
    if (delta < 45 * 60) return Math.floor(delta/60) + " minutes ago";
    if (delta < 90 * 60) return "an …
Run Code Online (Sandbox Code Playgroud)

javascript time setinterval angularjs

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

在 Spring Converter 中将 `null` 转换为某个值

添加新列时,数据库 (Cassandra) 不允许指定默认值。因此null,每一行都有新的列。

现在,我们为实体添加了一个标志(将来可能会获得更多条目):

enum UsageFlag {
    OTHER,
    SPECIAL_VALUE,
}
Run Code Online (Sandbox Code Playgroud)

我们还添加了一个 ReadingConverter:

@ReadingConverter
public class UsageFlagReadingConverter implements Converter<String, UsageFlag> {
  @Nonnull
  @Override
  public UsageFlag convert(String source) {
    return source == null
        ? UsageFlag.OTHER
        : UsageFlag.valueOf(source);
  }
}
Run Code Online (Sandbox Code Playgroud)

它应该基本上把nullUsageFlag.OTHER在分析任何其他非空值作为枚举成员。

但是,这不起作用,因为根据 Spring 文档,只有在值不是时才会调用Converterconvert 方法。因此,如果该实体在数据库中,则该实体的字段仍然存在。如果(且仅当)有值时,它才能正常工作。由于整个列在创建时为空,这完全违背了. nullnullnullReadingConverter

Cassandra 似乎不支持为每一行设置一个值(如UPDATE foo SET flag='OTHER' WHERE True),所以这似乎是一个不错的选择。我们希望避免手动接触数据库中的每一行。

在这种情况下,我们有什么方法可以使用 Spring 来提供帮助吗?或者有没有办法使用 CQL 或 Cassandra 解决这个问题?

编辑:有关设置的更多上下文:

public interface FancyEntityRepository …
Run Code Online (Sandbox Code Playgroud)

java spring cql cassandra spring-data-cassandra

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

现代编译器使用哪些解析器?

我无法找到有关某些现代编译器的解析器的任何信息,尤其是:

  • 打字稿
  • C#

他们使用的是LL(k),LR(k),混合物还是其他不同的东西?是否有任何网站列出了有关多种语言的编译器/解析器的信息?由于这些编译器通常被认为是"现代的",我对它们的解析技术非常感兴趣.

compiler-construction parsing abstract-syntax-tree

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

当我已经计算总行数时如何计算mysql中分组的行数

我有下表,我想执行以下操作:

  1. 计算每个项目在表格中出现的次数

  2. 计算DISTINCT物品的数量

  3. 按名称对项目进行分组

    +-------+---------+
    |  id   |  names  |
    +-------+---------+
    |   1   |  Apple  |
    |   2   |  Orange | 
    |   3   |  Grape  | 
    |   4   |  Apple  | 
    |   5   |  Apple  | 
    |   6   |  Orange | 
    |   7   |  Apple  | 
    |   8   |  Grape  |  
    +-------+---------+
    
    Run Code Online (Sandbox Code Playgroud)

    对于 1. 和 3. 点,我有以下查询效果很好:

    SELECT * , 
       COUNT(names) as count_name, 
       FROM tbl_products WHERE type = '1' 
       GROUP BY names
    
    Run Code Online (Sandbox Code Playgroud)

    所以我得到:

    Apple  (4)
    Orange (2)
    Grape …
    Run Code Online (Sandbox Code Playgroud)

php mysql sql count distinct

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

为什么在可达性分析中不考虑Promise &lt;never&gt;?

假设我们有这个功能:

function returnNever(): never {
    throw new Error();
}
Run Code Online (Sandbox Code Playgroud)

创建IIF时,其后的代码将标记为不可访问:

(async () => {
    let b: string;
    let a0 = returnNever();
    b = ""; // Unreachable
    b.toUpperCase(); // Unreachable
})();
Run Code Online (Sandbox Code Playgroud)

这按预期工作。请注意,a0推断类型为never

但是,如果returnNever()返回a Promise<never>并等待,则行为是不同的:

(async () => {
    let b: string;
    let a1 = await Promise.reject(); // returns Promise<never>
    b = ""; // Not unreachable?
    b.toUpperCase(); // Not unreachable?
})();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,a1也被推断为type never。但是之后的代码并未标记为无法访问。为什么?

背景:最近我偶然发现了一些logError类似于以下代码的函数。它在一个catch块内使用。通过这种方式,我发现,可及性分析不仅受到可及性分析的影响,而且还受到明确分配分析的影响:

declare function fetchB(): Promise<string>; …
Run Code Online (Sandbox Code Playgroud)

type-inference reachability promise async-await typescript

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

&$ PHP中的变量

我一直在查看wordpress的核心文件并偶然发现这段代码,我注意到它在变量名之前有一个&符号,然后是=.

我试图寻找这一点,碰上了这种从PHP手册中,并没有解释好,还是我看错了一个!我还看到它用于修改使用它的方法之外的变量,但是,这就是变量的含义,需要修改,如果这是正确的,那么如何使用它?

function _make_cat_compat( &$category ) {

    if ( is_object( $category ) ) {
        $category->cat_ID = &$category->term_id;
        $category->category_count = &$category->count;
        $category->category_description = &$category->description;
        $category->cat_name = &$category->name;
        $category->category_nicename = &$category->slug;
        $category->category_parent = &$category->parent;
    } elseif ( is_array( $category ) && isset( $category['term_id'] ) ) {
        $category['cat_ID'] = &$category['term_id'];
        $category['category_count'] = &$category['count'];
        $category['category_description'] = &$category['description'];
        $category['cat_name'] = &$category['name'];
        $category['category_nicename'] = &$category['slug'];
        $category['category_parent'] = &$category['parent'];
    }
}
Run Code Online (Sandbox Code Playgroud)

php parameters reference function

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