小编Nis*_*hat的帖子

悲观锁在数据库中如何工作,隔离级别与它有什么关系吗?

我正在阅读有关数据库锁定(悲观,乐观)机制的内容,

会话 1:
t1:打开事务:
t2:睡眠(3 秒)
t5:updte 用户集 name='x' 其中 id =1

会话 2:t2:更新用户集 name='y' 其中 id=1

我的疑问是: 1. t5 时会发生什么 2. 它是否与隔离级别有任何关系?如果是,不同隔离级别下的行为是什么。3.数据库(mysql,oracle)只做悲观锁吗?

mysql database locking isolation-level pessimistic-locking

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

怎么电路又闭合了?

我正在尝试了解 Hystrix。我了解当服务调用 3rd 方服务并且该服务没有响应并且阈值已超过配置时,电路将被打开并且继续呼叫将被短路。

但我无法理解电路是如何再次闭合的。让我们假设我们的服务正在调用 3rd 方服务,并且该服务无法正常工作,因此电路已打开。5 分钟后,该服务开始正常工作,现在电路应该关闭。调用服务如何知道第 3 方服务已经开始正常运行,现在应该关闭?

architecture hystrix microservices

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

java 8,当使用相同的 javassist 时,Lambda 表达式的工作方式不同

我有一个学生名单,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)

java javassist java-8 java-stream

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

newFixedThreadPool 的内部工作原理

请帮助我理解 newFixedThreadPool (或 Cached)的内部流程

当我们编写以下语句时,ExecutorService e=Executors.newFixedThreadPool(3);

  1. e.执行(runaable1);
  2. e.执行(runaable2);
  3. e.执行(runaable3);
  4. e.执行(runaable4);
  5. e.执行(runaable5);

直到3个execute方法,将创建三个线程,当调用第4个execute方法时,不会创建新线程,但工作将等待线程空闲。

我不明白这一点“不会创建新线程,但工作将等待线程空闲”。我认为当runnable1将被赋予第一个创建的线程时,一旦runnable1的run方法完成,Thread1的run也将完成,thread1将无法调用runnable4的run方法。那么,java 是如何用 3 个线程来执行 5 个 Runnable 的呢?

java concurrency multithreading

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

为什么Cassandra用于Kong Api Gateway

Kong使用Cassandra或Postgres.Cassandra知道用于编写繁重的应用程序.我没有看到Kong api网关那么重写,也没有一个表使用Cassandra重要的功能分区键之一.我怀疑是为什么Cassandra用于Kong,有什么特别的原因吗?我们不能使用RDBMS来实现这一点.

postgresql cassandra nosql system-design kong

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

如何在Java 8中将List转换为Map,.map函数在链中

我上课了

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,类型不再可用,不知道如何做到这一点.

java java-8 java-stream

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

java 8,List&lt;Employee&gt; 部门地图和地址列表

我有一个类似 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)

java collections java-8 java-stream collectors

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

在threadpoolexecutor中工人和workQueue的目的

根据我的理解,ThreadpoolExecutor有两个用于管理tasks的主要数据结构(worker,workQueue).worker(Set)的线程将一直运行直到执行器关闭,而workerQueue将所有任务都保存到执行程序中.但是根据代码,我没有看到所有任务都被添加到workQueue.task中,只在第1361行添加到队列中,不会在每种情况下都执行.

java concurrency multithreading threadpoolexecutor

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

mongodb中$和""的意义

我正在学习 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中“”和$的语法意义是什么。

mongodb

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

为什么Redis是单线程的(事件驱动的)

我正在努力了解Redis的基础知识.一直到处都是,Redis是单线程的,它使事情成为原子.但是我无法想象它是如何在内部工作的.我有一点疑问.

我们不设计服务器单线程,如果它是IO绑定应用程序(如Node.js),其中线程在启动IO操作后获得另一个请求,并在IO操作完成后将数据返回给客户端(提供并发).但是在redis的情况下,所有数据都可以在主内存中找到,我们根本不打算进行IO操作.那么为什么Redis是单线程的?如果第一个请求需要花费很多时间会发生什么,剩下的请求将不得不保留等候?

multithreading event-driven single-threaded redis

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

Kafka:将主题偏移量保留在数据库中也是一种好的做法吗?

我已经开始学习kafka了。我对使用卡夫卡的现场项目不太了解。想知道除了在代理中提交之外,偏移量是否可以保存在数据库中?我认为应该始终保存它,否则某些记录将会丢失或重新处理。举个例子,如果偏移量没有保存在数据库中,当应用程序(消费者)在这段时间内部署或重新启动时,如果当时向代理发送了一些消息,则该消息将被错过,因为当消费者启动时,它将读取下一条后续记录或(从开始)

apache-kafka kafka-consumer-api

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

ES,CQRS消息传递流程

我试图了解ES + CQRS,可以使用技术堆栈。根据我的理解,流程应如下。

  1. UI向控制器(HTTP适配器)发送请求
  2. 控制器通过将请求对象作为参数来调用应用程序服务。
  3. 应用程序服务根据从控制器传递的请求对象创建命令。
  4. 应用程序服务将此命令传递给消息使用者。
  5. 消息使用者将命令发布到消息代理(RabbitMQ)
  6. 两个订户将监听上面的命令a。一个订户将使用命令从eventStore生成Aggregate,并将应用命令,而不是将生成的事件存储在事件存储中。b。另一个订户将在VIEW端,这将在View数据库/缓存中填充数据。

请暗示我的理解是正确的。

architecture events rabbitmq cqrs event-sourcing

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

SVN:如何创建已经签出分支的另一个分支

我已经在svn中结帐了一个项目(针对前Project1)。现在我在Project1中进行了很多更改,现在我不想通过提交更改来更改Project1。我想通过导出包含我的更改的项目来在SVN中创建另一个分支

svn

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