我有一个给定的联合类型的数组,然后想检查数组中是否包含来自联合类型的超集的字符串(运行时检查):
const validOptions: ("foo" | "bar")[] = ["foo", "bar"]
type IArrType = typeof validOptions[number]
const key: IArrType | "alien" = "alien" // Rather: some random function
const isKeyInArr = validOptions.indexOf(key) > -1 // Error: "alien" is not assignable to "foo" | "bar"
// Fix 1:
const isKeyValidCast = validOptions.indexOf(<IArrType>key) > -1
// Fix 2:
const isKeyValidExplicit =
key === "alien" ? false : validOptions.indexOf(key) > -1 // OK: type guard magic
Run Code Online (Sandbox Code Playgroud)
修复1可以,但不是很优雅.修复2愚弄编译器,但是误导和低效的运行时.在我的例子中,"外来"字符串类型只是不在联合类型中的任何字符串的占位符.
有没有什么方法可以在没有强制转换或显式测试的情况下编译?表达式可以否定,以便我们让这个"类型后卫"起作用吗?
顺便说一句:这个非常酷的答案展示了如何从值列表构造一个类型化的元组:Typescript从元组/数组值派生联合类型
我的应用程序在内部进行segfault之前保持950-970个SSL连接SSL_read.是否可以将OpenSSL配置为接受比此更多的连接?
我已经将它编程为在获取它们之后不对连接做任何事情,所以我知道这是打开连接的#函数,而不是当前正在读/写的连接数或时间.
更新:
ulimit -n设置为4096.我通过设置验证了这一点,ulimit -100在这种情况下观察到不同的错误.我正在尝试从源代码构建OpenSSL并启用调试选项.我开始怀疑这是否需要几个小时或告诉我任何有用的东西.我在这里有一个问题.
我已经确定在openssl v 1.0.1.c中这行发生了段错误:
ssl_lib.c:968
968 return(s->method->ssl_read(s,buf,num));
Run Code Online (Sandbox Code Playgroud)
此外,我已经确定这不是ssl_read函数内部的segfaulting (应该指向ssl3_read).成员ssl_read的method实际上是无效的本身和它出现method本身也是无效的(我的基础上推断这个"奇怪的看的地址.")
我知道C中的静态函数允许只在该文件的范围内调用该特定函数.我感兴趣的是这是怎么发生的.它是放在内存的特定部分还是编译器对该函数应用特定操作.可以将相同的过程应用于汇编中的函数调用吗?
可能重复:
jQuery/Javascript替换损坏的图像
这应该很容易我只是不知道用谷歌搜索的术语.我认为这是HTML/CSS,如果图像链接被破坏,它通常会显示缺少的图像图标,显示带有红色,绿色,蓝色形状的页面.在HTML中,是否可以配置"如果图像链接断开则使用此图像?"
在a中的appender中logback.xml是否可以执行任何操作,例如迭代MDC,打印整个MDC等等?我能想到的最简单的方法是基本上通过java/groovy代码(我还没有研究过怎么做),想知道是否有简写.
一些例子我遇到一个处理菜单的程序..
他在main函数之前声明了所有函数,因为我理解应该是,然后在main中也提到了一个函数,它是一个void函数:
char get_choice(void);
char get_first(void);
int get_int(void);
void count(void);
int main(void)
{
int choice;
void count(void);
while ( (choice = get_choice()) != 'q')
{
switch (choice)
{
case 'a' : printf("Buy low, sell high.\n");
break;
case 'b' : putchar('\a'); /* ANSI */
break;
case 'c' : count();
break;
default : printf("Program error!\n");
break;
}
}
printf("Bye.\n");
Run Code Online (Sandbox Code Playgroud)
......(功能实现)
你能告诉我为什么吗?TNX
我找到了这个宝石:
如果连接失败,客户端将需要与代理建立新连接.在先前连接上打开的任何频道都将自动关闭,这些频道也需要重新打开.
所以这不好.我即将编写一大堆处理自动重新连接并重新创建通道,然后从我的所有代码中封装这种情况.问题是,这应该已经完成了.这可能在Java RMQ库中吗?
如果我有多个enum,例如:
enum Greetings{ hello, bye, how };
enum Testing { one, two, three };
Run Code Online (Sandbox Code Playgroud)
如何强制使用正确的enum?例如,我不希望有人hello在他们应该使用时使用它们以one获得更好的调试和可读性.
在JavaScript中引用Crockford好的部分:
我们可以...定义我们自己的is_array函数:
var is_array = function (value) {
return value && typeof value === 'object' && value.constructor === Array;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它无法识别在不同的Windows或框架中构建的数组.
然后他没有解释原因.所以!为什么?
我正在尝试回滚错误,但仍然让客户端收到错误.除非有一种方法可以在异常处理程序中访问错误,否则这实际上可能是不可能的.
可以从异常中"抛出",即可以发出信号:
CREATE PROCEDURE p ()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SIGNAL SQLSTATE VALUE '99999'
SET MESSAGE_TEXT = 'An error occurred';
END;
DROP TABLE no_such_table;
END;
Run Code Online (Sandbox Code Playgroud)
但是这个来自MySQL doc的示例代码看起来很糟糕,因为它实际上吞噬了所有错误并将它们合并为一个.
SHOW ERRORS似乎相关,但我没有看到任何方式以编程方式使用它,例如SELECT Code FROM (SHOW ERRORS);是不可能的.
这可能吗?有没有更好的做法,我完全错过了?