自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 minikube dashboard外网访问(阿里云环境)

创建一个在宿主机上的代理,ECS宿主上的80端口被监听,此时80端口的数据都会被转发到k8s集群的apiServer上。此时就可以通过外网ip进行访问dashboard了,8.213.130.127是我阿里云ECS外网ip。继续上一片文章,安装完成后启动dashboard并且可以通过外网ip进行访问。登陆到ECS主机上,可以通过网页登陆进行远程登录。后台启动dashboard。

2023-04-11 12:14:52 1061 1

原创 minikube安装与运行(阿里云环境运行)

说下为啥选择云环境,最开始在本地电脑上安装的minikube,但是由于国内的网络访问不了谷歌的镜像仓库,安装ingress-nginx或者其他插件时着实的恶心。要不翻墙,要不自己搭建个镜像仓库。最终决定用阿里云境外的节点,按小时收费的那种,一个小时大概也就3毛钱。随时释放,不会因为这些环境和网络的问题分神。

2023-04-11 11:00:19 1516

原创 Minikube安装、运行

Minikube实际是在本地启动了一个docker容器在此容器里运行的k8s集群。

2023-04-10 04:09:44 600

原创 spring cloud注册不上sentinel问题

直接运行java -jar sentinel-dashboard-1.8.6.jar。配置spring cloud alibaba。工程构件采用的是maven,父pom的配置。启动user应用后查看控制台。// 该配置保证启动立即注册。新建一个order服务。

2023-04-09 05:22:40 1143 1

原创 nacos本地启动单节点

官网上时这么说的,SecretKey012345678901234567890123456789012345678901234567890123456789(2.2.0.1后无默认值)原因是下面的配置为空。为止在nacos/config目录下的application.properties文件中。修改application.properties文件中的。默认用户密码,nacos nacos。找一个在线的base64工具。启动不成功,报错入如下。

2023-04-07 05:19:59 494

原创 JDBC示例

【代码】JDBC示例。

2023-04-02 01:19:46 51

原创 eureka server启动不成功(jdk9+)

【代码】eureka server启动不成功(jdk9+)

2023-03-27 02:48:35 481

原创 Springboot-自定义运行监听器(SpringApplicationRunListener)

Springboot暴露了对运行时过程监听的接口,其默认实现是org.springframework.boot.context.event.EventPublishingRunListener,通过此监听器进行发布相关事件,同时开发人员也可以自定义该接口的实现。pom.xml如下自定义监听器配置监听器resources/META-INFO/spring.factories文件中增加自定义的运行监听器启动引导类控制台输出自定义运行监听器已生效。Springboot在启动时会加载一个SpringFactorie

2023-03-25 01:47:12 641

原创 Springboot-自定义starter

假设我们需要新增一个hello-starter,这个组件具有打印hello的能力。首先创建一个maven工程,名称为hello-starter创建自动配置类@Bean创建文件resources/META-INFO/spring.factories到此为止自定义的stater已经全部完成。

2023-03-25 00:16:24 273

原创 Spring Framework-@Enable

HelloWorld功能模块@Bean// ... 其他功能性Bean实例定义@EnableHelloWorld注解测试类输出对上述例子进行增强,增加对@Enable注解属性值的处理,返回不同的实例对象。定义HelloWorld功能模块@Bean// ... 其他功能性Bean实例@Bean// ... 其他功能性Bean实例定义功能选择器@Override}else {定义@EnableHelloWorldBySelector注解。

2023-03-24 15:25:16 56

原创 Spring Framework-模式注解装配

自定义注解并且被@Service注解标记,同样具有被Spring管理的能力。用来标记被Spring Framework管理的Bean。定义User实体,并且用@CustomizedService标记。Spring Framework注解。web控制器模式注解。

2023-03-24 02:14:20 65

原创 Spring Framework-Post Processor(后置处理器)

Spring容器给用户提供了三种Post Processor容器级别Bean级别执行顺序。

2023-03-23 03:03:43 72

原创 Spring Framework-IOC容器

在互联网蓬勃发展的今天,谈到Java Web应用就不得不提到Spring。几乎所有主流的Java Web应用的开发都在使用Spring。Spring已不仅仅是一个管理Java Bean的容器,而是一个生态。包括:Spring Framework(Ioc容器) 、Spring Data(数据库相关)、Spring Security(权限相关)、Spring Cloud(微服务相关)等等。这些都是基于Spring Framework的基础上进行构建的,学好Spring Framework是非常必要的。

2023-03-23 00:24:57 55

原创 MYSQL系列4-锁等待

长事务可能会造成行锁(死锁)、MDL锁等待。可以通过参数调整,降低锁影响。可以通过系统表识别长事务和锁。业务上尽量将加锁的操作后移动,降低锁时间。

2023-03-19 18:38:23 326

原创 MYSQL系列4-刷脏

将内存数据页保存至磁盘。同时,删除与此页相关的redo log,推进check point。刷脏可能会大致Mysql卡住,造成性能问题。通过告知服务器IO性能,可以控制合理刷脏IO。合理的脏页比例上限,建议保持默认。“顺便刷脏”功能需要在SSD硬盘下关闭。

2023-03-19 01:14:05 223

原创 应用的灰度发布

以spring cloud为例,流量入口处判断当前用户是否时灰度用户,如果是灰度用户,选取服务注册中心上的灰度服务,并将请求转发到灰度服务,同时将灰度标记通过http header进行传递。灰度服务在接收到灰度请求时,将http header中的灰度标记存储的本地线程,后续调用其他服务时同样可根据该标记选择灰度服务。第一种,简单粗暴,直接按配置的百分比随机灰度,会出现同一个用户同时访问原服务和灰度服务的可能。第二钟,当用户被标记为会度用户时,以后的所有请求都会转发到灰度服务。手工配置,指定用户为灰度用户。

2023-03-15 17:01:54 203

原创 MYSQL系列3-如何处理数据更新

但是在执行插入(12,12,12)是会被阻塞,原因是辅助索引C已经被Tx A增加了间隙读锁。通过undo log来实现,MYSQL每次开启一个事务时会生成一个事务id,并且该id是自增的。如果采用快照读的方式只能读取到比160事务id小的并且是已经提交的数据。将数据库在过去某个时刻的快照应用在查询上,使得:这次查询只能看到别的事务生成快照前提交的数据。InnoDB引擎产生的物理日志,保证持久化,ACID中的D(崩溃修复用日志)。InnoDB引擎产生的逻辑日志,保证原子性、隔离性(例如:事务回滚,快照读)。

2023-03-14 20:55:46 99

原创 微服务的拆分原则

最常见的拆分方式,将系统中的业务模块按照职责范围识别出,每个业务模块拆分为一个独立的服务。采用小步快跑的方式。系统中,可以分为“商品”“交易”“用户”3个服务,也可以分为“商品”,“订单”,“支付”,“买家”,“卖家”,“发货”6个服务。将系统中的业务模块按照优先级排序,将稳定要求高的核心服务和稳定要求低的非核心服务拆分开来,然后重点保证核心服务的高可用。例如:A服依赖B服务,B服务依赖C服务,C服务依赖A服务;D服务依赖F服务,F服务依赖D服务的情况。将性能要求较高的服务拆分出来,避免对其他业务影响。

2023-03-14 00:22:02 206

原创 MYSQL系列2-InnoDB索引

计算及硬盘操作的最小单位是页,一个页的大小机械硬盘是512b,SSD硬盘是4kb,InnoDB存储引擎默认的页大小是16kb,充分考虑了硬盘页的大小,正好是硬盘读取的倍数。假设有一个行数据中的某一列,数据量非常大,导致一个数据页近能存储这一行数据。因为页是InnoDB读写磁盘的最小结构,如果是16M的页,对磁盘的读写压力非常大,同时有可能16M大的页中指有1条是需要的数据,对资源的浪费非常的大。在此引入一个回表的概念,同辅助索引找到数据的主键,在通过主键在聚簇索引查找对应的数据,这个过程就称为回表。

2023-03-13 22:16:11 94

原创 MYSQL系列1-sql语句的执行过程

InnoDB是目前最主流的存储引擎,适合各种需要事务的互联网业务。MyISAM,对不要求事务、查询效率要求非常高的可以考虑。Archive,日志信息归档可以考虑。Memory,临时表可以考虑。

2023-03-12 01:45:27 105

原创 CAP定理

CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼得。

2023-03-10 21:18:18 35

原创 docker安装mysql5.7

v /Users/xiaosa/learning/mysql/data:/var/lib/mysql/,将本地的/Users/xiaosa/learning/mysql/data目录挂载到容器的/var/lib/mysql/目录上,保证容器重新启动时数据不会丢失。-e MYSQL_ROOT_HOST=%,设置允许链接的地址,%代表允许任何地址链接。--name mysql5.7,给启动的容器命名为“mysql5.7”。docker ps -a,查看本地所有容器,包括没有运行的容器。查看本地运行中的容器。

2023-03-09 20:26:44 407

原创 数据库事务与ACID特性

用户定义的一个数据库操作序列,要么全部成功,要么全部失败,不存在中间状态(部分成功,部分失败)。这里的数据库操作序列通常指的是sql语句。示例定义一张用户表account。id,账户id。name,姓名。amount,金额。有两个用户张三、李四,初始状态张三账户有100元,李四账户有50元。张三希望转50元给李四。实现此需求需要两个update语句,一个是张三扣除50元,另一个是李四增加50元。

2023-03-09 19:03:48 62

原创 Redis系列10-布隆过滤器

136xxxx9872为例,经过f1、f2、f3...f8%向量长度,并且判断这8个下标是否都为1,如果都为1则可以判断出,136xxxx9872一定在这50亿数据当中。方案二,将50亿个电话号码都存储在内存当中,假设一个电话号码占用8个字节,50 * 8 约等于40GB,内存占用太大。方案一,假设50亿个电话号码都存储在数据库中,通过in的操作进行查询,会占用大量的数据库资源并且满足不了快速。1970年由伯顿.布隆提出,用很小的空间,用来解决上述问题,判断一个小数据集是否存在于一个大数据集中。

2023-03-08 17:57:39 78

原创 Redis系列8-cluster(2)

当redis-client向redis-cluster集群中的任意节点发送命令时,该节点会根据key的值来计算出正确的node节点。如果客户端随机的去访问集群里的任意节点,来通过moved或者asked异常来确定正确的节点,将会带来巨大的额外开销。合并同一个节点的key,与串行IO的最大区别就是分多个线程去请求不同的node节点,响应时间为最慢的节点请求。合并同一个节点的key,串行的请求每一个节点,将n次请求转换为node个数的请求。每个节点都执行命令的操作,例如:在每个节点上执行keys *操作。

2023-03-08 01:08:06 75

原创 Redis系列7-cluster(1)

节点与节点之间是互相通信的,也就保证了每个节点都会指定集群中虚拟槽的分配,当client访问任意一个节点时,node节点可以判断出是否应该是当前节点进行处理,如果不是则返回应处理的节点。如果client每次都随机访问redis-cluster集群中的节点时,这样会有性能问题,大概率会进行两次请求,所以后续引入的智能客户端的概念,client也会维护redis-cluster集群node与虚拟槽的映射关系。节点取余属于客户端分区,实现简单,但是在增加和删除节点时需要大量的数据迁移工作。

2023-03-07 20:11:23 223

原创 Redis系列6-sentinel

redis客户端通过redis-sentinel来获取集群中的主从节点,同时redis-sentinel负责管理整个redis集群,当集群中的主节点发生宕机时,redis-sentinel负责选出新的主节点,并变更主从关系,同时会将最后的变更信息通知给客户端。redis-sentinel与redis集群中的个个节点每秒进行ping操作,某一个sentinel如果发现超过 down-after-milliseconds配置的时间,则认为该节点已宕机,此时针对该节点的下线成为。

2023-03-07 00:27:44 140

原创 Redis系列5-主从复制

当网络发生抖动,从节点发生同步数据请求时,会传递两个参数,runid、offset,此时主节点判断offset是否在buffer范围内,如果在只进行部分复制,将buffer缓冲区内的内容发送给从节点。从节点向主节点发送同步数据请求,主节点接收到请求后执行bgsave,同时会记录执行bgsave期间写入的命令,最终将这两部分发送给从节点。数据副本,保证主节点宕机时可以迅速的切换的从节点,保证服务的高可用。slaveof ip port,成为某一个节点的从节点。必须是单向的,从主节点同步到从节点。

2023-03-06 16:48:14 350

原创 Redis系列4-持久化(RDB & AOF)

no-appendfsync-on-write yes,该参数的含义,是子进程在做AOF重写时,主进程仍然有新的写入命令时,是否两者都进行写入,通常使用yes也就是子进程在做AOF重写,主进程不在做fsync操作,防止两个进程都进行刷盘操作对竞争磁盘IO。在执行AOF操作时,如果no-appendfsync-on-write yes参数为yes,主线程可能发生追加阻塞,默认的策略是,追加AOF时会判断上一次fsync的时间,如果大于2秒就会阻塞主线程。默认的刷盘时间是1秒,可能会丢失1秒的数据。

2023-03-05 20:04:46 105

原创 Redis系列3-Redis慢查询、pipeline、bitmap、hyperloglog、geo

geodist key member1 member2 [unit],计算两个member间的距离,通过unit指定单位,m米,km千米,mi英里,ft尺。slowlog-log-slower-than=0时所有命令都记录到慢查询中,当需要知道某一个命令的真正执行时间是,可以使用,建议不要在生产环境使用。slowlog-log-slower-than,慢查询阀值,超过多少微妙后会加入到慢查询队列中,slowlog-max-len,存储慢查询的一个先进先出的队列长度,默认长度是128,

2023-03-04 21:48:09 101

原创 Redis系列2-Jedis客户端的使用

Jedis客户端端的基本使用,Jedis链接链接池的使用,链接池参数设置的建议

2023-03-04 19:06:50 181

原创 Redis系列1-数据结构与常用命令

Redis全称是Remote Dictionary Server,即远程字典服务,是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库并提供多种语言的API。主要数据结构字符串(String)哈希(Hash)列表(List)集合(Set)有序集合(Sorted Set)拓展数据结构位图(BitMaps)可以用与实现布隆过滤器。HyperLogLog(超小内存唯一值计数)GEO(地理信息定位,从redis3.2后开始提供)

2023-03-04 02:58:21 63

原创 缓存雪崩、击穿、穿透

综上所述,还可以在数据库前增加限流处理,以此来保证不会有大量的请求会同时到达数据库。

2023-03-03 16:43:54 51

原创 JVM调试工具合集

Metaspace 与class space属于堆外内存,reserved,表示向操作系统预定的内存,操作系统不一定会分配,可以reserved很多内存。committed,操作系统实际映射的物理内存。dump堆信息,live表示存活的对象,格式为二进制,文件名称为heap.bin,dump操作非常危险,线上系统慎用。java 启动参数配置的-Xmx -Xms向操作系统申请时需要真正的物理内存,需要committed状态的内存。可以可视化的去查看java虚拟机的整体情况,jconsole + pid。

2023-03-03 01:24:10 222

原创 Elastic Stack学习笔记7-生产环境部署建议

遵照官网文档的建议设置所有的系统参数参见文档,"Setup Elasticsearch -> Important System Configuration"。例如:关掉swap、增大文件描述符等。

2023-03-02 20:31:23 219

原创 Java基础面试问题总结

线程本地变量,为了解决多线程访问时的并发问题。应用场景:1、线程不安全的对象每一个线程一个副本,例:日期格式化SimpleDateFormat。2、同一链路上都需要使用或者传递的参数,例:用户登陆成功后的UserId可以存储到ThreaLocal种避免通过方法层层传递。Spring事物管理,将Connection存储到ThreadLocl中,避免层层传递对业务代码的侵入,同时也保证同一个事物中获取的Connection始终是同一个。volatile是一种同步机制,比synchronized与Lock更轻量级

2023-02-28 20:20:56 67

原创 Elastic Stack学习笔记6-Search 的运行机制

Query阶段Fetch阶段合并起来称为query-then-fetch。

2023-02-27 16:25:08 66

原创 Elastic Stack学习笔记5-分布式特性介绍

es支持集群模式,是一个分布式系统,其好处主要有两个:增大系统容量,如内存、硬盘,使得es集群可以支持PB级的数据。提高系统的可用性,即使部分节点停止服务,整个集群仍然可以正常服务。es集群由多个es实例组成不同集群通过集群名称进行区分,可以通过cluster.name进行修改,默认名称为elasticsearch。每个es实例本质上是一个JVM进程,且有自己的名字,通过node.name进行修改。

2023-02-26 22:31:08 65

原创 解决cerebro jdk9+启动不成功问题

从github上下载完最新的cerebro-0.9.4.tgz。在执行./cerebro启动成功。错误大概是没有权限导致的。启动./cerebro。

2023-02-26 19:12:32 1712 1

原创 ElasticSearsh 6.1.1安装

es6.1.1安装

2023-02-26 15:34:01 62

java JDBC入门

关于JDBC的初级入门文章,适用于java初学者

2010-12-07

空空如也

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

TA关注的人

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