我提出从我们目前的业务痛点同事一个有趣的问题,并很好奇,如果有什么事,在那里(工具/库/算法),这可能有助于自动执行此.
假设您有一个文字值列表(在我们的例子中,它们是URL).我们想要做的是,根据这个列表,提出一个匹配所有这些文字项的正则表达式.
所以,如果我的列表是:
http://www.example.com
http://www.example.com/subdir
http://foo.example.com
Run Code Online (Sandbox Code Playgroud)
最简单的答案是
^(http://www.example.com|http://www.example.com/subdir|http://foo.example.com)$
Run Code Online (Sandbox Code Playgroud)
但是这对于大量数据而言变得很大,而且我们有一个长度限制,我们试图保持不变.
目前我们手动编写正则表达式,但这不能很好地扩展,也不是很好地利用任何人的时间.有没有分解源数据拿出匹配所有的源值的长度最佳的正则表达式的更自动化的方式?
我有一个与外部库连接的程序,除了其他外,它还有一个无符号的12位值,包含在一个更大的结构中.
这曾经是8位,所以我们只是将其编组为一个字节.
现在它是12位...我可以使用ushort,但这会打开(a)范围检查和(b)编组的问题.
是否有一种简单的方法来实现这样的约束数值类型,我不必覆盖每个赋值和比较方法?
除了我在组件类中声明的render方法 constructor 或自定义函数之外,有没有办法在另一个地方获取和处理上下文值?
以我所知的方式,消费者标签围绕着 fetch 函数,但是,我不想处理消费者标签中的值。
任何的想法?
用户将读取一行,我将保留第一个单词作为execvp的命令.
让我们说他会输入"cat file.txt" ...命令将是cat.但我不知道如何使用它execvp(),我读了一些教程,但仍然没有得到它.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buf;
char command[32];
char name[32];
char *pointer;
char line[80];
printf(">");
while((buf = readline(""))!=NULL){
if (strcmp(buf,"exit")==0)
break;
if(buf[0]!=NULL)
add_history(buf);
pointer = strtok(buf, " ");
if(pointer != NULL){
strcpy(command, pointer);
}
pid_t pid;
int status;
if ((pid = fork()) < 0) {
printf("*** ERROR: forking child process failed\n");
exit(1);
}
else if (pid == 0) {
if (execvp(command, buf) < 0) {
printf("*** ERROR: exec failed\n");
exit(1); …Run Code Online (Sandbox Code Playgroud) 我总是想知道这一点,但为什么运算符重载不适用于Delphi中的类?
我记得在跑步时读了一次答案,它说它会与某些东西发生冲突,但我记不起来了.据我所知,只有隐式运算符可能会导致一些问题,因为类存储在堆上并且赋值实际上是堆地址的副本(基本上是复制指针).
我编写了一个我在类的某些成员上使用的自定义属性:
public class Dummy
{
[MyAttribute]
public string Foo { get; set; }
[MyAttribute]
public int Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我能够从类型中获取自定义属性并找到我的特定属性.我无法弄清楚怎么做是获取指定属性的值.当我接受Dummy的一个实例并将它(作为一个对象)传递给我的方法时,我怎样才能获取我从.GetProperties()获取的PropertyInfo对象并获取分配给.Foo和.Bar的值?
编辑:
我的问题是我无法弄清楚如何正确调用GetValue.
void TestMethod (object o)
{
Type t = o.GetType();
var props = t.GetProperties();
foreach (var prop in props)
{
var propattr = prop.GetCustomAttributes(false);
object attr = (from row in propattr where row.GetType() == typeof(MyAttribute) select row).First();
if (attr == null)
continue;
MyAttribute myattr = (MyAttribute)attr;
var value = prop.GetValue(prop, null);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,prop.GetValue调用给了我一个TargetException - 对象与目标类型不匹配.如何构建此调用以获取此值?
我们有一个抽象类,它是我们通过WCF服务发送的许多不同请求的基础.这是一个丑陋的令人发指的黑客,每当我们添加一个新的请求时,我们必须记住将[KnownType]属性添加到这个基类.
有没有办法告诉将DataContractSerializer这种抽象类型的所有派生对待KnownType?
我正在写一个接受年份作为参数的方法.即四位数等于或小于当前年份.日历只有格里高利(现在......不确定未来)我肯定不会需要BC.
我要使用哪种数据类型?明显的解决方案是使用DateTime或Int32:
public void MyFunction(DateTime date)
{
// year to work with: date.Year;
// date.Month, date.Day, etc. is irrelevant and will always be
}
Run Code Online (Sandbox Code Playgroud)
要么
public void MyFunction(Int year)
{
if ( year > 9999 || otherValidations == false )
{
//throw new Exception...
}
// year to work with: new DateTime(year, 1, 1);
}
Run Code Online (Sandbox Code Playgroud)
除了编写自己的自定义数据类型年以外,还有其他选择吗?
我试图弄清楚是否有一个库给我一些接近相当于Windows自定义性能计数器的东西(这里描述http://geekswithblogs.net/.NETonMyMind/archive/2006/08/20/88549.aspx)
基本上,我正在寻找可用于跟踪应用程序中的全局计数器的东西,以及(理想情况下)通过定义良好的接口向其他应用程序/用户呈现该信息的东西.这些是应用统计; 像内存和磁盘这样的东西可以通过其他方式捕获,但我希望公开在我的应用程序生命周期中处理的吞吐量/事务/"小部件".
我见过这个问题:
还有这个
但这两者都不是我想要的.我不想写一个静态文件(毕竟这是动态信息;即使磁盘已满,我也应该能够得到它),而且如果可能的话,宁可避免使用自己开发的代码集.理想情况下,至少在Linux上,这些数据(我认为)会以某种方式通过/ proc浮出水面,虽然我不清楚是否可以从用户区域完成(这不太重要,只要它在某些方面浮出水面)给客户的方式.)
但回到问题的关键:是否有任何内置或合适的第三方库为我提供适用于我可以在Linux和其他*NIXy操作系统上使用的应用程序指标的自定义全局(线程安全,高性能)计数器?(并且可以从C/C++接口?)
我对多线程环境有些新意,我正在尝试为以下情况提出最佳解决方案:
我每天早上从数据库中读取一次数据,并将数据存储在Singleton对象的HashMap中.我有一个setter方法,只有在发生日内DB更改时才会调用(每天会发生0-2次).
我还有一个getter,它在地图中返回一个元素,这个方法每天被调用数百次.
我担心在我清空和重新创建HashMap时调用getter的情况,因此试图在空/格式错误的列表中找到一个元素.如果我使这些方法同步,它会阻止两个读者同时访问getter,这可能是性能瓶颈.由于写入很少发生,我不想过多地受到性能影响.如果我使用ReentrantReadWriteLock,这会强制任何调用getter的队列,直到释放写锁定为止?是否允许多个读者同时访问getter?它一次只会强制执行一个作者吗?
编码这只是一个问题......
private final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private final Lock read = readWriteLock.readLock();
private final Lock write = readWriteLock.writeLock();
public HashMap getter(String a) {
read.lock();
try {
return myStuff_.get(a);
} finally {
read.unlock();
}
}
public void setter()
{
write.lock();
try {
myStuff_ = // my logic
} finally {
write.unlock();
}
}
Run Code Online (Sandbox Code Playgroud)