现在我编写一种从密钥中获取JSONObject数据的常用方法.如何将其更改为泛型方法?现在每次调用方法时都必须更改类型.
String a= (String) ObdDeviceTool.getResultData(result, "a", String.class);
Double b= (Double) ObdDeviceTool.getResultData(result, "b", Double.class);
public static Object getJSONObjectData(JSONObject result,String key,Object type){
if (result.containsKey(key)) {
if(type.equals(String.class))
return result.getString(key);
if(type.equals(Double.class))
return result.getDouble(key);
if(type.equals(Long.class))
return result.getLong(key);
if(type.equals(Integer.class))
return result.getInt(key);
}
return null;
}
Run Code Online (Sandbox Code Playgroud) 在我的控制器中,我的控制器方法名称等于requestmapping url.例如,/list等于方法名称list.是否有一个通用的处理程序方法来缩短我的代码?我不想以这种方式编写每个控制器和方法.我记得.net mvc有一个简单的方法来配置它.关于Spring MVC怎么样?
@Controller
@RequestMapping(value = "/fooController ")
public class FooController {
@RequestMapping("/list") public String list(...) { ... }
@RequestMapping("/save") public String save(...) { ... }
@RequestMapping("/delete") public String delete(...) { ... }
}
@Controller
@RequestMapping(value = "/basketballController ")
public class BasketballController {
@RequestMapping("/list") public String list(...) { ... }
@RequestMapping("/save") public String save(...) { ... }
@RequestMapping("/delete") public String delete(...) { ... }
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为student的表,我想获得最大和最小分数,所以我以第一种方式编写sql:
select max(score),min(score) from student;
Run Code Online (Sandbox Code Playgroud)
第二种方式:
select max(score) from student;
select min(score) from student;
Run Code Online (Sandbox Code Playgroud)
我从互联网上搜索,他们说第二种方式更好,因为oracle不能同时扫描索引.但第二种方式无法确保相同的数据,因为它会进行两次搜索.如何解决?
首先我创建了一个空文件,然后我调用了一些线程来搜索数据库并获取结果内容,然后附加到文件中。结果内容为Stringtype,可能为20M。每个线程应该一次写入一个文件。我测试了很多次,我发现没有必要锁定。那正确吗?例子总共1000行,什么时候需要加写锁对文件进行操作?
String currentName = "test.txt";
final String LINE_SEPARATOR = System.getProperty("line.separator");
ThreadPoolExecutor pool = new ThreadPoolExecutor(
10, 100, 10, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>());
for (int i = 0; i < 500; i++) {
pool.execute(() -> {
try {
appendFileByFilesWrite(currentName, "abc" +
ThreadLocalRandom.current().nextInt(1000) + LINE_SEPARATOR);
} catch (IOException e) {
e.printStackTrace();
}
});
}
IntStream.range(0, 500).<Runnable>mapToObj(a -> () -> {
try {
appendFileByFilesWrite( currentName,
"def" + ThreadLocalRandom.current().nextInt(1000) +
LINE_SEPARATOR);
} catch (IOException e) {
e.printStackTrace();
}
}).forEach(pool::execute);
pool.shutdown();
Run Code Online (Sandbox Code Playgroud)
这是方法:
public static …Run Code Online (Sandbox Code Playgroud) java multithreading java.util.concurrent java-8 threadpoolexecutor
在下面的代码中,为什么x和y分别输出0和1?为什么当我把这段代码\xef\xbc\x9aprivate static Singleton instance = new Singleton();从位置\xe2\x91\xa0放到位置\xe2\x91\xa1时,输出是1, 1?
private static Singleton instance = new Singleton();\n//\xe2\x91\xa0\nprivate static int x = 0;\n\nprivate static int y;\n//\xe2\x91\xa1\nprivate Singleton()\n{\n System.out.println("Starting add");\n x++;\n y++;\n}\n\npublic static Singleton getInstance()\n{\n return instance;\n}\n\npublic static void main(String[] args)\n{\n System.out.println("Starting Singleton");\n Singleton singleton = Singleton.getInstance();\n //Singleton singleton = new Singleton();\n System.out.println(singleton.x);\n System.out.println(singleton.y);\n}\nRun Code Online (Sandbox Code Playgroud)\n java ×4
java-8 ×2
generics ×1
oracle ×1
oracle10g ×1
oracle11g ×1
singleton ×1
spring ×1
spring-boot ×1
spring-mvc ×1