我有一个哈希表,在流量很大的情况下.我想为哈希表添加超时机制,删除太旧的记录.我担心的是, - 它应该是轻量级的 - 删除操作没有时间关键.我的意思是(超时值是1小时)删除操作可以在1小时或1小时15分钟后.没有问题.
我的意见是,我创建了一个大数组(作为环形缓冲区),存储时间和哈希表键,当添加到哈希表时,使用数组索引查找数组上的下一个插槽时间,如果数组插槽为空,则插入时间和HT键,如果数组槽不为空,则比较发生超时的插入时间.
如果发生超时从Hashtable中删除(如果尚未删除)则不会发生超时,增加索引直到找到空槽或时间数组槽.从哈希表中删除时,大数组上没有操作.
不久,对于Hashtable的每个添加操作,可以从哈希表中删除1个timeouted元素或不执行任何操作.
您的优雅和轻量级解决方案是什么?
谢谢你的帮助,
我在Oracle数据库中有一个存储过程.
GET_VENDOR_STATUS_COUNT(DOCUMENT_ID IN NUMBER, NOT_INVITED OUT NUMBER, INVITE_WITHDRAWN OUT NUMBER, ...
Run Code Online (Sandbox Code Playgroud)
其他参数是OUT参数.
在我的hbm文件中,我写了以下内容:
<sql-query name="getVendorStatus" callable="true">
<return-scalar column="NOT_INVITED" type="string"/>
<return-scalar column="INVITE_WITHDRAWN" type="string"/>
<return-scalar column="INVITED" type="string"/>
<return-scalar column="DISQUALIFIED" type="string"/>
<return-scalar column="RESPONSE_AWAITED" type="string"/>
<return-scalar column="RESPONSE_IN_PROGRESS" type="string"/>
<return-scalar column="RESPONSE_RECEIVED" type="string"/>
{ call GET_VENDOR_STATUS_COUNT(:DOCUMENT_ID , :NOT_INVITED ,:INVITE_WITHDRAWN ,:INVITED ,:DISQUALIFIED ,:RESPONSE_AWAITED ,:RESPONSE_IN_PROGRESS ,:RESPONSE_RECEIVED ) }
</sql-query>
Run Code Online (Sandbox Code Playgroud)
这是我的Java代码:
session.getNamedQuery("getVendorStatus").setParameter("DOCUMENT_ID", "DOCUMENT_ID").setParameter("NOT_INVITED", "NOT_INVITED")
Run Code Online (Sandbox Code Playgroud)
......继续直到所有参数.
我收到以下SQL异常:
18:29:33,056 WARN [JDBCExceptionReporter] SQL错误:1006,SQLState:72000
18:29:33,056错误[JDBCExceptionReporter] ORA-01006:绑定变量不存在
请告诉我在Hibernate中调用存储过程的确切过程是什么?我不想使用JDBC可调用语句.
我有点好奇其他开发人员在使用Entity Framework或NHibernate在ASP.NET MVC中编程时应用Repository模式的经验.在我看来,这种模式已经在ORM中实现了.DbContext并DbSet<T>在实体框架和ISessionNHibernate中.这些Repository模式中提到的大部分问题- 如POEE和DDD编目- 都是由这些ORM非常充分地实现的.即这些问题是,
此外,我见过的大多数存储库模式的实现都遵循这种实现模式 - 假设我们正在开发一个博客应用程序.
NHibernate实现:
public class PostRepository : IPostRepository
{
private ISession _session;
public PostRepository(ISession session)
{
_session = session;
}
public void Add(Post post)
{
_session.Save(post);
}
// other crud methods.
}
Run Code Online (Sandbox Code Playgroud)
实体框架:
public class PostRepository : IPostRepository
{
private DbContext _session;
public PostRepository(DbContext session)
{
_session = session;
}
public void Add(Post post)
{
_session.Posts.Add(post);
-session.SaveChanges();
} …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个asp.net控件,它将以网格格式显示一整年,每个月作为一行,每个月的每一天作为列.我找到了以下经典的ASP脚本,它产生了正确的格式:http://www.livio.net/code/calendar_36/CalendarTestYearly36.asp? infomode = HELP(参见年历)
有没有这样的东西,或者有没有办法在没有特定控制的情况下做到这一点?我是asp.net的新手.
谢谢
我有30多个单位图(320x240像素),我想在Android设备上一个接一个地全屏显示,从而产生一个动画.目前,我使用ImageView和Timer实现动画,设置下一帧,然后发送将应用下一帧的消息.得到的帧速率非常低:<2 fps.
计时器:
animationTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Drawable frame = getNextFrame();
if (frame != null) {
Message message = animationFrameHandler.obtainMessage(1, frame);
animationFrameHandler.sendMessage(message);
}
}
}, 0, (int) (1000.0d / fps));
Run Code Online (Sandbox Code Playgroud)
处理程序:
final Handler animationFrameHandler = new Handler() {
@Override
public void handleMessage(Message message) {
setImageDrawable((Drawable) message.obj);
}
};
Run Code Online (Sandbox Code Playgroud)
由于我想要实现高达30 fps的帧速率,我必须使用另一种机制并听说Canvas.drawBitmapMesh()和OpenGL.
如果可能的话我想避免使用OpenGL.
非常感谢您分享您的经验!
我想在Visual Studio 2010中使用带有C#的DTE2对象来获得对当前解决方案的引用.
我首先尝试了以下代码:
var dte = Marshal.GetActiveObject("VisualStudio.DTE.10.0") as EnvDTE80.DTE2;
Run Code Online (Sandbox Code Playgroud)
但是当我打开2个解决方案,并且这个代码在第一个解决方案中时,我得不到对当前解决方案的引用,而是对我加载的最后一个解决方案的引用.我需要当前的解决方案......
在互联网上搜索,我发现以下解决方案如何从VSPackage获取当前的解决方案目录?:
// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));
Run Code Online (Sandbox Code Playgroud)
但是当我使用它时,我的dte对象总是为NULL.
那么如何使用C#on .net framework 4.0获取VS2010中当前的解决方案对象?
我使用这个软件包在Archlinux上下载并安装了Android-NDK .
hello-jni按照本页面上的指南构建(并运行)示例没有问题,但如果我尝试做同样的事情,hello-gl2我会得到一些错误; 看起来它找不到一些头文件:
$ ../../ndk-build
/usr/bin/make -f /opt/android-ndk/build/core/build-local.mk
Compile++ thumb : gl2jni <= gl_code.cpp
/opt/android-ndk/samples/hello-gl2/jni/gl_code.cpp:22:23: error: GLES2/gl2.h: No such file or directory
/opt/android-ndk/samples/hello-gl2/jni/gl_code.cpp:23:26: error: GLES2/gl2ext.h: No such file or directory
--- SNIP ---
Run Code Online (Sandbox Code Playgroud)
GLES2/gl2.h并且GLES2/gl2ext.h是然而,存在的$(NDK)/platforms/android-4/arch-arm/usr/include/,而且看起来$(NDK)/build/core/setup-toolchain.mk应该设定包含路径.
有人遇到过同样的问题吗?我该如何编译这个样本?
那么,还有其他选项可以轻松构建Android-NDK应用程序吗?这个构建系统对我来说似乎很复杂,我更喜欢使用cmake来构建我的应用程序.
我们的工具在诊断模式下生成性能日志,但是我们跟踪代码执行时间(秒表+毫秒)的性能.
显然它根本不可靠,测试系统的CPU可以被一些随机过程使用,如果你的工具配置为运行10个线程而不是2个,结果将完全不同,等等.
我的问题是:
找出一段代码(而不是整个过程)的正确CPU时间的正确方法是什么?
我的意思是CPU时间:
基本上CPU花了多少周期.我假设对于同一台计算机中的同一段代码,它将始终相同,并且不受其他进程的影响.我可能会在这里遗漏一些基本的东西,如果是这样,请在评论或答案中启发我.
PS在我们的设置中无法使用分析器
另一个更新,
为什么我不打算使用分析器
因为我们需要在具有不同数据的不同环境中测试代码,而我们没有分析器或IDE或类似的东西.因此代码本身应该处理它.一个极端的选择可能是使用分析器的DLL,但我不认为这个任务需要这么复杂的解决方案(假设没有免费且易于实现的分析库).
Sessions在我测试过的所有其他浏览器中都能很好地运行.
如果我尝试获取会话ID sessionid = request.COOKIES['sessionid'],我会收到此错误:KeyError: 'sessionid'
这就是我在settings.py中的内容:
CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
SESSION_COOKIE_DOMAIN = '.vb.is'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
Run Code Online (Sandbox Code Playgroud)
网站是vb.is,fiskifrettir.vb.is和hestabladid.vb.is

服务器设置为:apache2(mod_wsgi)和nginx
android ×2
java ×2
.net ×1
add-in ×1
algorithm ×1
android-ndk ×1
animation ×1
asp.net ×1
asp.net-mvc ×1
build ×1
c# ×1
calendar ×1
canvas ×1
controls ×1
cookies ×1
cpu-usage ×1
django ×1
envdte ×1
hashtable ×1
hibernate ×1
html ×1
javascript ×1
opengl-es ×1
optimization ×1
oracle ×1
orm ×1
performance ×1
sample ×1
session ×1
timeout ×1
toolchain ×1