- 博客(83)
- 收藏
- 关注
原创 集群容器频繁OOMKilled的排查经历
发现日志并无异样,也没有相关异常报错信息排查问题细致!注意分析工具的英文解释,每一个英文都得关注(粗心)日常开发引入jar包一定要深入理解最佳实践后才使用,切勿浅尝辄止能用就行一个已经加载的类被卸载的几率是很小的同时被卸载的时间也是不确定的工具方面mat似乎不太好查看已加载类信息,比较侧重不同类加载器加载同一个类导致的重复类问题visualvm也不太好查看已加载类信息arthas不错 功能全面。
2024-01-04 11:11:22
1766
转载 笔记:数据结构与算法之美 06 | 链表(上):如何实现LRU缓存淘汰算法?
LRU缓存淘汰算法优先淘汰最近最少使用的数据Least 最少Recently 最近Used 使用链表和数组底层存储结构不同数组需要一块连续的内存空间来存储链表不需要,他通过指针将一组零散的内存块串联起来使用五花八门的链表结构单链表双向链表循环链表单链表每一组零散的内存块称之为结点记录下个结点地址的指针叫作后继指针next有两个特殊结点第一个结点 头结点,记录链表的基地址最后一个结点 尾结点,指针不是指向下一个结点,而是指向一个空地址NULL插入和删除操作
2022-03-09 18:18:03
142
转载 笔记:数据结构与算法之美 05 | 数组:为什么很多编程语言中数组都从0开始编号?
数组一种线性表数据结构一组连续的内存空间存储一组具有相同类型的数据线性表(Linear List)数据排成一条线一样的结构数据最多只有前和后两个方向tips:除了数组,链表、队列、栈等也是线性表结构非线性表数据之间并不是简单的前后关系tips:比如二叉树、堆、图等连续的内存空间和相同类型的数据正因如此,才有了“随机访问”的特性数组如何实现根据下标随机访问数组元素?通过如下寻址公式,计算出该元素存储的内存地址a[i]_address = base_addr
2022-03-08 14:41:01
151
原创 SpringBoot多线程@Async使用体验
场景导入:可以将大批量的数据insert操作采用多线程的方式并行执行第三方服务的接口调用:由于存在个别第三方服务调用比较耗时的场景,此时就可以与自身服务的逻辑并行执行简而言之:接口中部份业务逻辑可以通过并行的方式来优化接口性能1.线程池配置@Configuration@EnableAsyncpublic class TaskPoolConfig { @Bean("taskExecutor") // bean 的名称,默认为首字母小写的方法名 public Executor
2021-06-11 16:46:18
458
原创 NewSQL-TiDB First Blood
五大核心特征水平扩缩容高可用,分布式事务支持HTAP(OLTP+OLAP)分布式兼容MySQL5.7协议竞品:MySql差异化TiDB纯国产化技术,尤其适用于政府项目数据量上来之后的解决方案之一,优于古老的分库分表技术,但是替换底层数据库是个需要慎重考虑的决策整体架构模块TiDB Server:SQL层负责:接受客户端连接,执行SQL解析优化特点:本身并不存储数据,只是解析SQL,将实际的请求转发给底层存储节点TiKV或者TiFlashPD Server:集群的大脑负
2021-02-25 18:01:32
135
原创 SQL优化 - Group By 导致的慢sql
优化前的慢SQL:3.8sEXPLAIN SELECT product.id AS product_id, product.CODE AS product_code, product.NAME AS product_name, product.remarks AS product_remarks, warnLabel.storage_num_code AS "productStorageWarningLabel.storageNumCode", warnLabel.storage_durati
2020-12-21 17:42:38
1784
原创 策略模式+装饰器模式
妙计接口public interface SyncActionHandler { void handleSyncAction(OpenSyncBizDataVO data);}妙计实现类1public class OrgDeptCreateSyncActionHandler implements SyncActionHandler { @Autowired private DeptService deptService; @Override public
2020-08-25 14:39:03
394
原创 精确计算对象的大小——细就完事了
数据类型大小boolean1 bytesbyte1 bytesshort2 byteschar2 bytesint4 byteslong8 bytesfloat4 bytesdouble8 bytesOOPordinary object pointer普通对象指针启动CompressOops后,会压缩的对象:1.每个class的属性指针(静态成员变量)2.每个对象的属性指针3.普通对象数组的每个元素指针不会压...
2020-08-24 17:50:19
389
原创 ElasticSearch是真滴香—附带一份ES取代InfluxDB的测试性能报告
Version:kibana-7.8.0elasticsearch-7.8.0启动ES启动成功校验http://127.0.0.1:9200/{ "name": "DESKTOP-AANKMQ7", "cluster_name": "elasticsearch", "cluster_uuid": "Gh9mhXcpR-eQsU-QLQVaZw", "version": { "number": "7.8.0", "build_flavor": "default",
2020-07-23 20:15:15
1764
原创 分库分表-ShardingSphere-ShardingJDBC
分片和分区的区别Sharding 分片Partition分区存储依赖可跨越DB 可跨越物理机器可跨越表空间,不能跨DB存储数据划分常见为时间、范围、面向服务等范围、Hash、列表、混合分区等存储方式分布式集中式扩展性Scale Out (水平扩展)Scale Up(垂直扩展)可用性无单点存在单点(DB本身)价格低廉适中(DAS)甚至昂贵(SAN)应用场景Web 2.0网站多数传统应用ShardingSpherev
2020-06-30 10:35:52
357
原创 分库分表
前言公司最近在搞服务拆分的内容,由于服务拆分必然会带来数据库的拆分,同时公司业务单表数据最高已经达到了亿级,于是乎考虑分库分表来对库进行拆分所以将分库分表提上日程必然是势在必行特此记录一下对分库分表的研究历程何谓分库分表,字面意思就给人一种手艺活的感觉既然是一门手艺活,那么当然得先从姿势讲起(手动❀鸡)垂直垂直分表:大表拆分成小表,由于大表有很多字段,但是有部分简单查询时这些字段并不常用,因此可以拆分成基础信息表和详细信息表。垂直分库:大库拆分成小库,一般是按照服务来进行拆分,比如订
2020-06-24 11:14:15
563
原创 开放平台设计选型&代码编写
最近在着手开发开放平台的设计选型工作,以下来唠唠技术上选型的心路历程:相关阅读:早期Oauth2.0解释:阮一峰:理解OAuth 2.0最新Oauth2.0简单解释:阮一峰:OAuth 2.0 的一个简单解释阮一峰:OAuth 2.0 的四种方式阮一峰:GitHub OAuth 第三方登录示例教程选型那时的我面临着两种抉择:Spring SecurityShiro + O...
2020-03-09 17:40:51
347
原创 InfluxDB-Java初体验
打败我的从来不是天真,而是无邪前提注意点总结1.where子句后面的值如果是字符串,必须用如下所示的单引号给我包起来!‘’2.order by 后面仅支持time字段3.select 若出现tag列,则field列必须出现一个,换而言之,不能仅出现tag列time使用influxDB时,总是避免不了查询一段时间范围内的数据作为一名练习时长两年半的的JAVA后端攻城狮写出如下S...
2019-12-23 15:46:35
978
原创 Kubernetes-HPA初体验
what:什么是HPA?缩写:HPA全称:Horizontal Pod Autoscaling中文:POD水平自动伸缩WHY:为什么需要HPA?在实际生产中,随着业务量的上升,POD的负载也随之上升,我们的老办法是手动伸缩POD:将名为foo中的pod副本数设置为3kubectl scale --replicas=3 rs/foo但是不乏有这样的场景:某一家商铺临时举行了一次秒杀活...
2019-11-14 14:45:08
467
原创 prometheus-operator
a long time ago在下已经在K8S内成功部署了一个prometheus+alertmanager+grafana的监控系统并通过K8S service 的DNS方式成功接入web应用的pod但是这只能监控一个pod,并且每次接入新的pod还得配置同时也不能完整的监控整个K8S于是开启了漫长的面向谷歌编程之路经过不懈,发现了prometheus-operator这个宝贝玩意...
2019-11-01 14:28:38
318
原创 Spark
bin/spark-submit \ --master k8s://https://10.4.101.85:6443 \ --deploy-mode cluster \ --name spark-pi \ --class org.apache.spark.examples.SparkPi \ --conf spark.kubernetes.namespace...
2019-10-29 20:24:08
144
原创 稳定性测试报告要求
系统部署架构降级设计系统压测系统部署架构非设计架构必须使用SLB不能出现单点RDS高可用,支持主备业务日志统一分析降级设计步骤:梳理功能模块,按照功能重要程度,用户侧更重要实现时尽量不要和业务耦合,确保开关高可用对优先级低的增加开关,可随时关闭低优先级功能,确保高优先级可用,因为往往低优先级会连带高优先级发生雪崩效应开关演练,要确保开关生效,要对生产环境下进行演练...
2019-10-12 18:27:43
2203
原创 RateLimit:限流
3W法则:what:什么是限流顾名思义限制流量why:为什么我们的服务需要限流用户量病毒增长微博热搜/淘宝双十一竞品爬虫恶意攻击how:如何限流一般可以根据服务的某项核心指标,如QPS,来决定是否将后续的请求拦截。比如设定某系统1s的QPS阈值为100,当1s内的QPS达到了110,那么差值的10个请求则会被拦截,直接返回503状态码:服务器繁忙。根据以上结果导向论,又衍生...
2019-09-27 11:23:16
695
原创 论springboot如何优雅地集成redis+cache?
dependenceSpring Data Redis + 连接池<!--Spring Data Redis--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis<...
2019-09-09 16:18:32
223
原创 大数据:安装Hadoop(附带jdk安装步骤)
1安装 a)下载jdk-8u65-linux-x64.tar.gz b)tar开 $&gt;su centos ; cd ~ $&gt;mkdir downloads $&gt;cp dk-8u65-linux-x64.tar.gz ~/downlooads $&gt;tar -xzvf jdk-8u65-linux-x64.tar.gz c)创建/soft文件夹 $&...
2019-02-27 11:27:50
728
原创 Linux学习:yum安装和相关指令&防火墙开关
Yum的介绍Yum的介绍(切换到root用户)Yum 全称为 Yellow dog Updater, Modified,它是一个在线的软件安装命令。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。例如我们需要安装一个软件A,而软件...
2019-02-27 11:08:46
572
原创 GitLab集成Docker和K8S完成CI/CD持续集成部署工作
1.安装gitlab runner1.添加GitLab的官方存储库:curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash2.安装最新版本的GitLab Runnersudo yum install gitlab-runner3.验证...
2019-02-26 19:35:15
3610
翻译 K8S(4):nginx demo
在k8s中新建一个nginx服务demo在k8s中新建一个nginx服务这个示例中,我们会在一个pod中封装一个nginx的镜像,然后通过deploy发布出来,并通过service暴露对外访问的接口在新版本的kubernetes中,引入了deployment对象,作为pod对象的管理器。通过deployment对象,可以实现pod的自动重启、状态监测等任务的自动化管理。线上应用都应该使用d...
2019-02-18 01:14:30
896
翻译 K8S(3):常用基本命令
K8S命令模式命令式模式kubectl create deployment nginx --image nginxkubectl run nginx --image nginx与docker命令类似,直接使用命令来创建k8s对象命令式对象配置模式通过配置文件来辅助命令kubectl create -f nginx.yamlkubectl delete -f nginx.ya...
2019-02-18 01:13:53
2413
翻译 K8S(二):核心对象概念
k8s核心对象概念基本对象概念基本对象(偏底部,对用户操作比较少)PodPod是最小部署单元,一个Pod有一个或者多个容器组成,Pod中容器共享存储和网络,在同一台Docker主机上运行。ServiceService一个应用服务抽象,定义了Pod逻辑集合和访问这个Pod集合的策略。Service代理Pod集合对外表现是为一个访问入口,分配一个集群IP地址,来自这个IP的请求将负载均衡...
2019-02-18 01:12:53
687
翻译 K8S(1):K8S概述
K8S概述k8s介绍Kubenetes是Google在2014年6月开源的一个容器集群管理系统,使用go语言开发,kubenetes也叫k8s。是谷歌内部一个叫Borg的容器集群管理系统衍生出来的。k8s能干嘛主要用于自动化部署,扩展和管理容器应用,提供了资源调度、布署管理、服务发现、扩容所容、监控等一整套功能。kubernetes目标是让部署容器化应用简单高效。...
2019-02-18 01:11:50
267
翻译 Docker基础篇之快速上手(2):Docker安装
文章目录Docker安装1 基本组成(三要素)2 准备工作:3 安装&amp;启动docker4 常用操作5.在docker容器上安装*************等等6.容器数据卷7.构建镜像Docker安装1 基本组成(三要素)仓库(repository)仓库(Repository)是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓...
2019-02-17 20:14:29
204
翻译 Docker基础篇之快速上手(4):DockerFile
文章目录DockerFile是什么构建三步骤DockerFile体系结构(保留字指令)Dockerfile示例DockerFile补充:不光可以用Dockerfile构建镜像,也可以用docker commit构建是什么Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。构建三步骤1.编写Dockerfile文件2.docker build:...
2019-02-17 20:12:28
218
翻译 Docker基础篇之快速上手(3):Docker常用命令
文章目录Docker常用命令1 帮助命令2 镜像命令3 容器命令Docker常用命令1 帮助命令docker versiondocker infodocker -help2 镜像命令操作命令说明检索docker search 关键字去docker hub上检索镜像,如镜像的tag拉取docker pull 镜像名:tag:tag是可选的,tag...
2019-02-17 19:01:12
269
翻译 Docker基础篇之快速上手(1):Docker简介
Docker简介1 是什么1.1 问题:为什么会有docker出现?一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。环境配置如此麻烦,换一台机器,就要重来...
2019-02-17 16:39:21
372
原创 记录日常毛病
2019.01.28字段之间少写了一个逗号,导致mybatis映射一直出毛病,无法正确映射,谨记!SELECT `id`, `gmt_create`, `gmt_modified`, `product_id`, `product_name`, `product_no`, `product_url`, `product_cate...
2019-01-28 11:12:16
115
原创 SpringBoot整合ActiveMQ大全
文章目录SpringBoot整合ActiveMQ背景知识点ActiceMQ相关概念PTP 和 PUB/SUB对比安全认证持久化SrpingBoot集成ActiveMQSpringBoot整合ActiveMQ背景知识点JMS:Java Message Service Java消息服务消息队列:消息的传输过程中保存消息的容器消息队列主要特点:异步处理主要目的:减少请求响应时间和解耦使用场...
2019-01-14 00:52:17
2761
原创 MongoDB:从入门到还未入土
使用场景产品需求:导入EXCEL表格特点:字段名不是固定的,随时可能会变化数据量后期会比较大MongoDB分布式文件存储的开源数据库系统基本概念MySqlMongoDBdatabasedatabase数据库tablecollection表/集合rowdocument数据记录行/文档columnfield数据字段/域t...
2019-01-11 00:37:37
269
原创 POI导出Excel一招吃遍天下
maven依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version></dependency><dependenc
2019-01-02 00:01:15
172
原创 前后端分离,导出CSV(隐藏表单提交)
@RequestMapping(value = &amp;amp;quot;/list&amp;amp;quot;, method = RequestMethod.GET) @ResponseBody public Map&amp;amp;amp;lt;String, Object&amp;amp;amp;gt; pageList( HttpServletRequest request,
2018-12-31 19:04:21
893
原创 SSM环境Swagger2配置详解
Swagger2.9.2pom.xml&lt;dependency&gt; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &lt;artifactId&gt;springfox-swagger2&lt;/artifactId&gt; &lt;version&
2018-12-31 14:15:37
1495
2
原创 ssm+sqlSessionTemplete执行器批量更新删除添加(效率高)
1.spring通过配置文件配置SqlSessionTemplate重新构造一个spring.xml<bean id="SqlSessionTemplateBatch" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"&g
2018-12-18 00:07:13
3052
原创 ajax和axios区别之:@RequestBody的应用场景区分
jQuery.ajax的post提交默认的请求头Content-Type: application/x-www-form-urlencoded而axios.post提交的请求头是Content-Type: application/json。例子:前台axios,后台springmvc接受的时候要特别注意区分!!!前台:axios:param={“name”:“张三”}ax...
2018-12-15 21:03:05
2241
原创 mysql分页语句优化
覆盖索引通常开发人员会根据查询的where条件创建合适的索引。但是mysql可以使用索引来直接获取列的数据,就不用回表查询,也就是说这种索引包含(也称覆盖)所有需要查询的字段的值,就称这种索引为覆盖索引利用表的覆盖索引来加速分页查询我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相...
2018-12-15 12:19:36
220
原创 SpringAOP之代理模式之动态代理之CGLIB&JDK
一、概念代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。静态代理类:由程序员创建或...
2018-12-14 01:03:31
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人