自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Java面试题(JVM、并发)

02 对于volitale的理解volitale是JVM提供的轻量级同步机制:保证可见性不保证原子性禁止指令重排序CAS底层原理cas的底层调用了很多Unsafe类native方法public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; // se

2022-01-03 19:33:56 182

转载 Cookie Session Token

Cookie1991年HTTP0.9诞生了,当时只是为了满足大家浏览web文档的要求,所以只有GET请求,浏览完就走,两个连接之间没有任何联系,这也是HTTP无状态的原因,诞生之初是没有这个需求的。随着交互式Web的兴起,单纯的浏览已经无法满足人们的需求,比如随着网上购物的兴起,需要记录用户的购物车记录,就需要有一个机制记录每个连接的关系,这样我们就知道加入购物车的商品到底属于谁了,于是 Cookie 就诞生了。Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了

2021-12-28 22:15:25 200

转载 TCP三次握手、四次挥手总结

前言:无论面试Java、C++、Python还是前端开发,计算机网络中TCP的知识可以说是必问的。本篇文章是对tcp三次握手和四次挥手问题的总结。TCP基本认识2 TCP连接建立过程3 TCP连接的断开问题4 socket编程本篇文章只关注于TCP连接的建立和断开过程,对于流量控制、拥塞控制以及可靠性传输不做过多讲解。01 TCP的基本认识先看一下tcp的头部格式序列号:在建立连接时又计算机生成的随机数作为其初始值,通过SYN包传输给接收端主机,每发送一次数据,就会.

2021-12-28 21:31:50 986

转载 MySQL面试题目

1 MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联:主线程:bin log线程–记录下所有改变了数据库数据的语句,放入master的bin log中从线程:io线程–在使用start slave 之后,负责从master拉取bin log内容,放入自己的relay log中从线层:sql执行线程–执行relay log中的语句。2MySQL数据库中MyIsam和InnoDB的区别1 五点不同InnoDB支持事务,MyIsam不支持事务InnoDB支持行锁,而MyIsa

2021-12-26 16:18:37 169

原创 数据结构Graph的深度优先遍历DFS和广度优先遍历BFS

图可以看做是顶点和边相连组成的结构.根据边是否有方向,分为有向图和无向图图的实现方式一般通过邻接矩阵和邻接表来表示图邻接链表Java 代码实现public class Graph { ArrayList<ArrayList<Integer>> graph; public Graph(int v){ graph = new ArrayList<>(); for (int i = 0; i < v; i++

2021-12-25 22:15:03 757

原创 heap堆在LeetCode中的应用

Heap堆堆的本质是用Array来是新的完全二叉树,这个数的根节点代表整个堆里面的最大值或者最小值,根据是最大值还是最小值分为大根堆和小根堆,根节点的左右子树同样是大根堆或者小根堆。一般来说在,堆的常用api有以下三个:peek() 查看堆顶元素 O1poll()拿出堆顶元素,O(logN)offer 添加元素 O(logN)优先队列和堆在Java 中有一个集合为PriorityQueue,它底层使用的就是堆以下讨论大根堆的建立过程。插入操作在堆的最后建立一个节点将数值赋

2021-12-25 21:09:27 674

转载 List集合中隐藏的坑

List是Java 中常用的集合类之一,几乎所有的代码都离不开List,但是List在使用过程中存在一些隐藏的问题。ArrayList插入失败?Intiger[] array = {1,2,3};List<Integer> list = Arrays.asList(arrays);list.add(4);这段代码看起来没什么问题,将数组转化为集合然后进行添加操作,然而在运行过程中add操作会出现UnsupportedOperationException;asList不是也返回了一

2021-12-24 22:20:18 284

转载 Java8新特性 Stream Api学习

有时候,我们在一个集合中需要筛选出符合条件的元素并且再做出其他处理时,Java8的新特性 Stream函数式编程可以帮我们解决问题。案例:1 从员工集合中筛选出salary高于8000的员工,放到新集合中。2 统计员工最高的薪资,平均薪资,薪资之和。3 将员工薪资按照从高到低排序,工资相同按照年龄小的在前。4 按照员工性别分类,按照员工性别和地区分类,将员工按薪资分为是否高于8000的两个部分。传统的迭代方法处理以上问题也可以,但是代码比较冗余。1 Stream概述JDK8是一个非常成

2021-12-23 16:09:32 227

转载 Java基础之Object类

Object是所有类的父类,其中的方法有哪些?分别用来做什么?Object类锁包含的所有方法详解registerNatives()方法getClass()hashCode()equals()clone()toString()notify()notifyAll()wait(long)wait(long,int)wait()finalize()一共12个方法registerNatives()顾名思义,这个方法时注册native方法,本地方法,向JVM来注册,当程序调用na.

2021-12-20 21:53:22 132

转载 阿里开发规范解读:MySQL索引选择性陷阱

前言:当一条SQL语句执行速度较慢时,我们想到的第一件事就是给条件列加上索引,但是索引并不是适用于所有的字段,添加索引甚至可能导致检索速度变慢。什么样的数据列适合加索引呢?这是一个值得考虑的问题。开发规范:强制 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决说明:索引文件具有B+Tree的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引相信大多数人对于上面的规范都有所了解。但是索引的选择性问题更加隐蔽,在某些条件下不适合建立索引。索引选择性陷阱#上表除了主键之外,其.

2021-12-20 20:59:15 372

转载 Java并发之synchronized关键字

synchronized关键字是Java并发编程中常用的同步手段之一,在之前我们可能觉得synchronized所加的锁过于繁重,但是经过JDK的优化,synchronized关键字在开发中使用场景逐渐增加。作用:1 互斥性:确保线程互斥的访问同步代码,锁会自动释放,多个线程操作同一个代码块必须排队等待获取锁2 可见性: 保证共享变量的修改能够及时对于其他线程可见,获取锁的线程操作完成后悔将数据刷新到共享内存区3 有序性: 不解决代码的重排序问题,但是可以保证代码执行的有序性synchroni.

2021-12-20 19:47:15 199

转载 ThreadLocal详解

在JDK官方文档中描述:ThreadLocal类用来提供线程内部等局部变量,这种变量在多线程环境下访问时能够保证多个线程的变量相对独立于其他线程内的变量,ThreadLocal实例通常设置为private static类型,用于关联线程的上下文。作用:提供线程内部的局部变量,不同线程之间不会相互干扰,该变量是在线程的生命周期内起作用,可以减少同一个线程内多个函数或者组件之间传递公共变量的复杂度,简单来说就是每个线程持有一份当前变量的副本,各个线程之间的副本互不干扰,是典型的用空间换区安全性的做法。1 线

2021-12-20 15:44:01 239

转载 MySQL的MVCC机制

在前面的文章中说到,MySQL的默认隔离级别为可重复读repeatable read,InnoDB存储引擎在这个默认的隔离级别下可以在一定程度上解决幻读的问题,那么它是如何做到的,本文将讲解InnoDB的MVCC多版本并发控制问题,MVCC是基于“数据版本”对并发事务进行访问的,MVCC应用在RC和RR两个隔离级别下。实例介绍图中一共有四个事务A,B,C,D,其中的tx_id是在事务开始时MySQL分配的事务编号。分别是1、2、3和4。其中前三个事务分别在不同的时间点更新数据然后提交,而第四个数据是在不

2021-12-19 15:44:22 214

转载 MySQL脏读、幻读、不可重复读

对于MySQL的事务存在脏读、不可重复读和幻读的问题,那么这些问题是如何产生?如何通过事务的隔离级别来确保事务的数据预期可控?查看当前会话的隔离级别:select @@transaction_isolation;设置会话的隔离级别,隔离级别由低到高设置依次为:set session transaction isolation level read uncommitted;set session transaction isolation level read committed;set se

2021-12-19 14:47:49 236

转载 一条sql语句的执行流程

作为一个后端开发人员,我们要天天喝数据库打交道,每天写上几十条SQL 语句,但是你知道我们的系统是如何和数据库交互的吗?MySQL如何帮我们存储数据,如何来帮我们管理事务?本篇文章将讲解系统如何和MySQL交互,以及我们发送的SQL语句时又做了什么事情。MySQL驱动系统在和MySQL数据库进行通信时,驱动在底层帮我们建立了数据库的连接,这样才能有后面的交互。这样驱动会为我们建立连接,一次SQL请求就会建立一个连接,多个请求会建立多个连接,如果tomcat多次建立并且关闭连接,那么会出现问题。J

2021-12-18 22:03:19 271

转载 为什么不能用double来定义商品的金额

涉及到float或者double这两种浮点型数据的处理时,偶尔会出现一些奇怪的现象。条件判断和预期不一致System.out.println( 1f == 0.9999999f ); // 打印:falseSystem.out.println( 1f == 0.99999999f ); // 打印:true 纳尼?数据的转换超过预期:float f = 1.1f;double d = (double) f;System.out.println(f); // 打印:1.1Sys

2021-12-18 15:30:58 992

转载 计算机中浮点数的表示方法

在《计算机组成原理》中学过浮点数在计算机中的存储方式遵循IEEE 754浮点数计数标准,可以表示为:采用 尾数+阶码 的编码方式,或者说:有效数字 + 指数位数因此,只要给出符号位(S)、阶码部分E、位数部分M这三个维度信息,一个浮点数就完全表示出来了,所以float和double这两种类型的浮点数在计算机中的存储结构如下:符号部分:S0-正 1-负阶码部分E对于float类型,指数部分是8位,考虑正负,因此表示指数范围是-127-128对于double类型,指数部分11位,指数

2021-12-18 14:05:51 4585 1

转载 Java创建对象的方式

在Java中创建对象一般使用的是new来创建对象,还可以通过clone,序列化,反射,Unsfae方法创建对象。1用new来创建对象的过程:Object obj = new Object();2 反射创建对象3 克隆出对象4 反序列化出一个对象5 Unsafe创建对象...

2021-12-17 14:25:59 315

空空如也

空空如也

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

TA关注的人

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