合集-设计模式(4)1.java设计模式简介(总结)05-122.java设计模式【单例模式】05-123.java设计模式【工厂方法模式】05-174.java设计模式【抽象工厂模式】05-17收起Java设计模式【单例模式】单例模式单例模式(SingletonPattern)是一种创建型设计模式
1,设计模式概述1.1软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(ChristopherAlexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些
一、前言Caffeine是一个高性能的Java缓存库,底层数据存储采用ConcurrentHashMap优点:因为Caffeine面向JDK8,在jdk8中ConcurrentHashMap增加了红黑树,在hash冲突严重时也能有良好的读性能。多线程环境中,不同的key可以并发写,相同的key会加锁
苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头对于Java领域中的锁,其实从接触Java至今,我相信每一位JavaDeveloper都会有这样的一个感觉?不论是Java对锁的实现还是应用,真的是一种“群英荟萃”,而且每一种锁都有点各有各的驴,各有各的本,各
大家好,我是树哥。我们在学习G1回收器的时候,一般我们都会接触到TLAB和PLAB这两个术语。它们都是为了提高内存分配效率而存在的,但它们和栈上分配有什么区别呢?今天,就让树哥带着大家盘一盘。栈上分配稍微了解过Java虚拟机内存结构的同学都知道,在Java虚拟机中有两个关键的存储数据节点,那就是:
今天这篇我们再更新一个怎么把SpringBoot应用部署到K8s上,本来我是想偷偷懒、照猫画虎把上节课的改改镜像名不就行了,没想到,居然翻车咧,真的是想偷点懒都不行啊。具体怎么翻车,咱们先往后看,在总结里再说说,我对Go相比于Java在云原生里的优势。好了,咱们还是先假装自己都是是小白哈,让我带大家
前言在面向对象编程中,继承是非常实用也非常核心的功能,这一切都基于面向类语言中的类。然而,javascript和面向类的语言不同,它没有类作为蓝图,javascript中只有对象,但抽象继承思想又是如此重要,于是聪明绝顶的javascript开发者们就利用javascript原型链的特性实现了和类继
前言当多线程访问共享且可变的数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要ThreadLocal出场了。ThreadLocal又称线程本地变量,使用其能够将数据封闭在各自的线程中,每一个ThreadLocal能够存放一个线程级别的变量且它本身能够被多个线程共享使用,并且
导读:在不熟悉软件开发的业务人员看来,软件似乎是一种很神秘的事物。因为对软件不熟悉,这些人对软件的看法往往容易走入两个极端:要么认为软件很简单,要么认为软件是万能的。如果再加上软件开发或数字化从业人员不懂或不熟悉业务,业务与IT之间的鸿沟就会越来越宽、越来越深。在笔者看来,身处数字化时代,大家都应该
前言首先,synchronized是什么?我们需要明确的给个定义——同步锁,没错,它就是把锁。可以用来干嘛?锁,当然当然是用于线程间的同步,以及保护临界区内的资源。我们知道,锁是个非常笼统的概念,像生活中有指纹锁、密码锁等等多个种类,那synchronized代表的锁具体是把什么锁呢?答案是——Ja
本文转载自微信公众号「爱笑的架构师」,作者雷小帅。转载本文请联系爱笑的架构师公众号。在讲解动态代理前我们先聊聊什么是静态代理。静态代理假设有一天领导突发奇想,给你下发了一个需求:统计项目中所有类的方法执行耗时。在拿到需求的那一刻,脑海中冒出来的第一个想法是:在每个方法的第一行和最后一行加上时间埋点,
背景又到一年一度的情人节了,祝各位程序员有情人终成眷属!今天公众号本来有个广告推广的,被临时鸽了,唉。。这个情人节有点伤,还好对象没鸽。。情人节写点什么好呢?!有座的各位肯定还有不少单身dog吧?没关系,栈长本文教你创建对象的6种方式,从低端到高端,各种创建方式,总有一个适合你,没有对象的自己生成一
各位小伙伴们大家吼啊!我是cxuan,距离上次更新已经有段时间了,临近过年了,项目这边也比较忙,而且最近很多时间都花在看书、提升自己上面,文章写的比较拖沓,这里我要自我反思(其实我已经筹备了几篇文章,就等结尾了,嘿嘿嘿)。我们上篇文章聊了一波什么是动态代理,然后我又从动态代理的四种实现为切入点,为你
【51CTO.com原创稿件】本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspotjdk1.8,学习之后你将了解如何对生产系统出现的GC问题进行排查解决。 图片来自Pexels内容主要如下:GC基础原理,涉及调优目标,GC事件分类、JVM内存分配策略、GC日志分析等。CM
相信每个Java开发人员在工作、学习中都了解Spring怎么使用,但对于一个初级的开发工程师来说,仅仅了解怎么使用,能够很快的通过Spring来完成任务,这应该是足够了,但是呢,如果你还想向更高的级别去前进,系统的学习,掌握它的底层原理是必不可少的。每个人在面试的时候,Spring应该都
前端的技术的极速发展,对前端同学来说也是一个不小的挑战,有各种各样的东西需要学,在开发过程中经常会被后端同学嘲讽,对于前端来讲根本就不存在类的概念,很多时候需要把大量的业务代码堆积在页面或者组件中,使组件和页面变得特别的臃肿,一旦业务逻辑复杂的情况下,及时组件化做的很好,仍然避免不了难以维护。之所以
序列化和反序列化是Java中最基础的知识点,也是很容易被大家遗忘的,虽然天天使用它,但并不一定都能清楚的说明白。我相信很多小伙伴们掌握的也就几句概念、关键字(Serializable)而已,如果深究问一下序列化和反序列化是如何实现、使用场景等,就可能不知所措了。在每次我作为面试官,考察Java基础时
其实从2009年开始到现在,区块链的技术火热程度一直是处于逐年增加的状态,其他各大行业的巨头也正疯狂的布局之中,一定要赶上一场商业大战,至于这场战争什么时候打响,有些人认为或许在今年,或许在将来的两三年里,所以目前为止,我们还没有办法去做出准确的判断。但是咱们可以先做好准备,下面给大家整理了四种关于
前言像C语言这样的底层语言一般都有底层的内存管理接口,比如malloc()和free()用于分配内存和释放内存。而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在不再使用它们时“自动”释放内存,这个自动释放内存的过程称为垃圾回收。因为自动垃圾回收机制的存在,让大多Jav
如果你正在阅读本文,那么你已经意识到了Python3.7以及它所包含的新特性。就我个人而言,我对Dataclasses感到非常兴奋,因为我等了它一段时间了。本系列包含两部分:Dataclass特点概述在下一篇文章概述Dataclass的fields 介绍Dataclas