- 博客(35)
- 收藏
- 关注
转载 记一次排查mysql数据库连接未关闭问题的过程
在一些项目中由于一些特殊原因仍然保留着显示的获取数据库连接(Connection)、提交事务、回滚事务、关闭连接等操作;其中关闭连接是比较容易疏忽又比较难在前期发现的问题。我是如何排查连接未关闭的问题的? 首先还是提出3W:1.What? 数据库连接是应用服务器和数据库之间建立的tcp连接,在获取连接并进行操作后需要手动关闭以释放资源,就像是文件流一样,资源是有限的。2...
2019-09-02 17:56:00
1287
转载 使用Zookeeper实现分布式锁
利用Zookeeper临时节点(客户端异常断开连接后临时节点自动移除)或者Redis SETNX(set if not exists)(设置ttl)可以实现分布式锁,这里先利用zk实现一个1.启动zk2.代码实现 2.1 Maven引入zk & zk client 2.2 代码和注释import org.I0Itec.zkcl...
2019-07-19 09:52:00
141
转载 linux中安装docker
uname -ryum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...
2019-04-02 15:08:00
139
转载 Docker Windows
docker windows 操作和linux上稍有些差异,主要是在启动容器时的命令参数 和 端口映射。1.下载docker-toolboxhttp://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/2.安装我本机已有virtual box和git,这里无需勾选安装完成后,会出现...
2019-04-02 15:00:00
129
转载 MongoDB集群-主从复制(副本集)、failover
1.概念 主从复制的目的:数据冗余、备份、读写分离 主从方式:一主一从(不推荐,只能实现复制,主节点挂掉且未重新启动的时候,无法提升从节点为master),一主一从一裁判,一主多从 复制方式:主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。 复制/同步的是操作日志而...
2019-02-27 10:51:00
177
转载 MongoDB概念、安装和配置
1.概念分布式文档存储,高读写吞吐量,自动灾备,可伸缩。不需要遵守严格的数据schema意味着mongodb更灵活、更适合快速开发。2.安装 2.1 yum 安装 配置yum源 = [mongodb-org-3.4] name=MongoDB?Repository bas...
2019-02-26 16:21:00
94
转载 私有框架简介
概述如下面的架构图所示:大额贷款架构主要分为三层,前端展示和后端服务分离,可单独部署;后端开放restful接口,前端通过http方式调用后端接口,同时使用jwt方式实现无状态的鉴权。主要组件 后端 Spring Boot 起步依赖 习惯大于配置 内嵌web容器 Tomcat, Jetty, U...
2018-12-19 16:17:00
112
转载 spring-boot集成8:集成shiro,jwt
Shrio是一个轻量级的,基于AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。JWT(JSON Web Token)是目前最流行的跨域身份验证解决方案,具有加密和自包含的特性。1.maven配置<!-- shiro --> <dependency>...
2018-12-14 16:27:00
147
转载 spring-boot集成6:集成redis实现字典缓存功能
Why redis?redis是基于内存的key-value系统,可以用作缓存中间件或者消息中间件,spring-boot提供了方便的方式和redis集成。1.maven依赖<!--redis--> <dependency> <groupId>org.springframework.bo...
2018-11-21 16:13:00
667
转载 spring-boot集成5:集成jrebel实现热加载
Why Jrebel?使用jrebel可以方便的实现spring-boot项目的热部署,直接reload更改的class,无需重启,提升开发效率。1.安装jrebel插件在idea中安装jrebel插件,安装完成后按提示重启idea2.激活jrebel激活方式参考 https://www.cnblogs.com/a8457013/p/7866625.h...
2018-11-21 14:21:00
123
转载 spring-boot集成4:集成mybatis,druid和tk.mybatis
Why mybatis?mybatis提供了ORM功能,相比于其他ORM框架,其需要编写更多的sql,也给了我们编写特殊/复杂sql和进行sql优化的机会。Why druid?Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。 在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控, 可以很好的监控DB池连接和SQL的...
2018-11-21 13:52:00
229
转载 spring-boot集成2:集成lombok
Why lombok?lombok可以帮我们从实体类的getter、setter、constructor和toString等样板代码中解脱出来,使用lombok可以开发出更优雅的代码1.maven依赖<!--lombok--> <dependency> <groupId>org.proj...
2018-11-20 21:09:00
73
转载 spring-boot集成3:集成swagger
Why swagger?使用swagger让你从编写接口文档的无聊工作中解脱出来1.Maven依赖<!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId...
2018-11-20 21:09:00
107
转载 spring-boot集成1:起步
Why spring-boot?1. 创建独立的Spring应用程序2. 嵌入的Tomcat,Jetty和Undertow,无需部署WAR文件3. 通过starter依赖,简化Maven配置4. 自动配置Spring,以习惯大于配置的约定,减少样板配置5. 提供生产就绪型功能,如指标,健康检查和外部配置6. 绝对没有代码生成并且对XML也没有配置要求...
2018-11-20 21:08:00
103
转载 策略模式实现多种支付方式
使用策略模式优雅的实现多种支付方式(支付宝、微信),或者多种支付场景(订单、维修金)的业务,且方便扩展。下例是使用注解配合反射方式,扫描到所有的具体的支付策略并放到map集合中,然后根据前端传递来的支付类型参数,选择对应的支付策略,完成支付过程。如上图:PayStrategy是支付策略接口;OrderPay(订单支付),RepairPay(维修金支付)是具体的支...
2018-11-14 14:33:00
1778
转载 自定义切面实现记录系统操作日志
通过自定义spring aspect配合着注解的方式实现记录系统操作日志,代码侵入性低1.定义module注解,代表模块package com.yc.platform.admin.web.common.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Ret...
2018-10-29 14:08:00
435
转载 Spring Kafka
spring和kafka结合使用官方文档https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-messaging.html#boot-features-amqp全量配置https://docs.spring.io/spring-boot/docs/current/re...
2018-10-29 13:47:00
93
转载 使用Keepalived实现Nginx高可用
Keepalived是一个路由软件,可以提供linux系统和linux系统上的组件的负载均衡和高可用,高可用基于VRRP(Virtual Router Redundancy Protocol,虚ip)实现1.准备两台服务器node1 192.168.0.240node2 192.168.0.2392.安装nginx和keepalived...
2018-10-26 13:17:00
102
转载 Centos7桥接网络、DNS、时间同步配置
Centos配置桥接网络、DNS服务和时间同步1.配置桥接网络2.配置虚拟机网卡,采用的是静态ip方式重启network服务3.配置dns4.关闭防火墙和selinux5.ping外网域名,已经可以了6.配置时间同步安装ntp服务启用ntpd服务启动ntpd服务设置时区为上...
2018-10-26 10:59:00
176
转载 Mysql查询优化
性能涉及的层面很多,但是在操作层面,主要有表结构设计优化、索引优化和查询优化查询的生命周期大致可以分为,从客户端、到服务端、在服务器上解析、生成执行计划、执行、返回结果给客户端sql执行流程 具体优化技巧1.消除外连接2.消除子查询尽量用join代替子查询,虽说mysql查询优化器会进行优化,但是我们...
2018-10-26 09:58:00
115
转载 自定义Spring-Boot @Enable注解
Spring-Boot中有很多Enable开头的注解,通过添加注解来开启一项功能,如其原理是什么?如何开发自己的Enable注解?1.原理以@EnableScheduling为例,查看其源码,发现添加了一个@Import注解继续查看@Import注解源码,发现其是由Spring提供的,用来导入配置类的,在配置类中定义的Bean(@Bean),可通过@Autowir...
2018-10-25 09:50:00
275
转载 Mysql事务特性
事务概念 事务可由一条sql或者一组sql组成。事务是访问并更新数据库中各种数据项的一个程序执行单元。 事务会把数据库从一种一致状态转换为另一种一致状态。在数据提交工作时,可以确保要么所有修改都已经保存了,要么所有修改都不保存。 事务需要满足ACID特性(不同厂商、mysql不同的存储引擎并非严格遵守ACID)。ACID特性 原子性(atomicity) ...
2018-10-23 17:02:00
119
转载 spring cloud依赖服务调用优化
1.请求缓存优点:注解方式实现:设置缓存key:如果可以确认,对要缓存的数据的操作,主要是写操作都只在feign调用中完成且读多写少,则可以使用此方式;如果在其他地方还有对数据的写操作,则可能会导致数据不一致;如果写多读少,则不会提高性能。2.请求合并优点:注解方式:注意:可以设置请求合并的s...
2018-10-23 15:47:00
278
转载 观察者模式
概述如果一个对象A的行为依赖另一个对象B的状态,我们可以有两种实现方式:一种是对象A轮询对象B的状态,根据轮询结果决定自己的行为;另一种是对象B在自身状态发生改变时,主动通知对象A。不难看出,第二种凡是会比第一种方式效率高,观察者模式即采用第二种方式,观察者模式可以用于事件监听、通知发布等场合。可以确保观察者在不使用轮询监控的情况下,及时收到相关消息和事件。类图...
2018-09-14 13:28:00
145
转载 Netty入门实例
通过代码和代码中的详细注释,可以对Netty有个入门的了解TimeServer(初始化服务,绑定端口,指定IO handler) 1 import io.netty.bootstrap.ServerBootstrap; 2 import io.netty.channel.ChannelFuture; 3 import io.netty.channel.ChannelI...
2018-09-14 12:31:00
137
转载 FileChannel原理
官方对Channel的解释(一个用于输入/输出操作的连接。通道表示对实体的开放连接,如硬件设备、文件、网络套接字或能够执行一个或多个不同的输入/输出操作的程序组件,例如读取或写入。)Thanking In Java中的描述Channel是对I/O操作的封装。FileChannel配合着ByteBuffer,将读写的数据缓存到内存中,然后以批量/缓存...
2018-09-13 16:48:00
183
转载 Flume HA
flume提供fail over和load balance功能1.添加collector配置(配置两个collector)# Name the components on this agents1.sources = r1s1.sinks = k1s1.channels = c1# Describe/configure the sources1.sources.r1.type...
2018-09-13 12:16:00
143
转载 Flume采集日志
角色Source 数据来源 (exec, kafka, http…)Channel 数据通道 (memory,file,jdbc)Sink 数据目的地 (kafka,hdfs,es…) Agent 代理,负责从source中采集数据,发送给collectorCollector 收集者,收集agent发来的数据上传到outer storage,可以设置load balanc...
2018-09-13 12:15:00
157
转载 Kafka集群搭建和配置
Kafka配置优化https://www.jianshu.com/p/f62099d174d91.安装&配置下载tar包解压后即可使用修改配置文件将server.properties复制和修改为三个配置文件(为启动3个kafka服务做准备)设置broker.id,集群中各节点的标识,要求不重复绑定端口和...
2018-09-13 12:11:00
124
转载 Centos7安装kubernetes
Kubernetes官网提供的安装指引使用的google的yum源,正常情况下无法使用,这里使用阿里的yum源来安装。参考这2篇博客https://blog.myzony.com/centos-7-4-an-zhuang-k8s-v1-11-0-ji-qun-suo-yu-dao-de-wen-ti/https://www.cnblogs.com/Leo_wl/p/85119...
2018-09-13 12:07:00
76
转载 Java8新特性
准备先看2个例子1.筛选集合中年龄大于20的用户的用户名列表,并输出1 // 初始化集合2 List<User> users = Arrays.asList(3 new User("周一", 20),4 new User("吴二", 25),5 ...
2018-09-12 16:24:00
118
转载 Java代码优化
用到的时候再定义(懒加载)如上图中,获取(定义)isEnable的值的代码应该紧跟着放在判断(使用)isEnable的代码块的上面。一者如果smsRecordList为空,则程序直接返回,isEnable不会被使用,白白的浪费了部分栈空间(内存);二者避免提前占用栈空间,内存占用过高会影响性能。延迟操作数据库如上图中,第二块标记的代码应该放在第一块标...
2018-09-12 10:47:00
105
转载 Java线程安全
Java线程安全使用多线程可以在一定程度上提高程序性能(并非绝对),但随之而来的线程安全问题却无法忽略,了解线程安全的基本概念和常用解决方式,以及jdk提供的并发包,会帮助日常工作中更好的发现和处理线程安全问题。并发和并行并行指的是多个线程或者进程在同一时刻同时执行;并发则是由cpu调度,交替执行。单核cpu一个时刻只能执行一条指令,在单核cpu上的多线程是由cpu调...
2018-09-11 16:04:00
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人