- 博客(41)
- 资源 (5)
- 收藏
- 关注
原创 基于 Jenkins+Git+Maven 构建 Spring Cloud 微服务实战
本文介绍如何使用Jenkins+Git+Maven 等框架实现微服务的构建和部署:项目准备:Jenkins 安装、汉化、初始化;构建一个 Maven 项目:全局工具配置;部署程序运行环境:安装 Linux 系统:使用 Vagrant 安装 CentOS7 操作系统;项目依赖软件安装:Mariadb 数据库、Nginx、Redis、JDK、Tomcat 安装;注册中心 Eureka 构建:流水线构建 Eureka 项目、Pipeline 脚本编写;微服务构建:流水线构建 Spring Boot。
2022-03-03 09:04:36 1197
原创 Java实现PDF转图片,多张合成一张图片功能
import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.rendering.PDFRenderer;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util..
2020-12-01 16:10:12 1117 1
原创 工作流引擎系列(一)之JBPM引擎使用
JBMP流程引擎配置页面最简单的一个流程配置包括下面几部分:开始节点、人工处理环节(包括参与人、动作)、结束节点;参与人:可配置具体用户、用户组、或者表达式,动作可以配置执行的后置事件。发起流程通过同步器AQS(AbstractQueuedSynchronized类)来实现的,AQS根本上是通过一个双向队列来实现的线程构造成一个节点,一个线程先尝试获得锁,如果获取锁失败,就将该线程加到队列尾部非公...
2018-06-28 17:53:08 9113
转载 Dubbo源码分析(五)ExtensionLoader
ExtensionLoader是Dubbo中很有特色的一个设计,它的作用是为框架提供各种组件的扩展点,可以在应用运行时来决定使用哪个组件。对扩展点组件的描述是通过注解的方式实现的,包括3个主要的注解:SPIAdaptiveActivate我们先从注解的含义来理解ExtensionLoaderSPISPI.java
2016-06-29 10:59:48 676
转载 Dubbo源码分析(四)Handler & Filter
本文将主要介绍Server端处理一次请求的流程,同时讲解一个比较巧妙的设计——Filter。根据前面的分析我们可以推断出Server端处理网络通信的组件为NettyServer,对应处理具体事件的handler为NettyHandler,它的构造函数需要一个ChannelHandler的参数,这里传递的就是NettyServer实例的引用。这样一来,handler对messageRecei
2016-06-29 10:59:08 905
转载 Dubbo源码分析(三)Exchanger
在一个框架中我们通常把负责数据交换和网络通信的组件叫做Exchanger。Dubbo中每个Invoker都维护了一个ExchangeClient的引用,并通过它和远程的Server进行通信。整个与ExchangeClient相关的类图如下其中包含了remoting相关的接口定义。个人觉得这个接口设计有些过于发杂,但为了可以展示全貌还是把全部内容都画了进去。ExchangeC
2016-06-29 10:57:56 1048
转载 Dubbo源码分析(二)Invocation
本文将主要围绕Invocation这个抽象概念进行讲解,首先来看一下相关的类图结构。整体概念Invocation,一次具体的调用,包含方法名、参数类型、参数Result,一次调用结果,包含value和exceptionInvoker,调用者,对应一个服务接口,通过invoke方法执行调用,参数为Invocation,返回值为ResultDubboIn
2016-06-29 10:57:04 1850
转载 Dubbo源码分析(一)启动Provider
Dubbo是阿里巴巴开源的一个分布式服务框架,在阿里内部和其他公司都有广泛的应用,是目前比较成熟的一个服务框架。笔者将从源码层面对Dubbo进行分析,学习其中优秀的设计。经过数年的沉淀,Dubbo整体的设计和抽象已非常完善,这里介绍的Provider启动就涉及到了多个抽象模型。本文使用的版本为2.5.3。首先,当发布一个服务的Server时,我们需要编写一个Spring配置文件。
2016-06-29 10:50:48 1339 1
原创 字符串为空判断的几种写法对比
public static void main(String[] args) { String str = ""; //最好 if(str!=null&&!"".equals(str)){ System.out.println("111"); } //中等 if(!
2015-10-14 08:48:31 837
原创 Spring源码解析——从Web项目启动过程分析开始
一、源码阅读首先,在工程右键,属性中,添加必要的jar包。 选中必要的jar包,上面给出的源码jar包中,导入spring3.0.5中的所有jar包。 其中lib内的是spring的jar包,用到哪个导入哪个,不知道的话,全部导入就行了。 外面的几个jar包,用于日志以及mysql的驱动。commons-logging jar包是必须的,其他的随意吧。 不确定的
2015-10-06 09:42:21 2185
原创 mongodb主要命令集锦
1、设置配置文件mongod.exe --config D:\mongodb_r0\mongo.config2、以windows服务方式启动mongod --dbpath D:\mongo\data\r0 --logpath=D:\mongo\log\r0.log --install3、指定启动服务端口mongod --dbpath D:\mongo\d
2015-08-13 09:08:09 310
原创 mongodb主从备份配置
该篇讲述的mongodb主从备份,基于两个mongodb服务,一个主服务,一个备用服务,因此需要安装两个mongodb。1、monggodb两个服务安装注意点:(1)dbpath为db文件夹路径(2)logpath为log文件夹路径(3)port为mongodb指导端口(两个服务的IP相同)mongod --dbpath D:\mongo\data\r0 --log
2015-08-13 09:05:04 542
转载 Mongodb与Redis应用指标对比
MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。 指标 MongoDB(v2.4.9) Redis(v2.4.17) 比较说明
2015-08-13 08:44:45 306
原创 java操作mongodb案例分析(含代码)
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-08-02 15:46:43 239
原创 ZY项目经验教训
15年7月25日,于东阳,夜不能寐,辗转反侧,思考了近一年以来经历之事,亦想到未来一年需做之事。因这些对已之人生甚为重要,因此一一记录下来。回想一年以前:14年6月份,进场ZY前一天,领导拉住我到其房间,告知我前去所应注意事项,并教我起草项目启动会议PPT,主要是项目启动——需求——开发——测试——上线——尾稳这些阶段以及各阶段中可能遇到的风险事项,我准备了一晚,临睡前,领导让我次
2015-07-29 13:49:26 659
原创 JS窗口打开,区分分辨率同时可指定窗口大小
//窗口打开,区分分辨率同时可指定窗口大小function openwin(furl, width, height){ height = height - 30; c_x = screen.width - width - 40; if (c_x > 0) { c_x = c_x / 2; } else { c_x = 0;
2013-08-09 14:31:53 597
原创 展开缩放效果JS函数
//使用案例 ','')"> " src="${pageContext.request.contextPath}/images/report_expand.gif" border="0" align="absmiddle"> //展开缩放效果JS函数function SwitchDiv(idDiv,idImg,srcImg,closeImg){ var divObj=null;
2013-08-09 14:27:05 1008
原创 基于jquery-validate实现的校验功能
//JS各种校验的使用方法 $("#form1").FValidate({errorModel:'qtip'}); if ($("#form1").valid()) { $I("form1").FForm('submit'); } //需引入下面的JS(function($) { $.extend({ metadata: {
2013-08-09 11:45:26 1585
原创 计算字符串长度(可同时字母和汉字,字母占一个字符,汉字占2个字符)
charCodeAt() 定义和用法 :charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。 //计算字符串长度(可同时字母和汉字,字母占一个字符,汉字占2个字符)functio
2013-08-09 11:33:28 5094
原创 java常见问题分析
使用equal进行字符串的比较 字符串比较使用 == 或者 != , 可能会出现比较的结果并不是想要的结果。==比较的是2个对象的地址,而equals比较的是2个对象的内容。举例:String test1= "111";String test2 = new String("111");test1 != test2 但是 test1 equalstest2.另外在
2013-07-15 00:11:23 427
转载 17家中国初创IT公司的失败史【转】
看十个成功故事,不如看一个失败故事更让自己警醒。作为经历过过去12年中国互联网的老兵,我彻夜整理了有代表性的17个失败案例,为有志创业的人提供了从公司财务,定位,团队,市场,资本,政府监管,用户价值等各个方面的经验教训。也希望大家共同一起来探讨如何避免失败。1. 亿唐网 不少人还记得2000年北京街头出现的大大小小的亿唐广告牌,"今天你是否亿唐"的那句仿效雅虎的广告词着实让亿唐风光
2013-06-22 23:56:08 1422
原创 获取Oracle产生的Sequence和Uuid方法
/** * @Title: getSequence * @Description: 传入序列名称,获取下一个值 */ public static String getSequence(String name) { String retstr = ""; String sql = "select " + name + ".nextval as nextval from
2013-06-16 22:40:27 3675
原创 java里 list顺序问题
ArrayList 特点是: 插入数据 有序且可重复 适合查找多增删少。是有序的, 会乱的. 如果你插入数据,如 list.add(3,num), 会覆盖原来 list 第3个位置上的数据,不会提示异常信息。 如果是顺序 读 取,就不会乱了。 如果是删除,没试过。但是如果list保存进数据库,再取出来的时候,原来的顺序肯定是不固定的。
2013-05-13 08:36:00 4311
原创 两个JavaBean之间的复制,但是bean的属性名不一致。
/** * * 将源对象的所有属性值复制到目标对象,但是目标对象的属性名需去除后缀或前缀,以转换为源对象的属性名 * * @param to 目标拷贝对象 * @param from 拷贝源 * @param removestr 目标对象属性名需去除的后缀或前缀 * @param isend 是否去除后缀,1为去除后缀,其它去除前缀 * @param ignor
2013-03-22 10:37:21 5144
原创 使用数组、list、map报空指针异常的分析
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test {public static void main(String[] args) { //定义数组、list、map,初始化为空 S
2013-03-19 13:49:19 6953
原创 java常用字符串处理函数
//判断字符串是否为空 public class StringUtils { public static boolean isNotEmpty(String str) { return !StringUtils.isEmpty(str); } public static boolean isEmpty(String str) { int strLen;
2013-03-15 08:48:44 539
原创 将数组、list转换为一个用逗号分隔的字符串
/** * @Description:把数组转换为一个用逗号分隔的字符串 ,以便于用in+String 查询 */ public static String converToString(String[] ig) { String str = ""; if (ig != null && ig.length > 0) { for (int i = 0; i < ig.leng
2013-03-13 13:44:08 27264 2
原创 fckeditor编辑器使用
在需要使用到fckeditor编辑器的页面添加下面代码即可。 文章内容 * <iframe id="contentFrame" src="${base}/tools/fckeditor/editor/fckeditor.html?InstanceName=article_content&Toolbar=Default"
2013-03-12 22:08:06 527
原创 JS常用函数汇总
//数字格式转换成千分位 和 去除千分位函数/* 数字格式转换成千分位 *@param{Object}num */function commafy(num){ if((num+"").trim()==""){ return ""; } if(isNaN(num)){ return ""; } num = num+""; if(/
2013-03-12 08:44:23 650
原创 图片上传插件uploadify的使用
引用js,和css文件。因为本文模板引擎用的是freemarker,所以带有${base}等标签。 js调用uploadify的代码 $(document).ready(function() { $("#uploadify")
2013-03-11 22:44:47 599
转载 快逸报表研究-冻结表头
快逸报表冻结表头介绍冻结表头又叫做固定表头、锁定表头,是展现高度和宽度都比较大的报表时最常见的需求,目的是让报表浏览者在拖拽数据区时可以让数据时刻对应相应的表头项目名称,方便浏览查阅。我们用实际的例子来看一下快逸报表冻结表头的效果。先看一个没有冻结表头功能的报表,见下图:这个是一个宽度和高度都比较大的报表经过拖拽后的效果,如果我们想知道图中红色框中的数据(¥1056.42)
2013-03-08 12:12:49 1208
原创 PinYin4j实现中文字符和拼音之间的转换
// Action中使用,提取汉字的首字母 @RequestMapping(value = "city_add", method = RequestMethod.POST) public String city_addDo(City ci, Map model) { String str = PinYin4j.getPinYinHeadChar(ci.getName().charAt(0)
2013-03-08 10:52:37 588
原创 全文检索引擎lucene的研究和使用(案例)
全文检索引擎lucene的研究和使用,仿百度做的一个简单的搜索引擎,完整案例,可运行,如有问题可留言,本人将第一时间予以解答。同步资源(spring mvc + jpa 编写的案例)已上传。地址:http://download.csdn.net/detail/zhanghj07409/5120357,免费下载
2013-03-08 10:40:09 605 4
原创 全文检索引擎lucene的研究和使用(二)
// 创建查询 @Repository @Transactional public class SearcherJpa implements Serializable, SearcherDAO { private static final long serialVersionUID = 1L; public List do_search(String path, String ke
2013-03-08 10:27:14 535
原创 全文检索引擎lucene的研究和使用(一)
// 建立索引 @Repository @Transactional public class IndexerJpa implements Serializable, IndexerDAO { private static final long serialVersionUID = 1L; public void create_index(String path) { Pro
2013-03-08 10:23:46 455
原创 分组grid插件jqgrid研究
对jqgrid最主要的研究:自定义统计函数 和 分页功能的实现//自定义统计函数//比如我要统计code值为2的一共有多少条function mycount(val, name, record){ if(record[name]==2){ return parseFloat(val||0) + 1; }else{ return parseFloat(val||0);
2013-02-28 16:32:45 2279
图片上传插件uploadify
2013-03-11
全文检索引擎lucene的研究和使用(sping mvc + jpa 编写的案例)
2013-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人