众所周知,更新Swing GUI必须仅在EDT中完成.较少的广告是从GUI 中读取内容必须/也应该在EDT中完成.例如,让我们使用ButtonModel的isSelected()方法,它告诉(例如)ToggleButton的状态("向下"或"向上").
在我看过的每个例子中,isSelected()都是从主要或任何一个线程中自由地查询.但是当我查看DefaultButtonModel的实现时,它没有同步,并且值不是volatile.因此,严格地说,isSelected()如果从任何其他线程读取它而不是从其设置的线程(当用户按下按钮时是EDT),则可以返回垃圾.还是我弄错了?
当Bloch的Effective Java中的第66项震惊时,我最初想到这个,这个例子:
public class StopThread {
private static boolean stopRequested;
public static void main(String[] args) throws InterruptedException {
Thread backgroundThread = new Thread(new Runnable() {
public void run() {
int i = 0;
while(!stopRequested) i++;
}
});
backgroundThread.start();
TimeUnit.SECONDS.sleep(1);
stopRequested = true;
}
}
Run Code Online (Sandbox Code Playgroud)
与看起来相反,该程序永远不会终止,至少在某些机器上.stopRequested从主线程更新标志对后台线程是不可见的.可以使用同步的getter和setter或通过设置标志来修复这种情况volatile.
所以:
考虑以下课程:
class C1 : IDisposable {...}
class C2 : IDisposable {...}
sealed class C3 : IDisposable
{
public C3()
{
c1 = new C1();
throw new Exception(); //oops!
}
~C3()
{
//What can we do???
}
public void Dispose()
{
if ( c1 != null ) c1.Dispose();
if ( c2 != null ) c2.Dispose();
}
private C1 c1;
private C2 c2;
//assume that this class does not contains native resources
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我们正确地使用一次性物体:
using (var c3 = new C3())
{
} …Run Code Online (Sandbox Code Playgroud) 我的网站管理区域中的表格存在问题。我用它来更改显示的HTML文本,它是用PHP编写的,并连接到MySQL数据库。
echo "<form action=\"index.php?kat=infos&aktion=upd&kategorie=$kategorie\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\">\n";
echo "<table border=\"0\">\n";
echo "<b>$kategorie</b>\n";
echo "<tr><td><b>Information:</b></td><td><textarea name=\"info\" cols=\"50\" rows=\"7\">$info</textarea></td></tr>\n";
echo "<tr><td><input type=\"submit\" value=\"Editieren\" /></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
Run Code Online (Sandbox Code Playgroud)
如果我输入一些小句子,例如“这仅是测试文本”。并单击提交按钮,index.php接受数据并将其按原样插入数据库。但是,如果我输入了更长的文本,例如来自http://www.juraforum.de/disclaimer_muster/的免责声明,则会在表单提交时收到错误403。我不认为这是因为文本较长,因为如果我在其中写入一些较长的随机文本,它也会起作用。
希望您能帮我这个忙。
我正在将Amazon SimpleDB用于我的Web应用程序.我正在寻找像phpMyAdmin这样的工具,它允许我从一个地方管理数据库(查看我的所有域名,查看所有记录 - 运行测试查询等)但我能找到的只是来自Bizo的免费firefox插件
http://dev.bizo.com/2008/12/open-source-simple-db-firefox-plugin.html
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为它不会让我指出它的简单DB的欧洲主机sdb.eu-west-1.amazonaws.com
如果有必要,我不介意付钱买东西.
谁知道如何嘲笑Url.Content("~")?
(顺便说一句:我正在使用Moq)
你能说出如何在Eclipse中测试和使用Web服务的最佳方法吗?
我对Web服务没什么经验,也就是说,我使用了生成客户端存根的Apache Axis插件.
我现在不需要编写自己的Web服务,只使用现有的Web服务.我有Eclipse Java EE,我可以下载任何插件.你会建议什么?
我的网页破解有点问题.Multicell显示在第一页的页脚上,然后它中断:如何设置页面的下边距,以便在上面发生中断?这是示例PDF:示例,这里是源代码:
<?php require_once('../tcpdf/config/lang/eng.php');
require_once('../tcpdf//tcpdf.php');
class MYPDF extends TCPDF {
public function Header() {
$auto_page_break = $this->AutoPageBreak;
$this->SetAutoPageBreak(false,0);
$this->setJPEGQuality(100); $img_file = 'images/mandanten/ce_background.jpg';
$this->Image($img_file, $x=160, $y=72, $w=36, $h=200, $type='', $link='', $align='', $resize=true, $dpi=150, $palign='', $ismask=false, $imgmask=false, $border=0);
$this->SetAutoPageBreak($auto_page_break); }
}
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('tmpAutor');
$pdf->SetTitle('tmpTitle'); $pdf->SetSubject('tmpSubject');
$pdf->SetKeywords('tmp'); $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, 10, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(True, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//set some language-dependent strings
$pdf->setLanguageArray($l); $pdf->AddPage();
$pdf->SetFont('freesans', …Run Code Online (Sandbox Code Playgroud) 我的JavaScript函数正在运行,但出于某种原因,在我的IF语句中显示警报后,页面重新加载/刷新,我不希望它.为什么这样,我如何更改我的功能,以便它不会这样做?
我的功能
function valSubmit(){
varName = document.form1.txtName.value;
varSurname = document.form1.txtSurname.value;
varEmail = document.form1.txtEmail.value;
varOrg = document.form1.txtOrg.value;
if (varName == "" || varSurname == "" || varEmail == "" || varOrg == "" )
{
alert("Please fill in all mandatory fields");
}
else
{
document.body.style.cursor = 'wait';
document.form1.btnSubmit.style.cursor = 'wait';
document.form1.action = "http://now.eloqua.com/e/f2.aspx"
document.form1.submit();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
ps我正在使用ASP.NET 3.5
我有一个3"层"的应用程序,第一个"数据层",第二个"businesslayer",第三个是asp.net mvc网站.我正在尝试以正确的方式添加表单身份验证.
我应该以某种方式配置它以使用业务层?获取/添加/更新作为身份验证一部分的用户?
我应该在哪个项目中添加用户验证?
/ M
我知道骆驼案例规则,但我对这个规则感到困惑.它代表什么?我是一名PHP开发人员."我们"使用变量的第一个字母作为类型的指示,如"b"表示布尔值,"i"表示整数,依此类推.
是'Java'吗?它代表移动吗?混合使用吗?
asp.net-mvc ×2
java ×2
php ×2
android ×1
c# ×1
coding-style ×1
eclipse ×1
html ×1
javascript ×1
moq ×1
swing ×1
tcpdf ×1
unit-testing ×1
web-services ×1