我正在阅读有关数据库锁定(悲观,乐观)机制的内容,
会话 1:
t1:打开事务:
t2:睡眠(3 秒)
t5:updte 用户集 name='x' 其中 id =1
会话 2:t2:更新用户集 name='y' 其中 id=1
我的疑问是: 1. t5 时会发生什么 2. 它是否与隔离级别有任何关系?如果是,不同隔离级别下的行为是什么。3.数据库(mysql,oracle)只做悲观锁吗?
我正在尝试了解 Hystrix。我了解当服务调用 3rd 方服务并且该服务没有响应并且阈值已超过配置时,电路将被打开并且继续呼叫将被短路。
但我无法理解电路是如何再次闭合的。让我们假设我们的服务正在调用 3rd 方服务,并且该服务无法正常工作,因此电路已打开。5 分钟后,该服务开始正常工作,现在电路应该关闭。调用服务如何知道第 3 方服务已经开始正常运行,现在应该关闭?
我有一个学生名单,List<Student>
我正在使用 javassist-3.9.0.GA jar。
当我写list.stream().collect(Collectos.grouping(Student::getCode))
它时,它给出了Caused by: java.io.IOException: invalid constant type: 18
例外。当我更改上述语句list.stream().collect(Collectos.grouping(p->p.getCode()))
时。
字节码manupulationp->p.getCode()
和Student::getCode
不一样吗?
在使用相同的 javassist 时,上述两个语句的工作方式有何不同?
总结:我有一个类喜欢:
class Student{
private String code;
private String name;
public String getCode(){
return code;
}
public void setCode(){
this.code=code;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}
Run Code Online (Sandbox Code Playgroud)
List<Student> studentList=getStudentList();
现在下面的语句在 javassist-3.9.0.GA jar 上运行良好
Map<String,List<TripDetail>> tripMap=studentList.stream().collect(Collectors.groupingBy(p -> p.getCode()));
Run Code Online (Sandbox Code Playgroud)
但在下面的声明中使用相同的 Jar 给出了invalid constant type: 18
例外
Map<String,List<TripDetail>> tripMap=studentList.stream().collect(Collectors.groupingBy(Student::getCode)); …
Run Code Online (Sandbox Code Playgroud) 请帮助我理解 newFixedThreadPool (或 Cached)的内部流程
当我们编写以下语句时,ExecutorService e=Executors.newFixedThreadPool(3);
直到3个execute方法,将创建三个线程,当调用第4个execute方法时,不会创建新线程,但工作将等待线程空闲。
我不明白这一点“不会创建新线程,但工作将等待线程空闲”。我认为当runnable1将被赋予第一个创建的线程时,一旦runnable1的run方法完成,Thread1的run也将完成,thread1将无法调用runnable4的run方法。那么,java 是如何用 3 个线程来执行 5 个 Runnable 的呢?
Kong使用Cassandra或Postgres.Cassandra知道用于编写繁重的应用程序.我没有看到Kong api网关那么重写,也没有一个表使用Cassandra重要的功能分区键之一.我怀疑是为什么Cassandra用于Kong,有什么特别的原因吗?我们不能使用RDBMS来实现这一点.
我上课了
class Passenger {
String type;
String firstName;
String lastName;
//getter,setter
public String getName() {
return firstName + " " + lastName
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将乘客列表转换为Map,其中key为"type",值为"name"列表
我试着实现如下,
passengerList.stream().map(w -> w.getName()).collect(groupBy( getType() ));
Run Code Online (Sandbox Code Playgroud)
但是在.map函数之后,Passenger已经映射到firstName,类型不再可用,不知道如何做到这一点.
我有一个类似 classe User{ String Department; 的类;字符串地址;我有用户列表,我可以使用 java 8 Stream/map/collect 获得以下输出吗
List<User> userList=getUserList();
Map<String,List<String>> userAddressMap=new HashMap<String,List<String>>();
for(User user : userList){
List<String> addressList=userAddressMap.get(user.getDepartment());
if(addressList==null){
userAddressMap.put(user.getDepartment(),addressList);
}
addressList.add(user.getAddress);
}
Run Code Online (Sandbox Code Playgroud) 根据我的理解,ThreadpoolExecutor有两个用于管理tasks的主要数据结构(worker,workQueue).worker(Set)的线程将一直运行直到执行器关闭,而workerQueue将所有任务都保存到执行程序中.但是根据代码,我没有看到所有任务都被添加到workQueue.task中,只在第1361行添加到队列中,不会在每种情况下都执行.
我正在学习 MongoDB。对“$”的使用感到困惑我有如下架构的集合:
{
_id: 1,
"name": "test",
"city": "gr",
"sector": "IT",
"salary":1000
}
Run Code Online (Sandbox Code Playgroud)
我在执行以下查询时发现以下输出:
Query Result
db.user.find({salary:2000}); Works
db.user.find({$salary:2000}); does not work(unknown top level operator: $salary)
db.user.aggregate({$group:{_id:null,avg:{$avg:"$salary"}}}); Works
db.user.aggregate({$group:{_id:null,avg:{$avg:$salary}}}); does not work($salary is not defined)
db.user.aggregate({$group:{_id:null,avg:{$avg:"salary"}}}); gives wrong output.
Run Code Online (Sandbox Code Playgroud)
谁能解释一下,mongoDB中“”和$的语法意义是什么。
我正在努力了解Redis的基础知识.一直到处都是,Redis是单线程的,它使事情成为原子.但是我无法想象它是如何在内部工作的.我有一点疑问.
我们不设计服务器单线程,如果它是IO绑定应用程序(如Node.js),其中线程在启动IO操作后获得另一个请求,并在IO操作完成后将数据返回给客户端(提供并发).但是在redis的情况下,所有数据都可以在主内存中找到,我们根本不打算进行IO操作.那么为什么Redis是单线程的?如果第一个请求需要花费很多时间会发生什么,剩下的请求将不得不保留等候?
我已经开始学习kafka了。我对使用卡夫卡的现场项目不太了解。想知道除了在代理中提交之外,偏移量是否可以保存在数据库中?我认为应该始终保存它,否则某些记录将会丢失或重新处理。举个例子,如果偏移量没有保存在数据库中,当应用程序(消费者)在这段时间内部署或重新启动时,如果当时向代理发送了一些消息,则该消息将被错过,因为当消费者启动时,它将读取下一条后续记录或(从开始)
我试图了解ES + CQRS,可以使用技术堆栈。根据我的理解,流程应如下。
请暗示我的理解是正确的。
我已经在svn中结帐了一个项目(针对前Project1)。现在我在Project1中进行了很多更改,现在我不想通过提交更改来更改Project1。我想通过导出包含我的更改的项目来在SVN中创建另一个分支
java ×5
java-8 ×3
java-stream ×3
architecture ×2
concurrency ×2
apache-kafka ×1
cassandra ×1
collections ×1
collectors ×1
cqrs ×1
database ×1
event-driven ×1
events ×1
hystrix ×1
javassist ×1
kong ×1
locking ×1
mongodb ×1
mysql ×1
nosql ×1
postgresql ×1
rabbitmq ×1
redis ×1
svn ×1