![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 51
嗵呲咔嚓嗵
欢迎评论,如有异议或不理解的,一起研究讨论
展开
-
缓存与数据库的数据更新
缓存的更新策略更新数据库和Redis本身就不是原子操作,所以无论采取何种方式都不能保证强一致性,只能保证最终一致;只能尽可能降低不一致性发生的几率,不能从根本上完全避免。先更新数据库,在更新缓存业务角度对于读少的场景,浪费性能资源线程安全容易产生脏读。比如A线程更新数据库,B线程更新数据库;B线程更新缓存,A线程更新缓存先删除缓存,再更新数据库线程安全请求A进行更新操作,先删除缓存;请求B查询缓存,发现缓存失效,读取数据库,写入缓存;请求A将数据写入数据库.长时间读取到的都是脏数据解原创 2022-01-06 11:29:34 · 1103 阅读 · 0 评论 -
枚举类获取映射
枚举类package com.fanhuaholdings.cbs.utils;import lombok.Getter;public interface RnEnum { //获取描述 String getDesc(); //获取代码 Integer getCode(); enum SumType implements RnEnum{ SUPPLIER_COMPAny(1,"公司"), MANAGE_DEPT(2,"机构"原创 2022-01-06 11:27:36 · 327 阅读 · 0 评论 -
枚举类抽象方法
枚举类package com.fanhuaholdings.cbs.util;import com.fanhuaholdings.cbs.rncontinue.calculator.AbstractRnContinueCalculator;import com.fanhuaholdings.cbs.rncontinue.calculator.redis.RnContinueCalculatorGraceFunction;import com.fanhuaholdings.cbs.rncontinu原创 2022-01-06 11:24:51 · 339 阅读 · 0 评论 -
变量的类型和内存位置分配
内存类型成员变量(实例变量、属性)定义:在类中定义,在类对象被创建时,分配内存。属于是对象的属性,类被实例化后才有意义的变量,所以又叫实例变量。作用范围:实例变量初始化之后,类中所有位置都可访问出生:对象被创建时,开辟内存空间死亡:堆内存中对象,在栈内存中没有引用指向,等待GC回收局部变量(本地变量)定义:在方法中定义的变量以及方法的形参作用范围:在方法中,定义之后的位置可以访问出生:执行到定义语句死亡:对应代码块执行结束或方法执行结束类变量(类变量、静态变量)定义:static修饰原创 2022-01-06 11:23:12 · 533 阅读 · 0 评论 -
JVM内存分配和垃圾回收
Java内存模型内存分为对内存和非堆;非堆主要是由线程栈组成。调用栈和本地变量存放在线程栈上,对象本身存放在堆上。拿方法参数为例,相当于参数的引用,只是栈内存中对堆内存中对象的引用而已;局部变量、成员变量、静态变量的存储基本数据类型的成员变量,存储在栈内存(线程栈)上;引用类型的成员变量,引用存放在线程栈上,但是对象本身仍然存放在堆上;一个对象可能包含方法,这些方法可能包含局部变量。这些局部变量存放在线程栈上,即使这些方法所属的对象是存放在堆内存上;一个对象的成员变量,跟随这个对象一起存放在堆原创 2022-01-06 11:19:54 · 395 阅读 · 0 评论 -
应用通信
TCP/IPTCP四层模型应用层、传输层、网络层、链路层、物理传输层OSI七层模型表达层和会话层三次握手协议三次握手协议是指在发送数据的准备阶段,服务器和客户端之间需要进行三次交互。具体过程以下参考:https://www.cnblogs.com/qq78292959/p/3922231.htmlSYN(synchronous建立联机)ACK(acknowledgement确...原创 2019-03-30 12:42:00 · 183 阅读 · 0 评论 -
JDK源码-1.7 ArrayList
变量DEFAULT_CAPACITY = 10 初始默认的ArrayList大小为10。HashMap为1<<4=16Object[] EMPTY_ELEMENTDATA = {} 无参构造函数创建的数组private transient Object[] elementData 底层存储数据的数组,不参加序列化private int size ArrayLis...原创 2019-03-27 23:00:27 · 172 阅读 · 0 评论 -
HashMap产生高并发问题的原因
多线程操作map造成死锁或者死循环的问题可以通过jps + jstack命令查看堆栈信息进行判断1 同时put造成的数据丢失在HashMap中会获取到数据存储位置后,调用addEntrty()方法,添加一个新的Entrty对象。当多个线程需要put的数据hash值相同,需要放置在同一位置时,并没有对put方法进行同步的实现。所以,在调用Entrty方法的时候,会造成只有最后执行的线程...原创 2019-03-27 23:03:38 · 1128 阅读 · 0 评论 -
JAVA理论基础-I/O模型
I/O模型1.阻塞/非阻塞的区别、同步/异步的区别?例子烧水1.同步阻塞水壶烧水,然后你进行等待,每隔一段时间去查看水开没开。2.同步非阻塞水壶烧水,然后去做其他事,每隔一段时间去查看水开没开。3.异步阻塞水壶烧水,然后站在那等待,水开以后,自动通知你水开了。4.异步非阻塞水壶烧水,然后去做其他事,水开以后,自动通知你水开了。分析同步和异步同步就是水开与否,需要你去查看...原创 2019-03-27 23:03:03 · 161 阅读 · 0 评论 -
JAVA基础-java关键字
1 volatilevolatile是java提供的一种轻量级的同步机制,与synchronize(重量级锁)相比,volatile更轻量级。多线程编程中,线程相互是不可见,也就是说,线程B无法检测到共享对象是否被其他线程进行过修改。可见性指的是当一条线程修改了共享变量的值,新值对于其他线程来说是可以立即得知的。出现这种状况的原因1.java内存模型(JMM)JAVA虚拟机拥有自己的内存模...原创 2019-03-27 23:01:05 · 239 阅读 · 0 评论 -
类的继承和方法的调用
public class extendsTest { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D();...原创 2019-03-26 13:40:21 · 1135 阅读 · 1 评论 -
JAVA基础-JDK源码
JDK源码1.ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet、CopyOnWrite容器和Queue的实现原理ArrayList实现原理ArryList是基于数组实现的。是一个动态数组,默认初始大小为10.不是线程安全的,多线程环境下应该考虑Collections.synchronizedList(List ...原创 2019-03-26 13:39:40 · 302 阅读 · 0 评论