设计模式

GitHub Star 破万!3w 多人追更,这个 Java 框架你不会还不知道怎么用吧...

。_饼干妹妹 提交于 2021-01-14 12:52:56
作为一个 GitHub Star 破 5w,Fork 超 3w 的 Java 框架,一切都在证明,Spring Boot 已经成为了 Java 程序员必备的技能。 不夸张的说, Spring Boot 是 Java 后端领域最最最重要的技术之一,熟练掌握它对于 Java 程序员至关重要。而且看过很多面经的小伙伴肯定知道,现在去面试,无论大小公司 ,都会跟你扯一扯 Spring Boot 、微服务,如果聊不清楚,很可能直接说拜拜! 正好前段时间自己有整理 Java各种技术专题知识 ,其中就包括 Spring Boot 、微服务、以及我近些年开发和工作过程中的一些感悟、心得。 今天在这免费分享给大家 : 这份资料包含了Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM、设计模式、多线程与高并发、视频教程、电子书及求职面试相关技能知识! ▶Java Java视频包括入门到精通,以及项目实战、框架的使用 Java电子书、文档和思维导图 视频地址:https://space.bilibili.com/346136575 Spring Boot实战文档

秀出天际!腾讯T4梳理的Java核心宝典(框架+原理+笔记+导图)

北战南征 提交于 2021-01-14 10:58:51
Java语言今年已经25岁了,仍常年稳坐各大编程语言榜单前列,一直是大多数开发者心中最流行的编程语言。 Java工程师的就业面广、薪资高,这得益于 Java 语言优良的关键特性。现在越来越多的人仍旧不断地加入到学习 Java 的队伍中来,小编在此就给大家带来一份腾讯T4大佬精心整理的Java核心宝典,来帮助大家学习提升自己! 下面我们来看看这份腾讯T4大佬整理的Java核心宝典: 本文内容分为三部分 第一部分: JavaSE部分,主要讲Java基础的知识(小白看过来),觉得自己基础不是很好的朋友也看看用作参考,查漏补缺 第二部分: 框架部分,主要讲解面试中常见的微服务、网络编程、分布式存储和分布式计算等必备知识点。 第三部分: 原理部分,主要讲解JVM原理、多线程、数据结构和算法、分布式缓存、设计模式等面试必备知识点。 JavaSE部分 目录 限于平台篇幅原因,更多内容展示不了,感兴趣的朋友帮忙帮忙一键三连后,见下图加小助理VX(gyhycx7980)即可免费领取到! 内容 第 2 章 开发环境搭建 第 5 章 Java编码规范 第 11 章 面向对象基础 第 20 章 对象容器—集合 第 27 章 注解 第 29 章 项目实战 限于平台篇幅原因,更多内容展示不了,感兴趣的朋友帮忙帮忙一键三连后,见下图加小助理VX(gyhycx7980)即可免费领取到! 框架部分 目录

设计模式——适配器模式(type-c转3.5mm耳机口)

浪子不回头ぞ 提交于 2021-01-14 03:47:25
本文首发于 cdream 的个人博客,点击获得更好的阅读体验! 欢迎转载,转载请注明出处。 本文简述适配器模式,考虑到java中没有多继承就只写了对象适配器模式,然后例子是怎么用转接口把3.5mm耳机插在小米8上面。 <!--more--> 一、概念 适配器模式 (英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配器使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。 适配器模式允许一个已存在的类的接口被用作另一个接口。通常可以在不需要修改源代码的情况下使用已存在的类。 其实在生活中,适配器随处看见,例如下图,一个type-c转耳机口的适配器。接下来让我看看适配器模式的结构,并用java代码来实现一个type-c接口的手机与3.5mm的耳机通过适配器连接。 <div class="note info"><strong>适配器模式主要解决两个问题</strong>:<br>1.转换当前接口为客户端需要的接口<br>2.通过适配器使用没有我们需要的接口的类</div> 描述看似相同,实际上出发点不同~嘿嘿,意会意会 二、结构 适配器模式有两种,一种是 类适配器 ,不过需要支持多继承的语言才能实现,本文主要讲解单继承也可以实现的 对象适配器 。下图是对象适配器模式的类图

专题第18篇:Python 绘图入门

纵饮孤独 提交于 2021-01-14 03:02:13
我的施工之路 1 我的施工计划 2 数字专题 3 字符串专题 4 列表专题 5 流程控制专题 6 编程风格专题 7 函数使用 8 面向对象编程(上篇) 9 面向对象编程(下篇) 10 十大数据结构 11 包和模块使用总结 12 Python正则专题总结 13 设计模式 14 Python时间模块总结 15 Python 装饰器 16 Python 迭代器 17 Python 生成器 Python 绘图入门 这是施工系列第18篇,同时也进入到一个新的阶段:Python绘图篇。作为绘图模块的第一篇,与大家一起过过最基本的Python绘图原理。 掌握基本的绘图原理很有必要,各个常用绘图库的原理基本都是相通的。所以了解它们后,使用库里的API函数将会更加得心应手,并且熟练其中一个库后,便能迅速上手其他的绘图库。 1 绘图组成要素 一般绘图要素的基本组成部分包括:画布(Canvas),坐标系(Axes),轴(Axis),标题(Title),标签(Label),刻度(Tick),图例(Legend),网格(Grid),数据域(Data),如下图所示: 2 画布 画布 Canvas 是绘制图像的地方,一个画布可以包括多个坐标系,如下图所示,一个Canvas上包括2个坐标系(Axes): 对应在实际绘图中,如下所示,画布上共包括3个坐标系,每个坐标系分别绘制了柱状图、折线图、饼图,布局样式如下:

专题 | Python 绘图入门

橙三吉。 提交于 2021-01-14 03:01:55
腾讯课堂 | Python网络爬虫与文本分析 我的施工之路 1 我的施工计划 2 数字专题 3 字符串专题 4 列表专题 5 流程控制专题 6 编程风格专题 7 函数使用 8 面向对象编程(上篇) 9 面向对象编程(下篇) 10 十大数据结构 11 包和模块使用总结 12 Python正则专题总结 13 设计模式 14 Python时间模块总结 15 Python 装饰器 16 Python 迭代器 17 Python 生成器 Python 绘图入门 这是施工系列第18篇,同时也进入到一个新的阶段:Python绘图篇。作为绘图模块的第一篇,与大家一起过过最基本的Python绘图原理。 掌握基本的绘图原理很有必要,各个常用绘图库的原理基本都是相通的。所以了解它们后,使用库里的API函数将会更加得心应手,并且熟练其中一个库后,便能迅速上手其他的绘图库。 1 绘图组成要素 一般绘图要素的基本组成部分包括:画布(Canvas),坐标系(Axes),轴(Axis),标题(Title),标签(Label),刻度(Tick),图例(Legend),网格(Grid),数据域(Data),如下图所示: 2 画布 画布 Canvas 是绘制图像的地方,一个画布可以包括多个坐标系,如下图所示,一个Canvas上包括2个坐标系(Axes): 对应在实际绘图中,如下所示,画布上共包括3个坐标系

IoC与AOP的那点事儿

◇◆丶佛笑我妖孽 提交于 2021-01-14 02:44:16
作者:SylvanasSun 原文:https://sylvanassun.github.io/2017/06/07/2017-06-07-IoC&AOP/ IoC 控制反转(Inversion of Control)是 OOP 中的一种设计原则,也是 Spring 框架的核心.大多数应用程序的业务逻辑代码都需要两个或多个类进行合作完成的, 通过IoC则可以减少它们之间的耦合度 . 实现方法 IoC 的主要实现方法有两种, 依赖注入 与 依赖查找 . 依赖注入 : 应用程序被动的接收对象, IoC 容器通过类型或名称等信息来判断将不同的对象注入到不同的属性中. 依赖注入主要有以下的方式: 基于 set 方法 : 实现特定属性的public set()方法,来让 IoC 容器调用注入所依赖类型的对象. 基于接口 : 实现特定接口以供 IoC 容器注入所依赖类型的对象. 基于构造函数 : 实现特定参数的构造函数,在创建对象时来让 IoC 容器注入所依赖类型的对象. 基于注解 : 通过 Java 的注解机制来让 IoC 容器注入所依赖类型的对象,例如 Spring 框架中的 @Autowired . 依赖查找 : 它相对于 依赖注入 而言是一种更为主动的方法,它会在需要的时候通过调用框架提供的方法来获取对象,获取时需要提供相关的配置文件路径、key等信息来确定获取对象的状态.

Java容器(List、Set、Map)知识点快速复习手册(上)

北战南征 提交于 2021-01-13 23:03:12
前言 本文快速回顾了Java中容器的知识点,用作面试复习,事半功倍。 上篇:主要为容器概览,容器中用到的设计模式,List源码 中篇:Map源码 下篇:Set源码,容器总结 其它知识点复习手册 Java基础知识点面试手册(上) Java基础知识点面试手册(下) 概览 容器主要包括 Collection 和 Map 两种,Collection 又包含了 List、Set 以及 Queue。 Collection 数组和集合的区别: 长度 数组的长度固定 集合的长度可变 内容 数组存储的是同一种类型的元素 集合可以存储不同类型的元素(但是一般我们不这样干..) 元素的数据类型 数组可以存储基本数据类型,也可以存储引用类型 集合只能存储引用类型(若存储的是简单的int,它会自动装箱成Integer) 1. Set(元素不可重复) HashSet:基于HashMap实现,支持快速查找,但不支持有序性操作。 TreeSet:基于红黑树实现,支持有序性操作,但是查找效率不如 HashSet,HashSet 查找时间复杂度为 O(1),TreeSet 则为 O(logN); LinkedHashSet:具有 HashSet 的查找效率,且内部使用链表维护元素的插入顺序。 2. List(有序(存储顺序和取出顺序一致),可重复) ArrayList:基于动态数组实现,支持随机访问; Vector

Kotlin设计模式实现之装饰者模式(Decorator)

。_饼干妹妹 提交于 2021-01-13 17:24:31
前言 今天是2020年的第一天,在这里祝大家元旦快乐!之前用kotlin实现了策略模式,文中写到要多写几篇文章来加深 一 下对设计模式的理解。那么今天要写的看题目应该就知道了:装饰者模式(也叫装饰模式)。下面是装饰者模式的定义: 装饰者模式(Decorator):在不改变对象自身的基础上,动态地给一个对象添加一些额外的职责。与继承相比,装饰者是一种更轻便灵活的做法。若要扩展功能,装饰者提供了比继承更有弹性的替代方法。 故事场景 小星刚毕业,到一家公司实习。今天来到公司后,一如既往地开始编写它的增删改查。 刚刚坐下打开电脑,技术锦鲤走了过来,小星内心开始发牢骚(锦鲤来干啥,每回它来都没好事)。锦鲤告诉小星,公司想要编写一个卖咖啡的系统,有不同种类的咖啡,需要能计算出咖啡的钱和区分咖啡的类别。 小星:没问题,很简单。 十分钟后,小星写出了它的第一版代码: 咖啡的基类: abstract class Beverage ( var description: String = "Unknown Beverage" ) { //描述 open fun getDescriptions () :String{ return description } //价钱 abstract fun cost () : Double } 其他咖啡(子类): /** * 深度烘焙咖啡(星巴克) * *

握草,这些研发事故30%我都干过!

倾然丶 夕夏残阳落幕 提交于 2021-01-13 16:59:08
持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥 博客:https://bugstack.cn ❝ 沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞ 目录 一、前言 二、研发事故 1. 功能流程设计类 2. 技术方案实现类 3. 技术服务使用类 4. 后门违规操作类 5. 运营操作失误类 三、总结 四、系列推荐 一、前言 你的代码出过事故吗? 老人言:常在河边走哪有不湿鞋。只要你在做着编程开发的工作就一定会遇到事故,或大或小而已。 当然可能有一部分研发同学,在相对传统的行业或者做着用户体量较小的业务等,很难遇到让人出名的事故,多数都是一些线上的小bug,修复了也就没人问了。 但如果你在较大型的互联网公司,那么你负责的开发的系统功能,可能面对的就是成百万、上千万级别用户体量。哪怕你有一点小bug也会被迅速放大,造成大批量的客诉以及更严重的资金损失风险。就像: 拼多多“薅羊毛”事件,朋友圈疯狂转发。 淘宝昨现重大线上bug,S1级事故,疑似程序员故意埋雷。 您使用的程序是内测版本,将于当地时间 2020-03-28 到期,到期后将无法使用,请尽快下载最新版本。 GitHub忘记续订SSL证书导致网站排版混乱,部分网站不能正常打开。 类似这样事故的出现,可能是因为技术流程、方案实现、技术服务以及运营配置等等原因产生的。综合可以概括为以下几点: 功能流程设计类

彻底理解JAVA动态代理

走远了吗. 提交于 2021-01-13 16:56:56
代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问。 代理模式的结构如下图所示。代理模式 动态代理使用 java动态代理机制以巧妙的方式实现了代理模式的设计理念。动态代理类图 代理模式示例代码 public interface Subject { public void doSomething(); } public class RealSubject implements Subject { public void doSomething() { System.out.println( "call doSomething()" ); } } public class ProxyHandler implements InvocationHandler { private Object proxied; public ProxyHandler( Object proxied ) { this.proxied = proxied; } public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable { //在转调具体目标对象之前,可以执行一些功能处理 //转调具体目标对象的方法 return method.invoke( proxied, args); /