+ =和= +之间有什么区别?具体来说,在java中,但一般而言.
我已经读过很多开发人员使用x + = 1而不是x ++来清楚.我知道x ++对于新开发人员来说可能不明确,而且x + = 1总是更清晰,但两者之间的效率是否存在差异?
使用for循环的示例:
for(x = 0; x < 1000; x += 1) VS for(x = 0; x < 1000; x++)
我知道它通常不是那么大的交易,但如果我反复调用一个执行这种循环的函数,它可能会在长期内累加起来.
另一个例子:
while(x < 1000) {
someArray[x];
x += 1;
}
Run Code Online (Sandbox Code Playgroud)
VS
while(x < 1000) {
someArray[x++];
}
Run Code Online (Sandbox Code Playgroud)
可以用x + = 1代替x ++而不会造成任何性能损失吗? 我特别关注第二个例子,因为我使用两行而不是一行.
如何增加数组中的项?会someArray[i]++比someArray[i] += 1在大循环中完成时更快吗?
我有一个名为'Workspaces'的表,其中'AreaID'和'SurfaceID'列用作复合主键.AreaID引用另一个名为"Areas"的表,该表只有AreaID作为主键.我现在要做的是使每个新的AreaID上的surfaceID从1重复.现在我正在使用以下代码用于表'Areas'和'Workspaces':
--Table 'Areas'
CREATE TABLE Areas (
AreaID INT IDENTITY(1,1) PRIMARY KEY,
Areaname VARCHAR(60) UNIQUE NOT NULL
)
--Table 'Workspaces'
CREATE TABLE Workspaces (
AreaID INT
CONSTRAINT ck_a_areaid REFERENCES Areas(AreaID)
ON DELETE CASCADE
ON UPDATE NO ACTION,
SurfaceID INT IDENTITY(1,1)
CONSTRAINT ck_surfaceid CHECK (surfaceid > 0 AND surfaceid < 1001),
Description VARCHAR(300) NOT NULL,
CONSTRAINT ck_workspaces PRIMARY KEY (AreaID, SurfaceID)
)
Run Code Online (Sandbox Code Playgroud)
当我使用上面的代码时,我在不同的区域创建新的工作区时会得到这样的结果:
AreaID SurfaceID
1 1
1 2
1 3
2 4
2 5
3 6
Etc...
Run Code Online (Sandbox Code Playgroud)
但我希望SurfaceID在每个新的areaID上从1重新计算,所以我想要的结果是这样的:
AreaID SurfaceID …Run Code Online (Sandbox Code Playgroud) 我有一个包含许多用户的表.在该表中,我有一个名为user_id(INT)的列,我想为每个人单独增加.user_id必须从1开始
我准备了一个简单的例子:
Showing all names
+--------------+-----------------------+
| user_id | name |
+--------------+-----------------------+
| 1 | Bob |
| 1 | Marry |
| 2 | Bob |
| 1 | John |
| 3 | Bob |
| 2 | Marry |
+--------------+-----------------------+
Showing only where name = Bob
+--------------+-----------------------+
| user_id | name |
+--------------+-----------------------+
| 1 | Bob |
| 2 | Bob |
| 3 | Bob |
+--------------+-----------------------+
Run Code Online (Sandbox Code Playgroud)
以下查询将执行此操作,但只有在表中已存在"Bob"时才会起作用...
INSERT INTO users(user_id, name) SELECT(SELECT MAX(user_id)+1 from …Run Code Online (Sandbox Code Playgroud) 我的SeekBar(滑块)工作正常但是,当我滑动手指时,它会递增/递减1,但是,我想将增量值更改为常量,例如5.我尝试使用
slider.incrementProgressBy(5);
要做到但是,它不起作用(注意:我把它放在动作监听器内外的不同位置,但它不起作用).
以下是与此相关的两行:
slider.incrementProgressBy(5);
validBpm = slider.getProgress();
Run Code Online (Sandbox Code Playgroud)
这些线目前在SeekBar的触控听众中.
我想这很简单,我忽略了显而易见的 - 任何建议?谢谢...
仅当变量的先前值为零时,以下带有调试选项'set -e -v'的脚本才会在增量运算符处失败.
#!/bin/bash
set -e -v
i=1; let i++; echo "I am still here"
i=0; let i++; echo "I am still here"
i=0; ((i++)); echo "I am still here"
Run Code Online (Sandbox Code Playgroud)
bash(GNU bash,版本4.0.33(1)-release(x86_64-apple-darwin10),还有GNU bash,版本4.2.4(1)-release(x86_64-unknown-linux-gnu))
有任何想法吗?
我有一个动态生成的数字(例如6),我想通过动态生成的数字填充数字1的数组(在本例中为6):
array(1, 2, 3, 4, 5, 6);
Run Code Online (Sandbox Code Playgroud)
我目前知道这样做的唯一方法是使用for循环,但我想知道是否有更好的方法,类似于array_fill.我查看了array_fill,但看起来它不会占用一个数字并将其增加一定次数.
我们的许多代码都是遗留的,但我们正在转向"大数据"后端,我正在尝试传播新的API调用,鼓励使用最新的Spring库等.我们的一个问题是应用层ID代.由于我不理解的原因,更高的权限需要顺序BigInteger.我会让它们随机重新生成并重新尝试失败的插入但我完成了否决.
磕磕绊绊地说,我处于一个需要增加并在线程中获得BigInteger并以安全和高效的方式执行的位置.我之前从未使用过AtomicReference,但它看起来非常接近完美的应用程序.现在我们有一个同步代码块,这会严重损害我们的性能.
这是正确的方法吗?语法示例?
我应该提一下这个模块的工作方式,它使用存储过程命中数据库以获取要使用的一系列值.一次只有几万个,所以它只发生在20分钟一次.这使得各种服务器不会相互踩踏,但它也增加了必须将BigInteger设置为任意后续值的皱纹.当然,这也需要线程安全.
PS我仍然认为我的随机生成想法比处理所有这些线程的东西更好.一个BigInteger是一个非常大的数字,两次产生相同的几率的几率必须接近零.
我正在看一些Don Knuth教授的代码,用CWEB编写,转换为C.具体的例子是dlx1.w,可从Knuth的网站获得
在一个阶段,struct nd [cc]的.len值递减,并且以一种笨重的方式完成:
o,t=nd[cc].len-1;
o,nd[cc].len=t;
Run Code Online (Sandbox Code Playgroud)
(这是一个特定于Knuth的问题,所以也许你已经知道"o"是一个预处理器宏,用于递增"mems",这是通过访问64位字来衡量的累计工作量.) "t"中剩余的值绝对不会用于其他任何事情.(此处的示例位于dlx1.w的第665行,或者是ctangle之后的dlx1.c的第193行.)
我的问题是:为什么Knuth这样写,而不是
nd[cc].len--;
Run Code Online (Sandbox Code Playgroud)
他确实在其他地方使用过(dlx1.w第551行):
oo,nd[k].len--,nd[k].aux=i-1;
Run Code Online (Sandbox Code Playgroud)
(而"oo"是一个类似的宏,用于递增"mems"两次 - 但这里有一些细微之处,因为.len和.aux存储在相同的64位字中.为S.len和S分配值. aux,通常只计算mems的一个增量.)
我唯一的理论是减量包括两个内存访问:首先查找,然后分配.(这是正确的吗?)这种写作方式提醒了这两个步骤.这对于Knuth来说会非常冗长,但也许这是一种本能的备忘录,而不是说教.
为了它的价值,我在没有找到答案的情况下搜索了CWEB文档.我的问题可能更多地与Knuth的标准实践有关,我正在逐渐采用.我会对这些实践被布局(并且可能被批评)作为一个块的任何资源感兴趣 - 但是现在,让我们关注为什么Knuth以这种方式编写它.
我想增加一个Int?
目前我写的这个:
return index != nil ? index!+1 : nil
Run Code Online (Sandbox Code Playgroud)
有没有更漂亮的方式来写这个?