自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 广播接收者(BroadcastReceiver)和内容提供者(ContentProvider)学习

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。在Android中,广播是一种广泛运用的在应用程序之间传输信息的机制,主要用于不同组件间通信广播接收器没有用户界面。

2023-07-07 10:34:25 626

原创 常见的几种限流算法代码实现(JAVA)

限流算法

2022-08-25 16:38:45 3364 3

原创 Redis缓存穿透,缓存击穿,缓存雪崩解决方案以及封装Redis工具类

参考自黑马程序员缓存穿透缓存穿透: 数据在数据库和redis中都不存在,请求直接打在数据库中。解决方案:方案一:方案二:代码案例实现: // 缓存穿透 private Shop cacheBreakDown(Long id){ // 查询redis String jsonShop = (String) redisTemplate.opsForValue().get(RedisConstants.SHOP_CACHE + id); .

2022-03-04 21:10:42 836 1

原创 @Transaction注解失效的八种情况及解决办法

来自黑马程序员java面试题案例准备:数据库表数据如下,要实现的目标就是刘备曹操孙权向自己手下员工发工资转账,这是一个事务的典型应用场景。数据库操作相关方法 @Override public Account getAccountByName(String name) { String querySql="select * from t_account where a_name=?"; BeanPropertyRowMapper<Account&gt.

2022-02-27 20:41:45 7199 2

原创 Spring中使用动态代理和AOP来实现事务的管理

一.环境搭建1)引入相关依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.14</version> </dependency> <dep

2022-02-25 19:25:23 876 1

原创 Java版炸金花

过年在家和村里小伙伴天天炸金花,作为程序员肯定得用程序模拟一个。运行结果如下:源代码附上import java.util.*;public class FriedGoldenFlower { public static final List<String> POKE = new ArrayList<>(52); public static final String[] NUMBERS = {"2", "3", "4", "5", "6", "7", ".

2022-02-13 13:13:52 2900

原创 MySQL监控分析视图 -Sys Schema的基本使用

Sys schema视图摘要主机相关:以host_summary开头,主要汇总了IO延迟的信息。Innodb相关:以innodb开头,汇总了innodb buffer信息和事务等待innodb锁的信息。I/o相关:以io开头,汇总了等待I/O、I/O使用量情况。内存使用情况:以memory开头,从主机、线程、事件等角度展示内存的使用情况连接与会话信息:processlist和session相关视图,总结了会话相关信息。表相关:以schema_table开头的视图,展示了表的统计信息。索引信息

2022-02-10 17:23:26 764

原创 SpringBoot整合Elasticsearch之索引,映射,文档,搜索的基本操作案例分析

索引,映射,文档,DSL增删改查一)环境准备1. ES版本:7.12.12. SpringBoot版本:2.5.8二)ES的基本介绍1. Elasticsearch 是什么2. Eelasticsearch的作用3. Elasticsearch,Solr和Lucene三者之间的关系4. Elasticsearch的索引结构--倒排索引5. ES中的一些基本概念三)ES索引的增删改查1. mapping映射属性2. 索引库的创建3. 查询索引库4. 修改索引库5. 删除索引库6. 打开关闭索引库四)ES文档的

2022-02-04 11:22:19 4281 2

原创 WebSocket的简单入门使用

WebSocketWebSocket介绍Java整合WebSocketSpringBoot整合WebSocketWebSocket介绍1)什么是WebSocket?WebSocket 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助 HTTP请求完成。 WebSocket是真正实现了全双工通信的服务器向客户端推的互联网技术。 它是一种在单个TCP连 接上进行全双工通讯协议。Websocket通信协议与2011年倍IETF定为标准RFC 64

2021-11-21 11:16:47 2729

原创 java设计模式之访问者模式

访问者模式访问者模式概述访问者模式类图访问者模式结构访问者模式案例实现访问者模式的优缺点访问者模式的使用场景访问者模式扩展访问者模式概述定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。访问者模式类图访问者模式结构访问者模式包含以下主要角色:抽象访问者(Visitor)角色:定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的方法个数理论上来讲与元素类个数(Element的实现类个数)是一样的,从这

2021-11-20 14:47:08 335

原创 SpringBoot整合MongoDB及简单的操作

一,环境搭建1)引入依赖 <parent> <artifactId>spring-boot-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.3.7.RELEASE</version> </parent> <dependencies>

2021-11-12 10:01:10 1958

原创 SpringBootStarter的原理以及自定义简单的starter步骤

starter介绍spring boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置。starter简单来讲就是引入了一些相关依赖和一些初始化的配置。Spring官方提供了很多starter,第三方也可以定义starter。为了加以区分,starter从名称上进行了如下规范: Spring官方提供的starter名称为:spring-

2021-11-10 13:25:27 2962 1

原创 Redis单机,主从集群,哨兵集群,分片集群的搭建

Redis集群本章是基于CentOS7下的Redis集群教程,包括:单机安装RedisRedis主从Redis分片集群1.单机安装Redis首先需要安装Redis所需要的依赖:yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vosF8eXQ-1633604276640)(assets/image-20210629114325516.png)]例如,我

2021-10-07 19:21:32 481 2

原创 Elasticsearch学习之Elasticsearch的介绍和基本使用

ElasticsearchES的基本介绍ES索引的增删改查ES文档的增删改查ES的高级查询ES的基本介绍1. Elasticsearch 是什么Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为

2021-10-04 13:31:56 405

原创 Docker,Windows,Linux下安装Elasticsearch

Windows下安装ES1.下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch2.选择自己要下载的windows版本:3.解压安装Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕,解压后的 Elasticsearch 的目录结构如下:目录含义bin可执行脚本目录config配置文件目录jdk内置jdk目录logs日志目录li

2021-10-01 18:03:09 296

原创 Java并发编程面试题(五万字总结)——快来打怪升级吧

并发编程面试题第一关: 初出茅庐1.什么是进程?2.什么是线程?3.线程的实现方式?4.线程的状态?5.run方法和start方法的区别6.获取当前线程的名字?7.判断线程是否存活?8.sleep()方法的作用?9.线程的种类10.什么是synchronized?第二关:小试牛刀1.如何优雅的设置睡眠时间2.如何停止一个线程3.yield()方法和join()的作用4.线程的优先级5.interrupted方法和isInterrupted方法的区别?6.Java虚拟机退出时Daemon线程中的finally

2021-09-12 19:34:17 1700 11

原创 Java反射与类加载过程会擦出什么样的火花

反射与类加载一, 反射机制原理二,反射机制中的问题解答三,反射中的常用API一, 反射机制原理反射机制介绍1.反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量,构造器,成员方法等等)并能操作对象的属性及方法。反射在设计模式和框架底层都会用到.2.加载完类之后,在堆中就产生了一个Class类型的对象(一 个类只有一个Class对象),这个对象包含了类的完整结构信息。通过这个对象得到类的结构。这个Class对象就像一面镜子,透过这个镜子看到类的结构,所以,形象的

2021-09-06 18:02:39 369 1

原创 JVM指令手册

JVM指令手册一、栈和局部变量操作二、类型转换相关三、整数运算相关四、逻辑运算相关五、对象和数组相关指令六、控制流七、方法调用与返回一、栈和局部变量操作将常量压入栈的指令指令功能aconst_null将null对象引用压入栈iconst_m1将int类型常量-1压入栈iconst_0将int类型常量0压入栈iconst_1将int类型常量1压入栈iconst_2将int类型常量2压入栈iconst_3将int类型常量3压入栈icons

2021-09-02 13:06:09 708

原创 EasyExcel的基本使用及在项目中的应用

EasyExcel的应用一、Excel导入导出二、EasyExce的介绍这里只是对EasyExcel的基本使用介绍,如果有需要可以根据自己的业务要求去官网查看更多用法#官方网站(访问速度较慢):https://github.com/alibaba/easyexcel#快速开始(访问速度快文档清晰):https://www.yuque.com/easyexcel/doc/easyexcel一、Excel导入导出Excel导入导出的重要性在针对运营商(移动、联通、电信、铁塔)的信息类的系

2021-08-26 13:41:02 1454 1

原创 JVM运行时数据区之虚拟机栈,本地方法栈和程序计数器

JVM运行时数据区一. 运行时数据区概述二. 程序计数器三. 本地方法栈四. 虚拟机栈五. 方法区六. 堆区一. 运行时数据区概述????????内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。经典的JVM运行时数据区内存布局如下:????????Java虚拟机定义了若千种程序运行期间会使用到的运行时数据

2021-08-23 14:17:44 528 5

原创 RabbitMQ核心功能介绍

RabbitMQ核心功能一.MQ的概念与功能介绍二.RabbitMQ的介绍和入门案例三.RabbitMQ的工作队列四.RabbitMQ的工作模式五.RabbitMQ的发布确认六.RabbitMQ的死性队列七.RabbitMQ的延迟队列八.RabbitMQ的应用与应用问题本文对RabbitMQ核心功能的介绍,没有介绍RabbitMQ的安装与集群,案列代码采用原生的Java代码和springboot两种形式,内容参考自RabbitMQ中文文档黑马程序员和尚硅谷RabbitMQ教程的笔记,还有一些自己的理解。

2021-08-19 12:53:10 1686

原创 JVM之GC日志分析与对象内存分配回收策略

GC日志分析与内存分配回收策略一. GC日志分析的引入二. GC的分类 与GC日志结构剖析三. JDK1.9以前的日志分析四. JDK1.9以后的日志分析五. 内存分配回收策略一. GC日志分析的引入????GC日志分析的重要性:阅读分析虚拟机和垃圾收集器的日志是处理Java虚拟机内存问题必备的基础技能。????垃圾收集日志面临的问题:垃圾收集器日志是一系列人为设定的规则,多少有点随开发者编码时的心情而定,没有任何的“业界标准”可言,换句话说,每个收集器的日志格式都可能不一样。除此以外还有一个麻烦,在

2021-08-12 14:46:53 477 3

原创 JVM之垃圾收集算法与垃圾收集器

Java垃圾收集算法与垃圾收集器1. 垃圾回收的相关概念1.1 垃圾收集的经典五连问2. 垃圾回收相关算法3. 常用的垃圾收集器1. 垃圾回收的相关概念1.1 垃圾收集的经典五连问一. 什么是垃圾?二.垃圾什么时候回收?三. 垃圾如何回收?四.什么是内存泄漏?五. 哪些内存需要回收?2. 垃圾回收相关算法3. 常用的垃圾收集器...

2021-08-08 12:47:30 772 3

原创 JVM之内存泄漏问题

何为内存泄漏?(1): 内存泄漏也称作“存储渗漏”。严格来说,只有对象不会再被程序用到了,但是GC又不能回收他们的情况,才叫内存泄漏。(2): 但实际情况很多时候一些不太好的实践(或疏忽)会导致对象的生命周期变得很长甚至导致OOM,也可以叫做宽泛意义上的“内存泄漏”。如下所示:对象X引用对象Y,X的生命周期比Y的生命周期长;那么当Y生命周期结束的时候,X依然引用着Y,这时候,垃圾回收器是不会回收对象Y的;如果对象X还引用着生命周期比较短的A、B、C,对象A又引用着对象a、b、C,这样就可能造成

2021-08-05 17:43:03 640 2

原创 MyCat学习第二天之性能监控,读写分离,集群搭建

MyCat读写分离搭建Mycat集群搭建Mycat架构剖析

2021-07-22 10:04:41 1278 13

原创 MySQL主从复制搭建之一主一从双主双从搭建

1.MySQL主从复制原理1.1 为什么要做主从复制?在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。做数据的热备,主库宕机后能够及时替换主库,保证业务可用性。架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。1.2 MySQL主从复制的流程

2021-07-21 14:20:51 1343 13

原创 MySQL主从复制bug记录

因为是第一次搭建mysql主从复制所以也是困难重重啊一不小心就会遇到莫名其妙的问题,一连串的元素遇到了三个问题啊。问题一. /usr/local/mysql/bin/mysqld (mysqld 5.7.34-log) starting as process 2038 …/usr/local/mysql/bin/mysqld (mysqld 5.7.34-log) starting as process 2038 ...mysqld: File '/var/lib/mysql/mysqlbin.in

2021-07-21 11:25:26 1467 2

原创 MyCat学习第一天之MyCat简介,配置文件详解,分片操作,分片规则

MyCat1. MyCat简介1.1 MyCat是什么?1.2 为什么会出现MyCat?1.3 MyCat 历史1.4 MyCat的优势1.5 MyCat的使用场景2. MyCat入门案例2.1 MyCat核心概念2.2 环境搭建2.3 分片配置测试2.4 MyCat原理介绍3. MyCat配置文件详解3.1 server.xml3.2 schema.xml3.3 rule.xml4. MyCat分片操作1. MyCat简介1.1 MyCat是什么?Mycat 是数据库中间件:连接java应用程序和

2021-07-19 17:07:34 709 5

原创 MyCat bug记录:backend connect: java.lang.IllegalArgumentException: Invalid DataSource:0

今天在搭建mycat分片配置中遇到了报了backend connect: java.lang.IllegalArgumentException: Invalid DataSource:0 在百度上查询了一番依旧没有找到解决的办法,一开始没有想到去查看日志文件,以为是配置文件配错了,一直检查修改,始终没有得到解决。后来去查看了一下mycat.log文件,不查不知道一查吓一跳有1000多条记录都是报这个错误的。于是去百度上查找了一下java.net.NoRouteToHostException: 没有

2021-07-18 17:01:19 3121 7

原创 BIO NIO AIO 学习笔记

网络编程1.TCP编程1.1 网络相关基础概念1.2 TCP编程案例2.UDP编程2.1UDP协议特点2.2UDP编程案例3.同步阻塞的BIO3.1什么是BIO?2.2BIO相关案例4,同步非阻塞的NIO选择 器(Selector)的应用Selector 示意图和特点说明服务端流程客户端流程4.8 NIO非阻塞式网络通信入门案例代码案例异步非阻塞的AIO1.TCP编程1.1 网络相关基础概念我们在学习网络编程前先来复习一下IP地址端口号协议,套接字的相关概念。IP地址:用来唯一标识全球连接在互联

2021-07-15 15:51:44 378 10

原创 看了就能学会的Java线程池技术

线程池1.线程池的介绍1.1 线程池的概念1.2 为什么要提出线程池的概念1.3 线程池的好处2. 线程池的使用2.1 线程池的创建2.2 线程池的七大参数2.3 如何向线程池提交任务2.4 如何关闭线程池2.5 如何合理的使用线程池3. 线程池的实现原理4.四种常见线程池4.1 SingleThreadPool4.2 FixedThreadPool4.3 CachedThreadPool4.4 ScheduledThreadPool1.线程池的介绍1.1 线程池的概念线程池:Java中开辟出了一

2021-07-13 18:20:18 677 10

原创 Java网络编程编程之TCP编程和UDP编程

网络编程基础1.TCP编程1.1 网络相关基础概念1.2TCP协议介绍1.3 TCP编程案例2.UDP编程2.1UDP协议介绍2.2UDP编程案例1.TCP编程1.1 网络相关基础概念我们在学习网络编程前先来复习一下IP地址端口号协议,套接字的相关概念。IP地址:用来唯一标识全球连接在互联网上的主机的接口的标识符端口:端口是指软件端口,是应用层的各种协议进程与运输实体进行层间交互的一种地址,主机通过端口将数据报分发给不同的进程,一个主机总共有65535个端口,协议:协议,网络协议的简称,网

2021-07-12 14:48:02 487 9

原创 装饰器模式与JavaIO流

装饰器模式介绍:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不

2021-07-07 14:13:06 697 5

原创 一文搞定Nginx

Nginxnginx 简介Nginx常用功能nginx 安装nginx 常用的命令和配置文件Nginx 反向代理与负载均衡详解nginx 配置实例-反向代理nginx 配置实例-负载均衡nginx 配置实例-动静分离nginx 原理与优化参数配置搭建 nginx 高可用集群nginx原理nginx 简介Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx网

2021-07-05 14:51:31 438 4

原创 为什么重写equals方法一定要重写hashcode

引言在说明这个问题前我们先来看一下关于hashcode的一些硬性规定:1.两个对象equals相等,hashcode一定相等。2.两个对象equals不等,hashcode不一定不等。3.两个对象的hashcode相等,两个对象不一定相等。4.两个对象的hashcode不等,两个对象一定不等。equals方法和hashcode方法介绍equals方法和hashcode方法都是Object类里面的两个方法。equals的作用是比较两个对象的地址值是否相等hashcode方法的作用是返回该对象

2021-07-01 10:26:53 346 4

原创 MySQL中的七种常见通用的join查询

常见通用的join查询1.A∩B2.A-B3.B-A4.A∪B5.A-B∪ A∩B6.B-A∪ A∩B7.A-B∪B-A

2021-06-29 15:27:34 270 10

原创 字符串文本匹配神器———Java正则表达式

什么是正则表达式?正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。为什么要学正则表达式对于正则表达式,相信很多人都知道,但是很多人的第一感觉就是难学,因为看第一眼时,觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。其实只是对正则不了解而以,了解了你就会发现,原来就这样啊因为正则所用的相关字符其实不多,也不难记,更不难懂,唯一难的就是组合起来之后,可读性比较差,不容易理解。但是你只要肯花个几个小时的

2021-06-28 21:13:46 2841 8

原创 数据结构——并查集

畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?在我们的测试数据文件夹中有一个trffic_project.txt文件,它就是诚征道路统计表,下面是对数据的解释:总共有20个城市,目前已经修改好了7条道路,问还需要修建多少条道路,才能让这20个城市之间全部相通?我们先不对本题进行解答,当我们对并查集了解之后便可以解决

2021-06-26 19:54:44 815 7

原创 图解堆和堆排序通俗易懂

堆堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。从定义上来看堆也是一种树但是必须是完全二叉树,完全二叉树定义:是一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。我们看如下图所示:左边的是一个完全二叉树,右边的不是,如何判断是不是一棵完全二叉树我们看下面堆的性质1堆的特性:1.它是完全二叉树,除了树

2021-06-25 16:35:36 388 3

原创 适配器模式+源码分析

生活中的案例不同国家使用的插头是不同的。有一天程序员老王去泰国旅游晚上回到酒店正准备给手机充电发现充电器并不能适配泰国的插座,此时老王很是郁闷于是喊来了酒店的管理人员,酒店的管理人员给了老王一个多功能转换插头(相当于适配器),老王手机可以充电了,于是老王又可以快乐的玩起了手机,开心的逛CSDN了。适配器模式概念:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能,主要的目的是兼容性,让原本因接口不匹配不能一起工作

2021-06-20 18:09:39 451 10

空空如也

空空如也

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

TA关注的人

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