我正在使用URL类从中读取InputStream.有什么方法可以使用RestTemplate吗?
InputStream input = new URL(url).openStream();
JsonReader reader = new JsonReader(new InputStreamReader(input, StandardCharsets.UTF_8.displayName()));
Run Code Online (Sandbox Code Playgroud)
我如何InputStream 使用RestTemplate而不是使用URL?
我试图通过查看数据的时间戳来查看我的数据是否是120秒旧,所以我有以下代码:
uint64_t now = duration_cast<milliseconds>(steady_clock::now().time_since_epoch()).count();
bool is_old = (120 * 1000 < (now - data_holder->getTimestamp()));
Run Code Online (Sandbox Code Playgroud)
在上面的代码中data_holder->getTimestamp()是uint64_t,它返回以毫秒为单位的时间戳.
现在,当我打印出now变量值时,我看到了这一点10011360,当我打印出data_holder->getTimestamp()值时,1437520382241现在的差异和数据持有者时间戳应该是负的吗?为什么它会像下面的日志中显示的那样积极?
2015-07-21 16:13:02,530 WARN 0x7f35312d1700 data_check - now value: 10011360 , data holder timestamp: 1437520382241 , difference: 18446742636199180735
Run Code Online (Sandbox Code Playgroud)
我上面的代码是否正确?从上面的数据持有者时间戳,它看起来不是120秒的旧数据,所以我觉得我的代码有问题吗?因为如果我将数据持有者时间戳转换为实际时间(使用纪元转换器),然后将其与日志时间进行比较,如上所示,它几乎相同.
我正在使用steady_clock如上所示.我需要在system_clock这里使用吗?在外行人的条款中,steady_clockvs 之间有什么区别system_clock.我在Ubuntu 14.04框上运行此代码.
我们有一个StreamBuffer课程,我们没有实施std::fixed操作,我试图阻止数字出现在科学记数法中.用我的下面的代码,一些数字以科学记数显示.我们希望避免进行任何分配,这就是我们StreamBuffer因为性能原因而实现类的原因.
以下是代码:
T value = 0;
template<typename U> void process(U& buf, DataOption holder) const {
if (holder == DataOption::TYPES) {
switch (type_) {
case teck::PROC_FLOAT:
buf << "{\"float\":" << value << "}";
break;
case teck::PROC_DOUBLE:
buf << "{\"double\":" << value << "}";
break;
default:
buf << "{\"" << type_ << "\":" << value << "}";
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是它被调用的方式:
void HolderProcess::dump(std::ostream& os, DataOption holder) const
{
process<std::ostream>(os, holder);
}
void HolderProcess::dump(StreamBuffer& buffer, DataOption holder) …Run Code Online (Sandbox Code Playgroud) 我有一个正在使用的客户库和传入DataRequest对象拥有userid,timeout并且在它的一些其他领域.现在我使用这个DataRequest对象创建一个URL,然后我使用了一个HTTP调用RestTemplate,我的服务返回一个JSON响应,我用它来创建一个DataResponse对象并将这个DataResponse对象返回给它们.
以下是DataClient客户通过将DataRequest对象传递给我的类.DataRequest如果在getSyncData方法中花费太多时间,我正在使用客户传递的超时值来超时请求.
public class DataClient implements Client {
private final RestTemplate restTemplate = new RestTemplate();
private final ExecutorService service = Executors.newFixedThreadPool(10);
// this constructor will be called only once through my factory
// so initializing here
public DataClient() {
try {
restTemplate.setRequestFactory(clientHttpRequestFactory());
} catch (Exception ex) {
// log exception
}
}
@Override
public DataResponse getSyncData(DataRequest key) { …Run Code Online (Sandbox Code Playgroud) java spring multithreading resttemplate apache-httpclient-4.x
我有一个下面的方法,我想在以下条件下执行:
already executed或任何有用的东西返回.以下是我的方法:
public void initialize() {
List<Metadata> metadata = getMetadata(true);
List<Process> process = getProcess();
if (!metadata.isEmpty() && !process.isEmpty()) {
Manager.setAllMetadata(metadata, process);
}
startBackgroundThread();
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?我正在使用Java 7.
我正在使用Quartz Scheduler来运行我的工作.我想每三十秒钟完成一次工作.我的cron表达方式是什么?
每一分钟,我使用下面的cron表达式:
<cron-expression>0 0/1 * 1/1 * ? *</cron-expression>
Run Code Online (Sandbox Code Playgroud)
每30秒会是什么?
我想取出并从列表中删除第一个元素.我可以看到,我有两个选择:
第一种方法:
LinkedList<String> servers = new LinkedList<String>();
....
String firstServerName = servers.removeFirst();
Run Code Online (Sandbox Code Playgroud)
第二种方法
ArrayList<String> servers = new ArrayList<String>();
....
String firstServerName = servers.remove(0);
Run Code Online (Sandbox Code Playgroud)
我的列表中有很多元素.
什么是最有效的方法.
我正在尝试一个简单的程序来打印时间戳值,steady_clock如下所示:
#include <iostream>
#include <chrono>
using namespace std;
int main ()
{
cout << "Hello World! ";
uint64_t now = duration_cast<milliseconds>(steady_clock::now().time_since_epoch()).count();
cout<<"Value: " << now << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但每当我这样编译时g++ -o abc abc.cpp,我总是会收到一个错误:
In file included from /usr/include/c++/4.6/chrono:35:0,
from abc.cpp:2:
/usr/include/c++/4.6/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
abc.cpp: In …Run Code Online (Sandbox Code Playgroud) 我有一堆键和值,我想通过将它们打包到一个字节数组中发送到我们的消息队列.我将创建所有键和值的一个字节数组,该数组应始终小于50K,然后发送到我们的消息队列.
包类:
public final class Packet implements Closeable {
private static final int MAX_SIZE = 50000;
private static final int HEADER_SIZE = 36;
private final byte dataCenter;
private final byte recordVersion;
private final long address;
private final long addressFrom;
private final long addressOrigin;
private final byte recordsPartition;
private final byte replicated;
private final ByteBuffer itemBuffer = ByteBuffer.allocate(MAX_SIZE);
private int pendingItems = 0;
public Packet(final RecordPartition recordPartition) {
this.recordsPartition = (byte) recordPartition.getPartition();
this.dataCenter = Utils.LOCATION.get().datacenter();
this.recordVersion = 1;
this.replicated = …Run Code Online (Sandbox Code Playgroud) java oop design-patterns bytebuffer single-responsibility-principle
我的app服务器代码中有一行代码,它使用steady_clock如下所示的时间戳值:
uint64_t now = duration_cast<milliseconds>(steady_clock::now().time_since_epoch()).count();
Run Code Online (Sandbox Code Playgroud)
现在我们有两个正在运行的Ubuntu 12 (gcc 4.6.3 compiler)systemA 机器和正在运行的machineB Ubuntu 14 (gcc 4.8.2 compiler).
现在我们使用另一个 make编译我们的app服务器代码Ubuntu 12 VM (which has 4.7.3 compiler),然后将生成的tar文件复制到machineA并启动我们的app服务器.在开始之后,上面的代码行在machineA中打印出如下值:
1439944652967
Run Code Online (Sandbox Code Playgroud)
现在我们还使用另一个 make编译相同的应用服务器代码Ubuntu 14 VM (which has 4.8.2 compiler),然后将生成的tar文件复制到machineB并启动我们的app服务器.在开始之后,上面的代码行在machineB中打印出这样的值:
10011360
Run Code Online (Sandbox Code Playgroud)
你看到差异吧?我很困惑为什么这是差异,我无法理解这一点?所有代码和一切都是一样的.有没有人对此有任何解释,我该如何解决?
如果需要,我可以尝试添加一些调试代码,看看弄清楚这个问题有什么不对.
java ×6
c++ ×4
c++-chrono ×2
c++11 ×2
resttemplate ×2
arraylist ×1
bytebuffer ×1
collections ×1
concurrency ×1
g++ ×1
gcc ×1
inputstream ×1
linked-list ×1
list ×1
oop ×1
single-responsibility-principle ×1
spring ×1
timestamp ×1
ubuntu ×1