TangGodBlogs

TangGodBlogs

Slash Youth

建造者模式
前言今天介绍建造者模式,建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。举个简单的例子,比如我们去买电脑,买的是成品而不是散装的零件。JOOQ、dynamicreports 等框架都是使用的建造者模式,链式风格。 正文建造者模式概念建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它...
简单工厂模式
前言面对设计模式这个高大上的敌人,如何找到一个脆弱可以下手的地方尤其重要,经过参考《JAVA与模式》后发现最容易下手但又及其重要的模式,那就是简单工厂模式,书里是这么介绍的:简单工厂模式是最简单的模式,有助于引出工厂方法模式,而工厂方法模式在后面的许多模式都有应用,它在模式的讨论里屡见不鲜。了解工厂方法模式是了解所有模式的起点。看了这段话,我热血澎湃,这么脆弱又及其重要的模式不打你打谁。 正文介绍简单工厂模式之前先通过一个披萨项目的例子来引出问题,然后给出简单工厂模式这种解决方案,然后随着披萨项目的不断扩展,遇到新的问题,引出工厂方法模式,然后又遇到新的问题,引出最终解决方案,抽象工厂模...
设计模式总纲
正文设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现...
适配器模式
前言今天介绍适配器模式,举个生活中的例子,我们笔记本用的到充电器其实就是个适配器,笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?就是靠这个充电器搞定的。 在软件开发中,有时也存在类似这种不兼容的情况,我们也可以像引入一个电源适配器一样引入一个称之为适配器的角色来协调这些存在不兼容的结构,这种设计方案即为适配器模式。 正文适配器模式概念适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作...
JVM内存模型
1.JVM内存模型简介JVM定义了不同运行时数据区,他们是用来执行应用程序的。某些区域随着JVM启动及销毁,另外一些区域的数据是线程性独立的,随着线程创建和销毁。jvm内存模型总体架构图如下:(摘自oracle官方网站) JVM在执行Java程序时,会把它管理的内存划分为若干个的区域,每个区域都有自己的用途和创建销毁时间。如下图所示,可以分为两大部分,线程私有区和共享区。下图是根据自己理解画的一个JVM内存模型架构图: 安利:上图是利用在线画图工具processon,我也是刚上手,个人感觉还不错,各种图例都有,在此安利一下! 2.内存模型2.1.线程私有区2.1.1 程序计数器当...
垃圾回收器
概述说起垃圾收集器(Garbage Collection,GC),大部分人都把这项技术当做Java的伴生产物。实际上GC的历史远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的3件事情: 那些内存需要回收? 什么时候回收内存? 如何回收? 垃圾收集器关注那些数据区域 程序计数器 虚拟机栈 本地方法栈 堆 方法区 程序计数器、Java虚拟机栈、本地方法栈这3个区域都是随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个栈帧...
其他面试需要的概念
公司写任务计划:https://shimo.im/login随笔分类 - 面试技巧:https://www.cnblogs.com/wang-meng/category/857645.html数据库:http://www.cnblogs.com/wang-meng/p/5702025.html阿里巴巴常考面试题及汇总答案:http://blog.csdn.net/natian306/article/details/10858097分布式系统事务一致性解决方案:https://www.cnblogs.com/dinglang/p/5679542.htmlJava互联网架构-京东国美高并发核...
性能测试
1.arrayList -1.使用for循环查找最快 -2.查找速度比linkedList快 84倍 -3.add方法和linkedList的方法速度差不多 2.linkedList -1.指定位置添加使用 -2.使用迭代器循环 -3.删除使用 3.HashMap -使用entity 遍历,要比keyset 和values快0.1倍 4.正则 -1正则对象一定要缓存起来,否则会慢4倍 5.mango -1.mangodb 的查询,查询多条需要用in操作符来完成,若一条一条单个查询,效率会慢一半。(可以直接查找出来,再在java中做筛选操作) 6.js中直接+号拼...
TangGod
酒精无法麻痹我的愁绪