
笔记
文章平均质量分 63
宇的博客
这个作者很懒,什么都没留下…
展开
-
学习笔记day12 synchronized底层实现及锁升级机制
原博客:https://blog.youkuaiyun.com/weixin_40394952/article/details/118693945一、synchronized使用方法1、修饰实例方法,对当前实例对象this加锁2、修饰静态方法,对当前类的class对象加锁3、修饰代码块,指定加锁对象,对给定对象加锁代码示例:package cn.mrhan.java.thread.synchronize;/** * @Author hanYu * @Date 2021/8/24 *原创 2021-08-24 18:31:22 · 209 阅读 · 0 评论 -
学习笔记day10(CAS原理)
原博客地址:https://blog.youkuaiyun.com/qq_37113604/article/details/815827841、什么是CAS?CAS加volatile关键字是实现并发包的基石。没有CAS就不会有并发包,synchronized是一种独占锁、悲观锁,java.util.concurrent中借助了CAS指令实现了一种区别于synchronized的一种乐观锁。核心是冲突检测和数据更新CAS操作包含三个操作数-内存位置、期望值、和新值,如果内存位置的值与期望值匹配那么处理器会自原创 2021-08-23 19:54:09 · 242 阅读 · 0 评论 -
9(记一次开发中的小bug)
今天在开发过程中,测试环境报了一个错误,就是通过spring容器获取某个类获取不到,报NoSuchBeanDefinitionException错误,伪代码如下:public interface RepayMessageService { void notifyRepayResult(String message);}public abstract class AbstractRepayMessageHelper implements RepayMessageService ...原创 2021-08-12 17:50:55 · 247 阅读 · 0 评论 -
学习笔记day05(消息队列)
一、消息队列1、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ2、消息队列应用场景1)、异步处理传统的串行或者并行处理方式并发量、吞吐量、响应时间会有瓶颈,引入消息队列后,将不是必须的业务逻辑,异步处理,如发短信2)、应用解耦比如借据查询的订单状态为成功后需要将订单信息原创 2021-07-29 19:35:27 · 333 阅读 · 0 评论 -
学习笔记day04(反射、泛型、序列化)
一、反射1.什么是反射?将类的各个部分封装成其他对象,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制2.java代码在计算机中会经历三个阶段源代码阶段:java文件经过编译在硬盘中生成字节码文件 如Student.class类对象阶段:通过类加载器将class文件中的成员变量、构造方法、成员方法加载到内存中运行时阶段:可以创建对象和调用对象里的方法了..原创 2021-07-27 19:01:42 · 194 阅读 · 0 评论 -
学习笔记day02(线程池ThreadPoolTaskExecutor+流处理之flatMap)
一、ThreadPoolTaskExecutor @Autowired @Qualifier(value = "contractProcessExector") private ThreadPoolTaskExecutor contractProcessExector;@Configurationpublic class ExecutorConfig { @Bean("contractProcessExector") public ThreadPoolTaskExecutor con原创 2021-07-22 16:10:17 · 273 阅读 · 0 评论 -
学习笔记day1(java对象克隆)
一、java克隆的作用存在一个对象A,此对象中已经有一些初始值,现在我们需要对象和对象A有同样的初始值,如果我们使用Ab = a的方式则改变b引用指向的对象的时候 a的值也会改变因为他们指向同一个对象,而如果使用A b = new A()的方式,此时就不能保证和a对象有相同的初始值。所以此时我们需要使用clone()方法二、深克隆和浅克隆的区别?当一个对象中仅仅有String、int等这些基本类型的变量的时候,使用浅克隆没有问题,但是当一个对象存在引用类型的变量的时候,就需要使用深克隆了..原创 2021-07-21 17:37:08 · 94 阅读 · 0 评论 -
HashMap put操作都发生了什么
大家都知道,HashMap 的底层在 JDK 1.7 的时候为数组+链表,在JDK 1.8的时候为数组+链表+红黑树。那么当我们在向HashMap中添加元素时,HashMap里面究竟发生了什么呢?让我们一起来一探究竟吧!首先,我们一起来看看JDK 1.8中put的源码:public V put(K key, V value) { //对传入的key做hash return putVal(hash(key), key, value, false, true); }final V转载 2021-01-08 15:24:06 · 774 阅读 · 0 评论 -
Dubbo框架学习(一)
一、基本概念1.什么是分布式系统?分布式系统是若干独立计算器的集合随着互联网的发展 网站应用的规模不断扩大,常规的垂直应用架构已无法应对2.应用架构的发展演变1)单一应用架构不易扩展,协同开发不容易,增大服务器的压力2)垂直应用架构将单一应用拆分成互不干扰的几个小应用,易于分工合作、扩展。问题:没有实现界面和业务逻辑的实现分离应用不可能完全独立,大量的应用之间需要交互3)分布式服务架构RPC:远程过程调用 不同服务器之间的服务调用分布式服务框架:dubbo 解决远程调用问题4原创 2020-11-20 17:51:27 · 257 阅读 · 1 评论 -
自定义设计一个Mybatis框架
1.创建数据库、表、实体类、持久层接口、配置文件create database study_mybaitsCREATE table `USER`(id int(10),username varchar(20),birthday date,sex varchar(20), address varchar(20))insert into user VALUES (1,'张三',DATE('1994-08-29'),'男','安徽省芜湖市')package com.mrhan.domain;impo原创 2020-08-26 19:43:40 · 200 阅读 · 0 评论 -
三张图搞懂工厂模式
原创 2020-08-12 10:32:07 · 212 阅读 · 0 评论