在我们无法重现的生产环境中,我们会定期关闭Windows服务.可能需要几个月才能再次发生.
我正在进行一些诊断尝试并帮助解决这个问题,我正在考虑的一件事是在我们开始关闭应用程序后将事件添加到系统线程池60秒.我们的应用程序应在10秒内完全关闭.
在这种情况下,我想跟踪进程的剩余运行线程到事件日志.
我可以使用System.Diagnostics.Process.GetCurrentProcess.Threads获取正在运行的线程.这些线程对象具有本机Win32线程ID等.
我想知道是否有任何方法可以从这些线程ID返回到它们在当前进程中表示的任何托管线程.我试图这样做的原因是因为我们的线程池和其他线程产生了我们给出了代表它们的目的的名称,它真的有助于把它们拿回来.
我试图从视频中提取所有帧.
通过以下代码我想获取视频的前30帧,但我只得到第一帧30次.
private ArrayList<Bitmap> getFrames(String path) {
try {
ArrayList<Bitmap> bArray = new ArrayList<Bitmap>();
bArray.clear();
MediaMetadataRetriever mRetriever = new MediaMetadataRetriever();
mRetriever.setDataSource("/sdcard/myvideo.mp4");
for (int i = 0; i < 30; i++) {
bArray.add(mRetriever.getFrameAtTime(1000*i,
MediaMetadataRetriever.OPTION_CLOSEST_SYNC));
}
return bArray;
} catch (Exception e) { return null; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何从视频中获取所有帧?
当我尝试Request.UrlReferrer.ToString()
此错误发生时:
System.NullReferenceException:未将对象引用设置为对象的实例
请考虑以下代码:
void func1(const int &i);
void func2(int i);
void f()
{
int a=12;
func1(a);
func2(a);
}
Run Code Online (Sandbox Code Playgroud)
用g ++ 4.6和-O3编译,我可以看到编译后重新读取函数调用之间的"a"值.将a的定义更改为"const int",编译器不会这样做,而是简单地将立即值"12"加载到edi中.如果a不是const,则同样如此,但我将func1的签名更改为按值接受.
虽然不是代码生成中的错误,但这仍然是奇怪的行为.因为func1承诺不改变a,为什么编译器的代码会根据a是否为const而改变?
编辑:一些怀疑论者声称我可能正在阅读错误的代码.上面的代码使用-S编译产生以下代码:
_Z1fv:
.LFB0:
.cfi_startproc
subq $24, %rsp
.cfi_def_cfa_offset 32
leaq 12(%rsp), %rdi
movl $12, 12(%rsp)
call _Z5func1RKi
movl 12(%rsp), %edi <-- Rereading a
call _Z5func2i
addq $24, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
Run Code Online (Sandbox Code Playgroud)
将a更改为const会产生:
_Z1fv:
.LFB0:
.cfi_startproc
subq $24, %rsp
.cfi_def_cfa_offset 32
leaq 12(%rsp), %rdi
movl $12, 12(%rsp)
call _Z5func1RKi
movl $12, %edi <-- Use immediate value
call _Z5func2i …
Run Code Online (Sandbox Code Playgroud) 如何在Flask-Admin中的创建/编辑表单中自定义字段名称?
我知道如何更改表名:
class User(db.Model):
__tablename__ = 'user'
id = db.Column('user_id', db.Integer, primary_key=True, autoincrement=True)
first_name = db.Column(db.String(100))
last_name = db.Column(db.String(100))
login = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120))
password = db.Column(db.String(128))
from flask.ext.admin.contrib.sqla import ModelView
class MyModelView(ModelView):
def is_accessible(self):
return current_user.is_authenticated()
admin = Admin(app, u'CustomName')
admin.add_view(MyModelView(User, db.session, u'Custom Table Name'))
Run Code Online (Sandbox Code Playgroud)
在创建/编辑表单中,我获得了用户db.Model中的列名称之类的字段名称.
我怎么可以简单地改变这个字段名称?
例如,要在用户的创建表单中获取"Foo"而不是"login"?
我发现一个例子在安装过程中加密的web.config 这里,但我的应用程序是一个Windows服务.该aspnetreg_iis
方法仅适用于web.config文件.
我知道如何以编程方式加密配置文件,但我不认为我可以使用WiX做到这一点.我错了吗?有任何想法吗?
我正在使用类似SPIMS或MARS的系统调用函数.
我正在读一个字符串(它可以工作,因为我可以打印出来)如下:
li $v0, 8
la $a0, string
li $a1, 256
syscall
Run Code Online (Sandbox Code Playgroud)
但是,我在访问字符串的单个字符时遇到问题.因此,如果我想访问第一个字符并打印它,我正在尝试这样做:
la $t0, string
lb $a0, ($t0)
li $v0, 4
sys call
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样的事情:
la $a0, string
li $v0, 4
syscall
Run Code Online (Sandbox Code Playgroud)
这会将整个字符串打印为字符串指向整个字符串.
如果我尝试类似的东西:
la $a0, string
lb $a0, ($t0)
li $v0, 4
syscall
Run Code Online (Sandbox Code Playgroud)
它给了我一个出界的错误.我不明白为什么 - 虽然不是一个字节长的字符,这只是将字符串中的第一个字节加载到$ a0?
谢谢
在MIPS中,la
指令转换为lui
和ori
.但是,MARS Simulator似乎根本不这样做.当我转储以下机器代码时:
.text
la $a0, array
la $a1, array_size
lw $a1, 0($a1)
.data
array: .word 0:10
array_size: .word 10
message: .asciiz "The sum of numbers in array is: "
Run Code Online (Sandbox Code Playgroud)
我明白了:
00100000000001000010000000000000
00100000000001010010000000101000
10001100101001010000000000000000
Run Code Online (Sandbox Code Playgroud)
这显然是.它倾销la
为一条指令.MARS做什么?我该如何解释la
为lui
和ori
?
谢谢,
我的公司最近强迫我们使用Wix Toolset(v.4.0.12),因为我们升级到Visual Studio 2012,遗憾的是不再包含安装程序项目.
我的问题如下.我有很多项目的大解决方案,这些项目都会导致exe文件和几个dll.
然后,我在解决方案中创建一个Wix安装项目,并添加对生成exe文件的项目的引用.在该项目中引用的属性我设置Harvest: true
和Project Output Groups: Binaries
.
我希望我的WiX项目的构建能够从引用的项目中获取依赖关系,这样我就不需要手动添加引用,因为这会给我更多的维护.
此外,如果我heat.exe
在引用的项目文件上运行,我只获得文件的exe输出,而不是项目依赖的dll.
我认为以上是非常标准的,wix工具应该能够为我收集这些信息.而且我真的很想知道为什么在网上进行广泛搜索之后,找不到任何有类似问题的人.
如果有人知道上述原因,请尝试向我发送如何使用WiX进行操作的基本教程.我似乎找不到合适的人.
如果我明确定义这样的功能(defn f [x] (get x "a"))
,那么这两个(-> {"a" 1} f)
并(f {"a" 1})
达到预期效果.
但是,如果我使用匿名函数,只能(#(get % "a") {"a" 1})
工作但(-> {"a" 1} #(get % "a"))
抛出异常:CompilerException java.lang.ClassCastException: clojure.lang.PersistentArrayMap cannot \
be cast to clojure.lang.ISeq, compiling:(NO_SOURCE_PATH:1:1)