给定数组a = [1,4,5,9,2].我需要找到/打印两个值的组合,其中sum = 6.
我的代码如下:(它是O(n ^ 2)并且效率不高).更好的解决方案 -
for(int out=0;out<a.length-1;out++)
{
for(int in=out+1;in<N;in++)
{
if(a[out]+a[in]==6)
{
System.out.println("The 2 numbers are: "+ a[out] +", "+ a[in]);
}
}
}
Run Code Online (Sandbox Code Playgroud) 使用JPA/Eclipse TopLink.
我正在更新一个表(使用createNativeQuery),如下所示:
Query query = em.createNativeQuery("UPDATE Products SET productName='" + p.getProductName() + "',productVendor='" + p.getProductVendor() + "',productDescription='" + p.getProductDescription() + "',quantityInStock=" + p.getQuantityInStock() + ",buyPrice =" + p.getBuyPrice() + ",msrp=" + p.getMsrp() + " WHERE productCode='" + p.getProductCode() + "'");
query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
更新反映在DB(MySQL)中
用于检索(使用createQuery),如下所示:
Query query1 = em.createQuery("SELECT p from Products p where p.productCode='"+searchTerm+"'");
return query1.getResultList();
Run Code Online (Sandbox Code Playgroud)
但是,返回的ResultList始终是更新前的数据.但是当我使用createNativeQuery而不是createQuery时,会返回最新的更新数据.createQuery方法可能出现的错误是什么?
在Go中,我很困惑为什么可以获得像int这样的变量的内存地址而不是结构的内存地址.举个例子:
package main
import "fmt"
func main() {
stud1 := stud{"name1", "school1"}
a:=10
fmt.Println("&a is:", &a)
fmt.Println("&stud1 is:",&stud1)
}
Run Code Online (Sandbox Code Playgroud)
输出是:
&a is: 0x20818a220
&stud1 is: &{name1 school1}
Run Code Online (Sandbox Code Playgroud)
为什么&给出了内存地址,但是&stud1没有给出确切的内存位置.我没有任何使用内存地址的意图,只是对不同的行为感到好奇.
尝试运行以下代码(生产者和使用者)以了解golang中的goroutine和通道(从下面的代码片段中删除了包和导入):
var done = make(chan bool)
var msgs = make(chan int)
func produce() {
for i := 0; i < 10; i++ {
msgs <- i
}
fmt.Println("Before closing channel")
close(msgs)
fmt.Println("Before passing true to done")
done <- true
}
func consume() {
for {
msg := <-msgs
time.Sleep(100 * time.Millisecond)
fmt.Println("Consumer: ", msg)
}
}
func main() {
go produce()
go consume()
<-done
fmt.Println("After calling DONE")
}
Run Code Online (Sandbox Code Playgroud)
源代码来自:http : //www.golangpatterns.info/concurrency/producer-consumer
下面是我运行代码时的输出
Consumer: 0
Consumer: 1
Consumer: 2
Consumer: …Run Code Online (Sandbox Code Playgroud) 我想确保使用正则表达式确保字符串格式为“ 999.999-A9-Won”,并且没有任何空格,制表符或换行符。
示例:87.98-A8-abcdef
到目前为止,我提出的代码是:
testString = "87.98-A1-help"
regCompiled = re.compile('^[0-9][0-9][.][0-9][0-9][-A][0-9][-]*');
checkMatch = re.match(regCompiled, testString);
if checkMatch:
print ("FOUND")
else:
print("Not Found")
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用。我不确定我缺少什么,这里的问题是我不检查空格,制表符和换行符,也不对十进制前后的整数进行硬编码。
在下面的代码片段中,它是否会导致死锁?
public class TestLocks {
ReadWriteLock lock = new ReentrantReadWriteLock();
public void add() {
lock.readLock().lock();
//code.....
lock.writeLock().lock();
//code
lock.writeLock().unlock();
//code....
l.readLock().unlock();
}
Run Code Online (Sandbox Code Playgroud)
我上面所做的是使用ReentrantReadWriteLock,锁定'lock'进行读取,然后在其中再次尝试获取写入锁(在释放readLock之前).这可能永远不会在生产中完成,但很想知道上面的代码是否会导致死锁?
在下面的代码中,为什么主线程要等到子线程完成.
Driver.java
public class Driver {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(new ThreadRunner());
t.start();
}
}
Run Code Online (Sandbox Code Playgroud)
ThreadRunner.java
public class ThreadRunner implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Child thread" + i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
调用't.start()之后在Driver类中这个程序不应该退出吗?我没有使用join,但主线程仍在等待新旋转的'ThreadRunner'运行.是因为在java中主线程(由main方法启动)总是等待所有线程关闭?