自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql processlist 出现大量sleep too many connections

在生产环境切换mysql数据库,切换后数据库连接池爆满,抛出异常“too many connections”;出现这种现象,比较常见的原因是连接数真不够了,需要设置连接数:一、连接数不够解决方案show processlist;查看连接数,可以发现有很多连接处于sleep状态,这些其实是暂时没有用的,所以可以kill掉3、show variables like "max_connections";查看最大连接数,应该是与上面查询到的连接数相同,才会出现too many conne..

2021-11-10 23:16:10 8508 2

转载 每秒上千订单场景下的分布式锁高并发优化实践

库存超卖现象是怎么产生的?先来看看如果不用分布式锁,所谓的电商库存超卖是啥意思?大家看看下面的图:这个图,其实很清晰了,假设订单系统部署两台机器上,不同的用户都要同时买10台iphone,分别发了一个请求给订单系统。接着每个订单系统实例都去数据库里查了一下,当前iphone库存是12台。俩大兄弟一看,乐了,12台库存大于了要买的10台数量啊!于是乎,每个订单系统实例都...

2019-10-23 10:56:01 187

原创 JVM 参数使用手册

内存分配相关Xms英文释义:Initial heap size(in bytes)中文释义:堆区初始值使用方法:-Xms2g 或 -XX:InitialHeapSize=2048mXmx英文释义:Maximum heap size(in bytes)中文释义:堆区最大值使用方法:-Xmx2g 或 -XX:MaxHeapSize=2048mXmn英文释义:Maximum new generation size(in bytes)中文释义:新生代最大值使用方法:-Xmn512m 或 -XX

2022-01-08 14:24:49 461

原创 HikariCP连接池各属性详解

springboot配置Hikari连接池。主要配置如下,配置项 描述 构造器默认值 默认配置validate之后的值 validate重置autoCommit 自动提交从池中返回的连接 TRUE TRUE -connectionTimeout 等待来自池的连接的最大毫秒数 SECONDS.toMillis(30)=30000 30000 如果小于250毫秒,则被重置回30秒idleTimeout 连接允许在池中闲置的最长...

2021-11-10 22:52:55 1182

转载 阿里开源的限流神器 Sentinel,轻松搞定接口限流!

Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。在日常开发中,限流功能时常被使用,用于对某些接口进行限流熔断,譬如限制单位时间内接口访问次数;或者按照某种规则进行限流,如限制ip的单位时间访问次数等。之前我们已经讲过接口限流的工具类ratelimter可以实现令牌桶的限流,很明显sentinel的功能更为全面和完善。来看一下sentinel的简介:https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel

2020-11-21 13:57:17 344

转载 Kubernetes概述&k8s概述

目录简介起源大规模容器集群管理工具,从Borg到Kubernetes简介Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监.

2020-11-17 21:47:30 183

原创 JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled

查看原生内存信息:jcmd process_id VM.native_memory summaryjcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown]1.执行命令:jcmd <pid> VM.native_memory detail2.

2020-10-29 22:23:13 5129 3

原创 Kafka工作原理

一、消息路由策略在通过 API 方式发布消息时,生产者是以 Record 为消息进行发布的。Record 中包含 key与value,value 才是我们真正的消息本身,而 key 用于路由消息所要存放的 Partition。消息要写入到哪个 Partition 并不是随机的,而是有路由策略的。1) 若指定了 partition,则直接写入到指定的 partition;2) 若未指定 partition 但指定了 key,则通过对 key 的 hash 值与 partition 数量取模,该取模

2020-10-25 10:39:35 2703

原创 Kafka 基本术语介绍

Kafka 基本术语对于 Kafka 基本原理的介绍,可以通过对以下基本术语的介绍进行。2.1.1 Topic主题。在 Kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。topic 相当于消息的分类标签,是一个逻辑概念。2.1.2 Partition分区。topic 中的消息被分割为一个或多个 partition,其是一个物理概念,对应到系统上就是一个或若干个目录。partiiton 本身是一个 FIFO 队列,其中的消息是有序的。但,在 Pa

2020-10-25 10:26:01 485

原创 Kafka 概述、Kafa 系统架构、kafka使用场景

1.1 kafaka 简介Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统,使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点,较之传统的消息中间件(例如 ActiveMQ、RabbitMQ),Kafka 具有高吞吐量、内置分区、支持消息副本和高容错的特性,非常适合大规模消息处理应用程序。Kafka 官网: http://kafka.apache.org/1.2 Kafa 系统架构...

2020-10-25 10:06:07 1246 6

原创 jvm性能调优工具 jps

jps - Java Virtual Machine Process Status ToolSynopsis Parameters Description Options Host Identifier Output Format Examples See AlsoSYNOPSISjps [ options ] [ hostid ]PARAMETERSoptionsCommand-line options.hostidThehost identifier..

2020-09-18 11:21:07 156

原创 jvm性能调优工具 jcmd,jcmd <pid> VM.native_memory detail.diff jcmd <pid> VM.native_memory baseline

一、jcmd命令使用先罗列下jcmd的常见用法:堆直方图查看:查看系统中类统计信息GC.class_histogram, 堆转储:导出堆信息GC.heap_dump, 获取系统Properties内容VM.system_properties 获取启动参数VM.flags 获取所有性能相关数据PerfCounter.print 查看原生内存信息:jcmd process_id VM.native_memory summary 查看CompressedClassSpace大小:jcmd

2020-09-18 10:19:23 2671

转载 jedisConnectionFactory: NoClassDefFoundError: redis/clients/util/Pool

在做springboot 2.x + redis(采用jedis)整合,启动时JedisConnectionFactory factory = new JedisConnectionFactory();抛出异常:Factory method 'jedisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: redis/clients/util/Pool其中:spr...

2020-06-10 00:17:44 1354

转载 CloseableHttpClient的使用和优化

HttpClient优化思路1、池化 2、长连接 3、httpclient和httpget复用 4、合理的配置参数(最大并发请求数,各种超时时间,重试次数)5、异步 6、多读源码1.背景我们有个业务,会调用其他部门提供的一个基于http的服务,日调用量在千万级别。使用了httpclient来完成业务。之前因为qps上不去,就看了一下业务代码,并做了一些优化,记录在这里。先对比前后:优化之...

2020-01-16 16:55:16 9325 3

转载 微信小程序集成 Jenkins 自动化部署

背景微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题:小程序开发助手中,同一个开发者只能显示一个开发版本 测试同事找开发要二维码,效率较低 本地生成的二维码会出现携带本地代码、未及时拉取分支其他改动等问题为了避免如上问题的发生,采用微信小程序集成 Jenkins的方案。基础在介绍实现方案之前,先来回顾一下常规的微信小程序发布流程。...

2020-01-15 15:26:22 9635

转载 grep技巧(-r):在某一目录下递归[所有子目录]查找某一字串:+文件路径

grep技巧(-r):在某一目录下递归[所有子目录]查找某一字串:+文件路径2011-04-05 12:15:01| 分类:基本命令| 标签:grep目录查找技巧equivalent|字号大中小订阅在某一目录下递归[所有子目录]查找某一字串:grep -r “字串” 目录名就是加一个-r参数,请看man page:-R, -r, –recursiveRea...

2020-01-10 21:40:48 1048

原创 Java 冬令时-夏令时转换方法

最近用到冬令时与夏令时,与其他时区转换,现做一下整理1.转换指定时区的默认时间/** * 转换指定时区的默认时间格式 * @param utcTime * @param tz * @param locale * @return */ public static String toZoneDateTimeByDefaultF...

2019-11-05 14:34:25 1988

原创 Java 高并发 进程与线程(二)线程的基本操作

一,新建线程新建线程很简单,初始化后,启用start()方法即可。Thread t1 = new Thread(); t1.start();那么线程start()后做什么,。线程Thread还有一个run()方法,start会新建一个线程执行run方法。t1.run(); run方法是在当前线程中执行。注意:不要用run方法开启新线程,它只会在当前线程中串行执行run()方法中...

2019-10-30 09:44:17 137

原创 Java 高并发 进程与线程(一)

进程与线程区别,用专业的术语解释是 :线程就是轻量级进程,是程序执行的最小单元。使用多线程而不是使用端进程去进行并发程序设计,主要原因是线程间切换和调度的成本远小于进程。线程状态定义:public enum State { /** * Thread state for a thread which has not yet started...

2019-10-28 11:03:40 151

原创 Redis Java Jedis 方法分析

package redis.clients.jedis;import redis.clients.jedis.BinaryClient.LIST_POSITION;import redis.clients.jedis.JedisCluster.Reset;import redis.clients.jedis.params.geo.GeoRadiusParam;import redis.c...

2019-10-25 10:46:38 766

转载 Java分布式锁看这篇就够了#多种分布式锁

### 什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线...

2019-10-24 15:38:14 145

转载 常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)

缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。常见类型包括LFU、LRU、ARC、FIFO、MRU。最不经常使用算法(LFU):这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。最近最少使用算法(LRU):这个...

2019-10-14 14:35:09 313

转载 Redis 内存满了怎么办……

我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小。//设置Redis最大占用内存大小为100Mmaxmemory 100mbredis的配置文件不一定使用的是安装目录下面的...

2019-10-14 14:30:06 113

转载 kafka数据可靠性深度解读

Kafka起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark等都支持与Kafka集成。1 概述Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易于向外...

2017-05-31 16:20:21 463

原创 Maven搭建SpringMVC+Mybatis+freemarker项目详解

1、新建一个maven project ,选中maven-archetype-webapp,点击next2、这里的Group Id就是大项目的id,ArifactId就是该项目的Id。就像一个大项目中有许多小项目组成一样。此时,我们的项目已经成型了,样子如下图:3、完善项目首先,完善目录,增加重要的sourceFolder,这个不是简单的Floder,这些文件夹

2017-03-16 10:30:15 759

原创 Docker新手入门:基本用法

Docker新手入门:基本用法.Docker简介1.1 第一本Docker书工作中不断碰到Docker,今天终于算是正式开始学习了。在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少麻烦,主要就是没有特别经典的书!Docker的《第一版Docker书》和《Docker技术入门与实战》普遍评价不高,而《Docker开发实践》和《Dockeru源码分析》又是2015年

2017-02-16 11:02:24 364

原创 Docker常见命令

Docker常见命令容器相关操作docker create # 创建一个容器但是不启动它docker run # 创建并启动一个容器docker stop # 停止容器运行,发送信号SIGTERMdocker start # 启动一个停止状态的容器docker restart # 重启一个容器docker rm # 删除一个容器docker kill # 发送信号给容器,默认SIGKI

2017-02-15 16:19:09 1353

原创 什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 Docker通常用于如下场景:web应用的自动化打包和发布;自动化测试和持续集成、发布;在服务型环境中部署和调整数据库或其他的后台应

2017-02-07 17:03:17 258

原创 Docker基本介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。        Docker 架构Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建

2017-02-07 15:45:50 939

原创 Spark源码中的Scala模式匹配编程和Scala模式匹配编程操作实战

class DataFrameworkcase class ComputationFramework(name:String ,popular : Boolean) extends DataFrameworkcase class StorageFramework(name:String ,popular : Boolean) extends DataFrameworkobjec

2017-01-19 10:44:33 286

原创 Scala函数式编程进阶

/** * 函数式编程进阶 * 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量; * 2,函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你要使用的话,一般会把这个 *   匿名函数赋值给一个变量(其实是val常量) * 3,函数可以作为参数传递给函数,这极大简化了编程方法, *   第一,以前java

2017-01-17 14:02:15 352

原创 Scala面向接口编程和Spark源码鉴赏

1,Scala实现接口用关键字extends2,如果前面有了extends关键字,使用关键字with 实现接口3,Scala的抽象属性,未被实例化的属性是抽象的,必须要指定抽象属性的类型  val  name : Sring ,在子类中可以直接赋值4,trait中的方法被继承和普通类的继承比较:是不太一样,trait继承过来的是直接添加到子类中。

2017-01-13 10:53:19 337

原创 Scala继承彻底实战和Spark源码鉴赏

1.父类一般都是抽象的,还是具体类,只不过把具体的方法没有实现,在实现类中具体实现这个方法。2.子类可以复用父类正常的方法,3,如果是类的抽象类要继承抽象类,一定要实现抽象类的方法,在实现类中添加override 关键字可校验方法名和参数4,以父类类型作为初始化变量,new 子类类型,体现了面向接口编程思想。如果想把父类型转换为子类型,首先是父类是子类型初始化构建的。isInstanc

2017-01-11 15:13:09 359

原创 Scala函数初级入门的几个要点

package com.supeng.spark.scalaimport java.lang.Long/** * 函数可以被简单的认为被包裹了一条或者几条的代码体,该代码体接收若干个参数,经过代码体的处理后返回结果,形如数学中的f(x) = x +1; * 在Scala中函数式一等公民,可以像变量一样被赋值,被传递,被赋值,同时函数可以赋值给变量,变量也可以赋值给函数,之所以可以是

2017-01-10 17:22:15 345

原创 Scala中的类class apply使用

package com.supeng.spark.scala/** * 1,在Scala中定义类使用关键字class * 2,可以使用new className可以构造出类的对象 * 3,如果名称相同,则object中的内容都是class的静态内容,也就是说object中的内容在class中可以直接调用;正是因为可以在没有类的 *   的实例的时候调用object中一切内容,所

2017-01-10 16:25:50 816

原创 Scala中最常用数据结构Map和Tuple

package com.supeng.spark.scala/** * 1,默认情况下Map构造的是不可变的集合,里面的内容不可以修改,一旦修改就变成新的Map,原有的Map内容保持不变 * 2,Map的实例是调用工厂方法模式apply来构造Map实例,而需要主要的是Map接口,在apply中使用了具体的实现。 * 3,如果想直接new出Map实例,需要使用HashMap等具体

2017-01-10 16:24:57 481

转载 CAS SSO改造步骤4(重构)

前面三篇文章里面提到的由于对源码做了改动,这对开源程序是一种损害。故在前面的基础之上,将原先的代码重构,完全解耦,另外又重新阅读了login-webflow.xml 的逻辑,只在配置文件中引入自己写的类,实现SSO单点登录的功能。改动之处主要在:[html] view plain copyprint?span style="font-family

2016-12-09 11:25:20 802

转载 CAS SSO改造步骤(3)

上面写完了登录验证。那么接下来还有几个部分需要修改。  上面写完了登录验证。那么接下来还有几个部分需要修改。当用户登录成功之后从应用1跳转到应用2的时候也需要增加一个判断应用2是否授权的操作。具体是在GenerateServiceTicketAction.java类中。当用户退出的时候(包括浏览器退出都要触发LogoutController.java类中的操作)因此退出的时候一定要更改用户

2016-12-09 11:23:37 941

转载 CAS SSO改造步骤(2)

设计完数据库之后就开始配置CAS server了。  设计完数据库之后就开始配置CAS server了。至于CAS server 和CAS client的配置方法网上有很多种配置方法大致都是可行的个别版本不一样。笔者这里使用的CAS server是3.5版本,Client是3.1版本。JDK 7以及Tomcat 7。配置的过程需要耐心一点。你需要首先了解SSO工作的基本

2016-12-09 11:20:32 635

转载 CAS SSO改造步骤(1)

根据公司的业务需求需要配置一个单点登录的服务器为后续应用的上线提供一个统一的认证中心。要求的业务有一下几类:单点登录每次只能一个地方登录每个用户只能访问授权的应用登录日志下面将几个主要的数据库表的简化版本记录如下。USERSIDVAREMAILVARPASSWORDVARTOKENVAR此处

2016-12-09 11:19:31 426

空空如也

空空如也

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

TA关注的人

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