成长专栏
乔志勇笔记
java学习新天地
展开
-
freemarker加载模板目录的方法
https://blog.csdn.net/erpenggg/article/details/81216386Freemarker提供了3种加载模板目录的方法。 它使用Configuration类加载模板。三种方法分别是:public void setClassForTemplateLoading(Class clazz, String pathPrefix);public voi...转载 2019-06-28 19:46:46 · 1099 阅读 · 0 评论 -
如何合理的设计代码分层,论代码分层的设计之道
https://mp.weixin.qq.com/s?__biz=MzA5NDg3MjAwMQ==&mid=2457102792&idx=1&sn=ab9c0437873bbcd8e0c4fd04b0b30f9d&chksm=87c8c166b0bf48709949841cd300c6a692eb6269c3ee23ab08a77a22f5c2bd37e71f3b6...转载 2019-03-12 11:17:21 · 1115 阅读 · 0 评论 -
如何健壮你的后端服务
https://mp.weixin.qq.com/s?__biz=MzA5NDg3MjAwMQ==&mid=2457102682&idx=1&sn=6dfe209194c98ec9f1bc96ea1414a2db&chksm=87c8c1f4b0bf48e2287b58ed2bc24e6bc9af239b0a6d67fa50a32bb7afa1a21b5ab3f45...转载 2019-03-12 10:56:43 · 242 阅读 · 0 评论 -
最终一致性 可靠消息投递的方案
杭州-后端-梁桂钊]分布式事务可以分成强一致性和最终一致性两种方案。对于强一致性,可以了解下「二阶段提交协议」、「三阶段提交协议」。但是,强一致性存在一些问题,因此生产环境中更多的是利用最终一致性的方案。对于,TCC 和 saga 可以查阅一下相关材料。这里,想分享一下可靠消息投递的方案。消息队列发生消息后,可能消费者宕机而无法消费。绝大多数消息中间件对于这种情况,例如...转载 2019-03-19 18:02:16 · 893 阅读 · 0 评论 -
Java面试官最喜欢问的关键字-volatile
https://mp.weixin.qq.com/s?__biz=MzUzODQ0MDY2Nw==&mid=2247483948&idx=1&sn=72ce27bf4950af935161c7bf074186a8&chksm=fad6e498cda16d8e4f0f1e065812fb0f2b02129b26920e59d6827fbb85cde419bec88e2...转载 2019-03-19 17:18:08 · 491 阅读 · 0 评论 -
一致性哈希负载均衡算法的探讨
https://mp.weixin.qq.com/s/oe3EPu5DxB0bWheBImMsHg前言一致性哈希算法在很多领域有应用,例如分布式缓存领域的 MemCache,Redis,负载均衡领域的 Nginx,各类 RPC 框架。不同领域场景不同,需要顾及的因素也有所差异,本文主要讨论在负载均衡中一致性哈希算法的设计。在介绍一致性哈希算法之前,我将会介绍一些哈希算法,讨论它们的区别...转载 2019-03-06 11:35:39 · 559 阅读 · 0 评论 -
看到外卖平台这样改善数据库架构,DBA表示放心了(数据库架构发展)
https://mp.weixin.qq.com/s/jIMjiCe0j0TIiM9gEu63yA本文根据虢国飞老师在dbaplus社群【2019年1月5日数据架构与优化沙龙上海站】现场演讲内容整理而成,点击文末【阅读原文】可下载完整PPT~ 讲师介绍虢国飞 饿了么数据技术部负责人 从事数据库行业十余年,专注于 MySQL、PGSQL、MSSQL等数据库领域的管理、...转载 2019-02-21 10:59:54 · 1314 阅读 · 0 评论 -
如何合理的规划jvm性能调优
https://www.jianshu.com/p/b5a855fe8765?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.ioJVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理...转载 2019-02-25 15:53:25 · 310 阅读 · 0 评论 -
缓存系统中面临的雪崩/穿透/一致性问题
http://fivezh.github.io/2019/02/11/cache-things/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.ioThere are only two hard things in Computer Science: cache invalidation and naming...转载 2019-02-13 18:21:59 · 419 阅读 · 0 评论 -
京东服务市场高并发下SOA服务化演进架构
https://mp.weixin.qq.com/s/gBce2-tGDQs8Reejx-Q34w京东服务市场是京东商家与第三方独立软件提供商(ISV)进行服务类的在线交易平台。作为京东生态圈重要的一环,伴随着整个京东的快速增长,也在快速的发展。随着服务市场访问、交易量指数级的增长,系统由原来的ALL IN ONE架构,快速的演进成为SOA架构。 木桶的容量由木桶最短的木板决定,高并发...转载 2019-02-13 11:56:47 · 606 阅读 · 0 评论 -
分布式、高并发、高可用
因为java面试题是一个较为大的体系,所以我们会拆分为几季来讲解,预计是会推出3季,本次是第一季,第一季课程包含的内容如下: 1、分布式系统1.1 为什么要进行系统拆分?(1)为什么要进行系统拆分?如何进行系统拆分?拆分后不用dubbo可以吗?dubbo和thrift有什么区别呢?1.2 分布式服务框架(1)说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?...转载 2019-01-30 11:06:19 · 1156 阅读 · 0 评论 -
状态机设计
https://mp.weixin.qq.com/s?__biz=MzA5NDg3MjAwMQ==&mid=2457102230&idx=1&sn=5255ab55d11f1e8971393d5f54718235&chksm=87c8cf38b0bf462e42d8a956b6cc72dcdb6d4a47684aabc4c582fd259d64a4f2dd735d9...转载 2019-03-12 16:02:31 · 2577 阅读 · 0 评论 -
微服务接口限流的设计与思考(附GitHub框架源码)
https://mp.weixin.qq.com/s?__biz=MzI4MTY5NTk4Ng==&mid=2247488993&idx=1&sn=4b9d5deedd0e626c456744f04b499bbb&source=41#wechat_redirect微服务拆分之后,系统之间的调用关系错综复杂,平台的整体复杂熵升高,出错的概率、deb...转载 2019-03-19 10:25:54 · 395 阅读 · 0 评论 -
如何阅读Java源码?
https://mp.weixin.qq.com/s?__biz=MzUyNDkzNzczNQ==&mid=2247486112&idx=1&sn=904668a9473b011c1faacef9171795d5&chksm=fa24f5c8cd537cde76c047b8a692520843823a16db0e953fa627576b5c3ce20367584fc...转载 2019-03-26 15:37:22 · 361 阅读 · 0 评论 -
微服务容器化运维:微博容器运维平台DCP
微服务容器化运维系列的前两期,我给你详细介绍了微服务容器化后如何运维的几个关键问题:镜像仓库、资源调度、容器调度、服务编排,这些问题的产生都是因为微服务部署的节点从一台台物理机或者虚拟机变成了一个个容器,运维模式发生了根本性的变化。此时,容器运维平台也就应运而生。微博的业务从2013年就开始进行容器化,2015年为了应对春晚以及突发热点事件带来的峰值流量,开始引入阿里云;同时也为了适应业务的发...转载 2019-05-21 19:29:50 · 2400 阅读 · 0 评论 -
如何搭建微服务治理平台?
微服务治理平台的基本功能你可能先会问,到底什么是微服务治理平台?根据我的理解,微服务治理平台就是与服务打交道的统一入口,无论是开发人员还是运维人员,都能通过这个平台对服务进行各种操作,比如开发人员可以通过这个平台对服务进行降级操作,运维人员可以通过这个平台对服务进行上下线操作,而不需要关心这个操作背后的具体实现。接下来我就结合下面这张图,给你介绍一下一个微服务治理平台应该具备哪些基本功能。...转载 2019-05-21 15:17:16 · 5613 阅读 · 1 评论 -
秒杀系统“减库存”设计的核心逻辑
如果要设计一套秒杀系统,那我想你的老板肯定会先对你说:千万不要超卖,这是大前提。如果你第一次接触秒杀,那你可能还不太理解,库存 100 件就卖 100 件,在数据库里减到 0 就好了啊,这有什么麻烦的?是的,理论上是这样,但是具体到业务场景中,“减库存”就不是这么简单了。例如,我们平常购物都是这样,看到喜欢的商品然后下单,但并不是每个下单请求你都最后付款了。你说系统是用户下单了就算这个商品...转载 2019-05-16 09:47:27 · 2419 阅读 · 0 评论 -
细说 Java 泛型及其应用
http://blueskykong.com/2019/03/31/java-Generic/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io引出泛型我们通过如下的示例,引出为什么泛型的概念。 12345678910111213 public...转载 2019-04-03 11:31:50 · 221 阅读 · 0 评论 -
MySQL事务隔离级别和MVCC
事前准备为了故事的顺利发展,我们需要创建一个表:CREATE TABLE t ( id INT PRIMARY KEY, c VARCHAR(100)) Engine=InnoDB CHARSET=utf8;然后向这个表里插入一条数据:INSERT INTO t VALUES(1, '刘备');现在表里的数据就是这样的:m...转载 2019-03-28 16:45:45 · 1996 阅读 · 2 评论 -
java实现callback
http://www.wuwenliang.net/2017/01/26/java%E5%AE%9E%E7%8E%B0callback/回调是一种双向调用模式,什么意思呢,就是说,被调用方在被调用时也会调用对方,这就叫回调。“If you call me, i will call back”。Java语言中经常会使用到回调机制,或许只是平时没有注意到吧。比如Android开发中的OnCli...转载 2019-04-01 14:09:43 · 8611 阅读 · 1 评论 -
一次诡异的线上数据库的死锁问题排查过程
https://mp.weixin.qq.com/s/bRKcuUo3Pbfv6CPK82Y01A前几天,线上发生了一次数据库死锁问题,这一问题前前后后排查了比较久的时间,这个过程中自己也对数据库的锁机制有了更深的理解。本文总结了这次死锁排查的全过程,并分析了导致死锁的原因及解决方案。希望给大家提供一个死锁的排查及解决思路。本文涉及到MySql执行引擎、数据库隔离级别、Innodb锁机制、...转载 2019-04-10 15:16:53 · 3652 阅读 · 0 评论 -
画图
https://mp.weixin.qq.com/s/t7r_Nsr39qPgeu8YQ3H9nQ因为会画图不好意思,本拐无节操的标题党了一下 嘿嘿但是本篇本拐确实想和大家叨逼叨一下程序员的画图功夫一个只会写代码的程序员,肯定不是一个优秀的程序员,因为对于程序猿来说没有什么工作是可以低头就开整的也就是说,万物万码都有一个设计的过程这种设计,可以简单,可以复杂。下面以一个很无...转载 2019-03-27 16:31:53 · 882 阅读 · 0 评论 -
微服务落地,我们在考虑什么?
https://mp.weixin.qq.com/s/wXO1SlJR4dZYNB5Xo5JW8g微服务已经成为过去几年软件架构设计的“事实标准”,大多数企业在推动内部数字化转型的过程中,服务软件系统开始由单一或者SOA服务向微服务转型。那么转型过程需要遵循哪些原则呢?本文结合过往博云微服务落地实践经验,分享微服务落地实践的过程中思考。目前当技术人员提及微服务的时候,首先想到的是Sp...转载 2019-04-04 13:45:59 · 357 阅读 · 0 评论 -
https://mp.weixin.qq.com/s/j7YdtmyuzBFRK1BViDtp2w
干货 | Elasticsearch多表关联设计指南0、题记Elasticsearch多表关联问题是讨论最多的问题之一,如:博客和评论的关系,用户和爱好的关系。多表关联通常指:1对多,或者多对多关系在ES中的呈现。本文以星球问题为出发点,引申出ES多表关联认知,分析了4种关联关系的适用场景、优点、缺点。希望对你有所启发,为你的多表关联方案选型、实战提供帮助。1、抛出问题...转载 2019-03-26 16:38:39 · 10894 阅读 · 1 评论 -
分布式架构知识体系
https://mp.weixin.qq.com/s/9xINMH9tJlmsjH6QdUPFxQ1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分布式? 2.关键词节点,时间,一致性,CA...转载 2019-02-15 16:46:56 · 759 阅读 · 0 评论 -
58到家MQ如何快速实现流量削峰填谷
https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651960021&idx=1&sn=4bbe275c249a70ab20e36959fc01d4e0&chksm=bd2d07098a5a8e1fd9b505778b551002ab59c35953fa3deaaddc79e3f21bcea5ff48076...转载 2019-01-23 10:09:22 · 807 阅读 · 0 评论 -
从一道简单的“SpringBoot配置文件”相关面试题,我就能知道你的水平
面试要套路,也要技巧。别被背题目的兄弟们给忽悠了。【你来发挥】你比较喜欢什么技术,哪一种最熟?一般自信的面试官都喜欢问这个问题,这次面试的小伙比较年轻,咱也装回B,不然都对不起自己。答: 我比较喜欢Spring,比较有趣。目的: 希望应聘者能够有广度且有深度。如果最感兴趣的是Spring本身,而不是其上的解决方案,那顶多会承担被分解后的编码工作。巧了,咱也熟。【工作经...转载 2018-11-22 18:39:03 · 323 阅读 · 0 评论 -
双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247483759&idx=1&sn=7e6575861a779711a5ef5f27b8e088e4&chksm=fba6e96cccd1607a709c1437eb0b92df703b8d8eac466205798618480abf600b67f0327...转载 2018-11-16 13:55:52 · 763 阅读 · 0 评论 -
性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247483777&idx=1&sn=f144ee415bb743f5422314907fc7d819&chksm=fba6e982ccd160945aa5c53434e933e2f03e89d9faf634f0b573c1f7b6f4d6d2635cad0...转载 2018-11-16 13:51:48 · 4117 阅读 · 0 评论 -
拜托!面试请不要再问我Spring Cloud底层原理
https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247483712&idx=1&sn=4cd88761830428a2e485ac4c2cf120f9&chksm=fba6e943ccd16055344222ce9c794358e1a4a84fdf4263eaa7c91e9756597bd06e49f9b...转载 2018-11-16 13:50:15 · 419 阅读 · 0 评论 -
微服务架构如何保障双11狂欢下的99.99%高可用
https://mp.weixin.qq.com/s/lBeQSSPX7OeWO6SmWYf1Mg目录一、概述二、业务场景介绍三、线上经验 _ 如何设置Hystrix线程池大小四、线上经验 _ 如何设置请求超时时间五、服务降级六、总结 一、概述 上一篇文章讲了一个朋友公司使用Spring Cloud架构遇到问题的一个真实案例,虽然不是什么大的技术问题,但...转载 2018-11-16 13:49:08 · 547 阅读 · 0 评论 -
Java面试题整理~
https://www.hollischuang.com/archives/10?1、JMS的模式两种模式其它?1、Js:confirm()方法?2、Iframe的优缺点%3、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?(主要是考量有没有碰到过编码问题,问题是如何解决的)?4、怎么获取到客户端的真实IP??5、名词解...转载 2018-10-24 14:36:43 · 303 阅读 · 0 评论 -
HashMap完全解读
一、什么是HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collect...转载 2018-10-26 17:36:04 · 358 阅读 · 0 评论 -
Java虚拟机的内存组成以及堆内存介绍
一、java内存组成介绍:堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;...转载 2018-10-26 13:45:34 · 651 阅读 · 0 评论 -
Java GC工作原理
https://www.hollischuang.com/archives/76GC的基本原理GC是什么?为什么要有GC呢?GC是垃圾收集的意思(GarbageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分...转载 2018-10-25 18:34:57 · 446 阅读 · 0 评论 -
Kubernetes 容器云实践方案
https://mp.weixin.qq.com/s?__biz=MzIzOTUyMTA4MA==&mid=2247483791&idx=1&sn=aebdf07237eec8596f4462801a230370&chksm=e9299dd8de5e14ceafba4f4c834dac87bee7054179b0810de6237322a45d89008ef34cb...转载 2018-11-29 14:36:23 · 1628 阅读 · 1 评论 -
支付开发,不得不了解的国内、国际第三方支付流程
https://mp.weixin.qq.com/s/4Xut45PcMASlV4_08O_xmA这几年的工作中一直与支付打交到,借着 skr-shop 这个项目来与大家一起分享探索一下支付系统该怎么设计、怎么做。我们先从支付的一些常见流程出发分析,找出这些支付的共性,抽象后再去探讨具体的数据库设计、代码结构设计。相关项目: PHP 版本的支付SDK:https://github.c...转载 2018-11-27 15:54:37 · 4026 阅读 · 0 评论 -
微服务通信的设计模式
https://mp.weixin.qq.com/s/zH1AbVmeB40MiiGXxQRnNQ在我的上一篇博客中,我谈到了微服务的设计模式。现在我想更深入地探讨微服务架构中最重要的模式:微服务之间的相互通信。我仍然记得我们过去开发单一应用时通讯是一项艰巨的任务。在那时我们必须小心的设计数据库表和对象模型映射之间的关系。而现在在微服务中,我们已经将它们分解为独立的服务,并创建网格来彼此通信。...转载 2018-12-05 12:01:39 · 925 阅读 · 1 评论 -
来谈谈限流-从概念到实现
https://github.com/farmerjohngit/myblog/issues/18?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io后端服务的接口都是有访问上限的,如果外部QPS或并发量超过了访问上限会导致应用瘫痪。所以一般都会对接口调用加上限流保护,防止超出预期的请求导致系统故障。从限流...转载 2019-01-22 13:47:52 · 400 阅读 · 0 评论 -
Java8_Predicate、Supplier、Optional
https://www.jianshu.com/p/d8075b2337edPredicatePredicate接收一个参数,返回一个布尔值,用来进行判断是否符合条件@FunctionalInterfacepublic interface Predicate<T> {boolean test(T t);default Predicate<T> and...转载 2018-12-27 20:57:44 · 714 阅读 · 0 评论