自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学过的东西,讲不出来等于没学。

一步一个脚印,定期回顾,越着急学的越慢。

  • 博客(149)
  • 资源 (5)
  • 收藏
  • 关注

原创 并发编程juc笔记

方法二,使用 Runnable 配合 Thread把【线程】和【任务】(要执行的代码)分开方法三,FutureTask 配合 ThreadFutureTask 能够接收 Callable 类型的参数,用来处理有返回结果的情况3.3 查看进程线程的方法windows任务管理器可以查看进程和线程数,也可以用来杀死进程tasklist 查看进程taskkill 杀死进程linuxps -fe 查看所有进程ps -fT -p 查看某个进程(PID)的所有线程kill 杀死进程top

2022-10-07 14:56:28 860 1

原创 分布式锁总结

判断是否自己的锁,如果是自己的锁,执行删除操作。thenelsereturn 0endkey: lockarg: uuid可重入锁加锁流程:ReentrantLock.lock() --> NonfairSync.lock() --> AQS.acquire(1) --> NonfairSync.tryAcquire(1) --> Sync.nonfairTryAcquire(1)

2022-10-05 22:44:52 906

原创 分布式锁笔记

在应用开发中,特别是web工程开发,通常都是并发编程,不是多进程就是多线程。这种场景下极易出现线程并发性安全问题,此时不得不使用锁来解决问题。在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下,如何保证不同进程、不同服务、不同机器的线程安全问题,jdk并没有给我们提供既有的解决方案。此时,我们就必须借助于相关技术手动实现了。目前主流的实现有以下方式

2022-10-04 12:53:32 887

原创 Netty04-优化与源码

序列化,反序列化主要用在消息正文的转换上目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下为了支持更多序列化算法,抽象一个 Serializer 接口提供两个实现,我这里直接将实现加入了枚举类 Serializer.Algorithm 中增加配置类和配置文件配置文件修改编解码器其中确定具体消息类型,可以根据消息类型字节获取到对应的。

2022-10-04 12:42:34 166

原创 Netty03-进阶

服务端代码客户端代码希望发送 10 个消息,每个消息是 16 字节服务器端的某次输出,可以看到一次就接收了 160 个字节,而非分 10 次接收1.2 半包现象客户端代码希望发送 1 个消息,这个消息是 160 字节,代码改为为现象明显,服务端修改一下接收缓冲区,其它代码不变服务器端的某次输出,可以看到接收的消息被分为两节,第一次 20 字节,第二次 140 字节1.3 现象分析粘包半包本质是因为 TCP 是流式协议,消息无边界以解决粘包为例输出,略让所有数据包长度固定(假设长度为 8

2022-10-04 12:41:55 115

原创 Netty02-入门

详细分析如下。

2022-10-04 12:41:16 311

原创 Netty01-nio

non-blocking io 非阻塞 IOchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层channelbuffer常见的 Channel 有buffer 则用来缓冲读写数据,常见的 buffer 有selector 单从字面意思不好理解,需要结合服务器的设计演化来理解它的用途socket1t

2022-10-04 12:40:00 496

原创 cat笔记

在这一部分我们主要介绍以下3部分内容:什么是调用链监控什么是CATCAT报表介绍单体应用架构说明:​ 全部功能集中在一个项目内(All in one)。在单体应用的年代,分析线上问题主要靠日志以及系统级别的指标。微服务架构架构说明:​ 将系统服务层完全独立出来,抽取为一个一个的微服务。当我们开始微服务架构之后,服务变成分布式的了,并且对服务进行了拆分。当用户的一个请求进来,会依次经过不同的服务节点进行处理,处理完成后再返回结果给用户。那么在整个处理的链条中,如果有任何一个节点出现了延迟

2022-10-04 12:29:59 1289

原创 JAVA面试 分布式

CAP 定理:最多三选二,无法兼得,通常在 CP 或者 AP 之间做出选择CP 和 AP 之间需要做权衡,其实根据需求不同,也可以将一致性划分成几个级别,在这些级别里做一个权衡。

2022-09-30 09:41:30 244

原创 JAVA面试 缓存

数据类型实际描述的是 value 的类型,key 都是 string,常见数据类型(value)有。

2022-09-30 09:40:39 149

原创 JAVA面试 数据库

读到其它事务未提交的数据(最新的版本)错误现象:有脏读、不可重复读、幻读现象两个账户都为 10001号账户2000, 2号账户1000读到其它事务已提交的数据(最新已提交的版本)错误现象:有不可重复读、幻读现象使用场景:希望看到最新的有效值两个账户都为 10001号账户2000, 2号账户1000在事务范围内,多次读能够保证一致性(快照建立时最新已提交版本)错误现象:有幻读现象,可以用加锁避免使用场景:事务内要求更强的一致性,但看到的未必是最新的有效值存在 1,2 两个账户。

2022-09-30 09:39:58 179

原创 JAVA面试框架

refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:onRefresh。

2022-09-28 14:58:18 195

原创 JAVA面试虚拟机

说明从这张图学到三点从这张图可以学到。

2022-09-28 14:57:39 144

原创 JAVA面试并发

分别是五种状态的说法来自于操作系统层面的划分。

2022-09-28 14:40:51 271

原创 JAVA面试基础

有一个有序表为 1,5,8,11,19,22,31,35,40,45,48,49,50 当二分查找值为 48 的结点时,查找成功需要比较的次数。使用二分法在序列 1,4,6,7,15,33,39,50,64,78,75,81,89,96 中查找元素 81 时,需要经过( )次比较。② A[M] > T,中间值右侧的其它元素都大于 T,无需比较,中间索引左边去找,M - 1 设置为右边界,重新查找。将数组分为两个子集,排序的和未排序的,每一轮从未排序的子集中选出最小的元素,放入排序子集。

2022-09-28 14:39:17 201

原创 HashMap集合(高级)

上述我们大概阐述了HashMap底层存储数据的方式。为了方便大家更好的理解,我们结合一个存储流程图来进一步说明一下:(jdk8存储过程)说明:1.size表示 HashMap中K-V的实时数量 , 注意这个不等于数组的长度。2.threshold( 临界值) =capacity(容量) * loadFactor( 加载因子 )。这个值是当前已占用数组长度的最大值。size超过这个临界值就重新resize(扩容),扩容后的 HashMap 容量是之前容量的两倍。

2022-09-28 14:30:36 210

原创 我的前端合集

HTML学习笔记「学习笔记」CSS基础(1)「学习笔记」CSS基础(2)「学习笔记」CSS基础(3)「学习笔记」CSS基础(4)「学习笔记」CSS基础(5)「学习笔记」HTML5&CSS3提高6(上)H5代码规范「学习笔记」品优购项目-上(页面公共部分 )「学习笔记」品优购项目-下「学习笔记」css提高7(下)「学习笔记」移动Web开发之流式布局8(百分比布局)「学习笔记」移动Web开发之flex布局9「学习笔记」移动Web开发之rem适配布局10「学习笔记」黑马面面布局开发「学习笔记」移动Web开发之响应

2022-09-20 17:07:32 292

原创 react其他

父子组件兄弟组件(非嵌套组件)祖孙组件(跨级组件)在package.json中追加如下配置优点:配置简单,前端请求资源时可以不加任何前缀。缺点:不能配置多个代理。工作方式:上述方式配置代理,当请求了3000不存在的资源时,那么该请求会转发给5000 (优先匹配前端资源)

2022-09-20 16:55:55 93

原创 react课件

官网中文官网:介绍描述用于动态构建用户界面的 JavaScript 库(只关注于视图)由Facebook开源React的特点声明式编码组件化编码React Native 编写原生应用高效(优秀的Diffing算法)React高效的原因使用虚拟(virtual)DOM, 不总是直接操作页面真实DOM。DOM Diffing算法, 最小化页面重绘。

2022-09-20 16:51:04 549

原创 开发实用工具推荐

数据库文档https://gitee.com/leshalv/screw进入screw-core模块,resoures/mysql.properties 中,修改数据库连接。在这个模块中的 test/ cn.smallbun.screw.core.produce ,MySQLDocumentationBuilderTest类中运行。代码生成https://gitee.com/renrenio/renren-fasthttps://gitee.com/renrenio/renren-se

2022-05-25 17:23:57 172 2

原创 webpack5原理

介绍本章节我们主要学习:loader 原理自定义常用 loaderplugin 原理自定义常用 pluginLoader 原理loader 概念帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。loader 执行顺序分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > in

2022-05-21 12:21:52 229

原创 webpack5 react 和 vue 脚手架

介绍我们将使用前面所学的知识来从零开始搭建 React-Cli 和 Vue-cli。React 脚手架开发模式配置// webpack.dev.jsconst path = require("path");const ESLintWebpackPlugin = require("eslint-webpack-plugin");const HtmlWebpackPlugin = require("html-webpack-plugin");const ReactRefreshWebpackPl

2022-05-21 12:20:22 510

原创 webpack5优化

介绍本章节主要介绍 Webpack 高级配置。所谓高级配置其实就是进行 Webpack 优化,让我们代码在编译/运行时性能更好~我们会从以下角度来进行优化:提升开发体验提升打包构建速度减少代码体积优化代码运行性能提升开发体验SourceMap为什么开发时我们运行的代码是经过 webpack 编译后的,例如下面这个样子:/* * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "deve

2022-05-21 12:18:24 855 1

原创 webpack5基础

前言为什么需要打包工具?开发时,我们会使用框架(React、Vue),ES6 模块化语法,Less/Sass 等 css 预处理器等语法进行开发。这样的代码要想在浏览器运行必须经过编译成浏览器能识别的 JS、Css 等语法,才能运行。所以我们需要打包工具帮我们做完这些事。除此之外,打包工具还能压缩代码、做兼容性处理、提升代码性能等。有哪些打包工具?GruntGulpParcelWebpackRollupVite…目前市面上最流量的是 Webpack,所以我们主要以 Webpa

2022-05-21 12:13:22 402

原创 spring源码解读

容器与 bean1) 容器接口BeanFactory 接口,典型功能有:getBeanApplicationContext 接口,是 BeanFactory 的子接口。它扩展了 BeanFactory 接口的功能,如:国际化通配符方式获取一组 Resource 资源整合 Environment 环境(能通过它获取各种来源的配置信息)事件发布与监听,实现组件之间的解耦可以看到,我们课上讲的,都是 BeanFactory 提供的基本功能,ApplicationContext

2022-05-19 09:44:30 2128 1

原创 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义

分层领域模型规约:DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。AO( Application Object):应用对象。 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。VO( View Object):

2022-05-17 17:28:56 21757 5

原创 vue3+ts项目创建

用vue脚手架创建项目运行 vue create 项目文件夹名称或 vue ui 图形化配置项目vue ui

2022-05-16 09:20:49 276

原创 Vue3+TS(下)Vue3 教学全集

1. 认识Vue31) 了解相关信息Vue.js 3.0 “One Piece” 正式版在今年9月份发布2年多开发, 100+位贡献者, 2600+次提交, 600+次PRVue3支持vue2的大多数特性更好的支持Typescript2) 性能提升:打包大小减少41%初次渲染快55%, 更新渲染快133%内存减少54%使用Proxy代替defineProperty实现数据响应式重写虚拟DOM的实现和Tree-Shaking3) 新增特性Composition (组合)

2022-05-12 15:40:11 1513

原创 Vue3+TS(上)TypeScript 教学全集

1. 基础类型TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。布尔值最基本的数据类型就是简单的 true/false 值,在JavaScript 和 TypeScript 里叫做 boolean(其它语言中也一样)。let isDone: boolean = false;isDone = true;// isDone = 2 // error数字和 JavaScript 一样,TypeScript 里的所有数字都是浮点数。 这

2022-05-12 15:36:17 2025

转载 Git各指令的本质

[基本概念][1 Git的优势]Git是一个分布式代码管理工具,在讨论分布式之前避免不了提及一下什么是中央式代码管理仓库中央式:所有的代码保存在中央服务器,所以提交必须依赖网络,并且每次提交都会带入到中央仓库,如果是协同开发可能频繁触发代码合并,进而增加提交的成本和代价。最典型的就是svn分布式:可以在本地提交,不需要依赖网络,并且会将每次提交自动备份到本地。每个开发者都可以把远程仓库clone一份到本地,并会把提交历史一并拿过来。代表就是Git那Git相比于svn有什么优势呢?打个比方:“巴拉

2022-05-11 09:33:01 93

转载 跨域的请求在服务端会不会真正执行?

上周在群里提了个问题,这是我平时面试经常会问到的一个问题,引起了大家非常激烈的讨论。![](https://img-blog.csdnimg.cn/img_convert/b480fa65dbf32cdf480a3bf0457c977d.png#clientId=ub2602823-bcca-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u036f8c78&margin=[object Object]&amp

2022-05-11 09:21:18 401

原创 SpringBoot2整合常用第三方技术与运维

SpringBoot文档更新日志版本更新日期操作描述v1.02021/11/14A基础篇v1.0.12021/11/30U更新基础篇错别字若干,不涉及内容变更v2.02021/12/01A运维实用篇V3.02022/2/21A开发实用篇V4.02022/3/29A原理篇前言​ 很荣幸有机会能以这样的形式和互联网上的各位小伙伴一起学习交流技术课程,这次给大家带来的是Spring家族中比较重要的一门技术课程——Sprin

2022-04-26 18:13:31 997

原创 SpringBoot2整合微服务常用第三方技术与原理解析

SpringBoot开发实用篇​ 怀着忐忑的心情,开始了开发实用篇文档的编写。为什么忐忑?特喵的债欠的太多,不知道从何写起。哎,不煽情了,开工。​ 运维实用篇完结以后,开发实用篇采用日更新的形式发布给各位小伙伴,基本上是每天一集,目前已经发布完毕。看评论区,好多小伙伴在求文档,所以赶紧来补文档,加班加点把开发实用篇的文档刨出来。​ 开发实用篇中因为牵扯到SpringBoot整合各种各样的技术,由于不是每个小伙伴对各种技术都有所掌握,所以在整合每一个技术之前,都会做一个快速的普及,这样的话内容整个

2022-04-26 18:13:13 1522

原创 MySQL8.0.26-Linux版安装包 安装和卸载

MySQL8.0.26-Linux版安装1. 准备一台Linux服务器云服务器或者虚拟机都可以;Linux的版本为 CentOS7;2. 下载Linux版MySQL安装包https://downloads.mysql.com/archives/community/3. 上传MySQL安装包4. 创建目录,并解压mkdir mysqltar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql5. 安装mysql的安装包cd

2022-04-26 11:06:03 631

原创 mysql集群,主从同步,读写分离,水平拆分,垂直拆分,双主双从+mycat

主从复制MySQL主从复制的核心就是 二进制日志,具体的过程如下:从上图来看,复制分成三步:Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log 。slave重做中继日志中的事件,将改变反映它自己的数据。搭建准备准备好两台服务器之后,在上述的两台服务器中分别安装好MySQL,并完成基础的初始化准备(安装、密码配置等操作)工作。 其中:192.168.200.200

2022-04-25 13:15:07 2510 1

原创 centos7安装MyCat以及web管理Mycat-web(mycat-eye)

JDK安装JDK具体安装步骤如下:1. 上传安装包使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux由于上述在进行文件上传时,选择的上传目录为根目录 /,上传完毕后,我们执行指令 cd / 切换到根目录下,查看上传的安装包。2. 解压安装包执行如下指令,将上传上来的压缩包进行解压,并通过-C参数指定解压文件存放目录为 /usr/local。tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local3. 配置环境变量使

2022-04-24 16:35:00 454

原创 微服务笔记合集

SpringCloud01Nacos安装指南SpringCloud实用篇02Nacos集群搭建Docker实用篇安装DockerRabbitMQRabbitMQ部署指南分布式搜索引擎01分布式搜索引擎02分布式搜索引擎03安装elasticsearch微服务保护Jmeter快速入门sentinel规则持久化分布式事务seata的部署和集成分布式缓存Redis集群安装Canal安装OpenResty案例导入说明RabbitMQ-高级篇RabbitMQ部署指南2微

2022-04-22 18:03:14 2441

原创 Nginx 基础使用、配置文件详解、Keepalived高可用

Nginx 基础使用目录结构进入Nginx的主目录我们可以看到这些文件夹client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件client_body_temp fastcgi_temp proxy_temp scgi_tempconf用来存放配置文件相关html用来存放静态文件的默认目录 html、css等sbi

2022-04-22 17:10:20 4065

原创 微服务架构从0到1,搭建全过程记录,手把手教学,连载中...

准备Linux主机centos7.9虚拟机安装,设置磁盘挂载架构设计微服务高性能高可用架构设计安装Keepalived如需关闭防火墙(不建议):# 关闭systemctl stop firewalld# 禁止开机启动防火墙systemctl disable firewalld用yum的方式安装yum install keepalived配置主主机使用yum安装后配置文件在/etc/keepalived/keepalived.conf配置文件内容很多,全部删掉替换成下面的,

2022-04-22 16:23:24 1236

原创 微服务高性能高可用架构设计

服务入口Keepalived用户发起一个请求经过dns、网络、最后到机房的物理网关,网关后面就是入口Nginx服务器用Keepalived做入口Nginx服务器的容灾,Keepalived配置一个ip地址,且与主备服务器之间建立心跳连接,配置的ip地址挂在主服务器上,主服务器宕机后,副服务器接手ip。(类似VMware创建虚拟机的时候选择桥接模式,通过虚拟机的ip也能找到宿主机)只需将这个内网ip映射到外网,即可实现入口服务器的高可用。根据请求路径的哈希分配到下属Nginx集群原因:如果默认轮

2022-04-22 15:37:55 2992

typora1.1.5全套安装包

typora1.1.5全套安装包

2022-03-07

MongoDB Linux 压缩包

MongoDB Linux 压缩包

2022-01-27

vue教学代码.zip

vue教学代码.zip

2021-12-03

vue3快速上手教学笔记.md

vue3快速上手教学笔记.md

2021-12-03

尚硅谷vue教程课件.pdf

尚硅谷vue教程课件.pdf

2021-12-03

空空如也

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

TA关注的人

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