自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

happy_85的专栏

摸索中前行

  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 容器化Java程序秒级弹性伸缩实践

当前许多数字化转型企业都会将自己的系统微服务化、容器化,这些技术和策略可以帮助企业更有效地利用资源、提高开发运维效率,并且在处理不同流量场景下保证系统的稳定性和性能。

2024-04-18 14:47:21 331

原创 FullGC了怎么办?

即会每5秒一次显示进程号为56的java进成的GC情况,FGC、FGCT分别代表FullGC次数和时间,来初步判断是否为FullGC。如果手头没有这样的工具,可以试试通过下面指令简单看看。查找进程号为56的java程序的jvm堆中对象详细占用情况。查看进程号为56的Java程序的整个jvm内存状态。然后就可以在浏览器中输入主机地址:9998查看了。导出56进程的java程序的整个JVM信息。一个解决房方案是,在其中一台机子上开启。另一个就是dump出来文件。

2023-09-20 16:12:00 208

原创 几分钟搞定Java程序CPU飙升场景

一直向这个Java环境测试一下CPU或内存飙升时,实操一下问题定位。自己部署一个虚拟机+安装Linux环境+配置java环境,太费劲了。不如装一个docker desktop,直接下载所需镜像,及省劲有快捷。

2023-09-19 16:58:55 268

转载 微分享 - 系统所在的服务器CPU100%怎么办?(转发)

如果java服务有多个可以通过命令来找到对应服务的进程号(PID)这里案例都参照上面的步骤来,不再一一演示,只放结果·

2023-09-18 17:29:30 274

原创 说说分布式系统容器化

微服务实现了系统的解耦,使系统节点横向扩展变为了可能。但随之而来的是系统复杂度的提升,微服务+云可以有效降低运维和资源成本,已Docker和Kubernetes等云技术,进一步降低上云系统门槛,统一业界云技术标准,形成了多场景的云化应用和中间件,使云原生相关的技术得到了蓬勃发展。京东微服务平台架构解密-微服务 (uml.org.cn)《Docker容器与容器云》

2023-09-08 09:29:56 352

原创 浅谈高并发分布式架构演进路径

微服务的拆分原则是灵活的,取决于具体的业务需求、组织结构和技术栈。合理的微服务拆分可以使系统更易于管理、扩展和维护,但需要平衡各种因素以达到最佳效果。参考Redis数据一致性。

2023-09-08 09:27:05 174

原创 微分享 - 超实用开发日常排查问题Linux运维命令

超实用的linux常用运维命令

2023-08-25 15:15:48 769

原创 微分享-kubectl get常用命令

node代表节点pods代表pod-n命名空间-owide更详细信息具体pod名称 -oyaml查看对应pod的yaml文件信息显示标签-l+具体标签信息举个例子:查询一个label为k8s-app=kube-dns的pod,并显示出标签和其详细信息参考Kubernetes K8S之kubectl命令详解及常用示例。

2023-08-17 17:15:22 235

原创 拒绝内耗,想那么多干嘛,干就是了

适当放下工作中心结,多出去走走看看,多交往些朋友,多听多看多思考,追求内心的充实,让家人过得更好一些。心之何如,有似万丈迷津,遥亘千里,其中并无舟子可以渡人,除了自渡,他人爱莫能助。古诗文网《明朝那些事儿》湖畔大学彭蕾剖析阿里人才观:聪明、皮实、乐观、自省。

2023-07-11 16:17:35 98

原创 高并发大流量的Java系统策略揭秘,千万级QPS服务如何平滑启动

在应对高并发大流量情况下的Java系统平滑启动时,我们需要采取综合的策略。通过探活、懒加载、延迟注册和小流量预热,来实现Java系统在高负载情况下的稳定性启动。

2023-07-05 15:33:36 723

原创 了解Kubernetes三大门神之一Webhook

Admission Webhook 是提高 Kubernetes 集群安全性的关键组件之一。通过动态审查和修改请求,它可以强制执行安全策略、防止恶意操作,并满足定制化需求。部署 Admission Webhook 需要一些配置和验证步骤,但一旦成功完成,它将为您的 Kubernetes 集群带来更高的安全性和可靠性。

2023-07-05 15:11:32 862

原创 1分钟了解 Kubernetes王牌Operator

Operator是一种自定义控制器,基于Kubernetes API和自定义资源定义(CRD)来实现对特定应用或服务的自动化管理。它通过扩展Kubernetes控制平面,为特定应用或服务提供了自定义的管理逻辑和行为。Operator通过监视和响应自定义资源对象的状态变化,自动化地执行必要的操作,以确保应用或服务的正确部署、运行和维护。举个例子,运维人员需要部署一套Redis集群,需要正确部署、配置相关参数、启动运行、出现宕机需要重新拉取等工作。

2023-06-30 17:37:52 1074

原创 小知识点 yield、join、sleep和wait

yield()方法使用示例在下面的示例程序中,我随意的创建了名为生产者和消费者的两个线程。生产者设定为最小优先级,消费者设定为最高优先级。在Thread.yield()注释和非注释的情况下我将分别运行该程序。没有调用yield()方法时,虽然输出有时改变,但是通常消费者行先打印出来,然后事生产者。join()方法线程实例的方法join()方法可以使得一个线程在另一个线程结束后再执行。如果join()方法在一个线程实例上调用,当前运行着的线程将阻塞直到这个线程实例完成了执行slee..

2021-02-08 14:14:42 234

原创 第二阶段 筑基期(4-6 周,每周 8-10 小时) -2

Controller Manager 控制器Controller Manager。Kubernetes 控制器是其架构中最为核心的一环,我们需要了解控制器的原理,List-Watch 的基本原理,知道 Kubernetes 默认情况下大致包含哪些类型的控制器。通过Controller Manager的Share Informer,Kubernetes实现了组件间通过Http协议进行通信,在不依赖任何中间件的情况下,实现消息的实时性、可靠性和书序性。list-watch 模式是解耦系统中各个组件间的数

2021-02-01 14:35:27 1130

原创 第二阶段 筑基期(4-6 周,每周 8-10 小时)- 1

目标Kubernetes 的基本架构Kubernetes 容器调度的基本流程接下来,推荐从 0 开始部署一个 Kubernetes 集群(不使用任何工具),来加深对各个组件的理解:解决部署中出现的各种问题,查看组件启动日志等等。如果时间有限,也可以尝试使用 kubeadm 等工具来部署集群。目前 Kubernetes 集群部署自动化已经做得比较完善,但出于学习目的,再次墙裂推荐手动安装。关于手动安装集群,可以参考文档 lab3-manual-installtion。在本阶段修炼结束后,我们至少

2021-01-25 09:36:19 1287

原创 Kubernetes学习笔记 第一阶段 炼气期(2-4 周,每周 3-5 小时)

基础知识参考本文由 才云科技(Caicloud) 于 2019 年内部推出,现以开源的形式进行维护,网址在https://github.com/caicloud/kube-ladder在安装好环境之后,可以开始动手实践最基本的 Kubernetes 概念。在第一阶段,我们推荐熟练使用以下常用资源和概念:Pod、Node、Label、Event、Service、Configmap & Secret、Deployment、Namespace。相关学习可以参考文档 lab2-application-

2021-01-18 09:49:59 228

原创 容器的基本概念

容器的基本概念容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。Pod的实现机制因为容器之间原本是被 Linux Namespace 和 cgroups 隔开的,所以现在实际要解决的是怎么去打破这个隔离,然后共享某些事情和某些信息。这就是 Pod 的设计要解决的核心问题所在。所以说具体的解法分为两个部分:网络和存储。详解容器设计模式主要目的就是解耦和复用。通过对Pod中定义专门的容器,来执行主业务逻辑的辅助工作,如SideCar。控制器模式控制循环:外界通过修改资源 spec

2021-01-11 10:47:11 357

原创 阿里云原生技术公开课-学习笔记1

Kubernetes架构Kubernetes 的 Master 包含四个主要的组件:API Server、Controller、Scheduler 以及 etcd。API Server:顾名思义是用来处理 API 操作的,Kubernetes 中所有的组件都会和 API Server 进行连接,组件与组件之间一般不进行独立的连接,都依赖于 API Server 进行消息的传送;Controller:是控制器,它用来完成对集群状态的一些管理。比如刚刚我们提到的两个例子之中,第一个自动对容器进行修复、

2021-01-04 11:23:20 385 1

原创 Deployment的YAML语句解释

apiVersion: apps/v1kind: Deploymentmetadata: // 元数据 name: details-v1 // Pod名称 labels: // 自定义标签属性列表 app: details version: v1spec: // 详细描述 replicas: 1 // 实例数 selector: matchLabels: app: details //匹配的名称

2020-12-28 11:23:13 232

原创 K8S中Service属性解释

Service的YAML文件简单解释apiVersion: v1kind: Service // 类型metadata: // 元数据 name: details // Service的名称 labels: // 自定义标签属性列表 app: details service: detailsspec: // 详细描述 ports: // Service需要暴露的端口列表 - port: 9080 // 服务监听端口号

2020-12-20 18:01:04 487

原创 从Java到Go语言学习笔记 - Golang中有趣的嵌入类型

_嵌入类型_就是一个类型在另一个类型里面。下来看看Java是怎么实现的。public class User { String name; String email; public User(String name, String email){ this.name = name; this.email = email; }}先定义一个User类,参数是name和email,在定义一个Admin类,将User嵌入到Admin中。pu

2020-12-08 10:25:17 213

原创 从Java到Go语言学习笔记 - Golang中有趣的接口实现

先来看看Java接口实现,先定义一个User类,用于传递对象值。public class User { String name; String email; public User(String name, String email){ this.name = name; this.email = email; }}再定义一个接口public interface Notifier { public void notifyF

2020-12-02 15:24:59 297

原创 从Java到Go语言学习笔记 - Golang中有趣的方法实现

编写一个方法,打印出用户的名字和Email信息,先来看看Java是怎么实现_方法_的编写的。public class User { String name; String email; public User(String name, String email){ this.name = name; this.email = email; } // 打印姓名和Email地址 public void notifyEmail

2020-11-27 15:33:05 144

原创 浅谈Arthas(阿尔萨斯)使用-1

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时运行状态.

2020-11-23 10:59:46 279

原创 常用Linux指令

常用Linux指令文本处理工具(tail、vim、less)tailtail命令用于输入文件中的尾部内容,常用在查看线上正在增长的日志,主要使用:# -n<行数> 显示文件的尾部 n 行内容$ tail -n N filename.txt# -f 循环读取$ tail -f log-filevim命令模式下常用命令:移动光标作用vim命令linux命令行向上/向下翻页ctrl+f/b行尾/行首$/0Ctrl-e/Ctrl-a下一个

2020-11-16 09:34:21 340

原创 Java中锁的思考

Synchronized 重入锁 各种锁 是什么 优缺点 使用什么场景 常用方法 如何减少使用锁同步功能CountDownLatchURL:http://www.cnblogs.com/skywang12345/p/3533887.html是什么?CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行原理:CountDownL...

2020-09-28 09:38:16 99

原创 负载均衡策略&&全局ID生成&&一致性hash

轮询 最少连接 IP地址哈希 基于权重的负责均衡,平均权重*一个随机值(0~1之间的小数)与调用接口权重作比较。 UUID ID生成表模式 Snowflake 结合缓存方案,采用ID生成表方式批量获取ID,如1000个放到本地缓存中 优:性能好;缺:不连贯 一致性Hash...

2020-08-31 10:25:02 628

原创 GO map 学习

初始化```go//JavaMap<String , Integer> map = new HashMap();// gom = make(map[string] int)colors := map[string]string{}```语法差距还是蛮大的。删除```godelete(m, "abc")```判断```goif val, ok := m["1234"]; ok { fmt.Println(val)}```...

2020-08-17 20:04:00 104

原创 并发学习笔记 - 原子操作的实现原理

原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。术语 英文 解释 缓存行 Cache line 缓存的最小操作单位 比较并交换 Compare and Swap CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较下旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。 CPU流水线 CPU pipe..

2020-08-10 10:15:19 304

原创 ThreadLocal 套路

ThreadLocal是什么? 原理是什么? 使用场景? 为什么ThreadLocalMap中的Entity是extend弱引用 设计ThreadLocal的目的 在同一个线程中方法与方法,类与类之间共享内容传输 缺点:因为是以空间换时间,会占用一定内存,所有在使用完成后需要及时删除。 原理 java代码中使用线程是Thread类; Thread中都有一个ThreadLocal.ThreadLocalMap thre...

2020-08-03 09:21:34 137

原创 LRU缓存介绍与实现

如何实现一个LRU呢?如果使用双向链表+Hash实现。首先需求清楚: 什么是LRU; 需要哪些支持知识; 怎么使用这些基础知识实现; 如果高并发下怎么办; 反思一些基础知识。 什么是LRU:就是最近最少访问。需要哪些支持知识:想想一个场景,LRU是不是就想电话记录或者微信记录,新的自动到上面,老的就慢慢下去了。那是不是就想起了Linked。为什么没有使用linkedList呢?而是使用linkedMapHash。...

2020-07-27 09:22:34 265

原创 使用Modules搭建项目-go.mod

我第一次接触Go语言的时候使用goland搭建项目遇到引用第三方包或者本地引用的时候总是报错,而不知道为什么?使用GoPath有很多限制,不如需要制定GOPATH路径还需要src之类的。而go.mod又不知道怎么使用,在网上找了好多而不知所以然。实战配置首先在Golang的官网:https://golang.google.cn/点击下载选在合适的版本,我的是电脑是mac,所以选在第二个。下载后直接双击,一直下一步即可。验证安装是否完成:输入...

2020-07-18 15:19:05 583

原创 Golang基础知识学习-切片(与Java的对比)

Golang里面的切片,很像Java中的ArrayList,可以实现数组的动态扩缩容。创建// Java的ArrayList定义List<String> list = new ArrayList<String>();// Java数组定义String[] arrayRefVar = new String[5];// goslice := make([]string, 5)Java中是通过new创建一个ArrayList,Go中是通过make来创建,这边就是语法上的

2020-07-13 09:01:31 1239 2

原创 Golang基础知识学习

文章目录变量创建切片字典初始化判断key是否存在对字典进行循环指针如何使用指针if-elsefor 循环变量创建var <name> <type>var name string = "Python编程时光" // 1var ( name string age int gender string)// 2name := "Python编程时光" //3name, age := "wangbm", 28 // 4变量分为两种 普通变量 和 指

2020-07-05 20:54:24 387

原创 falcon常用参数解析

CPU.xxxcpu.idlecpu.idle表示除硬盘IO等待时间以外其它等待时间,这个值越大,表示cpu越空闲,还可以执行更多的任务,反之亦然,此处我们falcon展示的是idle的波动情况, cpu.busy与cpu.idle相对,他的值等于100减去cpu.idle。cpu.stealcpu.steal表示被同一宿主机上的其他vm所占用的超出指定cpu

2018-05-25 15:46:05 5761

原创 微分享-高并发下的缓存实战

场景统计一个批量接口会有多少数据,这个接口的QPS在100万级别。有几种方案:每次调用都串行计算一次;每次调用使用线程池并行计算。由于并发量特别的大,第1种场景肯定不适合,这会把相应时间拉长。第二种方法每次请求过来都放到一个线程池里面请求,比第一种强很多,用这种方式基本上可以解决80%左右的需求了。那么还有能优化的地方么?答案是有的。Cache + 线程池一般在大的公司都有一些监控系统,可以将

2017-08-27 19:33:43 562

原创 微分享-工作中常用到的java enum实现形式

平时学习很少接触enum,很多时候会使用常量代替。在工作时可能会或多或少用到enum方法,下面是几个工作中常用的方法,基本上能满足绝大多数使用场景。

2017-08-26 21:25:50 377

原创 微分享-快速高效的从一个list转化到另一个list

Lists.transform是Guava collect的里面的方法,提供将当前list中的对象转换为另外一个需要的list对象。

2017-08-20 18:58:51 7397

原创 微分享-spring线程池实战

一般在使用多线程的时候都会使用到线程池,好处网上有很多,最主要的好处是线程池中的线程可以重复利用,减少线程创建销毁带来的资源浪费。java实现线程池一般有三种:java自带的线程池Executor;Spring封装的线程池;Guava提供的线程池。如果使用java自带的线程池编写起来比较麻烦,找了个网络的例子:import java.util.concurrent.ArrayBlocking

2017-08-19 17:52:32 695

原创 不惑JAVA之JAVA基础 - Concurrent 概述

本来想写ConcurrentHashMap的,但是感觉单写这一个知识点有点烂大街。java.util.concurrent包除了ConcurrentHashMap还是有很多好东西的,下面将会对一些重点知识点进行讲述。由于本人能力有限如有解释不到位的地方请各位大神们指出。本博文参考和引用了大量优秀博文,感谢这些优秀的博主。java.util.concurrent 包含许多线程安全、测试良好、高性能的并

2016-05-18 18:13:33 4853 1

PMP入门分享

关于PMP的一些基础知识点,领导大家进行学习的入门。

2012-12-20

空空如也

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

TA关注的人

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