有没有人有任何关于在Visual Studio 2008中设置第一个MVC项目的基本说明?我刚刚安装了Visual Studio 2008,我发现了有关如何设置编程环境的各种说明,但它非常复杂,无法判断我所采用的路由是否是最佳路由.
如果我想开始开发MVC项目,我需要做些什么来实现它?
我对"Web客户端指南"说明感到非常困惑.例如,他们没有说明放置Microsoft.Web.Mvc.dll文件的位置.
我刚刚开始学习线程并且误解了它们的工作方式.
这是我的班级:
public class MyThread extends Thread {
private static int NUM = 0;
private int id;
public MyThread() {
id = NUM++;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new MyThread().start();
}
}
public void run() {
System.out.println(id + " started");
try {
Process p = Runtime.getRuntime().exec("javac -version");
p.waitFor();
} catch (Exception e) {
System.out.println("Call a doc!");
}
System.out.println(id + " finished");
}
}
/*
Just a sidenote.
I …Run Code Online (Sandbox Code Playgroud) 如何从java swing向log4j日志发送异常?
我们已经完成了许多代码并且它做了很多:
mytable.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
... no try catch
}
});
Run Code Online (Sandbox Code Playgroud)
没有尝试/捕获.应用程序向控制台发送npe异常.我们在log4j中需要它.但是不想改变所有这些代码(像这样的100行).我们能做什么?
我们正在使用JdbcTemplate来修改我们的底层Oracle数据库.我们是通过这种方法来做到这一点的update(String sql).
代码看起来有点如下:
String name = "My name's yellow";
String sql = "update FIELD set NAME = '" + name "' where ID = 10
jdbcTemplate.update(sql);
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
java.sql.SQLException: ORA-00933: SQL command not properly ended
Run Code Online (Sandbox Code Playgroud)
问题是转义'的name变量.
逃避这个角色最方便,最正确的方法是什么?
我想有一个布尔值来通知系统某些特定服务启动的部分.
由于一些奇怪的原因,我收到了错误java.lang.IllegalMonitorStateException: object not locked by thread before notifyAll().
奇怪的是,notifyAll()位于一个synchronized块内,该块控制我调用notifyAll()的对象.
我的班级开头是这样的:
public class MyService {
public static Boolean notifier = Boolean.valueOf(false);
@Override
public void start() {
synchronized (MyService.notifier) {
MyService.notifier = Boolean.valueOf(true);
MyService.notifier.notifyAll();
}
}
@Override
public void stop() {
synchronized (MyService.notifier) {
MyService.notifier = Boolean.valueOf(false);
MyService.notifier.notifyAll();
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
我正在研究一个Android应用程序.我认为它不应该影响任何事情,但是如果影响java的工作方式,我会用该注释补充问题.
如果对象锁定在同步块中,为什么会出现异常?
java multithreading synchronization synchronized java-threads
public static int howMany(String FileName)
{
BufferedReader br = null;
try
{
FileInputStream fis = new FileInputStream(FileName);
DataInputStream dis = new DataInputStream(fis);
br = new BufferedReader(new InputStreamReader(dis));
}
catch (FileNotFoundException e)
{
System.out.print("FILE DOESN'T EXIST");
}
finally
{
fis.close();
dis.close();
br.close();
}
String input;
int count = 0;
try
{
while ((input = br.readLine()) != null)
{
count++;
}
}
catch (IOException e)
{
System.out.print("I/O STREAM EXCEPTION");
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我无法关闭任何I/O对象.即使我导入了所有的I/O库(导入java.io.*;)并启动了所有对象,fis.close(),dis.close(),br.close()都给我找不到符号.
我想知道什么是使会话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) 我在项目中有分层的架构,例如Controller-> Service-> DAO。我想为服务层编写JUnit测试用例。现在,由于服务层将在内部调用DAO方法,所以为什么要在内部测试DAO层时编写不同的测试用例。
有人说,我需要使用Mockito模拟DAO方法。真的需要吗?不能在测试服务层方法时直接使用原始代码吗?
我们不能直接在线程的对象上调用Runnable的run()方法,但是根据下面的程序,我们没有任何编译或运行时错误.为什么会这样?
public class ThreadCheck implements Runnable {
@Override
public void run() {
for (int i=0; i<10; ) {
System.out.println(++i);
}
}
public static void main(String[] args) {
Thread mythread = new Thread(new ThreadCheck());
mythread.run();
mythread.run();
mythread.start();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
因此,我设置了一个执行外部程序(用 Fortran 77 编写)的简短脚本。我想运行该程序的多个实例,由于我的计算机上有 8 个内核,我发现的最简单的解决方案是:
import subprocess
import os
i = n
while(i<n):
dire = "dir/Run"+str(i)+"/"
os.chdir(dire)
p1 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+1)+"/"
os.chdir(dire)
p2 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+2)+"/"
os.chdir(dire)
p3 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+3)+"/"
os.chdir(dire)
p4 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+4)+"/"
os.chdir(dire)
p5 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+5)+"/"
os.chdir(dire)
p6 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+6)+"/"
os.chdir(dire)
p7 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+7)+"/"
os.chdir(dire)
p8 = subprocess.Popen(['./mej'])
dire = "/Run"+str(i+8)+"/"
os.chdir(dire)
p3 = subprocess.Popen(['./mej'])
exit_codes = [p.wait() …Run Code Online (Sandbox Code Playgroud) java ×7
asp.net-mvc ×1
concurrency ×1
escaping ×1
java-threads ×1
jdbctemplate ×1
junit ×1
junit4 ×1
oracle ×1
python ×1
session ×1
spring ×1
spring-mvc ×1
subprocess ×1
swing ×1
synchronized ×1
unit-testing ×1