我正在努力学习C和我正在使用的书(Apress''Learn C')有一章在随机访问功能上非常混乱.以下代码令我困惑:
int GetNumberOfDinos( void ) {
FILE *fp;
long fileLength;
if ( (fp = fopen( kDinoFileName, "r" )) == NULL )
DoError( "Couldn't open file...Goodbye!" );
if ( fseek( fp, 0L, SEEK_END ) != 0 )
DoError( "Couldn't seek to end of file...Goodbye!" );
if ( (fileLength = ftell( fp )) == -1L )
DoError( "ftell() failed...Goodbye!" );
fclose( fp );
return( (int)(fileLength / kDinoRecordSize) );
}
Run Code Online (Sandbox Code Playgroud)
我理解代码的目的,但不了解如何实现该目的.fopen系列很容易理解.fseek和ftell是我的麻烦开始的地方.fseek的参数是文件,偏移量,然后是3个SEEK中的一个.为什么它的条件不是零呢?如果文件确实存在(kDinoFileName),并且他们想要指向该文件的末尾,为什么该位置为零?文件存在,有信息!然后我完全不明白ftell函数将如何以-1L结束?这个代码比它需要的更难吗?
我有一个这样的课:
class Foo
{
long long Id;
string x;
string y;
// other member variables and functions
};
Run Code Online (Sandbox Code Playgroud)
我想将它存储在hash_set
(或hash_map
)中,但使用Id成员变量作为插入和搜索的键.我不知道怎么能这样做.我想到了以下方法,但没有一个真的很好:
1)我可以编写一个自定义哈希函数,它将使用Id对对象进行哈希处理,但是我不能使用该find()
方法hash_set
通过Id(long long
)查找项目,因为它需要Foo
传入一个对象.
2)我可以复制Id并创建一个hash_map<long long, Foo>
而不是a hash_set<long long, Foo>
但我有1亿个这些对象的实例,所以我宁愿不复制Id字段.
3)我可以将Id字段移到外面Foo
然后再移动hash_map<long long, Foo>
,但是它会有点混乱,因为Id在内部由类使用,最好保持它Foo
.
有任何想法吗?我正在寻找的是一种存储Foo
对象的方法,但能够在hash_set
使用a long long
(通过Id)中搜索它们.
谢谢!
我正在使用一些使用JQuery的$(document).ready功能来设置jqGrid实例的代码.即使通过后退按钮单击返回页面,似乎也会触发代码.
在精简测试页面中,通过后退按钮点击时不会调用类似的就绪函数:
<html>
<head>
<script type="text/javascript" src="/JQuery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
alert('ready');
})
</script>
</head>
<body>
<p>Index View</p>
<a href="detail.html">Detail</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你能给我一些关于在哪里寻找导致这种行为差异的原因的提示吗?
我在这个问题的答案中找到了一些相关信息,但是带有过度活动就绪事件的页面没有为卸载注册的事件处理程序.
我需要在类中调用rubberStampService
from的公共方法RubberStampServiceImpl
.
要从rubberStampService
内部引用from,我可以像这样创建一个自引用bean声明:
<beans:bean id="rubberStampService" class="com.rubberly.RubberStampServiceImpl">
<beans:property name="rubberStampService" ref="rubberStampService" />
</beans:bean>
Run Code Online (Sandbox Code Playgroud) 我对coredata有一些初期的问题,但如果有人能向我解释一些简单的案例,我觉得这会让我感到非常清楚.
我想把我的模型放到coredata中,并且在最简单的情况下利用undo/redo.事实是,我看到的所有例子都倾向于存储字符串或整数.如果我想要在核心数据中实现如下的类(一个组成的示例),该怎么办?
@interface Badge : NSObject {
NSString *textForBadge;
int badgeValue;
UIColor *color;
CGRect rect;
NSMutableArray *awards; // this would be a list of 'Category' - another custom class
}
Run Code Online (Sandbox Code Playgroud)
这些都是当场制作的,但每一个都突出了一个混乱
在我看来,我会打开.xcdatamodel并添加一个新的Entity caled'Badge',这将是一个NSManagedObject
.然后我添加一个textForBadge
类型的属性String
.到现在为止还挺好.我做badgeValue类似的财产以后,但随后来到UIColor
和CGRect
和我有点为难,因为没有这些属性.我是否应该创建一个实体来表示每个(即Rect
具有四个属性的实体x,y,w,h
)的实体?然后每次用这些整数填充CGRect?同样适用于UIColor?
最后,我来到我的清单awards
.如果这些是指向表示奖励的多个对象的指针列表,则它们可能包含图像,颜色,文本等.我认为这award
将再次成为我必须设计的实体而不是Badge
存储数组我将拥有1从它到Award
班级的许多关系.
我能做到这一点,还是在相反的方向竞争?我看到的所有示例都在像String或int这样的vanilla对象上运行,所以在实现一堆东西之前,我要确保在脑子里有这个权利.
亲切的问候,
布林
我要求在接收任何终止命令(如SIGTERM和SIGKILL)时写入日志文件.
我可以注册SIGTERM但是如何处理SIGKILL信号?
我是开发相当大的iPad应用程序的团队的一员,因此我们创建了许多不同的类.问题是一些方法现在已经过时了,我不想简单地删除它们,因为我知道整个系统的某些部分使用这些方法......但是有更好的(更新的)变体可以使用相反(一些旧的实际上称为新的,但整体类接口变得混乱).
有没有一种方法可以将某些方法标记为折旧(如@deprecated
在Java和[Obsolete]
.NET中).
我看到Apple使用Availability.h并且有标签,例如
__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0);
Run Code Online (Sandbox Code Playgroud)
...这是唯一的方法(+ App Store是否可以安全地执行此操作?)或者是否有替代方案会在Xcode中标记警告?
我们有一个JQuery $(function()
语句:
<script type="text/javascript">
$(function(){
//Code..
})
</script>
Run Code Online (Sandbox Code Playgroud)
愚蠢的问题 - 什么时候执行此功能?是在客户端下载整个HTML页面的时候吗?
使用包装代码的好处是什么$(function()
,而不仅仅是:
<script type="text/javascript">
//Code..
</script>
Run Code Online (Sandbox Code Playgroud) re.search()
用于在字符串中查找和返回文件扩展名的正确正则表达式语句是什么.
如:
(.+).(avi|rar|zip|txt)
我需要它来搜索字符串,如果它包含任何avi,rar等)只返回该扩展名.
谢谢!
编辑:应该添加,需要不区分大小写
我有几个char(array),int和double类型的变量.有没有办法确定它们在运行时的类型?
例如,我正在寻找类似的东西:
int dummyInt = 5;
double dummyDouble = 5.0;
dummyInt == int ?
printf("yes, it's of int type\n") : printf("no, it's not of int type\n");
dummyDouble == int ?
printf("yes, it's of int type\n") : printf("no, it's not of int type\n");
Run Code Online (Sandbox Code Playgroud)
显而易见的结果将是:
是的,它是int类型
否,它不是int类型
好吧,我需要它的原因是因为我将数据从变量传输到SQL数据库(使用SQLite).现在,每次运行程序时标头都会改变,具体取决于使用的变量.因此,当我创建表时,我需要告诉它是否为VARCHAR,INTEGER,DOUBLE等.
c ×2
iphone ×2
jquery ×2
objective-c ×2
back-button ×1
c++ ×1
core-data ×1
deprecated ×1
function ×1
hash ×1
hashmap ×1
ios4 ×1
java ×1
javascript ×1
linux ×1
python ×1
regex ×1
runtime ×1
sigkill ×1
signals ×1
spring ×1
spring-mvc ×1
types ×1