自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 AQS图解——XXX

基于之前对AQS的些许了解,又去看了一遍源码,做了一些基础的流程图,没有涉及Condition的内容,还是比较简单的,做了一下梳理,带着这个图去看源码,会舒服很多!坚持学习,许愿大厂!...

2021-03-09 11:43:30 221

原创 Golang学习

GoLang学习笔记记录自己的学习笔记——第一弹!参考资料——《Go web编程》基础语法变量1.1go使用var关键字定义变量,将变量类型放于变量名后面var variableName type​例子:var name string1.2定义变量时可以定义多个一起,以及初始化他们定义多个变量var vname1,vname2,vname3 type定义单个变量并初始化var vname = value定义多个变量并初始化(变量类型一致时可以省略类型)var v

2021-03-01 15:09:58 168

原创 最清晰的Spring Bean加载过程——看源码利器

很久没更新博客了,写点啥吧!可能因为比较忙吧,忙学校的事儿,公司的事儿,最近又是一个人负责正在开发项目的下一个版本迭代,每天忙得焦头烂额的,摸鱼的时间没了,群里聊天打屁的时间也没了,直到上周才完成得七七八八,才有时间来做一些笔记。虽然平时工作都有在印象笔记上做工作笔记,但是都是零零碎碎的,这次花了点时间又去B站逛了一下,做一下流程图,废话少说直接上图!下面是一个示例流程图:做这个图的初衷是想在看源码的过程中,心里有一个主流程图,以至于不会让自己点到发懵,如果有什么错误或者..

2021-01-10 00:56:49 206

原创 广州公司笔/面经

总结一下这几天的面试吧!从19号到现在总共笔/面了,长亮科技(offer)、荔枝FM(在确定部门和薪资)、涂鸦智能(第一轮电话面半小时,待后续)、华资软件(HR面)、广州速游(已挂)至于公司怎么样不加以言论。长亮:实习项目怎么样设计数据库?了解视图吗?实习中看过或者设计过没?讲一讲ArrayList和LinkedList的优缺点和区别HaspMap的put过程,存null怎么存?讲讲HashMap的扩容过程讲讲GC过程Redis的常见数据结构和项目中在哪使用,处理哪些数据

2020-09-23 12:21:09 3290 5

原创 SpringAOP进阶(生活例子——>代理模式——>源码分析)

继前两篇的基础之后,终于来到Spring AOP知识的学习 在讲AOP之前仍旧先来讲讲其中运用的设计模式————代理设计模式什么叫代理?为什么要有代理?生活小例子:现在很多公寓式租房就是采用代理模式角色:房东、租房代理、房客角色需求:房东:需要房客入租客房,只想签合同收钱,但房源信息的宣传,打广告等额外的工作较为繁杂房客:需要了解房源信息,以确保租房体验得到保证矛盾:房东不想要宣传和打广告这些繁杂的工作,他只希望房客直接来跟他交钱签...

2020-09-18 00:01:16 373 4

原创 Spring AOP 预热篇

继上一篇Spring IOC 、DI的学习知识梳理之后,又开始了新的挣扎,本期内容主要是围绕Spring工厂的一些高级特性来展开学习的,也算是为下一篇AOP的学习做一个前置梳理,话不多说,开干!上一篇中提到了一个关键的词——Spring Bean,对它的形成过程也进行了简单的概述,但是并没有更为详细的研究,那么现在就一起来看看关于Spring Bean到底有什么值得探究的呢?回想上一篇文章中我们是根据Java对象引入的Spring Bean由上图可知,Bean也是Java对象,既然它是Jav..

2020-09-05 18:34:06 407

原创 1.6万字的Spring IOC DI理论及编码实现——白痴都能看懂!

在讲Spring IOC 之前我们先来看看JavaEE在web端开发的演变最初Java在web端开发使用的技术就是Servlet+Html的一个方式进行开发,无论是初学者还是资深的技术大牛在经历过这一个阶段的时候都会知道,在这个时期从Servlet到输出和修改HTML是极其麻烦的后来为了简化开发,开发人员对Servlet进行了简化,所以就衍生出了Jsp,但是当时使用Jsp页面混合着Html和java代码来开发Web应用,只适合于业务流程简单的应用, 如果系统复杂,Jsp代码严重缺乏可读性,页面显示和

2020-08-29 00:30:59 388

原创 数据结构之二维数组与稀疏数组之间的相互转换

为什么要将二维数组转换为稀疏数组?现实中使用数组的时候,大部分数组都是并未将所有的空间全部填充,这样就会导致查询有效数据的时候很有可能将所有位置都遍历一遍,很显然是没有必要的消耗,所以这个时候就需要稀疏来进行转换。从图中就可以看出左边为原始二维数组为6*7=42,右边的稀疏数组为9*3=27,很显然遍历27要比遍历42所花的时间要少得多,这时稀疏数组的作用就显示出来了什么是稀疏数组?当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是

2020-07-15 23:21:42 173

原创 Volatile你真的懂了吗?

什么是volatile?秒懂百科:volatile是一个特征修饰符(type specifier)说到volatile很多人都知道它的功能有可见性、禁止指令重排序两大功能,那么如果再问你,它是怎么体现可见性,怎么禁止指令重排序的,以及在Java中哪些地方使用到他们,是如何实现的呢?很显然这几个问题是有一定的难度的,如果面临这样的问题,我们最好先简单的解释一下volatile的作用,然后直接上手他在Java中自己知道的相关知识,这里知识有限,我也是给出了自己所了解的地方,希望有帮助!首

2020-07-14 14:01:39 218

原创 如梦•思何去

有些久疏难提笔啊!总算出来了 如梦•思何去 夜墨三分香尘寂,幽幽暗暗人鬼栖,讥讥辗转息息,奈何空无意。 破笑千杯齐天比,一云一鹤一仙衣,遥距红尘,醉忆曾久居。未寅暗香迟来雨,若问君何去,苍穹之下如皈依。...

2020-07-11 21:02:50 134

原创 垃圾回收——GC20+连问,帮你彻底搞懂GC

写在前面:最近在整理基础知识,在理清思路的同时也会配合现实面试或增或减的假想了部分关于GC的问题,用以帮助自己很好的梳理这一模块的知识点,希望能够帮助有需要的朋友。什么是GC?Java语言特有的垃圾收集机制GC能干什么?作为一个垃圾收集机制,作用显然就是收集垃圾对象,它主要做的事儿有三件:1.判断哪些对象需要被回收2.何时回收垃圾对象3.怎样回收垃圾对象那么GC是怎样判断哪些对象需要被回收呢?常见方法有两种分别为:引用计数法和可达性分析法除了这两中方法,你还.

2020-07-11 19:24:31 315

原创 基于AQS实现的ReentrantLock——清晰逻辑图解

看了一些文字资料,总觉的AQS很复杂,很难理解他的实现逻辑,然后就萌生了画出来的想法,然后今天就花了一天时间看源码、看书《Java并发编程的艺术》第五章、看一下鲁班学院子路老师视频,再结合自己的想法,也算是大费精神吧,下面就来晒晒成果吧,可能有些地方不太对,或者有出错的地方,欢迎大家指出,小赵一定虚心求教,感谢!...

2020-07-09 20:02:47 282

原创 Lock锁的使用问题及Lock与Synchronized区别

什么是Lock?为什么需要Lock?锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁).在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁.虽然它缺少了(通过synchronized块

2020-07-09 13:22:50 1905

原创 ArrayList和数组区别

数组:优点:在内存中时连续的,速度较快,操作简单。缺点:定义数组时要定义其长度,不是很灵活,过长过短都会造成问题。不方便进行数据的添加、插入和移除数组在什么时候会用到呢?1、java ArrayList无法存储基本类型,int,long,如果保存的话,就需要封装为Integer、Long,而自动的拆装箱,也有性能的消耗,所以总结下这点就是说如果要保存基本类型,同时还特别关注性能,就可以使用数组。2、如果对数据的数量大小已知,操作也非常简单,也不需要Array...

2020-07-08 20:19:39 945

原创 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 271

原创 深圳吉屋网络科技有限公司一面总结

自我介绍后,面试官叫说一下上家公司实习主要干的事然后就是开始专业知识问话1.你说了解集合,那么说一下集合中List的结构,以及它有什么优势2.了解HashMap吗?说一下HashMap的数据结构和put实现过程3.HashTable和HashMap的区别,Hashtable能放null吗?追问为什么Table安全4.因为HashMap不安全,那么你知道有安全的HashMap吗?追问说一下ConcurrentHashMap为什么安全?说一下它的实现,追问说一下可重入锁ReentrantLo

2020-07-03 18:07:55 848 6

原创 樊笼笑•暮西山

胡醉樊笼里,拂笑雁归家 。半生寻吴越,如影风沙;一世梦长白,足下霓虹,何处似为家。终归矣!静坐笼台,孤杯叹为年,遑遑春秋二十载,剑墨书香几时留;婵儿笑,杯已竭,莫道如君人前后,举眉镰暮近西山...

2020-07-02 16:28:34 165

原创 Redis之常见数据结构、持久化以及并发业务场景的理解

简述Redis数据结构Redis总共有五种常见数据结构,三种特殊数据结构(这里不解释) 常用数据结构: STRING: 它是由整数值和SDS(简单动态字符串)实现的对象 应用场景: 1.可以用作缓存 2.可以用作计数器 3.可以用作共享用户session HASH:它是由压缩列表和字典实现的哈希对象 应用场景: 1.可以...

2020-07-02 16:14:39 219

原创 ForkJoin之三种计算0~10亿内和值方法

ForkJoinDemopackage com.xiaozhao.juc.forkjoin;import java.util.concurrent.RecursiveTask;/** * 如何使用forkjoin * 1.forkjoinPool 通过它来执行 * 2.计算任务forkjoinPool.execute(ForkjoinTask task) * 3.计算类需要继承ForkjoinTask */public class ForkJoinDemo extends Rec

2020-06-30 20:29:37 254

原创 传统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 151

原创 剑指——剪绳子

public class Solution { public int cutRope(int target) { if(target < 2) return 0; if(target == 2) return 1; if(target == 3) return 2; //先尽可能功能多的去剪3 int a = target/3; ...

2020-06-24 20:14:09 117

原创 (简略版)键盘输入范围,求解该范围内所有的自幂数

package com.xiaozhao.coding;import java.util.ArrayList;import java.util.List;import java.util.ListIterator;import java.util.Scanner;public class GetNarcissisticNumbers { @SuppressWarnings...

2020-06-24 16:05:31 220

原创 神来之笔--图解JVM内存分配及对象存储

灵魂画家Carson亲笔之作。。。喜欢这些图解的胖友,可以留言感兴趣的胖友可以留言,有时间了,可以根据留言画一些Java知识相关图解-----留言!!!!

2020-06-24 14:30:33 183 3

原创 Redis设计与实现之SDS和RDB

1.数据结构与对象: Redis数据库里每个键值对都是由对象组成的,其中键总是一个字符串对象,值可以是字符串对象(String)、列表对象(List)、哈希对象(Hash)、集合对象(Set)、有序集合对象(ZSet)等对象的其中一种 Redis采用SDS(简单动态字符串)作为字符串类型进行存储,相较C字符串类型来说,其优点明显且突出如下: 1.常熟复杂度获取字符串长度: 无需像C字符串一般对字符串进行遍历后才能获取字符串长度,它拥有自己的le...

2020-06-23 00:07:08 187

原创 认识微服务由来

什么是微服务? 微服务就是将庞杂臃肿的单体应用拆分成细粒度的服务,独立部署,并交给各个中小团队来负责开发、测试、上线和运维整个生命周期单体应用拆分成微服务的正确姿势纵向拆分 按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务横向拆分 按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合服务化拆分的前置条件服务如何定义 无...

2020-06-18 00:07:50 239

原创 Online-Edu-小赵学院在线教育网站-项目总结

一、项目微服务模块划分功能划分:api-gateway:网关,对客户端请求进行断言、过滤等判断后负载均衡的路由到相应微服务模块canal-client-edu:考虑到分库分表场景,对虚拟机中数据库(这里canal.instance.filter.regex=.*\\..*)所有表的变更进行数据同步到本地数据库,要求本地数据库名和建表结构和虚拟机数据库结构相同common:微服务模块的公共依赖和一些工具类以及一些全局处理类service:服务模块,包括前台和后台所需..

2020-06-17 16:29:59 1016

原创 单点登录的三种常用实现方式

基础知识:session原理(存放在在服务器端,每次请求会重置时间) 当客户端发送一个请求的时候服务器端会判断是否有一个名为jsesion的cookie 如果没有,服务端就会创建一个名为jsession的cookie,cookie的值为uuid,同时会创建一个uuid为key的session被创建出来,同时会把名为jsession的cookie返回到客户端 如果客户端存在cookie且没有超时,再次请求的时候就直接会将名为jsession的cookie返回到请求...

2020-06-11 22:13:59 1500

原创 解决——中断IDEA,导致端口被占用

分析: 由于IDEA中,项目服务处于运行状态突然关闭IDEA(没有停止服务就关闭)会导致端口仍旧被使用中,除非重启电脑,否则只能将先前打开的端口kill后才能继续使用原来的端口解决: 先查看IDEA中断前打开并且没有停止的端口----也就是关闭IDEA时未停止的服务端口号 然后利用命令:netstat -aon|findstr 得到相应的TCP监听进程的Pidnetstat -aon|findstr 【查找到的所有端口号】例如:netstat...

2020-06-07 22:17:21 937

原创 HashMap相关问题及解析

前言: 看了一些HashMap的相关视频和学习资料,一直在搞项目,这个知识点搁置有一段时间了,学习嘛,就是要自己动手做,动手写 今天就脑子里的东西来回忆一下,一起记忆一下知识点以及针对HashMap的常见问题 这就不解析源码了,如果喜欢看源码的就等着啥时候有时间了,在做一个纯代码的解读先来看看图备注: 节点分为红色或者黑色; 根节点必为黑色; 叶子节点都为黑色,且为null; 连接红色节点的两个子节点都为黑色...

2020-06-06 16:37:34 405

原创 JVM内存及参数解读

概述: Java虚拟机启动时,会创建堆内存以及方法区 方法区主要存放虚拟机加载的类信息、常量、静态变量等共享信息。 当一条线程生成时虚拟机会创建一个虚拟机栈、本地方法栈、计数器、分配给该线程,当该线程执行到一个方法时,会生成一个栈帧,该方法中的局部变量以及参数(基本数据类型和引用类型)会存放在栈帧中,该方法中的对象实例以及数组实例信息会存放在堆内存中 在进入一个方法会对之前的栈帧进行压栈,将新方法置入栈顶,执行完新方法会根据栈帧中的返回地...

2020-06-04 04:22:35 318

原创 前后端分离------解决跨域

1.为什么产生跨域问题 跨域问题来源于JavaScript的同源策略 即只有 协议+主机名+端口号(如存在)相同,则允许相互访问 也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源 跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签2.什么是跨域 通过一个Url去访问另一个Url的过程中,如果他们的协议、域名、端口三者之间任意...

2020-06-03 21:54:02 154

原创 使用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 380

原创 雪花算法理论

雪花算法生成的最终结果其实就是一个long类型的Java长整型数字,这是一个大前提! 生成一个long类型的数字id,其实就是对这64位的二进制形式里面填值,把这64位分成几个部分,彼此间互不影响,每部分都有自己的生成规则,这样在一定的简单的大前提下,能保证全局唯一。 先说第一位,long类型的数字是有符号的,第一位是0就是正数,1是负数,我们生成的id必然要正数,所以第一位可以确定为0不变。 剩下的63位分成三大部分!第一部分占41位,...

2020-06-02 12:51:02 530

原创 MySQL的特性和隔离级别及并发产生的问题

ACID四大特性:第一, 原子性,原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响。第二, 一致性,一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。数据库状态如何变化?每一次数据变更就会导致数据库的状态迁移。第三, 隔离性,隔离性是指当多个用户并发访问数据库时,比如同时访问一张表,数据库每一个用户开启的事务...

2020-06-02 12:45:32 163

原创 ## **SpringBoot的个人解读**

SpringBoot的个人解读看了一段时间的SpringBoot源码,今天就来记录一下对SpringBoot的理解.一、首先,说到SpringBoot大多数人都知道约定大于配置,那么什么是约定大于配置呢?百度百科上面是这么解释的:约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的...

2020-05-04 18:25:18 225

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除