我正在为一些关键业务运营编写审计服务.该服务正在使用IoC模式实现:
public interface IAuditWriter
{
void WriteAction(int key, string value);
}
Run Code Online (Sandbox Code Playgroud)
因此,我需要它来提出不是特定于实现的异常.
审计过程中的部分信息包括一个唯一的密钥.作为服务的当前要求,它作为审计过程的一部分提供关键唯一性检查.重复密钥违反了流程要求.
目前,该服务将实现为对SQL-Server的写入.虽然不太可能,但密钥可能是重复的,在这种情况下,SqlException
会抛出抱怨主键约束违规.我宁愿将此异常包装在更通用的"重复键"异常中,该异常可被捕获,然后允许进程生成新密钥.
通常,我讨厌创建一个新的异常类; 几乎总有一种合适的类型可用于传达相同的信息.我已经抓住了System.Data.Linq.DuplicateKeyException
过去,它看起来像是一个很好的候选者,除了它来自LINQ相关的命名空间,我的界面与LINQ无关.
我的直接选择似乎是:
System.Data.Linq.DuplicateKeyException
无论如何都要扔,希望没有人过多地读入命名空间.System.InvalidOperationException
并交叉我的手指我从来不需要一个可以因其他原因抛出此异常的实现.DuplicateKeyException
.你对此有何看法?
我有一个在JBoss中运行的Java应用程序,我在其中启用了JMX远程监控.这允许我连接jconsole和visualvm等工具来监视内存使用情况,cpu利用率,mbeans等.运行我的应用程序的服务器具有限制性端口访问权限,这就是我使用JSR-262 JMX WS Connector的原因.
JSR-262实现有一个如何为jconsole启用jmx:ws协议的示例.但我想尝试使用visualvm.
我认为我必须做的是,在启动visualvm时:
有人能指出我正确的方向吗?有没有一种机制可以为visualvm提供额外的参数?它会起作用吗?还有更简单的方法吗?
我刚开始使用WPF.从窗体移动.
那些openDialog,saveDialog去了哪里?还有一堆东西.
我有一个applet,它在浏览器中运行,并从Javascript调用.有两个类:PortalLauncher和ParamSplitter,它们都在默认包中.JavaScript调用的方法PortalLauncher这反过来又调用一个函数ParamSplitter.小程序在一个签名的jar中.
这大部分时间都有效.但是,一些用户不时会遇到问题.在当天的某个时间(即不在第一次访问时),抛出以下异常:
java.lang.SecurityException: class "ParamSplitter"'s signer information does not
match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(Unknown Source)
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at PortalLauncher.openFile(PortalLauncher.java:313)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) …
Run Code Online (Sandbox Code Playgroud) 我目前有一个返回许多字段的SQL查询.我需要一个字段实际上是一个子查询子.
问题详细:
如果我有一个包含两列的表X,ModuleID并说ModuleValue,我如何编写SQL查询来获取结果并将其连接到一个字段:
EG结果返回
(SELECT ModuleValue FROM Table_X WHERE ModuleID=@ModuleID)
Run Code Online (Sandbox Code Playgroud)
价值1
价值2
价值3
...
我需要返回结果(作为单行,与上面不同):
值1,值2,值3
是否有一个简单的连接方法可以是用户?
编辑:
DB是MS TSQL(2005)
sql sql-server sql-server-2005 concatenation sql-server-group-concat
我正在使用VC++通过win32 API创建一个窗口程序.我想创建一个椭圆形窗口,如何实现这一目标.
我从数据库中读取了一个包含超过100万条记录的表.我需要3分钟才能在内存中填充对象.我想优化此过程,并使用二进制BinaryFormatter将此对象序列化为文件.它创建了一个1/2 GB大小的文件.我将此文件反序列化回内存对象后.这花了11分钟!
问题:为什么从数据库读取所有这些数据要比从文件读取所有这些数据要快得多?是否有可能以某种方式优化反序列化过程?
数据库在我测试的同一台机器上.其他进程此时都没有占用CPU时间.CPU有4个内核,有40 GB内存.
编辑:反序列化的代码:
using (FileStream fs = new FileStream(filename, FileMode.Open))
{
var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
var data = (MyType)bf.Deserialize(fs);
...
}
Run Code Online (Sandbox Code Playgroud) 如何在保存时将用户重定向到其他应用?
我有两个应用程序,说app1
和app2
.如果用户单击"保存",app2
则应将其重定向到app1
默认页面.
我不想做自定义表单.
我编写了自己的中间件来为我们的应用程序提供API端点.中间件加载提供API方法的类,并将请求路由到适当的类/方法.这些类是通过动态加载的String#constantize
.
在开发模式下运行时,会自动重新加载类.但是,如果存在未捕获的异常 - 随后由故障安全中间件处理 - 自动重新加载将停止工作.constantize
仍在被召唤,但它似乎回归旧班.
看起来还有其他东西可以卸载类,而一个未捕获的异常会破坏它.这可能是什么?
运行Ruby 1.8.7,Rails 2.3.3和Thin 1.2.2.
我有两个表:orders和orders_items.两者共享字段orderID.
我想删除orderID = 500的两个表中的所有行,但我只需要在一个查询中执行此操作.这可能吗?
.net ×2
java ×2
applet ×1
c# ×1
cascade ×1
django ×1
django-admin ×1
jmx ×1
middleware ×1
mysql ×1
optimization ×1
performance ×1
sql ×1
sql-server ×1
visual-c++ ×1
visualvm ×1
web-services ×1
winapi ×1