自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

warybee

诗和远方...

  • 博客(91)
  • 收藏
  • 关注

原创 MySQL性能分析工具——如何快速定位SQL执行慢的原因?

我们在做SQL优化的时候,应该从哪几方面定位SQL执行慢的原因呢?是索引设计的问题?参数配置的问题?还是需要扩容了呢?本文介绍了比较常用的三种工具来定位和分析慢SQL,本文主要内容如下:通过慢查询日志定位执行慢的 SQL;使用 EXPLAIN 分析该 SQL 语句是否使用到了索引,以及具体的数据表访问方式;使用SHOW PROFILE 进一步分析SQL的每一步执行时间以及CPU、IO等资源使用情况。

2022-01-22 15:02:02 4429

原创 一看就会Redis快速入门教程

本文目录1.Redis介绍1. 1.Redis使用场景2.Linux上安装Redis3.Redis数据类型3.1 string类型3.2 list类型3.3 set类型3.4 sortedset有序集合类型3.5 hash类型3.6 bitmap类型3.7 geo地理位置类型3.8 stream类型1.Redis介绍Redis是一个开源的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zse

2021-11-24 22:10:40 932

原创 彻底搞懂混而不乱的Java日志体系

文章目录1 混而不乱的Java日志体系1.1 Java日志发展史1.2 JUL1.3 log4j1.3 .1 日志级别1.3.2 配置文件1.4 JCL1.5 Slf4j+logback1.5.1 依赖1.5.2 使用1.5.3 日志级别1.5.4 logback配置文件① 根节点② property③ 子节点 appenderⅠ ConsoleAppenderⅡ FileAppenderⅢ **RollingFileAppender**④ 子节点 logger⑤ 子节点Root⑥ logback配置

2021-11-03 17:37:33 244

原创 Java Semaphore详解

本文目录1、介绍2、主要方法3、Semaphore登录限流示例1、介绍Semaphore(信号量)是用来控制同时访问特定资源的线程数量,通过协调各个线程以保证合理地使用公共资源。Semaphore通过使用计数器来控制对共享资源的访问。 如果计数器大于0,则允许访问。 如果为0,则拒绝访问。 计数器所计数的是允许访问共享资源的许可。 因此,要访问资源,必须从信号量中授予线程许可。2、主要方法void acquire() :从信号量获取一个许可,如果无可用许可前将一直阻塞等待,void ac

2020-12-17 16:23:00 11206 5

原创 一文搞懂java中的volatile关键字

本来想写一篇关于Volatile的文章,这里发现了一篇不错的章。原文地址:https://www.cnblogs.com/dolphin0520/p/3920373.html

2020-12-16 15:23:21 106

原创 一文搞懂java中的锁

本文转载自美团技术团队,原文标题:不可不说的Java“锁”事原文地址:https://tech.meituan.com/2018/11/15/java-lock.html本文目录1、前言2、乐观锁 VS 悲观锁3、自旋锁 VS 适应性自旋锁4、无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁4.1、无锁4.2、偏向锁4.3、轻量级锁4.4、重量级锁5、公平锁 VS 非公平锁6、可重入锁 VS 非可重入锁7、独享锁 VS 共享锁8、结语1、前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当

2020-12-15 21:59:30 2331 2

原创 RabbitMQ快速入门到实战系列文章

RabbitMQ系列教程之前写了一些RabbitMQ的文章,这里做一下汇总。1、RabbitMQ Windows/CentOS7平台安装手册2、RabbitMQ中一些重要概念3、RabbitMQ Exchange类型之Direct Exchange4、RabbitMQ Exchange类型之Topic Exchange5、RabbitMQ Exchange类型之fanout Exchange6、RabbitMQ Exchange类型之headers Exchang7、Confirm消息确认机

2020-12-10 14:49:04 133

原创 centos7挂载数据盘/新磁盘

(注:挂载后,挂载目录中的数据会被覆盖,建议找空目录进行挂载,如果操作了此步,则直接操作第4步,做开机自动挂载,不操作的继续下步操作。查看磁盘(注:正常在Centos7中第一块数据盘标识一般是/dev/sda,第二块数据盘标识一般是/dev/sdb)使用命令:mkfs.ext4 /dev/sdb1(ext4为磁盘格式化的格式)对分区磁盘进行格式化.接下来将磁盘信息写入开机文件,使用命令: vi /etc/fstab。挂载分区命令:mount /dev/sdb1 /www。在根目录新建www目录,并挂载。

2024-05-14 16:23:03 228

原创 并发编程中原子性、可见性、有序性问题源头

在单核时代,所有的线程都是在一颗 CPU 上执行,CPU 缓存与内存的数据一致性容易解决。因为所有线程都是操作同一个 CPU 的缓存,一个线程对缓存的写,对另外一个线程来说一定是可见的。例如在下面的图中,线程 A 和线程 B 都是操作同一个 CPU 里面的缓存,所以线程 A 更新了变量 V 的值,那么线程 B 之后再访问变量 V,得到的一定是 V 的最新值(线程 A 写过的值)。

2022-02-07 16:23:32 394

原创 Java汇编工具 AsmTools的使用

AsmTools 是一组用于创建和解构 Java 类文件的程序,简单来说就是可以把java生成的class文件,生成汇编代码,然后再生成class

2022-01-17 20:37:25 834

原创 Java并发工具Exchanger线程间交换数据

Exchanger是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交 换

2022-01-13 17:40:33 509

原创 Java并发工具CyclicBarrier使用详解

CyclicBarrier是一个同步器,允许一组线程相互之间等待,直到到达某个公共屏障点 (common barrier point),再继续执行。因为`CyclicBarrier` 的计数器是可以循环利用的,所以称它为循环(Cyclic) 的 Barrier。CyclicBarrier常用于多线程计算数据,当所有线程都完成执行后,在`CyclicBarrier`回调线程中合并计算。

2022-01-13 11:22:12 833 1

原创 Java并发工具CountDownLatch使用详解

通过使用 CountDownLatch可以使当前线程阻塞,等待其他线程完成给定任务。可以类比旅游团导游要等待所有的游客到齐后才能去下一个景点。CountDownLatch主要应用场景:一个线程等待多个线程完成给定任务后,然后执行后续的操作的场景。

2022-01-12 18:36:37 14193

原创 Java集合HashMap的6种遍历方式

1 Foreach entrySet方式 @Test public void test1(){ HashMap<Integer,String> languages=new HashMap<>(); languages.put(1,"java"); languages.put(2,"C#"); languages.put(3,"javascript"); languages.p

2022-01-06 14:06:34 236

原创 Winform使用委托实现父子窗体传值

Winform使用委托实现父子窗体传值

2021-12-31 15:49:25 865

原创 使用Dockerfile自定义Docker镜像

Dockerfile就是可以让我们个性化定制Docker镜像,来满足实际工作中各式各样的需求

2021-12-25 22:29:50 1220

原创 容器高效管理工具Docker Compose。想不想试试一条命令启动N个容器?

Docker Compose 是用来定义和运行一个或多个容器的工具。使用 compose 可以简 化容器镜像的构建以及容器的运行。比如,我们开发一个微服务项目,十几个项目,如果每个项目都执行`docker run`,需要执行十几次,是不是很崩溃????。使用 Compose,用 `YAML` 文件来配置这十几个项目的容器启动,一条命令搞定,并且你可以把这个`YAML`文件放到任何有docker环境的机器上执行。

2021-12-25 15:20:52 967

原创 Docker数据卷(Data Volumes)—Docker数据持久化及容器间共享数据

当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器时会一起删除。比如,我们启动了一个`mysql`容器,如果哪天我们把这个`mysql`容器给删除了,那数据也就一起删除了。使用**Docker数据卷**可以把这个`mysql`容器的数据保存到宿主主机。数据不会随着容器的删除而删除

2021-12-24 17:14:34 2105

原创 Docker快速入门教程

Docker快速入门教程。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上,也可以实现虚拟化。

2021-12-23 18:12:13 711

原创 elasticsearch快速开始——centos下elasticsearch和kibana安装与配置

Elasticsearch是一个基于Lucene库的搜索引擎。它可以近乎实时的存储、检索数 据。本身扩展性很好,可扩展到上百台服务器,处理PB级别的数据。Elasticsearch使用Java开发并通过简单的RestfulAPII来隐藏Lucene的复杂性, 从而让全文搜索变得简单。

2021-12-22 13:31:19 1660

原创 Kafka Consumer位移(Offset)提交——解决Consumer重复消费和消息丢失问题

消费者提交位移(offset),是消费者往一个名为`_consumer_offset`的特殊主题发送消息,消息中包含每个分区的位移量。它记录了 Consumer 要消费的下一条消息的位移。**切记是下一条消息的位移**,而不是目前最新消费消息的位移。

2021-12-17 10:11:04 10510

原创 Kafka producer拦截器与consumer拦截器(interceptor)

Producer 的Interceptor使得用户在消息发送前以及Producer回调逻辑前有机会对消息做 一些定制化需求,比如修改消息等。Producer允许指定多个Interceptor按照指定顺序作用于一条消 息从而形成一个拦截链(interceptor chain)。

2021-12-16 17:49:46 2099

原创 Kafka使用Avro序列化和反序列化

Apache Avro是一种与编程语言无关的序列化格式。提供了一种共享数据文件的方式。Avro 数据通过与语言无关的 schema 来定义。schema 通过 JSON 来描述,数据被序列化成二进制文件或 JSON 文件,不过一般会使用二进制文件。Avro 在读写文件时需要用到 schema,schema 一般会被内嵌在数据文件里。

2021-12-16 17:38:53 6481 2

原创 Kafka Java客户端快速上手——实现消息的发送与读取

1. Producer创建时,会创建一个Sender线程并设置为守护线程。 2. 生产消息时,内部其实是异步流程;生产的消息先经过**拦截器**->**序列化器-**>**分区器,**然后将消 息缓存在缓冲区(该缓冲区也是在Producer创建时创建)。3. 批次发送的条件为:缓冲区数据大小达到batch.size或者linger.ms达到上限,哪个先达到就算 哪个。4. 批次发送后,发往指定分区,然后落盘到broker;如果生产者配置了retrires参数大于0并且失 败原因允许重试,那么客户端内部

2021-12-15 22:15:55 1820

原创 Apache kafka快速入门与配置安装

- 日志收集:可以用Kafka可以收集各种服务的Log,通过Kafka以统一接口服务的方式开放 给各种Consumer;- 消息系统:解耦生产者和消费者、缓存消息等;- 用户活动跟踪:Kafka经常被用来记录Web用户或者App用户的各种活动,如浏览网页、搜索、点击 等活动,这些活动信息被各个服务器发布到Kafka的Topic中,然后消费者通过订阅这些Topic来做实时的 监控分析,亦可保存到数据库;- 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的 集中

2021-12-15 16:31:29 1109

原创 Redis事务和Redis乐观锁详解

1 Redis事务介绍Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis的事务是通过multi、exec、discard和watch这四个命令来完成的。Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。Redis将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行。Redis不支持回滚操作1.1 命令介绍multi:用于标记事务块的开始,Redis会将后续

2021-11-30 14:26:17 1061

原创 Redis常用配置总结

本文目录1. 常规命令1.1 `./redis-server /path/to/redis.conf`1.2 `include /path/to/local.conf`1.3 `loadmodule /path/to/my_module.so`1.4 `bind 127.0.0.1`1.5 `protected-mode yes`1.6 `port 6379`1.7 `tcp-backlog 511`1.8 `unixsocket /tmp/redis.sock unixsocketperm 700`1.9

2021-11-25 16:44:59 960

原创 MongoDB单机安全认证和授权

1. 用户管理1.1 添加用户语法db.createUser( { user: "账号", pwd: "密码", roles: [ {role:"角色", db:"安全认证的数据库"}, {role:"角色", db:"安全认证的数据库"} ] })user:创建的用户名称,如 admin、rootpwd:用户登录的密码roles:为用户分配的角色,不同的角色拥有不同的权限,参数是数组,可

2021-11-23 15:33:28 242

原创 Spring Cloud(5)分布式链路追踪技术 Sleuth + Zipkin

文章目录1.Spring Cloud Sleuth介绍2.相关术语3.Sleuth + Zipkin3.1 依赖坐标3.2 Http方式设置Zipkin3.3 MQ消息中间件设置Zipkin4 Zipkin服务构建5 运行结果1.Spring Cloud Sleuth介绍Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案。它与 Zipkin 集成能够跟踪微服务中的请求链路信息,把 Sleuth 的数据信 息发送给 Zipkin 进⾏聚合,利⽤ Zipkin 存储并展

2021-11-17 21:12:17 579

原创 Spring Cloud(4)Spring Cloud Gateway快速入门

本文目录1 Gateway简介1.2 Gateway核心概念1.3 How It Works( GateWay⼯作过程)2 快速开始2.1 创建网关工程,并导入依赖2.2 配置文件2.3 启动类3 GateWay动态路由4 GateWay路由规则5 GateWay过滤器5.1 GateWayFilter5.2 GlobalFilter1 Gateway简介​ Spring Cloud GateWay是Spring Cloud的⼀个全新项⽬,⽬标是取代Netflix Zuul, 它基于Spring5

2021-11-13 21:35:06 105

原创 Spring Cloud(3)一看就懂,Spring Cloud OpenFeign快速入门

文章目录1.OpenFeign介绍2 .快速开始3 OpenFeign自定义配置3.1 日志配置3.2 契约(Contract)配置3.3 超时时间配置3.4 Feign 默认 Http Client 修改3.5 创建多个具有相同名称或 url 的 feign 客户端3.6 自定义拦截器实现认证逻辑3.7 Feign负载均衡4 Feign的配置属性1.OpenFeign介绍​ 在使用 Spring Cloud 开发微服务应用时,各个服务提供者都是以 HTTP 接口的形式对外提供服务,因此在服

2021-11-13 14:39:09 1568 1

原创 Spring Cloud(2)一看就懂,Hystrix快速入门

本文目录1.微服务中的雪崩效应1.2 雪崩效应解决方案2. Hystrix2.1 Hystrix介绍2.2 Hystrix现状2.3 Hystrix快速开始2.3.1 引⼊Hystrix依赖坐标2.3.2启动类开启熔断器2.3.3 `@HystrixCommand`定义服务降级处理⽅法2.4 Hystrix线程池隔离策略2.4.1 Hystrix默认线程策略2.4.2. 配置 Hystrix线程策略2.5 Hystrix熔断机制2.6 基于springboot的健康检查观察熔断状态2.7 Hystrix

2021-11-12 11:23:23 608

原创 Spring Cloud(1)Spring Cloud LoadBalancer客户端负载均衡组件

1.Spring Cloud LoadBalancer介绍Spring Cloud LoadBalancer是Spring Cloud官网提供的一个客户端负载均衡器,功能类似于Ribbon。在最新版本的Spring Cloud中Ribbon组件已经被剔除,Spring Cloud在Spring Cloud Commons项目中,添加了Spring cloud Loadbalancer作为新的负载均衡器。2. 快速开始本文实例使用的SpringCloud版本是:2020.0.4,SpringBoot版本

2021-11-12 11:14:11 1579

原创 Netty系列(5)Netty中解决TCP粘包和拆包

文章目录1 TCP 粘包和拆包介绍2 Netty 粘包演示3 Netty中解决TCP粘包和拆包1 TCP 粘包和拆包介绍TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle 算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的由于 TCP

2021-10-27 16:27:22 140

原创 Netty系列(4)Netty心跳检测机制

Netty心跳检测机制1 心跳检测使用场景长连接的应用场景非常的广泛,比如监控系统,IM系统,即时报价系统,推送服务等等。像这些场景都是比较注重实时性,如果每次发送数据都要进行一次DNS解析,建立连接的过程肯定是极其影响体验。而长连接的维护必然需要一套机制来控制。比如 HTTP/1.0 通过在 header 头中添加 Connection:Keep-Alive参数,如果当前请求需要保活则添加该参数作为标识,否则服务端就不会保持该连接的状态,发送完数据之后就关闭连接。HTTP/1.1以后 Keep-Al

2021-10-26 16:41:05 1005

原创 Netty系列(3)Netty核心模块、Future-Listener

这里写目录标题1 Netty核心API1.1 ChannelHandler1.2 ChannelPipeline1.3 ChannelHandlerContext1.4 ChannelOption1.5 ChannelFuture1.6 EventLoopGroup和实现类NioEventLoopGroup1.7 ServerBootstrap和Bootstrap1.8 Unpooled类2 Netty异步模型2.1 Future2.2 Future-Listener 机制1 Netty核心API1.

2021-10-20 21:23:33 202

原创 Netty系列(2)快速入门Netty线程模型、Netty入门程序、Netty任务队列

1 Netty线程模型不同的线程模式,对程序的性能有很大影响,在学习Netty线程模式之前,首先需要了解下 各个线程模 式, 最后看看 Netty 线程模型有什么优越性。目前存在的线程模型有:传统阻塞 I/O 服务模型Reactor 模式Reactor 单线程;单 Reactor多线程;主从 Reactor多线程1.1 传统阻塞 I/O 服务模型模型特点采用阻塞 IO 模式获取输入的数据每个连接都需要独立的线程完成数据的输入,业务处理,数据返回存在问题当并发数很大

2021-10-20 19:35:27 260

原创 Netty系列(1)Java NIO快速入门,一看就懂

文章目录1. NIO介绍1.1 NIO 三大核心原理示意图2.缓冲区(Buffer)2.1 Buffer常用API介绍2.1.1 缓冲区对象创建2.1.2 缓冲区对象添加数据2.1.3 缓冲区对象读取数据3 Channel3.1 Channel常用实现类3.2 FileChannel3.2.1 FileChannel本地文件写数据3.2.2 FileChannel读取本地文件3.2.3 使用FileChannel进行文件copy3.2.4 使用transferFrom方法完成copy3.2.5 直接在内存中

2021-10-19 16:23:12 196

原创 Java反射

21 反射基本用法1.1 常用接口public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException { Properties properties=new Properties(); prope

2021-09-16 10:56:20 98

原创 Sqlserver如何恢复/附加无ldf文件的数据库

执行如下命令CREATE DATABASE stockdataon (FileName='F:\project\workproject\DataBase\stockdata\stockdata.mdf')FOR ATTACH_REBUILD_LOG;FileName 为.mdf文件的路径

2021-08-26 11:22:53 513

空空如也

空空如也

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

TA关注的人

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