我环顾了古尔,但没有找到任何好的答案.它是否将数据存储在一个大文件中?使用哪些方法来使数据访问更快,而不仅仅是读取和写入常规文件?
看了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) 下面是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) 我是 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”应用于查询对象?
我在网上搜索了各种文章和 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)
现在我们有两种使用线程池划分任务的选项。
filter和map作为单个任务并使用 fork-join 池运行它。filter和map作为两个不同的任务,并使用两个不同的 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并发实践》,在“16.1.3 500字以内的Java内存模型”中,它说:
\n\n\n\n\nJava 内存模型是根据操作来指定的,包括对变量的读取和写入、监视器的锁定和解锁以及线程的启动和加入。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
关于“部分排序”,我找到了这个和这个,但我不太明白“即使动作只是部分排序,同步动作\xe2\x80\x94锁获取和释放,以及易失性变量的读写\ xe2\x80\x94 是完全有序的。” 。“同步操作完全有序”是什么意思?
\n我正在学习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并发提到:
由返回的迭代器
ConcurrentHashMap比快速失败弱一致。弱一致性迭代器可以容忍并发修改,遍历在构造迭代器时存在的元素,并且可以(但不能保证)在构造迭代器后将对集合的修改反映出来。
ConcurrentHashMap将修改静态状态。唯一的事情是它不会抛出ConcurrentModificationException。我正在阅读《Java 并发实践》。在 13.1 Lock 和 ReentrantLock 中,它说:
\n\n\n\n\n为什么要创建一个与内在锁定如此相似的新锁定机制?内在锁定在大多数情况下工作正常,但有一些功能限制\xe2\x80\x94 不可能中断等待获取锁的线程,或者尝试获取锁而不愿意永远等待它。内部锁还必须在获取它们的同一代码块中释放;这简化了编码并与异常处理很好地交互,但使得非块结构的锁定规则变得不可能。
\n
“非块结构锁定”是什么意思?我认为这意味着您可以锁定一种方法,在另一种方法中解锁,例如Lock,但内部锁必须在获取它们的同一代码块中释放。我对吗?
但该书的中文版将“block”翻译为“ \xe9\x98\xbb\xe5\xa1\x9e ”。这是一个错误吗?
\n当我@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视图。为什么?

我想禁用 Chrome 实验选项same-site-by-default-cookies和cookies-without-same-site-must-be-secure.
从How to set Chrome Experimental option same-site-by-default-cookie in python selenium - Stack Overflow,我知道如何启用,但如果我想禁用该怎么办?
java ×8
concurrency ×2
java-8 ×2
java-stream ×2
database ×1
devops ×1
kubernetes ×1
locking ×1
mysql ×1
querydsl ×1
selenium ×1
spring ×1
spring-data ×1
spring-mvc ×1
synchronized ×1