Java volatile关键字详解 volatile是java中的一个关键字,用于修饰变量。被此关键修饰的变量可以禁止对此变量操作的指令进行重排,还有保持内存的可见性。 简言之它的作用就是: 禁止指令重排 保持内存的可见性 禁止指令重排 CPU在执行代码时,为了提高执行效率,有时会将代码乱序执行。 ...
»
Huobn
2021-03-11
MyBatis 是轻量级的 Java 持久层中间件,完全基于 JDBC 实现持久化的数据访问,支持以 xml 和注解的形式进行配置,能灵活、简单地进行 SQL 映射,也提供了比 JDBC 更丰富的结果集,应用程序可以从中选择对自己的数据更友好的结果集。本文将从一个简单的快速案例出发,为读者剖析 My ...
»
笔者在写自测的时候遇到的问题: 我想模拟一个Bean,并在之后使用Mockito打桩,于是使用了 @MockBean 注解(spring集成mockito的产物),但代码编写好了后启动测试却报NullPointerException 好家伙,bean没有Mock上。 交代一下我的代码背景: 框架:S ...
»
1.注解介绍 1.1注解的本质 Oracle官方对注解的定义为: Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations hav ...
»
最近在工作中用到了 Hbase 这个数据库,也顺便做了关于 Hbase 的知识记录来分享给大家。其实 Hbase的内容体系真的很多很多,这里介绍的是小羽认为在工作中会用到的一些技术点,希望可以帮助到大家。 ...
»
qianyueric
2021-03-11
Arrays类数组工具类:java.util.ArraysArrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用“使用对象来调用 具有以下常用功能:给数组赋值:通过fill方法对数组排序:通过sort方法,按升序比较数组:通过equals方法比较数组中元 ...
»
zhsheng
2021-03-11
Handler的主要作用是收发消息和切线程 功能一:收发消息 简单流程介绍 希望你看完这篇文章后也可以把流程自己讲出来,并且每个环节还可以讲出很多细节 他的消息机制离不开Looper、MessageQueue 其中 Looper 每个线程只能持有一个,主要负责循环查看 MessageQueue 里面 ...
»
集合这块知识的重要性不用多说,加上多线程妥妥的稳占面试必问霸主地主,深入了解集合框架的整体结构以及各个集合类的实现原理是非常有必要的。 ...
»
cswiki
2021-03-11
引言 上一篇文章我们介绍了AQS的信号量Semaphore《Java高并发编程基础三大利器之Semaphore》,接下来应该轮到CountDownLatch了。 什么是CountDownLatch CountDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕 ...
»
Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,4000多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简 ...
»
noear
2021-03-11
生产者消费者问题 背景 在并发编程中,生产者消费者问题(producer/consumer)是一个经典的老生常谈的问题,有时也称为有界缓冲区问题。 问题的基本背景假设是:我们有一个固定大小的缓冲区,这个缓冲区分别有两种工作性质不同的线程去操作。其中一种线程负责向缓冲区中写入数据,我们称之为生产者线程 ...
»
Huobn
2021-03-10
前言 在介绍这个项目之前,先听我BB几句。 自己做开源也有2,3年了。现在也长期维护着3个开源项目,起初只是一时兴趣,觉得做出一个东西放在开源站点上是一件很有意义的事。但是凡是用的人多了,自然会有各种各样的问题和bug,各种issue要解决。自己的项目也如同自己的孩子一般,也不能放任不管,很多时候想 ...
»
bryan31
2021-03-10
问题描述: 调用链:controller1的接口A->service1的方法A->service2的方法B 方法A开启了事务,且指定了数据库A的数据源 方法B也开启了事务,使用了默认的事务传播机制(PROPAGATION_REQUIRED),即加入到了方法A的事务中,同时又指定了数据库B的数据源 方 ...
»
voyager-fu
2021-03-10
1 JAVA基础 反射注解内部类泛型序列化基本数据类型异常处理 2 JAVA集合 接口继承关系 接口依赖 List源码 ArrayList(数组)Vector(数组、线程安全)Linklist(链表) Set源码 HashSet(Hash表)TreeSet(二叉树)LinkHashSet(Hash表 ...
»
本文为《高性能网络编程游记》的第六篇“性能追击:万字长文30+图揭秘8大主流服务器程序线程模型”。 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让大家见笑了。 本文我们来探索一下主流的各种应用服务器的网络处理模型,看看大家都是怎么设计网络程序的。在本文中,我会从Node.js、 ...
»
一、前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去。 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot源码管中窥豹系列。 二、BeanFactoryPostProcessor BeanFactoryPo ...
»
springmvc 中有自带的cache处理模块,可以是方法级别的缓存处理,那么在实际使用中,很可能自己造轮子,因为实际中永远会有更奇怪的需求点。比如: 1 清除缓存时候,能模糊的进行删除 2 针对不同的key,设置不同的过期时间 这2个是有些麻烦的需求,当然针对缓存内容,设置 key(这个 key ...
»
ykkBlog
2021-03-09
一、前言 1.持久层 Java数据持久层,其本身是为了实现与数据源进行数据交互的存在,其目的是通过分层架构风格,进行应用&数据的解耦。 我从整体角度,依次阐述JDBC、Mybatis、MybatisPlus。 前者总是后者的依赖。只有在了解前者,才可以更好地学习后者。 2.技术选型 ciwai ,还 ...
»
一、前言 cas 一般认为是compare and swap 也可以认为是compare and set cas涉及三个值 1)P 变量内存地址 2)E 期望值 ,CPU做计算之前拿出来的旧值 3) X 需要设置的新值 原子操作为: 拿出内存地址当前的值A ,比较A == E ? 是 : 设置P内存 ...
»
freeedu
2021-03-08
在微服务构架中,集群服务间的需要调用时就需要知道各个服务的IP和提供服务的端口等信息,如果每个部署一个服务就配置一次,那么必然时非常麻烦的,因此我们需要一个能够统一管理的东西来解决这个问题,由此诞生了注册中心。
每个服务启动后都向注册中心发送自己的服务信息,在需要调用其他服务的时候直接从注册中心里面... ...
»
vchar
java
2021-03-08