我编写C代码,对实现做出某些假设,例如:
char 是8位.>> 有符号整数sign-extends.doubleIEEE-754是双倍的,可以通过uint64_t预期的结果进行打字和打字.size_t不丢失信息的情况下转换回来.char*与普通算术相同size_t.void*不丢失信息的情况下再次强制转换.现在,所有这些都是C标准所不能保证的,所以严格来说我的代码是不可移植的.但是,它们在我目前正在瞄准的体系结构和ABI上都是正确的,经过仔细考虑之后,我已经确定他们未能在某些架构上保留的风险,我将来需要将其作为目标.与我现在做出假设所得到的实用好处相比.
问题是:我如何最好地记录这一决定?我的许多假设都是由几乎每个人(非八位字节char或符号幅度整数?未来,商业上成功的架构?)制定的.其他人更有争议 - 最危险的可能是关于函数指针的问题.但是,如果我只列出一切我认为超出标准给我,读者的眼睛只是要呆滞,他可能没有注意到,实际上很重要的人.
那么,是否有一些众所周知的关于成为"有点正统"的架构的假设,我可以通过引用合并,然后只明确记录我甚至超出的范围?(实际上这样的"概况"将定义一种新的语言,它是C的超集,但它可能不会承认这么多的话 - 而且它也可能不是一种实用的方法来考虑它).
澄清:我正在寻找一种记录我的选择的简写方式,而不是一种自动测试给定编译器是否符合我的期望的方法.后者显然也很有用,但并不能解决所有问题.例如,如果业务合作伙伴联系我们说:"我们正在制作基于Google新G2015芯片的设备;您的软件会在其上运行吗?" - 那么能够回答"我们还没有使用过那个拱门,但如果它有一个满足这样的C编译器就不应该是一个问题".
澄清甚至更多,因为有人投票决定关闭"不具有建设性":我不是在这里寻求讨论,只是为了指向实际的,现有的,正式的文件,可以通过引用并入我的文档.
有没有人遇到过关于int和uint算术如何在Actionscript 3中运行的权威规范?("权威"是指"来自Adobe"或"已被Adobe宣布为权威").特别是我正在寻找一种支持的方法来做整数乘法模2 32.我无法找到的任何Adobe文档都没有涵盖这一点.
Actionscript声称基于ECMAScript,但ECMAScript根本不进行整数运算.它在IEEE-754双打上完成所有操作,并在按位运算之前减少模数2 32,在大多数情况下模拟整数运算.但是,这对于乘法不起作用:乘法的真实结果,例如,0x10000001*0x0FFFFFFF对于双尾数的尾数来说太长,因此如果遵循规范,则低位将丢失.
现在输入Actionscript.我已经通过实验发现,将两个int或多个uint变量相乘并立即将产品投入int或uint总是给我确切的结果.但是,生成的AVM2字节码只包含一个普通的"mul"指令,没有直接指示它应该产生整数结果而不是浮点结果; 虚拟机必须向前看以找到它.我担心我在实验中幸运,并获得额外的精确度作为奖励,而不是我可以依赖的东西.
(首先,我的实验都是使用x86 Flash播放器进行的.也许它代表中间结果,因为Intel 80位加倍,或者在评估堆栈上存储64位int,直到知道它将用于什么.在没有原生32×32→64乘法指令的非x86平板电脑上很容易实现,那么VM是否可以决定将精度降低到ECMAScript标准指定的范围?)
24小时状态:迈克威尔士做了一些有能力的调查并提供了非常有用的链接,但遗憾的是还不足以解决这个问题.还有谁?
(tl;博士在评论中辩论:whitequark在某种程度上反驳了我的假设理由之一,为什么答案可能是"不".他的观点有其优点,但当然不能表明答案是"是" ).
我pthread_getspecific在一个设计用于链接到各种iOS应用程序的库中显然出现错误结果时遇到了一些问题.
我看到Apple写道:
Cocoa和POSIX以不同的方式存储线程字典,因此您无法混合和匹配对这两种技术的调用.但是,只要您在线程代码中坚持使用一种技术,最终结果应该是相似的.在Cocoa中,您使用NSThread对象的threadDictionary方法来检索NSMutableDictionary对象,您可以向该对象添加线程所需的任何键.在POSIX中,您使用pthread_setspecific和pthread_getspecific函数来设置和获取线程的键和值.
这是否意味着,无论可可也不POSIX TLS功能可以预计在库代码工作的时候,我们不知道,我们调用的代码是否已经使用一个或其他?
在这些情况下,如何稳健地存储和检索线程局部指针?
是否有我们应该使用的本机Darwin TLS支持API而不是Cocoa或POSIX?
我的任务是使用HTTPS保护(以前的HTTP)Web服务.从现在离开的同事我继承了SSLEngine在现有服务器中的TCP和HTTP层之间插入对象的代码.据我所知,这段代码可以正常工作.我得到了SSLEngine来自SSLContext.createSSLEngine(),但如何产生一个合适的SSLContext混淆我.
SSLEngine它本身在javadoc中有一个很好的概念性介绍,但遗憾的是我不需要与自己接口.另一方面,SSLContext.init()是非常稀疏的文档,只是说我必须传递"身份验证密钥的来源"和"对等身份验证信任决策的来源",我不知道那是什么.这些参数类型的文档(通常是我下一次尝试理解它)是通用的,没有说什么,而且类文档SSLContext也是无用的简短.
我提供了一串ASCII装甲.crt,.pem和.key文件,它们一起使Apache将HTTPS服务在域Java服务器最终将直接处理.我想我需要将它们加载到SSLContext或以SSLEngine某种方式,但我不确定是否SSLContext.init()甚至是正确的地方(虽然它似乎没有其他许多地方).
我应该从哪些文档开始阅读,以便了解如何执行此操作?
我的谷歌试图生成大量未经证实的半无证的示例代码,质量和安全性未知,以及一些高级演练,如"如何编写自己的密钥提供程序",但没有对JRE 最基本用法的整体概念介绍类.
特别是因为这与安全性有关,所以我没有使用复制粘贴示例代码,我只是漫无目的地敲打它,直到它看起来像我想做的更多或更少.我需要对各个部分实际上应该如何组合在一起的高级概念性理解.
(如果文档的详细程度足以让我弄清楚如何在实践中进行SSL客户端授权,那么奖励点 - 但这并不是立即紧急的).
我正试图在我的Perl脚本中将魔术数字声明为常量,如perlsub中所述.但是,我收到警告:
$ cat foo.perl
use warnings ; use strict ;
sub CONSTANT() { 5 }
print 7-CONSTANT,"\n" ;
$ perl foo.perl
Ambiguous use of -CONSTANT resolved as -&CONSTANT() at foo.perl line 3.
2
$
Run Code Online (Sandbox Code Playgroud)
如果我在减号和减号之间插入一个空格,警告就会消失CONSTANT.它使表达式比我想要的更通风,但它有效.
不过我很好奇:它警告我的含糊之处是什么?我不知道可以解析任何其他方式.
(来自Debian的Perl 5.10.1"挤压").
我有一些具有这种通用结构的代码:
interface Func<A> {
double apply(Optional<A> a);
}
class Foo {
public double compute(Func<Double> f) {
// Sometimes amend the function to do something slightly different
Func<Double> g = f;
if (someCondition())
g = oa -> Math.max(0, f.apply(oa));
return g.apply(Optional.of(3.14)) + g.apply(Optional.empty());
}
}
Run Code Online (Sandbox Code Playgroud)
这本身就足够了.现在我想变得更自由,以至于如果某人拥有,Func<Number>或者Func<Object>代替Func<Double>他们,他们仍然可以将其传递进去compute.先验,这应该是足够安全的.很好,所以我把它改成了
public double compute(Func<? super Double> f) {
Func<? super Double> g = f;
if (someCondition())
g = oa -> Math.max(0, f.apply(oa));
...
Run Code Online (Sandbox Code Playgroud)
不幸的是现在lambda没有进行类型检查(说Eclipse),因为oa无法传递给它 …
我正在写一个简短的程序来排序整数数组.我无法打开输入文件"prog1.d".分配要求在程序目录中创建一个符号链接,在创建对象和可执行文件后,我们按如下方式调用程序...
prog1.exe < prog1.d &> prog1.out
Run Code Online (Sandbox Code Playgroud)
我知道我的冒泡排序正常有效,因为我使用了自己的测试'txt'文件.
作业说:
你的程序从stdin获取随机整数并将它们放在一个数组中,按升序对数组中的整数进行排序,然后在stdout上显示数组的内容.
如何使用'cin'读取文件直到EOF并将整数添加到我的数组a []?
到目前为止,这是我的代码:
int main( int argc, char * argv[] )
{
int a[SIZE];
for ( int i=1; i<argc; i++)
{
ifstream inFile; // declare stream
inFile.open( argv[i] ); // open file
// if file fails to open...
if( inFile.fail() )
{
cout << "The file has failed to open";
exit(-1);
}
// read int's & place into array a[]
for(int i=0; !inFile.eof(); i++)
{
inFile >> a[i];
}
inFile.close(); // …Run Code Online (Sandbox Code Playgroud) 在我的程序中,十六进制数除以十,其余部分被检查.
第一师表现良好; 然而,在第二次分裂后,程序出错了.我是装配新手,我找不到问题所在......
这是代码段:
ORG 1000
MOV AX, 0x04B4 (1204 decimal value )
MOV BX, 0x000A ( 10 decimal value )
MOV CX, 0x0000
DIV BX ( After this part, AX is 120 decimal and DX 4 decimal )
CMP DX, 0x0000
JE eq1
ADD CX, 0x0002
JMP con1
eq1: ADD CX, 0x0001
con1:
DIV BX ( But, after this division AX becomes 6677 ( 26231 decimal and DX remains 4 decimal )
CMP DX, 0x0000
Run Code Online (Sandbox Code Playgroud)
感谢帮助!
似乎一个hello world程序依赖于几个库:
libc.so.6 => /lib64/libc.so.6 (0x00000034f4000000)
/lib64/ld-linux-x86-64.so.2 (0x00000034f3c00000)
Run Code Online (Sandbox Code Playgroud)
我如何静态链接所有东西?
手头的问题是标题本身的问题.这是给出一种算法,该算法在O(nloglogn)最坏情况时间内对具有O(logn)不同元素的n元素阵列进行排序.有任何想法吗?
进一步如何处理具有多个非不同元素的数组?
我不明白为什么我不能使用' myRendInside '函数来渲染网格列.我必须使用myRendGlobal或者我也可以使用' renderer: function(val) {blah blah'.'this.myRendInside'无法解决.
function myRendGlobal (val, metaData, record, rowIndex, colIndex, store) {
return val + 'abc'
};
Ext.define('AM.view.Event.Grid', {
extend: 'Ext.grid.Panel',
myRendInside: function (val, metaData, record, rowIndex, colIndex, store) {
return val + 'xyz'
},
columns: [{
dataIndex: 'name', renderer : this.myRendInside
},
{
dataIndex: 'phone', renderer : myRendGlobal
},
.
.
.
Run Code Online (Sandbox Code Playgroud) 目前我正在阅读.txt文件
FileInputStream is = new FileInputStream(masterPath+txt);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String readLine = null;
while ((readLine = br.readLine()) != null)
{
...
Run Code Online (Sandbox Code Playgroud)
但unicode字符并不像它们应该的那样出现.
任何想法如何改变上面的代码,让unicode工作?
谢谢!
如何在Perl中的$ 1,$ 2和$ 3变量中匹配并存储此字符串中的各行?
$string = "This is a line 1.\nThis is line 2.\nThis is line 3.\n";
Run Code Online (Sandbox Code Playgroud)
我知道我必须使用/ m修饰符,但到目前为止我的尝试都没有成功.
我试过了
$string =~ m/^(.*?)$.^(.*?)$.^(.*?)$/sm;
Run Code Online (Sandbox Code Playgroud)
和其他组合无济于事.我想保持简单,所以任何指出错误的答案都会有所帮助.我想只尝试使用/ s和/ m修饰符.