自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 使用rust编写APISIX网关的wasm插件

可直接参考官网(https://www.rust-lang.org/zh-CN/tools/install)。将编译好的 .wasm 文件打入APISIX的镜像中, 选择固定目录,然后在APISIX 中的config.yml 中把.wasm文件全路径及插件相关信息进行配置即可。因为wasm插件基本都是通用的,所以在本地直接采用envoy进行功能测试验证。然后添加对应插件的dashboard 的 schema.json 文件,便可在dashboard 进行页面化配置。5.在APISIX中使用。

2024-05-17 16:16:22 362

原创 APISIX3.8.0在M1 mbp上的源码安装

luasec 是一个 Lua 模块,为 Lua 提供了 SSL/TLS 支持,依赖于 OpenSSL 库。这个错误是一个 Git 克隆过程中的网络错误,通常与使用 HTTP/2 通信时出现的问题有关。在参考官方文档源码安装后(https://apisix.apache.org/zh/docs/apisix/building-apisix/),依然遇到了一些问题,故做一些总结记录下。(参考https://github.com/apache/apisix/issues/10684)然后再次尝试 Git 操作。

2024-05-15 17:47:03 670

原创 ElasticSearch 客户端API

ElasticSearch提供有多种语言的客户端API操作和访问文档,支持Java,JavaScrpit,Perl,Ruby等。不过其本质上都是REST接口,通过HTTP协议进行文档数据的操作。同时ElasticSearch还内置Painless脚本语言,可在API中直接使用。1.REST接口ElasticSearch提供的所有接口都以下划线“_”开头,在ElasticSearch中,可以使用四种HTTP方法请求索引(GET,PUT,DELETE,HEAD)。PUT 用于创...

2021-01-30 17:06:02 261

原创 ElasticSearch基本概念学习

Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据,与传统关系型数据库完全不同;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。什么是全文检索?计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。.

2021-01-23 16:47:07 139

原创 Mysql数据库相关

指定端口号登录MySQL数据库将命令:mysql -u root -p 改为mysql -u root -p -P 3306 即可,注意指定端口的字母P为大写, --socket=/tmp/mysqlxxx.sock 指定sock文件而标识密码的p为小写。MySQL默认端口号为3306。常用mysql相关命令1:show databases;查看所有的数据库,等同于select schema_name from information_schema.schemata\G。\G 替...

2021-01-16 22:58:03 97

原创 Go语言学习

Go语言基础之环境安装及变量运行:go run xxx.go(main函数)打包:go build 用于测试编译包,在项目目录下生成可执行文件(有main包)go install:主要用来生成库和工具。一是编译包文件(无main包),将编译后的包文件放到 pkg 目录下($GOPATH/pkg)。二是编译生成可执行文件(有main包),将可执行文件放到 bin 目录($GOPATH/bin)跨平台编译(交叉编译):windows编译linux系统二进制 打开Terminal 执行命令:

2021-01-09 21:40:16 278

原创 Hystrix中的Metrics

Metrics在统计各种状态时,运用滑动窗口思想进行统计的,在一个滑动窗口时间中又划分了若干个Bucket(滑动窗口时间与Bucket成整数倍关系),滑动窗口的移动是以Bucket为单位进行滑动的。如:HealthCounts 记录的是一个Buckets的监控状态,Buckets为一个滑动窗口的一小部分,如果一个滑动窗口时间为 t ,Bucket数量为 n,那么每t/n秒将新建一个HealthCounts对象。度量统计配置会对HystrixCommand或者HystrixObservableComm

2021-01-02 22:23:51 580

原创 java并发-CAS的原理

总线锁: 所谓总线锁就是使用处理器提供的一个LOCK#信号,当一个处理器在总线上输出此信号时,其他处理器的请求将被阻塞住,那么该处理器可以独占使用共享内存缓存锁:“缓存锁定”就是如果缓存在处理器缓存行中内存区域在LOCK操作期间被锁定,当它执行锁操作回写内存时,处理器不在总线上声明LOCK#信号,而是修改内部的内存地址,并通过它的缓存一致性机制来保证操作的原子性,因为缓存一致性机制会阻止同时修改被两个以上处理器缓存的内存区域数据,当其他处理器回写已被锁定的缓存行的数据时会起缓存行无效。...

2020-12-26 11:59:18 82

原创 Java并发-unsafe

介绍在sun.misc包下,不属于java标准解释:Unsafe类根据名字则可以判断出是一个不安全的类,因为他可以对内存进行申请/释放/访问,支持底层硬件的atomic/volatile,可以创建未初始化对象等,存在很大的风险。原本的设计只应该在标准库中使用,所以不建议在生产环境中使用。设计:1.Unsafe被设计成单例模式,构造方法私有。 2.Unsafe被设计成只能从引导类加载器(bootstarp class loader)加载,如果不是从启动类加载器直接调用g...

2020-12-19 21:16:47 608 2

原创 Java并发-ConcurrentHashMap(1.8)

java 1.8抛弃了原有的 Segment 分段锁,而采用了CAS + synchronized来保证并发安全性,也将 1.7 中存放数据的 HashEntry 改为 Node,但作用都是相同的。数据结构如下:1.8put方法整体流程1.首先利用 spread 方法对 key 的 hashcode 进行一次 hash 计算,由此来确定这个值在 table 中的位置;2.如果当前 table 数组还未初始化,先将 table 数组进行初始化操作;如果这个位置是 null 的,那么使用 C..

2020-12-12 17:42:34 225

原创 Java并发-ConcurrentHashMap(1.7)

数据结构:由 Segment 数组、HashEntry 组成,和 HashMap 一样,仍然是数组加链表,和 HashMap 非常类似,唯一的区别就是其中的核心数据如 value ,以及链表都是 volatile 修饰的,保证了获取时的可见性。原理上来说:ConcurrentHashMap 采用了分段锁技术,其中 Segment 继承于 ReentrantLock。不会像 HashTable 那样不管是 put 还是 get 操作都需要做同步处理,理论上 ConcurrentHashMap 支持 C

2020-12-05 14:46:10 179 1

原创 java并发-cas

一、有无锁并发在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发展事态如果不及时控制,以后就无法挽回了,即使无法挽回的局面几乎不可能发生。这两种派系映射到并发编程中就如同加锁与无锁的策略,即加锁是一种悲观策略在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会

2020-11-29 09:37:40 193 1

原创 java垃圾收集器(G1)

使用参数配置:-Xmx200M -Xmn50m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseG1GCG1将Java堆划分为多个大小相等的独立区域(Region),JVM最多可以有2048个Region**。**一般Region大小等于堆大小除以2048,比如堆大小为4096M,则Region大小为2M,当然也可以用参数"-XX:G1HeapRegionSize"手动指定Region大小,但是推荐默认的计算方式。G1保留了年轻代和老年代的概

2020-11-22 14:37:58 175

原创 数据库相关

1.MYSQL导出长数字到Excel避免转为科学计数法方法总结:如果只需要导出展示、打印:可使用CONCAT("\t",str)如果需要后续处理,引用,最好使用CONCAT("'",str)或者CONCAT("\'",str),并导出为EXCEL文件。2.mysql实现序列startdrop table if exists mmd_sequence;create table mmd_sequence (seq_name VARCHAR(50) NOT NULL, -- 序列名称

2020-11-15 11:32:55 71

原创 java问题排查二

在java应用开发过程中,jvm相关的问题总是无法绕过,同时又是比较棘手难以解决的,但是作为一个java开发工程师来说,还是需要具备一定的问题分析解决能力。在jdk中,已经有了不少可以使用的工具,方便我们排查问题。查看线程:jstack -l pid-l 输出锁的附加信息jstack pid >> jstack.log 导出成文件多次采集观察线程状态死锁,Deadlock(重点关注)等待资源,Waiting on condition(重点关注)• 等待获取监...

2020-11-07 17:02:12 153

原创 java问题排查

arthas诊断工具使用相关:https://blog.csdn.net/u013735734/article/details/102930307使用dashboard命令可以概览程序的 线程、内存、GC、运行环境信息thread -n [显示的线程个数],就可以排列出 CPU 使用率Top N的线程使用thread | grep pool命令查看线程池里线程信息thread -b命令查看直接定位到死锁信息arthas诊断工具:问题异常:com.sun.t...

2020-10-30 15:12:08 246

原创 API网关

API网关API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,流量控制,请求路由等等。请求路由在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。统一鉴权对于鉴权操作不涉及到业务逻辑,那么可以在网关层进行处理,不用下层到业务逻辑。统一监控由于网关是外部服务的入口,所以我们可以在这里监控我们想要的数据,比如链路时间,接口调用量。流量控制,熔断降级对于流量控制,熔断降级非业务逻辑可以.

2020-10-25 16:53:15 117 1

原创 kubernetes学习三

service:pod 重启后ip地址会发生变化,service通过Label Selector跟提供服务的pod绑定,其它对象就可以使用Label Selector来选择还有指定Label的对象。Label以key/value键值对的形式附加到各种对象上,如Pod、Node等,Label定义了这些对象的可识别属性,用来对它们进行管理和选择。Service的工作方式有三种:1.Userspace方式2.iptables模型3.ipvs模型以上不论哪种,kube-proxy都通过w

2020-10-18 20:03:54 88

原创 kubernetes学习二

Volume:k8s的存储因为pod容器的生命周期可能很短,会被频繁地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。Volume 的生命周期独立于容器,Pod 中的容器可能被销毁和重建,但 Volume 会被保留。常用的2种类型:EmptyDir:一个EmptyDir Volume是在Pod分配到Node时创建的。从它的名称就可以看出,它的初始内容为空。在同一个Pod中所有容器可以读和写EmptyDir中的相同文件。当Pod从Node上移除时,EmptyDir中的数据

2020-10-11 16:27:08 77

原创 kubernetes学习

1.介绍什么是kubernetes:Google主导的分布式容器调度和业务编排。容器编排,通常包括容器管理、调度、集群定义和服务发现等,实现了单机到集群的容器管理。来源于 Google 内部系统 Borg(博格)希腊语:舵手价值别称: 网络操作系统容器编排系统Open-source software for automating deployment, scaling, and management of containerized applicationsKuberne

2020-09-27 22:10:08 72

原创 linux内存问题

free -m相关释义:第一行用全局角度描述系统使用的内存状况:total 内存总数used 已经使用的内存数,一般情况这个值会比较大,因为这个值包括了cache 应用程序使用的内存free 空闲的内存数shared 多个进程共享的内存总额buffers 缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)cached 缓存,用于已打开的文件如日志文件过大造成cached区内存增大把内存占用完)第二行描述应用程序的内存使用:-buffers/cache 的

2020-09-20 10:54:30 156

原创 nginx相关

nginx命令:start nginx : 启动nginx其他命令:nginx -s stop 快速退出 nginx -s quit 优雅退出 nginx -s reload 更换配置,启动新的工作进程,优雅的关闭以往的工作进程 nginx -s reopen 重新打开日志文件nginx配置:... #全局块events { #events块...}http #http块{... #http全局块server #server块{... #serve

2020-09-13 18:32:14 76

原创 常用命令总结

查看指定端口被哪个进程占用的情况1、lsof -i:端口号2、netstat -tunlp|grep 端口号文件清空1.彻底置空,也就是ls文件的大小为0,文件里面什么都没有 (1): > filename (2)true > filename (3)cat /dev/null > filename (4)> filename2.置空文件,但是文件中有空行,ls文件的大小,显示还有大小 (1)echo ""...

2020-09-06 18:24:24 322

原创 synchornized相关

Monitor对象:所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的可能。在Java虚拟机(HotSpot)中,monitor是由ObjectMonitor实现的,其主要数据结构如下(位于HotSpot虚拟机源码ObjectMonitor.hpp文件,C++实现的)对象头:可以使用jol(java 对象布局)辅助查看pom文件中添加依赖:<dependency><groupId>org.openjdk.jol</g

2020-08-30 19:54:01 127

原创 并发相关

并发及锁并发是同一时间应对(dealing with)多件事情的能力;并行是同一时间动手做(doing)多件事情的能力。从应用程序软件的角度来看,线程安全问题的产生是由于多线程应用中缺少线程同步机制(多线程并发)。线程同步机制是一套用于协调线程间的数据访问及活动的机制,该机制用于保证线程安全以及实现这些线程的共同目标。如果把线程比作在公路上行驶的车辆,则线程同步机制就好比是任何车辆都要遵循的交通规则。Java中提供的线程同步机制包括锁,volatile关键字,final关键字,static关键字以及一些

2020-08-23 18:41:34 198

原创 spring Bean作用域

“singleton”Bean作用域:Spring 以容器的方式,使得我们仅需配置,即可得到天然的单例模式。一般情况下,无状态或者状态不可变的类适合使用单例模式来实现, 不过 Spring 利用 AOP 和 LocalThread 的能力,对非线程安全的变量(状态)进行了特殊处理,使的一些非线程安全的类(持有 Connection 的 DAO 类)变成了线程安全的类 。Singleton是单例类型,就是在创建起容器时就同时自动创建了一个bean的对象,不管你是否使用,他都存在了,每次获取到的对象

2020-08-16 17:15:07 148

原创 Spring Bean注入

setter方法注入a类中持有b类的引用,并且a类有b的set方法。在bean中添加<property>标签即可注入。实质上是将b实例化,然后调用set方法注入。实现方式手动模式:xml资源配置元信息java注解配置元信息API配置元信息自动模式:byName根据属性名自动装配。BeanFactory查找容器中的全部Bean,找出其中id属性与属性同名的Bean来完成注入。如果没有找到匹配的Bean实例,则Spring不会进行任何注入。byType根.

2020-08-09 16:52:34 131

原创 Spring Bean相关

1.定义Spring Bean基于XML的配置基于注解的配置基于Java类的配置支持五种作用域,分别阐述如下表类别 说明 singleton 在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在,默认值 prototype 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean() request 每次HTTP请求都会创建一个新的Bean,该该作用域仅适用于WebAppli

2020-08-02 16:24:42 120

原创 Spring IoC相关

spring ioc反转控制什么叫做轻量级容器?可以管理容器,不需要特殊的配置来进行操作,最大程度的代码复用,轻量级的内存占用以及最小化的API的依赖,容器需要有管理的渠道。1.依赖查找pom文件中的<relativePath>../pom.xml</relativePath>解决pom依赖的继承的问题根据bean名称查找实时查找通过BeanFactory.getBean("xxx")延迟查找使用org.springframework.bean

2020-07-26 13:43:53 133

原创 Spring 事务相关

事务隔离级别隔离级别是指若干个并发的事务之间的隔离程度,与我们开发时候主要相关的场景包括:脏读取、重复读、幻读。我们可以看org.springframework.transaction.annotation.Isolation枚举类中定义了五个表示隔离级别的值:public enum Isolation { DEFAULT(-1), READ_UNCOMMITTED(1), READ_COMMITTED(2), REPEATABLE_READ(4), SERIALIZABLE(8); }..

2020-07-13 13:16:58 150

原创 spring学习第一周

Spring 框架是一个开源的 Java 平台,最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。它的到来确实可以说是java程序员的“春天”。目前Spring 是最受欢迎的企业级 Java 应用程序开发框架,使用 Spring 框架可以创建性能好、易于测试、可重用的代码。课程体系:IoC容器----管理--->Bean(生命周期,作用域)核心容器核心容器由spring-core,spring-beans,spri.

2020-07-06 15:03:25 318

空空如也

空空如也

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

TA关注的人

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