设计模式

java常见面试题

人盡茶涼 提交于 2020-12-23 20:13:28
http://www.importnew.com/22637.html http://www.importnew.com/22056.html J2SE基础 1. 九种基本数据类型的大小,以及他们的封装类。 2. Switch能否用string做参数? 3. equals与==的区别。 4. Object有哪些公用方法? 5. Java的四种引用,强弱软虚,用到的场景。 6. Hashcode的作用。 7. ArrayList、LinkedList、Vector的区别。 8. String、StringBuffer与StringBuilder的区别。 9. Map、Set、List、Queue、Stack的特点与用法。 10. HashMap和HashTable的区别。 11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。 12. TreeMap、HashMap、LindedHashMap的区别。 13. Collection包结构,与Collections的区别。 14. try catch finally,try里有return,finally还执行么? 15. Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况。 16. Java面向对象的三个特征与含义。 17.

阿里java岗面试有多难?分享阿里面试真题(附面试专题答案)及P7所要掌握的技能体系!

狂风中的少年 提交于 2020-12-23 18:22:56
秋招结束,从5月中旬开始复习,7月份开始投简历,一直到现在,简单记录一下,今天给大家分享的是我一位幸运拿到阿里offer的朋友的面试经历,疫情刚有好转,相信还有很多朋友是在线上办公的,我也闲来无事,问到了我朋友阿里面试的一些真题,以及我整理的一些真题分享给大家。 这里整理了最近BAT最新面试题,2020船新版本!!需要的朋友可以: 点击这里!!暗号OS! 。希望那些有需要朋友能在今年第一波招聘潮找到一个自己满意顺心的工作! 阿里一面(60分钟):速度问的很快,基本涵盖了所有常考点 项目的情况,redis,消息中间件,数据一致性,分布式session,实现分布式session的方式(除了redis第三方),登录的过程 redis 作用,删除策略,集群,缓存击穿 spring的循环依赖,spring bean的生命周期,事务传播级别 介绍常见的集合,Arrayslist,hashmap,hashset等 常见的并发包类 常见的排序有哪些,说说希尔排序,为什么快? 介绍红黑树,红黑树的特性,红黑树如何进行旋转 mysql,索引结构B+树,hash索引,怎么解决慢查询,什么情况使用不到索引,sql语句的执行流程,覆盖索引的实现 虚拟机,类加载机制,垃圾回收器,cms,ps使用场景 int integer区别(内存位置) 计算机网络三次握手,四次挥手,ddos攻击在哪一阶段 当天晚上加了笔试

lombok使用

半腔热情 提交于 2020-12-23 02:52:36
lombok使用 类注解: data Setter和Getter Value Builder ToString EqualsAndHashCode Cleanup 日志 构造器 Accessors Synchronized 属性注解 懒加载 辅助注解 NonNull Cleanup TOC lombok使用 lombok官网: https://projectlombok.org/ 参考 https://blog.csdn.net/weixin_41540822/article/details/86606513 https://blog.csdn.net/qq_37192800/article/details/79785906 https://blog.csdn.net/weixin_38229356/article/details/82937420 https://blog.csdn.net/sunsfan/article/details/53542374 类注解: data @Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法, @Data(staticConstructor=”methodName”) 来生成一个静态方法,返回一个调用相应的构造方法产生的对象。

阿里的御用框架,MyBatis与设计模式的激情碰撞

↘锁芯ラ 提交于 2020-12-23 00:23:08
前言 Java程序员以前连接数据库是这样的 现在连接数据库是这样的 在传统的JDBC 实现中,我们需要把查询过程写在Java 类中,这样非常不便于后期维护。而使用Mybatis 则可以将查询语句配置在配置文件中,只需要维护好映射关系即可。 Mybatis是一个开源的轻量级半自动化ORM框架,使得面向对象应用程序与关系数据库的映射变得更加容易。熟悉Mybatis的都知道,其源码里涉及到非常多的设计模式,比如 设计模式 Builder模式 : 例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式: 例如SqlSessionFactory、ObjectFactory、MapperProxyFactory; 单例模式: 例如ErrorContext和LogFactory; 代理模式: Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader 包 使用了cglib或者javassist达到延迟加载的效果; 组合模式: 例如SqlNode和各个子类ChooseSqlNode等; 模板方法模式: 例如BaseExecutor和SimpleExecutor

这个 bug 让我更加理解 Spring 单例了

烂漫一生 提交于 2020-12-22 19:52:17
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。 谁还没在 Spring 里栽过跟头呢,从哪儿跌倒,就从哪儿睡一会儿,然后再爬起来。 讲点儿武德 这是由一个真实的 bug 引起的,bug 产生的原因就是忽略了 Spring Bean 的单例模式。来,先看一段简单的代码。 public class TestService { private String callback = "https://ip.com/token={token}"; public String getCallback() { Random random = new Random(); int number = random.nextInt(100); System.out.println("本次随机数为:" + number); callback = callback.replace("{token}", String.valueOf(number)); return callback; } public static void main(String[] args) { TestService testService = new TestService(

浅谈JS面向对象

空扰寡人 提交于 2020-12-22 06:45:11
浅谈JS面向对象 一 、什么是面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。注重代码的过程部分。 二、什么是面向对象 最先出现在管理学中,是一种管理资源(资源等于空间)和能力(能力导致运动,运动等于时间)的方法论。 面向对象是一种思维方法 面向对象是一种编程方法 面向对象并不只针对某一种编程语言 三、面向对象和面向过程的区别和联系   “面向过程”是一种以过程为中心的编程思想。   就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。   面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际的实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.   而面向过程可以说是从细节处思考问题。   “面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。   面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.   面向对象也可以说是从宏观方面思考问题 四、面向对象与面向过程各自的优缺点 面向过程   优点:性能比面向对象高

由Spring应用的瑕疵谈谈DDD的概念与应用(二)

。_饼干妹妹 提交于 2020-12-21 22:16:57
在 上一篇 文章中,通过Spring Web应用的瑕疵引出改善的措施,我们讲解了领域驱动开发的相关概念和设计策略。本文主要讲解领域模型的几种类型和DDD的简单实践案例。 架构风格 在《实现领域驱动设计》一书中提到了几种架构风格:六边形架构、REST架构、CQRS 和事件驱动等。在实际使用中,落地的架构并非是纯粹其中的一种,而很有可能户将上述几种架构风格结合起来实现。 分层架构 分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。在严格分层架构中,某层只能与位于其直接下方的层发生耦合,而在松散分层架构中,则允许某层与它的任意下方层发生耦合。DDD分层架构中比较经典的三种模式:四层架构、五层架构和六边形架构。 四层架构 Eric Evans在《领域驱动设计-软件核心复杂性应对之道》这本书中提出了传统的四层架构模式: User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人。 Application为应用层,定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是与其它系统的应用层进行交互的必要渠道。应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调任务,分配工作

谈谈DDD本质

99封情书 提交于 2020-12-21 20:33:29
这是Bella酱的第 89 期分享 作者 | SnoWalker 来源 | 分布式朝闻道 学习DDD的时候,作为开发,我们更关心它在技术层面的东西,尤其体现在DDD的分包方式、编码技巧等方面。 自然的,我们不禁发问,用了DDD的分包,就是实践落地了DDD了么? 不卖关子,直接说答案,并不是。 用了DDD的分包,只能说满足了DDD的"形",并没有抓住DDD的"神"。DDD的神是什么,归根到底还是 面向对象,领域建模 。所谓的各种分包方式本质上还是为了满足DDD面向对象的本质,方便开发者进行代码编写而提供的一种"战术设计" 工具 。 要深入讨论这个问题,我们需要花一点时间来学习讨论一下DDD中常见的几种分包。 DDD分包概述 基于DDD的分包主要有两大流派:分层架构以及六边形架构。 分层架构以四层架构为主,基于四层架构又诞生出衍生的五层架构、六层架构等等(限于篇幅以及讨论重点,本文中我们只讨论四层架构)。 六边形架构出自 Robert C Martin(没错,就是传说中的鲍勃大叔)提出的整洁架构,后来者不断探索,又衍生出了洋葱架构。 这个过程可谓是百家争鸣。实际开发中,最为我们熟知的当属四层架构与六边形架构了,其余的各种架构都是基于这两种架构方式的变体。 四层分层架构 四层架构的分层如下图: 从上往下依次为: |- userinterface 用户界面层/表示层 |-

.NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记

浪尽此生 提交于 2020-12-21 16:24:11
2.2.2 核心模块--日志 ILogger 的使用 日志的 ID 日志的分类 日志的级别 LoggerProvider 日志的最佳实践 .NET Core 和 ASP.NET Core 中的日志记录:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0 ILogger 的使用 在 Get 方法中添加日志 WeatherForecastController.cs private readonly ILogger<WeatherForecastController> _logger; public WeatherForecastController(ILogger<WeatherForecastController> logger) { _logger = logger; } _logger.LogInformation("Get action executed"); 日志的 ID _logger.LogInformation(new EventId(1001, "Action"), "Get action executed"); 日志的分类 根据不同的类名区分 private readonly ILogger<WeatherForecastController>

NTP网络时间协议配置之后启动不了

北城余情 提交于 2020-12-21 09:16:23
NTP网络时间协议配置之后启动不了 有时候我们会想要配置我们自己的系统,使其成为某网址 的 NTP 客户端 就需要配置chrony.conf文件 步骤: 先检查是否下载有chronyd (同步时间) 输入命令: systemctl status chronyd 看到绿色的,就松一口气啦, 在这说一下退出吧:就是按ctrl+C就回到输入命令模式; 第二步进入chronyd的配置文件 命令: vim /etc/chrony.cof 正确进入的是下面这个图片哟,不是就证明错啦! 3. 编辑内容 如图下红框中的内容 ,注意观察上图与下图有什么是相同的,什么是不同的,什么是要加上去的,什么是要保留的。 特别提示:server 千万千不能省略,不能遗忘。遗忘后果很严重哟,主机名也不能错 编辑好之后,保存退出就可以了 4.最后的设置 命令:systemctl restart chronyd //重启chronyd systemctl enable chronyd 简单内容,希望能帮到正在看的人儿呀,xixi~ 来源: oschina 链接: https://my.oschina.net/u/4389114/blog/4817277