●技术分享和架构设计
心心念念的小鼠标
为梦想而疯狂!
展开
-
spring Boot (七) "Logback configuration error detected"
最近在搭建完工SpringBoot项目,且配置好logback之后,启动报错了,错误截图如下: 文字报错内容截取关键部分如下:at com.exam.api.boot.Bootstrap.main(Bootstrap.java:44)Disconnected from the target VM, address: '127.0.0.1:50105', transport: 'sock...原创 2018-06-13 15:10:44 · 24659 阅读 · 2 评论 -
【Activiti 基础篇三】流程定义—CRUD操作
看到这个标题,我们首先得明确两个概念:1、何为流程定义?在我们创建Activiti的过程中,创建.pbmn文件是必不可少的,当创建完之后,点击保存,会生成一个.png文件。这两个合起来就是所谓的流程定义。2、何为CRUD?CRUD其实就是我们最常用的增删改查操作,全拼:Create,Read,Update,Delete。所以本篇则是和大家一起分享一下关于流程定义的增删改查操作。原创 2016-01-11 21:31:05 · 1410 阅读 · 6 评论 -
【Activiti 基础篇二】与数据库的交互
上篇主要讲述的是对于Activiti的一个初步介绍以及插件的安装,本篇则学习一下一个Activiti强大的数据库操作,对于一个Activiti来说,不管其简单复杂,他都是通过23张表来管理你整个的流程,以Mysql为例,创建说明: 创建数据库,前提条件是已经引入了Activiti和MySql使用的Jar包,我们可以直接定义一个方法来完成这个操作: 首先第一步我们要创建一个流原创 2015-10-04 23:49:09 · 1870 阅读 · 13 评论 -
【Activiti 基础篇一】初步了解
一>工作流简介 Activiti是一个业务流程管理和工作流系统,他是一个开源的工作流程。简单而言就是Java版的一套工作流框架,和.net版的WF是等同的效果二>在Myeclipse环境下的配置 首先我们必须得从官网上下载自己想要的Activiti版本,连接:http://activiti.org/download.html,在此以5.1.8.做介绍: 将下原创 2015-10-03 23:31:05 · 898 阅读 · 14 评论 -
【Activiti 基础篇四】流程变量设置与获取方式
上篇我们讲述了关于流程定义的CRUD操作,本篇我们则来对“流程变量”进行分析与认识,开篇我们首先我明确两个问题1、何为“流程变量”?2、流程变量在项目种有何作用?知道了流程变量是什么以及他的价值在哪里,我们来谈谈对于流程变量的设置和获取方式。不管是设置流程变量还是获取流程变量,本篇我们主要了解两种方法我们常见的就是基本类型,比如我们请假的例子,看我的设置流程变量的方法// 设置原创 2016-01-17 10:54:15 · 2815 阅读 · 5 评论 -
【Spring 基础篇四】annotation+aspectj实现AOP
Spring两大特性,本篇我们对于AOP进行一个简单的实现。篇章一:概念了解1、何为AOP? AOP在Spring的世界里,算是独占半边天的节奏吧,何为AOP,其实就是对于OOP(Object-Oriented Programing)思想的补充和完善。OOP我们很熟悉,他是通过“抽象,封装,继承,多态”等思想,对万物进行一个定义。它强调了一种完整事物的自上而下的关系,但是对原创 2016-01-20 17:17:51 · 2371 阅读 · 16 评论 -
创建型模式-工厂三姐妹
就简单工厂而言,算是三姐妹之中最小的一个,也是最简单的一个了! 简单工厂模式是类的创建模式,又叫做静态工厂方法模式。虽然为很多模式提供了基础与方便,但是他却不属于23种GOF设计模式之一,至于为什么?或许就是因为他不符合开放-封闭老爷子的脾气吧! 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。原创 2014-05-01 20:53:13 · 1198 阅读 · 10 评论 -
多线程同步方法<一>数据库悲观锁(for update)
悲观锁,正如其名,具有强烈的独占和排他特性。上来就锁住,把事情考虑的比较悲观,它是采用数据库机制实现的,数据库被锁之后其它用户将无法查看,直到提交或者回滚,锁释放之后才可查看。所以悲观锁具有其霸道性。 简单说其悲观锁的功能就是,锁住读取的记录,防止其它事物读取和更新这些记录,而其他事物则会一直堵塞,知道这个事物结束。我们可以在dos窗口中来简单测试测试: 1)语句:sq原创 2015-10-25 11:52:32 · 2665 阅读 · 9 评论 -
Struts2框架学习<二>Action命名空间&&创建方式
Struts2框架中Action类时一个单独的javabean对象,相比struts1来说,不需要去继承任何类型或实现任何借口,表单数据包含在Action中,而Struts1则必须继承org.apache.struts.action.Action或者其子类才行,相比之下,耦合度减小了许多。对于struts2来说,在struts.xml配置是其核心内容,今天主要介绍其命名空间和其三种创建方式。原创 2015-11-07 21:28:01 · 1184 阅读 · 17 评论 -
Struts2框架学习<一>流程介绍
在学习Struts2框架之前,首先我们要明白学习Struts2的目的是何?它能够给我们带来什么非同一般的好处?1、框架介绍Struts2框架是一个流行的全新的MVC框架,它是Struts的下一代产品,适合分层开发,应用于我们的web层开发。针对此句话,我们需要了解两点:第一点:Struts2和Struts1的异同之处Struts 2=struts1+webwork,,它是基于w原创 2015-11-06 20:12:06 · 793 阅读 · 13 评论 -
OO模式-Proxy模式<二>借助反射实现动态代理
上边主要是对于静态代理的一些学习,代理送花,却赔了夫人又折兵的故事已深入人心。本篇来介绍一下何为动态代理? 动态代理,相比静态代理来说,最大的优势就是避免了重复代码的出现。上篇方法执行提示的例子,到结尾虽然我们完成了代理模式的任务,为其他对象提供一宗代理以控制对这个对象的访问,但是却远远满足不了我们的需求,如果我有多个方法,那么如果采用上述方式,我们在每个代理类的方法里都得写对应的提示,也就是重复类的代码执行影响了开发效率。 看我们之前的小例子,创建一个LogHandler,来实现创原创 2015-11-03 21:46:20 · 782 阅读 · 10 评论 -
【Activiti 进阶一】简单流程实例helloworld
前两篇我们主要是对Activiti进行了一个基本的认识,以及对连接数据库进行了简单介绍,本篇我们着手于HelloWorld简单实例来浏览全程,体验一把。首先我们必须着手 创建一个Activiti项目,然后画一个建议的流程图示,在项目diagrams上右击,New-Other,选择Activiti Diagram,如图:一个简易的流程,但是正所谓麻雀虽小五脏俱全,所以一些必不可少的属原创 2016-01-10 14:53:09 · 1731 阅读 · 3 评论 -
【Spring 基础篇三】属性注入与属性编辑器
上篇我们了解了一下applicationContext.xml的两种注入方式,本篇我们来了解一下关于属性的注入以及操作。在敲代码的过程中,我们很容易遇到这样的问题,比如一个List的集合,我之前给他赋值两个,现在我想给他再重新赋值,一般的想法当然是修改代码,然后完成自己想要的需求了,但是这种做法是不可取了,所以我们完成可以采用Spring属性注入的方式来解决此问题。看如下demo:1、我们原创 2016-01-08 14:54:00 · 3447 阅读 · 14 评论 -
【solr 基础篇三】SolrJ的入门使用
不管是mysql,redis等等,都会存在自己独立的客户端,对于solr而言,solrJ则很好的扮演了这个角色。1、solrJ简介SolrJ是操作Solr的Java客户端,它提供了增加、修改、删除、查询Solr索引的Java接口。SolrJ针对Solr提供了Rest的HTTP接口进行了封装,SolrJ底层是通过httpClient中的方法来完成Solr的操作。2、最简单的CRUD操作测试,首先第一步原创 2016-07-25 18:07:43 · 916 阅读 · 1 评论 -
【solr 基础篇二】中文分析器的配置
1、什么是分析器?英文(Analyzer),一个分析器可以检查字段的文本信息,并且产生一个token流。分析器是schema.xml中的元素的一个子元素,schema.xml可以在solr/conf目录下找到或者跟solrconfig.xml在同一目录。 通常使用下,只有solr.TextField类型的字段会专门制定一个分析器。最简单配置的一个分析器的方式是使用元素,制定这个元素的class属性原创 2016-07-25 17:18:56 · 864 阅读 · 3 评论 -
【solr 基础篇一】介绍与安装
前几天应公司的号召,正好我们组的项目已经接近了尾声,趁机就把我调到了另外一个组,主要负责整个商户平台和用户打交道的部分,这两天自己则着手去做商品搜索的功能。对于万千商品而言,我该怎么操作才能减轻对服务器的压力切能保证速度呢?在这种场景下,我们就需要使用solr服务器,来辅助我们功能的开发。1、什么是Solr?Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索原创 2016-07-25 10:15:56 · 541 阅读 · 1 评论 -
【redis 基础篇三】set集合常用命令
在使用集合的过程中,我们都明白他是通过Key-value的形式来保存的,在存入数据的时候将值赋值给一个key值,去出的时候,我不管你那个value值跑到了什么位置,我只要通过这个key值就可以找到你,也就是说用set的方法取值,他是无序的。但是正是由于你通过key值去取value值,所以具有唯一性。你这个key值就能够确定我这个value值,所以具有确定性。原创 2016-03-04 09:23:41 · 2109 阅读 · 4 评论 -
【redis 基础篇一】redis初识
在JDB来了差不多一个月的时间了,在了解公司业务和框架的过程中,看到了在通过上游调用接口的过程中,使用到了redis来调用值,上游将一个参数传过来,我们通过这个参数去redis中读取部分参数,然后将所有的信息交与下游进行核对,最后再将反馈的结果返回到上游。那么为何要用redis呢?redis和之前我们使用的memcached到底有何不同呢?redis原理又是什么呢?1、redis是什么?通过redis.io官网去查阅:Redis is an open source (BSD licensed), in-原创 2016-02-28 18:57:12 · 986 阅读 · 8 评论 -
【redis 基础篇二】redis安装-Linux服务
对于Window的安装其实很简单,只要将其redis从官网下载直接启动server服务即可。本篇我们则通过Linux来讲解redis安装过程。第一步:下载解压操作1、在浏览器中输入redis.io进入官网,将会看到下载的地址:原创 2016-02-28 19:13:25 · 671 阅读 · 9 评论 -
【Maven进阶二】多模块构建Maven项目-Dos命令实现
上篇我们讲述的是在Eclipse环境下如何实现多层Maven创建的效果,本篇我们来讲述通过Dos窗口,如何使用命令来实现对MavenParent的创建。 比如,我创建的项目路径在我的F盘的某文件夹中(F:\JDB\test),那么首先第一步是进入到该文件方法一:直接通过cd的方式访问方法二:进入到该文件夹内,然后点击Shift+鼠标右键,右键菜单会出现“在此处打开命令窗口”然后点击则会...原创 2016-02-19 13:49:39 · 1758 阅读 · 9 评论 -
【Maven进阶一】 多模块构建Maven项目
在平时的项目开发的过程中,我们慢慢的倾向了创建Maven项目,为了便于后期的维护,我们一般会进行分层开发,比如domain(),dao(),service(),web(),test()等多层开发,这样分层之后,各个层之间的职责会变得更加明确,后期维护起来也变得比较容易,本篇我们则来学习对于Maven项目的多模块创建。 分析过后,其实原理很简单,就比如我来管理一个超市,在刚开始的时候,由原创 2016-02-14 16:47:03 · 1637 阅读 · 11 评论 -
【Spring 基础篇一】为什么使用Spring?
最近在对Spring进行研究,Spring是一个轻量级的容器框架,对于Spring的基本定位就是"可有可无",如何进行解释呢,比如对于SSH框架来说,Spring的出现就是为了辅助Hibernate和Struts2更好的发挥其作用,对于其特性我们稍后再进行介绍,本次我们只是通过一个简单的demo来分析一下,既然"可有可无",为何我们还要使用呢? 对于项目,我们只需要建立一个Ja原创 2016-01-05 16:23:15 · 860 阅读 · 11 评论 -
【Spring 基础篇二】IoC容器的两种注入方式
在上篇介绍Spring的作用的时候,我们提到了在Manager实现层创建“构造函数”的注入方式,其实除此之外,还有一种“setter方法”注入的方式。部分代码如下:(详情过程见上篇 Spring—— 为什么使用Spring?)原创 2016-01-05 21:45:20 · 976 阅读 · 10 评论 -
OO模式-Proxy模式<一>静态代理
还依稀记得那个很经典的例子,王五喜欢一个女孩,但是过于害羞,让同伴李四代替自己去送花,最后女孩收到了话,但是猜想一下结果…………1、女孩很高兴,但是不知道到底是谁送的花;2、女孩很高兴李四送给自己花,并对李四有好感;3、女孩知道是王五托李四送给自己的话,心里甚是感激之情。当然咱们的重点并非是猜想最后的结果是什么,而是分析其实本来王五的事情却让李四去帮忙完成,没有直接和女孩交涉,这其实就是一个代理模原创 2015-11-03 11:23:50 · 759 阅读 · 8 评论 -
观察者模式
一、介绍观察者模式又叫做发布-订阅模式,模型-视图原创 2014-04-05 14:56:05 · 1620 阅读 · 15 评论 -
命令模式-重温策略
还记得一个多月前写的策略模式,自己出门旅行到底乘坐什么工具呢?这得由自己的想法以及原创 2014-04-28 14:18:14 · 1435 阅读 · 13 评论 -
状态模式
感慨:有时候生活中总会遇到这样的尴尬状况:话说着说着,突然就不理人了!感同身受一下,遇到这样的情况真的是心里很不好受啊!尽管他是无意的,可是结果已经成这样的,到最后肯定是矛盾一场啊!不过天最终还是会晴的,不就之后就会发现刚才吵架的两个人又有说有笑了!总结一句话:人呐!真是善变的动物!人的生活不就是四种表情状态吗?喜怒哀乐!阴晴不定!用个图来形容一下:结构图:实现的相关代码:原创 2014-04-06 15:42:50 · 1390 阅读 · 15 评论 -
浅谈三层架构(2)
上篇文章主要是对于三层有了一个表面的理解,下面针对原创 2014-06-01 15:14:31 · 1378 阅读 · 17 评论 -
出行选择-策略模式
设计模式之策略模式&状态模式原创 2014-03-15 15:40:02 · 2874 阅读 · 22 评论 -
原型模式
看设计模式看到了原型模式,居然还有这个模式啊!最近学的真的是到处都有模式的影子啊!到底什么是原型模式呢?原型,原型,顾名思义,不就是好多东西他们共同的主题部分不变,而细节也无需知道,这应该就是一个原型模式吧!定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。结构图:克隆对于我们是一个很常见的名词,也是设计模式中常用的,所以.NET在System命名空间中提供了原创 2014-04-02 20:28:44 · 1528 阅读 · 15 评论 -
【巧用百度地图】——获取AK值
这次着手新生系统学生端的开发,想添加一个关于本学校的地图供学生参考,当然第一想到的就是百度地图了,对于这些开发者的简单实用,百度地图已经封装好了,就只等着你用了,但是在使用之前,是必须要获取Key值的,就和Nuget一样,你发布可以,但是每次发布都必须得使用自己用户对应的Key值才行。 不管使用什么功能,如果不输入自己的KEY值,那么就会出现如下提示:本篇就来说原创 2015-09-02 19:42:38 · 6682 阅读 · 21 评论 -
考的好不好?-单例模式来解答
从小就很反感考试,因为每次考试完不管是谁,碰见你的第一句问候语就是:考试考得怎么样啊?期末成绩出来了吗?……所以从小就很害怕成绩单的出现,因为成绩单只要不出现,自己就可以随意编篡,问自己考得怎么样?当然往好里说吧!还行吧!挺好的…… 因为考试考得好不好,是由自己内心来判断的,考得好,我当然希望告诉他人;但是考得不好,我也不想让他人知道,所以只要蒙混过关就可! 这样就谈到原创 2014-04-26 16:48:59 · 1316 阅读 · 20 评论 -
OO模式-Singleton
讨论一:既然只有一个类?为什么非要用一个模式来定义?难道就不能用程序员之间的约定又或者使用伟大的设计模式来完成?1)先来说说全局变量的好处,当定义一个全局变量时,任何一个函数或者一行代码都可以轻松访问所有的全局变量,并且不用付出额外的代价,轻松简便。就如在敲机房收费的时候,我就定义机房登陆用户名为一个全局变量,因为在整个系统的执行过程中,很多方面都用到了用户名的信息,在此,调用全局变量,轻而易举就...原创 2014-10-05 22:09:24 · 1466 阅读 · 18 评论 -
OO模式-Composite
本篇文章主要就是对组合模式的一个简单认识,在什么情况下采用该模式等等的简单介绍!原创 2014-10-13 18:59:21 · 1532 阅读 · 20 评论 -
迭代器模式
想法:看完售票员这个迭代高手,突然想起了自己高中之前当课代表的无聊日子了!每天面对教室中那些黑压压的人群,就有点透不过气来!更何况天天还得催着他们交作业!更是透顶的无聊啊!最可恨的还是每次总是有那么几个人忘记或者就是故意不交作业,让自己着实费一番苦工把他们搜索出来!定义:迭代式模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。就如自己这个课代表职位,不管是学原创 2014-04-23 16:06:10 · 1477 阅读 · 18 评论 -
VB.NET & 策略模式(下机用户类型选择)
上篇文章讲述了对于下机操作和基本数据设定的时间联系,今天主要就是应用“策略模式”来了解了解对于固定用户,以及临时用户之间的选择,看学习设计模式的时候自己对于策略模式的理解,我们可以把固定用户和临时用户封装起来,这样系统就可以按照用户的类型来进行选择了。当然前提首先要抽象一个类,来封装这两个用户类型。原创 2014-08-21 00:12:52 · 2104 阅读 · 26 评论 -
代理模式VS适配器模式
1)适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单点就是需要的东西就在面前,但却不能使用,而短时间又无法改造=它,于是我们就想办法适配它。举一个生活中最常见的例子!就如我们的球类吧!如排球,如果只是想拿着排球在自行车老大爷那说点好的来打气是行不通,因为那的打气筒是无法往你的排球里灌入气体的,所以你原创 2014-03-26 20:55:05 · 3173 阅读 · 19 评论 -
装饰模式VS建造者模式
装饰模式和建造者模式的介绍和比较,我觉得弄了半天其实就有一条最明显的不同,装饰模式的构建过程是不稳定的,如对人的穿着,正常点就是合理搭配,不正常的则属于是个性。而建造者模式的构建过程是稳定的,如去德克士吃饭,不管你要什么,肯定都是那么个过程,不会打乱。原创 2014-03-25 20:20:15 · 2420 阅读 · 21 评论 -
设计模式总结-结构型模式
如何组合类和对象以获得最大的结构不是对接口和实现原创 2014-05-03 16:31:47 · 1416 阅读 · 10 评论 -
NuGet之权限问题(Delete)
在发布Nuget使用的过程中,出现了这样的一个问题:就是A同志发布的Dll文件,在有事情离开项目组之后,那只能更换B组员来取代他之前的工作,包括对于DLL文件在NuGet上的更新,在更新的过程中,就出现了以下的问题:之前的想法是,直接B在自己的apikey的情况下,直接对于更新就行,但是事实并非如此,就好像Baby一样,他不会因为你的好而直接忽视母爱的伟大。以至于他根本就直接忽视你的存原创 2015-04-27 23:28:36 · 2548 阅读 · 21 评论