问题列表 - 第19210页

Java - 静态工厂方法和switch语句

我正在处理一组消息对象,每个消息对象都有一个与之对应的唯一标识符.每条消息都可以从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都会返回一个新对象),这会否定使用像这样的静态工厂方法的一些好处.关于这段代码的一些事情让我觉得错误,所以我很想听听社区关于这是否是构建新对象的有效方法的想法,或者如果不是更好的解决方案.

java factory

7
推荐指数
1
解决办法
5937
查看次数

适用于.NET的免费条形码API

是否有一个像样的免费API /组件用于在C#中打印条形码?

c# api components barcode

59
推荐指数
3
解决办法
12万
查看次数

是否有任何工具可以将一大堆样式标签合并到类中?

例:

比如说你有以下两个标签,在旧版页面中你被分配到哪个标签:

    <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)

...有没有现有的工具/实用程序/脚本?

html css utilities

9
推荐指数
1
解决办法
101
查看次数

使用nhibernate划分导致"无法确定成员"

这可能很简单,但我似乎缺乏一些关于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)确定成员"

nhibernate nhlambdaextensions

5
推荐指数
1
解决办法
1196
查看次数

SQL服务器并发访问

当sql server正在接收两个查询(SELECT*From the_Same_Table)时,在同一时间,如果你有一个服务器有多个处理器,可以sql server同时检索数据吗?

我试图了解如果在.01秒内完成的廉价选择语句和1000个用户同时运行相同的查询将会发生什么.我想如果服务器有四个处理器会发生什么情况,那么SQL服务器将在.01秒内服务前四个,并在0.02秒内为下一个四个用户服务.

这甚至接近实际发生的情况吗?

我想我会尝试使用某种代码和记录器来测试它,或者可能有可靠的测试工具来做到这一点.

谢谢

sql-server performance

7
推荐指数
1
解决办法
5368
查看次数

Native OpenGL渲染器的问题

我使用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

一旦出现这些错误,我必须重新启动手机,否则渲染将无法再次正确启动.我已经做了很多网络搜索,我无法找出导致这些错误的原因.有没有人有任何建议?

android opengl-es android-ndk

19
推荐指数
1
解决办法
1646
查看次数

C#字符串替换问题

快问.我从目录列表中填充了一个列表框.每个文件都包含其名称和〜#####.我正在尝试将它全部读入一个字符串并用什么都替换〜####.####可以是长度为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# string

5
推荐指数
3
解决办法
421
查看次数

好的,为C++中的无行为聚合(bundle-o-data)提供构造函数?

请参阅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类型是什么?

追问: 我问一个后续问题这里是密切相关的这一个.

c++

5
推荐指数
2
解决办法
234
查看次数

数据库图表支持对象无法安装...没有有效的所有者

我尝试使用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.

我该怎么做才能解决这个恼人的错误?

sql-server sql-server-2008 database-diagramming

129
推荐指数
6
解决办法
16万
查看次数

在给定的月份中按天获取"created_at"的元素数

我想在我的应用程序中制作一个过去一个月创建的用户简单图表.就像过去一个月中的每一天一样,我想显示当天注册的用户数.到目前为止我所拥有的:

# 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天内遍历每一天并显示当天创建的用户数量?

ruby activerecord ruby-on-rails

4
推荐指数
1
解决办法
7141
查看次数