我目前正在开发一个使用JPA(Toplink,目前)持久化的项目.目前,我们正在运行单个应用程序服务器,但是,为了实现冗余,我们希望添加一个负载均衡器和另一个应用程序服务器(并且可能随着它的增长而增加).
首先,我遇到了JPA缓存问题.由于两个进程将更新同一个数据库,因此JPA缓存将返回缓存的值而不是转到数据库.我看到如何关闭它,数据库本身实现了一个级别的缓存.完全关闭缓存的方式去这里?我看到告诉JPA始终从查询级别的数据库获取的方法,但在多服务器环境中,似乎您总是希望这种情况发生.
除了这个具体的问题,我对那些已经实现了具有多个应用程序服务器的JPA解决方案的人以及在实现过程中出现的问题(以及您提出的任何建议)感兴趣.
非常感谢.
在我的代码中的第(3)点,我定义了一个名为query1的查询,其中我定义了一个.Where lambda表达式.此查询在某种程度上是动态的,但仍包含静态元素,它始终引用Type Employee及其(int)属性ClientID.
现在我非常希望根据方法参数来引用类型及其属性动态,例如,如下面的点(1)所示.
到目前为止我尝试的是通过将(例如)(4),(5)和(6)中记载的更复杂的表达式树替换为使得在点(3)下定义的查询的静态部分完全动态化.但是,当我尝试将所有内容添加到一起时,它说我打电话.参数错误.我不知道如何调用.使用正确的参数来创建一个完全动态的选择.
有人知道解决这个问题吗?我花了一天时间搜索,到目前为止还没有找到解决方案.
dsMain domainService = new dsMain();
//(1)i want to rewrite the following four variables to method-parameters
Type entityType = typeof(Employee);
String targetProperty = "ClientID";
Type entityProperty = typeof(Employee).GetProperty(targetProperty).PropertyType;
int idToDelete = 5;
//(2)create expression-function: idToDelete == entityType.targetProperty (in this case: Employee.ClientID)
ParameterExpression numParam = Expression.Parameter(entityProperty, targetProperty.Substring(0, 3));
ConstantExpression equalTarget = Expression.Constant(idToDelete, idToDelete.GetType());
BinaryExpression intEqualsID = Expression.Equal(numParam, equalTarget);
Expression<Func<int, bool>> lambda1 =
Expression.Lambda<Func<int, bool>>(
intEqualsID,
new ParameterExpression[] { numParam });
//(3)I want to create query1 fully …Run Code Online (Sandbox Code Playgroud) 我更喜欢在任何地方使用引用,但是当你使用STL容器时,你必须使用指针,除非你真的想按值传递复杂的类型.我觉得很难转换回参考,这似乎是错误的.
是吗?
澄清...
MyType *pObj = ...
MyType &obj = *pObj;
Run Code Online (Sandbox Code Playgroud)
这不是'脏',因为你可以(即使只是在理论上,因为你先检查它)取消引用一个NULL指针?
编辑:哦,你不知道对象是否是动态创建的.
我已经像这样设置了一个HashMap:
Map<String, ArrayList<String>> theAccused = new HashMap<String, ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)
...我通过存储每个名称(键),一个名称列表(值)来填充它.所以:
ArrayList<String> saAccused = new ArrayList<String>();
// populate 'saAccused' ArrayList
...
// done populating
theAccused.put(sAccuser, saAccused);
Run Code Online (Sandbox Code Playgroud)
所以现在,我想查看HashMap中的所有条目,看看(对于每个'sAcucuser')列表'saAccused'是否包含某个名称.到目前为止,这是我失败的尝试:
Set<String> setAccusers = theAccused.keySet();
Iterator<String> iterAccusers = setAccusers.iterator();
iterAccusers.next();
ArrayList<String> saTheAccused;
// check if 'sAccuser' has been accused by anyone before
for (int i = 0; i < theAccused.size(); i++) {
saTheAccused = theAccused.get(iterAccusers);
if (saTheAccused.contains(sAccuser)) {
}
iterAccusers.next();
}
Run Code Online (Sandbox Code Playgroud)
...但是我不确定Set和Iterator类是如何工作的:/问题是我没有"值"...名称... 'sAccuser's ...用于HashMap可用.
简而言之,我想迭代HashMap并检查特定名称是否存储在任何列表中.那我该怎么做呢?如果您需要我进一步了解或清除任何混淆,请告诉我.
谢谢.
我在glassfish v3.0.1 b22中使用jdbcRealm来保证安全性.它被设置为使用我的数据库中的USER表进行身份验证,方法是访问以下博客:http://blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication.如果我将摘要算法保留为纯文本,我的工作正常.但是,当我尝试使用SHA-256进行摘要算法时,它会停止工作.我所做的是在Glassfish中指定 - 安全 - 领域 - jdbcRealm - 我想要SHA-256的摘要(我只是在摘要字段中键入SHA-256).然后我写了一个简单的Java程序,将密码文本转换为SHA-256哈希.然后我将该哈希粘贴到数据库中的密码字段中.顺便说一句,密码字段是类型varchar(30).我不能再登录了.有一点我注意到我的简单Java程序每次为同一文本字段生成不同的哈希值.
下面是我简单的java程序:
MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "admin";
md.update(text.getBytes("UTF-8"));
byte[] digest = md.digest();
System.out.println(digest.toString());
Run Code Online (Sandbox Code Playgroud) 我想弄清楚在django上使用哪个图像管理库.photologue,image-kit和pil(python成像库)有什么区别?
django photologue imagekit python-imaging-library django-imagekit
我正在编写一个PyQt(全功能Qt库的Python绑定)应用程序,我的应用程序的一小部分需要一个Web浏览器(提示,OAuth).所以我开始使用QtWebkit,这很棒.唯一的障碍是我想允许代理后面的用户使用我的应用程序.
我已经阅读了QtNetwork包中的QNetworkProxy类,并认为它应该可以解决问题.唯一的问题是当我创建和应用代理时,它在HTTP上运行得很好,但是当我向它传递HTTPS(SSL)URL时,它会给我以下错误:
QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string
Run Code Online (Sandbox Code Playgroud)
注意:当我跑...
QtNetwork.QSslSocket.supportsSsl()
Run Code Online (Sandbox Code Playgroud)
..它返回false.这就证明了我的问题.
这是我的主要代码(它在我的QApplication创建之前):
proxy = QtNetwork.QNetworkProxy()
proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
proxy.setHostName('localhost');
proxy.setPort(1337)
QtNetwork.QNetworkProxy.setApplicationProxy(proxy);
Run Code Online (Sandbox Code Playgroud)
我从这里得到了代码,但是这个例子是用C++编写的,而不是Python,所以我不确定我是否正确翻译了它.这可能是问题所在.
编辑:我已经尝试过SOCKS5和HTTP代理,他们都抛出相同的错误.
我已经阅读了几篇关于如何使用附加属性绑定到WPF中的PasswordBox值的文章.但是,每篇文章都引用了.NET文档,该文档解释了为什么PasswordBox首先不能绑定.
我不认为自己是安全专家,但我认为微软的某个人知道他们在做什么,我不应该努力解决它.
所以,相反,我提出了自己的解决方案.
public class LoginViewModel
{
// other properties here
public PasswordBox Password
{
get { return m_passwordBox; }
}
// Executed when the Login button is clicked.
private void LoginExecute()
{
var password = Password.SecurePassword;
// do more stuff...
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的XAML中,我只是通过将Password字段绑定到一个来呈现PasswordBox ContentPresenter.
所以我的问题是......这样做有问题吗?我意识到我通过让实际控件出现在我的ViewModel中来某种方式打破MVVM,但至少这似乎比取消保护密码字段更正确.
如果这实际上是一个问题,是否有人提出了一个不涉及使用附加属性并将密码存储在ViewModel中的解决方案?
谢谢!-J
我正在开发一个TreeView基于控件,我的双击事件继续冒泡我的TreeViewItem节点.
目标是TreeViewItem双击时展开或折叠.
我有一个样式,将事件的事件处理程序应用于MouseDoubleClick每个TreeViewItem.
这是处理事件的代码
private void TreeViewItemDoubleClicked( object sender, RoutedEventArgs e )
{
// Get the specific tree view item that was double clicked
TreeViewItem treeViewItem = sender as TreeViewItem;
// not null?
if( null != treeViewItem )
{
// Switch expanded state
if( true == treeViewItem.IsExpanded )
{
treeViewItem.IsExpanded = false;
}
else
{
treeViewItem.IsExpanded = true;
}
// Set event handled
e.Handled = true; // [1]
}
} …Run Code Online (Sandbox Code Playgroud) java ×3
c# ×2
wpf ×2
arraylist ×1
c++ ×1
contains ×1
database ×1
digest ×1
django ×1
glassfish ×1
hashmap ×1
https ×1
imagekit ×1
iqueryable ×1
jdbcrealm ×1
jpa ×1
lambda ×1
lookup ×1
mvvm ×1
photologue ×1
pointers ×1
pyqt ×1
python ×1
qtwebkit ×1
reference ×1
routedevent ×1
security ×1
sha256 ×1
ssl ×1
stl ×1
toplink ×1
treeview ×1
treeviewitem ×1
vb6 ×1
where ×1