自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TK_XIEBIN的博客

凡开发者必入坑

  • 博客(89)
  • 收藏
  • 关注

原创 匪夷所思,spring aop这么写竟然会失效!!

if (bean!Class<?if (!Class<?// 如果这里没有获取到 advisors ,那么advisorArray数组就是空的了// resolveInterceptorNames 方法非常关键= null) {= null) {else {= null?= null?i++) {

2023-11-03 15:41:54 195

原创 buffer overflow detected

JDK bug地址: https://mail.openjdk.org/pipermail/net-dev/2012-July/004603.html解决方案1:从bug描述来看JDK8已经进行了修复,可以升级java版本(建议使用)解决方案2:可以设置启动产生支持默认支持IPv6协议栈,-Djava.net.preferIPv6Stack=true。

2023-10-13 19:48:59 479

原创 K8S下如何搭建eureka集群

方案一易于理解,学习成本比较低,容易想到;操作比较繁琐,没有充分利用K8S的的特性。方案二需要对K8S的StatefulSet和Headless有一定的了解,操作简单,方便维护。推荐使用方案二。

2023-07-20 13:35:14 867

原创 K8S系列之污点和容忍度详细分析

节点污点和pod容忍度相互配合,如果想节点只能运行某个特定pod,就可以搭配污点和容忍度来使用。

2023-05-12 14:00:30 765

原创 K8S系列之NetworkPolicy

IP 地址或端口层面(OSI 第 3 层或第 4 层)控制网络流量, 则你可以考虑为集群中特定应用使用 Kubernetes 网络策略(NetworkPolicy)。NetworkPolicy 是一种以应用为中心的结构,允许你设置如何允许Pod与网络上的各类网络“实体” (我们这里使用实体以避免过度使用诸如“端点”和“服务”这类常用术语, 这些术语在 Kubernetes 中有特定含义)通信。NetworkPolicy 适用于一端或两端与 Pod 的连接,与其他连接无关。

2023-05-11 16:10:15 532

原创 K8S系列之探针

探针是一种用于探测、检测、测量或监测某些物理或化学性质的工具或设备,通常由一个或多个传感器和一个数据采集和处理单元组成。探针可以被用于各种应用,例如对生物体进行检测、监测环境污染、测试材料性能等。在计算机领域中,探针也可以指一种用于监测应用程序或系统性能的工具。

2023-03-31 16:06:25 244

原创 K8S系列之污点和容忍度

可以改变pod的调度策略,指定pod只能部署到指定的node节点上,污点和容忍度都是成对出现的;在一些需要指定使用某台node资源的时候可以使用这种方式,指定一组pod只能部署在有污点的node节点上。污点是给node添加一个污点,容忍度是作用于POD的,可以决定pod是否可以调度到该node上,如果pod容忍度不匹配就不能调度的pod上。effect表示了一些pod调度node上的一些行为。2. 给pod添加容忍度。

2023-03-29 17:36:01 519

原创 K8S系列之存储

在计算机中数据存储是非常重要的,无论是用户数据,商品数据等都需要持久化存储;存储数据的介质也有很多,比如:光盘,机器硬盘,固态硬盘等。

2023-03-28 11:26:41 513

原创 K8S系列之Service

这就要说起pod的特性,每个pod都是临时,当一个pod失败或者重启后就会生成一个新的pod来进行启动,会有新的IP,如果需要暴露给客户端(这里指的同一个ack集群中其它pod)进行调用,这个IP随时都会发生变化,这时就需要一个不会改变的服务名提供给客户端了,Service就是做这个用处的。service代表了一组pod向客户端提供服务,可以通过K8S的服务发现的机制来调用service,kube-proxy通过服务名映射成IP来进行调用。一种特殊的ClusterIP,不需要分配IP,通过服务名进行访问。

2023-03-23 22:29:15 376

原创 一文了解K8S

通过上述这些内容我们了解了应用部署的一个发展史,所有的这些技术都是为了更合理的利用机器的资源;K8S只是为了管理容器化后的应用(POD)所产生的一套技术规范,比如:POD需要部署在哪一个node节点上是如果被调度?pod中的镜像是如何启动的?POD的存储怎么解决?POD的网络如何处理?我们知道现在应用部署的发展史可以分成3个阶段,传统部署->虚拟化部署->容器化部署,那么这3个阶段都解决了什么样的问题,带来了哪些方面的提升呢?了解一个新的技术,必须要了解的它的历史,它为啥会出现?解决了什么样的问题?

2023-03-22 20:56:34 358

原创 OMM导致tomcat引用假死

tomcat

2023-03-20 10:46:02 502

原创 com.alibaba.druid.sql.parser.ParserException: TODO pos 2040, line 44, column 46, token RPAREN

com.alibaba.druid.sql.parser.ParserException: TODO pos 2040, line 44, column 46, token RPAREN

2023-02-15 17:39:17 1979

原创 standard_init_linux.go:228: exec user process caused: exec format error

通过上述问题的排查,基本可以确定时CPU架构问题,因为同事也是使用相同的脚本进行打包的,都可以进行正常的打包操作的。添加docker 镜像构建的指定平台,也可以指定其他平台。因工作需要使用docker打包镜像到阿里云容器中运行。环境:docker,mac m1。我打包的镜像,在运行时报如下错误。

2023-02-03 09:30:44 2988

原创 Spring cloud 之 consul

Spring cloud consul的简单使用

2023-02-01 13:27:50 163

原创 Redis IO模型

redis的网络IO模型还是比较简单,因为CPU和内存都不是它的瓶颈,redis的短板在网络IO上;使用单进程就可以处理正常的请求(除了持久化和同步外),为了提高redis的整体的性能又因为redis是单进程处理请求的,所以就需要使用多路复用技术来提供网络IO的处理性能。

2022-09-12 23:11:25 410

原创 IO多路复用--select,poll,epoll

从传统IO到多路复用是操作系统IO模型的变化,像JAVA提供的NIO不过是对操作系统提供多路复用进行封装而已,所以一个很重要的观念是操作系统提供什么,上层就只能使用什么。tip: 上面源码基于 redis-2.6,linux-2.6。

2022-09-07 23:06:01 315

原创 spring 总览

为了让Java开发简单,提高开发效率。

2022-08-27 09:29:44 148

原创 系统调用--mmap原理

mmap函数的功能:分配内存(malloc函数的其中一种机制)和映射文件到内存中。

2022-08-20 15:35:37 222

原创 Linux之VFS之美

VFS定义了统一的结构体,提供了统一的函数指针,不同的文件系统只需要提供具体的实现函数,然后挂载到相应的结构体中,类似java中的接口;在VFS的设计中c语言的函数指针和数据指针都体现了非常重要的作用。...

2022-08-13 12:40:33 247

原创 Linux 0.11 sys_write() 函数原理

本人想学习操作系统的知识,现在最流行的操作系统就是linux,所以这里选择研究linux-0.11版本,这里会结合赵炯博士的《linux-0.11深入解析》sys_write是系统调用函数,对磁盘中文件进行写操作。里面我们主要研究块设备操作。...

2022-07-29 17:43:59 1185

原创 rocket mq 的一些简单概念

producer是消息的发送者,发送消息给broker,有synchronous, asynchronous and one-way3种发送方式。produder组成的集群,就是一组producer group ,当事务消息发送半消息成功之后,服务挂了,broker会调用同一group的其他producer来进行状态会查。consumer是消息消费者,从broker中拉去消息进行消费,提供2种模式:多个同一性质的的consumer组成的集群,集群可以消息进行负载,多台机器消息同一topic的数据,把消息分布

2022-07-13 14:39:36 266

原创 switch 优化

switch 优化if-else源代码public class IfElseDemo { public static void main(String[] args) { int a=1; if(a==1){ System.out.println(1); }else if (a==2){ System.out.println(2); }else if(a==3) {

2022-05-22 22:47:56 407

原创 JAVA垃圾回收器你必知必会的知识

JVM GC 预览以下大部分知识来源于《深入理解JVM虚拟机-第3版》总览图3种分代假说弱分代假说:90%的对象都朝生夕灭的强分代假说:熬过多次垃圾回收的对象一般都是难以消亡的跨代引用假说: 跨代引用相对于同代引用来说是仅占少数的2种判断垃圾的策略引用计数法:无法解决循环引用的问题根可达算法:从GC Root查找对象是否可达(目前java都是用这种方式来判断对象是否存活的)哪些可以作为GC Root对象在虚拟机栈中引用的对象(本地局部变量表中对象),参数、局部变量、临时

2022-03-15 22:25:11 523

原创 springboot启动流程源码分析

@SpringBootApplicationpublic class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoApplication.class, args); }}SpringApplication类的静态run方法,primarySource 这个类很关键,后面进行BFPP进行操作的时候,需要对这个类型上面的注解进行

2022-03-09 15:38:35 176

原创 ScheduledThreadPoolExecutor 源码分析

ThreadPoolExecutor及相关的类,在上一篇文章已经分析过,这篇文章主要分析ScheduledExcecutorService接口和ScheduledThreadPoolExecutorScheduledExcecutorServicepublic interface ScheduledExecutorService extends ExecutorService { // 提交一个任务在延迟一段时间后执行 public ScheduledFuture<?&g.

2022-03-06 16:03:03 224

原创 springboot启动后监听操作

通过springboot启动源码可以得出,我们可以从下面3步开始listeners.started(context)callRunners(context, applicationArguments);listeners.running(context);public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start();

2022-03-01 17:22:00 1218

原创 ReentrantLock源码简单分析

ReentrantLock该类是可重入锁,跟synchronized 具有同样的作用,比它更具有扩展性,支持条件变量获取互斥锁的逻辑public void lock() { // 调用内部类的sync 的lock方法 sync.lock();}Sync内部类abstract static class Sync extends AbstractQueuedSynchronizer { abstract void lock(); // 非公平获取互斥锁

2022-01-14 20:01:12 96

原创 每天一个mysql的小知识点--Index condition pushdown(ICP)

背景mysql 5.6支持的ICP,ICP主要减少了存储引擎访问磁盘基表的次数和mysql服务层访问存储层的次数,ICP可以处理一些组合索引的一些失效的场景,如果没有ICP的话,就需要mysql存储引擎把符合条件的索引的全部数据取出来,然后再mysql服务层进行过滤,有点像 limit 100000,10 取出100010,过滤掉100000 一样的效果CREATE TABLE `shop_info` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREME

2021-09-17 23:47:41 112

原创 每天一个mysql 优化的小知识--MRR优化

Multi-Range-Read(MRR)官网文档:https://dev.mysql.com/doc/refman/8.0/en/mrr-optimization.html优化背景:MRR优化主要是需要减少随机访问磁盘的次数,对于使用辅助索引的 explain type range 的场景。下面orders 表我建了 order_status ,create_time 的联合索引正常执行显示执行下面脚本,开启MRR## 查询sql的优化参数select @@optimizer_sw

2021-09-16 20:30:33 278 2

原创 mysql的一些简单知识

为啥添加索引会使表数据新增变慢?需要多维护一棵tree 的索引文件,增加了IO次数。非聚族索引的新增的索引数据不是顺序的,增加了随机IO,但是有一些也是索引也是顺序的的,例如:下单时间等。在innodb 存储引擎中,在innodb 1.0.x 中是使用缓冲池中insert buffer 对非唯一性辅助索引的新增维护进行了优化,在缓存中会对多个新增索引的操作进行合并操作,新增的时候会判断索引位置的page 页是否在缓存池中,如果在直接添加,如果不在就先往innsert buffer中添加索引信息,让M

2021-09-03 18:14:00 85

原创 IDEA 工具集

部署工具Alibaba Cloud Toolkit: 是一款简单的部署工具,可以一键本地打包,上传,运行服务器脚本运行服务代码热部署工具JRebel: 支持代码热部署,方便调试,不需要改了代码就重新启动服务,非常适用于微服务中服务比较多的情况。代码规范检查工具Alibaba Java Coding Guidelines: 是一款代码规矩检查工具,会提示开发者遵守基本的代码规范,尽量遵守,特殊情况例外代码生成工具GenerateAllSetter: 可以直接生成代码实体的set,对于属性赋值非

2021-08-30 19:47:06 106

原创 一个查询让你从传统走向互联网

背景如何设计出符合互联网需求的分页查询,刚刚来到互联网公司菜鸟,一个查询竟然让我束手无策了。之前天天做传统业务的增删改查,只要实现功能就行,没有考虑过系统性能问题,我的老大让我不要用limit offset ,size 方式,我想了一下之前我都是用这种方式的,让我用ID进行查询,然后给我上了一课,此处省略若干字。。。。。。方案设计接口设计请求字段:id :默认值未0,如果查询下一页传最大的ID过来,如果查询上一页查询最小的type: 查询上一页给0,下一页给1,默认给1size:每页查询多少

2021-05-27 22:43:04 151 5

原创 spring 自定义配置文件标签

spring 标签默认标签:import,alias,bean,benas。自定义标签:除了默认标签其他的都是自定义标签。默认标签和自定义标签对应不同的解析逻辑protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { if (delegate.isDefaultNamespace(root)) { NodeList nl = root.getChildNode

2021-03-15 19:48:05 142

原创 java程序员有空可以阅读的书籍

计算机基础《编码:隐匿在计算机软硬件背后的语言》《深入理解计算机系统》C语言书籍《C程序设计语言》《C Primer Plus》数据结构和算法比较简单《Java数据结构与算法》《算法》比较难《算法导论》《计算机程序设计艺术》操作系统《Linux内核源码解析》《Linux内核设计与实现》《30天自制操作系统》网络《TCP/IP详解》编译原理《编译原理》《编程语言实现模式》数据库SQLite源码Derby - JDK自带数据库...

2020-08-09 23:06:36 122 1

原创 centos7 安装 docker

环境准备:Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。需要卸载旧的docker版本: sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine说明.

2020-07-02 17:43:22 103

原创 高性能专题

JDK多线程核心原理多线程原理基础java程序运行原理分析图片参考:https://www.processon.com/view/link/5e586f5fe4b069f82a16e8a0线程状态package com.xbin;public class ThreadTest { private static final Object object=new Object(); private static final Object object2=new Object();

2020-06-07 18:17:50 493

原创 redis 单机版安装教程

官网安装步骤:https://redis.io/download安装使用以下命令下载,提取和编译Redis:wget http://download.redis.io/releases/redis-6.0.3.tar.gztar xzf redis-6.0.3.tar.gzcd redis-6.0.3makemake编译时出现错误:cc: command not foun系统需要安装gcc环境yum install gccmake编译时再次持续错误:fatal e..

2020-05-28 22:40:21 170

原创 nginx安装

从官网中查看安装步骤:http://nginx.org/en/linux_packages.html#RHEL-CentOS安装依赖:sudo yum install yum-utils2.要设置yum存储库,请创建/etc/yum.repos.d/nginx.repo内容如下:[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgc.

2020-05-20 23:28:36 109

原创 rabbitmq专题--介绍

概念RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端。用于分布式系统中存储转发消息,在易用性,扩展性,高可用性等方面表现不俗。配置Rabbitmq 有一套默认的配置,能够满足日常开发需求,如果需要修改,需要自己创建一个配置文件。端口Rabbitmq会绑定一些端口,安装完后,需要将这些端口添加至防火墙。4369:是Erlang的端口/结点名称映射...

2020-05-05 15:05:56 187

原创 rabbitmq专题--入门安装和使用

安装环境个人阿里云服务器安装erlang在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本在 https://github.com/rabbitmq/erlang-rpm/releases 页面找到需要下载的erlang版本,erlang-*.centos.x86_64.rpm就是cen...

2020-05-05 14:34:47 233

空空如也

空空如也

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

TA关注的人

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