我正在开发一个中型Java应用程序,由于我缺乏经验,我面临一个小问题.
我有一个自定义DAO,它从数据库中获取"Article"对象.我是这个Article类,DAO有一个调用的方法getArticle(int id),这个方法返回一个Article.该Article有一个Category对象,我使用延迟加载.
因此,当我请求文章的category(Article a = new Article(); a.getCategory();)时,Article类Category从DAO 获取然后返回它.
我现在正在考虑缓存它,所以当我多次请求文章的类别时,只会查询一次数据库.
我的问题是:我应该把缓存放在哪里?我可以把它放在Article课堂上(在DTO中),或者我可以把它放在DAO课上.
你说什么?
我正在考虑使用Thread.setDefaultUncaughtExceptionHandler(...)call 为我的(Android)移动应用程序(使用Java语法)设置一个全局的默认Exception处理程序.我想只是向用户显示带有适当消息的警报对话框.
设置时是否需要遵循任何问题,警告和规则 DefaultExceptionHandlers?任何最佳实践,如确保进程被杀死,完整的堆栈跟踪写入日志等?
可以为文档,教程等提供相关信息的链接值得欢迎.
谢谢.
当我将文件值设置为logs\log-file.txt,它将在何处创建此文件夹?在/bin目录中?
我的web.config看起来像这样:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="logs\log-file.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
这是正确的记录方式:
ILog logger = LogManager.GetLogger(typeof(CCController));
logger.Error("Some Page", ex); // where ex is the exception instance
Run Code Online (Sandbox Code Playgroud) 我有customer和address桌子.
查询:
SELECT *
FROM addresses a,
customers b
WHERE a.id = b.id
Run Code Online (Sandbox Code Playgroud)
返回474条记录
对于这些记录,我想添加id的customer表成cid的address表.
示例:如果对于第一条记录,customer的id为9且id地址也为9,那么我想将9插入到地址表的cid列中.
我试过了:
UPDATE addresses a,
customers b
SET a.cid = b.id
WHERE a.id = b.id
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
有谁知道Facebook的隐私权限系统如何工作的总体布局(数据库)?我一直在试图弄清楚他们如何设法将如此复杂的一组规则应用于其网站上的各种内容,但速度仍然很快。他们是怎么做到的?
我们有一个Intranet网站,并在每个工作站上安装了WPF Windows可执行文件.
我们在每个工作站上都有完整的管理功能,每个用户只使用Internet Explorer.我们也知道exe的正确本地路径.
更新:我们尝试了这个锚标记,但是当我们点击它时,我们没有得到回复:
<a href="c:\Flipper\Splash.Flipper.exe">Click Here</a>
Run Code Online (Sandbox Code Playgroud)
我们也通过谷歌浏览器尝试了这一点,我们也得到了同样的(缺乏)响应.单击该链接不会发生任何事情.
假设我有一个如下的switch语句
switch(alphabet) {
case "f":
//do something
break;
case "c":
//do something
break;
case "a":
//do something
break;
case "e":
//do something
break;
}
Run Code Online (Sandbox Code Playgroud)
现在假设我知道Alphabete 的频率最高,然后分别是a,c和f.所以,我只是重新构建了case语句顺序,并按如下方式进行了修改:
switch(alphabet) {
case "e":
//do something
break;
case "a":
//do something
break;
case "c":
//do something
break;
case "f":
//do something
break;
}
Run Code Online (Sandbox Code Playgroud)
第二个switch陈述会比第一个switch陈述更快吗?如果是的话,如果在我的计划中,我需要switch多次称这个声明,这会是一个实质性的改进吗?或者,如果没有,我如何使用我的频率知识来提高性能?
假设我的Tomcat webapps目录如下所示:
webapps/
webapps/fooapp/
webapps/fooapp/WEB-INF/
webapps/fooapp/WEB-INF/web.xml
webapps/fooapp/bardir/
Run Code Online (Sandbox Code Playgroud)
当我发出GET请求时/fooapp/bardir,Tomcat发现webapps/fooapp/bardir是一个目录,并发送回302 /fooapp/bardir/(在结尾处有一个斜杠).
这是我的问题:Tomcat源代码在哪里发生这种情况? (我正在看6.0.x但任何版本的正确答案都是一个很好的起点.)
我可以在这个主题上找到的唯一参考资料是Catalina功能规范,其中说明了默认Servlet:
在此servlet处理的每个HTTP GET请求上,应执行以下处理:
[...]
- 如果请求的资源是目录:
- 如果请求路径不以"/"结尾,则重定向到附加了"/"的相应路径,以便正确解析欢迎文件中的相对引用.
但是,此功能似乎不在org.apache.catalina.servlets.DefaultServlet中; 或者至少,它并不是唯一的:如果我用一个servlet 类不存在的servlet替换web.xml中的默认servlet ,目录路径仍然会返回302以添加斜杠,而每个其他请求都会返回错误正如所料.
一位同事正在为我们所有的数据库表添加一个掩码.从理论上讲,我们可以跟踪整个系统中每行的某些属性.例如...
这是一个好主意吗?这种方法有益于其他用途吗?
我的偏好是这些属性显然很重要,并且为每个属性设置专用列是合理的,以使其他开发人员更清楚地了解其中的内容.
我真的很好奇JVM如何与线程一起工作!在我的互联网搜索中,我找到了一些关于RTSJ的资料,但我不知道这是否是我答案的正确方向.我还在sun的论坛http://forums.sun.com/thread.jspa?forumID=513&threadID=472453中找到了这个主题 ,但这并不令人满意.
有人可以给我一些关于JVM调度算法的指示,材料,文章或建议吗?
我也在寻找有关调度程序中Java线程的默认配置的信息,例如"时间切片时每个线程需要多长时间".而这个东西.
我将不胜感激任何帮助 !
谢谢 !
java ×4
c# ×2
database ×2
sql ×2
android ×1
asp.net-mvc ×1
caching ×1
concurrency ×1
executable ×1
facebook ×1
html ×1
hyperlink ×1
jvm ×1
log4net ×1
logging ×1
performance ×1
permissions ×1
postgresql ×1
servlets ×1
sql-server ×1
tomcat ×1
tomcat6 ×1