我根本不自称是RegEx大师,我对这句话的作用感到有些困惑.我正在尝试重构,这是在按键上调用并吃了很多CPU.
Regex.Replace(_textBox.Text, "(?<!\r)\n", Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)
谢谢.
考虑以下课程:
public class MyIntSet
{
private List<int> _list = new List<int>();
public void Add(int num)
{
if (!_list.Contains(num))
_list.Add(num);
}
public bool Contains(int num)
{
return _list.Contains(num);
}
}
Run Code Online (Sandbox Code Playgroud)
遵循"仅测试一件事"原则,假设我想测试"添加"功能.考虑以下这种测试的可能性:
[TestClass]
public class MyIntSetTests
{
[TestMethod]
public void Add_AddOneNumber_SetContainsAddedNumber()
{
MyIntSet set = new MyIntSet();
int num = 0;
set.Add(num);
Assert.IsTrue(set.Contains(num));
}
}
Run Code Online (Sandbox Code Playgroud)
我对这个解决方案的问题是它实际上测试了两个方法:Add()和Contains().从理论上讲,两者都可能存在错误,只会出现在一个接一个不被调用的情况下.当然,Contains()现在服务器作为List的Contains()的瘦包装器,它本身不应该进行测试,但如果它将来会变得更复杂呢?也许应该始终保留一个简单的"薄包裹"方法用于测试目的?
另一种方法可能建议模拟或暴露(可能使用InternalsVisibleTo或PrivateObject)私有_list成员并让测试直接检查它,但如果有一天内部列表被其他一些集合替换(可能是C5),那么可能会产生测试可维护性问题).
有一个更好的方法吗?我反对上述实现的任何论据都有缺陷吗?
在此先感谢,JC
我一直在使用传统的Java TableCellRenderer方法scala.swing.Table在我在桌面上声明我的渲染器的地方提供渲染器TableColumnModel.这个代码看起来像:
val myTable = new Table {
lazy val tcm = initColumnModel
peer.setColumnModel(tcm)
override
protected def rendererComponent(sel: Boolean, foc: Boolean, row: Int, col: Int) = {
//GET THE VALUE FROM THE TableModel
val value = model.getValueAt(
peer.convertRowIndexToModel(row),
peer.convertColumnIndexToModel(col))
//GET THE RENDERER FROM THE ColumnModel
val renderer = tcm.getColumn(col).getCellRenderer
//WRAP IN A COMPONENT
Component.wrap(renderer.getTableCellRendererComponent(
peer,
value,
sel,
foc,
row,
col).asInstanceOf[JComponent])
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎有内存泄漏 - 大概是因为我正在为表中的每个单元创建一个新的Component实例(大约30k行).当然,当我用一个JTable(使用完全相同的列和数据模型)替换我的scala表时,我的内存泄漏就消失了.
因此,我的问题是,当重写rendererComponent方法时人们使用什么样的代码,假设一个人拥有自己的单元格渲染器?
我需要为我的WCF客户端端点添加自定义行为扩展.我尝试通过配置执行此操作,但是被WFC配置无法正确解析类型名称时经常提到的错误所困扰.那么我可以以编程方式执行此操作吗?
我无法在运行时修改配置节,因为它们是只读的.我知道如果我得到客户端代理的实例(即ClientBase),我可以向其Endpoint.Behaviors添加我的自定义行为的实例.但是,我必须为每个实例执行此操作.
我是否可以全局访问端点并预先添加它们(例如,在Global.asax中),或者这些端点是否被实例化并暂时丢弃?
为什么我会收到编译器警告
标识符'Logic.DomainObjectBase._isNew'不符合CLS
对于以下代码?
public abstract class DomainObjectBase
{
protected bool _isNew;
}
Run Code Online (Sandbox Code Playgroud) 我有一个必须存在的环境变量或jvm参数.如果此参数不存在,如何让Maven失败?
首先,我承认我对这些事情嗤之以鼻.(糟糕,糟糕,我.)但是,我只是想知道在命名PHP包含文件方面什么是最佳实践.
作为一个基本情况,我将保留.php作为最终扩展(以帮助防止未解析的文件被提取),但为了帮助区分前端文件和包含文件,我要么:
将所有包含文件命名为XXX.inc.php
将上面的通用(非类)文件命名为ClassName.class.php的类定义(虽然我不是自动加载器的忠实粉丝,但可能对于自动加载器的使用很有用.)
我目前正在考虑选项2,但我只是想知道是否有任何其他建议或建议.
我需要最快的库来调整全尺寸图像(大小高达9MB)到多种尺寸.
这是场景:
如果库是C/C++或其他任何东西,我都不会感到困惑,只要我可以通过.NET进入它就很酷.
此外,还需要扩展到可能有1,000个活跃用户.
让我知道你的想法 :)
是否可以指示jabber/xmpp服务器将身份验证委派给另一个模块?我们正在使用XMPP构建内部应用程序,如果我们可以让用户保留他们在我们的网络应用程序中使用的标准用户名/密码,那将是非常棒的.web-apps目前是散列密码,因此DB中的密码不以纯文本形式存储.如果不是这样,那么在系统之间共享密码会很容易,但当然,在服务器端数据库中存储纯文本密码是一个很大的禁忌.
理想情况下,我们可以告诉jabber服务器"嘿,只是将您的用户名/身份验证请求传递到此处"并运行其他进程(甚至只是一个xmpp bot?)来处理身份验证.
我们目前正在使用ejabberd作为我们的服务器,我相信它是用Erlang编写的.但我们并没有与ejabberd联系在一起.我知道XMPP是巨大的,并且在很大程度上是可扩展的 - 但我还没有找到任何有关服务器端可扩展身份验证的信息.
我在XMPP网站上找到了这个,但这似乎是在客户端和服务器之间协商身份验证的协议,而不是服务器上的实际身份验证机制.
关于如何在XMPP服务器和我们的其他系统之间合并身份验证方案的任何指针?
我正在尝试直接登录Google Analytics.为了解释,我有一个帐户系统,我想当你选择一个ASP.NET按钮时,它会通过静默登录将你重定向到指定的Google Analytics帐户.
我对Dave Cullen的ASP.NET库看起来很长很难,虽然我可以使用HttpWebRequest"静默"登录,但我无法将用户粘贴在该页面上.我有各种各样的剧集,"不能发送带有此动词类型的内容正文"错误.
这是我目前基于Dave库的基本代码;
string token = GoogleAnalytics.getSessionTokenClientLogin(username, password);
NameValueCollection profiles = GoogleAnalytics.getAccountInfo(token, GoogleAnalytics.mode.ClientLogin);
HttpWebRequest theRequest = (HttpWebRequest)WebRequest.Create("https://www.google.com/analytics/settings/?et=reset&hl=en_uk&et=reset&hl=en-US&et=reset&hl=en-GB");
theRequest.Headers.Add("Authorization: GoogleLogin auth=" + token);
Stream responseBody = theRequest.GetRequestStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(responseBody, encode);
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是; 这可以吗?2.这甚至是正确的方法吗?
建议欢迎!