我正在寻找一种自动生成头文件的方法.这个文件是库的公共接口,我想在编译之前"填充"一些结构和东西.
例如,在私有标头中,我有一个包含有用字段的结构:
typedef struct mystuff_attr_t {
int _detachstate;
mystuff_scope_t _scope;
cpu_set_t _cpuset;
size_t _stacksize;
void* _stackaddr;
} mystuff_attr_t;
Run Code Online (Sandbox Code Playgroud)
我希望在没有字段但具有相同大小(目前手动完成)的公共标题中使用此结构:
typedef struct mystuff_attr_t {
char _opaque[ 20 ];
} mystuff_attr_t;
Run Code Online (Sandbox Code Playgroud)
我想在创建构建系统时由CMake自动生成这个,以便在我更改私有头中的struct时避免公共接口中的大小结构错误.
当我在阻塞文件描述符上需要缓冲IO时,我使用stdio.但是如果我根据手动将文件描述符转换为非阻塞模式,则stdio缓冲是不可用的.经过一些研究后,我发现BIO可用于缓冲非阻塞IO.
但可能还有其他选择吗?
我需要这样做以避免在多连接环境中使用线程.
由于管理工具没有从Tomcat 5.x移植到Tomcat 6.x,人们如何管理Tomcat配置?
是否有其他第三方管理应用程序可用?或者是通过编辑xml文件完成所有配置.
谢谢
如果我有这样的语句块:
if (/*condition here*/){ }
else{ }
Run Code Online (Sandbox Code Playgroud)
或者像这样:
if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}
Run Code Online (Sandbox Code Playgroud)
有什么不同?
似乎使用if/else,如果part为true状态,else部分为所有其他可能选项(false).一个else-if对许多条件都有用.这是我的理解,还有什么我应该知道的吗?
我有一个像这样的数据模型:
# columns include collection_item_id, collection_id, item_id, position, etc
class CollectionItem < ActiveRecord::Base
self.primary_key = 'collection_item_id'
belongs_to :collection
belongs_to :item
end
class Item < ActiveRecord::Base
has_many :collection_items
has_many :collections, :through => :collection_items, :source => :collection
end
class Collection < ActiveRecord::Base
has_many :collection_items, :order => :position
has_many :items, :through => :collection_items, :source => :item, :order => :position
end
Run Code Online (Sandbox Code Playgroud)
项目可以出现在多个集合中,也可以在同一集合中的不同位置出现多次.
我正在尝试创建一个帮助方法,创建一个包含每个集合中每个项目的菜单.我想使用collection_item_id来跟踪请求之间当前选择的项目,但我无法通过Item类访问连接模型的任何属性.
def helper_method( collection_id )
colls = Collection.find :all
colls.each do |coll|
coll.items.each do |item|
# !!! FAILS HERE ( undefined method …
Run Code Online (Sandbox Code Playgroud) 最近,在阅读这篇博文之后,我有一个危险的想法.这个想法可以这样表达:
我不需要C++标准库提供的大部分内容.那么,为什么我不实现一个不太通用但更易于使用的版本?
作为一个例子,使用STL吐出大量难以理解和损坏的编译器错误.但是,我不关心分配器,迭代器等.那么为什么我不花几个小时来实现一个易于使用的链表类,例如?
我想从StackOverflow社区了解到的是:对于C++中的大多数现有功能而言,"滚动我自己"有哪些危险,可能的缺点和可能的优势?
编辑:我觉得人们对这个想法误解了我.当时的想法是要了解自己是否可以实现一个非常小的一组被大大简化STL功能-更多的项目来教我关于数据结构等.我不建议从头开始重新发明整个车轮,只是我需要和想要了解的部分.我想我想弄清楚的是,使用STL的复杂性是否需要创建更小,更简单的版本.
重新使用提升或类似.
我编写的大部分内容都是针对大学的,我们不允许使用外部库.所以它可以是C++标准库,也可以是我自己的类.
这个问题的客观性.
这个问题不是主观的.也不应该是社区维基,因为它不是民意调查.我想要具体的论点,强调我的方法可能出现的一个优点或一个缺点.与流行的看法相反,这不是意见,而是基于经验或良好的逻辑论证.
格式.
请为每个答案发布一个缺点或一个优势.这将允许人们一次评估个人想法而不是所有想法.
请...
没有宗教战争.我不是任何语言的粉丝.我用任何适用的东西.对于图形和数据压缩(我目前正在研究的),似乎是C++.请限制您对问题的回答,否则他们将被低估.
我需要验证一个对象,看它是否为null,值类型,或者IEnumerable<T>
where T
值是一个值类型.到目前为止,我有:
if ((obj == null) ||
(obj .GetType().IsValueType))
{
valid = true;
}
else if (obj.GetType().IsSubclassOf(typeof(IEnumerable<>)))
{
// TODO: check whether the generic parameter is a value type.
}
Run Code Online (Sandbox Code Playgroud)
所以我发现对象是null,值类型,或IEnumerable<T>
某些T
; 如何检查这是否T
是值类型?
我们正在尝试为运行Linux应用程序的每个功能提供许可机制,我们正在考虑使用许可证服务器以集中方式控制它:
我们的许可目标是:
是否有任何服务器许可证允许我们这样做(基本上,我们会使用套接字与我们的应用程序通信)?我们还能做些什么(例如,使用一些开源软件,阅读等)来开始?
我正在尝试计算一组值的中位数,但我不想存储所有值,因为这可能会破坏内存需求.有没有一种计算或近似中位数的方法,而不存储和排序所有单个值?
理想情况下,我想编写我的代码,如下所示
var medianCalculator = new MedianCalculator();
foreach (var value in SourceData)
{
medianCalculator.Add(value);
}
Console.WriteLine("The median is: {0}", medianCalculator.Median);
Run Code Online (Sandbox Code Playgroud)
我只需要实际的MedianCalculator代码!
更新:有些人问我正在尝试计算中位数的值是否具有已知属性.答案是肯定的.一个值从约-25到-0.5以0.5为增量.另一个也是从-120到-60的0.5增量.我想这意味着我可以为每个值使用某种形式的直方图.
谢谢
缺口
在为结构化数据设计XML Feed时,有什么好的做法,以及有哪些反模式?
我想要的答案涵盖XML结构和内容,和/或传输机制.
运输机制
目前的技术是FTP/SFTP的一项优秀技术吗?是否存在最适合作为解决方案的情况?
通常我更喜欢HTTP pull feed,但使用HTTP有哪些弱点?
应该考虑哪些其他饲料机制的优缺点?
XML结构内容
当没有合适的现有DTD /架构时,可以采用哪些实践来提出良好的XML设计?
我已经在下面的答案中给出了两种反模式.
但是在设计饲料时我应该怎么做?我想听听标签与属性,关系数据(尤其是多对多关系)应该如何用XML传达等等.
注意:我已经完全重写了这个问题,因为即使提供的赏金也没有得到很多的爱.(旧版本在编辑历史记录中,如果你想看到它.这个版本应该与已经给出的答案相关)
c ×2
c++ ×2
.net ×1
activerecord ×1
algorithm ×1
buffered ×1
c# ×1
cmake ×1
code-reuse ×1
generics ×1
header ×1
if-statement ×1
io ×1
licensing ×1
median ×1
networking ×1
nonblocking ×1
optimization ×1
reflection ×1
ruby ×1
syntax ×1
tomcat ×1
tomcat6 ×1
trialware ×1
xml ×1