自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用设计模式&设计原则

文章目录1 设计模式1 策略模式2 观察者模式3 装饰者模式4 工厂模式5 单例模式6 命令模式7 适配器模式8 模板方法模式9 状态模式10 代理模式2 设计原则2.1 区分变与不变2.2 多用组合,少用继承2.3 松耦合2.4 开闭原则2.5 依赖倒置原则2.6 最少知识原则2.7 好莱坞原则2.8 单一职责原则1 设计模式1 策略模式策略模式:为某个可以变化的功能,将其设计成一个接口为该接口扩展出一系列实现类,在生成该对象时再赋予该对象特有的特征让功能的实现与对象脱离,将对象和行为分

2021-08-09 18:16:01 124

原创 JVM14-垃圾回收-垃圾回收器

文章目录1 垃圾回收器1 垃圾回收器

2021-06-24 20:40:18 299

原创 服务发现和资源发现

文章目录1 多文件自平衡云传输1.1 项目介绍1.2 技术准备1.2.1 文件的复制1.2.2 字节数组和数据类型的转换1.2.3 断点续传的原理1 多文件自平衡云传输1.1 项目介绍1.2 技术准备1.2.1 文件的复制1.2.2 字节数组和数据类型的转换1.2.3 断点续传的原理...

2021-05-11 15:54:55 331

原创 Java Web 基础篇 L6 模拟Spring的IOC(注解+反射)

文章目录1 注解+反射模拟IOC(一)1.1 IOC简介1.2 为简单类创建注解1.3 根据注解生成简单类的单例对象1 注解+反射模拟IOC(一)1.1 IOC简介IOC即控制反转,通常程序中创建对象是程序员通过new来得到的,而IOC则是容器通过读取配置文件创建一系列对象,程序员需要使用对象时,直接从容器中取得即可,将创建对象的过程交给了容器,即控制反转IOC的核心在于IOC容器,类似一个Map<String, Object>,程序员通过getBean(String BeanNa

2021-04-17 17:00:40 175

原创 Java Web 基础篇 L5 Java实现定时器

文章目录1Java实现一个定时器1.1 定时器的作用和需求1.2 定时器的简单实现1.3 单线程执行任务的定时器1.4 多线程执行任务的定时器1.5 定时器小结1Java实现一个定时器1.1 定时器的作用和需求在某些场景下,常常需要定时的功能,如商城的到整点开启商品秒杀功能,这个功能就可以使用定时器来调用一个方法完成,将当前时间到指定时间的差值作为定时器的延时时间,等定时器等待了确认的延时时间后,将调用一个方法,把秒杀系统的页面呈现给用户因此,这个定时器应该实现:1,制定一个时间间隔2,

2021-04-17 14:51:56 222

原创 Java SE 练习篇 P3 CS框架的搭建(消息传送,资源分发)

文章目录1 CS框架的搭建1.1 框架1.2 通信层1.3 会话层1.4 方法层1.5 app层2 各种通信功能的实现过程2.1 客户端连接到服务器的过程2.2 私聊信息的过程2.3 群聊信息的过程2.4 客户端私聊服务器的过程2.5 服务器强制下线某客户端的过程2.6 客户端下线的过程2.7 服务器强制宕机的过程3 CSFramework的实现3.1 通信层的实现3.2 会话层的实现3.3 方法层的实现1 CS框架的搭建1.1 框架1.2 通信层1.3 会话层1.4 方法层1.5 app

2021-01-26 17:18:12 243

原创 三大类六种排序算法-C

1-排序简单介绍排序:将无序键重新排列,使之有序键集:键的集合,这里默认待排序的数据都是唯一的,即不存在重复数据,这是一种理想情况,通常不作为重点有序:升序和降序内排序和外排序:内存数据排序和外存数据排序(通常外排序是通过调入内存中实现排序)稳定性:假设某次待排序的数据中,存在相同数据,排序前其物理顺序与排序后物理顺序不变,即对于所有数据,任意排序,只要依然用这种算法,其顺序是不会改变的三大类六种排序算法:(1):直接插入排序,希尔排序(2):直接选择排序,堆排序(利用完全二叉树)(3)

2020-07-29 17:55:31 11141 11

原创 SpringCloud-3-负载均衡&服务调用

文章目录1 Ribbon1.1 Ribbon概述1.2 替换不同的负载策略1.3 轮询策略分析2 OpenFeign2.1 OpenFeign简介2.2 OpenFeign的使用2.31 Ribbon1.1 Ribbon概述SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡的工具主要功能是提供客户端的软件负载均衡算法和服务调用,Ribbon会提供一系列完善的配置项如连接超时、重试等。简单的说就是在配合文件中列出Load Balancer后面所有的机器,R

2022-04-14 22:49:55 639

原创 SpringCloud-2-注册中心

文章目录1 Eureka1.1 基础知识1.21.32 Zookeeper3 Consul1 Eureka1.1 基础知识服务治理:在传统的RPC远程调用框架中,管理每个服务与服务之间的依赖关系比较复杂,所以需要服务治理来管理服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现和注册服务注册与发现:Eureka采用CS的架构设计,Eureka Server作为服务注册功能的服务器系统中的其他微服务使用Eureka客户端连接到Eureka Server并维持心跳连接

2022-04-13 16:11:47 344

原创 SpringCloud-1-项目创建

文章目录11

2022-04-12 13:32:20 855 1

原创 M1机器Java环境搭建

文章目录1 JDK安装2 IDEA安装3 brew&git安装4 IDEA插件&常用网站1 JDK安装azul jdk82 IDEA安装2020.3.43 brew&git安装brew安装git安装4 IDEA插件&常用网站壁纸网站

2022-04-11 11:23:46 533

原创 SpringBoot-3-数据访问&单元测试

文章目录1 数据访问1.1 SQL1.1.1 数据源自动配置1.1.2 使用Druid数据源1.1.3 整合Mybatis1.2 NoSQL2 单元测试1 数据访问1.1 SQL1.1.1 数据源自动配置首先在pom中导入场景依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</

2022-04-07 16:48:33 2741

原创 SpringBoot-2-web开发

文章目录1 实用工具1.1 Lombok1.2 Developer-Tools1.3 Spring Initializr21 实用工具1.1 Lombok简化业务对象开发,省略构造器,get/set方法…根据注解要求会在编译时生成构造方法等需要引入依赖,并在IDEA中下载Lombok插件 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb

2022-04-03 17:01:50 630

原创 SpringBoot-1-入门

文章目录1 基础使用1.1 HelloWorld1.2 依赖管理&自动配置1.2.1 依赖管理1.2.2 自动配置2 底层注解2.1 @Configuration与@Bean2.2 @Import、@Conditional、@ImportResource2.331 基础使用1.1 HelloWorld基于SprinBoot2由浏览器发送hello请求,后台响应1,新建maven工程,引入必要依赖 <parent> <groupId>org.sp

2022-03-28 19:33:40 557

原创 计算机网络基础

文章目录

2022-02-09 17:22:59 313

原创 操作系统基础

文章目录1 进程线程1.1 进程和线程的概念及区别(想想JVM)1.2 进程的状态(5种)1.3 进程间的通信方式(7种)1.4 线程间的同步方式(3种)1.5 进程的调度算法(6种)1.6 死锁,产生死锁的条件(4个)2 内存管理2.1 地址空间(逻辑地址->物理地址)2.2 内存管理机制(分块,分段,分页)2.3 快表(TLB)2.41 进程线程1.1 进程和线程的概念及区别(想想JVM)进程:内存中独立运行的一个应用程序,如QQ音乐,微信线程:进程中的一个执行任务区别:进程是彼此

2022-02-09 17:22:38 288

原创 Java容器

文章目录1 集合概述1.1 List, Set, Map的区别1.2 集合底层的数据结构2 List接口3 Set接口4 Map接口5 Collections工具类1 集合概述1.1 List, Set, Map的区别List(对付顺序): 存储元素是有序的,可重复的Set(注重独一无二): 存储元素是无序的,不可重复的Map(根据key快速查找): 使用键值对key-value存储元素每个键最多映射到一个值1.2 集合底层的数据结构List:1, ArrayList: Ob

2022-02-09 17:08:51 270

原创 Java并发

文章目录1 并发基础1.1 线程的生命周期和状态1.2 上下文切换1.3 死锁与死锁的预防1.4 sleep()和wait()1.5 start()和run()2 synchronized关键字2.1 syn的简单理解2.2 synchronized的使用2.3 双重检查加锁的单例模式2.4 synchronized的底层原理2.4.1 syn修饰代码块2.4.2 syn修饰方法2.4.3 synchronized原理小结2.5 JDK1.6后对synchronized进行的优化2.6 Synchroniz

2022-02-09 17:08:38 354

原创 Java基础

文章目录1 概念与语法1.1 Java和C++的异同1.2 泛型1.3 ==和equals的区别1.4 hashCode()和equals()1.5 基本类型数据1.6 关于方法1.6.1 静态方法内部为什么不能调用非静态成员1.6.2 静态方法和普通方法的不同1.6.3 重载和重写1.6.4 深克隆&浅克隆1.6.5 构造方法1.7 Java的面向对象1.7.1 面向对象和面向过程的区别1.7.2 面向对象的三大特性1.8 异常1.9 I/O流1.9.1 序列化&反序列化1.9.2 Jav

2022-02-09 17:01:26 266

原创 数据库-事务/隔离

文章目录1 MySQL基础1.1 关系型数据库1.2 MySQL介绍2 存储引擎2.1 MySQL中的存储引擎2.2 MyISAM和InnoDB的区别3 锁机制和InnoDB锁算法4 查询缓存5 事务5.1 事务概念5.2 数据库事务5.3 事务的ACID特性5.4 并发事务带来的问题5.5 事务隔离级别5.6 MySQL默认隔离级别1 MySQL基础1.1 关系型数据库关系型数据库: 建立在关系模型上的数据库表明了数据库中所存储的数据之间的联系(一对一,一对多,多对多)数据被存储在各种表

2022-02-09 16:33:07 84

原创 数据库-索引

文章目录1 索引概念&索引优缺点2 索引底层数据结构2.1 Hash表2.2 B树&B+树2.2.1 B树2.2.2 B+树2.2.3 B树和B+树的区别3 索引类型3.1 主键索引3.2 二级索引(辅助索引)4 聚簇索引与非聚簇索引4.1 聚簇索引4.2 非聚簇索引1 索引概念&索引优缺点索引就是一种用于快速查询和检索数据的数据结构,常见索引:B树,B+树,Hash索引的作用就相当于目录,如查字典时,如果没有目录,就只能一页一页去找,速度很慢如果有目录,就可以通过目录

2022-02-09 16:32:32 89

原创 数据库-MySQL结构

文章目录1 MySQL基础架构分析1.1 MySQL基本架构1.2 Server层基本组件1.2.1 连接器1.2.2 查询缓存1.2.3 分析器1.2.4 优化器1.2.5 执行器2 语句分析2.1 查询语句2.2 更新语句2.2.1 两阶段提交日志1 MySQL基础架构分析学习一条SQL是如何完成查询/更新的1.1 MySQL基本架构简单来说,MySQL可以分为:Server层+存储引擎层Server层: 包括连接器,查询缓存,分析器,优化器,执行器等所有跨存储引擎的功能都在这一层实现

2022-02-09 16:32:02 235

原创 数据库基础

文章目录1.1 简单检索 SELECT1.2 排序检索 ORDER BY1.3 过滤数据 WHERE1.4 通配符过滤 LIKE % _1.5 聚集函数 afg() sum()...1.6 创建/过滤分组 GROUP BY/HAVING1.7 组合查询 UNION1.8 插入/更新/删除 INSERT/UPDATE/DELETE1.1 简单检索 SELECT1,检索一列:SELECT name FROM students;检索students表中name列所有只2,检索多列:SELECT

2022-02-09 16:31:23 68

原创 ES-3-高级查询

文章目录1212

2022-01-26 16:16:46 2307

原创 ES-2-基础查询

文章目录1 term&terms查询1.1 term查询21 term&terms查询1.1 term查询term查询代表完全匹配 搜索之前不会对搜索的关键字进行分词在文档分词库中匹配内容 再查找对应的文档使用term查询查找province为北京的document:POST /index_name/type_name/_search{ "form" : 0, "size" : 5, // limit分页 "query" : { "term" : {

2022-01-14 16:05:07 1226

原创 Kafka-3-机制&优化

文章目录1 Kafka集群中几种机制1.1 Controller1.2 Rebalance1.3 HW&LEO21 Kafka集群中几种机制1.1 Controller1.2 Rebalance1.3 HW&LEO2

2022-01-12 20:53:11 888

原创 ES-1-概念&简单操作

文章目录1 ES基础概念1.1 ES简介1.22 Java操作ES1 ES基础概念1.1 ES简介先来看这样一个场景,在购物网站搜索某件商品:电商网站的商品种类繁多,需要返给用户大量的商品以供用户选择假设这些数据存储在MySQL中,用户每搜一次商品以鼠标为例,都需要执行一次SQL:SELECT * FROM item WHERE NAME LIKE %鼠标%采用这样的查询方式,由于通配符需要放在前面用like查询时MySQL的索引会失效查询速度必然是不尽人意的,且MySQL也无法处

2022-01-10 01:02:56 1523

原创 Kafka-2-集群&基础使用

文章目录1 Kafka集群2 基础使用1 Kafka集群2 基础使用

2022-01-06 20:45:14 898

原创 Kafka-1-消息队列&基本概念

文章目录1 消息队列概述1.1 下订单-同步&异步1.2 消息队列分类1.2.1 有Broker的MQ重Topic轻Topic1.2.2 无Broker的MQ2 Kafka的基本使用2.1 生产&消费2.1.1 两种消费方式2.1.2 单播&多播消息1 消息队列概述1.1 下订单-同步&异步先来看一个例子,以电商网站购买东西下单为例用户在手机上下单后,需要调用一系列服务才能完成整个下单过程如订单服务,库存服务,收单服务,金融服务,积分服务等如果通过同步方式来

2022-01-04 22:56:22 656

原创 Redis-5-Redis集群&应用问题解决

文章目录1 Redis集群1.1 Redis集群概念1.2 搭建Redis集群1.32 应用问题解决1 Redis集群1.1 Redis集群概念在了解这个概念前,先看几个问题:1,容量不够,Redis如何扩容?2,并发写操作,Redis如何分摊?上述两个问题都可以用搭建集群来解决Redis集群实现了对Redis的水平扩容,即启动N个Redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N,Redis集群通过分区来提供一定程度的可用性,即使集群中一部分节点失效,集

2022-01-03 23:04:54 849

原创 Redis-4-持久化操作&主从复制

文章目录11

2021-12-31 16:15:58 732

原创 Redis-3-事务和锁机制&模拟秒杀

文章目录

2021-12-30 17:22:35 261

原创 Redis-2-发布订阅&新数据类型&Jedis

文章目录1 发布&订阅1.1 发布订阅模型1.2 命令实现发布/订阅2 新数据类型2.1 Bitmaps2.1.1 命令2.1.2 Bitmap和set的比较2.2 HyperLogLog2.2.1 简介2.2.2 命令2.3 Geospatial2.3.1 简介2.3.2 命令3 Jedis使用1 发布&订阅1.1 发布订阅模型发布/订阅:一种消息通信模式发布者(pub)发送消息 订阅者(sub)接收消息Redis客户端可以订阅任意数量的频道1.2 命令实现发布/订

2021-12-21 00:11:53 965

原创 Redis-1-NoSQL&Redis概述&常用数据类型

文章目录1 NoSQL数据库简介1.1 两个问题1.2 NoSQL数据库概述2 Redis6概述和安装2.1 Redis概述2.2 Redis安装2.3 Redis相关知识3 常用5大数据类型3.1 Redis中key的操作3.21 NoSQL数据库简介1.1 两个问题在了解Redis之前,先来思考两个问题1,Session存在哪2,如何减轻DB的压力对于上述两个问题,先来看第一个:在早期分布式应用中,我们将Session存储在某一台服务器A上但当用户再次访问时,经过负载均衡的调控 请

2021-12-14 21:14:40 716

原创 JUC基础-C7-分支合并框架&异步回调

文章目录1 分支合并框架 Fork/Join2 异步回调 CompletableFuture1 分支合并框架 Fork/JoinFork/Join可以将一个大的任务拆分成多个子任务进行并行处理最后将子任务结果合并成最后的计算结果,并进行输出Fork: 把一个复杂的任务进行拆分,大事化小Join: 把分拆任务的结果进行合并如想要计算1+2+3+...+100这样的操作可以将其分解为Task1:1+2+...+20 Task2:21+22+40 Task3:...最后再汇总不同的分支

2021-10-21 20:20:43 91

原创 JUC基础-C6-阻塞队列&线程池

文章目录1 阻塞队列1.1 BlockingQueue简介1.2 BlockingQueue常用方法2 线程池2.1 线程池概述2.2 ThreadPoolExecutor的参数2.3 饱和策略1 阻塞队列1.1 BlockingQueue简介在多线程环境中,通过队列可以轻松实现数据共享如在生产者-消费者模型中,通过队列可以很轻松实现二者间的数据共享常用的有:ArrayBlockingQueue 由数组组成的有界阻塞队列LinkedBlockingQueue 由链表组成的有界阻塞队列

2021-10-21 19:25:49 84

原创 JUC基础-C5-Callable接口&JUC辅助类

文章目录1 Callable接口2 JUC中的辅助类2.1 CountDownLatch 减少计数2.2 CyclicBarrier 循环栅栏2.3 Semaphore 信号灯1 Callable接口Runnable接口和Callable接口都可以用于创建线程,但二者有功能上的差异1,Runnable接口无返回值,Callable接口有返回值2,Runnable接口无法抛异常,Callable接口可以抛异常使用Callable接口创建线程可以使用FutureTaskFutureTask

2021-10-20 18:02:51 49

原创 JUC基础-C4-集合的线程安全&多线程锁

文章目录1 集合的线程安全1.1 集合线程不安全示例1.2 集合线程不安全的解决方案2 多线程锁2.12.22.31 集合的线程安全1.1 集合线程不安全示例部分集合是线程不安全的,如ArrayList在多个线程对同一个ArrayList进行读写操作时:由于ArrayList的add()方法并没有同步过所以多个线程进行写时,会出现ConcurrentModificationException,即并发修改异常1.2 集合线程不安全的解决方案1,使用线程安全的VectorVector

2021-10-20 18:02:12 90

原创 JUC基础-C3-线程间通信

文章目录1 线程间通信1.1 wait和notify1.21.31 线程间通信1.1 wait和notify完成一个例子,线程A和线程B对变量value进行操作,value初始值为0,线程A当value的值为0时给其加1线程B当value的值为1时给其减1,通过wait()和notify()来完成线程A和线程B的通信1.21.3...

2021-10-19 18:34:48 64

原创 JUC基础-C2-synchronized&Lock接口

文章目录1 Lock接口1.1 多线程编程步骤1.2 synchronized1.3 Lock和synchronized1.4 创建线程的多种方式1.5 使用Lock实现买票示例1 Lock接口1.1 多线程编程步骤1,创建资源类,在资源类中创建成员和操作方法2,创建多个线程,调用资源类的操作方法3,1.2 synchronized1,修饰实例方法: 作用于当前对象实例加锁,执行方法前需要获取当前对象实例的锁synchronized void method() { //

2021-10-19 18:34:36 78

空空如也

空空如也

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

TA关注的人

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