我想知道旋转JavaScript数组的最有效方法是什么.
我想出了这个解决方案,其中正向n
旋转数组向右旋转,负向左旋转n
(-length < n < length
):
Array.prototype.rotateRight = function( n ) {
this.unshift( this.splice( n, this.length ) )
}
Run Code Online (Sandbox Code Playgroud)
然后可以这样使用:
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
months.rotate( new Date().getMonth() )
Run Code Online (Sandbox Code Playgroud)
我上面的原始版本有一个缺陷,正如Christoph在下面的评论中指出的那样,正确的版本是(额外的返回允许链接):
Array.prototype.rotateRight = function( n ) {
this.unshift.apply( this, this.splice( n, this.length ) )
return this;
}
Run Code Online (Sandbox Code Playgroud)
是否有更紧凑和/或更快的解决方案,可能在JavaScript框架的上下文中?(以下提出的版本都没有更紧凑或更快)
是否有任何JavaScript框架,内置数组旋转?(还没有人回答)
在阅读了几篇文章后,我开始理解DAO和存储库之间的区别,但我发现自己在试图理解存储库和服务之间的区别时遇到了麻烦.
对于短期而言,在OO范例中:
DAO:包含CRUD operations
一个实体类的基本类的类.它具有获取或检索底层持久存储系统的必要代码.一般而言,除了retrieve
使用标识符类型有效的方法之外,方法接收对象实体作为参数.
存储库:在更高级别的抽象中......通常我读过的是一种放置代码来处理聚合对象(具有子对象的对象)的操作的地方.它使用DAO
s从数据库中检索对象,最后它以域"业务"语言公开接口.(但同样,我认为使用ID的数据类型是非常有效的).示例:一个非常简单的addSomething
地方something
是父实例的子对象,其实例btw由存储库作为整体进行管理.
服务:同样,它处于更高的抽象层次.从我不起眼的角度来看,它们是连接两个不共享父子关系的类的好地方,但与存储库一样(在抽象术语中).示例:transferCash
两者之间的方法bank accounts
.
所以,这是我的读物,但我在这里问上述想法是对还是不对.或者我应该如何思考.或者让我真正了解所有这些概念的不同之处.
一些来源:
我有一个简单的模型Question
和Choice
对象.
使用Hibernate有两种方法可以实现
实施一:业主方是选择
Question.java
@OneToMany (mappedBy="question")
private Set choices = new HashSet();
Run Code Online (Sandbox Code Playgroud)
Choice.java
@ManyToOne
@JoinColumn (name="QUESTION_ID")
private Question question;
Run Code Online (Sandbox Code Playgroud)
实施二:业主方是问题
Question.java
@OneToMany
@JoinColumn (name = "QUESTION_ID")
private Set choices = new HashSet();
Run Code Online (Sandbox Code Playgroud)
Choice.java
@ManyToOne
@JoinColumn (name="QUESTION_ID", updatable = false, insertable = false)
private Question question;
Run Code Online (Sandbox Code Playgroud)
这两个实现有什么区别?
我会问一个非常简短的问题,并希望有人可以帮助我找到解决方案.它涉及java中的泛型方法,有两种泛型类型(一种用于返回类型,另一种用于正式的参数)以及如何实现它.我想我错过了图片中的一些东西让它工作.
问题是......
这是有效的:
public enum Getter
{
BillItemsSize {
@Override
public Integer get (Object entity) {
DesiredClass ref = (DesiredClass ) entity; // "Old time" cast
// do things...
}
};
public abstract <T,K> T get (K entity);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用:
public enum Getter
{
BillItemsSize {
@Override
public Integer get (DesiredClass entity) { // no cast at all
// do things
}
};
public abstract <T,K> T get (K entity);
}
Run Code Online (Sandbox Code Playgroud)
java编译器叫我这样:
<anonymous datasource.db.Getter$1> is not …
Run Code Online (Sandbox Code Playgroud) 使用 async/await 函数时调用堆栈的行为如何?
function resolveAfter2Seconds() { // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
const asyncFuntion=async()=>{
const result = await resolveAfter2Seconds();
console.info("asyncFuntion finish, result is: ", result);
}
const first = async()=>{
await asyncFuntion();
console.log('first completed');
debugger;
}
const second = ()=>{
console.log('second completed');
debugger;
}
function main(){
first();
second();
}
main();
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当在 second() 中遇到第一个断点时,我可以看到调用堆栈包含 main() 和 second()。在 first() 的第二个断点期间,调用堆栈包含 main() 和 first()。
在第一个断点期间 first() 发生了什么。它被推到哪里去了?假设 asyncFunction() 需要一些时间才能完成。
有人请帮忙。
问题是关于命名变量或标识符的正确方法,这些变量或标识符对两个或多个“事物”的集合进行分组。让我用例子和问题进一步解释一下......
我不是以英语为母语的人。
假设“db1”中有一个名为“t1”的表,“db2”中有一个名为“t2”的表,我需要在两个表上插入一条记录,否则会失败。
连接到 db1,我想我应该输入以下内容:
BEGIN;
PREPARE TRANSACTION 'pepe'; -- this says the manual that makes your transaction gets stored on disk, so what is the purpose if I can't use it from another database?)
insert into t1 (field) values ('a_value');
COMMIT PREPARED 'pepe'
Run Code Online (Sandbox Code Playgroud)
连接到db2,我猜:
BEGIN;
PREPARE TRANSACTION 'pepe'; -- this fails (the name of the transaction, what is the meaning, what is use for?)
-- It complains about this "ERROR: transaction identifier "pepe" is already in use"
insert into t2 (field) …
Run Code Online (Sandbox Code Playgroud) 我想从社区中获得建议,以便做出最佳实践.请耐心等待,举例如下:
假设您使用半开间隔,即在启动时知道的内容.
例如
HalfOpenInterval
限制为一天.示例:您说"从下午1点开始"(直到当天结束).我们称之为ClockIntervalHalfOpenInterval
限制宇宙的存在.例如:你说"从1810年7月9日起我们宣布独立"(直到宇宙结束......假设).我们称之为Period对于这两种类型的实体:你与他们的集合,所以你通常slices
的时钟和时间在你的代码.
所以,现在问题来了:你必须找到一个给定的时间间隔封闭(func FindEnclosingHalfOpenInterval
)用于这两个时钟和时间,于是你开始写代码...
好吧,我进入这个问题......我应该如何组织代码,以便只编写一次常见的函数.(func FindEnclosingHalfOpenInterval
).
所以我进入这段代码:https://play.golang.org/p/Cy7fFaFzYJR
但我一直想知道是否有更好的方法来定义切片集合的常见行为.
请读者你应该意识到我需要为每种类型的切片做一个"逐个元素"的转换(我为每种类型的具体的HalfOpenInterval定义了一个切片类型).所以我想知道是否有任何方法可以让我引入新的类型,HalfOpenInterval
而不必做一些调整,"自动"得到使用的能力func FindEnclosingHalfOpenInterval
?也许我的富有基于java的头脑并不是在简单直接前进的世界中面对问题的正确方法.对于任何建议,我都听到了.
为什么cast
在Class<?>
Class 上使用该方法会在编译时产生未经检查的警告?
如果你偷看了cast方法,你会发现这个代码:
public T cast(Object obj)
{
if (obj != null && !isInstance(obj))
throw new ClassCastException(cannotCastMsg(obj));
return (T) obj; // you can see there is a generic cast performed here
}
Run Code Online (Sandbox Code Playgroud)
如果我做一个通用演员,编译器抱怨说有unchecked warning
.
你可以找到的我如何到达书有效的Java 2版本中这个问题,第166页(的PDF)的例子.
作者写了这段代码
public <T> T getFavorite(Class<T> type)
{
return type.cast(favorites.get(type));
}
Run Code Online (Sandbox Code Playgroud)
VS
public <T> T getFavorite(Class<T> type)
{
return (T) (favorites.get(type));
}
Run Code Online (Sandbox Code Playgroud)
我只是没有得到差异,为什么编译器抱怨未经检查的警告.最后,两段代码都做了一个明确的演员(T) object
,不是吗?
这是我第一次使用Java扫描文件.我正在尝试从一个文本文件中读取整数列表,对它们进行操作,然后将它们读取到另一个文件中.初始文件如下所示:
1234
9876
2345
Run Code Online (Sandbox Code Playgroud)
我正在使用while循环并使用hasNextInt进行读取(在运行程序并检查初始文本文件之后,我确定值已经存在),但是我将零输出到新文本文件,所以我假设hasNextInt ()返回false.可以肯定的是,我只是跳过扫描并使用for循环直接在每个ArrayList元素上操作,输出完全写入新文件.这是我的代码:
try {
File inFile = new File("input.txt");
File outFile = new File("output.txt");
FileWriter inWriter = new FileWriter(inFile);
FileWriter outWriter = new FileWriter(outFile);
Scanner inReader = new Scanner(inFile);
numberArray.add(1234); //Adding numbers to an array that was previously initialized
numberArray.add(9876);
numberArray.add(2345);
System.out.println("The raw numbers are:");
for (int n : numberArray) {
inWriter.write(n + "\r\n");
System.out.println(n);
}
System.out.println("\nThe new numbers are:");
while (inReader.hasNextInt()) {
int newNumber = inReader.nextInt();
int checkDigit = (newNumber / 7);
int finalNumber = …
Run Code Online (Sandbox Code Playgroud) 例如,像这样的字符串,位于HTML元素中:
- One Tree
- one tree
- One tree
- one Tree
Run Code Online (Sandbox Code Playgroud)
应用样式后,它们应呈现为:
One tree
Run Code Online (Sandbox Code Playgroud)
PD:只使用CSS,没有javascript,也没有额外的处理.
java ×3
generics ×2
javascript ×2
arrays ×1
casting ×1
css ×1
dao ×1
ecmascript-6 ×1
event-loop ×1
go ×1
hibernate ×1
naming ×1
non-english ×1
parameters ×1
plural ×1
postgresql ×1
promise ×1
repository ×1
rotation ×1
slice ×1
string ×1