自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李维山的博客

后端架构师

  • 博客(285)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 Minikube本地搭建单节点Kubernetes集群

是一个开源工具,旨在为开发者提供一种便捷的方式在本地环境中搭建单节点的 Kubernetes 集群。它主要用于开发、测试和学习 Kubernetes 应用程序,无需依赖大型的硬件资源或复杂的多节点集群配置。minikube 使用轻量级虚拟化技术(如 VirtualBox、Docker、KVM、Hyper-V 等)在用户的本地机器上启动一个独立的虚拟机,然后在这个虚拟机内部署一个完整的 Kubernetes 控制平面以及一个节点。

2024-04-04 19:25:58 427

原创 【SpringCloud微服务实战10】DevOps自动化部署微服务项目(Jenkins+Docker+K8s)

DevOps 是一种重视软件开发人员(Developer)和运维人员(Operations)之间沟通与协作的文化、运动或实践,目标在于快速交付高质量的软件产品和服务。DevOps 强调自动化流程、持续集成与交付(CI/CD)、以及通过工具链、敏捷方法论和跨职能团队协作来增强软件的可靠性和安全性。在 DevOps 中,开发、测试、部署和监控等多个环节紧密连接,形成一个高效的工作流。

2024-03-28 02:13:09 1079

原创 【SpringCloud微服务实战09】Elasticsearch 搜索引擎

Elasticsearch是基于文档存储的,文档可以是数据库中的一条商品数据,也可以是一个订单信息等等,这条数据会被序列化为json格式后存储在Elasticsearch当中。旨在提供一个独立于 Elasticsearch 服务器代码的库,并为所有 Elasticsearch 功能提供非常一致且更易于使用的 API,以下我们使用。分词器作用:创建倒排索引时对文档分词、用户搜索时对输入的内容分词。Kibana是ES的可视化界面,便于我们开发学习。默认分词器对中文支持不好,这里使用IK分词器。

2024-03-17 11:44:36 677

原创 【SpringCloud微服务实战08】RabbitMQ 消息队列

MQ异步通信优缺点:优点:吞吐量提升:无需等待订阅者处理完成,响应更快速故障隔离:服务没有直接调用,不存在级联失败问题调用间没有阻塞,不会造成无效的资源占用耦合度极低,每个服务都可以灵活插拔,可替换流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件。

2024-03-14 20:00:53 396

原创 【SpringCloud微服务实战07】Sentinel 服务保护

是阿里巴巴开源的一款微服务流量控制组件。

2024-03-13 14:06:01 255

原创 【SpringCloud微服务实战06】Gateway 网关

【代码】【SpringCloud微服务实战06】Gateway 网关。

2024-03-12 22:26:14 329

原创 【SpringCloud微服务实战05】Feign 远程调用

1、默认配置:2、自定义配置:(以日志级别为例)方式一:配置文件方式#全局配置feign:client:config:default: #default代表全局生效loggerLevel: FULL #日志级别#个别配置feign:client:config:userservice: #针对某个服务loggerLevel: FULL #日志级别方式二:注解参数方式@Bean。

2024-03-12 21:46:17 260

原创 【SpringCloud微服务实战04】Nacos 配置中心

文件,添加配置如下:(优先级高于application.yml)[服务名].yaml 为默认配置,可以用来配置多环境共享。1、方式一:在@Value注入的变量所在类上添加注解。2、在客户端服务中的resource目录添加。修改配置后,客户端调用自动更新。

2024-03-12 19:28:32 120

原创 【SpringCloud微服务实战03】Nacos 注册中心

Nacos是阿里巴巴的产品,相比Eureka 功能更加丰富,受欢迎程度较高。

2024-03-11 20:05:58 333

原创 【SpringCloud微服务实战02】Ribbon 负载均衡

Ribbon 默认采用懒加载,第一次访问服务时才会去创建 LoadBalanceClient ,请求时间会很长。方式二:在配置文件application.yml中,添加配置规则(针对某个服务)方式一:在启动类中定义 IRule 返回指定策略实例(全局生效,对每一个服务)Eureka中已经集成了Ribbon,无需额外引入,通过。

2024-03-11 19:49:46 184

原创 【SpringCloud微服务实战01】Eureka 注册中心

服务提供者会每隔 30 秒向 EurekaServer 发送心跳请求,报告健康状态。根据服务名称从 EurekaServer 拉取服务列表。consumer :服务消费者,例如案例中的 order-service。Provider :服务提供者,例如案例中的 user-service。eureka 会更新记录服务列表信息,心跳不正常会被剔除。消费者根据服务名称向 eureka 拉取提供者信息。服务提供者启动时向 eureka 注册自己的信息。服务消费者利用负载均衡算法,从服务列表中挑选一个。

2024-03-11 18:21:47 406

原创 【PHP设计模式08】装饰模式

装饰模式,又称装饰器模式 或 装饰者模式 或 油漆工模式,通过创建一个“装饰对象”,在不改变原有类和使用继承的情况下,动态地扩展一个对象的功能,比直接生成子类继承更加灵活,可以通过多个不同的具体装饰类,创建多个不同的行为组合。以上就是装饰模式的基本形式,在实际开发中,往往需要对现有产品扩展新的功能,在不改变原有代码的情况下进行动态扩展,这种情况就可以使用装饰模式来实现。

2024-02-27 00:54:01 302

原创 【PHP设计模式07】桥接模式(桥梁模式)

桥接模式,又称桥梁模式,或是柄体模式或接口模式。可将抽象部分与它的具体实现部分分离,使它们都可以独立地变化组合。桥接模式的主要目的是通过组合的方式建立两个类之间的联系,而不是继承,是比多重继承更好的替代方案,核心在于用组合/聚合的方式共享一些能用的方法,解耦抽象和实现。

2024-02-26 18:44:57 126

原创 【PHP设计模式06】适配器模式(变压器模式)

【适配器模式】适配器模式,也叫做变压器模式 或者 包装器模式,将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,也可以理解为某种协议,使两个不同的类之间可以通过协议合作来达到某种目的。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

2024-02-25 20:57:00 221 2

原创 【PHP设计模式00】23种设计模式实战

所谓设计模式,就是特定环境下同类问题的一种解决方案,与语言无关,随着各种各样问题的出现,编程界前辈们已经总结出一些具有共性的问题,及与其对应的解决方案。选择正确的设计模式,使得开发过程更高效、便捷,代码的可重用性、灵活性更高。最近写一些关于PHP设计模式的文章,对常用设计模式进行总结,其中参考了关于设计模式的书籍、前辈的博客,以及自己的实际工作经验与体会。才疏学浅,如有疏漏,敬请交流。................更新中................

2024-02-25 15:43:00 251

原创 【PHP设计模式05】建造者模式(生成器模式)

建造者模式,可以强制实行一种分步骤进行的建造过程,将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象,客户不必知道产品内部组成的细节。由于建造零件的过程很复杂,因此,这些零件的建造过程往往被“外部化”到另一个乘坐建造者的对象里,建造者对象返还给客户端的是一个全部零件都建造完毕的产品对象。它将产品的结构和建造过程对客户端隐藏起来。

2024-02-25 00:54:04 285

原创 【PHP设计模式03】抽象工厂模式

前面讲的工厂方法模式,每增加一个产品都需要增加对应的工厂,这样就会存在很多工厂,但是在现实生活中的有些时候,人们并不关心产品是由哪个工厂制造的,就像一个服装厂既可以生产男装,也可以生产女装,我们只需造一个服装厂同时生产一个。抽象工厂模式,则为一个产品族提供了统一的创建接口,当需要这个产品族的一系列相关对象时,就可以为此系列的产品族创建一个具体的工厂类来实现该接口。示例:下面以一个服装厂生成衣服为例,服装厂有两个分厂,分别负责生产男装和女装,每增加一个产品都需要增加对应的工厂。

2024-02-23 14:57:00 278

原创 【面试宝典】如何对MySQL进行优化?

一、数据库设计所有字段都设置默认值。 尽可能使用较小的整数类型。 尽可能定义字段为NOT NULL,除非该字段需要NULL。 尽可能使用固定大小的记录格式,如CHAR,除非变长字段用VARCHAR。二、数据库使用尽量使用长连接。 使用 EXPLAIN 查看复杂SQL执行方式,进行优化。 使用 LIMIT 语句尽量要跟 ORDER BY 或 DISTINCT 配合,避免一次FULL TABLE SCAN。 使用 TRUNCATE 清空表记录,而不是DELETE。 使用 UNSIGNED

2024-01-12 13:06:08 273 2

原创 【面试宝典】图解TCP三次握手、四次挥手

一、三次握手二、四次挥手

2024-01-12 11:29:38 123

原创 【面试宝典】图解ARP协议、TCP协议、UDP协议

一、ARP协议二、TCP协议

2024-01-12 11:28:11 191

原创 【面试宝典】图解OSI七层模型、TCP/IP四层模型

一、OSI七层模型二、TCP/IP四层模型

2024-01-12 11:14:21 42

原创 【面试宝典】MySQL的事务隔离级别&脏读、幻读、不可重复读

3、不可重复度:同一事务中,同一查询在t1时刻和t2时刻两次读取结果不一致,发现这行数据已经被修改或删除了。2、幻读:同一事务中,同一查询多次执行时,由于其他insert操作事务的提交,导致每次返回不同的结果集。1、脏读:一个事务读取了 另一个事务 已修改未提交 的数据。

2024-01-12 10:09:06 117

原创 【面试宝典】Redis缓存穿透、雪崩、击穿,简析及解决办法

2、缓存数据更新不频繁,缓存刷新耗时较少时,可采用基于 Redis、zookeeper 等分布式互斥锁,或者本地互斥锁,使少量的请求能到数据库并重新构建缓存,其余线程则在锁释放后能访问到新缓存。3、缓存数据更新频繁或者在缓存刷新的流程耗时较长时,可利用定时线程在缓存过期前主动地重新构建缓存或者延后缓存的过期时间,以保证所有的请求能一直访问到对应的缓存。Redis中多个缓存key一段时间内集中失效(大面积),发生大量缓存穿透,同时大量请求进来,落到数据库,造成数据库阻塞、甚至宕机。

2023-10-20 15:16:28 174 2

原创 【MySQL实战08】误删数据恢复

恢复数据前提条件:在MySQL配置文件my.cnf查看binlog是否开启:show variables like 'log_%';查看binlog保存位置:show variables like '%datadir%';查看当前正在使用的binlog:show master status;​​​​​​​。

2023-02-24 15:47:49 452

原创 【MySQL实战07】数据备份

MySQL数据库备份形式分为物理备份和逻辑备份。

2023-02-23 17:30:39 370 2

原创 【MySQL实战06】MySQL配置半同步主从复制、读写分离(TP6)

MySQL复制默认是异步复制,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自动返回数据给客户端,但并不知道Slave是否或何时已经接收且已处理,因此存在一定的概率备库与主库的数据是不对等的。在异步复制的机制的情况下,如果Master宕机,事务在Master上已提交,但很可能这些事务没有传到任何的Slave上。假设有Master->Salve故障转移的机制,此时Slave也可能会丢失事务。

2023-02-21 14:45:31 559 2

原创 Mac下brew安装MySQL5.7 设置默认密码

【代码】Mac下brew安装MySQL5.7 设置默认密码。

2023-02-14 11:23:06 1105

原创 【Java】Apache HttpClient调用微信支付API v3报错:找不到证书序列号对应的证书

还需要通过其中的associated_data、nonce、ciphertext参数 和 APIv3秘钥,解密出平台证书,调用微信支付时,使用的 wechatPayCertificates 参数为。如题,“找不到证书序列号对应的证书”,是因为在使用。另外官方建议定期去更新平台证书,见。“平台证书”需要调用 ““ 进行获取,可以使用微信官方提供的。

2022-09-22 13:25:13 3225

原创 【Java】Thymeleaf模板引擎禁用缓存不起作用

【代码】【Java】Thymeleaf模板引擎禁用缓存不起作用。

2022-08-25 14:24:01 462

原创 PHP安全之道学习笔记

不仅在php项目中,在所有网络应用的开发过程中,都会面临着各种各样的安全问题,有些可能是应用软件自身所暴露的安全隐患,也有些是开发人员自身编程原因导致的程序漏洞,这些无疑会对应用的安全性和稳定性造成不良的影响,作为开发人员,应该具备一定的安全防范知识,在开发过程中不断完善安全机制,加固应用程序的运行环境。下面为php开发中的一些安全防范手段,开发语言不尽相同,但有一些思想同样适用。1、屏蔽PHP错误信息在php.ini中设置:; display_errors; Default V

2022-04-18 20:44:40 4772

原创 【MySQL实战05】锁

MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。数据库锁设计的初衷是处理并发问题。全局锁命令:Flush tables with read lock (FTWRL),使整个库处于只读状态,可以在客户端断开的时候自动释放。使用场景:全库逻辑备份。官方自带的备份工具 mysqldump,使用参数–single-transaction 时,导数据之前会启动一个事务,来确保拿到一致性视图,但只适用于所有的表都使用事务引擎的库,对于 MyISAM 这种不支持事务的引擎,如果备份过程中有更新,

2022-04-12 18:37:40 1212 1

原创 【MySQL实战04】索引

三种常见的数据结构:哈希表、有序数组、搜索树。哈希表:以键 - 值(key-value)存储数据,不适合范围查询,适用于只有等值查询的场景。 有序数组:递增顺序保存,支持范围查询,但只适用于静态存储引擎。 搜索树:二叉树搜索效率最高,实际需要根据数据块的大小使用“N 叉”树,减少磁盘访问次数。每一个数据库,底层存储核心都是基于数据模型,不同数据结构的数据库的拥有不同的适用场景。InnoDB 的索引模型B+ 树结构,每一个索引在 InnoDB 里面对应一棵 B+ 树。例如,一张表的..

2022-04-11 15:53:12 620

原创 【MySQL实战03】事务隔离

1、事务的特性:原子性、一致性、隔离性、持久性。2、事务间同时执行可能会出现的问题:脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)3、事务隔离级别:读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)、串行化(serializable )。读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 读提交是指,一个事务提交之后,它做的变更才会被

2022-04-11 12:16:14 218

原创 【MySQL实战02】redo log和binlog

MySQL的更新操作涉及到两个重要的日志模块,redo log(重做日志)和 binlog(归档日志)。1、redo log(重做日志)InnoDB 引擎特有的日志模块,可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe。当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。i

2022-04-11 11:52:28 995

原创 【MySQL实战01】 一条SQL查询语句是如何执行的

MySQL 可以分为 Server 层、存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。 .

2022-04-11 10:49:35 685

原创 面试 Redis 没底?这 40 道面试题让你不再慌

1、什么是 Redis?Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - value 缓存产品相比有以下三个特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。 Redis 支持数据的备份,即 master-slave

2022-03-07 17:03:40 268

原创 在设计Api接口时,你应该要注意哪些事项

设计接口是一件容易的事,也是件困难的事。设计接口每个人都会,每个人都能设计,也由此产生了各种各样的理念的接口。工作这么多年,也有了一些感悟。很多人会说,设计接口多么简单,只要命名好,然后联调通了,上线可以调用就行了。特别是非互联网行业的人,这里没有歧视的意思。因为互联网行业和传统行业太多不一致性决定了这种思想的产生。 接口是项目里面的最小粒度的单元,接口设计需要注意点很多,需要的考虑方方面面,很多人也不重视,而且设计接口需要的技术栈也需要很多,能充分考察到技术人的知识的广度以及深...

2022-03-07 16:10:37 1329

原创 【Docker】Docker下安装PHP扩展

1、进入php容器docker exec -it 5849efd915e3(容器ID) /bin/bash2、初始化php核心扩展docker-php-source extract#移动到目录cd /usr/src/php/ext/ 此时可见php核心扩展库如下:3、启用扩展 示例:安装并启用 bcmath扩展docker-php-ext-install bcmath 此时 php -m 查看扩展安装成功:4、安装pe...

2022-02-18 11:10:13 1347

原创 通过SSH隧道连接远程MySQL-rds服务

场景: 现有一台MySQL-rds服务,地址:lws.rds.com:3306,用户名:lws,密码:123456,数据库:user。 现要在本地连接该服务,对数据进行处理,然而本地ip无法访问远程数据库。 已知有一台服务器A可以连接该数据库服务,ip:8.123.456.7,用户名:root,密码:654321,如何通过这台服务器的ssh隧道连接远程数据库服务。实现: 使用ssh命令将远程数据库服务端口 通过ssh隧道 绑定到本地任意空闲端口,如...

2021-11-03 15:17:38 1100

原创 Docker下如何使用php的composer

1、进入php容器docker exec -it cb6c1fe83bff(php容器ID) bash2、安装composercurl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composer#换阿里云源(可选)composer config -g repo.packagist composer https://mirrors.aliyun.com/composerex

2021-08-18 16:58:32 1579

【PHP】Redis操作类-包含常用操作

Redis操作类-包含常用操作

2021-04-26

area_list.sql

全国行政区域划分数据表,sql文件,高德地图2020年12月最新版(包含省、市、区县,及上下级所属关系)

2020-12-10

最简单、用的网站最多的js时钟

js时钟,一行js代码显示当前时钟,格式如:2018/7/5 下午7:40:35 星期四,很多网站都在用,放在头部导航。

2018-07-05

php必备函数 常用函数及其测试结果

php必备函数,按照数组函数、字符串函数、数字函数分类,每一个函数都有测试结果

2018-07-05

简单实用的js倒计时 时分秒倒计时

js时分秒倒计时,某教育网站线上使用的同款js倒计时。

2018-07-05

空空如也

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

TA关注的人

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