- 博客(30)
- 收藏
- 关注
原创 如何设计一个高并发系统?
如何设计一个高并发系统?(1)系统拆分,将一个系统拆分为多个子系统,用dubbo来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,不也可以抗高并发么。(2)缓存,必须得用缓存。大部分的高并发场景,都是读多写少,那你完全可以在数据库和缓存里都写一份,然后读的时候大量走缓存不就得了。毕竟人家redis轻轻松松单机几万的并发啊。没问题的。所以你可以考虑考虑你的项目里,那些承载主要请求...
2019-08-01 19:49:41
1244
原创 Spring Data JPA 进阶之Specification动态查询
1 Specifications动态查询有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor接口查询。相比JPQL,其优势是类型安全,更加的面向对象。import java.util.List;import org.springframework.data.domai...
2019-08-01 12:51:37
3636
1
原创 redis怎么才能做到高可用?哨兵多核心底层解析
在主从模式下,开启哨兵模式1、哨兵的介绍sentinal,中文名是哨兵哨兵是redis集群架构中非常重要的一个组件,主要功能如下(1)集群监控,负责监控redis master和slave进程是否正常工作(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员(3)故障转移,如果master node挂掉了,会自动转移到slave node上(4)配置中...
2019-07-31 20:08:41
165
原创 Spring整合常用配置文件集合
Spring整合JPA?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.sp...
2019-07-31 12:02:19
676
原创 常用依赖集合
Spring Data JPA <properties> <spring.version>5.0.2.RELEASE</spring.version> <hibernate.version>5.0.10.Final</hibernate.version> <slf4j.vers...
2019-07-31 12:00:13
448
原创 Spring Data JPA 快速入门看这一篇就够了
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工...
2019-07-31 10:52:42
778
原创 如何保证Redis的高并发和高可用?redis的主从复制原理能介绍一下么?
就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用redis高并发、高可用、缓存一致性redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS。redis高并发的同时...
2019-07-31 01:02:20
575
原创 redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?
(1)设置过期时间我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时?10分钟?这个很有用,我们自己可以指定缓存到期就失效。如果假设你设置一个一批key只能存活1个小时,那么接下来1小时后,redis是怎么对这批key进行删除的?答案是:定期删除+惰性删除所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期...
2019-07-30 21:24:18
352
原创 redis基础知识
redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?(1)redis和memcached有啥区别这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧1)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更...
2019-07-30 20:50:16
157
原创 如何解决消息队列的延时以及过期失效问题?
有几百万消息持续积压几小时,怎么解决?如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,怎么解决?如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概1小时的时间才能恢复过来一般这个时候,只能操作临时紧急扩容了,具体操作步骤和思路如下:1)先修复consumer的问题,确保其恢复消费速度,然后将现有cnosumer都停掉2...
2019-07-30 19:45:15
1889
2
原创 JPA 快速入门Demo
1 JPA的优势标准化JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。容器级特性的支持JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。简单...
2019-07-30 15:40:58
2148
原创 SpringBoot Hello World快速入门看着一篇就够了
1, SpringBoot的特点为基于Spring的开发提供更快的入门体验开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式2, SpringBoot的核心功能起步依赖起...
2019-07-29 16:41:58
245
原创 消息中间件如何保证消息的顺序性?
1 rabbitmq1.1 rabbitmq顺序会错乱的场景一个queue,但是有多个consumer1.2 如何保证消息的顺序性需要保证消息消费顺序性的数据,写到一个queue中,并只让一个消费者进行消费2 kafka2.1 kafka顺序会错乱的场景kafka本身是不会发生消息顺序错乱kafka一个patition只有一个消费者消费加了同一个key的消息,只会进...
2019-07-28 22:15:28
1180
原创 如何保证消息的可靠性传输(如何处理消息丢失的问题)?
mq消息丢失一般分为两种要么是mq自己弄丢了要么是我们消费的时候弄丢了。咱们从rabbitmq和kafka分别来分析一下吧(1)rabbitmqrabbitmq这种mq,一般来说都是承载公司的核心业务的,数据是绝对不能弄丢的1)生产者弄丢了数据生产者将数据发送到rabbitmq的时候,可能数据就在半路给搞丢了,因为网络啥的问题,都有可能。1.1 开启RabbitMQ的事物此...
2019-07-28 11:49:38
292
原创 如何保证消息队列的高可用及消息不被重复消费?
在实际生产环境中,MQ承担着消息传递的作用,如果MQ意外挂掉了,整个系统就无法正常工作了,那么消息队列的高可用性就非常重要了。本文主要讲RabbitMQ和kafka两个消息队列的高可用性分析。一、 RabbitMQ的高可用(非分布式)1.1 rabbitmq有三种模式:单机模式普通集群模式镜像集群模式1.1.1 单机模式基本上是做Demo使用1.1.2 普通集群模式多台服...
2019-07-28 10:43:23
3513
3
原创 消息中间件优缺点及如何抉择
关于消息中间件(ActiveMQ,RabbitMQ,RocketMQ,kafka)的入门Demo,本篇不再叙述,主要讲解下面两个问题点:1. 为什么使用消息队列?2. 消息队列有什么优点和缺点?1. 为什么使用消息队列?使用消息队列是要更觉业务需求的场景二决定的!先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰1.1 解耦画个图来说明一下,A...
2019-07-28 01:57:01
917
转载 消息中间件-----RocketMQ入门Demo
消息中间件三部曲:开启服务器配置文件发送与接受1, 生产者的Rabbitmq.xml配置0 依赖 <!-- RocketMQ --> <dependency> <groupId>com.alibaba.rocketmq</groupId> &l...
2019-07-27 19:57:39
347
原创 消息中间件-----Rabbitmq入门Demo
消息中间件三部曲:开启服务器配置文件发送与接受1, 生产者的Rabbitmq.xml配置1.1 配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3....
2019-07-27 19:36:20
186
原创 消息中间件-----ActiveMQ入门Demo
JMS消息服务应用程序结构支持两种模型:1. 点对点模型2. 发布者/订阅者模型JMS消息格式类型值MapMessagekey-value键值对TextMessage字符串对象ObjcetMessage一个序列化的Java对象ByteMessage一个未解释字节的数据流StreamMessageJava原始值的数据流Demo依赖...
2019-07-27 19:12:44
232
原创 Java-----编码注意事项
编码注意事项1.尽量的将类设置为final修饰,也就是指定该类不可以派生如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的 final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50% 。2、 尽量重用对象。特别是String 对象的使用中,出现字符串连接情况时应用StringBuffer 代替。由于系统不仅要花时间生...
2019-07-27 13:25:56
300
原创 MYSQL-----SQL语句优化记录
1.不使用子查询例:SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name=’hechunyang’);例:SELECT * FROM t1 WHERE id=1 在mysql5.5版本中在使用子查询的时候,它先执行外面的查询语句,然后在执行内部的查询,最后根据内部查询和外部查询的结果进行匹配筛选得到查询结果,这种方式大大降低了查询的性...
2019-07-27 13:14:46
202
原创 JVM-----常见问题
1)你能保证 GC 执行吗?(答案)不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行。2)怎么获取 Java 程序使用的内存?堆使用的百分比?可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及最大堆内存。通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。 Runtime.freeMe...
2019-07-27 13:08:16
191
原创 JVM-----调优指令
1、调优指令设置JVM内存的参数有四个:-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn Java Heap Young区大小,不熟悉最好保留默认值;-Xss 每个线程的...
2019-07-27 13:05:38
323
原创 JVM-----GC垃圾回收机制及垃圾收集器
垃圾收集器一般必须完成两件事:检测出垃圾;回收垃圾1 垃圾回收算法:1.1、标记-清除算法(Mark-Sweep)“标记-清除”算法是最基础的算法,分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。它主要由两个缺点:一个是效率问题,标记和清除过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导...
2019-07-27 12:47:10
167
原创 JVM-----内存分区、分配
标题JVM内存分区内存分区模型图1.1 JVM栈JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,栈中存的是基本数据类型和堆中对象的引用(java中定义的八种基本类 型:boolean、char、byte、short、int、long、float、double),由于JVM栈是线程私有的,因此其在内存分配上非常高效,并且当线程运行完毕后,这些内存也就被自动回收。1.2 Hea...
2019-07-27 12:41:53
197
原创 JVM-----IDEA中查看JVM状态
怎么获取 Java 程序使用的内存?堆使用的百分比?可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及最大堆内存。通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。 Runtime.freeMemory() 方法返回剩余空间的字节数,Runtime.totalMemory() 方法总内存的字节数,Runtime.maxMemory() 返回最大内...
2019-07-27 12:37:50
9447
原创 Freemarker常用基本命令
freemarker包括下面几个基本命令if,else,elseif指令switch,case,default,break指令list,break指令include指令import 指令noparse指令compress指令escape,noescape指令assign 指令global 指令local 指令setting 指令用户自定义指令(<@...>)...
2019-07-27 12:12:54
3556
原创 MySQL数据库使用规范
MySQL数据库常用规范记录一、基础规范1、必须使用InnoDB存储引擎1)5.5版本开始mysql默认存储引擎就是InnoDB,5.7版本开始,系统表都放弃MyISAM了。目前公司使用的有5.6、5.7两个大版本。2)支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高。例如:CREATE TABLE tb (字段列表) ENGINE=INNODB DEFAUL...
2019-07-27 11:53:27
742
原创 spring boot整合activeMQ
spring boot整合activeMQspring boot整合MQ以后,对于消息的发送和接收操作更加便捷。本文将通过四个案例,分别讲解spring boot整合MQ:spring boot整合MQ发送queue消息spring boot整合MQ发送topic消息spring boot整合MQ以后如何让queue和topic消息共存spring boot整合MQ以后topic消息如...
2019-07-27 11:31:18
389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人