
知识整理
Carson.zhao
每个牛逼的人都有一段苦逼的岁月,但是只要你像SB一样的去坚持,终将牛逼!
展开
-
Lock锁的使用问题及Lock与Synchronized区别
什么是Lock?为什么需要Lock?锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁).在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁.虽然它缺少了(通过synchronized块原创 2020-07-09 13:22:50 · 1983 阅读 · 0 评论 -
ArrayList和数组区别
数组:优点:在内存中时连续的,速度较快,操作简单。缺点:定义数组时要定义其长度,不是很灵活,过长过短都会造成问题。不方便进行数据的添加、插入和移除数组在什么时候会用到呢?1、java ArrayList无法存储基本类型,int,long,如果保存的话,就需要封装为Integer、Long,而自动的拆装箱,也有性能的消耗,所以总结下这点就是说如果要保存基本类型,同时还特别关注性能,就可以使用数组。2、如果对数据的数量大小已知,操作也非常简单,也不需要Array...原创 2020-07-08 20:19:39 · 998 阅读 · 0 评论 -
Java并发编程之CAS底层实现原理
什么是CAS?CAS的全称是Compare-And-Swap(乐观锁的内部实现)功能:用于判断内存某个位置的Value值是否为预期值A,如果是则更改为新的值B,整个操作过程是原子操作使用场景:CAS体现在Java语言中就是sun.misc.Unsafe类的各个方法调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,是完全依赖于硬件的功能,由于CAS是一种系统原语,原语属于操作系统使用范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过原创 2020-07-07 15:29:17 · 344 阅读 · 0 评论 -
Redis之常见数据结构、持久化以及并发业务场景的理解
简述Redis数据结构Redis总共有五种常见数据结构,三种特殊数据结构(这里不解释) 常用数据结构: STRING: 它是由整数值和SDS(简单动态字符串)实现的对象 应用场景: 1.可以用作缓存 2.可以用作计数器 3.可以用作共享用户session HASH:它是由压缩列表和字典实现的哈希对象 应用场景: 1.可以...原创 2020-07-02 16:14:39 · 249 阅读 · 0 评论 -
传统Synchronized下的生产者和消费者模式
package com.xiaozhao.juc;//生产者——消费者模式(Producer Consumer Model)public class PCM { public static void main(String[] args) { Data data = new Data(); new Thread(()->{ for (int i = 0; i < 20; i++) { try.原创 2020-06-26 00:58:10 · 190 阅读 · 0 评论 -
神来之笔--图解JVM内存分配及对象存储
灵魂画家Carson亲笔之作。。。喜欢这些图解的胖友,可以留言感兴趣的胖友可以留言,有时间了,可以根据留言画一些Java知识相关图解-----留言!!!!原创 2020-06-24 14:30:33 · 222 阅读 · 3 评论 -
Redis设计与实现之SDS和RDB
1.数据结构与对象: Redis数据库里每个键值对都是由对象组成的,其中键总是一个字符串对象,值可以是字符串对象(String)、列表对象(List)、哈希对象(Hash)、集合对象(Set)、有序集合对象(ZSet)等对象的其中一种 Redis采用SDS(简单动态字符串)作为字符串类型进行存储,相较C字符串类型来说,其优点明显且突出如下: 1.常熟复杂度获取字符串长度: 无需像C字符串一般对字符串进行遍历后才能获取字符串长度,它拥有自己的le...原创 2020-06-23 00:07:08 · 236 阅读 · 0 评论 -
认识微服务由来
什么是微服务? 微服务就是将庞杂臃肿的单体应用拆分成细粒度的服务,独立部署,并交给各个中小团队来负责开发、测试、上线和运维整个生命周期单体应用拆分成微服务的正确姿势纵向拆分 按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务横向拆分 按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合服务化拆分的前置条件服务如何定义 无...原创 2020-06-18 00:07:50 · 290 阅读 · 0 评论 -
单点登录的三种常用实现方式
基础知识:session原理(存放在在服务器端,每次请求会重置时间) 当客户端发送一个请求的时候服务器端会判断是否有一个名为jsesion的cookie 如果没有,服务端就会创建一个名为jsession的cookie,cookie的值为uuid,同时会创建一个uuid为key的session被创建出来,同时会把名为jsession的cookie返回到客户端 如果客户端存在cookie且没有超时,再次请求的时候就直接会将名为jsession的cookie返回到请求...原创 2020-06-11 22:13:59 · 1766 阅读 · 0 评论 -
HashMap相关问题及解析
前言: 看了一些HashMap的相关视频和学习资料,一直在搞项目,这个知识点搁置有一段时间了,学习嘛,就是要自己动手做,动手写 今天就脑子里的东西来回忆一下,一起记忆一下知识点以及针对HashMap的常见问题 这就不解析源码了,如果喜欢看源码的就等着啥时候有时间了,在做一个纯代码的解读先来看看图备注: 节点分为红色或者黑色; 根节点必为黑色; 叶子节点都为黑色,且为null; 连接红色节点的两个子节点都为黑色...原创 2020-06-06 16:37:34 · 461 阅读 · 0 评论 -
JVM内存及参数解读
概述: Java虚拟机启动时,会创建堆内存以及方法区 方法区主要存放虚拟机加载的类信息、常量、静态变量等共享信息。 当一条线程生成时虚拟机会创建一个虚拟机栈、本地方法栈、计数器、分配给该线程,当该线程执行到一个方法时,会生成一个栈帧,该方法中的局部变量以及参数(基本数据类型和引用类型)会存放在栈帧中,该方法中的对象实例以及数组实例信息会存放在堆内存中 在进入一个方法会对之前的栈帧进行压栈,将新方法置入栈顶,执行完新方法会根据栈帧中的返回地...原创 2020-06-04 04:22:35 · 376 阅读 · 0 评论 -
前后端分离------解决跨域
1.为什么产生跨域问题 跨域问题来源于JavaScript的同源策略 即只有 协议+主机名+端口号(如存在)相同,则允许相互访问 也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源 跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签2.什么是跨域 通过一个Url去访问另一个Url的过程中,如果他们的协议、域名、端口三者之间任意...原创 2020-06-03 21:54:02 · 183 阅读 · 0 评论 -
使用RestFul风格接口编程-前后端分离
一、创建返回状态码类public interface ResultCode {public static Integer SUCCESS = 20000;public static Integer ERROR = 20001;}二、创建统一结果类@Datapublic class R {@ApiModelProperty(value = "是否成功")private Boolean success;...原创 2020-06-03 02:33:38 · 447 阅读 · 0 评论 -
雪花算法理论
雪花算法生成的最终结果其实就是一个long类型的Java长整型数字,这是一个大前提! 生成一个long类型的数字id,其实就是对这64位的二进制形式里面填值,把这64位分成几个部分,彼此间互不影响,每部分都有自己的生成规则,这样在一定的简单的大前提下,能保证全局唯一。 先说第一位,long类型的数字是有符号的,第一位是0就是正数,1是负数,我们生成的id必然要正数,所以第一位可以确定为0不变。 剩下的63位分成三大部分!第一部分占41位,...原创 2020-06-02 12:51:02 · 586 阅读 · 0 评论 -
MySQL的特性和隔离级别及并发产生的问题
ACID四大特性:第一, 原子性,原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响。第二, 一致性,一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。数据库状态如何变化?每一次数据变更就会导致数据库的状态迁移。第三, 隔离性,隔离性是指当多个用户并发访问数据库时,比如同时访问一张表,数据库每一个用户开启的事务...原创 2020-06-02 12:45:32 · 186 阅读 · 0 评论