我想知道什么是使会话bean线程安全的最佳实践.
我们假设我有这个会话bean及其服务:
@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
class Cart {
private HashSet<Item> items = new HashSet<Item>();
private int counter = 0;
public HashSet<Item> getItems() {
return items;
}
public int getCounter() {
return counter;
}
}
@Service
class CartService {
@Autowired
private Cart cart;
public void addItem(Item item) throws FullException {
if (cart.getCounter() > 1234) {
throw new FullException();
}
cart.getItems().add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不是线程安全的,并且当多个线程(同一会话,例如异步Ajax请求)执行时,将导致问题CartService.addItem(Item)
.
我想我不是第一个遇到这个问题的人,但是我的研究并没有带给我最佳实践.
我可以做的最糟糕的事情是同步addItem(),因为CartService由多个会话共享.在购物车中同步在CartService.addItem()
我看来同样糟糕,因为Cart是一个代理bean.我理解,因为所有会话仍然会在同一个对象上同步.
一种可接受的解决办法似乎是在同步块Cart.getItems()
中CartService.addItem()
:
@Service
class CartService …
Run Code Online (Sandbox Code Playgroud) 我使用Eclipse市场在Eclipse Kepler中安装了PMD.但是我在安装后无法访问它.
当我转到Window→Preferences并搜索PMD时,我没有得到任何结果.
是否有其他插件可用于源代码清理?
或者:在开普勒安装PMD需要做些什么?
谢谢
我试图在回合制游戏中实现一个事件监听器,这样玩家可以在轮到他或者被朋友邀请时接收.在IOS 7中不推荐使用GKTurnBasedEventHandler,我在文档中读到了我应该使用的GKLocalPlayerListener; 但这是它的延伸.是否有人使用过它,因为任何地方都没有信息.
这是我以前尝试过的,它不起作用.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[localPlayer authenticateWithCompletionHandler:^(NSError *error)
{
if (localPlayer.isAuthenticated)
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[localPlayer registerListener:self];
}
}];
return YES;
}
-(void)handleInviteFromGameCenter:(NSArray *)playersToInvite
{
NSLog(@"test");
}
- (void)player:(GKPlayer *)player receivedTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive
{
NSLog(@"test");
}
Run Code Online (Sandbox Code Playgroud)
我关注此链接:https://github.com/yahoo/yos-social-objc用于检索雅虎联系人.
在提供所有凭证(即密钥,消费者密钥,应用程序ID)之后,它将进入Safari浏览器进行登录.但登录后,它显示此消息:
完成雅虎的分享!使用xxxx信息,将代码xxxx输入xxxx
所以,我没有得到我应该输入此代码的地方?它将如何重定向到我的应用程序.
Plist中缺少什么我应该在Plist中添加什么?
任何帮助将不胜感激.
我想定义一个函数,检查一个字符串是否包含在中文中.例如,check_contain_chinese("中国"),它返回True.check_contain_chinese('xx中国'),它返回True,check_contain_chinese("xxx"),返回False.有人可以给我一些建议吗?我是大一新生..
我有一个实体,我正在尝试在其存储库中创建以下函数
function customGet(array $criteria)
{
//WHAT I'm trying to do:
//SELECT *
//FROM mytable
//LEFT JOIN anothoer table
//WHERE criteria1 = value1 AND criteria2 = value2 ...etc
$q = $this
->createQueryBuilder('u')
->select('u, g')
->leftJoin('u.theOtherTable', 'g');
//Where here
->getQuery();
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做where子句?
UICollectionViewData
validateLayoutInRect
iOS7上的断言失败.
我试图UICollectionView
使用for
循环逐个删除所有项目; 我在下面发布了我的代码.我删除了UICollectionView
使用的项目deleteItemsAtIndexPaths
.它在iOS6上完美运行,但在iOS7中崩溃,但有以下异常:
UICollectionViewData中的断言失败validateLayoutInRect
我collectionArray
从那时开始self.collectionView
逐个删除对象indexPath
.当我删除第4个对象时,它会Assertion failure
在iOS7上引发.我在这里使用performBatchUpdates
.
请帮我在iOS7中获得正确的结果.分享正确的代码.提前致谢.
try {
for (int i=count-1; i>=0; i--) {
[self.collectionView performBatchUpdates:^(void){
[collectionArray removeObjectAtIndex:i]; // First delete the item from you model
[self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:i inSection:0]]];
} completion:nil];
[self.collectionView reloadData];
}
}
@catch (NSException *exception) {
}
@finally {
}
Run Code Online (Sandbox Code Playgroud) 存储过程
CREATE OR REPLACE
PROCEDURE ADDITION
(
A IN NUMBER ,
B IN NUMBER ,
C OUT NUMBER )
AS
BEGIN
C := A+B;
dbms_output.put_line(c);
END ADDITION;
Run Code Online (Sandbox Code Playgroud)
JDBC程序
cstmt = conn.prepareCall("BEGIN addition(?, ?,?); END;");
cstmt.setInt(1, 10);
cstmt.setInt(2, 85);
cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
ResultSet rs = cstmt.executeQuery();
while(rs.next()){
int c =rs.getInt("c");
System.out.println(c);
}
Run Code Online (Sandbox Code Playgroud)
执行上述程序时出现错误。
厄尔:
java.sql.SQLException: Cannot perform fetch on a PLSQL statement: next
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:192)
at stored_procedure.main(stored_procedure.java:32)
Run Code Online (Sandbox Code Playgroud) 我有两个文件:
FILE1.TXT
苹果
橙子
香蕉
FILE2.TXT
红色
白色
蓝色
我想最终得到的是:
file3.txt
苹果
红色
橙子
白色
香蕉
蓝色
任何帮助将不胜感激!
我在ASP.net MVC Web应用程序中使用JQgrid.
我能够通过使用添加名为edit的新按钮列 formatters
但是,问题是我无法获得单击按钮的行中的列值.
例如,如果我在第4行单击按钮编辑(新添加),我将需要获取该特定行的第一列的值.
我需要这个,因为我想重定向到具有该值的另一个页面并在那里进行编辑.
我无法获取该值并向其添加javascript.
请使用任何代码示例帮助解决此问题.
ios ×3
java ×2
asp.net-mvc ×1
awk ×1
bash ×1
button ×1
c# ×1
doctrine-orm ×1
eclipse ×1
game-center ×1
ios6 ×1
ios7 ×1
iphone ×1
javascript ×1
jdbc ×1
jqgrid ×1
linux ×1
oauth ×1
objective-c ×1
php ×1
pmd ×1
python ×1
sed ×1
session ×1
spring-mvc ×1
symfony ×1
xcode5 ×1
yahoo-api ×1