我刚刚阅读了有关Branch-Prediction的内容,并想尝试使用Java 8 Streams.
然而,Streams的性能总是比传统的循环更差.
int totalSize = 32768;
int filterValue = 1280;
int[] array = new int[totalSize];
Random rnd = new Random(0);
int loopCount = 10000;
for (int i = 0; i < totalSize; i++) {
// array[i] = rnd.nextInt() % 2560; // Unsorted Data
array[i] = i; // Sorted Data
}
long start = System.nanoTime();
long sum = 0;
for (int j = 0; j < loopCount; j++) {
for (int c = 0; c < totalSize; …Run Code Online (Sandbox Code Playgroud) 如何将 JSON 解组为包含 2 个包含相同 JSON 标签名称 ( ) 的字段 (UserName和)的结构?Namename
package main
import (
"encoding/json"
"fmt"
)
type User struct {
UserName string `json:"name,omitempty"`
Name string `json:"name,omitempty"`
}
func main() {
data := []byte(`
{
"name":"kishore"
}
`)
user := &User{}
err := json.Unmarshal(data, &user)
if err != nil {
panic(err)
}
fmt.Printf("value of user : %+v\n", user)
}
Run Code Online (Sandbox Code Playgroud)
实际输出:
value of user : &{UserName: Name:}
预期输出:
value of user : &{UserName:kishore Name:kishore}
如何获取UserName …
我需要 Jersey 2.x 中的拦截器,它提供对请求、响应和与 Web 服务路径匹配的方法的引用。
类似于Spring 的HandlerInterceptor的东西。
要求:
Spring等效代码:
public class WebServiceInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try {
SkipWebServiceIntercept skipWebService = handler.getClass().getAnnotation(SkipWebServiceIntercept.class);
if (skipWebService != null) {
return Boolean.TRUE;
}
...
if(securityFails)
{
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
response.setCharacterEncoding("utf-8");
response.setContentType("application/json");
PrintWriter out = response.getWriter();
String json;
...
out.println(json);
return Boolean.FALSE;
}
else {
response.sendRedirect(redirectUrl);
}
}
else …Run Code Online (Sandbox Code Playgroud) 我正在阅读Java 8中引入的并行排序的概念.根据文档.
如果指定数组的长度小于最小粒度,则使用适当的Arrays.sort方法对其进行排序.
但是规范没有规定这个最低限度.
当我查找代码时,java.util.Arrays它被定义为
private static final int MIN_ARRAY_SORT_GRAN = 1 << 13;
Run Code Online (Sandbox Code Playgroud)
即,数组中的8192个值
根据这里提供的解释.我理解为什么值被硬编码为8192.
它的设计考虑了当前的CPU架构.默认情况下启用
该-XX:+UseCompressedOops选项,任何RAM少于32GB的系统都将使用32位(4字节)指针.现在,对于数据部分,L1 Cache大小为32KB,我们可以将32KB/4Bytes = 8KB的数据一次传递给CPU进行计算.这相当于一次处理8192个字节的数据.
因此,对于正在对字节数组进行排序的函数,这是parallelSort(byte[])有意义的.您可以将最小并行排序限制保持为8192个值(每个值=字节数组的1个字节).
但如果你考虑 public static void parallelSort(int[] a)
整数变量为4Bytes(32位).理想情况下,8192字节,我们可以同时在CPU缓存中存储8192/4 = 2048个数字. 因此,在这种情况下,最小粒度假设为2048.
为什么所有parallelSort函数都使用Java(包括byte [],int [],long []等),使用8192作为默认min.为了执行并行排序所需的值的数量?
它应该根据传递给parallelSort函数的类型而有所不同吗?
我们目前正在使用节俭来开发我们的微服务。当我最近遇到以下问题时。
假设下面是摘要对象的节约合同,并且有一个API可使用传递的摘要对象来获取和更新摘要。
版本-1.0
struct Summary {
1: required string summaryId,
2: required i32 summaryCost
}
Summary getSummary(1: string summaryId);
void updateSummary(1: Summary summary);
Run Code Online (Sandbox Code Playgroud)
现在,假设有5个服务正在使用此1.0摘要协议。
在下一发行版中,我们添加另一个对象,该对象称为summaryvalue列表。
所以新合同看起来像
版本-2.0
struct Summary {
1: required string summaryId,
2: required i32 summaryCost,
3: optional list<i32> summaryValues
}
Summary getSummary(1: string summaryId);
void updateSummary(1: Summary summary);
Run Code Online (Sandbox Code Playgroud)
summaryValuesaganist 的列表summaryId。null我们将删除为该“ summaryId”保存的现有值。现在的问题发生时正在使用其他服务较旧的节俭合同(版本1.0版)尝试致电getSummary和updateSummary。
旧客户通过调用updateSummary的意图是为设置另一个值summaryCost。但是,由于此客户端不包含对象,summaryValues因此它将带有summaryValues …
当 Debezium 作为 kafka 连接中的源运行时,如果目标 MySQL DB(Amazon RDS 实例)上一段时间内没有发生更新,那么一段时间后我会遇到以下错误。
[2018-04-25 21:30:14,526] INFO Step 0: Get all known binlogs from MySQL (io.debezium.connector.mysql.MySqlConnectorTask:310)
[2018-04-25 21:30:14,536] INFO Connector requires binlog file 'mysql-bin-changelog.002640', but MySQL only has mysql-bin-changelog.002663, mysql-bin-changelog.002664, mysql-bin-changelog.002665 (io.debezium.connector.mysql.MySqlConnectorTask:323)
[2018-04-25 21:30:14,536] INFO MySQL has the binlog file 'mysql-bin-changelog.002640' required by the connector (io.debezium.connector.mysql.MySqlConnectorTask:325)
[2018-04-25 21:30:14,536] INFO Stopping MySQL connector task (io.debezium.connector.mysql.MySqlConnectorTask:239)
[2018-04-25 21:30:14,536] INFO WorkerSourceTask{id=swiggy-connector-0} Committing offsets (org.apache.kafka.connect.runtime.WorkerSourceTask:328)
[2018-04-25 21:30:14,536] INFO WorkerSourceTask{id=swiggy-connector-0} flushing 0 outstanding messages for offset commit (org.apache.kafka.connect.runtime.WorkerSourceTask:345)
[2018-04-25 21:30:14,536] …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ProcessBuilder运行Shell脚本。该脚本可以运行,但是不能在Java代码之后运行。错误流不会输出消息。我正在centOS 6.9计算机上运行它。请在下面找到我的代码。
public static ArrayList<String> runCommand(ArrayList<String> command)throws IOException {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command(command);
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
ArrayList<String> commandOutput = new ArrayList<>();
String str;
while((str = reader.readLine()) != null) {
commandOutput.add(str);
}
StringBuilder errorBuilder = new StringBuilder();
while((str = errorReader.readLine()) != null) {
errorBuilder.append(str);
}
String errorMessage = errorBuilder.toString();
if(!errorMessage.equals("")) {
String message = LOG_TAG + ",[runCommand] error:" + errorMessage;
System.out.println(message);
}
reader.close();
errorReader.close();
process.destroy();
return …Run Code Online (Sandbox Code Playgroud) 在此片段中,'FirstText'写入时,将跳过第一行的其余部分.然后'SecText'写在第二行:
<pre>
<script>
function text(){
document.write("FirstText \n SecText");
}
text();
</script>
</pre>
Run Code Online (Sandbox Code Playgroud)
但是当我setInterval()在这个函数上使用时,单词会彼此相邻写入(不会跳过行).
有什么建议?
我想在 Guice 中将接口与 Impl 绑定时传递构造函数参数。
有几个解决方案,但我没有对这些接口/Impl 的代码访问权限。它们是由其他团队开发的,我已将它们包含在我的项目中。
目前我们正在使用 Spring DI,并且正在迁移到 Guice。所以我需要定义类似的东西
<bean name="clientWrapper" class="com.wrapper.client.ClientWrapper">
<constructor-arg index="0" value="${server.ip}" />
<constructor-arg index="1" value="${server.port}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
在吉斯。但传递那些构造函数参数。
bind(IClientWrapper.class).to(ClientWrapper.class);
Run Code Online (Sandbox Code Playgroud)
如何在不使用 Provider 的情况下实现这一目标?
我已将此处提供的数据加载到弹性搜索中。
现在我正在尝试查询帐户。
请求:POST - http://localhost:9200/bank/account/_search?pretty
{
"query": {
"bool": {
"should": [
{ "match": { "address": "lane" } },
{ "match_phrase": { "address": "mill avenue" } }
],
"must": [
{ "match": { "age": "38" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
},
"from": 0,
"size": 1,
"_source": ["account_number", "balance", "firstname", "lastname", "age", "email", "address", "state"],
"sort": [
{ "account_number": "asc" },
{ …Run Code Online (Sandbox Code Playgroud) java ×5
java-8 ×2
spring ×2
amazon-rds ×1
arrays ×1
debezium ×1
filter ×1
go ×1
guice ×1
interceptor ×1
java-stream ×1
javascript ×1
jersey-2.0 ×1
json ×1
mysql ×1
performance ×1
setinterval ×1
sorting ×1
struct ×1
thrift ×1