random.org

时间:2024-05-28 03:04:36编辑:优化君

java求解,这个代码怎么解决?为什么和要求不一样,哪里出错了,题目如图,代码如下

你好!修改了下代码,供参考:public static String[] split(String s,String regex){String[] strArr = null;int index = 0;String[] tmpArr = s.split(regex);int len = tmpArr.length;//设置新数组的长度int newLen = len+(len-1);strArr = new String[newLen];for(int i=0;i<newLen;i=i+2) {strArr[i] = tmpArr[i/2];//设置当前字符的位置,用于获取匹配的分隔字符index += strArr[i].length();if(newLen!=i+1) {//获取原字符串中的分隔符 赋值给数组中的元素strArr[i+1] = s.substring(index, (index+1));index+=1;}}return strArr;}希望对你有帮助!

怎么用excel在一列中随机抽取

选中要固定成数值的单元格或单元格区域-----右键-----复制----再右键-----选择性粘贴-----数值-----确定
这样就把公式转成固定的值了
保留那个你要改动数值的单元格公式,在表格中按下f9键就会自动刷新数字或你直接写入你要的数字
公式改成固定的值后就不会再变动.
没有办法又想保留值,又想保留随机函数公式
如果不这样操作随机函数肯定是会刷新的


一道Java题目,如下,为什么我的代码错误了?

import java.util.Arrays;import java.util.Scanner;public class ff { public static void main(String[] args) { Scanner cin = new Scanner(System. in ); int n, i = 2; n = cin.nextInt(); cin.close(); if (n == 1) { System.out.print(1); } else if (n >= 2 && n = 2 && i =1 且 N<40"); } }}


python根据时间间隔的循环问题

import time
def multirun(self):
i = 1
while len(self.pcblist) != 0:
if i == 10 :
time.sleep(10)
self.runPCB()
i = 1
else:
self.runPCB()
time.sleep(1)
i += 1

亲测可用


intellij idea里面怎么进行单元测试的

本文将展示如何使用IntelliJ IDEA开发单元测试和分析覆盖率。1 创建新的项目创建名为UnitTestingApp的Java项目。2 创建一个类进行测试创建一个新的类用于测试。添加方法sayHello返回Hello字符串。3 创建测试源根目录为了不将测试添加到源中,用户可以创建根目录。在这种情况下测试将从产品代码中分离出来。创建一个测试源根目录。


打开eclipse出现an error has occurred see the log file

1、先在命令行下进入Eclipse目录,执行 eclpise -clean,如果仍报错,尝试2.2、在新安装了软件或者修改了环境变量容易出现这个问题,查看之前配置好的环境变量jdk路径是否出错,若无,将jdk bin 路径提前至 path的最前,然后打开Eclipse看能否正常进入。3、如果执行前两条仍不奏效,你或许遇到了跟我一样的问题:你的jdk由于种种原因损坏了(之前Eclipse可用的话,说明版本没问题,一直无法打开Eclipse的童鞋也可能是jdk的版本问题),重进安装jdk即可解决该问题。①删除/.metadata/.plugins/org.eclipse.core.resources/.snap(若执行了这个就解决的话,不需要第二个方法) ②删除/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi

eclipse出错:an error has occurred see the log file

如果用户打开Eclipse的时候出现来了一个问题,导致了Eclipse打不开
错误的提示是:

An error has occurred.See the log file
解决的办法如下:
1、删除eclipse的临时文件: eclipse/configuration 目录下的 org.eclipse.osgi org.eclipse.update 两个子目录
2、重新启动 eclipse
如果还是不行
3、将workspace中 项目做一下备份,删除workspace目录和上面两个子目录
再次启动 eclipse,再导入备份的项目即可。


如何在数据库事务提交成功后进行异步操作

实现方案
使用TransactionSynchronizationManager在事务提交之后操作
public void insert(TechBook techBook){
bookMapper.insert(techBook);
// send after tx commit but is async
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
System.out.println("send email after transaction commit...");
}
}
);
ThreadLocalRandom random = ThreadLocalRandom.current();
if(random.nextInt() % 2 ==0){
throw new RuntimeException("test email transaction");
}
System.out.println("service end");
}

该方法就可以实现在事务提交之后进行操作
操作异步化
使用mq或线程池来进行异步,比如使用线程池:
private final ExecutorService executorService = Executors.newFixedThreadPool(5);
public void insert(TechBook techBook){
bookMapper.insert(techBook);

// send after tx commit but is async
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("send email after transaction commit...");
try {
Thread.sleep(10*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("complete send email after transaction commit...");
}
});
}
}
);

// async work but tx not work, execute even when tx is rollback
// asyncService.executeAfterTxComplete();

ThreadLocalRandom random = ThreadLocalRandom.current();
if(random.nextInt() % 2 ==0){
throw new RuntimeException("test email transaction");
}
System.out.println("service end");
}

封装以上两步
对于第二步来说,如果这类方法比较多的话,则写起来重复性太多,因而,抽象出来如下:
这里改造了 azagorneanu 的代码:
public interface AfterCommitExecutor extends Executor {
}

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@Component
public class AfterCommitExecutorImpl extends TransactionSynchronizationAdapter implements AfterCommitExecutor {
private static final Logger LOGGER = LoggerFactory.getLogger(AfterCommitExecutorImpl.class);
private static final ThreadLocal> RUNNABLES = new ThreadLocal>();
private ExecutorService threadPool = Executors.newFixedThreadPool(5);

@Override
public void execute(Runnable runnable) {
LOGGER.info("Submitting new runnable {} to run after commit", runnable);
if (!TransactionSynchronizationManager.isSynchronizationActive()) {
LOGGER.info("Transaction synchronization is NOT ACTIVE. Executing right now runnable {}", runnable);
runnable.run();
return;
}
List threadRunnables = RUNNABLES.get();
if (threadRunnables == null) {
threadRunnables = new ArrayList();
RUNNABLES.set(threadRunnables);
TransactionSynchronizationManager.registerSynchronization(this);
}
threadRunnables.add(runnable);
}

@Override
public void afterCommit() {
List threadRunnables = RUNNABLES.get();
LOGGER.info("Transaction successfully committed, executing {} runnables", threadRunnables.size());
for (int i = 0; i < threadRunnables.size(); i++) {
Runnable runnable = threadRunnables.get(i);
LOGGER.info("Executing runnable {}", runnable);
try {
threadPool.execute(runnable);
} catch (RuntimeException e) {
LOGGER.error("Failed to execute runnable " + runnable, e);
}
}
}

@Override
public void afterCompletion(int status) {
LOGGER.info("Transaction completed with status {}", status == STATUS_COMMITTED ? "COMMITTED" : "ROLLED_BACK");
RUNNABLES.remove();
}

}
public void insert(TechBook techBook){
bookMapper.insert(techBook);

// send after tx commit but is async
// TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
// @Override
// public void afterCommit() {
// executorService.submit(new Runnable() {
// @Override
// public void run() {
// System.out.println("send email after transaction commit...");
// try {
// Thread.sleep(10*1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// System.out.println("complete send email after transaction commit...");
// }
// });
// }
// }
// );

//send after tx commit and is async
afterCommitExecutor.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("send email after transactioin commit");
}
});

// async work but tx not work, execute even when tx is rollback
// asyncService.executeAfterTxComplete();

ThreadLocalRandom random = ThreadLocalRandom.current();
if(random.nextInt() % 2 ==0){
throw new RuntimeException("test email transaction");
}
System.out.println("service end");
}

关于Spring的Async
spring为了方便应用使用线程池进行异步化,默认提供了@Async注解,可以整个app使用该线程池,而且只要一个@Async注解在方法上面即可,省去重复的submit操作。关于async要注意的几点:
1、async的配置





这个必须配置在root context里头,而且web context不能扫描controller层外的注解,否则会覆盖掉。



2、async的调用问题
async方法的调用,不能由同类方法内部调用,否则拦截不生效,这是spring默认的拦截问题,必须在其他类里头调用另一个类中带有async的注解方法,才能起到异步效果。


oracle数据库中什么是已经提交的事务?

已经提交的事务即在进行update或insert操作后,进行了commit的操作。1、如,有以下两个语句:update test set id=3 where id=2;commit;insert into test values (4,'王五');commit;2、如果进行了update及insert操作后不进行提交的话,那么修改或插入的数据只在当前session有效,并不会写入数据库,只有当commit(提交)后,才会生效。

Jedis干什么用的

Jedis使用总结前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。本文做个总结,主要分享如下内容:【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】好了,一个一个来。一、 Pipeline官方的说明是:starts a pipeline,which is a very efficient way to send lots of command and read all the responses when you finish sending them。简单点说pipeline适用于批处理。当有大量的操作需要一次性执行的时候,可以用管道。示例:Jedis jedis = new Jedis(String, int);Pipeline p = jedis.pipelined();p.set(key,value);//每个操作都发送请求给redis-serverp.get(key,value);p.sync();//这段代码获取所有的response这里我进行了20w次连续操作(10w读,10w写),不用pipeline耗时:187242ms,用pipeline耗时:1188ms,可见使用管道后的性能上了一个台阶。看了代码了解到,管道通过一次性写入请求,然后一次性读取响应。也就是说jedis是:request response,request response,...;pipeline则是:request request... response response的方式。这样无需每次请求都等待server端的响应。二、 跨jvm的id生成器


java怎么生成6位不重复

描述不是很清晰,给你提供几段代码你看看咯
1、System.out.println((int)((Math.random()*9+1)*100000)); 这个是6位的随机数字
2、String chars = "abcdefghijklmnopqrstuvwxyz";
System.out.println(chars.charAt((int)(Math.random() * 26)));
这个是随机的26位字母字符串
如果有其它的规则你可以参考一下这些代码


上一篇:乐天拟最终同意向萨德让地

下一篇:天降之物3