自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

「有且仅有」

闻道有先后,术业有专攻,如是而已

  • 博客(96)
  • 资源 (3)
  • 收藏
  • 关注

原创 ThreadLocal

我们知道线程也是一个「对象」,当线程这种对象想为我们提供一个「可以存取我们自定义变量的功能时」,来看下它是怎么做的。

2018-06-05 16:46:01 406

原创 观察者模式 Observer Pattern

父博文地址:设计模式 - Design Patterns一、是什么定义:观察者模式定义了对象之间的「一对多依赖」,当一的对象改变时,它所有的依赖者都能够收到通知。行为:一对多依赖中,「一」的一方保存所有「多」的一方的实例。二、实例1. 类图的实现Subject和ConcreteSubjectpublic interface Subject { ...

2018-05-27 13:23:59 1096 1

原创 装饰者模式 Decorator Pattern

一、是什么问题使用继承是静态的扩展:随着系统功能增多造成了类数量指数级增加。且基类的功能并不适用于所有子类。寻找一个设计模式原则开闭原则:类应该对扩展开放,对修改关闭。换句话说:在不修改类的前提下扩展类。装饰者模式定义动态的将责任附加到对象 上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。类图如下:二、问答AbstractDecorator ...

2018-05-27 08:46:53 521

原创 工厂方法 Factory Method

父博文地址:设计模式 - Design Patterns一、是什么?作用当我在超类中写操作产品的业务逻辑,而想把创建产品的行为推迟到子类时,我可以使用工厂方法。将客户(超类中的业务代码)和具体创建对象的代码解耦。行为工厂方法利用继承,把创建对象的工作推迟到子类(在子类覆盖工厂方法创建对象)。二、实例上面类图的实现Creator代码:pub...

2018-05-20 14:09:55 539

原创 抽象工厂 Abstract Factory

父博文地址:设计模式 - Design Patterns一、是什么?作用:当我需要创建一个产品家族(很多产品)时,我可以使用抽象工厂。客户通过抽象接口来创建产品家族,而不需要知道实际产出的具体产品类型。实现了解耦客户和具体产品。行为定义一个抽象工厂接口,每个抽象工厂的子类都能创建所有产品家族的产品。二、实例上面类图的实现其它代码就不给了按照...

2018-05-20 13:49:17 500

原创 简单工厂 Simple Factory

父博文地址:设计模式 - Design Patterns一、是什么?简单工厂(通常也被称为“工厂模式”)并不属于GoF的23个设计模式,是另外的一个被广泛运用的设计模式。作用:分离客户和实际创建对象的代码。行为:将创建对象的代码搬到一个新的类 - 称为简单工厂类,提供成员方法或静态方法根据传入参数来创建不同产品。二、实例简单工厂类更多时候会使用static而不是...

2018-05-19 22:53:50 480

原创 全角和半角

一、是什么?「全角」和「半角」是指计算机中CJK 字符的显示格式。(读完全文就可知,这是个不算太严谨但可以稍加补充解释,就能严谨的定义)字符存储空间在计算机字符被设计时,西方字符,例如拉丁字母、符号和数字都被归位到了「1字节」所能表示的「256」个空间中,这表现在「ASCII」字符集和「ISO-8859-1」字符集中。因此,这些字符也被称为: SBCS (Single Byte Ch...

2018-05-12 23:31:57 5954

原创 为什么我们需要Spring Framework ?

一、为什么我们需要Spring Framework ?1. 从J2EE说起1998 年Sun 公司发表JDK 1.2 时,分别发表了标准版-J2SE、企业版-J2EE、微型版-J2ME。J2EE 诞生。2005 年Java One 大会上Sun 公布了JDK 1.6,J2XX 全部改名为JavaXX,J2EE 改名为JavaEE。2018 年3月,Eclipse 基金会将Java...

2018-04-07 20:04:08 2628

原创 设计一个RESTful 规则

一、什么是RESTful历史Roy Thomas Fielding (菲尔丁) 是HTTP 协议的主要作者之一。它在2000年于加州大学艾尔文分校所做的博士毕业论文Architectural Styles and the Design of Network-based Software Architectures 中,描述了一种称为REST 的网络软件架构风格,目的是方便不同软件在网络中互相传递消息

2018-03-23 11:45:36 498

原创 Apache Kafka 简介与使用

KafkaApache Kafka is a distributed streaming platform. It has three key capabilities:可以使你能pub/sub streams of records. 从这方面看,它很像一个消息队列。使你可以存储streams of records in a falut-tolerant(容错的) way.可

2017-07-05 22:27:56 7223

原创 单例模式 - Singleton Patterns

单例模式是最容易理解的设计模式。道理简单,不过如何写出一个“正确”的单例模式一开始并不简单。Talk is cheap. Show me the code.

2017-04-23 20:21:16 523

原创 Git 常用配置

一、SSH首先要明白,Git 和SSH 的关系是:Git 使用了SSH 协议构建一个安全传输通道。SSH 协议大体是这样运作的:SSH 下的Client 发起对Server 的TCP 连接成功后,Server 会首先向Client 出示自己的身份信息,在Client 操作信任后进入下一步。接着双方会协商生成一个对称密钥,用于加密本次会话其后所有传输的数据。最后Server 需要对Cl...

2017-04-14 15:40:44 1117

原创 多媒体-声音

1. 声音信号声音是由于物体震动而产生的一种连续的波,称为声波。声波在时间和幅度上都是连续的模拟信号,称为模拟声音信号 。 声音=声波=模拟声音信号声音 = 声波 = 模拟声音信号 // TODO 音波图声音信号的两个基本参数是:幅度和频率;幅度:指声波的振幅,通常用声压级表示,计量单位为分贝(dB);频率:指声波每秒变化的次数,用Hz表示。 人耳能听到的频率范围

2017-03-14 23:27:31 2813

原创 WEB即时通讯/消息推送

写在前面通常进行的Web开发都是由客户端主动发起的请求,然后服务器对请求做出响应并返回给客户端。但是在很多情况下,你也许会希望由服务器主动对客户端发送一些数据。那么,该如何实现这个需求,或者说该如何向网页推送消息呢?一、推送方式我们知道,HTTP/HTTPS协议是被设计基于“请求-相应”模型的,尽管HTTP/HTTPS可以在任何互联网协议或网络上实现,但这里我们只讨论在Inte

2017-03-09 22:12:04 31360 8

原创 Redis 主从、哨兵Sentinel、Jedis

上篇说到了Redis安装、运行现在记录一下,Redis主从复制的配置一、配置在Master上修改redis.conf// 不想用密码,所以把保护模式设置为noprotected-mode no// 其实master上不需要配置什么,这里只是取消了保护模式在Slave1和Slave2上修改redis.conf// 同样关闭保护模式protected-mode n

2017-02-15 15:52:48 10481 2

原创 代理模式 - Proxy Patterns

本篇的父博文是:设计模式 - Design Patterns代理模式 Proxy Patterns一、意义Design Patterns 一书中对代理模式的整体描述是这样一句话。 Provide a surrogate or placeholder for another object to control access to it. 代理模式为其它对象提供一个代理,

2016-12-31 00:01:03 816

原创 Eclipse - git全局ignore

一直在烦恼设置不好git的全局ignore,导致那么多项目需要一个一个的添加ignore文件。今天终于发现原来是我设置的有问题,下面附上正确设置:打开Preferences -> Team -> Git -> Configuration 就是设置一个用户配置文件,位置随意;.gitconfig内容[user] name = xxx email = [email protected][co

2016-11-18 20:18:17 8057 2

原创 Nginx简介、安装

其实网上已经有很多教程了,这里只是作为自己一个正确操作的记录,并加入一点更加人性化的解释使的过程更好理解;一、Nginx简介Nginx 读作“Engine X”,是一个高性能且轻量级的HTTP和反向代理服务器,也是IMAP/POP3/SMTP服务器。Nginx 是由Igor Sysoev 为俄罗斯访问量第二的Rambler.ru(漫步者)站点开发的:Nginx 的源代码是以类

2016-10-08 15:54:34 683

原创 哈希表、Java中HashMap

哈希算法,是一类算法;哈希表(Hash Table)是一种数据结构;哈希函数,是支撑哈希表的一类函数;Map是映射、地图的意思,在Java中Map表示一种把K映射到V的数据类型;HashMap是Java中用哈希数据结构实现的Map;一、Hash算法1. 是什么?查词典 先来看英语翻译:hash 英 [hæʃ] 美 [hæʃ]n. 剁...

2016-08-05 01:24:46 22462 14

原创 再看JavaEE

一年前刚开始写博客时写了篇《JavaEE总论》,又工作了一年,今天无意间回过头来看到这篇文章颇有些感慨,感觉对一个事物的认识一定是一个渐进的过程,每过一段时间就会有一些新的认识。 今天就是这样,有一些新的认识想写下来分享给大家。再看JavaEE来到Oracle 官网,进入JavaEE 菜单,如下图: 可以看到,选项卡依次是:综述、下载、文档、社区、技术、练习。这其中:技术:这个里面是所有的Ja

2016-06-25 17:43:37 1207

原创 RPC框架与Dubbo完整使用

这并不是原理性的解释文章。只是快速入门,还有一个完整的Java例子。 一篇我觉得不错的文章推荐:深入浅出 RPC - 浅出篇 一、RPC什么是RPC?RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。RPC的目标是:使得程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单。并且屏蔽编程语言的差异性。要实现上述目标,首先的是设计一

2016-06-21 19:28:05 52434 5

原创 Zookeeper简介、安装与使用

这篇文章我试图简单易懂的做入门指导,而不是也不想过多描述定义和原理。去官网点这里一、是什么Apache Zookeeper 原来是Hadoop 的一个子项目,现在是Apache 的一个顶级项目。引用一下官网的介绍: Zookeeper 是给分布式应用使用的一个高性能的协调服务(coordination service)。它暴漏公共服务 - 比如命名、配置管理、同步and group servi

2016-06-18 21:40:37 4660

原创 Linux下安装PHP

一、概述其实PHP官网有安装向导:官方各种情况的安装向导点这里查看,但这个不能完全助你成功,还是得看看我这个。注意:首先明确一点,安装分很多种情况,比如不同的OS、不同的Linux发行版、甚至不同的Web服务器也不一样。 那么我这里介绍的安装背景是:CentOS7 + Apache2.4 + PHP5.6 + MySQL5.6 下,PHP的源码编译安装。如果不需要MySQL的

2016-06-09 23:35:07 2221

原创 Linux安装MySQL

记录下安装过程而已一、概述有很多种情况和方法,需要具体问题具体分析,那如何分析呢?很简单啊,官网文档上有各种情况下(不同OS、不同安装方式等等)的安装介绍。(5.6地址)二、步骤环境说明: OS:CentOS7 版本:我安装的是Generic Binaries版本,它的文件名一般是这样:mysql-VERSION-OS.tar.gz。 具体来说我的是:mysql-5.6.30-linux-gl

2016-06-07 20:35:03 2516

原创 Servlet的历史与规范

一、Servlet历史1. Servlet的由来背景 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式随之火爆发展起来。 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源,比如html、css等。 但是可以想象:根据用户请求的不同动态的处理并返回资源是理所当然必须的要求。CGI 必须要满足上述需求,所以CGI(Common Gat...

2016-05-29 21:42:39 13462 6

原创 Win10 + VMware-CentOS7文件共享、网络连接

一、目标环境:主机 - Windows 10, 64-bit (Build 10586) 10.0.10586(物理机);客户机 - CentOS7,CentOS-7-x86_64-DVD-1511(虚拟机);虚拟机软件 - VMware 12 Pro 12.0.0 build-2985596(承载客户机的软件);目标:文件共享建立一个共享文件夹,使使主机可以和客户机共享文件。网络连接

2016-05-16 14:17:38 18182

原创 Apache2.4+Tomcat8负载均衡

重新做个Demo记录一下1、环境准备需要的软件:JDK/JREApache httpd2.4(跟2.2有不少不同点)Tomcat8若干tips:tomcat和apache httpd正好我有博客介绍怎么装;Linux中Apache安装、配置、加为服务 Tomcat - 在Windows & Linux 设置为service Tomcat这个需要稍微说下,多个tomcat的配置方式其实就

2016-05-12 00:24:21 4776 4

原创 生产者消费者问题、Java实现

生产者消费者问题(Producer-consumer problem)也可以叫有限缓冲问题(Bounded-buffer problem),是一个经典的进程/线程同步问题。

2016-05-10 00:11:58 10925 2

原创 Java为什么要设置环境变量、JAVA_HOME

1. 为什么要说这个问题?想起来两年前刚学习Java时,被要求先要设置环境变量,自然不解,随后网上找答案。现在想来感觉当时看到的答案都是神神叨叨,含糊不清,没有几个说的明明白白的。当然也有可能是当时的我没看明白吧…总之,相信我,看了我的博客,你不用再找别的地方了!2. 环境变量环境变量 就是英文直译:Environment Variable 。变量 知道吧? 对,就是可以随意给其赋值的一个存储单

2016-05-07 00:48:48 37679 9

原创 Java线程模型、线程状态 - 线程(1)

1. 概述众所周知,线程 - Thread 是比进程 - Progress 更轻量级的调度单位。简单来说,引入线程带来的好处是: 可以把一个进程 的资源分配和执行调度分开,各个线程 既可以共享进程 资源(内存地址、文件I/O等),又可以独立调度。线程实现方式: 主流的操作系统都实现了线程 ,而编程语言一般会提供关于线程 的统一API操作。那么,编程语言如何去调用系统线程 呢?这...

2016-05-06 15:26:56 6577

原创 Linux、开源软件发展史

今天,Linux以及开源软件已经占据了大部分企业的服务器。但是,和我一批差不多刚刚进入软件行业几年的程序员来说,我们现在只能被动的接受和使用这些东西,如果不认真广泛的搜索一大堆资料,我们真的很难了解它们的过去…… 试问,你不了解它的过去,你怎么参与到它的未来呢?概述我们真的离美国、离硅谷、离那些不算遥远“激情燃烧的岁月”太远了! 今天,我要尝试去发掘那些过去,认真了解我们眼前的自由软件

2016-05-03 20:23:23 10281 5

原创 Redis安装、运行

1. 什么是redisredis是一个开源的,内存数据结构存储(in-memory data structure store),可以用作:databasecachemessage broker(消息总线/代理)既然是数据结构存储,那么它支持以下数据结构:stringhashlistsetsorted set with range query(范围查询排序的集合)

2016-05-02 15:32:39 1124

原创 C语言、编程语言发展史

以铜为鉴,可正衣冠;以古为鉴,可知兴替;以人为鉴,可明得失。了解和学习一门语言、一个系统乃至方方面面的任何东西时,如果不知道其历史和现状而只是一上来就一味地闷头苦学,你就很容易“一叶障目不见泰山”。这样火急火燎的就上手苦干,私以为大错特错,所谓“学而不思则罔”。当然,上手苦干也是之后的很重要的部分。了解C语言的历史,就不得不慢慢品味如下这long long ago 的故事,这涉及到了很多公司和人物

2016-05-01 12:07:27 32952 5

原创 MySQL实现类似Oracle的序列 - sequence

1. 介绍想要将varchar类型的数据作为主键,并要求能按自定义规则自增,这在MySQL是没有原生支持的但是想要模拟实现一个其实并不复杂,思路如下: 首先,定义一张表sequence,每一行记录就可以作为一个序列,然后在字段上定义当前值、自增规则; 接着,定义一个next函数,用来获取下一个可用的自增主键2. 实现总体结构图:建立sequence tabledrop table if

2016-04-19 16:36:02 7389 2

原创 Javadoc使用

1. 概要javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同时形成程序的开发文档了。本文要说的是:通过javadoc生成APIDoc的过程,使用了Eclipse在Windows下的表现形式就是它了: 2. 注释模板使用我这种注释代码能生

2016-04-19 15:21:43 4789

原创 Java线程和线程同步 - 线程(2)

1. 概述Java中的线程表现为Threadclass,创建线程的唯一方式就是创建此类的一个实例对象2. 同步Java提供了很多种线程之间通信的机制,最基本的一种就是 synchronization - 同步,这是通过 monitor - 监视器来实现的首先,所有对象都关联着一个监视器,线程可以锁定或者解锁此监视器; 其次,且同一时间只能有一个线程可以锁定监视器,如果有其它线程想要尝试锁定的话它就

2016-04-19 00:28:09 943

原创 JVM中Java对象的创建

1. JVM中对象的创建过程在语言层面上创建对象通常仅仅是一个new关键字,而在虚拟机中,对象(普通对象,不包括数组和Class对象)的创建时怎样的过程呢?当JVM遇到一个new指令时,首先,检查这个new指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化。如果没有,则会先进行类加载过程。在类加载通过之后,JVM将为新生对象分配内存。对象所需内

2016-04-17 17:06:23 1979

原创 Java线程安全 - 线程(3)

1. 线程安全《Java Concurrency In Practice》的作者Brian Goetz对“线程安全”有一个比较恰当的定义: 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调度方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的原文: A class is thread-sa

2016-04-15 18:09:36 1920

原创 面向对象 Object-Oriented

1. 面向过程编程思想 站在计算机角度去抽象问题和解决问题的方式这是在软件业发展初期阶段的方式,程序编写都是以算法为核心,程序员会把“数据”和“过程”分别作为独立的部分来考虑2. 面向对象编程思想 站在现实世界角度去抽象问题和解决问题的方式能让程序员可以用符合现实世界的思维方式来编写和组织程序,能大大提高生产效率和程序所能达到的规模结论:并不是说面向过程不好、low,而是说面向对象是随着

2016-04-15 17:27:27 608

原创 SQL面试题总结、解答

重新整理练习一下常见的SQL面试题,按照经常出现的大题来分 我一直认为SQL不知道怎么写是因为:一些需求语句无法直译为SQL,必须转换方向翻译 这和中英互译是差不多的,如果按照字面意思,大部分语句都会翻译错误1. 学生 - 课程数据库有3张表,分别为学生表:student(s_no, s_name, s_sex, s_age, s_dept)课程表:course

2016-04-13 10:12:07 1853 1

zTree-zTree_v3-master

zTree-zTree_v3-master是一个非常好用的js属性框架,基于Jquery的。大家可以试试,有非常多的定制功能。

2014-11-16

ueditor1_4_3-utf8-jsp

ueditor1_4_3-utf8-jsp是百度开发的富文本编辑器,这个版本是基于jsp的,非常好用。

2014-11-16

jquery.mobile-1.4.3

这个是JqueryMobile1.4.3的zip压缩包,需要的朋友可以下载用

2014-11-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除