- 博客(47)
- 收藏
- 关注
原创 设计模式-策略模式
以上的代码,很明显不符合6大涉及原则中的单一职责和开闭原则(注意并不是默认其他原则都符合),这样写代码扩展性很弱,修改代码的成本高,对现有功能的影响大(说不定你一行代码的修改,老功能都不好用了,你说是让测试测还是不测,不测吧,很明显被影响了,测吧,又会增加人家的工作量),接下来我们看下如何使用策略设计模式来优化代码。下面我们先来看下通过常规的if-else如何实现,具体参考1.2:if-else实现。再根据单一职责原则,我们分别为每种优惠策略提供一个具体实现类。了解了以上的几种优惠活动,
2022-10-13 20:43:09
240
转载 开源流程引擎
Osworkflow是一个轻量化的流程引擎,基于状态机机制,数据库表很少,Osworkflow提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度,如果流程比较简单,osworkflow是很好的选择,但该开源组件已过时,长时间没有版本升级了。官方网站:http://www.opensymphony.com/osworkflow/2、JBPM。
2022-10-08 11:24:31
3147
原创 【设计模式】模式分类
常见的设计模式按照其特点可以分为创建型模式、结构型模式以及行为型模式。而每种模型有自己的特点,又与其他模型存在一定的演进关系。
2022-10-07 20:43:43
1223
1
转载 linux常用命令
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切
2017-02-12 10:40:34
429
转载 浅谈MySQL索引背后的数据结构及算法
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分
2016-12-09 11:51:41
311
转载 MySQL B+树索引和哈希索引的区别
原文地址:http://blogread.cn/it/article/7630?f=hot1&utm_source=tuicool&utm_medium=referral导读在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区别及其不同的应用建议。二者区别备注:先说下, 在MySQL文档里,实际上是把B+树索引写成了B
2016-12-09 11:29:10
358
转载 Redis和Memcached的区别
原文地址:https://www.biaodianfu.com/redis-vs-memcached.htmlRedis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行
2016-12-08 10:54:25
341
转载 并发集合:ConcurrentHashMap
ConcurrentHashMap的结构我们通过ConcurrentHashMap的类图来分析ConcurrentHashMap的结构。ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。一个Concu
2016-11-01 16:14:07
327
转载 Java transient关键字
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,
2016-11-01 15:35:18
219
转载 java 移位运算符
java中有三种移位运算符>> : 右移运算符,num >> 1,相当于num除以2>>> : 无符号右移,忽略符号位,空位都以0补齐下面来看看这些移位运算都是怎样使用的 1 /** 2 * 3 */ 4 package com.b510.test; 5 6 /** 7 * @author Jone
2016-11-01 15:10:36
241
转载 Java并发集合的实现原理
原文地址:http://www.cnblogs.com/luxiaoxun/本文简要介绍Java并发编程方面常用的类和集合,并介绍下其实现原理。AtomicInteger可以用原子方式更新int值。类 AtomicBoolean、AtomicInteger、AtomicLong 和 AtomicReference 的实例各自提供对相应类型单个变量的访问和更新。基
2016-10-28 16:11:01
310
转载 MySQL的join查询和索引
原文地址:http://blog.163.com/lgh_2002/blog/static/4401752620105190332893/1 关于join查询下面是例子分析表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115表B记录如下: bI
2016-10-26 13:18:20
2503
转载 多线程程序设计的8个规则
在Intel,并行化技术主要有四个步骤:分析,设计与实现,调试以及性能调优。这些步骤用来对一段串行代码进行并行化。尽管这四个步骤中的第一、三、四步都已经有了很多相关文档,但是关于怎样进行设计与实现的却不多。 并行编程更像是一门艺术,而不是一门科学。这里将会给出八条设计多线程程序的简单规则,你可以把他们一一放进你的多线程程序设计百宝箱中。通过参考这些规则,你能写出高质量、高效率的多线程程序。我
2016-09-29 11:21:39
562
转载 java Native方法
今天在看jvm工作原理的过程中,看到java Native方法,去网上查了一下资料,简单整理一下。一.什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如
2016-09-29 10:21:44
579
转载 装饰模式
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 装饰模式的类图如下: 在装饰模式中
2016-08-30 10:26:19
370
转载 MySql中delimiter的作用是什么?
MySql中delimiter的作用是什么?这个命令与存储过程没什么关系吧。其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。如输入下面的语句mysql> select * from test_table;然后回车,那么
2016-08-18 17:15:04
3369
转载 数据库中INFORMATION_SCHEMA的说明及使用
第一个查询看看库里有多少个表,表名等select * from INFORMATION_SCHEMA.TABLES information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问
2016-08-18 17:11:35
419
转载 浅谈MySQL中优化sql语句查询常用的30种方法
浅谈MySQL中优化sql语句查询常用的30种方法1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引。2.应尽量避免在 where子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where子句中对字段进行 null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
2016-07-18 16:38:50
1213
转载 MySQL数据库迁移data文件夹位置
由于yum安装mysql的时候,数据库的data目录默认是在/var/lib下,出于数据安全性的考虑需要把它挪到/data分区。步骤如下:一、关闭apache和mysql.代码如下:service httpd stopservice mysqld stop二、将/var/lib下的mysql目录mv(移动)到data目录。为什么要用mv命令,而不用cp命令呢?应为l
2016-07-15 10:38:54
641
转载 如何导出和导入mysql数据(数据迁移)
1. 导出数据库数据 mysqldump -uroot -p dp_db > dumpout.sql 其中 root是账户名 dp_db是需要导出的数据库名称 dumpout.sql存储导出的数据 2. 将导出的数据dumpout.sql放到你的目标机器上(如果是远程目标机器的话,直接将dunmpout.sql copy到目标机器就行)。这里假设cp到主
2016-07-15 10:32:18
448
转载 检测MySQL负载过高及解决方法(详解SSH TOP命令)
在我们使用主机或者VPS的时候,可能会由于某些原因导致MYSQL占用资源过高而导致我们的主机被暂停的情况发生。一般都是由于哪些原因导致MYSQL占用率负载过高呢?突然增加大量的并发任务、由于我们使用的网站程序脚本占用、人为的DDOS攻击导致等原因。作为VPS用户来讲,我们需要先检查到底是不是因为我们自己的问题导致的上述占用MYSQL负载过大。登陆SSH输入"top"命令回车。我们先看这一行
2016-07-12 10:30:48
2505
转载 灰度发布
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。步骤1)定义目标2)选定策略:包括用户规模、发布频率、功能覆盖度、回滚
2016-07-11 11:00:21
646
转载 海量之道之SET模型
一 提供海量服务时面对的场景场景1:如何令黄村机房的TWS机器访问黄村机房的APP服务,避免TWS跨机房调用永丰机房的APP机器?场景2:DB和Redis如何实现快慢分离,读写分离,加速读取速度,改善用户体验?场景3:如何实现单节点错误不影响全局服务,防止单点失效造成全局服务挂掉?场景4:如何实现用户暴增或业务增加
2016-07-11 10:31:42
5363
转载 第一节 Memcached分布式缓存入门
关于Memcached的博文太多了,以下是个人学习的收集整理。本节讨论问题:简单介绍与应用下载安装注意事项简单测试Memcached分布式原理一、介绍与应用 在常规的WEB开发下,基本都会利用到缓存用以降低对数据库的压力,提高访问速度。有时候缓存的数据多了,并且其它站点也想获取这些缓存数据时就出现在了问题。通常IIS站点都是以应用程序池划分管理,同一个池下又
2016-07-10 15:49:39
310
转载 分布式缓存的学习(memcached,JBoss Cache)
一、分布式缓存memcached,JBoss Cache,SwarmCache,OSCache,JCS,EHCache等开源项目的关注率比较高。memcached和其他几个不同,JBoss Cache的特点是,功能大而全,可算是Cache集大成者,几乎什么都支持。其余的几个都很轻量。SwarmCache,OSCache,JCS支持Cluster。EHCache不支持Cluste
2016-07-10 15:06:08
2689
转载 JBoss Cache:企业级Java事务缓存集群系统
JBoss Cache是一款基于Java的事务处理缓存系统,它的目标是构建一个以Java框架为基础的集群解决方案,可以是服务器应用,也可以是Java SE应用。集群高可用性JBoss Cache将会自动复制缓存数据,并且在集群中的服务器之间进行缓存数据的同步,这样可以保证任何一台服务器重启了都不会影响缓存的可用性。集群缓存可避免系统瓶颈JBoss Cac
2016-07-10 11:31:44
648
转载 Hash表
Hash表 Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。1.Hash表的设计思想 对于一
2016-07-08 17:42:09
308
转载 java中读取配置文件的方法
原文地址:http://blog.youkuaiyun.com/stypace/article/details/38414871一、使用org.apache.commons.configuration需要使用的是jar包:commons-collections-3.2.1.jar、commons-configuration-1.10.jar、commons-lang-2.6.jar和commo
2016-06-23 16:59:32
296
原创 spring framework源码下载并导入eclipse
1. 下载spring 源码,下载地址:https://github.com/spring-projects/spring-framework,我选择的3.2.x版本。2. 下载安装gradle, spring 源码构建加入了gradle支持. gradle下载: http://www.gradle.org/downloads ,下载后设置环境变量: GRADLE_HOME = g
2016-05-27 11:47:12
379
转载 各种排序算法的分析及java实现
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、交换排序:冒泡排序、快速排序。 (4)、归并排序
2016-05-16 15:03:51
250
转载 java深度问题
原文地址:http://www.codeceo.com/article/20-java-interview-questions-from-investment-banks.html问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环?HashMap本身没有什么问题,有没有问题取决于你是如何使用它的。比如,你在一个线程里初始化了一个Has
2016-05-05 16:48:23
908
转载 经典 Spring 面试题和答案
原文地址:http://www.codeceo.com/article/69-spring-interview-questions.htmlSpring 概述1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并
2016-05-05 15:59:49
413
转载 Log4j使用教程
原文地址:http://www.codeceo.com/article/log4j-usage.html日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log
2016-05-05 14:52:06
246
转载 Servlet3.1标准学习笔记
Servlet3.1标准学习笔记1.Servlet默认是线程不安全的,需要开发人员处理多线程问题。通常Web容器对于并发请求将使用同一个servlet处理,并且在不同的线程中并发执行service方法。2.doPut和doDelete方法允许Servlet开发人员让支持HTTP/1.1的客户端使用这些功能。HttpServlet中的doHead方法可以认为是doGet方法的一个特殊
2016-04-18 11:33:23
2277
转载 三大UML建模工具Visio、Rational Rose、PowerDesign的区别
原文网址:http://developer.51cto.com/art/201006/207993.htmUML建模工具Visio 、Rational Rose、PowerDesign的比较 ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对UML建模的支持,ROSE一开始没有对数据库端建模的支持,但是在现在的版本中已经加入数据库建模的功能。ROSE主要是在开发
2016-03-18 11:03:33
597
转载 Java程序性能优化
原文:http://blog.youkuaiyun.com/jsyxcjw/article/details/45131025#t1一、避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。 例子: [java] view plain copy
2016-03-14 18:21:12
489
转载 SpringBoot附录
附录A. 常见应用属性http://blog.youkuaiyun.com/jsyxcjw/article/details/46764447你可以在application.properties/application.yml文件内部或通过命令行开关来指定各种属性。本章节提供了一个常见Spring Boot属性的列表及使用这些属性的底层类的引用。注:属性可以来自classpath下的
2016-03-14 17:21:56
839
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人