我有这个代码:
<html>
<head>
<style type="text/css">
.container {
border-bottom: 1px dotted #999999;
width:500px;
padding-left:200px
}
</style>
</head>
<body>
<div class="container">asdf</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它的工作正常,除了底部边框也适用于缩进前的200px.我希望底部边框以200px开始.可以这样做吗?
在我的项目中,我有提交和评论,每个都有一个ID.目前,ID只是数字,与其数据库ID相对应.一切正常,但是当我通过W3验证器运行时,我收到错误:
value of attribute "id" invalid: "1" cannot start a name
我想相反,我可以在所有id之前添加某种字符串,但每当我在JQuery或PHP中使用或操作id时,我必须在使用之前执行id.replace('string','').这看起来相当麻烦.有什么建议?
可能重复:
每个表都应该有一个主键吗?
如果您从未在任何地方引用ID,是否需要包含一个?表需要ID还是主键?
我一直在努力让FirePHP工作一小时.我安装了最新的firebug并且工作正常.我还安装了FirePHP插件.然后我下载了库文件并将它们包含在我的php文件中.我相信他们被包括在内.现在我用ob_start();声明启动了FirePHP .然后我尝试记录一些东西,fb('Log message', FirePHP::LOG);但没有出现在控制台上.我试过在Net Panel,Console窗口,All全部检查,尝试使用OOP方法等等,但没有任何工作.我可以看到标题发送得很好,但我看不到任何记录的消息.是什么赋予了?
我正在阅读这篇文章,我正在尝试理解这个SQL语句,但我仍然对SQL有些新意.
我不确定评论和c是什么意思.
我认为其中一个是表名,但我不确定另一个.此外,显然其中有一个子查询,我没有任何经验:
SELECT c.id, c.user_id, c.body, c.deep, c.lineage, c.parent_id,
(SELECT COUNT(*)
FROM comment
WHERE comment.lineage LIKE (CONCAT(c.lineage,'%'))
AND comment.lineage != c.lineage) AS replies
FROM comment as c
ORDER BY c.lineage
Run Code Online (Sandbox Code Playgroud) 给定像StackOverflow这样的网站,最好创建num_comments列来存储提交的注释数量,然后在发表评论时更新它,或者仅使用COUNT函数查询行数?看起来后者会更具可读性和优雅性,但前者会更有效率.SO的想法是什么?
我正在阅读Clean Code: A Handbook of Agile Software Craftsmanship,其中一个例子涉及一个Portfolio班级和一个TokyoStockExchange班级.但是,Portfolio它不是非常可测试,因为它依赖于TokyoStockExchange作为外部API来确定投资组合的价值,这是一个非常不稳定的查找,不利于测试.
因此,他们通过创建一个通用StockExchange接口来解决这个问题,TokyoStockExchange并且DummyStockExchange实现了基类.因此,实现依赖倒置原则,并且在第一PortfolioTest类中可以实例化a DummyStockExchange,将股票价格固定到公司,将DummyStockExchange实例分配给投资组合,并将该公司的一些股票添加到投资组合中,然后断言预期值是否为确实是正确的价值.这是代码:
public class PortfolioTest
{
private DummyStockExchange exchange;
private Portfolio portfolio;
protected void setUp()
{
exchange = new DummyStockExchange();
exchange.fix("MSFT", 100);
portfolio = new Portfolio(exchange);
}
public void GivenFiveMSFTTotalShouldBe500()
{
portfolio.add(5, "MSFT");
Assert.assertEquals(500, portfolio.value());
}
}
Run Code Online (Sandbox Code Playgroud)
简单地说,我的问题是为什么?
如果TokyoStockExchange班级与班级一起工作,我们正在尝试测试Portfolio.显然,如果我们使用新方法创建另一个类来设置股票价格,然后给投资组合中的五个股票,那么一切都会有效.它似乎......无用的测试.我明白,由于股票价格的变化,TokyoStockExchange基本上不可能进行测试,Portfolio但我不明白在相当无用的测试中如何帮助这种情况.
这一切似乎都不知道我们的加法器程序是否有效但是可用的唯一数字是随机生成的,因此我们创建了一个虚拟类,它给了我们2并测试是否2 …
目前我在启动时禁用了大部分表单的控件,因为在加载文件之前无法使用它们.但是,一旦加载文件,控件应该启用.
我正在使用绑定,但我不认为它们是一个很好的解决方案.首先,它是不必要的复杂性.其次,你不能使用绑定的一切.例如,MenuStrip项不能将其Enabled属性绑定到fileLoaded属性.只有整个菜单可以,我不想在启动时禁用整个菜单,只需要对文件进行操作的某些菜单操作.
我真的只是想找到一种方法来实现一切.大多数人被问到会回答这个:
foreach (Control c in Controls)
{
c.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于在其他控件(如Panel或自定义控件)中启用MenuStrip项或控件.因此,它不会在容器中启用滚动条.
我想我可以使用该行并手动启用其他所有内容,但我总是可以手动启用所有内容.我正在寻找一种自动启用一切的方法.
目前在我的应用程序中,无法取消选择文本框.唯一的方法是选择另一个文本框.我的用户和我同意点击表单上的任何其他位置都应该取消选择当前的文本框.我尝试在许多控件上覆盖MouseDown并将焦点设置为随机标签,但它不适用于某些控件,如MenuStrip或scrollbars.有任何想法吗?
试图弄清楚我是否应该使用异步方法,例如:
和
而不是他们的同步TcpListener.AcceptTcpClient和NetworkStream.Read版本.我一直在寻找相关的线程,但我仍然有点不确定一件事:
问题:使用异步方法的主要优点是GUI没有被锁定.但是,这些方法将在单独的Task线程上调用,因为它没有任何威胁.此外,TcpListener.AcceptTcpClient阻塞线程直到建立连接,因此不会浪费CPU周期.既然如此,为什么这么多人总是建议使用异步版本?在这种情况下,似乎同步版本会更优秀吗?
此外,使用异步方法的另一个缺点是增加了对象的复杂性和不断的转换.例如,必须这样做:
private void SomeMethod()
{
// ...
listener.BeginAcceptTcpClient(OnAcceptConnection, listener);
}
private void OnAcceptConnection(IAsyncResult asyn)
{
TcpListener listener = (TcpListener)asyn.AsyncState;
TcpClient client = listener.EndAcceptTcpClient(asyn);
}
Run Code Online (Sandbox Code Playgroud)
与此相反:
TcpClient client = listener.AcceptTcpClient();
此外,由于必须创建另一个线程,异步版本似乎会有更多的开销.(基本上,每个连接都有一个线程,然后在读取该线程时也会有另一个线程.Threadception!)
此外,还有TcpListener的装箱和拆箱以及与创建,管理和关闭这些额外线程相关的开销.
基本上,通常情况下只有单独的线程来处理单个客户端连接,现在就有,然后为每种类型的操作执行一个额外的线程(读取/写入流数据并在服务器端侦听新连接)
如果我错了,请纠正我.我仍然是线程新手,我试图理解这一切.但是,在这种情况下,似乎使用正常的同步方法,只是阻塞线程将是最佳解决方案?