问题集合-01

stream流判断列表中有多少重复数据

Map<Object,Long> map= list.stream().collect(Collectors.groupingBy(item->item,Collectors.counting()));
map.forEach((k,v)-> System.out.println(k+":"+v));

Redis的差值比较

sdiff 注意时间的格式、数据类型、数据精度的变化。

  • mysql使用ENCODE/DECODE加密/解密的方式处理数据,在数据库中存放的时候以blob类型存储,但是我们通过mybatis-generator自动生成mapper和po操作数据库的时候,切记要注意blob对应生成的字段是byte[]类型的。我们最好自定义一个po将byte[]类型的字段改为string类型进行加密解密操作,不要直接使用byte[]类型,否则加密解密会有问题,最终造成差集比较出现问题。
NPE问题是什么问题

空指针异常

  1. 返回参数不要写成null,返回空的List可以使用Collections.emptyList()返回一个空的列表。
  2. 使用Spring注解@NonNull 不允许传入空值,@Nullable 可以传入空值
  3. Optional的isPresent或者ifPresent规避空指针异常
  4. Objects.nonNull() 可以判断是否为null 返回一个boolean值
数据库的逻辑分页和物理分页
  • 物理分页是数据库本身支持的分页方式,比如mysql的limit;oracle的rownum eg:SELECT rownum patient_id,patient_id,vital_signs FROM VITAL_SIGNS_REC where rownum <5;
  • 逻辑分页是将数据库数据全量查出以后使用代码处理
静态导入

静态导入,即在原来import 和导入的包之间加入static关键字,我们原来需要通过实例名.方法名()的地方全部可以直接写为方法名()。

了解定时任务

定时任务,springboot中使用@Scheduled注解的类,在指定的时间点去执行被注解类的代码。可以单线程执行,也可以多线程执行定时任务。springboot默认的线程池大小为1。在执行多任务调度的时候可以使用自定义调度器(定时任务)两种方式,
其一:使用@Bean直接返回一个TaskScheduler ,
其二:使用@Configuration实现SchedulingConfigurer重写里面的方法。
两种实现具体需要参考
@Async任务异步执行。主要用于方法上,表示当前方法会使用新线程异步执行。springboot默认执行器线程池的大小为100.当两种注解同时使用的时候@Scheduled将不再使用自己的线程池执行器,而使用@Async的异步执行器的线程池。

tomcat连接数越大,mysql连接池也越大并发越大对吗?
  1. 分配给JVM的内存多点,在提高性能的同时,也会加重GC的负担
  2. 硬件配置
  3. 操作系统对进程中的线程数有一些限制:
    windows 每个进程不允许超过2000
    linux每个进程中线程数不允许超过1000
    在Java中每开启一个线程需要消耗1MB的jvm内存空间作为线程栈之用。
  4. Tomcat的最大并发数可以配置,在实际中最大并发数与硬件新能和CPU数量都有关系。
  5. tomcat默认的http实现采用的阻塞式socket通信,每个请求都需要创建一个线程处理。这种模式下的并发量受到线程数的限制,但是对于tomcat来说几乎没有BUG。
  6. tomcat可以配置NIO方式的socket通信,在性能上高于阻塞式的,每个请求不需要单独创建一个线程处理,并发能力比前者要高。但是没有阻塞式的成熟。
  7. 并发能力还与应用的逻辑密切相关,如果逻辑恒复杂需要大量计算,那并发能力势必会下降。
  8. 如果每个请求对数据库服务器请求较多,那对数据库性能要求也比较高。
  9. 系统环境不同、tomcat不同、JDK版本不同、以及修改参数设定不同,并发量也会有差异。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值