设计模式

最新28道java基础面试题-上

不问归期 提交于 2020-12-12 21:24:07
28 道 java 基础面试题 1 、 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《 Java 与模式》或《设计模式精解》中关于桥梁模式的部分)。 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性

Java工程师需要会什么?岗位要求

老子叫甜甜 提交于 2020-12-12 14:52:45
  IT行业作为新兴行业近几年无论是从就业难度还是岗位待遇都是各行的领头羊,Java工程师在这其中占很大部分,成为一个Java工程师需要掌握什么技能呢?   1.CoreJava,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要知道它们的实现,不同的集合类有什么区别,然后才能知道在一个具体的场合下使用哪个集合类更适合、更高效,这些内容直接看源代码就OK了。   2.多线程并发编程,现在并发几乎是写服务端程序必须的技术,那对Java中的多线程就要有足够的熟悉,包括对象锁机制、synchronized关键字,concurrent包都要非常熟悉,这部分推荐你看看《Java并发编程实践》这本书,讲解的很详细。   3.I/O,Socket编程,首先要熟悉Java中Socket编程,以及I/O包,再深入下去就是JavaNIO,再深入下去是操作系统底层的Socket实现,了解Windows和Linux中是怎么实现socket的。   4.JVM的一些知识,不需要熟悉,但是需要了解,这是Java的本质,可以说是Java的母体,了解之后眼界会更宽阔,比如Java内存模型(会对理解Java锁、多线程有帮助)、字节码、JVM的模型

mybatis之动态代理

China☆狼群 提交于 2020-12-12 09:39:06
mybatis之动态代理的应用 在前文(https://www.cnblogs.com/NYfor2018/p/9093472.html)我们知道了,Mybatis的使用需要用到Mapper映射文件,一个是映射接口,另一个是映射XML文件(此处不详谈映射文件XML),在应用中我们可以感觉到,映射接口似乎对接着XML文件中的实现命令,可是我们在运行程序是时候调用的往往是Mapper接口,而不是一个包含逻辑的实现类。很显然Mapper产生了代理类。 首先,什么是代理模式? 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 (取自百度百科: https://baike.baidu.com/item/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/8374046?fr=aladdin ) 举个栗子,如图: 我们租房的时候一般是去找中介,而不是直接去找包租婆。放在代理模式这里来说,就是,我们在访问真实的对象的时候,往往不是直接去访问真实对象,而是通过代理对象,来对真实对象进行访问。 为什么要使用代理模式? 通过代理,一方面可以控制如何访问真正的服务对象,提供额外的服务。另外一方面有机会通过重写一些类来满足特定的需要。 就像是

C++ Singleton单例模式

对着背影说爱祢 提交于 2020-12-12 05:13:30
转自: C++ Singleton (单例) 模式最优实现 索引 静态化并不是单例 (Singleton) 模式 饿汉模式 懒汉模式 (堆栈-粗糙版) 懒汉模式 (局部静态变量-最佳版) 范例代码和注意事项 (最优实现) 扩展阅读 参考资料 我非常赞成合理的使用 设计模式 能让代码更容易理解和维护, 不过我自己除了简单的 单例 (Singleton) 模式 外, 其它都很少用 :-) 可耻的是, 直到前段时间拜读了 C++ In Theory: The Singleton Pattern, Part I , 我才发现自己的 单例 (Singleton) 模式 写法还有改进空间. 文章作者 J. Nakamura 以 Log 日志类列举了 单例 (Singleton) 模式 的三种写法: // log.h #ifndef __LOG_H #define __LOG_H #include <list> #include <string> class Log { public: virtual void Write(char const *logline); virtual bool SaveTo(char const *filename); private: std::list<std::string> m_data; }; #endif // __LOG_H 静态化并不是单例

Android事件分发机制面试题

让人想犯罪 __ 提交于 2020-12-12 02:19:31
总结 1. 为什么会有事件分发机制 安卓上面的View是树形结构的,View可能会重叠在一起,当点击的地方有多个View可以响应的时候,这个点击事件应该给谁呢?为了解决这个问题,就有了事件分发机制。 PhoneWindow:是抽象类Window的实现类,抽象类Window是所有视图最顶层的容器,包括View视图的外观和行为都归Window管。 DecorView:PhoneWindow的内部类,通过DecorView传递信息给下面的View,下面的View也通过DecorView返回消息给PhoneWindow。 2. 事件分发的三个主要对象:Activiy、ViewGroup、view 布局加载过程 用户执行Activity的setContentView方法,内部是PhoneWindow的setContentView方法,在PhoneWindow中完成DecorView的创建,PhoneWindow是window的实现类. DecorView是Activity的根View,也是PhotoWindow的内部类,并且继承了Framlayout. DecorView将屏幕氛围2个部分:titleView和contentView,我们平常加载的布局就是ContentView. 3. 三个重要方法: viewgroup 拥有这三个方法 acitivity和view没有拦截方法

想写好前端,先练好内功

孤者浪人 提交于 2020-12-12 00:42:10
源自: https://www.yuque.com/es2049/blog/al62bl 前言 封不平听在耳里,暗叫:“到这地步,我再能隐藏甚么?”仰天一声清啸,斜行而前,长剑横削直击,迅捷无比,未到五六招,剑势中已发出隐隐风声。他出剑越来越快,风声也是渐响,剑锋上所发出的一股劲气渐渐扩展,旁观众人只觉寒气逼人,脸上、手上被疾风刮得隐隐生疼,不由自主的后退,围在相斗两人身周的圈子渐渐扩大,竟有四五丈方圆。泰山派的一个道士在旁说道:“气宗的徒儿剑法高,剑宗的师叔内力强,这到底怎么搞的?华山派的气宗、剑宗,这可不是颠倒来玩了么? 《笑傲江湖》中的“剑宗余孽”封不平本想仗着有嵩山派撑腰,一举夺了华山掌门宝座。可打了半天剑法上占不了便宜,最后只能使出“狂风快剑”,企图以内力取胜。可见,任何高明武功若无内功心法相辅,也是徒劳无功。 说回前端,如今的前端技术栈就如同武侠小说中的江湖一样,各门各派自成一体,可谓“百花齐放”、“百家争鸣”。 这边 React 、Vue 、AngularJS 、JQuery 谁还都谈不上能一统江湖。“武林新贵” Flux 、Redux 、Mobx 们已经忙着争夺谁是数据流框架老大。Native 端 RN 刚偃旗息鼓,Weex 就大有“ I’m the everywhere ”之势。连备受争议的 GraphQL 内部都还有 Apollo、Relay 掐来掐去。

Java网络编程:实现QQ邮件发送客户端

半腔热情 提交于 2020-12-11 17:46:36
目录 一、目标介绍 1、认识SMTP(邮件传输协议) 2、POP3(邮件接收协议) 二、基于Base64编码邮箱及授权码 1、开通QQ邮箱SMTP/POP3服务 2、Java编写BASE64编码程序 三、telnet命令发送邮件 四、Java图形界面进行SMTP交互发邮件 1、编写客户端类 2、创建QQ邮件发送图形界面 五、总结及下篇预告 一、目标介绍 这篇博文记录学习使用Java实现类似QQ发送邮件的客户端,打算分为上下两篇完成,上篇从零开始学习,认识计算机网络邮件传输协议(SMTP、POP3),并开通QQ邮箱的smtp/pop3服务,为之后程序设计做准备,自行实现简单的Java GUI,通过命令方式发送邮件;下篇基于前面的基础,实现基本完整功能的,类似我们平时QQ邮件发送的客户端,图形化界面简便了发送操作,另外增加了接收服务器反馈信息的功能,以后就可以使用自己写的邮件发送程序给其他人发邮件啦,更快更方便๑乛◡乛๑ 1、认识SMTP( 邮件传输协议 ) SMTP(简单邮件传输协议,RFC821) 是一种提供可靠且有效的 电子邮件传输协议 。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要 用于系统之间的邮件信息传递,并提供有关来信的通知 。 2、POP3(邮件接收协议) POP3,全名为Post Office Protocol - Version 3,即邮局协议版本3

java实战项目教程分享(干货,建议收藏)

主宰稳场 提交于 2020-12-11 13:35:53
前言 :很多初级java程序员都活遇到的问题,不管是培训完,还是自学的,到了写简历的时候,没啥写的,尤其是速成班的那种培训,三四个月的时间,只是把基础学了一遍,还不知道学没学会,项目实战就别提了,登录注册都没弄明白,培训老师还叫你包装两三年的,哎真的是为了利益不择手段,哎,有点跑题了.下面就给大家分享几个java实战项目,给你简历增加点色彩,顺便还可以巩固一下之前学过的知识. 目录 一:记账本 二:天猫商城: 三: 趋势投资 一:记账本 学习地址 : https://how2j.cn/k/hutubill/hutubill-tutorials/710.html 本项目是基于Swing和JDBC开发的图形界面桌面应用,涵盖了J2SE的绝大部分基础知识,通过这个项目能运用和锻炼几乎大部分的J2SE知识和技能。 功能预览: 涉及到如下内容: 基础内容: 面向对象 字符串数字 日期 中级内容: 异常 ,集合,JDBC, 反射机制,I/O,Swing, 利用TableModel更新数据, 图形界面的皮肤 高级内容: 图表chart动态生成,数据库的备份与恢复,自定义圆形进度条 软件设计思想: 单例模式,面板类与监听器类松耦合,Entity层设计,DAO层设计,Service层设计 业务常见处理手法 : CRUD操作,配置信息,配置信息初始化,报表生成,一对多关系,多对一关系 二:天猫商城:

Java基础之枚举

守給你的承諾、 提交于 2020-12-11 13:33:42
枚举简介:   什么是枚举类?类里面的对象是有限个的,可以给枚举出来(主要是类中对象是有限个)。   JDK1.5之前需要自定义枚举类   JDK 1.5 新增的 enum 关键字用于定义枚举类   若枚举类只有一个成员, 则可以作为一种单例模式的实现方式 一、自定义枚举类:   枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰   枚举类的使用 private final 修饰的属性应该在构造器中为其赋值   若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数 public class Enum_One { public static void main(String[] args) { EnumSeason es1 = EnumSeason.es1; System.out.println(es1 + "***" + es1.getSeasonName()); EnumSeason es2 = EnumSeason.es2; System.out.println(es2); EnumSeason es3 = EnumSeason.es3; System.out.println(es3); EnumSeason es4 = EnumSeason.es4; System.out.println(es4); } } //

怎样提高js的编程能力

与世无争的帅哥 提交于 2020-12-11 08:00:48
1,学习js分几个阶段,没入门,入门初学者,中级水平,高级水平,ppt水平。 2,没入门的如何学习? 我当初是先学jquery,有css和html基础,有css基础看jq的语法很简单,就是选择符,jq的api懂高中英语就够了,猜也猜的出来意思,然后下载基本jq的chm手册,对着挨个看一遍。(这个挨个看一遍的意思就是一行一句的逐个看一遍,看不懂的别死扣,先看完再说)。 看完一遍之后,心中有数,哦,原来有个ajax函数可以访问网络资源,有个success可以写回调方法,超时怎么办?几个一起同时发怎么办?不管了,用到再说。哦,原来有个find函数可以查找dom节点,哦,原来有个serialize函数可以序列化表单值,哦,原来有个toggle函数可以做切换用,哦,有个fn可以挂着写插件用,哦,切换cls这样做就行了,哦,请求json数据这样配置参数就可以了。 做到了解,你就成功了,用到的时候知道jq能干什么,不能干什么,干什么的时候去看哪一章,再去仔细研究,做东西开始有点慢,做起来几个东西之后就手熟了。 同理,我学习yui2,kissy,mootools,nodejs,react,ng,甚至swift部分也是这样对着手册来的,反复几遍就可以了。 入门的意思就是概括一下,我知道有哪些api能干什么,具体怎么干,用的时候再说。 2,入门初学者。 我看完手册了,也写了几个小项目了