- 博客(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
1095
原创 分布式锁总结
判断是否自己的锁,如果是自己的锁,执行删除操作。thenelsereturn 0endkey: lockarg: uuid可重入锁加锁流程:ReentrantLock.lock() --> NonfairSync.lock() --> AQS.acquire(1) --> NonfairSync.tryAcquire(1) --> Sync.nonfairTryAcquire(1)
2022-10-05 22:44:52
985
原创 分布式锁笔记
在应用开发中,特别是web工程开发,通常都是并发编程,不是多进程就是多线程。这种场景下极易出现线程并发性安全问题,此时不得不使用锁来解决问题。在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下,如何保证不同进程、不同服务、不同机器的线程安全问题,jdk并没有给我们提供既有的解决方案。此时,我们就必须借助于相关技术手动实现了。目前主流的实现有以下方式
2022-10-04 12:53:32
2156
原创 Netty04-优化与源码
序列化,反序列化主要用在消息正文的转换上目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下为了支持更多序列化算法,抽象一个 Serializer 接口提供两个实现,我这里直接将实现加入了枚举类 Serializer.Algorithm 中增加配置类和配置文件配置文件修改编解码器其中确定具体消息类型,可以根据消息类型字节获取到对应的。
2022-10-04 12:42:34
218
原创 Netty03-进阶
服务端代码客户端代码希望发送 10 个消息,每个消息是 16 字节服务器端的某次输出,可以看到一次就接收了 160 个字节,而非分 10 次接收1.2 半包现象客户端代码希望发送 1 个消息,这个消息是 160 字节,代码改为为现象明显,服务端修改一下接收缓冲区,其它代码不变服务器端的某次输出,可以看到接收的消息被分为两节,第一次 20 字节,第二次 140 字节1.3 现象分析粘包半包本质是因为 TCP 是流式协议,消息无边界以解决粘包为例输出,略让所有数据包长度固定(假设长度为 8
2022-10-04 12:41:55
175
原创 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
672
原创 cat笔记
在这一部分我们主要介绍以下3部分内容:什么是调用链监控什么是CATCAT报表介绍单体应用架构说明: 全部功能集中在一个项目内(All in one)。在单体应用的年代,分析线上问题主要靠日志以及系统级别的指标。微服务架构架构说明: 将系统服务层完全独立出来,抽取为一个一个的微服务。当我们开始微服务架构之后,服务变成分布式的了,并且对服务进行了拆分。当用户的一个请求进来,会依次经过不同的服务节点进行处理,处理完成后再返回结果给用户。那么在整个处理的链条中,如果有任何一个节点出现了延迟
2022-10-04 12:29:59
1582
原创 JAVA面试 分布式
CAP 定理:最多三选二,无法兼得,通常在 CP 或者 AP 之间做出选择CP 和 AP 之间需要做权衡,其实根据需求不同,也可以将一致性划分成几个级别,在这些级别里做一个权衡。
2022-09-30 09:41:30
388
原创 JAVA面试 数据库
读到其它事务未提交的数据(最新的版本)错误现象:有脏读、不可重复读、幻读现象两个账户都为 10001号账户2000, 2号账户1000读到其它事务已提交的数据(最新已提交的版本)错误现象:有不可重复读、幻读现象使用场景:希望看到最新的有效值两个账户都为 10001号账户2000, 2号账户1000在事务范围内,多次读能够保证一致性(快照建立时最新已提交版本)错误现象:有幻读现象,可以用加锁避免使用场景:事务内要求更强的一致性,但看到的未必是最新的有效值存在 1,2 两个账户。
2022-09-30 09:39:58
213
原创 JAVA面试框架
refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:onRefresh。
2022-09-28 14:58:18
249
原创 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
669
原创 HashMap集合(高级)
上述我们大概阐述了HashMap底层存储数据的方式。为了方便大家更好的理解,我们结合一个存储流程图来进一步说明一下:(jdk8存储过程)说明:1.size表示 HashMap中K-V的实时数量 , 注意这个不等于数组的长度。2.threshold( 临界值) =capacity(容量) * loadFactor( 加载因子 )。这个值是当前已占用数组长度的最大值。size超过这个临界值就重新resize(扩容),扩容后的 HashMap 容量是之前容量的两倍。
2022-09-28 14:30:36
306
原创 我的前端合集
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
327
原创 react其他
父子组件兄弟组件(非嵌套组件)祖孙组件(跨级组件)在package.json中追加如下配置优点:配置简单,前端请求资源时可以不加任何前缀。缺点:不能配置多个代理。工作方式:上述方式配置代理,当请求了3000不存在的资源时,那么该请求会转发给5000 (优先匹配前端资源)
2022-09-20 16:55:55
151
原创 react课件
官网中文官网:介绍描述用于动态构建用户界面的 JavaScript 库(只关注于视图)由Facebook开源React的特点声明式编码组件化编码React Native 编写原生应用高效(优秀的Diffing算法)React高效的原因使用虚拟(virtual)DOM, 不总是直接操作页面真实DOM。DOM Diffing算法, 最小化页面重绘。
2022-09-20 16:51:04
785
原创 开发实用工具推荐
数据库文档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
255
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
284
原创 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
634
原创 webpack5优化
介绍本章节主要介绍 Webpack 高级配置。所谓高级配置其实就是进行 Webpack 优化,让我们代码在编译/运行时性能更好~我们会从以下角度来进行优化:提升开发体验提升打包构建速度减少代码体积优化代码运行性能提升开发体验SourceMap为什么开发时我们运行的代码是经过 webpack 编译后的,例如下面这个样子:/* * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "deve
2022-05-21 12:18:24
970
1
原创 webpack5基础
前言为什么需要打包工具?开发时,我们会使用框架(React、Vue),ES6 模块化语法,Less/Sass 等 css 预处理器等语法进行开发。这样的代码要想在浏览器运行必须经过编译成浏览器能识别的 JS、Css 等语法,才能运行。所以我们需要打包工具帮我们做完这些事。除此之外,打包工具还能压缩代码、做兼容性处理、提升代码性能等。有哪些打包工具?GruntGulpParcelWebpackRollupVite…目前市面上最流量的是 Webpack,所以我们主要以 Webpa
2022-05-21 12:13:22
504
原创 spring源码解读
容器与 bean1) 容器接口BeanFactory 接口,典型功能有:getBeanApplicationContext 接口,是 BeanFactory 的子接口。它扩展了 BeanFactory 接口的功能,如:国际化通配符方式获取一组 Resource 资源整合 Environment 环境(能通过它获取各种来源的配置信息)事件发布与监听,实现组件之间的解耦可以看到,我们课上讲的,都是 BeanFactory 提供的基本功能,ApplicationContext
2022-05-19 09:44:30
2235
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
23707
5
原创 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
1618
原创 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
2279
转载 Git各指令的本质
[基本概念][1 Git的优势]Git是一个分布式代码管理工具,在讨论分布式之前避免不了提及一下什么是中央式代码管理仓库中央式:所有的代码保存在中央服务器,所以提交必须依赖网络,并且每次提交都会带入到中央仓库,如果是协同开发可能频繁触发代码合并,进而增加提交的成本和代价。最典型的就是svn分布式:可以在本地提交,不需要依赖网络,并且会将每次提交自动备份到本地。每个开发者都可以把远程仓库clone一份到本地,并会把提交历史一并拿过来。代表就是Git那Git相比于svn有什么优势呢?打个比方:“巴拉
2022-05-11 09:33:01
132
转载 跨域的请求在服务端会不会真正执行?
上周在群里提了个问题,这是我平时面试经常会问到的一个问题,引起了大家非常激烈的讨论。工作。 其中:192.168.200.200
2022-04-25 13:15:07
2598
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
512
原创 微服务笔记合集
SpringCloud01Nacos安装指南SpringCloud实用篇02Nacos集群搭建Docker实用篇安装DockerRabbitMQRabbitMQ部署指南分布式搜索引擎01分布式搜索引擎02分布式搜索引擎03安装elasticsearch微服务保护Jmeter快速入门sentinel规则持久化分布式事务seata的部署和集成分布式缓存Redis集群安装Canal安装OpenResty案例导入说明RabbitMQ-高级篇RabbitMQ部署指南2微
2022-04-22 18:03:14
2514
原创 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
4120
原创 微服务架构从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
1336
原创 微服务高性能高可用架构设计
服务入口Keepalived用户发起一个请求经过dns、网络、最后到机房的物理网关,网关后面就是入口Nginx服务器用Keepalived做入口Nginx服务器的容灾,Keepalived配置一个ip地址,且与主备服务器之间建立心跳连接,配置的ip地址挂在主服务器上,主服务器宕机后,副服务器接手ip。(类似VMware创建虚拟机的时候选择桥接模式,通过虚拟机的ip也能找到宿主机)只需将这个内网ip映射到外网,即可实现入口服务器的高可用。根据请求路径的哈希分配到下属Nginx集群原因:如果默认轮
2022-04-22 15:37:55
3081
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人