小编Jas*_*Law的帖子

MySQL如何存储数据

我环顾了古尔,但没有找到任何好的答案.它是否将数据存储在一个大文件中?使用哪些方法来使数据访问更快,而不仅仅是读取和写入常规文件?

mysql database database-design

25
推荐指数
3
解决办法
3万
查看次数

kubernetes中的Label和Selector有什么区别?

看了kubernetes.io上的官方文档,我还是想知道 Kubernetes 中 label 和 selector 到底有什么区别?

编辑:例如考虑以下 Kubernetes 对象,以下 yaml 文件的 Labels 和 Selectors 有什么区别。

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: label-demo
  labels:
    environment: production
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: App1
  template:
    metadata:
      labels:
        environment: production
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.7.9
Run Code Online (Sandbox Code Playgroud)

kubernetes devops kubernetes-pod

6
推荐指数
2
解决办法
3571
查看次数

Java Concurrency 在实践中的示例如何是线程安全的

下面是Java Concurrency in Practice(清单 2.8)中的一个线程安全类示例。

我的问题是下面的类如何是线程安全的?

例如,如果两个线程Thread A,并Thread B进入CachedFactorizer的服务方法。Thread B其次是Thread A。现在 ifThread A正在执行第一个同步块并且Thread B显然在等待对象的内在锁。如果Thread B在到达第二个同步块之前Thread A到达第一个同步块,它将查看一个陈旧的值,并且这种情况可能被称为Race Condition

那么,我的理解对吗?还是我对并发缺乏一些基本的了解?

@ThreadSafe
public class CachedFactorizer implements Servlet {

    @GuardedBy("this") private BigInteger lastNumber;

    @GuardedBy("this") private BigInteger[] lastFactors;

    @GuardedBy("this") private long hits;

    @GuardedBy("this") private long cacheHits;

    public synchronized long getHits() { return hits; }

    public synchronized double getCacheHitRatio() {

        return (double) cacheHits / (double) hits; …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

5
推荐指数
1
解决办法
314
查看次数

Spring数据查询dsl如何添加order by?

我是 Querydsl 的新手,我正在使用 Spring 数据和 Querydsl 来制作动态过滤器,我使用接口:QueryDslPredicateExecutor所以我可以使用不同的实体字段过滤数据,现在我想在我的查询中添加“order by”基于BooleanExpression

这是我的代码:

QPersonData _personInventory = QPersonData.personData;
BooleanBuilder query = new BooleanBuilder();

query.and(_personInventory.status.eq(status));
Run Code Online (Sandbox Code Playgroud)

然后我使用查询调用了我的存储库接口:

personInventoryRepository.findAll(query, pageable);
Run Code Online (Sandbox Code Playgroud)

我的问题是如何根据实体上的不同字段将“order by”应用于查询对象?

java spring querydsl spring-data spring-data-jpa

5
推荐指数
3
解决办法
4986
查看次数

并行流中的 Fork-Join Pool

我在网上搜索了各种文章和 Stack Overflow 问题,但我找不到完美的答案。有许多问题与此接近,但略有不同。

我们知道 Java 8 Streams API 在内部使用 Fork-Join Pool。

现在我的问题是如何使用 Fork-Join 池划分流管道中的任务?

假设我们有以下内容:

List myList =  inputList.parallelStream().filter( x -> x>0 )
    .map(x -> x+100 ).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

现在我们有两种使用线程池划分任务的选项。

  1. filtermap作为单个任务并使用 fork-join 池运行它。
  2. filtermap作为两个不同的任务,并使用两个不同的 fork-join 线程池运行它们。

我也知道流是延迟传播的,所以如果我们 在两者之间有一个 有状态的中间操作

List myList2 = inputList.parallelStream().filter( x -> x>0 )
    .map(x -> x+5 ).sorted().map(x -> x+5 ).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

那么如何创建线程池呢?

PS:之前就知道map功能是可以组合的。我只是想为这个问题举个例子。

java multithreading java-8 java-stream

5
推荐指数
1
解决办法
1443
查看次数

“同步操作完全有序”是什么意思?

我正在阅读《Java并发实践》,在“16.1.3 500字以内的Java内存模型”中,它说:

\n\n
\n

Java 内存模型是根据操作来指定的,包括对变量的读取和写入、监视器的锁定和解锁以及线程的启动和加入。JMM为程序中的所有操作定义了一个名为“happens-before”的部分排序。为了保证执行动作B的线程可以看到动作A的结果(无论A和B是否发生在不同的线程中),A和B之间必须存在happens-before关系。在没有happens-before排序的情况下在两个操作之间,JVM 可以随意对它们重新排序。

\n\n

尽管动作只是部分有序的,但同步动作\xe2\x80\x94锁的获取和释放以及易失性变量\xe2\x80\x94的读写都是完全有序的这使得根据 \xe2\x80\x9csubsequent\xe2\x80\x9d 锁定获取和易失性变量的读取来描述发生之前是有意义的。

\n
\n\n

关于“部分排序”,我找到了这个这个,但我不太明白“即使动作只是部分排序,同步动作\xe2\x80\x94锁获取和释放,以及易失性变量的读写\ xe2\x80\x94 是完全有序的。” “同步操作完全有序”是什么意思?

\n

java multithreading happens-before

5
推荐指数
1
解决办法
547
查看次数

为什么标识值必须是 Stream.reduce 中组合器函数的标识?

我正在学习Java 8,在包摘要的Reduction操作部分中java.util.stream,它说:

更正式地说,标识值必须是组合器函数的标识。这意味着对于所有 u,combiner.apply(identity, u) 等于 u。此外,组合器函数必须是关联的,并且必须与累加器函数兼容:对于所有 u 和 t,combiner.apply(u,accumulator.apply(identity, t)) 必须是 equals() 到accumulator.apply(u, t)。

我不明白为什么标识值必须是组合器函数的标识。我认为“组合器函数必须是关联的并且必须是兼容的”足以产生相同的结果,无论流是串行还是并行。

例如,我有一个包含四个元素的流e1, e2, e3, e4。如果是串行流,则结果为identityac e1ac e2ac e3ac e4(ac表示累加器函数)。如果是并行流,则四个元素可以分成两部分,[e1, e2][e3, e4],所以结果是 ( identityac e1ac e2) co ( identityac e3ac e4)。

如果给定“组合器函数是关联的并且与累加器函数兼容”,我们可以推断identityac e1ac e2ac e3ac e4等于“( identityac e1ac e2) co ( …

java java-8 java-stream

5
推荐指数
1
解决办法
461
查看次数

ConcurrentHashMap的弱一致性迭代器

实践中的Java并发提到:

由返回的迭代器ConcurrentHashMap比快速失败弱一致。弱一致性迭代器可以容忍并发修改,遍历在构造迭代器时存在的元素,并且可以(但不能保证)在构造迭代器后将对集合的修改反映出来。

  1. 在并行环境中,如何使迭代器保持弱​​一致性或故障安全性是有帮助的,因为ConcurrentHashMap将修改静态状态。唯一的事情是它不会抛出ConcurrentModificationException
  2. 为什么创建故障安全迭代器时Collections返回故障快速迭代器有利于并发。

java concurrency concurrenthashmap

1
推荐指数
1
解决办法
1043
查看次数

“非块结构锁定”是什么意思?

我正在阅读《Java 并发实践》。在 13.1 Lock 和 ReentrantLock 中,它说:

\n\n
\n

为什么要创建一个与内在锁定如此相似的新锁定机制?内在锁定在大多数情况下工作正常,但有一些功能限制\xe2\x80\x94 不可能中断等待获取锁的线程,或者尝试获取锁而不愿意永远等待它。内部锁还必须在获取它们的同一代码块中释放;这简化了编码并与异常处理很好地交互,但使得非块结构的锁定规则变得不可能。

\n
\n\n

“非块结构锁定”是什么意思?我认为这意味着您可以锁定一种方法,在另一种方法中解锁,例如Lock,但内部锁必须在获取它们的同一代码块中释放。我对吗?

\n\n

但该书的中文版将“block”翻译为“ \xe9\x98\xbb\xe5\xa1\x9e ”。这是一个错误吗?

\n

java multithreading locking synchronized

1
推荐指数
1
解决办法
212
查看次数

为什么 Spring 异常处理程序没有按预期工作

当我@ExceptionHandler在控制器中使用时,它没有按预期工作。

这是我的代码:

@Controller
public class PageController {

    @RequestMapping("/page")
    public ModelAndView index(ModelAndView modelAndView){
        String mess = null;
        mess.split(",");
        modelAndView.setViewName("index");
        return modelAndView;
    }

    @ExceptionHandler({Exception.class})
    @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Bad Request")
    public ModelAndView handleException(Exception ex, HttpServletRequest request,     HttpServletResponse response){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message", ex.getMessage());
        modelAndView.addObject("url", request.getRequestURL());
        modelAndView.addObject("code", response.getStatus());
        modelAndView.setViewName("exception");
        return modelAndView;
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序以调试模式启动后,我访问http://localhost:8080/page,并且handleException正在运行,但视图低于预期excepction视图。为什么?

在此输入图像描述

spring-mvc

0
推荐指数
1
解决办法
4457
查看次数

如何在 Java Selenium 中禁用 Chrome 实验性选项 same-site-by-default-cookies?

我想禁用 Chrome 实验选项same-site-by-default-cookiescookies-without-same-site-must-be-secure.

How to set Chrome Experimental option same-site-by-default-cookie in python selenium - Stack Overflow,我知道如何启用,但如果我想禁用该怎么办?

java selenium selenium-chromedriver

0
推荐指数
1
解决办法
2982
查看次数