架构设计
文章平均质量分 90
代码最诚实的朋友
用眼和脑能看到和想到的未来是基于大数据的人工智能,但是仍然不要忘了我们最爱的源代码,最爱的算法和数据结构,还有遥遥不可及的数学
展开
-
设计模式-JAVA
对象池模式背景频繁的实例化对象,是很耗费资源的,同时也会频繁的触发GC操作,解决方案就是重用和共享这些创建成本高昂的对象,这就是对象池模式,也理解为池化技术。案例在JDK 5.0之后,java为了避免频繁的创建和销毁对象而影响性能,设计了对于8种基本类型(byte、short、int、long、float、double、char、boolean)包装类和String类型的9种对象池。8种基本类型包装类的对象池都是java层面实现的,如Integer的java.lang.Int...原创 2022-02-26 21:10:19 · 543 阅读 · 0 评论 -
mybatis与spring boot的集成
前言MyBatis提供了整合到 Spring Boot 的方案 mybatis-spring-boot-starter,能够让你快速的在 Spring Boot 上面使用 MyBatis,那么我们来看看这个 mybatis-spring-boot-starter 是如何将 MyBatis 集成到 Spring Boot中的。mybatis的自动装配引入mybatis-spring-boot-starter包。 <dependency> <groupI原创 2022-01-24 22:21:45 · 4780 阅读 · 2 评论 -
spring boot线程池的正确使用方式
spring boot自动装配自动装配是spring boot的一大特点,自动装配其实就是spring把一些常用的bean提前注册到了容器,如redis、jdbc、activemq等,我们可以直接来使用这些bean,所有的自动装配的代码都在spring-boot-autoconfigure这个模块里。内置了很多,市面上常用的组件基本都包括了。线程池的自动装配线程池的自动装配代码在org.springframework.boot.autoconfigure.task.TaskExecuti原创 2022-01-19 17:57:17 · 5167 阅读 · 2 评论 -
java动态线程池
java线程池Java标准库提供了java.util.concurrent.ExecutorService接口表示线程池,并提供了几个实现,通过java.util.concurrent.Executors类提供的方法可以创建线程池,例如:FixedThreadPool:线程数固定的线程池; CachedThreadPool:线程数根据任务动态调整的线程池; SingleThreadExecutor:仅单线程执行的线程池。以上都有其局限性,不够灵活;另外这几种方法内部也是通过java.util.原创 2022-01-17 21:53:10 · 472 阅读 · 0 评论 -
Zookeeper分布式锁
前言实现一把分布式锁通常有很多方法,比较常见的有 redis 和 Zookeeper。Zookeeper能实现分布式锁,是因为它有一个特性,就是多个线程去 Zookeeper 里面去创建同一个节点的时候,只会有一个线程执行成功。Zookeeper 的 ZNode 节点Zookeeper 里面的节点可以分为两大类,一种是临时节点,一种是持久化节点。临时节点,指的是节点创建后,如果创建节点的客户端和 Zookeeper 服务端的会话失效(例如断开连接),那么节点就会被删除。持久化节点指的是节转载 2022-01-12 15:26:36 · 6126 阅读 · 3 评论 -
架构物语二
软件架构指软件系统的顶层结构。首先,“系统是一群关联个体组成”,这些“个体”可以是“子系统”“模块”“组件”等;架构需要明确系统包含哪些“个体”。原创 2021-05-30 22:37:34 · 172 阅读 · 1 评论 -
架构物语
1、架构为场景而生,最后也会被场景所抛弃2、架构没有最好,只有最合适 人员技术研发能力/业务复杂度/数据规模/时间成本/运维能力3、一切脱离场景谈架构,都是耍流氓 --> 场景驱动架构增长4、架构分类 单体架构 分布式微服务架构-业务垂直方向拆分(用户服务、商品服务、交易服务) -功能水平方向拆分(商品网关层(用户鉴权、限流、熔断等)、商品业务逻辑层(变化最多)、商品数据访问层(CURD)) ...原创 2020-06-29 21:37:09 · 179 阅读 · 1 评论 -
基于Redis的分布式锁到底安全吗(下)
自从我写完这个话题的上半部分之后,就感觉头脑中出现了许多细小的声音,久久挥之不去。它们就像是在为了一些鸡毛蒜皮的小事而相互争吵个不停。的确,有关分布式的话题就是这样,琐碎异常,而且每个人说的话听起来似乎都有道理。今天,我们就继续探讨这个话题的后半部分。本文中,我们将从antirez反驳Martin Kleppmann的观点开始讲起,然后会涉及到Hacker News上出现的一些讨论内容,接转载 2017-03-21 15:11:48 · 775 阅读 · 0 评论 -
基于Redis的分布式锁到底安全吗(上)
网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了。这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是仔细推敲,疑虑也就越来越多。实际上,大概在一年以前,关于Redis分布式锁的安全性问题,在分布式系统专家Martin Kleppmann和Redis的作者an转载 2017-03-21 15:10:02 · 6611 阅读 · 1 评论 -
快的打车架构实践
快的打车从2013年年底到2014年下半年,系统访问量迅速膨胀,很多复杂的问题要在短时间内解决,且不能影响线上业务,这是比较大的挑战,本文将会阐述快的打车架构演变过程遇到的一些有代表性的问题和解决方案。LBS的瓶颈和方案先看看基本的系统模型,如图1所示。图1 系统模型示意图司机每隔几秒钟上报一次经纬度,存储在MongoDB里;乘客发单时,通过MongoDB圈选出转载 2016-01-06 10:24:04 · 1295 阅读 · 2 评论 -
Hello World!第一个 OSGi 应用程序
HelloWorld!直接开始!1、建立一个 plug-in 工程,File > New > Project,选择 Plug-in development > Plug-in Project 2、在建立工程的第一个向导,填入工程的名称:osgi.test.helloworld,使用缺省的工程路径。注意目标平台的选择,由于我们的项目是一个通用的 OSGi bundle,所以选原创 2015-04-03 18:40:08 · 517 阅读 · 0 评论 -
开发一个真实的 OSGi 应用程序
开发一个真实的 OSGi 应用程序我们不能只停留在 hello world 的层面,虽然那曾经对我们很重要 ,但是现实需要我们能够使用 OSGi 写出激动人心的应用程序,它能够被客户接受,被架构师认可,被程序员肯定。好的,那我们开始吧。下面将会着重介绍一些现实的应用程序可能需要的一些 OSGi 应用场景。发布和使用服务由于 OSGi 框架能够方便的隐藏实现类,所以对外提供接转载 2015-04-07 15:50:49 · 660 阅读 · 0 评论 -
大型网站系统架构演化之路
前言一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的转载 2015-02-16 17:07:40 · 568 阅读 · 0 评论