设计模式

Java后端技术学习体系——韩顺平

筅森魡賤 提交于 2021-02-02 11:57:43
文章目录 第一部分:Java基础 变量、控制结构、OOP(封装,继承,多态)、数组、Java API、异常和处理、集合、泛型、IO、反射、网络通信 第二部分:Java高级 1. Java多线程/高并发 1.1 并发基础 互斥同步、非阻塞同步、指令重排、synchronized、 volatile 1.2 线程 1.3 锁 自动锁、偏向锁、可重入锁 1.4 线程池 1.5 并发容器 1.6 JUC executor、collections、locks、alomic(原子类)、tools 2. 数据结构和算法 2.1 数据结构 数组(数组问题)、队列、栈、链表、树、散列、堆、图 2.2 算法 排序(8种)、查找、分治、动态规划(背包问题)、回溯(骑士周游问题)、贪心算法、KMP、Prim、kuskal、flovd-最短路径、(Dij...)最短路径 3. 设计模式(23种) 单例模式、观察者模式、工厂模式、适配器模式、装饰者模式、代理模式、模版模式、职责链模式、其他(组合模式、桥接模式...) 4. JVM JVM体系、类加载机制、双亲委派机制/沙箱安全机制、JMM(Java内存模型)、字节码执行过程、GC(垃圾回收算法)、JVM性能监控和故障定位、JVM调优 第三部分:Java web 1. 前端基础 html、css、JavaScript、ajax、jquery 2. 前端框架

java23种设计模式概述总结

霸气de小男生 提交于 2021-02-02 09:39:10
软件设计模式的意义: 它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的 可重用性、代码的可读性和代码的可靠性。 可以提高程序员的思维能力、编程能力和设计能力。 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 软件设计模式的基本要素: 模式名称 、 问题 ( 该模式的应用环境 ) 、 别名、动机、 解决方案 ( 组成成分、它们之间的相互关系及各自的职责和协作方式 ) 、 效果( 模式的优缺点。主要是对时间和空间的衡量以及该模式对系统的灵活性、扩充性、可移植性的影响 ) 、 结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式 设计模式 有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。 1. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为 创建型模式、结构型模式和行为型模式 3 种 。 创建型模式:用于描述“怎样创建对象”,它的主要特点是“ 将对象的创建与使用分离 ”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将 类或对象按某种布局组成更大的结构 ,GoF 中提供了代理、适配器、桥接、装饰、外观

设计模式之适配器模式(adapter pattern)

末鹿安然 提交于 2021-02-02 08:52:17
适配器主要用于接口的转换或者将接口不兼容的类对象组合在一起形成对外统一接口,是一种结构性模式,其本质是是一个中间件,适用于类及其对象。 本文希望通过简单的介绍和分析,能让读者对适配器模式有一个简单直观的认识和感知。 1.目的 对现有的类的接口进行转换以符合新的需求。 2.动机 通过转换或者组合,间接复用已有功能模块完成需求。 3.优缺点 优点: 提高了类的复用; 组合若干关联对象形成对外提供统一服务的接口; 扩展性、灵活性好。 缺点: 过多使用适配模式容易造成代码功能和逻辑意义的混淆。 部分语言对继承的限制,可能至多只能适配一个适配者类,而且目标类必须是抽象类。 4.分类 类适配器 对象适配器 接口适配器   本文主要介绍前两者。 5.主要用途及场景 该模式并不是在设计开发阶段考虑的,主要用在想要修改一个已经存在的接口,或者组合若干关联对象的时候。 想用一个已经存在的类,但其接口不符合需求; 想创建一个可以复用的类,该类可以与其他不相关的类协同工作; 想使用一些已经存在的子类,但是不能对每一个都进行子类化以匹配它们的接口(仅适用于对象Adapter)。对象适配器可以适配他的父类接口。 6.原理 下面是GoF介绍的典型的类适配器模式和对象适配器模式的UML类图 类适配器 原理: 通过类继承实现适配,继承Target的接口,继承Adaptee的实现 对象适配器 原理:

设计模式——1、单例模式

让人想犯罪 __ 提交于 2021-02-02 08:30:45
在有些系统中,为了节省内存资源、保证数据内容的一致性, 对某些类要求只能创建一个实例 ,这就是所谓的单例模式。 单例模式的定义与特点 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。 在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的对话框、系统中的缓存等常常被设计成单例。 单例模式在现实生活中的应用也非常广泛,例如公司 CEO、部门经理等都属于单例模型。J2EE 标准中的 Servlet Context 和 ServletContextConfig、 Spring 框架应用中的 ApplicationContext、数据库中的连接池等也都是单例模式。 单例模式有 3 个特点: 单例类只有 一个实例对象 ; 该单例对象必须由 单例类自行创建 ; 单例类对外提供一个访问该单例的 全局访问点 。 单例模式的优点和缺点 单例模式的优点: 单例模式可以保证内存里只有一个实例,减少了内存的开销。 可以避免对资源的多重占用。

如何准备Java初级和高级的技术面试

瘦欲@ 提交于 2021-02-02 06:14:09
作者: Java工程师-Distance 链接:https://my.oschina.net/u/3739863(点击阅读原文前去围观) 本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只有当反复确认能力不行才会下结论,相反,如果候选人给我的印象不错,我也会从多个角度来衡量,以免招进会说但不会干活的“大忽悠”。 其实倒也不是我故意要为难候选人,毕竟入职后就是同事,但面试官的职责使然,而且,如果资深的面试官一般也这样。 写到这里,恐怕会吓到一些想要面试的朋友,能力强和能力弱都会被多问,那怎么办? 这就是本文将要讲到的主题: 如何准备Java初级和高级的技术面试 。 一. 换位思考下,如果你面试官,你会怎么做 1. 只能通过简历和面试来衡量,别无他法。如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样。 2. 如果面试官由于能力不行,招进来一个大忽悠,那估计会被领导骂。而且再也不会被让面试了,给领导的印象就不好了。所以不能评主观印象,而是会有些客观标准,具体而言,就是从多个方面问些题目,答好答坏就看候选人的。 其实一些题目都差不多,但不同能力的面试官问问题的切入点和渐进程度会不同

字节跳动总结的设计模式 PDF 火了,完整版开放下载!

不想你离开。 提交于 2021-02-02 05:17:57
点击上方“ 五分钟学算法 ”,选择“星标”公众号 重磅干货,第一时间送达 来源:GitHubPorn 大家好,我是小 P。 最近很多小伙伴找我要一些 设计模式 基础资料,于是我翻箱倒柜,把这份字节跳动大牛总结的设计模式归纳笔记找出来,免费共享给大家! 据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料! 资料介绍 这份资料非常全面且详细,覆盖了 设计模式 基础学习的方方面面,非常适合初学者入门! 资料也按目录进行编排,每一章下面都有更具体的内容: 有趣的插图: 如何获取? 1. 识别并关注下方公众号; 2. 在下面公众号后台回复关键字「 设计模式 」。 👆长按上方二维码 2 秒 回复「 设计模式 」即可获取资料 本文分享自微信公众号 - 五分钟学算法(CXYxiaowu)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4010368/blog/4665254

字节跳动总结的设计模式 PDF 火了,完整版开放下载!

百般思念 提交于 2021-02-02 00:56:56
最近很多小伙伴找我要一些 设计模式 基础资料,于是我翻箱倒柜,把这份字节跳动大牛总结的设计模式归纳笔记找出来,免费共享给大家! 据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料! 资料介绍 这份资料非常全面且详细,覆盖了 设计模式 基础学习的方方面面,非常适合初学者入门! 资料也按目录进行编排,每一章下面都有更具体的内容: 有趣的插图: 如何获取? 1. 识别并关注下方公众号; 2. 在下面公众号后台回复关键字「 设计模式 」。 👆长按上方二维码 2 秒 回复「 设计模式 」即可获取资料 另外还给大家准备了Java编程思想 前言 随着 Java 8 的出现,这门语言在许多地方发生了翻天覆地的变化。在新的版本中,代码的运用和实现上与以往不尽相同。 与几年前我们依赖印刷媒体相比,YouTube,博客和 StackOverflow 等网站的出现让寻找答案变得简单。请结合这些学习途径和努力坚持下去。本书可作为编程入门书籍,同时也适用于想要扩展知识的在职程序员。 资料获取方法 扫描下方二维码,发送: java 额外福利 破冰入门Python + 爬虫三大案例(今日头条、淘宝美食、猫眼电影) 👆长按上方二维码 2 秒 回复「 python3 」即可获取资料 本文分享自微信公众号 - 路人甲Java(javacode2018)。 如有侵权,请联系 support

六年工作感悟:身为一名工程师到底应该如何实现自我成长?Android工程师所必经的三个阶段

前提是你 提交于 2021-02-02 00:33:25
引子 最近一直在思考, 作为一名软件开发工程师,到底应该如何实现自我成长,是否有捷径而言? 其实断断续续有过很多思考,也有和各种年龄段的同学们做过不少交流,结合自身的经历,有一些感悟和思考。本文可能可以适用到其他端,不过由于自己是一名 Android 开发工程师,所以就姑且从一名普通的 Android 开发工程师的角度来进行表述吧。 整篇文章可能读下来会比较啰嗦和白话,但句句真言,字字真心,欢迎大家一起交流。整文也只代表个人观点,同学们都可以发表自己的观点即可。 由于感悟文字很多,所以今天讲的就是:工程师所必经的三个阶段。 文章文末会有Android相关的比较系统的学习资料,有需要的自行领取。 工程师必经的几个阶段 我认为每一名软件开发工程师都需要必经三个阶段: 不知道自己不知道啥 知道自己不知道啥 不知道自己知道啥 看起来很绕,但实际真实如此。 不知道自己不知道啥 对于大多数刚刚接触到 Android 开发的学生来说,软件开发是一片浩瀚的海洋,这是一片全新的领域,有着自己的生态圈。所以初入开发行业的学生们,完全 不知道自己还有哪些是需要学习的 ,所以这些同学通常会陷入一个非常迷茫的阶段,尤其是在校学生。 自己当初也是如此,天真的以为计算机专业就是开发游戏,倒腾电脑的专业,所以自己就成了计算机学院的一员。上大学后,才发现和自己想象的完全不一样,依然要学习好多的数学专业课和语言专业课

什么是EDI?如何管理复杂、分层的数据?

无人久伴 提交于 2021-02-01 12:57:02
在帮助两家不同的医疗保险提供商进行功能测试自动化部署时,我发现了他们面临的来自EDI数据的挑战的一些共同点: 大多数EDI工作流程都是从实际文件投递开始的。模拟文件投递是一个挑战。 一个单一的交换可以是方言、版本和消息类型的组合。生成符合该特定模式的消息可能会很繁琐。 用数据驱动EDI消息是必要的。它可能会变得过于复杂,特别是在管理层次结构和数据类型时。 在这篇文章中,我将简单讲述测试人员在使用EDI时面临的这些挑战,以及如何开始用自动化测试来解决这些问题。 电子数据交换(EDI) 首先,让我们回到基础知识上来。EDI是一种消息格式标准,用于在商业实体之间沟通商业信息。企业过去使用纸张进行这些交易(即采购订单、发票,或者在医疗保健行业,例如,注册表格),这非常复杂,而且容易出错: 为了改善这一过程,EDI被设计成标准化的通信,并进行“无纸交易”: 不幸的是,虽然EDI改进了流程,允许公司以电子方式而不是用纸质方式发送信息,但EDI也带来了自己的挑战。最近,我已经能够使用一些软件测试工具来帮助解决这些问题,我也很高兴与你分享解决方案。 在EDI测试中(轻松!)管理数据 在最近的这些医疗保健部署中,我与那些使用HIPAA标准消息定义来生成834文件作为请求和响应的组织合作。这些有效载荷是固定长度的,可能非常复杂。 对于两个团队来说,他们需要发送和接收文件进行测试

201871010123-吴丽丽 《面向对象程序设计(Java)》第八周学习总结

前提是你 提交于 2021-02-01 11:16:28
201871010123-吴丽丽《面向对象程序设计(Java)》第八周学习总结 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11703678.html 作业的学习目标 掌握接口定义方法; 掌握实现接口类的定义要求; 掌握实现了接口类的使用要求; 理解程序回调设计模式; 掌握Comparator接口用法; 掌握对象浅层拷贝与深层拷贝方法; 掌握Lambda表达式语法; 了解内部类的用途及语法要求。 第一部分:理论部分 第六章 接口、lambda表达式与内部类 6.1.1接口 1) Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个接口。 2) 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成。 3) 接口中不包括变量和有具体实现的方法。 4) 只要类实现了接口,则该类要遵从接口描述的统一格式进行定义,并且可以在任何需要该接口的地方使用这个类的对象. 5)声明方式: public interface 接口名 { …… } 接口体中包含常量定义和方法定义,接口中只进行方法的声明, 不提供方法的实现 。 6)类似建立类的继承关系, 接口也可以扩展 。