- 博客(90)
- 收藏
- 关注
原创 MySql常用面试题
索引是一种数据结构。时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时。复合索引:在创建索引时,并不是只能对一列进行创建索引,可以与主键一样,讲多个组合为索引。非主键索引的叶子节点存储的是主键和其他带索引的数据,因此查询时做到覆盖索引会非。化器发现走索引跟使用全表扫描差不了多少的时候,就算建了索引,也不一定会走索引。非聚集索引:将数据存储和索引分开结构,索引结构的叶子节点指向了数据的对应行。非聚簇索引:将数据存储和索引分开结构,索引结构的叶子节点指向了数据的对应行。
2023-12-04 18:01:15
653
原创 Docker 的基本概念和常用命令,应用程序开发中的实际应用。
容器(container):由镜像创建,并包含了运行应用程序的一切必要组件,如应用程序、操作系统和环境变量等。持续集成和持续部署:Docker 可以帮助开发人员在整个开发流程中实现持续集成和持续部署,从而提高效率。稳定性:由于 Docker 可以创建独立的容器来运行应用程序,因此可以避免应用程序之间的冲突和故障。灵活性:Docker 支持跨平台和跨云平台使用,能够帮助开发人员轻松地在不同的环境中部署应用程序。兼容性测试:Docker 可以帮助开发人员在不同的操作系统和配置中运行应用程序,以便测试其兼容性。
2023-11-30 21:37:37
711
原创 JVM的详细概念和原理
栈是线程私有的,用于存储方法的局部变量和临时数据,每个线程都有自己的栈,并且栈的大小也是可以通过JVM的启动参数来调整的。JVM使用类加载器将编译好的Java字节码文件加载到内存中,然后将其转化成本地机器码执行,这个过程中JVM会将Java字节码解释成对应的本地机器码指令,然后通过执行引擎执行这些指令,最终实现Java程序的执行。JVM的跨平台性源于Java程序编译成字节码文件,而字节码文件是基于平台无关的,因此在不同的平台上只需要安装相应版本的JVM即可执行Java程序。
2023-11-28 21:41:47
460
原创 SQL优化
SQL(Structured Query Language)优化是指通过对SQL语句、数据库结构、索引、查询方法等方面的优化,提高数据库的性能,缩短查询时间,降低系统负载的过程。需要对SQL语句、数据库结构、索引和查询方法等方面进行优化,来提高数据库的性能。SQL语句是数据库操作的核心,优化SQL语句可以大大提高数据库的性能。(2)在设计表的时候,应该将经常一起查询的字段放在同一个表中。(5)表的主键应该是一个简单的整型,避免使用复合主键。(2)避免使用子查询,可以使用JOIN代替。
2023-11-27 21:20:53
517
原创 Mycat分库分表的操作(配置)
需要注意的是,Mycat的分库分表操作需要对业务进行适配,不能直接将业务系统原有的SQL语句直接应用于MyCat中。因此,在进行分库分表操作前,需要对业务系统进行相应的重构。上面的配置示例中使用 order_id 进行分片,分为两个节点 dn0 和 dn1 进行存储。
2023-11-24 18:42:50
471
原创 Cloud网关和链路追踪
Cloud网关(Gateway)是在云计算环境下提供的一种网络设备,它可以连接企业的私有网络和公共云的虚拟网络,实现数据的传输与交互,同时可以提供安全和流量控制等功能。Cloud链路追踪通常使用分布式跟踪技术来实现,这样可以在分布式系统中捕获请求和响应的完整路径,并对其进行可视化展示和分析。云网关是连接云和私有网络的一种解决方案,它提供了一种安全、高性能的云与私有网络之间的通信机制。数据中转:云网关可以将私有网络和云服务之间的数据进行中转,使得私有网络的应用程序可以访问云服务中的数据。
2023-11-23 21:49:50
445
原创 Sentinel与SpringBoot整合
上面代码中,@SentinelResource注解表示该方法需要受到Sentinel的保护。其中,value属性表示流控规则的名称,在Sentinel控制台中可以看到;blockHandler属性表示当方法被流控时需要执行的方法;fallback属性表示当方法发生异常时需要执行的方法。以上就是一个简单的Spring Cloud整合Sentinel的代码示例。需要注意的是,在实际项目中,还需要根据业务需求配置Sent。
2023-11-22 21:27:31
841
原创 OpenFeign(案例代码)
总的来说,OpenFeign简化了服务之间的通信,提供了一种更加优雅和便捷的方式来定义和调用HTTP请求,同时集成了负载均衡和熔断等功能,使得开发者可以更专注于业务逻辑的实现而不是底层的通信细节。OpenFeign允许你使用简单的注解来声明对服务的调用,而不需要手动构建HTTP请求。OpenFeign集成了Netflix的熔断器库Hystrix,可以在服务调用失败或超时时提供熔断和降级的处理。OpenFeign集成了Netflix的负载均衡库Ribbon,因此它能够自动处理服务的负载均衡。
2023-11-20 21:02:31
148
原创 Nginx(反向代理,负载均衡,动静分离)
在这种架构中,客户端请求首先到达Nginx服务器,然后由Nginx服务器将请求转发给后端服务器,后端服务器响应请求,并将响应传递回Nginx服务器,最后Nginx服务器将响应返回给客户端。Nginx负载均衡指的是使用Nginx作为应用服务器的负载均衡器。通过使用Nginx动静分离,可以有效减轻Web服务器的压力,提高网站的并发访问能力,从而提高网站的访问速度和用户体验。可靠性高:Nginx具有多种负载均衡算法,可以根据具体需求选择最适合的算法,确保系统的可靠性和稳定性。
2023-11-18 17:33:41
763
原创 Nginx(安装流程,Nginx跨域)
HTTP协议代理服务器:Nginx可以作为HTTP协议代理服务器,能够将请求转发到其他HTTP服务器上,从而实现HTTP请求的流量控制和协议转换。在Web浏览器地址栏输入服务器的IP地址或域名,如果能够看到Nginx的欢迎界面,则证明Nginx已经安装成功。总之,Nginx作为一款开源的、高性能的Web服务器和反向代理服务器,在大型Web应用和高并发访问场景下具有广泛的应用价值。缓存服务器:Nginx可以作为缓存服务器,缓存经常访问的数据,从而减轻后端服务器的负担,提高访问速度。
2023-11-17 18:12:23
108
原创 JPA与sboot整合
JPA (Java Persistence API) 是一种标准化的 Java ORM (Object Relational Mapping) 框架,用于将 Java 对象映射到关系型数据库中的表结构。实体 (Entity): 在 JPA 中,一个实体是指一个具有标识符的对象。通常情况下,实体代表数据库中的一个表。主键 (Primary Key): 在 JPA 中,每个实体都必须有一个主键,用来唯一标识它在数据库中的记录。属性 (Attribute): 实体的属性是指它的数据成员,用来描述实体的状态。
2023-11-16 21:06:03
268
原创 雪花算法(代码实现)
其中,时间戳占用了 41 位,使用当前时间戳减去一个起始时间戳(这里使用的是 2016年11月26日 21点03分45秒631毫秒)来确保生成的ID是唯一的并且是递增的。由于时间戳占据了 41 位,所以雪花算法可以支持到未来的 69 年,每个数据中心每毫秒可生成 1024 个不重复的 ID,每个机器每毫秒也可以生成 1024 个不重复的 ID。需要注意的是,如果在同一毫秒内生成的序列号超过了 4095,就需要等待下一毫秒才能继续生成ID,这意味着生成ID的效率会降低。
2023-11-15 14:05:34
271
原创 JWT概念(登录代码实现)
JWT的优点是可以在各种网络环境下使用,如移动设备、Web应用程序、API等,并且不需要存储在服务器端。JWT是一种基于JSON的轻量级令牌,包含了一些声明和签名,可以用于认证和授权。JWT(JSON Web Token)是一种用于安全传输信息的开放标准,它由三部分组成:头部、负载和签名。以上是一个简单的 JWT 实现示例,实际使用中应该根据需求进行修改和优化。载荷是JWT中的主体,包含了一些要传输的信息,如用户ID、角色、权限等。签名是使用密钥对头部和载荷进行签名生成,用于验证消息的完整性和真实性。
2023-11-14 22:00:21
338
原创 Elasticsearch和sboot整合
Elasticsearch是一个开源的、高性能的分布式搜索引擎,可以实现全文搜索、分析和存储等功能。在Spring Boot的项目中,可以使用ElasticsearchRepository来操作Elasticsearch中的数据。在Spring Boot的项目中,可以使用ElasticsearchRepository中定义的方法来进行数据操作。以上代码实现了通过RESTful API进行数据操作的功能,包括保存图书信息、根据ID查询图书信息、根据标题查询图书信息等。
2023-11-14 19:06:09
570
原创 Nacos(含安装)
Nacos是一个开源的动态服务发现、配置和管理平台。它提供了服务发现、服务健康检查、动态配置管理、服务元数据管理等功能,支持多种服务发现和注册方式。Nacos的全称是Named after Configuration Service,是一个中文名称,意为“命名配置服务”。上述命令表示注册了一个ID为config.demo,Group为DEFAULT_GROUP,内容为hello的配置。上述命令表示注册了一个服务名为demo,IP地址为127.0.0.1,端口为8080的服务实例。访问Nacos控制台。
2023-11-13 17:13:32
136
原创 Oracle(概念含安装)
它支持多个用户同时访问和操作同一个数据库,可以处理海量数据,支持分布式数据库和集群部署,可以实现高可用性和容错性。此外,Oracle还提供了丰富的数据分析和报表工具,可以帮助用户实现复杂的数据挖掘和分析任务。它是一个客户端/服务器系统,可以在各种操作系统上运行,包括Windows、Linux和Unix等。总之,Oracle是一种成熟、稳定、可靠和强大的数据库管理系统,被广泛应用于企业级数据管理和应用开发中。进入Oracle安装文件目录,运行./runInstaller命令,进入安装界面。
2023-11-12 21:05:21
483
原创 ELK分布式日志
Logstash还提供了强大的过滤和转换功能,可以将日志数据转换成Elasticsearch可索引的格式,同时还可以去除噪声和敏感信息。他们为每台服务器分配了2个CPU和4GB内存,以确保集群的稳定性和响应速度。通过将这三个工具组合起来,ELK可以实现对分布式应用程序的日志采集、处理、存储、分析和可视化等功能,帮助用户更好地理解应用程序的运行情况、快速诊断问题并优化系统性能。Logstash是一款流行的日志收集、处理和传输工具,支持多种输入源、过滤器和输出目的地,能够将不同来源的数据进行统一化处理和聚合。
2023-11-12 14:51:22
1334
原创 JWT概念(案例代码)
JWT(JSON Web Token)是一种在网络应用间传递信息的标准方法,它使用JSON对象作为发出方和接收方之间的交换格式,用于验证和授权。然后,我们定义了一个 POST /login 路由,在这个路由中,我们模拟了用户验证过程,并使用 jsonwebtoken 库生成了一个 JWT,并返回到客户端。因为JWT需要服务器签名,黑客无法伪造,JWT中包含终端用户的信息,所以对数据的访问可以追踪。在上面的代码中,我们首先创建了一个 Express 应用,并使用 bodyParser 中间件解析请求体。
2023-11-11 11:36:25
160
原创 若依框架(包括用法)
若依框架是一个基于Java语言的开源Web应用程序框架,它采用了MVC(Model-View-Controller)的设计模式,提供了许多常用功能的实现,如数据库操作、权限管理、缓存处理等,使得开发者可以更快速、更高效地开发各种Web应用程序。请注意,以上步骤是一个通用的使用流程,具体的操作可能会根据你的项目需求和JeecgBoot框架的版本有所不同。总体而言,JeecgBoot框架提供了一套完整的企业级应用解决方案,旨在提高开发效率,降低开发成本,同时提供了一些通用的企业级功能和特性。
2023-11-11 11:33:41
607
原创 多线程中的锁详解
当一个线程需要访问共享资源时,它需要先获取互斥锁,如果锁已被其他线程占用,则当前线程会被阻塞,直到获得锁为止。总的来说,锁是多线程编程中非常重要的一种机制,能够避免线程之间的竞争和冲突,从而保证程序的正确性和稳定性。如果锁已被其他线程占用,则当前线程会不断地尝试获取锁,直到获得锁为止。但是,在高并发场景下,如果锁竞争比较激烈,大量的自旋操作会导致CPU资源浪费,因此需要根据具体场景进行选择。互斥锁的主要优点是能够避免竞争条件,但是在高并发场景下,由于线程的阻塞和唤醒需要时间开销,因此可能会降低程序的性能。
2023-11-10 21:47:20
285
原创 多线程的概念(多线程的代码实现)
多线程是指在一个程序中同时执行多个线程,每个线程可以独立运行,执行不同的任务,但共享程序的资源和内存空间。在多线程编程中,将任务分解为若干个线程,以便并发执行,可以提高程序的效率和响应速度。多线程编程是现代操作系统和大型应用程序中的重要组成部分,常用于提高程序的并发能力、并行计算和提高系统的响应速度。多线程可以提高程序的性能和响应速度,因为多个线程可以并发执行不同的任务,从而提高CPU的利用率。在多线程编程中,需要注意线程间的同步和通信,避免出现死锁、竞态条件等问题。接着我们调用了线程的。
2023-11-09 21:52:15
134
原创 Oauth2.0概念和案例代码
在此示例中,OAuth2RestTemplate类允许我们使用OAuth 2.0授权访问受保护的资源。OAuth 2.0(开放授权)是一种常用的授权机制,用于让用户授权第三方应用访问他们的数据而无需分享密码。OAuth 2.0 是OAuth 1.0的升级版,提供了更多的授权类型和流程。用户被要求授权第三方应用程序访问他们的Google帐户详细信息,如姓名和电子邮件地址。在授权的情况下,用户将被重定向回第三方应用程序,并且授权代码将被发送回应用程序。第三方应用程序将使用访问令牌访问受保护的资源。
2023-11-08 21:46:52
286
原创 SpringSecurity整合JWT
Spring Security是一个强大的安全性框架,它提供了许多强大的功能来保护应用程序,而JWT(JSON Web Token)是一种用于在网络环境中传递声明的开放标准。我们需要提供一个实现了UserDetailsService接口的自定义类,用于从数据库中获取用户信息。整合Spring Security和JWT,可以使我们的应用程序更加安全和高效。我们需要提供一个JwtEncoder和JwtDecoder类,用于创建和验证JWT。至此,我们已经成功地整合了Spring Security和JWT。
2023-11-07 17:39:16
125
原创 SpringSecurity基础概念和案例代码
它可以集成到 Spring 所有的 Web 框架中,比如 Spring MVC、Spring Boot、Spring Cloud 等,并且提供了许多可扩展的接口,允许开发人员根据自己的需求来实现定制化的安全策略。Spring Security 是 Spring Framework 的一个安全框架模块,它提供了一套完整的安全解决方案,包括认证、授权、攻击防护和会话管理等功能。会话管理:会话管理是指管理用户与应用程序之间的会话,包括会话的创建、销毁、超时、取消等,以确保用户的身份信息不被篡改或泄露。
2023-11-06 21:52:13
144
原创 单点登录概念(附代码)
单点登录(Single Sign-On,简称 SSO)是一种身份验证机制,允许用户只需一次登录就能够访问多个应用程序或系统。如果每个系统都需要单独的登录,则会造成用户体验不好,增加用户的工作量,并且可能会导致安全问题。身份验证服务器会验证用户的凭据,并在验证成功后将用户重定向回应用程序或系统,使得用户可以无缝地访问应用程序或系统。用户只需要登录一次,然后就可以访问所有已连接的系统。这样可以提高用户的工作效率,减少用户的烦恼,并且可以增加安全性,因为用户只需要输入一次密码,而不需要为每个系统都输入密码。
2023-11-03 21:23:50
166
原创 Stream流的详细概念和写法
Stream是Java 8中引入的一种新概念,它是一种处理集合的方式,可以使用更简单、更便捷的方式对集合进行操作。Stream并不是一种数据结构,而是一种处理数据的方式,它可以从一个或多个数据源(集合、数组等)生成流,然后通过一些中间操作(例如过滤、排序、映射等)来处理数据,最后通过终止操作(例如收集、计算等)得到结果。Stream中的终止操作会返回一个结果或者void,终止操作是对流的最终操作,常见的终止操作有:forEach、count、collect、reduce等。1.创建Stream。
2023-11-02 19:42:14
450
原创 泛型的概念(附代码)
在使用泛型时,可以将类型参数化,实现代码的通用性和复用性。例如,我们可以使用泛型来定义一个通用的数据结构,不仅可以存储整型、浮点型、字符串等数据类型,还可以存储自定义类型。另外,泛型在编译期间进行类型检查,可以避免一些运行时错误。在 Java 中,泛型有两种形式:类泛型和方法泛型。类泛型是在类定义时声明类型参数,方法泛型是在方法定义时声明类型参数。简单来说,就是把数据类型作为参数传递给代码,从而实现代码的通用性。通过使用泛型,我们可以使代码更加通用、灵活,避免代码的重复编写和类型转换等问题。
2023-11-01 22:03:28
179
原创 lambda表达式概念
Lambda表达式通常被用于函数式编程中,它可以简化代码并提高代码的可读性。函数:lambda表达式本质上就是一个匿名函数,因此可以将其赋值给一个变量,作为一个函数使用。迭代器:可以使用lambda表达式对迭代器进行操作,例如筛选、映射等。Lambda表达式的使用可以大大简化代码,提高程序的效率和可读性。列表:可以使用lambda表达式对列表进行排序、筛选等操作。字典:可以使用lambda表达式对字典进行排序、筛选等操作。对象:可以使用lambda表达式对对象进行排序、筛选等操作。
2023-11-01 21:53:12
111
原创 Springboot cloud概念和Nacos
Spring Cloud Eureka:服务发现组件,提供了注册中心、服务注册与发现机制,可以让应用程序自动发现其他应用程序提供的服务。Nacos是一个分布式配置中心和服务注册中心,具有高可用、高扩展性、易用性等特点,本身也是基于Spring Cloud的开源项目之一。注意:-m参数指定启动的模式,standalone表示单机模式,如果需要部署多个nacos实例进行集群管理,则需要启动为集群模式。Spring Cloud Stream:消息驱动组件,可以让应用程序通过简单的配置方式实现消息的发布和消费。
2023-10-31 20:27:14
273
原创 ES的概念和安装
ES的配置文件位于安装包中的config/文件夹下。配置文件中的一些重要配置项包括:网络绑定IP地址(network.host)、HTTP服务端口号(http.port)等,可以根据需要进行修改。ES是Elasticsearch的简称,是一个开源分布式搜索和分析引擎。下载ES安装包,可以从官网下载:https://www.elastic.co/downloads/elasticsearch。解压安装包到本地文件夹,例如将其解压到/opt/elasticsearch/文件夹下。
2023-10-30 21:35:54
184
原创 SQL优化的详细概念
这些是SQL优化的一些基本概念和技巧,实际应用中需要根据具体情况选择合适的优化策略。同时,不同的数据库管理系统可能有特定的优化方法和工具,需要根据所使用的数据库进行相应的优化实践。避免使用SELECT。
2023-10-26 18:13:40
130
原创 规范的项目流程图怎么写
经过以上流程,编写出来的项目流程图就可以清晰地表达出项目的流程和任务,这有助于项目管理者和参与者在项目过程中更清晰地了解他们的角色和任务。4.绘制流程图:使用标准的流程图符号,绘制项目流程图,包括起始和结束节点、任务节点、连线、判断节点、合并节点等。3.确定任务之间的关系和依赖性:确定任务之间的关系和依赖性,这是指哪些任务需要在其他任务之前完成或同时进行。6.编写任务说明:在每个节点上添加相应的任务说明,包括任务名称、任务描述、任务负责人、任务开始和结束时间等。这有助于确定项目的范围和要求。
2023-10-19 22:24:13
1091
原创 Memcache概念和安装方法
常见的Memcache客户端库包括PHP的Memcache和Memcached扩展,Java的Spymemcached和Jedis,Python的Python-Memcached和pylibmc等。缓存计算结果:通过缓存计算结果,如计算过程中频繁使用的值,可以减少计算时间,提高应用程序的性能和响应速度。提高数据库性能:Memcache可以缓存数据库中较频繁访问的数据,减少数据库的压力,提高数据库性能。缓存静态内容:通过缓存静态内容,如CSS、JS、图像等,可以减少服务器的负载和网络带宽的使用。
2023-10-18 21:28:32
150
原创 Java第三方登录封装工具类
以上代码基于QQ登录进行封装,其他第三方登录可根据需求进行修改。Java中可以使用第三方登录来简化用户登录流程,常见的第三方登录如QQ、微信、微博等。获取到用户信息后,可以进行登录操作或跳转到注册页面进行账号绑定。
2023-10-17 22:15:24
245
原创 Mycat分库分表概念
在MyCat中,分表是将一个大表分成多个小表存储的一种方式,每个小表只存储部分数据,实现对大表的分区。Mycat的分库概念是将一个大的数据库分为多个小的库,以实现数据库的高可用性和高性能。水平切分指的是将一个表中的数据按照一定的规则分散到多个数据库中,每个数据库中只包含部分数据。垂直切分指的是根据数据的业务属性,将一个大的表分割成多个小的表,每个小表只包含部分字段。总之,分表是Mycat中实现水平分片的一种方式,通过将大表分成多个小表存储来提高数据库的性能和可扩展性。
2023-10-17 00:52:59
122
原创 MongoDB的作用和安装方法
打开命令提示符(或PowerShell),进入MongoDB的bin目录D:\mongodb\bin,执行命令mongod.exe,开启MongoDB服务。打开新的命令提示符窗口,进入MongoDB的bin目录,执行命令mongo.exe,启动MongoDB Shell客户端。访问MongoDB官网,下载对应版本的MongoDB安装包,并解压缩到指定目录,例如D:\mongodb。新建一个目录D:\mongodb\data\db,用于存储MongoDB数据。
2023-10-14 21:02:06
631
原创 RabbitMQ的七种工作模式和分别概述
Point-to-Point (P2P)模式:在这种模式下,消息传递是单向的,即消息从一个生产者发送到一个消费者。Publish/Subscribe模式:在这种模式下,发布者将消息广播到多个订阅者,订阅者可以选择性地忽略或接收消息。Federated Queues模式:在这种模式下,多个MQ系统之间可以互相传递消息,消费者可以接收来自多个MQ系统的消息。这种模式适用于需要跨系统传递消息的场景。Message Store模式:在这种模式下,消息被缓存到持久化存储中,以确保消息不会在传递过程中丢失。
2023-10-14 16:14:53
716
原创 Redis数据缓存(Redis的缓存击穿和穿透的区别)
缓存击穿:指缓存中某个热点数据被大量请求,而该数据在缓存中不存在,导致请求穿透到数据库,从而导致数据库压力剧增。缓存穿透:指请求某个不存在的数据,由于该数据不在缓存中,每次请求都直接到数据库中查询,从而导致数据库压力剧增。缓存数据库查询结果。但需要注意的是,使用Redis作为缓存需要考虑缓存的生命周期,以免缓存过期导致数据失效的问题。在应用程序中,会话数据是非常常见的数据类型,可以使用Redis缓存会话数据来提高应用程序的性能,同时也可以提高应用程序的可伸缩性。
2023-10-13 21:14:40
412
原创 Redis概述和与SpringBoot的整合
通过在SpringBoot项目中添加Spring Data Redis依赖,我们可以直接使用RedisTemplate和RedisRepository等Spring Data Redis提供的API来操作Redis,而不需要编写底层的Redis客户端代码。另外,SpringBoot也提供了对Redis的缓存和Session共享等支持,可以在开发过程中提高效率和可靠性。当再次请求获取该用户信息时,先从Redis中获取,如果不存在则从数据库中获取,并将获取到的用户信息存入Redis中。
2023-10-11 19:43:28
181
原创 Mabatis-puls强于Mybatis的地方
更好的分页支持:Mabatis-puls支持更加灵活的分页操作,可以通过参数配置和注解来完成分页操作,而Mybatis需要手动编写SQL语句来完成分页操作。总体上,Mabatis-puls相比于Mybatis在性能、配置和灵活性上都有着优异的表现,因此在一些大型应用程序中,Mabatis-puls是更好的选择。更好的CRUD支持:Mabatis-puls支持更加灵活的CRUD操作,比如在查询语句中可以使用子查询和表达式,而Mybatis只支持基本的查询语句。
2023-10-10 21:32:13
519
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人