在Java中,当实际上没有错误时使用throw/catch作为逻辑的一部分通常是一个坏主意(部分)因为抛出和捕获异常是昂贵的,并且在循环中多次执行它通常比其他更慢控制结构,不涉及抛出异常.
我的问题是,抛出/捕获本身或创建Exception对象时产生的成本(因为它获得了很多运行时信息,包括执行堆栈)?
换句话说,如果我这样做
Exception e = new Exception();
Run Code Online (Sandbox Code Playgroud)
但是不要扔它,是投掷的大部分成本,还是投掷+捕获处理成本高昂?
我不是在将代码放入try/catch块中是否会增加执行代码的成本,我问的是,捕获Exception是否是昂贵的部分,或者创建(调用构造函数)Exception是否是昂贵的部分.
另一种问这个问题的方法是,如果我创建了一个Exception实例并且一遍又一遍地抛出它,那么每次抛出时创建一个新的Exception会明快得多吗?
我正在设置Spring Security来处理日志记录用户.我已经以用户身份登录,并在成功登录后被带到Access Denied错误页面.我不知道我的用户实际分配了什么角色,或者导致访问被拒绝的规则,因为我无法弄清楚如何为Spring Security库启用调试.
我的安全xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans ... >
<!-- security -->
<security:debug/><!-- doesn't seem to be working -->
<security:http auto-config="true">
<security:intercept-url pattern="/Admin**" access="hasRole('PROGRAMMER') or hasRole('ADMIN')"/>
<security:form-login login-page="/Load.do"
default-target-url="/Admin.do?m=loadAdminMain"
authentication-failure-url="/Load.do?error=true"
username-parameter="j_username"
password-parameter="j_password"
login-processing-url="/j_spring_security_check"/>
<security:csrf/><!-- enable Cross Site Request Forgery protection -->
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="loginDataSource"
users-by-username-query="SELECT username, password, active FROM userinformation WHERE username = ?"
authorities-by-username-query="
SELECT ui.username, r.rolename
FROM role r, userrole ur, userinformation ui
WHERE ui.username=?
AND ui.userinformationid = ur.userinformationid
AND ur.roleid = r.roleid " …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FactoryGirl/ 来模拟会话shoulda(它使用了固定装置,但我在使用工厂时遇到了问题).我有以下工厂(用户登录和电子邮件都有unique验证):
Factory.define :user do |u|
u.login 'quentin'
u.email 'quentin@example.com'
end
Factory.define :session_user, :class => Session do |ses|
ses.association :user, :factory => :user
ses.session_id 'session_user'
end
Run Code Online (Sandbox Code Playgroud)
这是测试
class MessagesControllerTest < ActionController::TestCase
context "normal user" do
setup do
@request.session[:user_id]=Factory(:user).id
@request.session[:session_id]=Factory(:session_user).session_id
end
should "be able to access new message creation" do
get :new
assert_response :success
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时rake test:functionals,我得到了这个测试结果
1) Error:
test: normal user should be able to access new message creation. (MessagesControllerTest): …Run Code Online (Sandbox Code Playgroud) 每当我在JSP文件中工作并键入${以启动el(表达式语言)标记时,Eclipse将}在光标之后自动添加(在结束括号之前有一个空格),以便我得到${ }而不是${}.
我可以修改首选项中的代码模板以更改此行为,还是超出用户首选项控制?
我已经检查了Preferences:Web:JSP Files:Editor:Templates,但这些模板都不匹配.我还查看了偏好中的其他几个部分,但没有找到任何有希望的东西.
每当Eclipse中长时间运行的进程(例如清理+重建大型项目)时,我会看到新的进程,例如"正在更新存储库foo的git status",等待我的长时间运行进程完成.
例:

我想关闭这些更新,因为我使用不同的应用程序来管理我的git存储库.我还想知道如果这些更新确实是定期运行的,那么如何更改这些更新的频率.
我尝试在首选项中搜索"git",但没有找到任何明显的罪魁祸首.我取消选中看起来可能相关的三个选项,但更新仍然存在.我取消选中的选项是:
有没有办法编辑input或textarea使用javascript 的内容,并使用浏览器的"撤消"命令(例如ctrl-Z)可以撤消该更改?
我试图在选择的值中插入一个字符串,如"Foo {0} bar",如果用户选择了一个范围,则将所选范围插入到字符串中代替"{0} ".
例如,如果textarea包含"Example 1 2 3"并且光标位于"Example 1 | 2 3",那么该函数会将值更改为"Example 1Foo blah bar 2 3"(valueIfNothingSelected在这种情况下为"blah") .如果选择范围"1 2",则函数将改为将值更改为"示例Foo 1 2 bar 3".
在Chrome中,我测试了这个功能,并且它完成了它应该做的事情,但我无法扭转这一变化undo.
function insertTextAtCursor(text, valueIfNothingSelected) {
var field = $('textarea[name="task_log_description"]')[0];
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
var processedText;
if (startPos == endPos) {
processedText = text.replace('{0}', valueIfNothingSelected);
field.value = field.value.substring(0, startPos) + processedText + field.value.substring(endPos, field.value.length);
field.selectionStart = startPos + text.indexOf('{0}');
field.selectionEnd = field.selectionStart …Run Code Online (Sandbox Code Playgroud) 在postgresql中,我为一个大表添加了一个索引,花了大约1秒钟(坦率地说,让我感到惊讶).
当我去掉索引时,我让它运行> 200秒而不返回,最后取消了放下操作.
CREATE INDEX idx_cservicelocationdivisionstatus_inversed
ON cservicelocationdivisionstatus (cservicelocationdivisionid, startdate, enddate DESC);
Run Code Online (Sandbox Code Playgroud)
花很少的时间,但是
DROP INDEX idx_cservicelocationdivisionstatus_inversed;
Run Code Online (Sandbox Code Playgroud)
花了这么长时间才放弃并取消了.
该表cservicelocationdivisionstatus有6列和大约310k行数据.
为什么删除索引所需的时间比创建索引要长得多?
编辑:此页面指示对于mySql,具有多个索引的表将复制表并重新插入所有行而不删除您正在删除的索引.(更糟糕的是,使用mySql,如果你在同一个表上删除多个索引,它将为你要删除的每个索引重新复制一次表,而不是聪明并重新复制数据一次而不是所有的索引你是这样的事情会发生在postgres吗?
我有一个有各种船型的游戏.我的Ship类有一个静态数组,其中包含每种类型中的一种.每当我创建一个新的Ship(除了初始化这个数组时),我想让它成为Ship我的原型数组中一个现有对象的克隆.
1 - 如何在一个Ship对象中运行所有属性并将它们分配给第二个Ship对象?
2 -我怎样才能看到,如果一个属性是一个对象或基本类型像String或int?我的Ship类中的一些对象需要克隆,有些只是需要保持不变的引用.
有没有办法让你在很久以前使用javascript加载页面,而没有首先在页面加载时记录javascript变量的时间?我希望创建一个可以在任何网页上运行的scriptlet(javascript书签),并让它输出自浏览器加载页面以来已经过了多少时间.
到目前为止,我发现的所有"在页面上花费的时间"解决方案都依赖于记录页面首次加载的时间,这需要访问修改站点或浏览器插件.是否存在可以在javascript中访问的页面加载(启动,完成等)时存储的文档属性?
我试图favicon.ico在网页上显示不是快捷图标,而是在页面正文中显示图像.在我们在IE中的测试服务器上,图像无法显示,我们发现这是因为在服务器上为.ico文件类型配置的MIME 类型而image/vnd.microsoft.icon不是image/x-icon.
现在,我们能够重新配置我们的服务器并解决问题,但我想知道是否可以指定在<img>标签中使用哪种MIME类型并覆盖特定文件的服务器范围设置?
eclipse ×2
javascript ×2
concurrency ×1
debugging ×1
el ×1
exception ×1
factory-bot ×1
forms ×1
git ×1
html ×1
image ×1
indexing ×1
java ×1
jsp ×1
mime-types ×1
oop ×1
performance ×1
postgresql ×1
shoulda ×1
time ×1
undo-redo ×1