10 ConstXiong

尚未进行身份认证

我要认证

记录编程实践...

等级
TA的排名 613

组合模式在开源代码中的应用

组合模式的作用:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。案例一JDK 的 AWT(Abstract Window Toolkit),使用了组合模式。AWT 中包含了两种组件:容器组件和基本组件。容器组件是 java.awt.Container 的子孙类 基本组件是 java.awt.Component 的子孙类 容器组件和基本组件都是java.awt.Component 的子孙类Container 类中包含了很多基本组件或容器,放在ArrayList...

2020-08-04 01:18:59

享元模式在开源代码中的应用

享元模式的作用:运用共享技术来有效地支持大量细粒度对象的复用。案例享元模式比较经典的应用就是 JDK 中部分基本类型的包装类,缓存了一定数值范围的对象,valueOf 方法转换为包装对象时,如果值在缓存范围内,即返回缓存对象。Byte,缓存了 -128 ~ 127 Short,缓存了 -128 ~ 127 Character,缓存了 0 ~ 127 Integer,缓存了 -128 ~ 127,JVM 启动参数-XX:AutoBoxCacheMax 可以设置范围的最大值 Long..

2020-08-01 08:37:50

外观模式在开源代码中的应用

外观模式的作用:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问,且不会暴露过多的底层实现细节。案例Tomcat 中,catalina.jar 中的 RequestFacade 和 ResponseFacade 两个类就使用了外观模式。servlet-api 中定义了HttpServlet 抽象类,类中的定义了处理 http get、post、delete... 等请求,返回处理结果,对应需要实现方法 doGet、doPost、doDelete...这些方法有两个共同..

2020-08-01 08:36:09

装饰器模式在开源代码中的应用

装饰器模式的作用:动态的给对象增加一些职责,即增加其额外的功能。案例装饰器模式比较经典的应用就是 JDK 中的 java.io 包下,InputStream、OuputStream、Reader、Writer 及它们的子类。以 InputStream 为例FileInputStream 是 InputStream 的子类,用来读取文件字节流 BufferedInputStream 是 InputStream 的子类的子类,可缓存的字节流 DataInputStream 也是Inp..

2020-07-27 22:53:08

Spring中BeanFactory.getBean是否线程安全?

Spring 中 BeanFactory.getBean 方法是线程安全的,执行过程中加了 synchronized 互斥锁【Java面试题与答案】整理推荐基础与语法 集合 网络编程 并发编程 Web 安全 设计模式 框架 算法与数据结构 异常 文件解析与生成 Linux MySQL Oracle Redis Dubbo...

2020-07-26 23:14:01

Spring中ObjectFactory与BeanFactory的区别

ObjectFactory 与 BeanFactory 均提供依赖查找的能力。ObjectFactory 仅关注一个或一种类型的 Bean 依赖查找,自身不具备依赖查找的能力,能力由 BeanFactory 输出;BeanFactory 提供了单一类型、集合类型以及层次性等多种依赖查找的方式。【Java面试题与答案】整理推荐基础与语法 集合 网络编程 并发编程 Web 安全 设计模式 框架 算法与数据结构 异常 文件解析与生成 Linux MySQL ...

2020-07-26 23:13:08

MySQL中如何避免死锁?

尽量以相同的顺序来访问索引记录和表 业务上能够接受幻读和不可重复读,考虑降低锁的级别到Read committed,降低死锁发生的概率 添加合理的索引,走索引避免为每一行加锁,降低死锁的概率 在事务中一次锁定所需要的所有资源,如MyISAM 引擎的表锁 避免大事务,尽量将大事务拆成多个小事务来处理 尽量避免同时并发对同一表进行读写操作,特别是执行加锁且操作数据量较大的语句 设置锁等待超时参数【Java面试题与答案】整理推荐基础与语法 集合 网络编程 并发编程 Web...

2020-07-26 23:12:15

高并发下,如何安全地修改同一行数据?

可以将数据加载到缓存中,利用 CAS 方式进行更新 也可以将所有请求放到同一个消息队列里,异步返回,按顺序执行更新注意:如果使用悲观锁,在并发请求量很大的情况下,会导致服务和数据连接数耗尽,系统卡死【Java面试题与答案】整理推荐基础与语法 集合 网络编程 并发编程 Web 安全 设计模式 框架 算法与数据结构 异常 文件解析与生成 Linux MySQL Oracle Redis Dubbo...

2020-07-26 23:11:22

桥接模式在开源代码中的应用

桥接模式的作用:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。案例桥接模式比较经典的应用就是 JDBC 规范和不同数据库厂商驱动的实现JDBC 中的驱动接口public interface Driver { Connection connect(String url, java.util.Properties info) throws SQLException; boolean acceptsURL(Strin.

2020-07-26 23:09:52

适配器模式在开源代码中的应用

适配器模式的作用:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。开源代码中,哪些地方用到了适配器模式呢?案例一java.util.Enumeration JDK 1.0 提供用于遍历容器类的接口,但是一个公认的设计失误,所以 JDK 1.2 对其进行了重构,新增 Iterator 接口去迭代容器类。JDK 为了保证向后兼容,就在容器工具类 java.util.Collections 的enumeration 方法中使用了适配器模式..

2020-07-26 23:08:59

《深入理解Java虚拟机》读书笔记

为什么看这本书?JVM 这块一直没有系统的学习,在极客时间上买了一个 "深入拆解Java虚拟机" 专栏,专栏是看完了,但是感觉跟看天书一样,基本都忘了。所以希望借助看这本书入个门。书的整体情况整书 400 多页,包含了大量 JVM 配置参数与代码实例,我花了周末一天加三个晚上空余时间看完的,七八小时。读起来没那么累,但没去实践还是比较容易忘记。书提到了这些知识模块:Java 与虚拟机的发展历史 如何编译 JDK Java内存区域 内存溢出异常 垃圾收集器与内存分配策略 虚.

2020-07-21 22:38:07

代理模式在开源代码中的应用

代理模式的作用是为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。由于静态代理会导致类文件大量增多,所以 Java 中动态代理使用的较多。案例一JDK 中的动态代理的使用,实现InvocationHandler 接口,只能代理接口的实现类package com.xiongjun.proxy.dynamicproxy;import java.lang.reflect.InvocationHandler;import..

2020-07-20 23:14:27

建造者模式在开源代码中的应用

建造者模式是将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。JDK 中java.lang.StringBuilder 和java.lang.StringBuffer 两个对字符串操作的类使用了建造者模式。类中的append、delete、replace、insert、deleteCharAt、appendCodePoint 方法,通过传入字符或字符串相关的参数,return this 构造对象。public StringBuilder append...

2020-07-18 00:26:03

原型模式在开源代码中的应用

原型模式是将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新对象。在 JDK 中所有类的默认父类java.lang.Object 中的 clone 方法,就实现快速地浅拷贝一个对象,当然有个前提条件,就是被克隆的对象的类需要实现 Cloneable 接口,否则会抛出异常CloneNotSupportedException。/** * Creates and returns a copy of this object. The precise meaning * of "copy"..

2020-07-18 00:25:10

工厂模式在开源代码中的应用

工厂模式,GoF 的《设计模式》中分为工厂方法和抽象工厂,如果再细一点可以加上简单工厂。下面看一下源码中的工厂模式的使用。实例一JDK 中 java.util.Calendar 类 getInstance 方法使用了简单工厂public static Calendar getInstance(){ return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));}publi.

2020-07-16 22:03:51

不显示滚动条,仍可滚动

css 代码,#divId 为选择器#divId::-webkit-scrollbar { display: none;}【Java面试题与答案】整理推荐基础与语法 集合 网络编程 并发编程 Web 安全 设计模式 框架 算法与数据结构 异常 文件解析与生成 Linux MySQL Oracle Redis Dubbo...

2020-07-16 07:28:28

G2、D3 绘制维恩图

D3 绘制韦恩图示例:http://www.benfrederickson.com/venn-diagrams-with-d3.js/https://github.com/benfred/venn.js/tree/master/examplesG2 绘制韦恩图示例:https://antv-2018.alipay.com/zh-cn/g2/3.x/demo/other/venn.html效果【Java面试题与答案】整理推荐基础与语法 集合 网络编程...

2020-07-16 07:27:35

单例模式在开源代码中的应用

为了知道大牛是如何应用设计模式的,我喜欢扒一扒知名项目中的源码。单例模式的使用场景其实还挺简单,就是一个类只允许创建一个对象,全局共享使用这个对象。在 Java 中实现单例,需要考虑是否懒加载、是否线程安全的问题,实现方式:饿汉式、懒汉式、双重检查、静态内部类、枚举。具体实现代码开源使用实例一JDK 中java.lang.Runtime 类,每个运行中的 Java 应用的环境信息,单例。看下它的注释:* Every Java application has a si...

2020-07-14 00:03:37

《HEAD_FIRST设计模式(中文版)》读书笔记

为什么看这本书?很多推荐书单上都有这本书,适合设计模式的入门。书的整体情况head first 系列的典型风格:很多啰嗦对话与无聊的图片。本书 600 多页,今天看了上午看了一个多小时,下午看了两个小时,加一起应该是 4 个小时左右看完的。书提到了这些知识模块:观察者模式 装饰者模式 工厂模式 单例模式 命令模式 适配器模式 外观模式 模版方法模式 迭代器与组合模式 状态模式 代理模式 复合模式 设计模式由来、分类及理论发展相关介绍 GoF 提到 23 种.

2020-07-11 23:26:08

编码规范

设计原则与设计模式使用好了,能有效地改善代码质量,但非常依赖个人经验。而编码规范简单明了,在提高代码的可读性方面,立竿见影。1、命名长度:足够表达含义的情况下,越短越好;默认的、熟悉的单词可以使用缩写 利用上下文简化命名:借助类的信息来简化属性、函数的命名,利用函数的信息来简化函数参数的命名 可读、可搜索2、注释"好的命名完全可以替代注释",观点有点极端,命名不可能做到足够详细 注释的目的就是让代码更容易看懂 写明"做什么"、"怎么做",起到总结性与文档的作用 让代码结构更清晰.

2020-07-10 00:20:55

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 精彩红人
    精彩红人
    发布高质量Blink获得高赞和评论,进入精彩栏目即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。