自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL 原理(三):事务的隔离性

说到事务这个词,相信大家应该都不陌生,ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)几乎都能脱口而出。但是说到事务的实现以及其背后所使用的技术,可能就有些茫然。今天我们就从事务的隔离性出发,聊一聊 MySQL 的事务原理。一致性视图(快照)我们知道,事务一共有 4 个隔离级别,分别是读未提交、读提交、可重复读和串行化。它们的含义如下:读未提交(read uncommitted):一个事务还没提交时,它做.

2022-02-18 15:53:49 876

原创 MySQL 原理(二):redo log 与 binlog

上一篇文章我们借由一条查询语句大致了解了 MySQL 结构,这次我们通过一条更新语句学习 MySQL 中非常重要的两个日志文件:redo log 和 binlog。

2022-01-10 17:58:55 600 2

原创 MySQL 原理(一):MySQL 架构

MySQL是开发人员经常打交道的一款数据库,但可能正是由于我们对它太过习以为常,以至于很多原理上的东西不求甚解。

2021-12-16 17:57:44 3677

原创 canal etl 全量同步失败

全量同步Elasticsearch方案之Canal基于canal的client-adapter数据同步必读指南https://github.com/alibaba/canal/wiki/ClientAdapter

2021-08-19 10:25:27 2239 2

转载 String 和 new String()的区别

String 和 new String()的区别For ExampleString str1 = "ABC"String str2 = new String("ABC");String str1 = "ABC"; 可能创建一个对象或者不创建对象。如果"ABC" 这个字符串z在java String池中不存在,会在java String池中创建一个String str1= "ABC"的对象。然后把str1指向这个内存地址。之后用这种方式创建多少个值为"ABC"的字符串对象。始终只有一.

2021-05-27 10:41:34 254

原创 Git详解(补2) 多分支开发思路

多分支思路:1、开发新功能,从develop直接拉功能分支,多人合作修改,就该没问题后,周三提测时,将多个功能分支合并到develop,同时从develop拉出一个发布版本分支release_branch.2、测试人员测试当前周需要发布的版本,如果发现bug,开发人员直接在此release分支修改bug,直到完全无问题,release分支修改bug后必须同步回developer分支,保证黄色developer分支代码的没问题。3、周四下午发布,将release分支合并到主分支,同时给主分支打tag.

2021-04-23 17:34:53 752

原创 设计模式:概念与设计原则

软件工程中,设计模式(designpattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。设计模式的目的代码重用性:相同的代码,不需要多次编写可读性:编程规范性,便于其他程序员的阅读和理解可扩展性:可以很方便的增加新的功能,也成为可维护性高内聚、低耦合设计模式的七大原则设计模式原则是程序员编程时,应该遵守的原则,也是各种设计模式的基础(即设计模式为什么这样设计)。单一职责原则降低类的复杂度,一个类只负责一项职责提高类的可读性,可维护性...

2021-02-02 11:29:17 171

原创 RabbitMQ 从入门到弃坑

消息队列的两种模式:一对一:发布者和每一个订阅者都有一个专属的队列。发布订阅:发布者和每一个订阅者共享一个队列。有两种模式:发布者主动推送(推送速度和获取速度不对等导致的资源浪费问题)、订阅者主动拉取(订阅者需要保持一个长轮询导致的资源浪费问题)。...

2020-11-17 16:22:53 262

原创 从 Hash 算法到红黑树、 B+树

给你N(1 < N < 10)个自然数,每个数的范围为 1 - 100,用最快的速度判断某个数是否在这N个数内。二分(前提是数据有序) 排序+顺序查找 哈希查找(利用数组下标映射要查找的值)散列表即HashTable ,也就是我们常说的哈希表。散列表用的是数组支持下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。散列函数即哈希函数,用于计算散列的值。哈希冲突是一个无法避免的问题,即使是MD5等加密哈希算...

2020-11-09 15:09:27 439

原创 Web 开发基本概念

OSI 即Open System InterConnection,开放系统互连。

2020-09-28 09:20:09 414

原创 Redis 实战应用

五大数据类型String

2020-09-22 09:51:31 194

原创 Redis 知识点速览

特性:速度快: 内存 持久化: 断电数据不丢失? 数据结构:key-value() 多编程语言支持

2020-09-16 11:44:59 223

原创 Cookie、Session 与 JWT

cookie、session之所以会出现cookie和session,是因为http请求是无状态的,因此需要分别在客户端和服务端记录状态。cookie和session 本质上是同一种东西,在两个地方的两种叫法。客户端第一次发送请求给服务端,服务端发现cookie中没有JSESSIONID,生成一个JSESSIONID放到cookie中,返回给客户端。之后客户端再请求服务端时,服务端判断cookie中存在JSESSIONID,就不会认为该用户是首次登录,不再派发...

2020-09-09 21:51:06 148

原创 Tomcat 原理浅析

web 概念资源的分类:静态资源:所有用户访问后,得到的结果都是一样的。静态资源可以直接被浏览器解析(html、css、js)。 动态资源:每个用户访问相同的资源后,得到的结果可能是不一样的。动态资源被访问后, 需要先转换为静态资源,再返回给浏览器解析(servlet/jsp、php、asp)。网络通信三要素:IP:电子设备在网络中的唯一标识 端口:应用程序在计算机中的唯一标识 传输协议:规定数据的传输规则web 服务器软件:webLogic(oracle 公司)、webSphere(

2020-09-07 14:06:20 560

原创 Spring 知识点速览

6 大框架MVC框架:struts1(封装 servlet)、struts2(封装过滤器)、springMVC持久层框架:hibernate(全自动、不需要写 sql 语句)、mybatis(半自动)【JDBC(全手动)】整合型框架、设计型框架:springspring 的好处非侵入式:基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 依赖注入:DI(Dependency Injection),是控制反转(IOC)最经典的实现 面向切面编程:Aspe.

2020-08-31 11:30:52 181

原创 Spring入门(一) 环境搭建、IOC/AOP快速上手

test

2020-04-21 10:42:27 269

原创 Hadoop基础(一) 基本概念

是什么:Apache旗下一个开发和运行处理大数据的软件平台。(一般是互联网、金融领域使用,针对超大数据量)干什么:允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。三个核心模块:1. HDFS(分布式文件系统):解决海量数据存储2. yarn(作业调度 && 集群资源管理 框架):解决资源、任务调度3. MapReduce(分布式运算编程框架):解决海量...

2020-04-13 13:54:15 884

原创 Git详解(四) 分支整合

cherry-pick改写提交git cherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。将指定的git cherry-pick <SHA-1>...

2020-04-02 16:27:28 203

原创 Git详解(三) 项目协作

裸库裸库即没有工作区的 Git 仓库,一般用于服务器上。创建裸库很简单,只需要在初始化 Git 仓库时加上 --bare 参数即可:git init --bare创建裸库 barerepo,查看该目录下的文件:可以发现,裸库中并没有 .git 目录。相对的,原本应该存放在 .git 目录下的文件直接出现在 Git 仓库中。因此我们一般会将裸库目录命名为后面加上.git 的...

2020-03-30 13:40:42 260

原创 Git详解(补1) Git 对象

SHA-1 值,40位,前 2 位作为文件夹名,后 38 位作为文件名。一旦你将内容存储在了对象数据库中,那么可以通过cat-file命令从 Git 那里取回数据。 这个命令简直就是一把剖析 Git 对象的瑞士军刀。 为cat-file指定-p选项可指示该命令自动判断内容的类型,并为我们显示大致的内容:$ git cat-file -p d670460b4b4aece5...

2020-03-25 17:11:56 262 2

原创 Linux 如何从网上下载文件

将网络上的文件下载到使用 Linux 操作系统的计算机上,需要用到 wget <url> 指令,使用该指令可能会面临两个问题。首先,如何获取文件的下载 url?这需要你在浏览器上找到要下载文件的链接地址,然后右键 -> 复制链接地址,既可获取该文件的下载 url。以阿里提供的 Centos7 镜像为例,如下图:在 Linux 系统上使用 wget 指令即可下载该文件...

2020-02-14 16:35:48 21327

原创 Git详解(二) 远程操作

一次远程仓库推送注册 github 账号,创建仓库 testgit(相当于在本地的 testgit 文件夹执行 git init而生成的Git仓库)。将 github 远程仓库添加到本地,并为该远程仓库创建别名(别名通常使用 origin ):git remote add originhttps://github.com/BWHN/test.git此时 github...

2020-01-09 14:47:02 3809

原创 Git详解(一) 本地操作

写在前面对于一门技术而言,20% 的知识可以解决你工作中遇到的80% 的问题,而剩下的80% 属于冷门知识,你可能很少会用到它们。对于 Git 而言,亦是如此。因此,我不可能将全部 Git 相关的知识点尽数列出,这也是不切实际的,因为技术总是在进步,在更新,在迭代。我能做的唯有将这门技术的精华与原理尽可能的说与你听,当然这其中必然掺杂着描述上的错误抑或本人理解上的不正确。所以我希望你可...

2020-01-01 16:59:36 1283

原创 Vmware Workstation Pro 15 +Ubuntu19 无法联网

解决方法:1、点击菜单栏【编辑】->【虚拟网络编辑器】。2、点击【更改设置】,获取管理员权限。然后点击【还原默认设置】。3、进入Ubuntu系统,即可上网。...

2019-11-01 11:33:47 384 1

原创 Vmware Workstation Pro 15 + Ubuntu19 不能自适应窗口大小

解决方法:安装VMware Tools(如果你的【安装VMware Tools】选项是灰色的,解决方法见文末)步骤:1、进入Ubuntu系统后,点击菜单栏的的【虚拟机】->【安装vmware tools】。2、点击【Files】,即可在左侧菜单栏看到VMware Tools的CDROM图标。点击该图标,就可以看到压缩文件VMwareTools-10.3.10-13959562....

2019-11-01 11:19:47 1916

原创 Java基础(番外) 为什么匿名内部类只能访问final类型局部变量

问题再现首先我们将该问题演示一下。Java8之前,在匿名内部类中访问外部方法的局部变量,该局部变量必须显式声明为final类型。// JDK 1.7public class TestInnerClass { @SuppressWarnings("unused") private void function() { final int localvar = 1; ne...

2019-10-30 17:49:05 396

原创 Java设计模式:23种设计模式(一) 单例模式

目录什么是单例单例的利与弊单例模式实现懒汉式单例双重检查锁定——DCL(Double Check Lock)饿汉式单例懒汉式与饿汉式的不同其他单例模式实现静态内部类单例枚举单例登记式单例破坏单例的方式及解决方法反序列化反射克隆什么是单例单例模式(Singleton Pattern)被认为是最简单、最易理解的设计模式。但事实上,要用...

2019-10-15 16:51:07 300

转载 Java8新特性(番外) 使用Optional的正确姿势

我们知道Java8增加了一些很有用的API,其中一个就是Optional。如果对它不稍假探索,只是轻描淡写的认为它可以优雅的解决 NullPointException的问题,于是代码就开始这么写了:Optional<User> user = ......if (user.isPresent()) { return user.getOrders();} else {...

2019-09-18 14:41:34 1812 2

原创 Java基础(九) IO流 —— 字符流

导航字符流字符流与字节流的关系FileReader异常与close()read()改进FileWriter异常和追加写入write()缓冲区自定义缓冲区用字符流读取非纯文本文件文件拷贝LineNumberReaderreadLine()lineNumber装饰设计模式InputStreamReader&OutputSt...

2019-09-03 17:47:38 466

原创 Java基础(八) IO流 —— 字节流

导航IO流是什么IO流的分类字节流FileInputStream异常read()close()改进read()方法的返回值为什么是int类型而非byte类型FileOutputStreamFileOutputStream的FileNotFoundExceptionwrite()追加写入文件拷贝文件拷贝——全缓存文件拷贝——部分缓存...

2019-08-12 22:02:55 520

原创 算法(一) 递归

什么是递归递归是指在方法(函数)定义中调用方法(函数)自身。下面的例子就是最简单的递归:public class TestRecursion { public static void main(String[] args) { f(); } static void f() { f(); }}运行上面的代码会出现异常StackOverflowError(堆...

2019-07-22 15:53:05 141

原创 Java8新特性(五) default与默认方法

导航default默认方法默认方法与冲突类与接口方法冲突父接口与子接口方法冲突接口与接口方法冲突defaultdefault是Java8新增的一个关键字,该关键字用于在接口中声明方法,使用default声明的方法称为默认方法。默认方法在Java8之前接口中声明的方法全部都是抽象方法,不可以有具体实现,实现接口的类需要重写接口中声明的每个方法。但是从Ja...

2019-05-18 17:54:50 2471 7

原创 Java基础(三) 数据类型与数组

这个系列的文章标题都是Java基础,但是并不打算谈一些所有语言共通的东西,比如变量赋值、循环、判断等等。我觉得学习一门语言应该把注意力更多的放在它的特性上,而不是太过关注语言的通性。废话不多说了,从这篇文章开始,正式进入java的学习吧。基本数据类型和引用数据类型java中的8种基本数据类型数值型 整型:byte、int、short、long 浮点型:float、double ...

2019-05-10 16:17:20 239

原创 JVM(一) 类加载

导航JVM的生命周期类加载机制类的生命周期类的加载、连接、初始化类的使用方式主动使用被动使用加载加载Class文件的方式查看类加载信息加载时机的不确定初始化反编译与字节码指令接口初始化接口与类初始化的不同初始化的顺序数组与被动使用JVM的生命周期程序正常执行结束 调用System.exit()方法 程序执行过程中出现异...

2019-05-10 10:42:58 223

原创 Java基础(一) 环境搭建(2019.10.18更新版)

导航基本概念JDK下载与安装JDK下载JDK安装Java环境变量配置Path环境变量配置CLASSPATH环境变量配置测试配置正确Hello World!基本概念Java所谓的一处编程,处处运行,并不是指Java语言具有跨平台的特性,其本质是各个平台上有对应的Java虚拟机(JVM),是不同平台的Java虚拟机实现了对相同代码的编译运行。JRE(J...

2019-05-04 13:02:48 246

原创 java基础(11) 反射

谈到反射,可能我们会觉得很陌生,因为平时的开发似乎根本没有用到这个概念。但结果恰恰相反,反射是与我们日常开发关联最密切的东西。举个例子,在当我们使用eclipse写代码的时候,在任意一个对象的后面写一个点就会罗列出来该对象的所有属性和方法,这其实就是使用反射实现的。再比如使用框架(如SpringBoot)的时候需要写一些配置文件,这些配置文件也是通过反射注入到你的代码中的。例如这样:sp...

2019-04-25 16:06:03 206

原创 Java基础(番外) Java基本类型和引用类型数据作为参数传递的区别

引用类型数据作为参数看这样一个例子:public class TestReferenceData { public static void main(String[] args) { String a = "aaa"; System.out.println(a); change(a); System.out.println(a); } private sta...

2019-04-22 18:00:27 752 2

原创 JavaScript键值对数据存取

取值有如下键值对:arr = { a: 3, b: 4, c: 5 }arr中键的类型是字符型,可以通过三种方式取值:方式一: arr.a方式二: arr['a']方式三: var key= 'a', arr[key] // 用一个变量记录键值,通过变量从键值对中取值如果键值对键的类型是数值型,那么取值的方式会稍有不同。arr2= { 1...

2019-04-15 17:24:36 8335

原创 java8新特性(四) Collector(收集器)

导航引例Collector什么是CollectorCollector工作原理特征值自定义CollectorCollectors详解求值均值:averaging元素个数:counting最值:maxBy、minBy和:summing、summarizing分组groupingBygroupingByConcurrentpartition...

2019-04-15 16:55:47 10851 7

原创 Java8新特性(三) Optional与NullPointerException

导航引例Optional容器类有值状态与无值状态三种方法创建Optional对象Optional操作详解取值isPresent和ifPresentfilter、map、flatMap注意点引例说起NullPointerException你肯定不会陌生,因为它大概是我们日常开发中碰到最多的问题。为了避免空指针异常的出现,我们常常需要做很多的逻辑判断。下...

2019-04-08 17:44:00 1903 2

空空如也

空空如也

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

TA关注的人

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