自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习笔记

不积跬步无以至千里,不积小流无以成江海

  • 博客(291)
  • 资源 (1)
  • 收藏
  • 关注

原创 Reactor 网络模型、Java代码实例

在 I/O 多路复用的场景下,当有数据处于就绪状态后,需要一个事件分发器(Event Dispather),它负责将读写事件分发给对应的读写事件处理器(Event Handler)。

2024-06-15 15:43:13 749 2

原创 Java Socket 网络编程实例(阻塞IO、非阻塞IO、多路复用Selector、AIO)

之前还有一篇文章:套接字进行网络连接流程, 如下图:socket()bind()listen()accept()read()write()close()close()socket()connect()write()read()close()流程图如下, 具体代码示例可以看下面的。

2024-06-02 17:14:06 568

原创 Linux C++ Socket 套接字、select、poll、epoll 实例

网络编程, 就是编写程序, 使两台联网的电脑可以交换数据,套接字是网络数据传输用的软件设备, 用来连接网络的工具在 linux中 socket被认为是文件中的一种, 在网络数据传输过程中, 使用文件I/O的相关函数套接字常用网络协议:TCP、UDP套接字进行网络连接流程, 如下图:创建服务器套接字socket()绑定端口bind()监听端口listen()接受客户端请求accept()读取客户端请求的数据read()返回客户端要响应的数据write()关闭与客户端的连接close()

2024-05-26 16:42:04 1080

原创 Java8 ConcurrentHashMap 存储、扩容源码阅读

ConcurrentHashMap 是线程安全且高效的 HashMap。

2024-05-12 22:58:14 814

原创 ReentrantLock源码阅读

lock锁, 基于AQS, 实现公平锁、非公平锁AQS可以阅读我这篇文章: 点击传送实现了Lock接口:2. 源码阅读2.1 属性2.2 构造函数构造函数:2.3 Sync队列同步器2.3.1 非公平尝试获取同步状态 nonfairTryAcquirestate为0● 直接CAS 尝试获取同步状态, compareAndSetState(0, acquires)● 成功设置当前线程占有锁 setExclusiveOwnerThread(current);当前线程已经获取锁:● sta

2024-04-14 20:35:20 385

原创 ThreadLocal核心源码阅读

ThreadLocal为每个使用该变量的线程提供独立的变量副本,因此每一个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。

2024-04-06 23:28:19 183

原创 AbstractQueuedSynchronizer 独占式源码阅读

*** 同步队列的头,懒惰地初始化。只能通过方法setHead修改* 注:如果Head存在,则保证其waitStatus不会已取消。*//*** 尾节点,enq 加入*//*** 同步状态*//*** 获取状态*//*** 设置状态*//*** CAS 设置状态*//***/

2024-03-23 17:50:29 815

原创 Java线程池ThreadPoolExecutor源码阅读

线程池先判断核心线程池是否已经已满,即工作线程数是否大于核心线程数,如果不是则创建核心工作线程执行该任务,否则下一步判断工作队列是否已经满了,如果队列没有满,则将该任务入队,否则进入下一步判断线程池中的线程是否已经满了,即是否大于最大线程数,如果不是则创建工作线程执行该任务,否则拒绝这个任务。

2024-03-10 18:54:27 877

原创 ArrayBlockingQueue 数组阻塞队列 源码阅读

数组阻塞队列。

2024-03-03 16:42:28 379 1

原创 SpringBoot整合Redis管道(pipeline)实例

1. Redis 之管道(pipeline执行一个Redis命令,Redis客户端和Redis服务器就需要执行以下步骤:客户端发送命令到服务器;服务器接受命令请求,执行命令,产生相应的结果;服务器返回结果给客户端;客户端接受命令的执行结果,并向用户展示。Redis命令所消耗的大部分时间都用在了发送命令请求和接收命令结果上面,把任意多条Redis命令请求打包在一起,然后一次性地将它们全部发送给服务器,而服务器则会把所有命令请求都处理完毕之后,一次性地将它们的执行结果全部返回给客户端。注意事项

2021-07-05 23:48:29 3020 11

原创 SpringBoot 整合 ShardingSphere JDBC、MySQL分表实例

1. 概述ShardingSphere 分为ShardingSphere-JDBC、ShardingSphere-Proxy、ShardingSphere-Sidecar(TODO)。ShardingSphere 官方手册:传送门 ;这里使用的是 ShardingSphere-JDBC ,ShardingSphere-JDBC为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,

2021-05-06 23:19:46 651 4

原创 Spring 事务失效的情况

1. 数据库引擎不支持事务以 MySQL 为例,MyISAM存储引擎不支持事务, InnoDB 引擎支持事务。2. @Transactional 注解修饰的方法为非public类型修饰的方法为非public类型时,IDEA 会提示有错误。3. 异常被catch执行以下测试方法,数据成功插入,没有回滚。 @Override @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED

2021-05-05 21:31:09 420

原创 Redisson Java整合入门实例

1. 概述

2020-11-22 21:08:41 1737 4

原创 Spring IoC(控制反转)、DI(依赖注入)

1. IoCIoC(Inversion of Control,控制反转) 面向对象的一种设计思想,很多语言的框架都使用了IoC这个设计思想,并非特属于Spring,其实现为将实例对象交给第三方容器管理,创建实例对象的时候,注入这些实例对象所依赖的实例对象,而不是在内部创建。所谓的内部创建如下所示,连接数据库的示例所示:/** * @author syrdbt * @date 2020-11-15 */public class DateSource { private String da

2020-11-15 13:39:30 302

原创 享元设计模式 和 享元设计模式在 FastDateFormat类中的应用

1. 概述享元设计模式:通过尽量共项实例来避免new出实例。享元设计模式中有两个角色,一是要共享的类,二是获取或创建这些共享实例的工厂。举一个例子:例如 String 常量池,大家创建的String常量,创建String的时候,先去常量池中看一下,有该String常量直接使用该常量,如果没有就去创建,创建成功后放在常量池中,当然这些常量不允许修改的,享元模式中的共享的实例也不允许修改,一旦被修改,大家在共用的时候就会出现问题。2. 享元设计模式在 FastDateFormat类中的应用这里的Da

2020-11-08 17:36:32 822

原创 xxl-job 入门第一个完整实例

文章目录1. xxl-job 概述2. 代码示例参考文献:1. xxl-job 概述官方网址:链接XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。2. 代码示例下载 demo 。放置配置:修改配置,主要修改 数据库配置。### 1、调度中心项目的端口号以及访问路径server....

2020-10-25 23:49:30 5583 16

原创 什么是 Shell,Shell 功能介绍和脚本编程入门实例

1. 概述Shell 是一种交互工具,为用户提供了启动程序、管理文件系统中的文件和运行在Linux系统上的进程。Shell 的核心是命令行提示符,命令行提示提示符是 Shell 负责交互的部分,允许输入命令,然后解释命令,并在内核中执行。Shell 包含了一组内部命令,这些命令可以创建文件(touch命令)、移动文件(mv命令)等;2. 在这里插入代码片输出 HelloWorld 示例打开控制台终端,输入以下命令,创建helloWorld.sh脚本。vi helloWorld.sh点击回车进

2020-10-24 16:00:38 672

原创 MAC 下载安装、启动和关闭 RocketMQ实例

文章目录1. 下载并解压2. 进入目录,下载依赖3. 启动 nameserver 和 broker4. 关闭 rocketmq 的命令参考文献1. 下载并解压网址:http://rocketmq.apache.org/dowloading/releases/下载 rocketmq-all-4.4.0-source-release.zip 。解压:unzip rocketmq-all-4....

2020-10-19 20:30:05 1084 6

原创 Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立子文件夹

代码如下所示,将 /Users/shiheng/desktop/测试文件 目录下的图片(包含子文件夹目录下的图片)移动到了 /Users/shiheng/desktop/测试结果 目录下,默认不分批次建立文件夹,重名文件只保存一个:package com.syrdbt.java.study;import java.io.File;import java.util.*;/** * @author syrdbt * @date 2020-10-09 */public class FileUt

2020-10-18 23:26:32 432

原创 MySQL 表自连接,两次自连接查询

有一个分类表,可以有三个等级的分类,一级分类下会有二级分类,二级分类会有三级分类,表结构如下所示。模拟数据如下所示,:现在有个一次性需求需要将所有的分类查询出来保存到excel,格式如下:一级分类id一级分类名称二级分类id二级分类名称三级分类id三级分类名称查询SQL 如下所示:select c1.id as 一级分类id, c1.name as 一级分类名称, temp.c2id as 二级分类id, temp.c2name as 二级分类名称,

2020-10-11 22:59:56 1387

转载 有赞订单管理的三生三世与“十面埋伏”

原文地址:https://tech.youzan.com/trade_manage/有赞订单管理主要承接有赞所有订单搜索及详情展示功能,系统随着业务的不断发展经历了多次飞升之路。下面简单介绍下有赞订单管理系统的三生三世与“十面埋伏”。...

2020-05-29 17:33:51 544

转载 有赞统一日志平台初探

原文地址:https://tech.youzan.com/you-zan-tong-ri-zhi-ping-tai-chu-tan/https://www.jianshu.com/p/8b45af25cbe9

2020-05-29 17:17:42 1658

原创 MAC 使用国内源安装历史版本 Neo4j

1. 概述推荐去官网下载,不管这里用的张帜老师推荐的国内源:http://doc.we-yun.com:1008/neo4j。注意:最新 Neo4j4.x 需要 jdk11,Neo4j3.X 使用 jdk8。这是我找到国内neo4j下载地方的论坛 (因为这个下载源是张帜老师推荐的,感觉肯定没问题,我就用了,请你考虑后再使用,本人不能保证这个下载源和官网是一样的,出了问题读者自己负责哈):http://we-yun.com/index.php/blog/releases-56.html2. 安装教程

2020-05-17 17:13:31 2137

转载 MySQL的四种事务隔离级别(Windows10+MySQL5.6.36+InnoDB)

原文地址:https://www.cnblogs.com/huanongying/p/7021555.html本文在原文的基础上补充了查看MySQL8.0查看默认事务隔离级别,8.0版本和5.6版本默认事务隔离级别一样,都是可重复读 (repeatable-read)。MySQL8.0查询默认事务隔离级别:select @@transaction_isolation;一、事务的...

2020-04-16 01:10:01 573

原创 IDEA 创建 Gradle 工程入门实例

1. 概述Gradle是专注于灵活性和性能的开源构建自动化工具。Gradle构建脚本是使用 Groovy 或 Kotlin DSL 编写的用户手册链接:https://docs.gradle.org/current/userguide/userguide.html 。用户中文链接:2. 创建工程New Project --> Gradle --> Java 。...

2020-04-12 17:57:02 990 2

转载 Spring Cloud Gateway 2.1.0 中文官网文档

原文地址:https://www.jianshu.com/p/6ff196940b67文章目录1. 如何在工程中引用Spring Cloud Gateway2. 词汇表3. 如何工作的4. 路由断言Factories4.1 After 路由断言 Factory4.2 Before 路由断言 Factory4.3 Between 路由断言 Factory4.4 Cookie 路由断言 Fact...

2020-03-08 12:50:57 1101

原创 SpringBoot2 整合 SpringCloud 的 Gateway 入门实例

SpringBoot

2020-03-07 17:52:54 3676

原创 装饰者设计模式(Decorator)、装饰者设计模式在 FilterInputStream 中的应用

1. 概述1.1 什么是装饰设计模式?假如现在有一块蛋糕,涂上奶油,就是奶油蛋糕,加上水果就是水果奶油蛋糕,加上生日快乐四个字就是生日蛋糕。奶油蛋糕,水果奶油蛋糕,生日蛋糕其核心都是蛋糕,经过装饰之后成为目的更明确的蛋糕,更能解决问题。像这种不断为对象添加装饰的模式就叫 Decorator 模式,Decorator 指的是装饰物。1.2 装饰者设计模式的角色核心角色(Componen...

2020-03-03 21:06:21 708 2

转载 MySQL事务隔离级别和MVCC

原文地址:https://juejin.im/post/5c9b1b7df265da60e21c0b57事前准备为了故事的顺利发展,我们需要创建一个表:CREATE TABLE t ( id INT PRIMARY KEY, c VARCHAR(100)) Engine=InnoDB CHARSET=utf8;然后向这个表里插入一条数据:INSERT INTO t...

2020-02-26 17:34:48 330 1

原创 Java 阻塞队列实现生产者和消费者场景

1. 阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。当阻塞队列满时,如果生产者线程使用put方法向队列中添加元素,队列会一直阻塞生产者线程,直到拿到数据,或者响应中断退出。当队列空时,消费者使用take方法从队列中获取元素,队列也会阻塞消费者线程,...

2020-02-26 12:08:14 761

转载 Java 中的阻塞队列

原文地址:http://ifeve.com/java-blocking-queue/1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。...

2020-02-25 21:17:58 297

原创 桥接设计模式 (Bridge)

1. 问题引出实现某件产品,某产品有多种品牌和类型。比较直观的一种实现方式:

2020-02-25 20:40:11 378

转载 SpringBoot 自动原配原理

原文地址:https://www.jianshu.com/p/83693d3d0a65预警:本文非常长,建议先mark后看,也许是最后一次写这么长的文章说明:前面有4个小节关于Spring的基础知识,分别是:IOC容器、JavaConfig、事件监听、SpringFactoriesLoader详解,它们占据了本文的大部分内容,虽然它们之间可能没有太多的联系,但这些知识对于理解Sprin...

2020-02-10 21:03:08 318

转载 减少回表的一次SQL查询优化

原文地址:https://www.jianshu.com/p/0768ebc4e28d读后感:减少了回表的次数,从而减少磁盘I/O,降低了查询时间,很有意思。有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调...

2020-02-04 22:09:42 1375 5

原创 SpringBoot2 整合 Redis 实例,实现写入和读取的操作

1. 启动 Redis Server启动 redis server,如下图所示,端口号 6379:2. 工程实例2.1 工程目录工程目录如下图所示:2.2 pom.xml引入依赖: <dependency> <groupId>org.springframework.boot</groupId> ...

2020-02-04 21:33:55 904

转载 MySQL InnoDB 一棵B+树可以存放多少行数据

原文地址:https://www.cnblogs.com/leefreeman/p/8315844.html#43520241. 一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天...

2020-02-04 20:54:07 417 1

原创 Java8 HashSet 源码阅读

1. 概述HashSet 保证元素不重复的集合,查询元素、新增元素、删除元素的时间复杂度均为 O(1)。HashSet 底层的数据结构为 HashMap,HashMap 中存储的键值对,key 为 Set 集合中的元素,value 统一使用一个静态常量;private transient HashMap<E,Object> map;private static final ...

2020-02-03 21:59:59 222

转载 Redis数据结构基础教程

原文地址:https://juejin.im/post/5b53ee7e5188251aaa2d2e161. 概述Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了。2. string首先我们从string谈起。string表示的是一个...

2019-10-30 23:37:41 242

转载 蓝绿发布、灰度发布和滚动发布

原文地址:https://blog.csdn.net/zhenliang8/article/details/90597177文章目录1. 蓝绿发布1.1 发布流程1.2 特点1.3 缺点2. 灰度发布2.1 发布流程2.2 特点2.3 缺点2.4 部署过程3. 滚动发布3.1 特点3.2 缺点3.3 部署过程4. 小结应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产...

2019-10-27 22:43:52 322

转载 Java 之 fail-fast

原文地址:https://juejin.im/post/5cb683d6518825186d65402c1. 什么是fail-fast首先我们看下维基百科中关于fail-fast的解释:In systems design, a fail-fast system is one which immediately reports at its interface any condition...

2019-10-18 20:02:33 170

neo4j-jdbc-driver-3.4.0.jar

neo4j-jdbc-driver-3.4.0.jar,Java连接数据库驱动包。

2019-03-24

空空如也

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

TA关注的人

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