- 博客(50)
- 收藏
- 关注
原创 【云原生系列文章】理解 Pod 和容器设计模式
本文的分享主要围绕以下三个部分:为什么需要 Pod; Pod 的实现机制; 详解容器设计模式。一、为什么需要 Pod容器的基本概念现在来看第一个问题:为什么需要 Pod?我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单位,但是为什么我们会需要这样一个概念呢?我们在使用容器 Docker 的时候,也没有这个说法。其实如果要理解 Pod,我们首先要理解容器,所以首先来回顾一下容器的概念:容器的本质实际上是一个进程,是一个视图被隔离,资源受
2022-01-28 16:28:30
319
原创 【云原生系列文章】Kubernetes 核心概念
本文的分享主要围绕以下 3 个部分:什么是 Kubernetes :介绍 Kubernetes 的主要功能以及能力; Kubernetes 的架构:介绍Kubernetes 的核心组件,以及介绍它们之间是如何相互互动连接; Kubernetes 的核心概念与核心 API;一、什么是KubernetesKubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词..
2022-01-27 20:42:57
219
原创 【云原生系列文章】容器基本概念
本节课程要点什么是容器与镜像?如何构建容器与镜像容器的生命周期容器项目的架构容器 VS.VM一、容器与镜像什么是容器?在介绍容器的具体概念之前,先简单回顾一下操作系统是如何管理进程的。首先,当我们登录到操作系统之后,可以通过 ps 等操作看到各式各样的进程,这些进程包括系统自带的服务和用户的应用进程。那么,这些进程都有什么样的特点?第一,这些进程可以相互看到、相互通信;第二,它们使用的是同一个文件系统,可以对同一个文件进行读写操作;第三,这些进程会使用相同的系统资源。这样的三个特
2022-01-27 14:35:31
230
原创 【云原生系列文章】为什么要学习云原生技术
云原生技术发展简史首先从第一个问题进行分享,那就是“为什么要开设云原生技术公开课?”云原生、CNCF 都是目前非常热门的关键词,但是这些技术并不是非常新鲜的内容。2004 年— 2007 年,Google 已在内部大规模地使用像 Cgroups 这样的容器技术;2008 年,Google 将 Cgroups 合并进入了 Linux 内核主干;2013 年,Docker 项目正式发布。2014 年,Kubernetes 项目也正式发布。这样的原因也非常容易理解,因为有了容器和 Docker 之后,
2022-01-27 11:43:48
489
原创 Skywalking之agent与oap的GRPC通信
介绍我们希望客户端能够主动与oap端通信拿到服务端的配置数据然后执行对应的客户端的业务逻辑。那么本文挑选的Profile的case恰好是符合这样的要求的。下面不妨展开研究一下实现介绍撰写grpc契约Profile.proto文件中,代码如下:(主要看一下getProfileTaskCommands接口)/* * 篇幅限制,license声明的注释略去 */syntax = "proto3";option java_multiple_files = true;option java_p
2021-09-07 19:59:50
1254
原创 Skywalking OAP定制开发全入门
Skywalking与前端交互扩展开发(一文全掌握)对于想要扩展Skywalking OAP端的小伙伴们估计很容易发现一个问题,就是网上的资料很少,而且讲的都太浅显了。鄙人不才,作为一个研究了蛮久Skywalking的混子,打算写一篇oap实战的文章,并以此作为切入点来聊聊如果扩展和踩坑血泪史。研发需求:统计使用skywalking页面的pv(如果有说可以安装前端监控agent就能解决问题的杠精,请出门右转????)绘制的pv需求草图如下:需求拆解:编写graphqls文件的接口编写前端代
2021-09-06 21:36:09
1398
原创 Skywalking为数据库添加多维度数据
前提声明:版本:8.3版本 基于elasticsearch6.x存储需求:希望仪表盘数据中的database中的慢sql能够根据服务名,接口名和实例来检索出慢sql数据,大致如下图所示。那么其实是要求我们做两件事:1、扩充数据源并存储进es中2、查询接口改造成带搜索条件的1、扩充数据源并存储进es中DatabaseSlowStatement实体添加额外字段package org.apache.skywalking.oap.server.core.source;.
2021-06-29 15:57:59
1282
原创 Java链表的常用技巧和算法总结
参考文献:https://www.sohu.com/a/295725366_100281310链表的操作总结链表反转这是一个简单的链表操作问题,在leetcode上面有52.7%的通过率,难度是简单。但是还是想在这里基于java做一下总结,顺便总结一下链表的各种操作。首先先看一下leetcode上面的题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL
2021-06-28 00:14:26
481
1
原创 Skywalking自定义增强插件开发(顺便贡献了对源码的BUG修复)
前言其实Skywalking已经有了这个自定义增强插件了,但是本人一开始没发现有着玩意,线上应用的特殊的非标节点和链路没识别出来,所以就亲自操刀写了一个宇宙无敌的自定义增强插件了(customize-enhance-plugin)。当然代码优雅度上应该是官方的占优,但是我因为了解业务场景的痛点,所以也有一定的可取之处吧。好了,废话不多说,上代码!配置先行新建general-1.0-plugin模块在resources文件夹下新建skywalking-plugin.def文件,内容如下:furio
2021-01-29 17:30:50
2596
原创 Skywalking源码分析【agent探针篇】
Skywalking agent源码分析字节码技术入口方法1、核心配置加载方式:2、插件初始化:3、插件(中间件or框架)的增强增强点的寻找:4、服务启动5、插件体系5.1、拦截实例方法:5.2、拦截构造方法:5.3、拦截静态方法5.4、对于实例方法和静态方法拦截点接口里的三个方法:6、witnessClass机制7、BootService 之 GRPCChanelManager9、ServiceAndEndPointRegisterClient10、trace数据采集AbstractMethodInter
2021-01-26 12:43:00
2935
2
原创 告别恼人的NPE,日志分片,畅快的将日志信息埋入ES的设计方案
关于CAT和ES的相关知识本文不做具体展开,各位自行去查阅资料了解吧。1、问题场景待埋点的信息为一个复杂对象中的比较深层次的字段,不希望做太多的非空判断 处理的主流程为一条日志,主流程中会多次调用第三方服务,需要将调用信息埋点生成子的日志,并进行主流程日志和子的调用日志的串联。 日志埋点通过cat写入es。 支持同步or异步的埋点。 建立一套规范的错误码的体系,并能够自动防重(多人协同开发时候防止另一个人也建立了一个相同的错误码),并且能够自动生成错误码的映射关系提供给产品or业务,便于他们
2020-07-02 17:42:33
377
原创 JVM - 逃逸分析、栈上分配、标量替换、同步消除
1、先来个开胃菜(灵魂拷问):下面这两份代码哪个好,(从jvm层面考虑的话)好在哪?public StringBuffer createString1(String ... values){ StringBuffer stringBuffer = new StringBuffer(); for (String string : values) { stringBuffer.append(string+" "); } return stringBuff
2020-06-07 17:15:22
853
原创 链表的多种翻转算法java版(由浅入深,逐个击破)
前言:本文先从链表的翻转算法和链表两两交换的算法讲起,最后糅合起来讲解K个一组的链表翻转算法。1、206. 反转链表问题描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?题解:1、利用外部空间:这种方式很简单,先申请一个动态扩容的数组或者容器,比如 ArrayList 这样的。
2020-06-07 15:16:38
470
原创 jvm内存模型、jvm内存结构、Java内存结构、Java内存模型(JMM)、Java对象模型的区别(吐血研究整理)
jvm内存模型:JVM内存模型则是指JVM的内存分区。jvm内存结构:等同于Java内存结构,汉语虽然博大精深,但是也经常会因为命名很雷同让人懵逼或者混淆不清。Java内存结构:Java内存模型(JMM):java内存模型又称为JMM。为了解决Java多线程对共享数据的读写一致性问题,通过Happens-Before语义(延伸出了as-if-serial)定义了Java程序对数据的访问规则,修正之前由于读写冲突导致的Cache数据不一致的问题。具体到Hotspot VM的实现..
2020-06-06 19:30:39
1481
10
原创 最全的树的遍历算法(递归和非递归)
树的算法如下:非递归的算法中,中序和后续遍历稍微难写一些 ,需要多练。其余的基本是模板方式,多横向对比感受下。import java.util.Stack;public class SearchTree { public static void main(String[] args) { BinaryTreeNode root = new BinaryTreeN...
2020-05-05 23:33:04
705
原创 递归的套路
# 分治和回溯本质上就是一种特殊的递归(较为复杂的递归)。碰到算法问题先找重复性,最优的重复性就是动态规划,最近的重复性根据重复性怎么构造怎么分解就有什么分治或者最后要回溯或者实在其他的各种办法,但本质上其实就是一种递归,就是要去找它的重复性。一般都需要分解问题和最后组合每个子问题的结果。# 代码模板## 分治代码模板:def divide_conquer(problem,...
2020-05-04 19:38:55
279
原创 程序员必知必会的Mock技能-结合spring的mock静态方法
一、痛点问题1.1、如何mock静态方法1.2、mock很容易造成代码覆盖率的下降,如何提升代码覆盖率二、准备工作2.1、技术选型:powerMock为何常见的Mockito不能mock静态方法?因为Mockito使用继承的方式实现mock的,用CGLIB生成mock对象代替真实的对象进行执行,为了mock实例的方法,你可以在subclass中覆盖它,而static方法是不...
2019-12-27 12:10:20
3306
原创 java NIO分析之前世今生
本文目的:把握IO历史车轮的脉搏,知其然(了解NIO,NIO等),知其所以然(为啥会有NIO,为啥这么设计NIO,这么设计的好处是什么)。一、核心概念的理解1、Java I/O模型贯穿了整个java的各种IO的变革历史,各种方案其实本质上都是围绕着这个目的展开的。 同步I/O: 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程...
2019-01-31 15:22:18
304
原创 Mysql事务和锁的深入研究(亲测权威版,看完后彻底搞懂)
本博文以思想指导实践来验证论点并加以总结归纳,切忌死记硬背。本博文的所有demo都很详细,各位可以自行在自己的数据库中做测试验证。1、入门准备工作1.1、#建表语句CREATE TABLE `student` ( `id` int(16) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `sno` VARCHAR(16) DEFAULT...
2019-01-16 11:52:33
335
原创 如何自己写一个无业务侵入的框架让别人使用
使用场景:SpringBoot框架里写的SDK代码中有一个XXXFilter拦截器,接入方依赖了这个sdk,想要使用这个拦截器必须要使用@ServletComponentScan(basePackageClasses = XXXFilter.class)才能生效。现在想去掉这句话,使得对接入方使用更加友好。代码使用:1、在client层的resources/META-INF/下新建一个...
2018-09-17 22:43:48
810
原创 Spring boot下的携程的DAL事务和回滚实现原理
首先申明,吐槽我程框架仅仅是希望框架能够更好,不代表不热爱公司哈。其次,携程的DAL框架(类似MyBatis的orm框架)确实有点那个不太给力了,估计和以前都是C#语言为主的历史原因。DAL框架不给力的地方如下:1、不支持Spring事务,很多功能没法实现,例如在事务性的a()里想要执行一段非事务的逻辑;或者在事务性的a()里想要执行一段新起事务的逻辑,但是b的事务和a的事务互不干扰。这些...
2018-07-30 23:59:55
1172
原创 万能参数校验框架
简介:结合JSR380,Hibernate validation,生成代理(也可以用Spring AOP来替代)实现的一整套的请求参数校验的框架,后期优化可以实现做成一个服务化的jar包到处使用。本文中将参数校验的所有代码都和业务代码逻辑进行分离,完美契合单一性原则、低耦合等设计原则。全局启用注解:@Documented@Target({ElementType.TYPE, Elemen...
2018-07-26 15:06:05
1331
翻译 JVM内功心法
基础 JVM运行时内存消耗包括哪些部分 通常包含如下几部分:Heap:我们常说的JVM运行时堆内存(通过-Xmx, -Xms参数控制) Thread Stack:Java的每一个线程最多会占用一个Thread Stack大小的内存(通过-Xss参数控制) Direct Memory:一些网络编程框架常会使用,如,Netty(通过-XX:MaxDirectMemorySize参数控...
2018-07-26 15:04:13
276
原创 关于java反射包中的一些常见类和方法的理解 - 持续完善
一、Type:其是一个接口java.lang.reflect.Type,主要有5类: raw types: 就是一般类型,如String,Collections ,Math,Number等 parameterized types: 含泛型定义的类,如:List, Map, etc.. array types: 含泛型定义的数组,数组内可以是parameterized types或type va...
2018-06-12 21:32:14
911
原创 JAVA 对象的深拷贝
package com.ctrip.ibu.itinerary.common.util;import com.google.common.primitives.Primitives;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import sun.misc.Unsafe;import java.lang.reflect...
2018-06-07 22:10:59
974
1
原创 关于合理地估算线程池大小的方案比较和误区分析
总所周知,在涉及多线程开发时不可避免的需要进行线程池大小估算的工作。常见三种处理的方式有:1,根据网上的估算公式来估算,但是往往会发现没什么用,因为你计算不出来准确值。2,按照经验先估算一个大小(具有一定随意的成分),然后用jmeter等压测工具去压测,然后逐渐修改已达到较为合理的值。3,自己去思考一下,整理出上限的各项指标,例如qps,程序处理性能等,然后用公式去推导出较为合理的大小。...
2018-04-17 22:59:07
843
原创 跨境支付与业务流程介绍
跨境支付业务 跨境支付与人民币跨境支付的不同通俗的来讲,跨境支付就是中国消费者在网上购买国外商家产品或国外消费者购买中国商家产品时,由于币种的不一样,就需要通过一定的结算工具和支付系统实现两个国家或地区之间的资金转换,最终完成交易。跨境外汇业务分类 非金融机构(有第三方支付牌照的公司也算是非金机构)开展的外汇跨境支付业务主要是银行卡收单业务,该业务包括境外收单和外卡收单两个模式。 1.境外
2018-01-19 11:58:33
44412
2
原创 查询数据库数据并写入到文件中的优化方案
有限制条件的大招:第一步:执行完以下sql,会自动的在mysql服务器对应的机器上生成所要的文件SELECT ... FROM TABLE_xxx where ... INTO OUTFILE "/tmp/xxx/xxx" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' LINES TERMINATED
2017-12-27 21:06:53
417
原创 数据库连接池
三大连接池:c3p0,dbcp与druid1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。 2)c3p0 c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection
2017-12-27 17:43:04
437
原创 java注解实战
java注解的入门入门基础知识 自行百度了解,或者根据下图了解。 自定义注解的高阶实战1.下面是自定义注解类ApiElementpackage test;import java.lang.annotation.*;/** * <p>渠道api element 注解</p> * <pre> * author JasonGao * date
2017-12-11 16:54:09
428
原创 个人阅读的觉的比较好的文章收录
从分布式一致性谈到CAP理论、BASE理论http://www.cnblogs.com/szlbm/p/5588543.html事务的传播行为(讲得比较好)http://blog.sina.com.cn/s/blog_4b5bc0110100z7jr.htmlJava帝国之宫廷内斗(1)和(2)--- 很有趣味性http://blog.csdn.net/jian
2017-09-15 18:54:43
242
原创 超大数据量的xlsx格式的excel文件的读取和解析,解决了POI方式的内存溢出和性能问题
在之前的博文《POI读取并解析xlsx格式的excel文件》中,在小数据量的情况下是可以轻松愉快的处理的,但是当excel文件的数据量达到百万级的时候,InputStream is = files[i].getInputStream(); XSSFWorkbook xssFWorkbook = new XSSFWorkbook(is); 在02处直接就会内存溢出了。无论怎么抢
2017-09-14 11:32:17
11892
21
翻译 你所不知道的单例模式和多线程并发在单例模式中的影响
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(
2017-09-11 15:18:11
377
原创 项目代码部署到Linux上并运行
举例:java项目为cap-cbs-mgr,准备部署到开发环境的linux机器上。1.本地项目的根目录下需要放入三个文件:package-upload.bat,PLINK.EXE,PSCP.EXE。package-upload.bat的shell脚本内容如下:(本文中涉及账号密码就不方便显示了)echo offset "PROJECT_NAME=xxx"set "HOST
2017-08-22 15:52:20
1390
原创 excel模板文件下载
方案一:以下demo主要采用的方案是在项目的resources/template文件夹下存放好限定了若干条件的excel文件,用流的方式下载,支持弹窗方式选定下载路径和后端指定路径的方式。首先需要制作一个限定了若干条件的excel(例如限定文本/日期/数字/分数等格式,设置批注,设置输入值的校验等),目的在于限制运维人员规范的填写文件数据,避免胡乱的填写excel并进行错误的文件导入。
2017-08-15 19:20:09
735
原创 POI读取并解析xlsx格式的excel文件
本文主要采用POI来解析excel文件。如果需要解析的是支持数据量更大的.xlsx后缀的格式,需要导入的jar包为poi-ooxml-3.15.jar;若是需要解析的是.xls后缀的格式,需要导入的是poi-3.17-beta.jar。jar版本建议采用公司maven库中的最新版。本文的demo中,解析的是xlsx后缀的excel文件。xls格式的类似,只需要将所有的XSSF开头的都改成HSS
2017-08-15 17:47:49
2977
原创 java 写数据时候,插入到指定行的位置
应用场景举例:需要查数据库获取明细数据若干行,并且汇总得到一行汇总数据。现在需要将汇总数据写入文件第一行,然后将若干行(假设10w行)明细数据从第二行一直写到100001行。实现方式:方法一:(1)查询数据库:在数据库sql中做统计得到汇总行数据,写入文件中。(2)查询数据库:在数据库sql中直接的分页查询(不统计)得到若干行明细数据,并不停的将分页的明细数据追加写入到文件中。
2017-06-29 15:02:32
12342
3
原创 Mybatis之多种数据类型的批量的更新数据库表
我想实现的效果是:更新cap_fo_order表的订单状态=待审核、时间=当前,更新条件是订单id在(id1,id2,id3等多个)范围中并且(订单状态 = “01” and 订单状态的描述 = “初始化”) 。这也就意味着我必须传递多个不同类型的参数。话不多说,上代码展示: //FoOrderRepository文件批量的更新数据库的表Integer updateMulity(@Param("o
2017-01-19 17:04:50
722
原创 互联网金融入门篇(三) 专业术语
术语 解释会计分录 会计分录是由应借应贷方向、对应账户(科目)名称及应记金额三要素构成。同一Transaction对应的 AccountingEntry 表示一个凭证中的分录信息;主账户 用户的主账户和商户账户内部账户 针对每个银行开设的账户日切 为便于资金清算,按指定时间点,划分每个工作日,在时间点到达时,当日业务终止,然后开始统计和汇总各类报表,从这个时点开始发生的业务全部记入
2016-12-16 17:33:34
1274
原创 互联网金融入门篇(二) 会计分录
官方定义:会计分录是指预先确定每笔经济业务所涉及的账户名称,以及计入账户的方向和金额的一种记录。简称分录。 会计分录是由应借应贷方向、对应账户(科目)名称及应记金额三要素构成。 按照所涉及账户的多少,分为简单会计分录和复合会计分录。 简单会计分录指只涉及一个账户借方和另一个账户贷方的会计分录,即一借一贷的会计分录; 复合会计分录指由两个以上(不含两个)对应账户所组成的会计分录,即一借多贷、
2016-12-16 17:15:48
1321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人