我正在研究一些遗留代码/数据库,需要在数据库中添加一个字段,该字段将记录与该(外部)id相关的序列号.
示例表数据(当前):
ID ACCOUNT some_other_stuff
1 1 ...
2 1 ...
3 1 ...
4 2 ...
5 2 ...
6 1 ...
Run Code Online (Sandbox Code Playgroud)
我需要添加一个sequenceid列,它为每个帐户单独递增,实现:
ID ACCOUNT SEQ some_other_stuff
1 1 1 ...
2 1 2 ...
3 1 3 ...
4 2 1 ...
5 2 2 ...
6 1 4 ...
Run Code Online (Sandbox Code Playgroud)
请注意,序列与帐户有关.
有没有办法在SQL中实现这一点,或者我是否可以使用PHP脚本为我完成这项工作?
TIA,Kev
如何生成包含所有可能排列的最短序列?
示例:对于长度2,答案为121,因为此列表包含12和21,这些都是可能的排列.
对于长度3,答案是123121321,因为该列表包含所有可能的排列:123,231,312,121(无效),213,132,321.
每个数字(在给定的排列中)可能只出现一次.
自从我开始编程以来,这一直是我一直很好奇的事情.但对我来说似乎太复杂了甚至尝试.
我很乐意看到解决方案.
1, 2, 3, 4, 5 // returns 6 (n + 1)
10, 20, 30, 40, 50 //returns 60 (n + 10)
10, 17, 31, 59, 115 //returns 227 ((n * 2) - 3)
Run Code Online (Sandbox Code Playgroud) 我试图返回一个带有until循环的可变序列,但是我有一个不可变的seq返回(0到nbGenomes):
def generateRandomGenome(nbGenomes:Int): IndexedSeq[GenomeDouble]={
return ((0 until nbGenomes toSeq).map{e => generateRandomGenome})
}
Run Code Online (Sandbox Code Playgroud)
返回编译错误:
found : scala.collection.immutable.IndexedSeq[org.openmole.tools.mgo.mappedgenome.genomedouble.GenomeDouble]
required: scala.collection.mutable.IndexedSeq[org.openmole.tools.mgo.mappedgenome.genomedouble.GenomeDouble]
return ((0 until nbGenomes toSeq).map{e => generateRandomGenome})
Run Code Online (Sandbox Code Playgroud)
我如何强制until循环返回一个可变的seq?谢谢scala社区!
当我声明一个列表1,2,3,4并且我对它做了一些事情,即使只是打印我也会得到相同的序列1,2,3,4.
但是当我对字典做任何事情的时候,它们总是会改变数字序列,就好像它是以一种我无法理解的扭曲方式排序.
test1 = [4,1,2,3,6,5]
print test1
test2 = {"c":3,"a":1,"b":2,"d":4}
print test2
[4, 1, 2, 3, 6, 5]
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)
世界上的'a'如何成为第一个元素和'c',即使按字母顺序对字典进行排序,它应该是1,2,3,4或a,b,c,d不是1,3,2, 4.wT?F @!$!@ $#@!
那么我如何打印,从字典中获取值而不改变元素的位置.
所以,在通过"Scala for the Impatient"的过程中,我发现自己在想:你能不使用Scala for循环吗?
例如,本书中有一个练习,要求您构建一个无法递增超过Integer.MAX_VALUE的计数器对象.为了测试我的解决方案,我编写了以下代码:
var c = new Counter
for( i <- 0 to Integer.MAX_VALUE ) c.increment()
Run Code Online (Sandbox Code Playgroud)
这会引发错误:序列不能包含多个Int.MaxValue元素.在我看来,这意味着Scala首先分配和填充序列对象,值为0到Integer.MaxValue,然后在该序列对象上执行foreach循环.
我意识到我可以这样做:
var c = new Counter
while(c.value < Integer.MAX_VALUE ) c.increment()
Run Code Online (Sandbox Code Playgroud)
但有没有办法用for语句做一个传统的C风格for循环?
seq在以下情况下,R的功能的"聪明"不止一次严重打击了我lower == upper - 1:
> 1:0
[1] 1 0
> seq(1, 0)
[1] 1 0
> seq(1, 0, 1)
Error in seq.default(1, 0, 1) : wrong sign in 'by' argument
Run Code Online (Sandbox Code Playgroud)
我不是要问这种奇怪行为的原因 - 我认为它现在只是我们必须忍受的遗产.相反,我想知道seq在这种情况下是否有任何包实现了一个返回空序列的运算符,如下所示:
safe.seq.int <- function(from, to, by=1) {
if (from > to) integer(0) else seq.int(from, to, by)
}
> safe.seq.int(1, 0)
integer(0)
Run Code Online (Sandbox Code Playgroud) 我想无限重复一个T元素Sequence<T>.使用kotlin.collections.asSequence无法完成此操作.例如:
val intArray = intArrayOf(1, 2, 3)
val finiteIntSequence = intArray.asSequence()
val many = 10
finiteIntSequence.take(many).forEach(::print)
// 123
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.我期望某种kotlin.collections.repeat功能存在,但没有,所以我自己实现了一个(例如为此IntArray):
var i = 0
val infiniteIntSequence = generateSequence { intArray[i++ % intArray.size] }
infiniteIntSequence.take(many).forEach(::print)
// 1231231231
Run Code Online (Sandbox Code Playgroud)
这是非常必要的,所以我觉得必须有一个更实用,更简洁的方法来做到这一点.如果它存在,Kotlin的标准方式是重复集合/数组a(n)(in)有限次数是什么?
我使用下面的代码为id字段生成唯一ID .它工作正常,直到上周.我使用Hibernate接口删除了一些实体,然后当我尝试插入新记录时,它开始给出一个唯一的约束违例异常.
可能是什么导致了这个问题?
@SequenceGenerator(name = "ParamGenerator", sequenceName = "ParamSequence", allocationSize = 1)
public class Param extends IdNameEntity<Long> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ParamGenerator")
private Long id;
Run Code Online (Sandbox Code Playgroud)
这是删除方法:
@Override
public void delete(final T t) {
getCurrentSession().delete(t);
}
Run Code Online (Sandbox Code Playgroud)
这是错误日志:
2018-04-25 16:34:41 [http-nio-8081-exec-3] INFO o.h.e.j.b.internal.AbstractBatchImpl - HHH000010: On release of batch it still contained JDBC statements
2018-04-25 16:34:41 [http-nio-8081-exec-3] ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [could not execute statement]
2018-04-25 …Run Code Online (Sandbox Code Playgroud) 假设我有这些数据:
x = c(14,14, 6, 7 ,14 , 0 ,0 ,0 , 0, 0, 0 , 0 , 0, 0 , 0 , 0 , 0, 9 ,1 , 3 ,8 ,9 ,15, 9 , 8, 13, 8, 4 , 6 , 7 ,10 ,13, 3,
0 , 0 , 0 , 0 , 0 , 0, 0, 0 , 0 , 0 , 0, 0, 0, 0, 0 ,0, 0 , 0 , 0, 0, 0, 0, 0 , …Run Code Online (Sandbox Code Playgroud) sequence ×10
algorithm ×2
r ×2
scala ×2
collections ×1
dictionary ×1
difference ×1
for-loop ×1
hibernate ×1
immutability ×1
java ×1
jpa ×1
kotlin ×1
mutable ×1
mysql ×1
numbers ×1
oracle ×1
php ×1
python ×1
vector ×1
while-loop ×1