自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北有风雪

靠谱程序猿养成记

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 【设计模式实践笔记】第三节:建造者模式

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。大多数设计模式都不仅仅存在于IT世界,往往在现实生活中也有相当多的例子,建造者模式也不例外。builder的本意是建造者,通常用在建筑领域,小到瓦房单间,大到百米高楼,这些建筑都有一些固定的组成成分,比如墙、屋顶、门和窗等等。建造者们建造一栋房子,只要按照房子的成分,一步一步的添加材料即可。一般来说我们在代码中使用建造者模式,也是因为有些类有固定的成分,我们不希望暴露过多的实例的创建过程,以此来降低系统维护的复杂程度。

2022-09-06 20:13:30 200 1

原创 【设计模式实践笔记】第二节:抽象工厂模式

抽象工厂的核心逻辑是通过工厂接口,来解决创建一系列产品的问题,要注意区分的是如果没有「系列产品」,那抽象工厂跟普通工厂就没有本质区别

2022-07-15 15:26:01 492

原创 【设计模式实践笔记】第一节:工厂方法模式

工厂方法模式的优点是让调用者只需要关心产品接口,通过让创建和使用解耦来达到增强系统可扩展性的一种编程经验。

2022-07-15 12:27:37 275

原创 【Linux进阶】Ubuntu 16.04安装Rabbitmq

在阅读这篇文章之前,你应该是对Rabbitmq有一定了解的环境搭建Ubuntu 16.04 LTSErlang 18.3Rabbitmq 3.6.15准备我们选择/usr/local作为工作路径mkdir /usr/local/rabbitmqcd /usr/local/rabbitmq更新apt-get update安装安装Erlan...

2018-09-04 14:46:01 665

原创 记一次SQL Server的清理过程

由于历史原因,库里有几张表的行数已经超过了几亿条,而且99%都是无用的历史数据(别问我为什么这么多,就是这么刺激),简单的top 1查询都能跑个十几分钟。 以上,是背景。业务上来看,服务器已经完全无法工作了,所以选择了停机维护。第一步,使用获取总行数select count(0) from t1悲催的跑了10分钟还没得出结果,放弃了。。。 因为表内的业务数据具有时效性,所以选择直接清表。 两种

2017-09-05 15:17:04 582

原创 【Elasticsearch】常见问题汇总——持续更新

分页结果起点超过结果窗口Caused by: QueryPhaseExecutionException[Result window is too large, from + size must be less than or equal to: [10000] but was [10020]. See the scroll api for a more efficient way to reques

2017-08-15 17:51:43 3189

原创 【Linux进阶】ubuntu 14.04安装Redis

环境搭建Ubuntu 14.04.5 LTS安装下载Redis包,从http://download.redis.io/releases选择一个版本进行下载wget http://download.redis.io/releases/redis-2.8.7.tar.gz将redis解压到/usr/local/redistar -xzvf redis-2

2017-07-31 14:37:02 647

原创 【Linux进阶】Ubuntu 16.04安装ElasticSearch

在阅读这篇文章之前,你应该是对ElasticSearch有一定了解的,或者可以先通过文章末尾的链接了解ES是什么环境搭建Ubuntu 14.04.5 LTSElasticsearch 2.4.4jdk1.7.0_76安装我们先从Elastic的官网下载ES的安装包wget https://download.elastic.co/elasticsearch/release/org/elasti

2017-06-05 18:48:58 11254

原创 【Linux进阶】ubuntu 16.04安装zookeeper

环境搭建Ubuntu 14.04.5 LTSzookeeper-3.4.6jdk1.7.0_76安装下载zookeeper包,由于apache官方网络慢,我们选择从华科大的镜像地址进行下载wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz解压zookeeper到/

2017-06-05 18:09:07 6567

原创 使用maven搭建多模块项目

我们为什么要进行模块化开发?在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署。我们假设有这样一个商城项目,包括以下几个模块: - 商城前台(shop) - 管理后台(admin) - 数据库交互模块(dao) - 通用业务模块(service) - 接口模块(api) - 通用工具(util)其中shop和adm

2017-02-06 11:33:41 11047 3

原创 Hibernate ehcache缓存配置详解+实战

依赖管理我这里使用的maven来管理的依赖,pom如下:<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.0.2.Final</version></dependency><dependency> <groupId>org.

2017-01-10 16:37:23 7667

原创 Hibernate Criteria 查询 出现重复实体

Hibernate Criteria 查询 出现重复实体 Role与RoleResourcePermission是OneToMany关系,通过Hibernate Criteria查询Role对象时,OUT LEFT JOIN导致Role对象重复思路Hibernate的关联查询分为查询和实体包装,left join查询出来的结果本身是不重复的,或者说是只有多端实体不重复,但是Hibernate在

2016-12-19 17:00:17 3240

原创 Hibernate注解常见错误

异常栈Could not determine type for: java.util.SetCaused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: user_role, for columns: [org.hibernate.mapping.Column(rol

2016-10-25 19:08:44 374

原创 Windows下免装MySQL使用

下载MySQL下载地址:http://dev.mysql.com/downloads/mysql这里下载的版本是:mysql-5.7.16-winx64解压MySQL压缩包将压缩包解压到D:\Program Files\,MySQL的根目录是:D:\Program Files\mysql-5.7.16-winx64安装并使用修改配置1. 将解压目录下默认文件 my-default.ini 拷贝一份,

2016-10-20 18:04:41 418

原创 关于c3p0 ResourcePoolException: Attempted to use a closed or broken resource pool

异常栈### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: An SQLException was provoked

2016-10-18 14:24:14 13288

原创 Spring声明式事务注解@Transactional

spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚

2016-07-27 13:17:28 923

转载 tomcat报错:This is very likely to create a memory leak问题解决

这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因   在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。   这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:   1.OutOfMemoryError: Java heap space   2.OutOfMemoryError: Per

2016-07-25 14:48:26 138815 3

原创 Tomcat性能调优

Tomcat server.xml connection 调优<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="30000" redirectPort="8443" URIEncoding="UTF-8" maxThreads="1000

2016-07-25 14:44:18 400

原创 使用Jmeter进行压力测试

目标使用jmeter模拟500个用户的请求,频度为每秒钟10次请求一、添加线程组(Thread Group)二、设置线程组参数Number of Threads(users): 一个用户占一个线程, 100个线程就是模拟100个用户Ramp-Up Period(in seconds): 设置线程需要多长时间全部启动。如果线程数为100 ,准备时长为10 ,那么需要1秒钟启动10个线

2016-07-25 14:06:28 972

转载 获取通过body传输的postdata数据

目前基于rest风格的很多API开始使用通过body data来传输来代替之前的key-value传输方式。在java servlet或者springmvc中可以通过如下代码来获取并图片通过流方式传输的数据: 1InputStream is= null; String contentStr=""; 2t

2016-07-08 09:08:06 15426 1

原创 Java异常处理的最佳实践

Java异常处理的最佳实践为什么要有最佳实践我们在写程序是不可避免的要对代码进行异常处理,但是有时对异常的处理会使我们的程序变的更加糟糕,这是我们所不想看到的。所以,我们再进行异常处理时需要遵循一定的套路,来降低异常处理对我们程序的影响。异常产生的原因一般来说,java中的异常会产生于一下三种情况:编程错误导致的异常,例如NullPointerException 和 IllegalArgument

2016-07-04 17:50:58 1144

原创 使用SQL存储过程

SQLSERVER:变量的声明:声明变量时必须在变量前加@符号DECLARE @I INT变量的赋值:变量赋值时变量前必须加setSET @I = 30声明多个变量:DECLARE @s varchar(10),@a INTif语句:if .. begin ... end else if .. begin ... end else begin ..

2016-07-01 14:22:46 9109

原创 【Elasticsearch】以服务的形式启动Elasticsearch

Running as a Service on WindowsThe script requires one parameter (the command to execute) followed by an optional one indicating the service id (useful when installing multiple Elasticse

2016-05-19 16:56:41 7585

原创 【Linux进阶】CentOS安装GitLab

前言GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日

2016-05-19 16:48:03 657

原创 Java实现Ping命令

前言在项目中有的时候需要检测两台服务器能不能正常通信,需要用到Ping命令。 目前已知的可分为两类方法:使用Java API的InetAddress方式使用Runtime.exec调用操作系统的命令CMD使用InetAddress实现Ping自Java 1.5开始,java.net包中就实现了ping的功能。详见InetAddress.isReachable()方法。public stati

2016-05-16 11:27:16 4448

原创 【Linux进阶】Linux防火墙iptables详解

前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。对于TCP/IP的七层模型来讲,我

2016-05-11 14:40:49 9292

原创 【Linux进阶】CentOS安装Nginx服务器

本文主要介绍Nginx在linux下的安装与设置。 Nginx是一个高性能的web反向代理服务器,详情参考http://baidu.com1、准备工作选首先安装这几个软件:GCC,PCRE(Perl Compatible Regular Expression),zlib,OpenSSL。 Nginx是C写的,需要用GCC编译;Nginx的Rewrite和HTTP模块会用到PCRE;Nginx中的

2016-05-11 13:58:32 519

原创 【Linux进阶】CentOS安装MySQL数据库

在linux中安装数据库首选MySQL,Mysql数据库的第一个版本就是发行在Linux系统上,其他选择还可以有postgreSQL,oracle等。 在Linux上安装mysql数据库,我们可以去其官网上下载mysql数据库的rpm包,http://dev.mysql.com/downloads/mysql/5.6.html#downloads,大家可以根据自己的操作系统去下载对应的数据库文件。

2016-05-11 13:47:40 687

原创 Java实现定时任务的三种方法

java实现定时任务的三种方法,使用while实现,使用Timer创建定时任务,使用ScheduleExecuteService线程池创建定时任务

2016-05-10 09:35:35 523

转载 Java开发必会的Linux命令

作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。1.查找文件

2016-05-06 13:56:23 343

原创 【Linux进阶】CentOS安装java环境

准备一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后安装SUN的JDK。首先,卸载自带的java查看Linux自带的JDK是否已安装。 输入如下命令,查看已经安装的JAVA版本信息。 java -version 输入如下命令,查看JDK的信息。rpm -qa|grep java 如下图所示。 卸载已经安装的JAVA,如下图所示。 卸载完成,如下图所示。 卸载另外一个,

2016-05-06 13:50:45 1115

原创 【Linux基础】Linux系统默认目录功能简介

以下用一个表格来罗列linux默认的目录或文件及其用途:目录/文件用途来源//处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下。-/bin该目录存放着系统最常用的最重要的命令,相当于DOS下的内部命令,只不过它们是以独立的文件形式存在。比如:ls、cp、

2016-05-06 13:29:32 1438

原创 【Linux基础】常用命令大全

Linux基础之常用命令大全系统信息arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat

2016-05-06 13:27:44 1319

原创 【Elasticsearch】Java Client连接池

按照Elasticsearch API,在Java端使用是ES服务需要创建Java Client,但是每一次连接都实例化一个client,对系统的消耗很大,即使在使用完毕之后将client close掉,由于服务器不能及时回收socket资源,极端情况下会导致服务器达到最大连接数。为了解决上述问题并提高client利用率,可以参考使用池化技术复用client。

2016-05-05 13:22:05 26800 12

转载 【Elasticsearch】Java Client入门

序言Elasticsearch(名称太长,后面简称ES)作为一个搜索引擎,目前可谓是如日中天,几乎和solr齐驾并驱。关于他能做什么,跟云计算有什么关系,在此不再描述。但是ES的官方文档,特别是关于java的客户端文档,真是少的可怜,甚至连个完整的增删改的示例都没有。在此,我就献丑了。

2016-05-05 13:01:48 8618 1

原创 【Elasticsearch】安装使用ik中文分词

序言Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词。例如:curl -XPOST "http://localhost:9200/test/_analyze?analyzer=standard&pretty=true&text=我是中国人" 我们会得到这样的结果:

2016-05-05 12:38:35 916

原创 【Elasticsearch】基础知识

Elasticsearch有几个核心概念。从一开始理解这些概念会对整个学习过程有莫大的帮助。接近实时(NRT)Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)。集群(cluster)一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字

2016-05-05 11:30:36 5068

转载 Java回调机制(CallBack)详解

序言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按照由浅到深的顺序描述一下,如有不妥之处,望不吝赐教!开始之前,先想象一个场景

2016-04-20 14:45:44 600

原创 Spring接收参数的几种形式

通过Spring controller的机制自动绑定参数form表单或者通过url传递过来的参数,如果参数name和预定义的name一致则可以直接绑定。 Controller 代码@RequestMapping("test")publicvoid test(int count) {}或者@RequestMapping("test")publicvoid test(Integer count)

2016-04-14 16:15:40 1013

原创 JDK、Tomcat、ANT及Eclipse常用配置

JDK配置系统设置——>环境变量——>系统变量新建 JAVA_HOME,将JDK安装目录填进去,例:变量值D:\Program Files\Java\jdk1.7.0 (无分号)在path后添加=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (若原path变量末尾无分号须在本次添加开始前补一个分号)新建 CLASSPATH, 填入java系统jar包地址,例:变量值

2016-04-14 13:18:28 512

Java程序设计PPT

大学Java课程教学课件,压缩包内容包含java语言的全部基础知识,适合自学java的初学者,关键字的讲解,语法结构,UI设计都有涉及到,算是比较全的课件。

2013-12-20

Java程序设计1

大学Java课程教学课件,内容包含java语言的基础知识,属于入门级的课件,例如数据、关键字、关键语法结构等

2013-12-20

空空如也

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

TA关注的人

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