自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql系列:innodb日志管理,带你高效快速理解

本文从两个方面进行阐述,常规的日志文件(不区分存储引擎),第二就是讲innodb存储引擎的事务日志。第三就是看下binlog日志和事务日志的对比。一、基本日志文件1.1、基本日志文件分类:错误日志(error log)慢查询日志日志(slow query log)二进制日志(binlog)查询日志(general log)1.2、错误日志主要包括mysql的启动,运行,关闭过程进行记录。默认情况下以服务器的主机名命名`hostname`.err,可以通过参数--log-...

2021-02-28 20:54:00 290

原创 惊了!我这样优化了Tomcat后,网站访问性能竟飙升

一、前言tomcat 服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了,对于tomcat的优化,主要是从2个方面入手,一是tomcat本身的配置,另一个是tomcat所运行的Jvm虚拟机的调优二、Tomcat配置优化2.1 下载安装tomcat案例中使用的Tomcat版本是 8.0+ 版本下载安装:https://tomcat.apache.org/download-80.cgi2.2 配置修改cd apache-tomca.

2021-02-27 19:47:03 331

原创 MySQL全面剖析:MySQL索引实现和使用

MySQL索引实现上一篇我们详细了解了B+树的实现原理(传送门)。我们知道,MySQL内部索引是由不同的引擎实现的,主要包含InnoDB和MyISAM这两种,并且这两种引擎中的索引都是使用b+树的结构来存储的。InnoDB引擎中的索引Innodb中有2种索引:主键索引(也叫聚集索引)、辅助索引(也叫非聚集索引)。主键索引:每个表只有一个主键索引,b+树结构,叶子节点存储主键的值以及对应整条记录的数据,非叶子节点不存储记录的数据,只存储主键的值。当表中未指定主键时,MySQL内部...

2021-02-26 17:48:39 138

原创 学习Dubbo-带你通过源码看看dubbo对netty的使用

前言前段时间,从头开始将netty源码了解了个大概,但都是原理上理解。刚好博主对dubbo框架了解过一些,这次就以dubbo框架为例,详细看看dubbo这种出色的开源框架是如何使用netty的,又是如何与框架本身逻辑进行融合的。本文分成两大部分,一部分是dubbo服务端对netty的封装,一部分是dubbo客户端对netty的封装,而每部分都分netty初始化和调用两个阶段,下面进入正题。一、Dubbo服务端Dubbo服务端对netty的调用始于服务导出,在服务导出的最后,会调用D.

2021-02-25 17:37:21 459

原创 一次性讲清楚,Nginx详解其原理,可以给我鼓掌了

金三银四即将到来,推荐阅读:过关斩将!三面字节,27k*17offer,原来也没那么难一、Nginx进程模型分析 在介绍Nginx的进程模型之前我们先来给大家解释下一些常见的名词,这能辅助我们更好地了解Nginx的进程模型。作为Web服务器,设计的初衷就是为了能够处理更多的客户端的请求,一般来说,完成并行处理请求工作有三种方式可以选择,多进程、多线程、异步方式。二、多进程方式服务器每接收到一个客户端请求,就会由主进程生成一个子进程出来和该请求建立连接进行交互,直到连接断开以后子进程.

2021-02-24 21:33:25 1511

原创 这么深入地带你去学习JAVA-IO流,你不可能还不会吧?

(一)IO流基本概念Java对数据的操作是通过流的方式,io是java中实现输入输出的基础,它可以很方便地完成数据的输入输出操作,Java把不同的输入输出抽象为流,通过流的方式允许Java程序使用相同的方式来访问不同的输入、输出。(二)文件字节输入流(2.1)使用输入流的4个基本步骤1.设定输入流的源。2.创建指向源的输入流。3.让输入流读取源中的数据。4.关闭输入流。(2.2)构造方法如果对文件读取需求比较简单,从文件系统中的某个文件中获得输入字节,可以使..

2021-02-24 21:32:11 92

原创 这样去理解MySQL的存储引擎,面试官都对我拍手叫好了

MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最大的特色,也是MySQL最不一样的地方,因此,在这篇文章中我们来简单地了解一下。存储引擎架构MySQL的存储引擎架构被设计为可插拔式架构模式,也就是在不影响任何业务逻辑的情况下,我们可以随时替换当前的存储引擎,以达到以存储和性能方面的需求。其实,我们可以通过下面MySQL服务架构图来了解一下这个过程:从上面的图我们可以看到,MySQL的Server层与存储.

2021-02-23 20:44:55 131

原创 过关斩将!三面字节,27k*17offer,原来也没那么难

一、为什么跳槽?我做后端五年多了,同很多人一样,我大学的专业和程序员这个行业没有任何的关系。毕业后,很迷茫,就做了门槛相对来说较低的服务行业,之后,就一个偶然的机会接触了程序员这个行业,之后便开始了我长达五年多的后端开发工作。我之前在一家中型的互联网公司工作,技术一直还算可以,一年前,随着年纪的增长,有了家庭的压力,便开始想着提升自己,想让自己到达一个新的高度,而且大厂的话不论是管理还是工作氛围都是可以帮助到自己的。接下来就是跟大家分享一下我的字节面试经历,希望对即将在金三银四跳槽的朋友有所帮助

2021-02-23 18:03:13 459

原创 历经几小时,终于把Spring IOC介绍和操作讲得明明白白

一、IOC和 Bean介绍IOC也被称为DI。使用构造器参数,fatory参数,属性的方式的设置对象实例。在这个过程中创建bean的时候,容器会注入这些依赖,Bean本身通过使用类的直接构造来控制其依赖项的实例化或位置的过程,因为创建Bean的方式完成是反过来的,所以称为Inversion of Control (IoC)。说句人话就是以前创建对象是通过new,现在不new了,直接通过类的构造注入对象。org.springframework.beans 和 org.springframework.c

2021-02-22 20:38:39 69

原创 太硬核了!这篇HashMap源码分析,绝对可以堪称为圣经

一、前言本篇是继硬核ArrayList源码分析,答应我每天看一遍好么之后进行的第二篇源码分析;学完本篇你将对hashMap的结构和方法有个全面的了解;面试自己有多强,超人都不知道;比如HashMap的扩容机制,最大容量是多少,HashMap链表是如何转到红黑树,HashMap为什么线程不安全,HashMap的key,value是否能null值等等;二、源码分析2.1 官方说明实践官方说**HashMap实现了Map接口,拥有所有的Map操作;并且允许key,value都为null;**实践一

2021-02-21 21:53:36 300

原创 企业级实战!Springboot集成自定义异常类,清楚明了

一、说明会使用枚举 熟悉面向切面编程思想 熟悉枚举 熟悉异常 了解springboot基本知识 熟悉基本项目搭建,在演示文档中省略该步骤 springboot 2.0 , jdk1.8,构建工具idea二、 自定义异常类作者只能说简洁明了直接撸代码。2.1 在pom文件中引入相关依赖 <dependencies> <!-- web启动器--> <dependency> <grou

2021-02-20 17:19:42 205

原创 层层递进!MySQL性能优化步骤演进,一顿饭的时间我就会了

业界公认MySQL单表容量在1千万以下是最佳状态,因为这时它的BTREE索引树高在3~5之间思考:为什么MySQL单表1千万的索引树高是3~5?建表优化字段设计基本原则:1、满足需求的情况下尽可能选择小的数据类型和指定短的长度2、拆出变长大字段到单独的表中小字段主要有两个影响(InnoDB默认数据页大小16K):1、相同表记录数的情况下,索引KEY越小,索引树高度就越小,可以减少索引查询次数2、数据行存储的数据越少,每张数据页就能存更多的数据行,查询的时候减少跨页查询,也就是减

2021-02-19 17:52:55 265

原创 你还看不懂吗?超详细的classLoader分析,拒绝懵逼

一篇超详细classLoader分析这是我人生中第一次写技术博客,我也看过很多优秀博主博客从中学习到了很多;介于我也是一个人热爱技术分享的人,所以我想把自己在工作学习中获得知识分享给热爱技术的各位同胞还可以巩固知识,何乐而不为呢!了解类加载器之前需要有一定c/c++、Java基础以及源码阅读能力,本次分享源码篇幅较多,有那里写的不好地方或者错误欢迎各位留言指正问题,废话不多说进入正题!class.forName在jvm中加载编译好的二进制文件.claas是通过各种类加载器进行装载,java之

2021-02-18 17:55:00 489

原创 面面俱到!阿里王牌级“Docker全线笔记”,这也太全面了

写在开头司汤达说过:一个人只要强烈地坚持不懈地追求,他就能达到目的。Docker的创始人Solomon Hykes就是以这样的精神,在docker即将坚持不下去的时候,选择的不是放弃,而是坚持并且找对方法,最终便选择了开源,让更多的IT从业者认识到了docker的厉害之处,之后便火的一发不可收拾。直到现在也是目前最热门的容器技术,在国内坐稳互联网技术第一把交椅的阿里巴巴,使用docker的频率是非常高的,所以在docker的技术上是有着绝对性的话语权的。我看到的时候,这份笔记已经被Githu

2021-02-18 17:52:46 544 1

原创 满满的干货!典型服务器模式原理分析与实践,看了就能懂

本文作为自己学习网络编程的总结笔记。打算分析一下主流服务器模式的优缺点,及适用场景,每种模型实现一个回射服务器。客户端用同一个版本,服务端针对每种模型编写对应的回射服务器。本文所有代码放在:github.com/oscarwin/mu…单进程迭代服务器单进程迭代服务器是我接触网络编程编写的第一个服务器模型,虽然代码只有几行,但是每一个套接字编程的函数都涉及到大量的知识,这里我并不打算介绍每个套接字函数的功能,只给出一个套接字编程的基础流程图。有几点需要解释的是:服务器调用lis.

2021-02-16 17:46:33 436

原创 这些数据库索引的高频面试题,你都掌握了多少?

MySQL的索引是面试中的高频题目,将常见的索引面试题目总结如下,如果有帮到你可以点赞收藏呦。什么是索引? 百度百科的解释:索引是对数据库表的一列或者多列的值进行排序一种结构,使用索引可以快速访问数据表中的特定信息。索引的优缺点?优点:大大加快数据检索的速度。 将随机I/O变成顺序I/O(因为B+树的叶子节点是连接在一起的) 加速表与表之间的连接缺点:从空间角度考虑,建立索引需要占用物理空间 从时间角度 考虑,创建和维护索引都需要花费时间,例如对数据进行增删改的时候都需要维护

2021-02-15 20:22:19 219

原创 还没搞懂Java中的路径?看完这篇文章你就全懂了

一、前言之前一直对于java中的路径是模棱两可的感觉,对这一块,看似知道,其实也不知道。每次遇到FileNotFound的时候就会去Google去查询,这个方法怎么用哇,到底相对路径指的是从哪开始的路径呀,等等问题!其实就是在蒙答案,按照编程中的说法就是撞大运式的编程,这次争取一次性的搞懂java中的路径问题,争取以后编程心中有丘壑。二、相对路径和绝对路径「绝对路径:」绝对路径的英文全称是Absolute Path,就是真实的路径,是计算机中完整路径,必须准确,否则不能找到,起点是系统的根目录.

2021-02-11 20:23:30 1060

原创 MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂

数据迁移的几种方式 - MySQL数据库本文关键字:MySQL、数据库、数据迁移、导入、导出文章目录数据迁移的几种方式 - MySQL数据库 一、数据迁移 1. 数据的生命周期 2. 数据迁移的发生 二、数据导出 1. 命令方式 2. 软件方式 三、数据导入 1. 命令方式 2. 软件方式 四、数据传输与数据同步 1. 数据传输 2. 数据同步 开始和数据库玩耍以后,我们将一直与SQL和数据打交道。在日常的操作中,

2021-02-10 20:11:20 4863

原创 Mongodb基础:怎么使用Node.js操作数据库?超详细

一、Mongodb 介绍Mongodb 是一个文档数据库,以文档形式存储数据,格式类似于 JSON与 Mysql 的特点及选型对照说明:并不是说在真实项目中,两种数据库只能选其一, 二者是可以同时使用的。对于用户信息表等规整信息可以采用 Mysql 数据库存储,而对于网页中类似博客内容等大段的富文本信息(同时包含文本、视频、图片等),放到 Mysql 数据库中的一个字段中存储就不太合适了,这段博客内容就可以采用 Mongodb 来存储。二、Mongodb 及 Compass 安装.

2021-02-09 22:07:17 257

原创 太完整了!这是我见过最详细的线程池讲解了

1. 前言1.1 什么是线程池?线程池是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁线程所带来的资源消耗。在JAVA中主要是使用ThreadPoolExecutor类来创建线程池,并且JDK中也提供了Executors工厂类来创建线程池(不推荐使用)。线程池的优点:降低资源消耗,复用已创建的线程来降低创建和销毁线程的消耗。提高响应速度,任务到达时,可以不需要等待线

2021-02-08 19:06:46 1830 1

原创 自己搭建电商平台初期,原来“超卖”的问题,这样就可以搞定了

前言从本篇开始,老猫会通过电商中的业务场景和大家分享锁在实际应用场景下的演化过程。从Java单体锁到分布式环境下锁的实践。超卖的第一种现象案例其实在电商业务场景中,会有一个这样让人忌讳的现象,那就是“超卖”,那么什么是超卖呢?举个例子,某商品的库存数量只有10件,最终却卖出了15件,简而言之就是商品卖出的数量超过了商品本身的库存数目。“超卖”会导致商家没有商品发货,发货的时间延长,从引起交易双方的纠纷。我们来一起分析一下该现象产生的原因:假如商品只有最后一件,A用户和B用户同时看到了商品,并

2021-02-07 11:40:13 473

原创 怎么使用rke安装k8s集群?这么清楚了,你还看不懂吗

前言之前为了快速入门学习k8s的编排,直接使用了阿里云上的k8s集群,本中级篇这里尝试一下从0-1搭建k8s集群,并演示一些更为经典的案例:如自建nfs服务器存储卷的使用、自动证书签发cert-manager let's encrypt、rancher2.x、helm包管理工具等。环境三台主机为华为软开云的ECS,CentOS Linux release 7.6.1810 (Core)安装docker版本 19.03.9卸载当前docker版本(按需)yum remov.

2021-02-06 17:57:18 1157 2

原创 Mybatis源码解析:sql参数处理,原来可以这么简单

在这个章节中我们讨论当sql带有参数时,Mybatis是如何处理的。使用的还是User类。//省略get set方法public class User { private int id; private String name; private String phone;}例1 带有全局变量的sql//UserMapper中的dao接口List<User> getByglobal(); <select id="getByglo.

2021-02-05 17:57:57 709

原创 狙击P7!阿里大佬亲授“Java性能调优技术宝典”,太完整了!

一、前言什么是性能调优?性能调优其实很好理解,就是优化硬件、操作系统、应用之间的一个充分的协作,最大化的发挥出硬件的极致性能,来应对高负载的业务需求。为什么需要性能优化?其实说到底就是两个原因:①:为了获得更好的系统性能②:通过性能调优来满足不断增加的业务需求性能调优其实作用于我们项目中的很多阶段,项目上线前性能的基本优化,项目上线后也是需要持续不断的性能优化来应对不同时期的业务需求。我有个朋友现在在阿里是P7,他认为在P7这个职位,特别是像阿里这种体量的企业,以下这些性能调

2021-02-05 16:30:27 290

原创 绝对可以看懂!死锁全详解,一文带你搞定

前言计算机系统中有很多独占性的资源,在同一时刻只能每个资源只能由一个进程使用,我们之前经常提到过打印机,这就是一个独占性的资源,同一时刻不能有两个打印机同时输出结果,否则会引起文件系统的瘫痪。所以,操作系统具有授权一个进程单独访问资源的能力。两个进程独占性的访问某个资源,从而等待另外一个资源的执行结果,会导致两个进程都被阻塞,并且两个进程都不会释放各自的资源,这种情况就是 死锁(deadlock)。死锁可以发生在任何层面,在不同的机器之间可能会发生死锁,在数据库系统中也会导致死锁,比如...

2021-02-04 18:14:46 1108

原创 先知道怎么手写一个分页查询,再去使用PageHelper吧

前言当今框架层出不穷,程序员几乎不得不以年为单位疯狂更新技术栈,但万变不离其宗,了解这些框架的底层原理,才能够更好的掌握框架,而不是被不断迭代的框架所支配。分页是日常开发中很常见的需求,本文带大家基于 MyBatis 和 Spring Boot 一步一步写一个分页查询,了解分页查询的基本逻辑。当然,大家熟悉之后,日常开发中还是推荐利用插件/框架来提高编码效率(比如非常优秀的 MyBatis 分页插件 PageHelper)。1. 从分页效果入手讲解该如何做我们要实现的分页效果如下:...

2021-02-03 17:27:51 309 2

原创 硬核!十分钟带你看懂Netty如何实现C/S(源码解析)

Netty实现服务器和客户端服务器话不多说我们直接来实现一个简单的TimerServer(该服务器的提供的服务是接收客户端的指令返回服务器的系统时间)。import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelOption;import io.netty.channel.EventLoopGroup;import io.ne

2021-02-03 17:25:20 328 1

原创 又一大热门!腾讯高工发布的“K8S学习笔记”,已评“钻级”!理论+实践全搞定

一、前言k8s全称kubernetes,是目前大热的一个可移植容器的编排管理工具,像AWS、Azure、Google、阿里云、腾讯云等主流的公有云提供的都是基于k8s的容器服务,很多其他厂商也在努力跟进中,所以说“kubernetes”是目前容器行业中最为热门的也毫不为过!但是大家都是知道的,kubernetes虽然比较热门,但是学习的门槛相对来说也是比较高的,所以这份笔记也是因此而生的,一经发布,瞬间上了周榜双Top1,已评钻级!这份笔记有着以下两个重要的特点:系统的讲解当前最流.

2021-02-02 20:23:55 156

原创 实践!在Spring Boot启动时添加方法运行,一文全懂!

springboot最佳实践:在Spring Boot启动时添加方法运行在开发Spring Boot应用程序时,有时我们需要在启动时运行方法或一段代码。这段代码可以是任何内容,从记录某些信息到设置数据库,cron作业等。我们不能仅将此代码放入构造函数中,因为所需的变量或服务可能尚未初始化。这可能导致空指针或其他一些异常。为什么我们需要在Spring Boot启动时运行代码?由于多种原因,我们需要在应用程序启动时运行方法,记录重要的事情或说应用程序已启动的消息 处理数据库或文件,建立索引,创

2021-02-02 20:18:34 1216

原创 RabbitMQ - 高级地发送消息

定制消息发送上文在《RabbitMQ Client 怎么用?》中,提到通过 Channel 类的 basicPublish 方法推送消息。而提供的最完整的方法如下:void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) throws IOException;复制代码其中两个比较特殊的参数:m

2021-02-01 17:55:23 87

原创 阿里一面就落马,恶补完这份“阿里面试宝典”后,竟上岸蚂蚁金服!

一、我也曾后悔过踏入程序员这一职业相信大家考上大学时应该都有面临过选专业这一道难题吧,我同样没有避免,但是我还是算比较果断的,因为我从初中开始就对计算机感兴趣,然后就很佛的报了计算机专业,大学时,我对这个专业还是一直抱有很大的希望的。直到毕业工作三年了,发现现在的工作只有加不完的班,敲不完的代码,增删改查,完全失去了灵魂,和我当初的初心完全是相反的,再三考虑后我辞职去面试了一直向往的企业“阿里”,但无奈一面就被刷了下来,那段时间,我真的自闭到后悔自己踏入这个行业。文章中会展示我一面整理的笔记以

2021-02-01 17:25:02 777 3

空空如也

空空如也

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

TA关注的人

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