- 博客(68)
- 资源 (15)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SSM框架搭建(spring+springmvc+mybatis)
自己配置了一个SSM框架,打算做个小网站,这里把SSM的配置流程详细的写了出来,方便很少接触这个框架的朋友使用,文中各个资源均免费提供!(后续读写分离:https://blog.csdn.net/dwhdome/article/details/83380149)一.创建web项目(eclipse) File-->new-->Dynamic Web Project (这里我们创...
2018-01-23 16:10:38
130442
72
原创 基于Zookeeper实现分布式锁
一、Zookeeper相关概念基于Zookeeper实现分布式锁,主要依赖于它的【瞬时有序节点】,当多个客户端并发创建瞬时有序节点时,会自动为我们生成有序的节点,例如定义子节点名为 order_ ,则生成的节点为 order_00000001,下一个节点为order_00000002,为我们保证有序。利用Zookeeper节点的递增性,可以规定节点编号最小的那个获得锁。当编号最小的那个释放锁后,通知第二个节点获得锁(节点监听机制),以此类推,首尾相连。所以说Zookeeper天然支持分布式锁。..
2020-10-12 16:10:19
271
1
原创 分布式事务基础与解决方案
一 、本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据 库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。数据库事务的四大特性 ACID:A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况。C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。I(Isolation)
2020-09-21 18:12:59
293
原创 Spring深入理解
一、Spring的IOC机制和AOP机制IOC是典型的工厂模式,通过sessionfactory去注入实例。spring ioc的实现过程工程中通过maven引入一些spring框架的依赖,ioc功能 tomcat启动时,启动spring容器 spring ioc,spring容器,根据xml配置,或者是你的注解,去实例化bean对象,根据xml配置或者注解,对bean对象之间的引用关系,去进行依赖注入。spring ioc底层实现的核心技术是反射,他会通过反射的技术,直接根据你的类去自己
2020-08-27 16:19:55
355
原创 Java内存模型
一、Java内存模型Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。二、计算机高速缓存和缓存一致性计算机在高速的 CPU 和相对低速的存储设备之间使用高速缓存,作为内存和处理器之间的缓冲。将运算需要使
2020-08-22 12:23:27
148
原创 Java 并发编程原理解析
一、synchronized关键字的底层原理synchronized 同步语句块的实现,使用的是 monitorenter 和 monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit 指令则指明同步代码块的结束位置。当执行 monitorenter 指令时,线程试图获取锁,也就是获取 monitor ( monitor 对象存在于每个 Java 对象的对象头中,synchronized 锁便是通过这种方式获取锁的,这也是为什么 Java 中
2020-08-19 15:23:03
149
原创 JDK1.8中HashMap优化分析
HashMap底层实现是数组,这里分析下jdk1.8中对HashMap的优化1. hash算法优化 // jdk1.8 HashMap中hash源码 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }源码解读:用 (key的hash值) 与 (key的hash值右移16位)
2020-08-18 17:45:05
1093
原创 链表-如何实现LRU缓存淘汰算法
1.如何分别用链表和数组实现LRU缓冲淘汰策略? 1)什么是缓存? 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。 2)为什么使用缓存?即缓存的特点 缓存的大小是有限的,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?就需要用到缓存淘汰策略。 3)什么是缓存淘汰策略? 指的是当缓存被用满时清理数据的优先顺序。 4)有哪些缓存淘汰策略? 常见的3种包括先进先出策略FIFO(Firs.
2020-08-06 13:53:02
501
原创 SpringBoot导出Excel
刚好有需求,封装了下较为通用的导出工具类代码实现import org.apache.poi.hssf.usermodel.*;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellType;import org.apache.poi.ss.usermodel.Row;import javax.servlet.http.HttpServletResponse;import java.io.I
2020-07-31 18:06:58
220
原创 RabbitMQ基础概念及安装
一、RabbitMQ基础概念RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ使用Erlang语言编写的,并且RabbitMQ是基于AMQP协议的优点:采用Erlang语言作为底层实现:Erlang有着和原生Socket一样的延迟开源、性能优秀,稳定性保障提供可靠性消息投递模式(confirm)、返回模式( return )与SpringAMQP完美的整合、API丰富集群模式丰富,表达式配置,HA模式,镜像队列模型保证数据不丢失
2020-07-30 10:56:59
123
原创 Logstatsh7.x数据同步
目录一、logstatsh下载二、解压使用三、配置使用四、运行一、logstatsh下载对应Elasticsearch版本下载logstatsh,官网下载较慢,推荐 华为开源镜像站 下载,地址如下:https://mirrors.huaweicloud.com/logstash/这里下载版本为:logstash-7.3.2二、解压使用执行如下命令解压:tar -zxvf logstash-7.3.2.tar.gz将解压后的文件移动至 opt 目录下mv logstash-7.3.2 /
2020-07-24 16:36:03
325
1
原创 Elasticsearch集群的搭建
目录一、Elasticsearch集群的概念二、搭建Elasticsearch集群三、Elasticsearch集群脑裂现象探讨一、Elasticsearch集群的概念集群:ES节点:运行的ES实例ES集群:由若干节点组成,这些节点在同一个网络内,cluster-name相同节点:master节点: 集群中的一个节点会被选为master节点,它将负责管理集群范畴的变更,例如创建或删除索引,添加节点到集群或从集群删除节点。master节点无需参与文档层面的变更和搜索,这意味着仅有一个mas
2020-07-24 11:05:59
314
原创 Elasticsearch基础知识及实践应用
一、Elasticsearch 核心概念当前Elasticsearch版本号:7.3.2Elasticsearch关系型数据库ES数据库索引index表文档 document行(记录)字段 fields列分片(shard):shard = primary shard(主分片)把索引库拆分为多份,分别放在不同的节点上,比如有3个节点,3个节点的所有数据内容加在一起是一个完整的索引库。分别保存到三个节点上水平扩展,提高吞吐量。备份(replica):
2020-07-21 17:47:23
364
原创 Java 8 Stream截取List
一、需求说明现有接口需对已注册用户批量注册至极光,极光提供接口仅支持单词500,故使用Stream截取数据库查询结果。二、代码实现 // 查询所有需注册至极光的用户基础信息 List<JiGuangInfo> jiGuangInfos = getJiGuangInfoList(); // 总注册数 int countAll = jiGuangInfos.size(); // 批次注册数 .
2020-07-20 14:09:54
6745
转载 Elasticsearch 镜像下载站
Elasticsearch 镜像下载站 镜像列表使用说明公益服务,请勿恶意使用。 关于验证包的完整性,本站只提供sha文件的下载。 右击链接复制地址。 不支持5.0之前的版本下载。 好用的话还请收藏下本站。7.3.2-no-jdk-windows-x86_64.zip7.3.2-no-jdk-windows-x86_64.zip.sha5127.3.2-no-jdk-darwin-x86_64.tar.gz7.3.2-no-jdk-darwin-x86_64.tar.
2020-07-15 15:27:47
938
原创 Linux下Redis安装
初始环境:yum install gcc-c++解压:tar -zxvf redis-5.0.5.tar.gz进入解压目录安装:make && make install脚本方式配置redis开机自启进入目录:cd/home/software/redis-5.0.5/utils复制脚本文件至init.d:cp redis_init_script /etc/init.d/创建redis工作目录:mkdir -p /usr/local/redis/work核心配置文件.
2020-06-13 16:42:07
130
原创 Keepalived+LVS+Nginx高可用集群负载均衡
一、需具备环境两台Keepalived服务器192.168.3.119192.168.3.122两台nginx服务器192.168.3.120192.168.3.121VIP:192.168.3.200(虚拟IP)二、主节点Keepalived配置ip :192.168.3.119global_defs { # 路由id:当前安装keepalived的节点主机标识符,保证全局唯一 router_id keep_119} vrrp_ins..
2020-06-13 15:43:06
449
原创 搭建LVS-DR模式的负载均衡
一、准备条件准备三台虚拟机,一台为LVS节点,两台为nginx节LVS节点:DIP:192.168.3.119(内网IP,虚拟机静态IP)VIP:192.168.3.200(虚拟IP)Nginx节点:RIP:192.168.3.120(真实IP/内网IP)RIP:192.168.3.121(真实IP/内网IP)即:三台服务器,192.168.3.119、192.168.3.120、192.168.3.121DIP:即director ip ,调度者IPRI..
2020-06-13 12:34:03
834
原创 centos7使用
一、虚拟机安装后配置静态IP执行命令:cd /etc/sysconfig/network-scripts/编辑配:vi ifcfg-enp0s3删除文件内旧数据粘贴如下配置:DEVICE="enp0s3" # 网卡名TYPE="Ethernet" # 网络类型为以太网ONBOOT="yes" # 该网卡是否随网络服务启动BOOTPROTO="static" # 手动分配ipIPADDR=192.168.3.117 # 配置的固定IPNETMASK=255.255
2020-06-12 12:05:49
279
原创 keepalied双主热备
一、keepalied安装下载keepalied后解压,进入解压目录,执行 configure 命令配置安装目录与conf配置文件目录./configure --prefix=/usr/local/keepalived --sysconf=/etcprefix : keepaivied 安装路径sysconf :核心配置文件所在位置,固定,改为其他位置无法启动执行命令后若提示以下内容,则需安装 libnl/libnl-3 依赖安装 libnl/libnl-3 依赖yu..
2020-06-04 11:15:55
466
原创 苹果APP授权登录
一、前值说明苹果App开发完成后支持微信QQ一键登录,审核时要求具备Apple登录以防万一,苹果登录有两种方式,一种是jwt,二是授权码模式,这里采用jwt模式,开发语言为java二、代码实现使用相关技术:jwt+restTemplate+fastjson/** * 解析apple授权token * @param jwt * @return * @throws Exception */ public JSONObject ap.
2020-05-26 14:41:50
793
原创 Nginx基础使用配置
一、nginx在虚拟机下的安装1. 安装依赖# 安装依赖yum install -y gcc-c++ # 安装 gcc 环境yum install -y pcre pcre-devel # 安装 PRCE 库,用于解析正则表达式yum install -y zlib zlib-devel yum install -y openssl openssl-devel # https协议2. 下载nginx建议切换至 /home/software 目录下下载,目录不存在执行:mkdir.
2020-05-22 10:38:04
500
原创 springboot整合swagger文档
1. 普通方式:@Configuration@EnableSwagger2public class Swagger2 { // 配置swagger2核心配置 @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) // 指定api类型为swagger2 .apiInfo(apiInfo()) .
2020-05-21 16:45:29
114
原创 处理mysql数据库中null字段为空字符串
UPDATE user_infoSET head_image= ( CASE WHEN IFNULL ( head_image, '' ) = '' THEN '' ELSE head_image END ) WHERE head_image IS NULL
2020-05-16 10:47:36
763
原创 Java调用极光IM API注册用户并上传头像
梗概:根据极光文档,java注册用户到极光IM分为两个步骤,第一步,调用文件上传接口,上传头像,获取返回的 media_id ,即资源文件id。第二步调动注册接口,带上头像数据即可。代码如下:相关技术栈:RestTemplate,Lombok一、编写上传文件方法上传成功后返回资源id//文件上传极光 public String uploadHead(String u...
2020-05-06 17:19:11
782
原创 shiro通过sessionId获取当前用户登录信息
一、应用场景前后端分离架构,使用shiro做权限管理,登录成功将sessionId返回,访问接口时在请求头携带即可。由于业务需要,现有需要接口不做拦截,在方法内做权限判断,于是将sessionId携带在RequestParam中,进行登录或权限校验。二、实现代码ProfileResult:登录中构造安全数据的实体类import com.guangjutx.entity.au...
2020-04-17 11:19:33
9605
3
原创 SpringBoot+Shiro解决跨域问题
第一步:package com.guangjutx.config;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import ja...
2020-03-21 16:44:56
5388
6
原创 高并发下缓存数据库数据一致性解决方案及实现代码
一、技术栈springboot+mybatis+redis二、实现原理以商品库存为例:更新商品库存的时候,根据数据(如商品ID )的唯一标识,将操作路由之后,发送到一个jvm内部的队列中读取数据(库存)的时候,如果发现数据不在缓存(redis)中,那么将执行重新读取数据+更新缓存的操作,根据唯一标识路由之后,也发送同一个jvm内部的队列中一个队列对应一个工作线程,每个工作线...
2019-12-31 18:03:09
761
原创 Redis企业级架构方案(十)
1、redis的各个知识点redis:持久化、复制(主从架构)、哨兵(高可用,主备切换)、redis cluster(海量数据+横向扩容+高可用/主备切换)持久化:高可用的一部分,在发生redis集群灾难的情况下(比如说部分master+slave全部死掉了),如何快速进行数据恢复,快速实现服务可用,才能实现整个系统的高可用复制:主从架构,master -> slave 复制,读...
2019-12-21 11:42:27
318
原创 redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)(九)
1、fork耗时导致高并发请求延时RDB和AOF的时候,其实会有生成RDB快照,AOF rewrite,耗费磁盘IO的过程,主进程fork子进程fork的时候,子进程是需要拷贝父进程的空间内存页表的,也是会耗费一定的时间的一般来说,如果父进程内存有1个G的数据,那么fork可能会耗费在20ms左右,如果是10G~30G,那么就会耗费20 * 10,甚至20 * 30,也就是几百毫秒的时...
2019-12-20 19:21:00
158
原创 redis cluster节点内部通信机制(八)
一、节点间的内部通信机制1、基础通信原理(1)redis cluster节点间采取gossip协议进行通信跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间不断通信,保持整个集群所有节点的数据是完整的维护集群的元数据用得,集中式,一种叫做gossip集中式:好处在于,元数据的更新和读取,时效性非常好,一旦元数据出现了变更,立即就更新到集中式...
2019-12-20 19:02:20
917
原创 搭建读写分离+高可用+多master的redis cluster集群(七)
1、redis cluster最最基础的一些知识redis cluster: 自动,master+slave复制和读写分离,master+slave高可用和主备切换,支持多个master的hash slot支持数据分布式存储停止之前所有的实例,包括redis主从和哨兵集群2、redis cluster的重要配置cluster-enabled <yes/no>clus...
2019-12-20 16:42:06
354
转载 Redis三节点方式部署哨兵集群(六)
1、哨兵的配置文件sentinel.conf最小的配置每一个哨兵都可以去监控多个maser-slaves的主从架构为不同的项目,部署了多个master-slaves的redis主从集群相同的一套哨兵集群,就可以去监控不同的多个redis主从集群你自己给每个redis主从集群分配一个逻辑的名称sentinel monitor mymaster 127.0.0.1 6379...
2019-12-11 17:25:39
291
转载 Linux目录结构
图示结构:系统启动必须:/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/sys:这是linux2.6内核的一个很大的变化。该目...
2019-12-10 17:20:45
80
原创 Redis哨兵原理 (五)
1、sdown和odown转换机制sdown和odown两种失败状态sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机odown是客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机sdown达成的条件很简单,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds...
2019-12-10 15:51:01
142
转载 Redis哨兵主备切换的数据丢失问题:异步复制、集群脑裂 (四)
1、哨兵的介绍sentinel,中文名是哨兵哨兵是redis集群架构中非常重要的一个组件,主要功能如下(1)集群监控,负责监控redis master和slave进程是否正常工作(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员(3)故障转移,如果master node挂掉了,会自动转移到slave node上(4)配置中心,如果故障转移发生了...
2019-12-09 15:51:11
496
原创 Redis replication和master持久化及redis主从配置 (三)
1、redis replication的核心机制(1)redis采用异步方式复制数据到slave节点,不过redis 2.8开始,slave node会周期性地确认自己每次复制的数据量(2)一个master node是可以配置多个slave node的(3)slave node也可以连接其他的slave node(4)slave node做复制的时候,是不会block master no...
2019-12-06 17:38:31
306
原创 redis企业级数据备份方案 (二)
1、企业级的持久化的配置策略在企业中,RDB的生成策略,用默认的也差不多save 60 10000:如果你希望尽可能确保说,RDB最多丢1分钟的数据,那么尽量就是每隔1分钟都生成一个快照,低峰期,数据量很少,也没必要10000->生成RDB,1000->RDB,这个根据你自己的应用和业务的数据量,你自己去决定AOF一定要打开,fsync,everysecauto-a...
2019-11-29 11:12:28
110
原创 Redis 的 RDB和AOF (一)
1、RDB和AOF两种持久化机制的介绍RDB持久化机制,对redis中的数据执行周期性的持久化AOF机制对每条写入命令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集如果我们想要redis仅仅作为纯内存的缓存来用,那么可以禁止RDB和AOF所有的持久化机制通过RDB或AOF,都可以将redis...
2019-11-29 11:02:35
155
原创 SpringMVC整合百度富文本编辑器
目录一、前言二、官网下载三、整合至spring项目四、自定义图片视频文件等上传一、前言运营那边需要一个强大的富文本编辑器功能,用于推送文章的编辑等等,总而言之需要可以编辑PC端展示效果,或手机端展示。最开始选择的是wangEditor编辑器,因为整合很方便,功能相对简单,做完之后,交付时运营方表示不能满足他们的需求,于是,重新选择了百度的富文本编辑器。虽然很久没人维护更新了...
2019-10-31 16:46:56
690
Mysql DBA 运维
2018-08-30
老男孩运维教程
2018-08-30
传智博客python就业班
2018-07-31
Maven视频教程
2017-11-24
传智博客Struts,spring,hibernate,SSH综合案例
2017-11-24
传智博客shiro视频教程
2017-11-24
传智博客Oracle视频教程
2017-11-24
极客学院2015最新-javaweb视频教程
2017-11-24
传智播客cocos2d-x游戏开发 基础+高级+实战
2017-11-24
Easy UI入门视频教程
2017-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人