我正在处理一组消息对象,每个消息对象都有一个与之对应的唯一标识符.每条消息都可以从Map或ByteBuffer构建(消息是二进制的,但我们知道如何与二进制表示进行转换).
构建这些消息的当前实现大致如下:
public static Message fromMap(int uuid, Map<String, Object> fields) {
switch (uuid) {
case FIRST_MESSAGE_ID:
return new FirstMessage(fields);
.
.
.
default:
// Error
return null;
}
}
public static Message fromByteBuffer(int uuid, ByteBuffer buffer) {
switch (uuid) {
case FIRST_MESSAGE_ID:
return new FirstMessage(buffer);
.
.
.
default:
// Error
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,Josh Bloch的Effective Java讨论了第1项:考虑静态工厂方法而不是构造函数,这似乎是这个模式有用的地方(客户端不直接访问Message子类型的构造函数;相反,他们通过这个方法).但我不喜欢这样一个事实,即我们必须记住更新两个switch语句(违反DRY原则).
我很欣赏任何有关实现这一目标的最佳方法的见解; 我们不是缓存对象(每次调用fromMap或fromByteBuffer都会返回一个新对象),这会否定使用像这样的静态工厂方法的一些好处.关于这段代码的一些事情让我觉得错误,所以我很想听听社区关于这是否是构建新对象的有效方法的想法,或者如果不是更好的解决方案.
比如说你有以下两个标签,在旧版页面中你被分配到哪个标签:
<table style="padding:0px; margin:0px; border: 0px; width:100%;">
<td style="width:100%; margin:0px; padding:0px; border: 0px;">
Run Code Online (Sandbox Code Playgroud)
是否有一个程序可以列出这些随机样式标签并重新排列其内容,或者按字母顺序排序标签内的css:
<table style="border: 0px; margin:0px; padding:0px; width:100%;">
<td style="border: 0px; margin:0px; padding:0px; width:100%;">
Run Code Online (Sandbox Code Playgroud)
最后,该工具将比较这两个样式字符串,看它们是相似的(按字母顺序排列)......
<table class="style1">
<td class="style1">
Run Code Online (Sandbox Code Playgroud)
...并为一个类分配标签并创建一个css条目:
.style1 {
border: 0px;
margin:0px;
padding:0px;
width:100%;
}
Run Code Online (Sandbox Code Playgroud)
...有没有现有的工具/实用程序/脚本?
这可能很简单,但我似乎缺乏一些关于nhibernate如何工作的知识.这是我的代码:
ICriteria query = Session.CreateCriteria<TblProjectCategory>();
query = query.CreateCriteria<TblProjectCategory>(x => x.TblProjects)
.Add<TblProject>(x => x.FldCurrentFunding != 0m)
.Add<TblProject>(x => x.FldCurrentFunding / x.FldFundingGoal >= .8m)
.SetResultTransformer(
new NHibernate.Transform.DistinctRootEntityResultTransformer());
return query.List<TblProjectCategory>();
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:"无法从(x.FldCurrentFunding/x.FldFundingGoal)确定成员"
当sql server正在接收两个查询(SELECT*From the_Same_Table)时,在同一时间,如果你有一个服务器有多个处理器,可以sql server同时检索数据吗?
我试图了解如果在.01秒内完成的廉价选择语句和1000个用户同时运行相同的查询将会发生什么.我想如果服务器有四个处理器会发生什么情况,那么SQL服务器将在.01秒内服务前四个,并在0.02秒内为下一个四个用户服务.
这甚至接近实际发生的情况吗?
我想我会尝试使用某种代码和记录器来测试它,或者可能有可靠的测试工具来做到这一点.
谢谢
我使用Native代码在Android中渲染OpenGL,我得到的定期错误如下所示:
ERROR/IMGSRV(1435):frameresource.c:610:WaitUntilResourceIsNotNeeded:PVRSRVEventObjectWait失败
错误/ IMGSRV(1018):sgxif.c:124:WaitForRender:PVRSRVEventObjectWait失败
错误/ IMGSRV(1435):osfunc_um.c:318:PVRSRVEventObjectWait:返回错误13
一旦出现这些错误,我必须重新启动手机,否则渲染将无法再次正确启动.我已经做了很多网络搜索,我无法找出导致这些错误的原因.有没有人有任何建议?
快问.我从目录列表中填充了一个列表框.每个文件都包含其名称和〜#####.我正在尝试将它全部读入一个字符串并用什么都替换〜####.####可以是长度为1-6的数字,可以是0-9之间的任何数字.这是我正在使用的代码:
string listItem = (listBox1.SelectedItem.ToString().Replace("~*",""));
Run Code Online (Sandbox Code Playgroud)
例:
Here223~123 ---> Here
Here224~2321 ----> Here
Run Code Online (Sandbox Code Playgroud)
我无法替换任何数字,因为我需要在〜之前的数字
请参阅C++编码标准的规则#41 或Sutter的Gotw#70,其中指出:
使数据成员保密,除了无行为聚合(C样式结构).
为了方便起见,我经常想为这些C风格的结构添加一个简单的构造函数.例如:
struct Position
{
Position(double lat=0.0, double lon=0.0) : latitude(lat), longitude(lon) {}
double latitude;
double longitude;
};
void travelTo(Position pos) {...}
main()
{
travelTo(Position(12.34, 56.78));
}
Run Code Online (Sandbox Code Playgroud)
虽然可以更容易地动态构造Position,但构造函数也可以为我初始化默认的Position对象.
也许我可以关注std :: pair的例子并提供一个"makePosition"免费功能?NRVO应该和构造函数一样快,对吧?
Position makePosition(double lat, double lon)
{
Position p;
p.latitude = lat;
p.longitude = lon;
return p;
}
travelTo(makePosition(12.34, 56.78));
Run Code Online (Sandbox Code Playgroud)
通过添加那个可怜的小构造函数,我是否违背了"无行为聚合"概念的精神?
编辑:
是的,我知道Position p={12.34, 56.78}.但我不能travelTo({12.34, 56.78})用纯C结构.
编辑2:
对于那些对POD类型感兴趣的人:C++中的POD类型是什么?
追问: 我问一个后续问题这里是密切相关的这一个.
我尝试使用SQL Server 2008创建数据库diagramm,但发生错误:
无法安装数据库关系图支持对象,因为此数据库没有有效的所有者.要继续,首先使用"数据库属性"对话框的"文件"页面或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录,然后添加数据库关系图支持对象.
然后我尝试了以下内容:
EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO
Run Code Online (Sandbox Code Playgroud)
下一个erorr弹出:
消息15404,级别16,状态11,行1无法获取有关Windows NT组/用户'WIN-NDKPHUPPNFL\Administrator'的信息,错误代码0x534.
问题是PC的名称已更改为"DevPC"我也在更新脚本中更改了此项,但仍然是相同的错误15404.
我该怎么做才能解决这个恼人的错误?
我想在我的应用程序中制作一个过去一个月创建的用户简单图表.就像过去一个月中的每一天一样,我想显示当天注册的用户数.到目前为止我所拥有的:
# Controller
@users = User.count(:order => 'DATE(created_at) DESC', :group => ["DATE(created_at)"])
# View
<% @users.each do |user| %>
<%= user[0] %><br />
<%= user[1] %>
<% end %>
# Output
2010-01-10 2
2010-01-08 11
2010-01-07 23
2010-01-02 4
Run Code Online (Sandbox Code Playgroud)
哪个是好的,但是如果在给定的一天没有创建用户,则应该说"0"而不是根本不存在.如何在过去30天内遍历每一天并显示当天创建的用户数量?
c# ×2
sql-server ×2
activerecord ×1
android ×1
android-ndk ×1
api ×1
barcode ×1
c++ ×1
components ×1
css ×1
factory ×1
html ×1
java ×1
nhibernate ×1
opengl-es ×1
performance ×1
ruby ×1
string ×1
utilities ×1