- 博客(90)
- 资源 (32)
- 收藏
- 关注
原创 mysql explain key_len计算
char和varchar类型key_len计算公式:varchr(N)变长字段且允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)varchr(N)变长字段且不允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)+2(变长字段)char(N)固定字段且允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)+1(NUL
2021-05-19 16:31:28
201
原创 dbcp连接池导致大量线程BLOCKED
一个线上老系统使用的dbcp1.4版本,近一段时间经常出现假死现象,客户端反应大量超时。线上使用jstack获取线程堆栈,可以看到大量线程BLOCKED,"pool-12-thread-5764" prio=10 tid=0x00007f5bac086800 nid=0x6eae waiting for monitor entry [0x00007f5c08bca000] java.lang.Thread.State: BLOCKED (on object monitor) at org.
2021-04-01 17:13:36
1352
转载 多表连接的三种方式详解 hash join、merge join、 nested loop
多表连接的三种方式详解 hash join、merge join、 nested loop在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式。多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join.具体适用哪种类型的连接取决于当前的优化器模式 (ALL_ROWS 和 RULE) 取决于表大小 取决于连接列是否有索引 取决于连接列是否排序下面来介绍三种不同连接工作方式的不同:实验sql假如有10000个城
2020-09-03 16:30:09
704
原创 Mybatis3.2.3 PropertyTokenizer NullPointerException
线上环境,mybatis3.2.3版本,高并发情况下,出现空指针异常,下面是异常明细。 Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: java.lang.NullPointerException...
2019-10-28 17:05:10
1249
原创 jdk1.7下HashMap源码分析
JDK1.7下HashMap源码分析首先,要清楚HashMap的存储结构,HashMap由数组+链表构成,链表是为了解决hash冲突,具体结构如图:接着,我们来看一下new HashMap()做了什么。public HashMap() { //默认capacity=16,loadFactor=0.75 this(DEFAULT_INITIAL_CA...
2019-10-17 18:17:56
205
原创 dubbo挡板的实现
实际开发或者测试过程中,因为服务端的不稳定,希望能在客户端实现挡板功能。下面介绍如何利用dubbo:reference的stub属性来实现挡板功能。首先,看下dubbo官网对stub的描述:stub:服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxServ...
2019-09-27 17:51:04
890
原创 netty+protobuf+websocket实现在线聊天--简易实现
定义proto结构Message.proto内容如下:syntax = "proto3";package com.test.bf.nio.netty.webChat.websocket;option java_outer_classname="MessageProto";message Model { string version = 1;//接口版本号...
2019-09-18 17:32:27
1599
原创 Redis分布式锁
获取锁:setnx,并设置超时时间释放锁:执行lua脚本,先判断key的值是否为传入的value,是的话,再执行delete。 public Boolean getLock(String key, String value, long timeout, TimeUnit timeUnit){ return redisTemplate.opsForValue().setIf...
2019-07-23 20:23:42
116
原创 Redis与Memcache的比较
Redis支持持久化,Memcache不支持;Redis值支持512M,Memcache只有1M;Redis支持5种数据类型,Memcache只支持String;
2019-07-23 20:21:55
146
原创 Spring集成Jedis哨兵模式
一般应用中,哨兵模式可以满足应用场景。当redis存储的数据量太大,单个机器已经无法满足的情况下,需要使用cluster集群。spring-redis.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:x...
2019-07-23 20:21:12
1768
原创 Redis的集群模式
三种方式:主从复制,哨兵模式,集群。主从复制:一主多从,启动时,主节点将数据文件同步给从节点,之后的更新增量复制个从节点;主节点可读可写,从节点只读;主从任一节点宕机,都需要人工干预,主节点宕机,无法写,从节点宕机影响读。哨兵模式:基于主从复制,哨兵进程用于监控redis集群中主从节点的状态,当主节点发生故障时,故障转移,哨兵进程重新设置主节点,当从节点发生故障时,也能及时移除从节点。哨兵...
2019-07-23 20:17:35
133
原创 Redis持久化
分为RDB持久化和AOF持久化。RDB持久化是通过快照按次,当符合一定的条件时,redis会自动将内存中的所有数据以二进制方式生成一份副本把那个存储在硬盘上。优点:文件紧凑,体积小。恢复速度快。缺点:RDB是快照,无法完整的保存所有数据;数据集大时,生成耗时;RDB是特定格式,可读性差。AOF持久化是通过将每一条命令追加到磁盘文件中。优点:数据更完整。RDB持久...
2019-07-23 20:16:52
144
转载 Redis配置
Redis配置文件在安装目录下的redis.conf文件里。可以通过config获取或者设置配置项。获取所有配置项:config get *获取某个配置项:config get 配置项名称设置某个配置项:config set配置项名称 配置项值Redis.conf配置说明:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程...
2019-07-23 20:15:45
197
原创 Redis支持五种数据类型
string字符串、hash哈希、list列表、set集合、zset有序集合。字符串:一个键对应一个值,一个键值最大存储512M。是二进制安全的,可以存放任何数据,比如图片或者序列化的对象。哈希:键值对集合。每个hash可以存储40多亿的键值对。列表:字符串的有序集合。每个列表可以存储40多亿个元素。集合:字符串无序,且不可重复的集合。每个集合可以存储40多亿个元素。有序集合:...
2019-07-23 20:14:14
165
原创 Windows安装redis
安装命令:redis-server.exe --service-install redis.windows.conf --loglevel verbose启动服务命令:redis-server.exe --service-start关闭服务命令:redis-server.exe --service-stop客户端连接:redis-cli.exe -h 127.0.0.1 -p 63...
2019-07-23 20:12:47
111
原创 Netty服务端对客户端的心跳监控
在特定场景下,Netty服务端也需要去检查客户端连接的使用情况,当超过配置的时间没有收到客户端的信息时,服务端应该主动关闭客户端的连接。首先,在pipeline中添加IdleStateHandler,到了Constants.READ_IDLE_TIME时间,客户端还没有发送消息给客户端,会触发userEventTriggered事件。pipeline.addLast(new IdleSt...
2019-06-11 17:02:54
1449
2
原创 RabbitMq工作模式和场景,RabbitMq消息可靠性保证
介绍RabbitMQ基于AMQP协议,开源,实现服务间的异步消息通讯和服务间的解耦。4种工作模式:Work模式订阅/发布模式路由模式主题模式(通配符模式)Work模式:用于抢红包、秒杀等应用场景。一个队列,多个消费者,但一条消息只会由一个消费者消费。这种模式又分轮询分发和公平分发。轮询分发就是消息依次平均的发送给每个消费者,公平分发就是消息按照消费者空闲程度...
2019-03-12 17:35:58
826
原创 线上系统假死、内存溢出分析常用命令
查询jvm进程占用的cpu,内存pidstat –p 进程号或者用命令:top –p 进程号 示例:top –p 10461说明:系统运行时间和平均负载:top - 11:25:12(当前时间) up 28 days, 42 min(系统已运行时间), 13 users(当前登录用户数), load average: 0.98, 1.00, 1.02(5分钟,10分...
2019-01-30 16:18:18
1476
原创 JVM结构
Openjdk和hotspotOpenjdk是oracle/sun公司推出的开源jdk,去掉了很多非开源的实现。hotspot也是oracle/sun公司推出的jdk,但openjdk属于开源社区,例如java面板等功能无法正常使用。 2. Jvm的组成类加载子系统:负责从文件系统或者网络中加载class信息,加载的class信息存放在方法区。除了class信息,方法区还会存放...
2019-01-30 16:13:29
121
原创 hibernate-validator应用
添加依赖包 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.10.Final</version>
2019-01-29 10:01:23
348
原创 布隆过滤器
前言:布隆过滤器是多哈希函数映射的快速查找算法。在判断存在性,而不要求100%准确性的场景下,布隆过滤器是非常棒的算法。假设需要的位数是m,hash函数个数是k,它的空间复杂度为O(m),时间复杂度为O(k)。 原理:布隆过滤器是一种多哈希函数映射的快速查找算法。它可以判断出某个元素肯定不在集合里或者可能在集合里,即它不会漏报,但可能会误报。通常应用在一些需要快速判断某个元素是否属...
2019-01-28 10:05:24
216
转载 Mysql开发规范
摘自《高可用架构》 大家应该都很熟悉MySQL 数据库,而且随着前几年的阿里的去IOE 、MySQL 逐渐引起更多人的重视。1. MySQL 历史• 1979 年, Monty Widenius 写了最初的版本, 1996 年发布l.O o• 1995-2000 年, MySQLAB 成立,引入BDB 。• 2000 年4 月, 集成My ISAM 和replication...
2019-01-28 09:44:09
269
原创 Apache+Tomcat配置
下载Apachehttp://mirrors.cnnic.cn/apache//httpd/下载Apache我需要下载win7\32位的apache,在http://mirrors.cnnic.cn/apache/httpd/binaries/win32/页,我们可以看到说明:不提供二进制的软件,只有源码,如果你不能编译源码,可以从其他网站获取。打开“ApacheHaus”超链接,访...
2019-01-08 19:54:26
1830
1
原创 七. 使用Docker部署Tomcat项目
查看镜像docker images启动tomcatdocker run -p 8081:8080 docker.io/tomcat # 若端口被占用,可以指定容器和主机的映射端口 前者是外围访问端口:后者是容器内部端口启动后可以通过http://localhost:8081/访问部署webapp 上传war包到容器 以挂载的方式启动tomcat sudo dock...
2019-01-08 19:18:18
242
原创 五. 数据管理
数据卷挂载本机的一个目录作为容器的数据卷$ sudo docker run -d -v /home/jcy/tomcat/webapps:/usr/local/tomcat/webapps/ tomcat数据卷容器:提供容器间数据共享。首先,创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/home/jcy/dbdata$ sudo docker run -it -v...
2019-01-08 19:14:58
152
原创 四.仓库
仓库是集中存放镜像的地方。注册服务器是存放仓库的具体服务器,每个服务器可以有多个仓库,每个仓库下有多个镜像。仓库可以理解为某个项目。例如:dl.dockerpool.com/ubuntu,dl.dockerpool.com是注册服务器地址,ubuntu是仓库名。创建和使用私有仓库$ sudo docker run -d -p 5000:5000 registry这将从服务器上下载和启...
2019-01-08 19:12:02
164
原创 三.容器
容器是提供应用服务的组件。Docker技术入门与实战作者建议在生产环境中,容器前段引入HA(高可靠性机制),例如:HAProxy工具来代理容器访问,在容器出现故障时,切换到其他容器,还可以自动重启故障容器。创建容器$ sudo docker create -it tomcat启动容器$ sudo docker run tomcat后台守护线程启动$ sudo docker ru...
2019-01-08 19:11:16
148
原创 二. 镜像
镜像是Docker运行容器的前提。 修改默认镜像仓库地址:https://ieevee.com/tech/2016/09/28/docker-mirror.html我在测试环境,使用的是ustc的镜像,速度不怎么样,不太好用。$vi /usr/lib/systemd/system/docker.service修改ExecStart,增加--registry-mirror=...
2019-01-08 19:10:14
370
原创 一. Docker安装
我的虚拟机版本是ubuntu16.04方法1. 使用的是ubuntu软件源中自带的Docker包安装的。使用此方式安装的docker版本过低。① $ sudo apt-get update执行时出现如下错误:Reading package lists... DoneE: Problem executing scripts APT::Update::Post-Invoke-S...
2019-01-08 19:02:02
225
原创 db2事务隔离级别
Jdbc事务隔离级别 Jdbc隔离级别 数据库隔离级别 数据访问情况 TRANSACTION_READ_UNCOMMITTED(未提交读)Uncommitted Read ur 脏读,在没有提交数据的时候能够读到已经更新的数据 TRANSACTION_READ_C...
2018-12-14 16:37:42
5716
原创 UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only例如:class ServiceA{ @Transactional public methodA...
2018-12-14 16:34:56
1593
原创 spring 类中方法互相调用 事务失效
同一个类中的方法互相调用,导致配置的事务失效。例如:class ServiceA {@Transactional(propagation=Propagation.REQUIRED)public methodA(){ this.methodB();}@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly...
2018-12-14 15:15:19
1624
转载 jsoup api 中文版
转至:http://www.open-open.com/jsoup/Jsoup实现网页抓取和解析入门1. 解析和遍历一个html文档String html = "<html><head><title>Firstparse</title></head>" + "<body>&am
2018-10-25 10:36:47
1808
1
原创 spring 根据包名过滤类 bean
1.根据包名取得BeanDefinition主要的工具类:ClassPathScanningCandidateComponentProvider ,示例如下:ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);//scann...
2018-10-25 10:35:53
463
原创 mybatis多参数传递
在实际项目中我们需要hibernate转成mybatis,为了减少影响范围,dao接口层不变,我们只改dao实现层。在整改中,遇到了这样的接口:public Object getObject(Class clazz, Serializable id) mapper文件中如下实现:<select id="getObject" resultMap="BaseResultMap"&...
2018-10-25 10:33:58
141
原创 mybatis查询结果中去掉前后空格
在mybatis的configure文件中增加typehandler:<configuration><typeHandlers> <typeHandler handler="com.test.framework.utils.MyStringTypeHandler" javaType="java.lang.String" jdbcType="C...
2018-10-25 10:33:10
14412
原创 mybatis实现hibernate的saveOrUpdate
mapper配置文件中配置sql:<insert id="saveOrUpdateObject" parameterType="TestCardInf"> <selectKey keyProperty="count" resultType="int" order="BEFORE"> select count(1
2018-10-25 10:32:19
463
原创 netty粘包断包处理
最近在研究netty组件。Netty对nio的封装极大的方便了我们的业务开发,我们不再需要使用jdk提供的繁琐的nio进行编程,并且netty的扩展性强,健壮性强,不仅是对nio的bug的处理,还是对tcp粘包、断包的处理都是非常出色的。首先,先看看netty的服务端和客户端的demo。public class HelloServer { public void run() ...
2018-09-06 17:29:27
2352
原创 对象属性过多引起的内存开销大的问题
对大表取数据,应该加上需要使用的字段名。如果数据量很大,从数据库查数据,然后映射到实体会耗费大量的时间。对于需要缓存到内存中的实体,字段也需要按实际情况设置,不需要的字段应该删除。比如:public class A implements Serializable{ private String name; private String sex;private Str...
2018-08-31 15:53:21
597
nexus-3.18.1-01-win64.rar
2019-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人