- 博客(34)
- 收藏
- 关注
原创 三分钟图解 MVCC,看一遍就懂,快点来学吧
接着,id = 300 的事务 C 再次修改了这条行记录,把 age 从 20 修改成了 30,如下图:可以看到,每次修改行记录都会更新 trx_id 和 roll_pointer 这两个隐藏字段,之前的多个数据快照对应的 undo log 会通过 roll_pointer 指针串联起来,从而形成一个版本链。需要注意的是,select 查询操作不会生成 undo log!在 InnoDB 存储引擎中,undo log 只分为两种:insert undo log:在 insert 操作中产生的 u
2021-12-10 18:22:35
236
原创 一篇文章把-InnoDB-的事务机制给你弄的明明白白,帮你深度探寻Spring循环依赖源码实现
小王:我肯定付款了啊,不然怎么下单。老板说:我没收到钱啊。你把付款的截图发给我。小王说:我吃饭还能不付钱吗,你等着。于是小王给老板截图了,老板拿着截图去找了美团技术,美团技术一查,转账失败。跟老板说不好意思,今天这代码是实习生写的,我们马上开除他,稍后转给你。这时候老板一颗悬着的心才放下,可不能一天就卖一份水饺还没收到钱,这不亏大了呢!以上纯属虚构,没有诋毁美团实习生的意思。从上面的问题看,付款成功了,转账失败了,这时候用户吃到了饭,但是老板没收到钱。放在正常的堂食,你不先付款,估计人儿就的赶你出
2021-12-10 18:18:37
894
原创 【网络信息安全】授权与访问控制,实战nginx张宴
============================================================================授权(Authorization)和访问控制(Access Control)表示ISO五大服务中的访问控制服务。访问控制建立在身份认证基础上,通过限制对关键资源的访问,防止非法用户的侵入或因为合法用户的不慎操作而造成的破坏。访问控制目的:限制主体对客体的访问权限,从而使计算机系统在合法范围内使用。13.2 常用的实现方法==============
2021-12-10 18:13:13
1005
原创 【源码解析】HashMap扩容机制,springboot快速搭建博客教程
这就是一个简单的马匹使用,其中Map<String,Object> 你可以制定map的键值对类型,也可以不指定直接,如:Map hashMap = new HashMap<();这样写代表此map的键值对都是object类型的,你可以随访存放你的类型,如果你只想存储String类型的key,int类型的value,声明如下:Map<String,Integer> hashMap = new HashMap<String, Integer>();
2021-12-10 18:11:31
338
原创 【源码分析设计模式 9】SpringIOC中的模板方法模式,一招教你看懂Netty
package com.guor.template;public abstract class SoyaMilk {//模板方法, make , 模板方法可以做成final , 不让子类去覆盖.final void make() {select();addCondiments();soak();beat();}//选材料void select() {System.out.println("第一步:选择好的新鲜黄豆 ");}//添加不同的配料, 抽象方法, 子类具体实现abstr
2021-12-10 18:09:19
188
原创 【死磕JVM】用Arthas排查JVM内存 真爽,java程序编译原理
下载地址:https://arthas.gitee.io/download.html你可以下载zip的包我下载的是arthas-packaging-3.5.0-bin.zip或者通过命令去下载wget https://alibaba.github.io/arthas/arthas-boot.jar使用手册1. 快速启动当我们下载好之后,我们直接通过命令启动就可以java -jar arthas-boot.jar,但是在此之前我们需要通过检测的代码来挂靠到Arthas上面import java
2021-12-10 18:07:44
764
原创 【死磕JDK源码】ThreadPoolExecutor源码保姆级详解,java百度网盘文件上传
原子性地检查 runState 和 workerCount,通过返回 false 来防止在不应该添加线程时出现误报。根据当前线程池状态,检查是否可以添加新的线程:若可则创建并启动任务;若一切正常则返回true;返回false的可能原因:线程池没有处RUNNING态线程工厂创建新的任务线程失败参数firstTask外部启动线程池时需要构造的第一个线程,它是线程的母体core新增工作线程时的判断指标true需要判断当前RUNNING态的线程是否少于cor
2021-12-10 18:06:15
162
原创 【C 语言小游戏】手打贪吃蛇1,缓存架构技术
上代码!!!void gameExit(){initgraph(width, heigth);loadimage(&img2, “图2.jpg”, width, heigth);putimage(0, 0, &img2);}普通模式参数初始化首先我们要初始化一个新的界面我们要初始化蛇的参数。先通过结构体定义蛇的各类参数,看看我的代码吧!struct Snake{int size; //蛇的长度int speed; //蛇的速度int
2021-12-09 18:00:50
2997
原创 【C 语言基础】结构体的使用,rabbitmq的工作原理
类型2:struct stu{char name[20];int age;}s1,s2;//定义全局变量s1,s22. 结构体初始化看这段代码struct book{float height;char name[20];}b;struct stu{char name[20];int age;char id[20];struct book b;};int main(){//初始化时,其实是和数组初始化一样,用大括号,里面放上初始化的值。若结构体里面包含结构体,则大
2021-12-09 17:58:33
118
原创 「金三银四」Java程序员分享的「阿里、京东、美团」的面试
而程序员在应聘时更是需要经历层层面试。俗话说,磨刀不误砍柴工,做好面试前的准备工作可以帮助大家更好的应对面试官的问题以及面试中的突发情况。那么我们一起来看看大型互联网公司的面试题吧!阿里巴巴面试=============================================================================1、开发中Java用了比较多的数据结构有哪些?2谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?这些数据结构中是线程.
2021-12-09 17:53:30
91
原创 「金三银四」Java程序员分享的「阿里、京东、美团」的面试(1)
面试,难还是不难?最终结果好还是不好?取决于面试者的底蕴(气场+技能)、心态和认知以及沟通技巧。而一些主流的大型互联网公司面试(阿里巴巴、京东、美团、滴滴)更是需要你在面试时展现出自己的能力,从而获得面试官的欣赏和肯定。而程序员在应聘时更是需要经历层层面试。俗话说,磨刀不误砍柴工,做好面试前的准备工作可以帮助大家更好的应对面试官的问题以及面试中的突发情况。那么我们一起来看看大型互联网公司的面试题吧!阿里巴巴面试=============================================
2021-12-09 17:51:30
102
原创 《Spring实战》读书笔记-第6章 渲染Web视图,linux驱动架构
不管使用JSTL,还是准备使用Spring的JSP标签库,配置解析JSP的视图解析器都是非常重要的。尽管Spring还有其他的几个视图解析器都能将视图名映射为JSP文件,但就这项任务来讲,InternalResourceViewResolver是最简单和最常用的视图解析器。配置适用于JSP的视图解析器InternalResourceViewResolver遵循一种约定,会在视图名上添加前缀和后缀,进而确定一个Web应用中视图资源的物理路径。通用的实践是将JSP文件放到Web应用的WEB-INF目录下,
2021-12-09 17:47:37
112
原创 zookeeper入门,java企业级应用教程视频
3、EPHEMERAL-临时目录节点客户端与zookeeper断开连接后,该节点被删除4、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号4.Zookeeper通知机制客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。5.Zookeeper做了什么?1.命名服务 2.配置管理 3.
2021-12-09 17:46:01
543
原创 【Linux 初学篇】,深度解析跳槽从开始到结束完整流程
2.4 grep 过滤查找3. 压缩和解压指令3.1 gzip 用于压缩文件3.2 gunzip 用于解压文件3.3 zip 用于压缩文件夹或目录3.4 unzip 用于解压文件夹3.5 tar 打包文件或文件夹4. 组4.1 介绍4.2 组的创建4.3 文件和目录的所有者4.4 文件和目录的所在组4.5 其他组4.6 改变用户所在组5. 权限管理5.1 介绍5.2 rwx 权限解释5.3 ..
2021-12-08 18:32:31
628
原创 【Java面经】阿里三面被挂,京东最新Java面试真题解析
==================阿里巴巴一面(55分钟)先介绍一下自己吧说一下自己的优缺点具体讲一下之前做过的项目你觉得项目里给里最大的挑战是什么?Hashmap为什么不用平衡树?AQS知道吗?知道哪一些呢?讲一讲。CLH同步队列是怎么实现非公平和公平的?ReetrantLock和synchronized的区别讲一下JVM的内存结构JVM 里 new 对象时,堆会发生抢占吗?你是怎么去设计JVM的堆的线程安全的?讲一下redis的数据结
2021-12-08 18:30:14
879
原创 【Java 基础语法】深度剖析 Java 中的数组,java面试宝典pdf
二、剖析 String[] args你有没有想过每次我们用到的public static void main(String[] args)其中的 String[] args 是啥吗?我们可以知道它是一个字符串数组,那其中存放着什么呢?我们可以打印一下看看public static void main(String[] args){System.out.println(Arrays.toString(args));}// 结果为:[]结果啥都没有,哦豁!上述是我在 IDEA 中尝试的,现在.
2021-12-08 18:28:34
207
原创 【C语言】动态内存分配,2021年大厂Java面经
文章目录【C语言】动态内存分配一、malloc 与free函数二、calloc三、realloc四、常见的动态内存的错误本期,我们将讲解malloc、calloc、realloc以及free函数。这是个动态内存分配函数的头文件都是 <stdlib.h>。c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么要通过函数来实现动态分配内存呢?首先让我们熟悉一下计算机的内存吧!在计算机的系统中大致有这四个内存区域:1)栈:在栈里面储存一
2021-12-08 18:26:43
776
原创 《零基础》MySQL 安装(二),阿里java面试没通过的原因
此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。yum install mariadb-server mariadbmariadb数据库的相关命令是:s.
2021-12-08 18:25:10
104
原创 《重构 改善既有代码的设计 1》重构原则,如何才能通过一线互联网公司面试
事不过三,三则重构添加功能时重构修改错误时重构复审代码时重构4、为什么重构有用难以阅读的程序,难以修改;逻辑重复的程序,难以修改;添加新行为时需要修改已有代码的程序,难以修改;带复杂条件逻辑的程序,难以修改;因此,我们希望程序:容易阅读;所有逻辑都只在唯一地点指定;新的改动不会危及现有行为;尽可能简单表达条件逻辑;间接层和重构间接层的价值:允许逻辑共享;分开解释意图和实现;隔离变化;封装条件逻辑..
2021-12-08 18:23:09
130
原创 为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?
public java.lang.String addMethod();Code:0: ldc #16 // String2: astore_13: iconst_04: istore_25: iload_26: ldc #17 // int 1000008: if_icmpge 4111: new #7 // class j
2021-12-07 14:33:46
196
原创 为什么说“大公司的技术顽疾根本挽救不了”,java实战项目视频
现在我正在为我曾经合作过的最大的集团公司工作。它拥有11000名员工,旗下有180家公司在运营。这是一家你们大多数人可能都认识的著名公司,你们中的许多人可能还是它的客户。在本文中,我将它称为“SuperRentalCorp”。关于“初创企业很敏捷,而大公司就像转个身都困难的恐龙一样难以成事”这一主题的文章,已经比比皆是。许多商业作家甚至写了一些有趣的书,来介绍大公司如何重组以使其更加敏捷。例如,埃里克·里斯在他的书《创业之路》中提出过一些有趣的想法。但拯救一家大公司的技术是如此困难,原因何在呢?在Su
2021-12-07 14:31:29
131
原创 为了面试阿里巴巴、腾讯、字节跳动,java技术支持面试题
12.抽象类能使用 final 修饰吗?13.ArrayList 和 LinkedList 有什么区别?14.ConcurrentHashMap的数据结构(必考)15.volatile作用(必考)16.Atomic类如何保证原子性(CAS操作)(必考)17.为什么要使用线程池(必考)RedisRedis的应用场景Redis支持的数据类型(必考)zset跳表的数据结构(必考)Redis的数据过期策略(必考)Redis的LRU过期策略的具体实现如何解决Redis缓存雪崩,缓存穿透问题
2021-12-07 14:29:49
815
原创 丢失的数字、移动零、单词规律,linux学习路线图
Arrays.sort(nums);if (nums[0] != 0){return 0;}if (nums[nums.length-1] != nums.length){return nums.length;}int min = 0;int max = nums.length;for (int i = 0; i < max; i++) {int next = nums[i]+1;if (i+1 <max && nums[i+1]!=next){retur
2021-12-07 14:27:59
58
原创 三、SpringBoot 整合mybatis 多数据源以及分库分表,初级java面试题大全
MyBatisConfigTwo 类@Configuration@MapperScan(basePackages = “com.quellan.zlflovemm.dao.mapper2”,sqlSessionFactoryRef = “sqlSessionFactory2”,sqlSessionTemplateRef = “sqlSessionTemplate2”)public class MyBatisConfigTwo {@Resource(name = “dbTwo”)DataSource
2021-12-07 14:18:57
225
原创 Springboot 整合 WebSocket ,使用STOMP协议+Redis 解决负载场景问题
import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import com.stomp.stomptest.listener.RedisListener;import org.springframework.cache.annota
2021-12-05 14:34:46
444
转载 Springboot Condition 实用讲解,只看一遍包学会,狂神springboot笔记
public Dragon(String name, Integer age) {this.name = name;this.age = age;}@Overridepublic String toString() {return “Dragon{” +“name=’” + name + ‘’’ +“, age=” + age +“, master=’” + master + ‘’’ +‘}’;}}然后在MyBeanConfig.java 里面把这个bean创建丢到容器里:imp
2021-12-05 14:33:06
146
1
原创 spring-boot+mybatis整合redis缓存,Java自学教程
application.ymlredis:host: 127.0.0.1port: 6379jedis: #可省略不写pool:max-active: 8 #连接池最大连接数(使用负值表示没有限制)max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制)max-idle: 8 #连接池中的最大空闲连接min-idle: 0 #连接池中的最小空闲连接timeout: 10000ms #连接超时时间(毫秒)mybatis-generator.xml<?xml
2021-12-05 14:31:16
837
原创 Spring+SpringMVC+MyBatis整合,java内存回收机制面试题
private int id;private String name;private int age;…}(2)mapperpackage com.guor.mapper;import com.guor.entity.Student;public interface StudentMapper {public void addStudent(Student student);public Student queryStudentByStuNo(int id);}<?xml ve
2021-12-05 14:29:42
311
原创 Spring 数据库配置文件进行解密操作,全世界都在问Java开发凉了吗
import org.apache.axis.encoding.Base64;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import java.security.SecureRandom;public class DwDes {/**DES算法密钥*/private s
2021-12-05 14:27:42
712
原创 Spring Cloud入门-Consul服务注册发现与配置中心(Hoxton版本),2021年不想被公司优化
Consul是HashiCorp公司推出的开源软件,提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。Spring Cloud Consul 具有如下特性:支持服务治理:Consul作为注册中心时,微服务中的应用可以向Consul注册自己,并且可以从Consul获取其他应用信息;支持客户端负责均衡:包括Ribbon和Spring Cloud LoadBalan
2021-12-05 14:26:00
221
原创 Spring Cloud之Eureka注册中心,java多线程实战指南设计模式篇pdf
因此,服务B既可以是服务提供者,也可以是服务消费者。Eureka注册中心假如我们的服务提供者user-service部署了多个实例,如图:大家思考几个问题:order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?有多个user-service实例地址,order-service调用时该如何选择?order-service如何得知某个user-service实例是否依然健康,是不是已经宕机?Eureka的结构和作用这些问题都需
2021-12-05 14:23:49
90
原创 Spring Boot 环境变量读取 和 属性对象的绑定,springboot教程下载
of property sources prior to application context {@code refresh()}.@author Chris Beams@since 3.1@see PropertyResolver@see EnvironmentCapable@see ConfigurableEnvironment@see AbstractEnvironment@see StandardEnvironment@see org.spri..
2021-12-05 14:22:14
300
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day29
RPC会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)。客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。追问1:RPC框架实现原理是什么样的在RPC框架中主要有三个角色:提供者、消费者和注册中心。如下图所示:提供者: 暴露服务的服务提供方。调用者: 调用远程服务的服务消费方。注册中心: 服务注册与发现的注册中心。原理图如上,也就是说两台服务器A,B,一个应用..
2021-12-05 00:03:21
437
原创 Java基础 - 单列集合,ArrayList,Vector
数组长度是固定的,不能自动增长集合的长度的是可变的,可以根据元素的增加而增长C:数组和集合什么时候用* 1,如果元素个数是固定的推荐用数组* 2,如果元素个数不是固定的推荐用集合D:集合继承体系图2.集合的遍历其实就是依次获取集合中的每一个元素。Object[] arr = coll.toArray(); //将集合转换成数组for (int i = 0; i < arr.length; i++) {Student s = (Student)ar..
2021-12-05 00:01:53
75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人