- 博客(25)
- 收藏
- 关注
原创 springcloud第二代(Alibaba)
Nacos :注册中心+分布式配置中心注意:服务名称不能有下划线Eureka:注册中心feign(netflix):提供负载均衡服务调用openfeign(Alibaba):提供负载均衡服务调用注意:feign 客户端调用,如果请求参数没加上注解的话,默认采用post请求发送。...
2020-08-15 23:38:41
642
原创 三木之Elasticsearch(6.4.3)
版本(6.4.3)应用场景:搜索引擎,日志收集(分布式ELK+kafka)ELK:ElasticSearch、Logstash 和 Kibana;保证数据一致性问题:因为Elasticsearch可以进行版本控制,为了保证数据再多线程操作下的准确性;采用乐观锁,每次更新数据,_version自增长加1;使用Kibana可视化平台增删查改###创建索引PUT /steadyGET /steadyPUT /steady/user/1{ "name":"n...
2020-07-12 21:00:25
422
原创 三木之秒杀系统解决思路
前端:1.提高带宽2.动静分离,将静态资源放到第三方服务器(七牛云、阿里ONS等)3.将不常变化的页面缓存到nginx(或其他方式做界面缓存)后端(请求过大):1.服务集群2.hystrix限流熔断 / 白名单2.数据库访问压力增大,可使用redis集群、分表分库、MQ异步实现解决3.防止超卖(使用 分布式锁/数据库乐观锁)...
2020-06-29 22:48:54
196
原创 三木之常见幂等性问题
定时任务问题:1.使用xxl-job 分布式任务调度平台(推荐)2.使用redis分布式锁,哪个任务取到锁,便定时任务类加载spring容器;3.根据配置文件启动定时任务,将定时任务类加载spring容器;4.将定时任务和业务分开;...
2020-05-12 23:43:27
221
原创 三木之Redis
Redis 的持久化方式(redis.conf 配置中设置的):aof(增量同步,极力推荐) rdb(全量同步,不推荐)总结:...
2020-05-05 21:03:44
250
原创 三木之分布式问题
Mysql 与 Redis 的数据同步问题--解决办法:1.采用mq订阅mysql binlog 日志文件增量同步到Redis中,整个过程采用最终一致性方案,即不存在强制一致性;2.使用alibaba的canal(技术也是采用MySQL binlog 增量订阅&消费组件)...
2020-05-04 21:22:15
196
原创 三木之并发及高可用
lvs+keepalived+nginx实现高性能负载均衡集群Lvs:可以实现传输层四层负载均衡。Linux虚拟服务器,Linux自带,作用虚拟ip;Lvs抗负载性能比Nginx 强,且更稳定;keepalived:对lvs 实现扩展功能,例如:程序监听(nginx),心跳检测,重启脚本,多次重启失败可配置发送邮件;...
2020-04-26 21:19:00
209
原创 三木之注意事项---springmvc
springmvc注解方式 取代 servlet使用xml方式:springmvc 是基于servlet 实现的tomcat找到/META-INF/services/javax.servlet.ServletContainerInitializer 启动指定类,如图下:springmvc 不使用web.xml 使用注解方式启动流程:即使用SpringServletCon...
2020-04-11 00:19:53
171
原创 三木之注意事项---spring
单例生成方式(静态内部类,枚举单例,可有效使用到并发):静态类部类:初始化单例,可用静态内部类来初始化,解决并发,继承饿汉式和懒汉式的优点,同时解决第一次初始化慢的问题,读写不需要锁单例多例初始化的区别:单例bean默认再启动时就被初始化加载到ioc容器里面,而多例是通过每次获取bean对象时才会被创建初始化注入bean方式:提供方:@Autowired是由or...
2020-04-06 19:12:25
338
原创 三木之注意事项---技术
Tomcat 和 Undertow在高并发系统中 Tomcat 相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。并且 Undertow 新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow 是最佳选择。Sping Boot 中我们既可以使用 Tomcat 作为 HTTP 服务,...
2020-04-01 17:32:30
141
原创 三木之注意事项---java基础
什么是序列化和反序列化?Java序列化是指把Java对象转换为字节序列的过程;Java反序列化是指把字节序列恢复为Java对象的过程;序列化:其实我们的对象不只是存储在内存中,它还需要在传输网络中进行传输,并且保存起来之后下次再加载出来,这时候就需要序列化技术。...
2020-04-01 17:15:34
177
原创 三木之注意事项---数据库
写出高质量 SQL 的 30 条建议https://mp.weixin.qq.com/s?__biz=Mzg2MjEwMjI1Mg==&mid=2247492603&idx=1&sn=6e9542e3d7154d442b81611cf3e64173&chksm=ce0e5478f979dd6e3fa4cb1f69ade3572a29b0bd568c8e2c76e...
2020-03-31 16:26:37
173
原创 三木之设计模式
策略模式(自由切换算法/业务逻辑等):定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的用意是针对一组算法或逻辑,将每一个算法或逻辑封装到具有共同接口的独立的类中,从而使得它们之间可以相互替换。策略模式使得算法或逻辑可以在不影响到客户端的情况下发生变化。说到策略模式就不得不提及OCP(Open Closed Prin...
2020-03-30 21:01:17
264
转载 三木之微服务化之各种超时时间配置效果-Hystrix ribbon
1. 前言(以下的springcloud版本是Dalston.RC1)以下的springcloud版本是Dalston.RC1Springcloud框架中,超时时间的设置通常有三个层面:zuul网关#默认1000zuul.host.socket-timeout-millis=2000#默认2000zuul.host.connect-timeout-millis=4000ri...
2019-11-14 11:07:46
566
转载 三木之springcloud之Feign、ribbon设置超时时间和重试机制的总结
转载:https://blog.youkuaiyun.com/east123321/article/details/82385816一、 Feign设置超时时间使用Feign调用接口分两层,ribbon的调用和hystrix的调用,所以ribbon的超时时间和Hystrix的超时时间的结合就是Feign的超时时间#hystrix的超时时间hystrix: command: ...
2019-06-05 10:17:27
1002
原创 使用Lombok要注意
来源:https://www.jianshu.com/p/9277131c92f0JavaBean的set和get规范:1.第二个字母为大写的属性名要区别对待。如果属性名的第二个字母是大写的,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。2.属性是首字母大写,次字母小写是,你永远都找不到它的 getter/setter 方法...
2019-04-30 17:08:23
1044
转载 创建节约内存的JavaBean
来源:http://u6.gg/swLPg一个Java对象到底有多大?想要精确计算一个Java对象占用的内存,首先要了解Java对象的结构表示。Java对象结构一个Java对象在Heap的表示,可以分为三部分: Object Header Class Pointer Fields 每个普通Java对象在堆(heap)中都有一个头信息(object...
2019-04-30 17:01:59
370
原创 AspectJ的切入点表达式---execution表达式详解注意事项
注意事项:通过类包定义切点在类名模式串中,“.”表示包下的所有类,而“..”表示包、子孙包下的所有类。execution(* com.baobaotao.*(..))匹配com.baobaotao包下所有类的所有方法;execution(* com.baobaotao..*(..))匹 配com.baobaotao包、子孙包下所有类的所有方法,如com.baobaotao....
2019-01-07 14:35:12
586
原创 三木之Rabbit解决分布式事务数据一致性
生产者------到--------消息中间件Rabbit1.生产者数据保存失败,则进行补偿机制。2.生产者可以保存数据,但是保存后执行代码报错,事务进行回滚,消息已提交到消息中间件,解决办法:(1)生产者保存的数据存放到日志或redis里,并且消息是有唯一全局ID的。(2)添加一个消费者补单队列,补单队列与派单队列监听同一个队列,且补单队列先要通过唯一全局ID 查询数据库订单数据...
2018-12-23 21:34:06
3040
原创 三木之消息中间件ActiveMQ
JMS消息可靠机制即为消息签收确认(自动签收,手动签收)和消息事务点对点queue(P2P)ActiveMQ实例(生产者):public class MsgProducer { /** * mq通讯地址 */ private final static String URL = "tcp://localhost:61616"; /** * 队列名称 *...
2018-12-22 16:39:38
2241
原创 三木之SpringIOC原理实现
原理:使用反射机制+XML技术手写SpringiocXML思想:1.读取XML(spring.xml)2.获取元素,并且循环查出元素的id是否等于所需的beanid,查出相等的,则获取该改元素的class地址并创建一个实例代码展示Test.javapublic class Test { public static void main(String[] arg...
2018-12-16 16:54:36
2066
原创 三木之Spring事务注解实现
AOP底层实现原理动态代理(什么是动态代理1.代理对象,不需要实现接口2.代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们指定创建代理对象/目标对象实现的接口的类型)3.动态代理也叫做:JDK代理,接口代理)AOP编程应用场景日志记录,性能统计,安全控制,事务处理,异常处理事务注解实现代码pom.xml<...
2018-12-13 15:27:40
2270
原创 三木之纯手写HashMap
HashMap(基于JDK1.7版本实现)JDK1.7的hashmap 数据+链表(单链表)1.创建Map接口public interface ExtMap<K, V> { // 向集合中插入数据 public V put(K k, V v); // 根据k 从Map集合中查询元素 public V get(K k); // 获取集合元素个数 publ...
2018-12-08 18:57:27
2158
转载 Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1、修饰类 ...
2018-12-02 17:24:18
519
原创 三木之注意事项基础--集合
volatilevolatile的作用:volatile变量进行读时,会有一个主内存到工作内存到拷贝动作,进行写后,会有一个工作内存刷新主内存到动作。(即:即时刷新变量的值,主内存<==>私有内存,保证线程之间可见,但不保证原子性)原子操作类AtomicInteger保证线程安全AtomicInteger atomicInteger = new Atomic...
2018-12-02 17:14:47
2374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人