Java基础一

*java泛型 方法返回值带有泛型

*java监听事件有两种方法
1.实现ApplicationListener
2.使用@EventListener注解
原文内容

*如何更新缓存中的数据:如果对实时性要求较高,则在更新操作是对缓存进行更新,若对实时性要求不高,则在更新时如果未命中则更新缓存,若命中了,定时更新即可>>原文内容

*方法A加了事务,方法B没有事务且方法B是private,A调用了B,事务不能进入方法B?

*Java8 Lambda表达式教程
java8合并list

List<JointSalesSolutionRiskVO> result = new LinkedList<>();
            jointSalesSolutionsNew.addAll(jointSalesSolutionsOld);
            Map<String, List<JointSalesSolutionRiskVO>> mapList = jointSalesSolutionsNew.stream().collect(Collectors.groupingBy(JointSalesSolutionRiskVO::getFormulaGroupCode, Collectors.toList()));
            mapList.forEach((K, V) -> {
                List<JointSalesSolutionVO> planList = new ArrayList<>();
                V.forEach(s -> planList.addAll(s.getJointSalesSolutionVOS()));
                JointSalesSolutionRiskVO vo = V.get(0);
                vo.setJointSalesSolutionVOS(planList.stream().distinct().sorted(Comparator.comparing(JointSalesSolutionVO::getFormulaCode)).collect(Collectors.toList()));
                result.add(vo);
            });

java8合并list并合集金额

Map<String, List<User>> users2 = users.stream().collect(Collectors.groupingBy(User::getRiskCode, Collectors.toList()));
        List<User> userList = new LinkedList<>();
        users2.forEach((k, v) -> {
            if (CollectionUtils.isNotEmpty(v)) {
                v.stream().reduce((a,b)-> new User(a.getRiskCode(), a.getQuoteAmount() + b.getQuoteAmount())).ifPresent(userList::add);
            }
        });

Java多线程实现的三种方式

*双亲委派机制分析

*springboot添加测试用例

*正向代理和反向代理的区别在这里插入图片描述

*线程池工具中的getActiveCount方法获取上一批未结束的线程数,并做相应处理

package com.odianyun.dataex.job.sync;

import java.util.concurrent.*;

public class ThreadTest {
    static ThreadPoolExecutor executorService =
            new ThreadPoolExecutor(10, 50,//固定最大50个线程个数
                    0L, TimeUnit.MILLISECONDS,
                    new LinkedBlockingQueue<Runnable>(100), //固定任务个数最大 1000个对象
                    Executors.defaultThreadFactory(),
                    new RejectedExecutionHandler() {
                        @Override
                        public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
                            r.run();
                            System.out.println("rejectedExecution");
                        }
                    });


    public static void main(String[] args) {

        for (int i = 0; i < 100; i++) {
//            System.out.println(i);
            executorService.submit(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(100 * Math.round(10));
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            });

        }
        while(executorService.getActiveCount() > 1){
            try {
                Thread.sleep(1000 * 4);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(executorService.getActiveCount());
        }
    }
}

*mysql 联合索引生效的条件、索引失效的条件

*@PostContruct和@PreDestroy的作用

*java中如何修改事务的隔离级别
如果是Spring管理,则可以通过注解的方式改变事务隔离级别
@Transactional(isolation = Isolation.READ_COMMITTED)

*kafka里面存着消息的数组,offset类似于数组下标。Kafka与其它队列的一个区别是offset是在消费端进行维护,而不是服务端,因此多个消费端可以消费同一个队列里的数据,并自行控制消费位置。

*了解一下Innodb存储引擎,聚簇索引,快照读,当前读,意向锁,间隙锁>>原文

*几种垃圾回收算法

*向下转型即class A和class B,B继承A,A a = new B();如果a中只有方法1,而b中有方法1和方法2,则在编译时会报错,因为b继承a,a中没有方法2。

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted) 是 是 是
不可重复读(read-committed) 否 是 是
可重复读(repeatable-read) 否 否 是
串行化(serializable) 否 否 否

脏读:在一个事务中读取到另一个事务没有提交的数据
不可重复读:在一个事务中,两次查询的结果不一致(针对的update操作)
虚读(幻读):在一个事务中,两次查询的结果不一致(针对的insert操作)

*RocketMQ 实战之快速入门

*NameServer负责维护Producer和Consumer的配置信息,状态信息,并且协调各个角色的协同执行.通过NameServer各个角色可以了解到集群的整体信息,并且他们会定期向NameServer上报状态.
为什么不用zookeeper,zk是apache旗下用于分布式服务协调的开源软件,并且拥有选举机制,能够在master宕机时从slave中通过选举机制选出一天slave变成master.但是在NameServer设计中,MasterBroker中没有一台拥有全部的topic信息,消息分布平均,拾取选举机制意义.其次,NameServer仅仅被用于存储集群的配置信息,元数据信息,不需要太复杂的功能,所以放弃重量级的zk选择轻量级的NameServer.
Broker消息存储,在Broker中存在着两个橘色:CommitLog和ConsumeQueue.
CommitLog:实际存储消息的物理文件
ConsumeQueue:消费队列,队列中存储的是代销费消息的地址偏移量,类似于索引,通过CommitLog和ConsumeQueue相互配合完成消息的存储.
在这里插入图片描述
原文内容

Java为什么要用接口回调调用被实现的方法,而不直接用实现该接口的类创建对象使用呢?

事务的概念和作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值