- 博客(164)
- 资源 (1)
- 收藏
- 关注
原创 12、本地缓存&分布式缓存(未完待续)
1)在分布式查询时,每次查询的服务器可能不同,而本地缓存只负责本台服务器的缓存,这样就会导致当请求路由到不同的服务器时,都需要先查询本地缓存,如果缓存没有,再去查询数据库,这样的操作同样会操作多次数据库。2)如果某一个数据发生变化,例如A服务器,那么就会修改A服务器的缓存数据,但是下次再请求查询时可能会路由到B服务器,但是B服务器的本地缓存中的数据还是原来的脏数据,就会导致数据不一致的问题。2)当缓存数据量增大时,缓存中间件可以扩容【做集群】,数据可分片存储,打破了本地缓存的容量限制,实现高可用。
2025-01-26 17:52:04
219
原创 11、性能测试及监控&Nginx动静分离配置
(3)重启nginx,访问gulimall.com,访问的是nginx服务器中的静态资源。使用Jmster监控,CPU达到50%以上,说明网关也是CPU密集型的。(2)gulimall.conf配置文件中指定静态资源的路径。1、使用jmeter对虚拟机中的nginx性能进行压力测试。选择需要监控的应用程序,点击连接即可进行监控。3、监控docker中的nginx服务性能。1、将静态资源存放到nginx服务器中。在压测之前,nginx的性能指标。监视:阻塞的线程,正在等待锁。驻留:线程池里面的空闲线程。
2025-01-24 15:26:50
702
原创 10、Nginx+Windows搭建域名访问环境
这样就实现了通过映射域名,再访问域名跳转到nginx服务后,nginx内部再做一次跳转到首页的地址。gulimall:就是在nginx.conf配置文件中网关的配置服务代理。3、打开switchHosts工具,添加域名与IP地址的映射关系。2、进入conf.d目录下,修改gulimall.conf配置。1、进入nginx.conf主配置文件中,添加网关负载配置。修改gulimall.conf,添加以下配置信息。2、修改gulimall.conf配置文件。2、找到hosts文件,并取消只读权限。
2025-01-23 16:49:00
494
原创 7、跨域问题分析及解决方案
• Access-Control-Allow-Credentials:跨域请求默认不包含cookie,设置为true可以包含cookie。• Access-Control-Allow-Origin:支持哪些来源的请求跨域。• Access-Control-Expose-Headers:跨域请求暴露的字段。3、前端获得这些跨域参数后,再发送正式的请求到后端;
2025-01-21 18:02:50
413
原创 SpringBoot整合ES及简单API使用
2、编写配置,给容器中注入一个RestHighLevelClient。4、查看ES,数据已存入到ES。1、pom文件导入ES依赖。5、带检索条件的查询。
2025-01-21 17:39:00
215
原创 ClickHouse-CPU、内存参数设置
clickhouse出问题一般是cpu资源不够,因为ck是非常消耗cpu资源,内存资源【服务器资源问题】,或者IO问题。1、clickhouse服务端的配置在config.xml文件中。
2025-01-13 11:27:11
923
原创 Clickhouse基础(一)
1)表引擎类型表示按照tdId【通道id】进行分区存储直接翻译的话就是索引粒度,指在稀疏索引中两个相邻索引对应数据的间隔。ClickHouse 中的 MergeTree 默认是 8192。官方不建议修改这个值,除非该列存在大量重复值,比如在一个分区中几万行才有一个不同数据。
2025-01-09 21:18:40
1391
原创 4、Springboot整合MyBatis-Plus
4)告诉mybatisPlus SQL的映射xml文件位置及相关配置。在启动类中使用注解,告诉mybatisPlus扫描哪个路径下的包。3)启动类配置mybatis-plus扫描路径。1)配置数据源,导入数据库驱动依赖。2)配置文件中配置数据源信息。导入mysql驱动依赖。
2025-01-05 22:51:16
306
原创 快速获取镜像包的方法
1、当我们需要在无网络的环境中,在Docker环境中安装某个镜像时,需要先下载这个镜像包后,再上传。将下载好的tar包保存到指定的目录下。在有网络的电脑中使用使用命令下载。2、下面以在minio为例。这样就可以下载下来使用了。
2024-11-24 21:48:03
386
原创 三、Kafka副本
2、创建2个分区两个副本3、查看topic详细信息Leader是接收生产者的数据,会先收到数据,所有Follower中的数据都是从Leader中拉取的,由于存在时间差的问题,导致Leader中的数据要多一些,Follower中的数据要少一些。ISR[0 1 2]:表示三台服务器正常运行LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的offset+1。HW(High Watermark):所有副本中最小的LEO。(1)Follower发生故障后会被临
2024-08-20 00:00:08
399
1
原创 Kafka生产者(二)
1、例如我们实现一个分区器实现,发送过来的数据中如果包含 atguigu,就发往 0 号分区,不包含 atguigu,就发往 1 号分区。2、实现步骤(1)定义类实现Partitioner 接口。(2)重写 partition()方法。import org/*** @Copyright: 自定义分区器// 获取数据 atguigu hello String msgValues = value . toString();
2024-08-04 23:38:07
1328
1
原创 docker环境安装kafka/Flink/clickhouse镜像
3、再进入到/home/cl/app/flink/flink目录,执行docker-compose up -d即可。然后进入到kafka目录,使用docker-compose up -d 命令即可。2、进入到/home/cl/app目录,使用docker命令加载tar镜像文件。4、将kafka文件夹也拷贝到/home/cl/app目录下。5、使用docker-compose命令启动kafka服务。1、将一下三个tar文件复制到ubuntu指定目录下。2、进入到/home/cl/app/flink目录。
2024-07-30 22:02:26
445
原创 6、获取树形结构数据递归写法
1)运用java8使用了Stream()的高级写法,并使用sorted()排序。从表可以得到通过parent_cid这个字段将整个数据结构串联在一起的。2、通过java代码获取并构建树形结构数据返回。学习:构建表结构时的规范,字段类型的选择。可以在实际开发中借鉴使用。1、mysql库表字段。2)递归获取子级信息。
2024-07-28 16:50:09
255
原创 3、使用renren-generator生成基本代码
1、打开generator.properties配置文件,修改配置。2、修改application.yml配置文件中的数据库信息。主要修改包名、模块名、前缀信息。选择表,点击生成代码即可。
2024-07-27 21:47:18
356
原创 MyBatisPlus插入更新数据时通用字段自动赋值
MetaObjectHandler接口是mybatisPlus为我们提供的的一个扩展接口,我们可以利用这个接口在我们插入或者更新数据的时候,为一些字段指定默认值。2)setValue(String name,Object value) : 设置公共字段填充值,第一个参数值name与实体字段要相同。2、自定义元对象处理器类,实现metaObjecthandler接口,重写insertFill、updateFill方法;1)在每次执行插入和修改操作时,会执行insertFill,updateFill方法;
2024-07-27 21:16:41
468
原创 5、SpringCloud - Nacos配置中心、命名空间
1、将application.yml文件中的配置信息分离,数据库配置的放在一个配置里面,mybatis的相关信息放在一个配置里面,其他的放在other.yml文件中。3、在gulimall-coupon模块中的application.properties文件中添加以下测试内容。5、在nacos页面的配置管理-配置列表中添加配置信息【Data Id】1、可以创建开发、测试、生产三种环境,利用命名空间来做环境隔离。2、同样的在prod生产环境配置相同的配置信息。6、配置集:所有的配置的集合。
2024-07-27 17:06:00
3122
原创 如何解决java程序CPU负载过高问题
在生产环境中,有时会遇到cpu占用过高且一直下不去的场景。这种情况可能会导致服务器宕机,进而中断对外服务,也会影响硬件寿命。
2024-06-29 19:21:46
2038
1
原创 kafka基础教程(一)
zk是整个集群中哪些服务器上线了,记录服务器节点信息的状态,还会记录每个分区谁是leader,后续消费的时候直接找leader消费。表示kafka在整个集群中的唯一身份标识,不可重复。(1)修改server.properties文件。zookeeper.connect属性配置。(2)查看kafka版本命令。(1)进入到指定目录下。
2024-05-30 22:57:56
568
原创 解决finalshell无法连接,一直提示登陆密码
在使用FinalShell连接配置虚拟机时,无法正常连接,一直提示输入登录密码,即使输入的密码是正确的。再按键 ‘Esc’,输入’ :wq!进入文件,键入’i’ ,进行插入模式,添加一行。输入刚才我们设置的密码即可进入root用户。切换到root 模式,输入密码。设置密码并再次确认即可;再进行连接,连接成功!再切换到root用户。
2024-05-13 23:50:48
5173
4
原创 在ubuntu安装Docker容器
1.修改【/etc/docker/daemon.json】文件,没有就创建这个文件,然后网上随便找一下Docker镜像加速地址并填入。(7)执行 docker ps 命令,若不报错,则说明启动成功。(1)直接使用 apt 安装,一般这样也自动启动好了。(1)查看 Docker 版本。(2)查看 Docker 状态。(6)开机自启动Docker。(5)重启 Docker。(3)启动docker。(4)停止docker。
2024-05-12 23:00:17
488
1
原创 解决FinalShell连接虚拟机失败的问题
本文将详细介绍如何一步步诊断并解决这个问题,包括检查虚拟机的IP地址、确认网络连通性、安装和配置SSH服务,以及管理防火墙设置。如果仍然存在问题,请检查FinalShell的配置,确保你使用的是正确的用户名、密码或SSH密钥,以及正确的端口号。首先,确保虚拟机的IP地址没有更改,因为动态主机配置协议(DHCP)有时会导致虚拟机在重启后获取新的IP地址。如果可以ping通,说明网络层面没有问题,但FinalShell还是无法连接,这时我们需要检查SSH服务。首先,检查Ubuntu的防火墙(UFW)是否启用。
2024-05-12 22:41:13
3196
1
转载 Java的Jps命令使用详解
jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,它可以显示Java虚拟机进程的执行主类(Main Class,main()函数所在的类)名称、本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)等信息。另外,jps命令只能显示它有访问权限的Java进程的信息。
2024-04-21 16:36:17
624
原创 kafka学习1 - 线程、进程消息通信方式、JMS模型、Kafka原理图
T1线程发送数据的速率是50/s,T2线程消费的速率是30/s,消费的速率小于生产的速率,就会有大量的数据积压在堆内存或者磁盘文件上,时间长了后,积压的数据就会越来越多,导致影响整个流程的性能。发布-订阅模式是消费者订阅某个主题的消息,主题的消息可以被多个消费者订阅消费。在kafka中,通过偏移量的方式标记每个消息,来确保消息的顺序性。T1线程的数据发送得到堆内存,T2线程就可以共享堆内存的数据。两个不同的线程之间是可以通过堆内存的方式进行数据交互的;进程与进程之间的通信可以通过消息中间件的方式。
2024-04-21 15:24:14
516
1
原创 DBeaver工具在无网络的情况下连接clickhouse方法
2、将这些驱动包拷贝到生产环境后,新建一个连接【填写clickhouse服务IP、用户名及密码】->编辑驱动设置->添加文件->选择我们下载好的驱动包,逐个选择每个包中的jar文件,一个个手动添加即可->点击完成。1、安装DBeaver后,一般在生产环境下是没有网络的,这就存在一个问题,使用DBeaver去连接clickhouse服务时,是需要下载驱动的,但是没有网络,就不能下载驱动;1、首先是在有网络的情况下,使用DBeaver工具先下载好连接clickhouse所需要的驱动文件,一下就是下载的驱动包。
2024-04-21 14:16:10
1743
原创 VMware虚拟机的三种网络模式
在这种模式下,VMware 虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。需要手工为虚拟系统配置 IP 地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的 TCP/IP 配置信息,以实现通过局域网的网关或路由器访问互联网。主机,局域网其他主机,虚拟机,三者均可互相访问。
2024-04-21 11:11:16
1397
原创 vmware安装win10及ubuntu
选择下载的win10镜像iso文件,导入后,点击完成即可。选择需要保存文件的位置,还是选择刚才创建的文件夹。没有此电脑,可以点击个性化-》主题-》桌面设置。选择刚才创建的文件夹。
2024-04-13 23:09:03
376
原创 idea中常见快捷键及插件操作
安装后到Tool中找到该插件后,点击既可在控制台上看到,在查询sql语句时,就可以打印真实的sql语句,便于在排查问题时快速定位问题使用。(2)在类上ctrl+shift+\,自动生成类相关的注释信息。(1)在方法上ctrl + \ ,自动生成方法的注释信息;(5)输入类名,方法名,url地址都可以检索到。(3)输入history,可以查看提交记录。(4)输入break,回车可以查看所有断点。(2)输入commit,回车可以提交代码。(1)输入pull,回车可以更新代码。
2024-03-20 23:49:42
562
原创 在win上将redis注册为本地服务
安装redis服务:redis-server --service-install redis.windows.conf --service-name redis6379 --loglevel verbose。通过service-name启动redis服务:redis-server --service-start --service-name redis6379。shift+鼠标右键打开菜单,点击“在此处打开命令窗口”,成功打开cmd。进入redis安装目录。
2024-03-04 11:22:23
709
原创 责任链模式
责任链模式通常使用于处理的事单个请求需要有多个请求处理者来处理不同的事情,将多个处理者链接起来。处理者可以通过继承一个抽象类来实现其中的处理方法,并且若是其中情况成立可执行下一个请求者,形成一个执行链路。
2024-02-06 11:30:20
1423
原创 Java Stream通过findFirst()查找满足条件的一条数据
异常:如果选择null值,findFirst将抛出NullPointerException。输出将为NullPointerException。2、演示具有空值的情况。
2024-01-23 16:49:18
3759
原创 @RequestParam、@PathVariable、@RequestBody、@RequestAttribute详解
PathVariable注解在应用时,在@RequestMapping请求路径中,将需要传递的参数用花括号{}括起来,然后,通过@PathVariable(“参数名称”)获取URL中对应的参数值。主要用来接收前端传递给后端的json字符串中的数据,也就是请求体中的数据,GET方式无请求体,所以使用**@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。用法:首先向浏览器发起goto请求并添加自定义值到请求域中,再转发到success请求去获取这些请求域中的值。
2023-12-21 22:42:07
803
原创 Spring异步处理——@Async注解
Async是spring框架中十分好用的异步写法:1,在方法上使用该@Async注解,申明该方法是一个异步任务;2,在类上面使用该@Async注解,申明该类中的所有方法都是异步任务;3,使用此注解的方法的类对象,必须是spring管理下的bean对象;4,要想使用异步任务,需要在主类上开启异步配置,即,配置上@EnableAsync注解;@Async注解工作原理就是在调用被注解的方法时,Spring会将该方法的执行转移到线程池中的一个线程进行处理。
2023-10-30 17:22:36
1574
原创 JDK动态代理类Proxy.newProxyInstance()
在 invoke() 方法中,可以使用 proxy 参数来调用代理对象的其他方法,或者在特定情况下使用代理对象本身。InvocationHandler 接口中只有一个方法 invoke(),当代理对象的方法被调用时,会被传递到 invoke() 方法中进行处理。Method method:被调用的方法对象。是一种在运行时创建代理对象的机制,允许我们在不直接访问原始对象的情况下,通过代理对象来调用原始对象的方法。这是一个数组,指定了代理类要实现的接口,通过代理对象调用接口中的方法时,
2023-10-19 10:45:22
630
原创 Docker基础(二)
由于docker不需要实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。2、docker利用的是宿主机的内核,而不需要加载操作系统OS内核。容器,是一个运行时环境,就是我们前面说的集装箱。
2023-07-16 15:49:00
1120
原创 Docker基本概念
就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。Docker的出现得以打破过去【程序即应用】的观念,透过镜像将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台将的无缝接轨运作。Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了。
2023-07-16 15:13:55
463
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人