- 博客(53)
- 资源 (2)
- 收藏
- 关注

原创 设计模式实例源码
我在博客中所写过的设计模式的举例源码,均已公开,欢迎下载查阅。由于是java源码,请注意打开工具。云盘链接地址:https://pan.baidu.com/s/10f6CQMXKY2D2HrpnG9IOgw提取密码 : xtjt...
2018-09-04 10:09:45
355
原创 Git入门——解决Git push需要输入用户名和密码的问题
如果已经关联了远程仓库,但是每次push代码还要输入用户名和密码,那可能是连接方式的问题了,之前可能用的是http的连接方式,连接方式通常写成git remote add origin https://github.com/zhen921/holiday_github.git 这种。现在可以尝试下面的办法。1.git remote rm origin 移除已经添...
2019-02-28 20:06:53
2339
原创 Git入门——windows环境下git连接github远程仓库
既然使用git了,远程仓库的连接配置是一定要学的,好处也是显而易见的,在我看来远程仓库的好处主要有两点:一是可以作为本地仓库的一个备份,这样项目会更有保险。二是有了远程仓库更方便团队的协作开发。连接远程仓库简单来说四步就够了。建立本地仓库和远程仓库 本地生成钥匙 把钥匙放到github上 本地连接github第一步 建立仓库既然我们要连接远程仓库,那前提是远...
2019-02-27 20:11:46
5182
原创 git入门——windows环境下,git的下载安装与配置(一)
下载git 1.Git 是开源的,因此可以直接到git官网下载 2.进去之后直接点击下载即可,本次我要安装的是Windows版的 3.下载完成之后,直接安装,windows版本,一直点击next,直到安装完成即可 启动git 1.可以在程序列表中找到git,打开git bash 2.弹出命令行窗口,启动成功...
2019-02-24 18:05:16
5024
1
转载 用samba实现windows系统与ubuntu的文件共享(命令行的方式)
本文参考博客(第二篇为主)https://blog.csdn.net/andrewgithub/article/details/82052914https://blog.csdn.net/lg5196/article/details/83095664https://blog.csdn.net/heroful/article/details/26477503 前言 ...
2018-11-15 09:49:15
625
原创 二分查找的理解(java程序举例)
二分查找的解释 二分查找又叫做折半查找,其作用有两个,一是可以高效的查询有序的数列中是否存在要查询的元素以及元素的位置,二是如果要往有序的数列中插入一个数,可以高效的查找到添加位置(但是由于其存储结构是顺序的,因此插入时效率低),由于其查找原理的好处使得二分查找的最坏情况的时间复杂度也为O(log2n),要优于顺序查找,其查找原理稍后用实例解释。需要满足的条件二分查找是...
2018-11-04 13:51:01
419
原创 解决NonUniqueObjectException a different object with the same identifier value was already associate
前言出现这个问题一定是数据库的问题了报错英文different object with the same identifier value was already associated with the session翻译是,具有相同标识符值的不同对象已与会话关联当然这样说有点难以理解,简单来说就是在一个session回话里,你要操作的对象已经和session关联上了,如果你在操作...
2018-10-07 17:29:30
884
原创 java debug 出现蓝箭头解决办法 (Debug Current Instruction Pointer)
用eclipse进行debug的时候,有时候debug会出现蓝色箭头,如下图 当debug的时候遇到这个箭头就停止了,其实这是因为你上个debug没有关掉导致的,可能是关闭调试程序不当导致的,解决办法也很简单,首先你要先进入debug调试页面。下图可以看到,截图左上方,和右下方各有一个红色方块表示停止程序,只要你先点击左上方的方块就行了。 ...
2018-10-07 11:13:02
11469
6
原创 struts里用jsp传输数据遇到乱码解决方案
上午搭了一个ssh的项目,但是测试的时候,前台的中文一到后台就乱码,查了一下才发现是由于建立jsp的页面,虽然默认保存的是iso-8859-1格式,但是由于引入bootstrap的缘故,只能保存为utf-8的编码,而在数据传输的过程中又是用的iso-8859-1格式,所以后台显示乱码,虽然网上给出的解决方案较多,但我这个问题比较顽固,不过最后还是在不懈的努力下找到了解决方案致谢博主 技...
2018-10-02 20:21:50
300
原创 ajax传数据中文乱码问题
由于项目需要用到了ajax 技术,而ajax请求是自己封装的,没有指定编码,这次从后台取出数据往前台传输的时候,发现前台中文乱码,找了一上午,终于找到解决办法。只要在后台设置了字符编码就行了,在返回数据之前加上下面两句话。response.setContentType("text/html;chatset=utf-8");response.setCharacterEn...
2018-10-01 16:00:25
2439
转载 包含所有省,市,县的数据库,免费下载
因为项目需要,搜了老半天,找到一个良心博客,直接复制执行sql语句,轻轻松松建立三级地址的数据库,还是免费资源哦!传送门:http://blog.sina.com.cn/s/blog_6b86603201019fyc.html...
2018-10-01 08:48:16
2418
原创 数据库设计三范式的举例说明
前言 数据库课本上都把范式写到五范式了,但是实际应用中,满足三范式已经足够了,五范式太多余了。三种范式是条件递增的联系(即后一个范式是在前一个条件满足的情况下引入新的条件)。 例如 范式 满足条件 一范式(1NF) 条件a 二范式(2NF) 条件a...
2018-09-14 12:59:19
14242
10
原创 一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第30位数是多少, 用递归算法实现
前言 首先声明,这道题解法来自博客:https://blog.csdn.net/qq_16633405/article/details/79211002 不过原文没有给出解释,想了很久才想出来 解题思路这是ACM中比较常见的一类题,本身找规律是不难的,无非就是前两个个数相加等于后一个数,按照常规的解法是很容易的,例如 java源码pub...
2018-09-11 10:56:43
14514
原创 设计模式入门——备忘录模式
前言说起备忘录模式也许会很陌生,但是我们身边有很多备忘录模式的应用,例如在手机或电脑上下棋,如果下错了,是可以悔棋的,在比如我们小时候玩坦克大战,如果坦克还有很多条命,而且现在装备很厉害,我们就想做一下备份,等挂掉的时候重新恢复一下接着打。这样我们就明白备忘录模式是做什么的了,简单说就是备份当前角色状态,后期可以回滚回来。 作为行为型模式的一种,备忘录模式并不是很有名,但是挺有用,备忘录模式...
2018-09-03 11:24:55
726
原创 设计模式入门——中介者模式(mediator)
前言 中介者模式又称为调停者模式,作为行为型的模式之一,本身是个很低调的模式,因为应用场合有限,所以不那么被人熟知 下文我将举例介绍中介者模式的作用,以及中介者模式应用的意义,文末我会总结一下中介者模式的一些特点 实例引入 假设现在科技发达之后,家里所有设备都是智能化的,而小明在家洗澡的时候有个习惯就是喜欢听歌,而且洗澡时候还要把窗帘拉上。因此就有这种情形,小明...
2018-09-02 16:52:09
18165
13
原创 设计模式入门-------责任链模式(responsibility)
前言 责任链模式是行为型模式之一,由于其构成要素简单清晰,理解起来较为简单。 因此本篇博客我举一个极其简单的例子来说明一下它的基本构成,然后梳理一下它的一些特点 文章最后我将结合简单工厂把程序稍微改进一下 理解 责任链模式中里面的每个对象都持有对下一个对象的引用,因此连成一条链,所以是责任链,责任说的就是要做的事,请求会在链端开始传递,直到有一个合适的对象处理这个请求...
2018-09-01 11:36:22
389
原创 建造者模式(builder)
前言 建造者模式也叫生成器模式,作为设计模式里五个创建者模式之一,它的作用也是为了创建对象,但是不同于其他模式直接new的方式,它的存在是为了创建复杂的对象,因此创建之路一波三折。 同工厂模式相似,建造者模式也是完成了对创建对象程序的封装,达到了要用就拿的效果。 关于什么是复杂的对象,如果要用的时候直接new出来的就不复杂,复杂的对象复杂在为了达到某种作用,我们需要对某些对象进行属性...
2018-08-31 13:49:11
272
原创 设计模式入门———状态模式(State)
前言在我看来,状态模式在设计模式中算是比较复杂的了,而且这个模式并不怎么优秀 本篇我将举两个例子来说明用不用状态模式对程序结构上的影响,以及状态模式所带来的好处 由于状态模式和策略模式类图基本一致,因此文末将做一些对比 情景引入 首先我们先看一个没加状态模式的简单例子,支付宝里有个小游戏叫蚂蚁庄园,我在里面已经捐满了500颗爱心,获得了四个勋章,但是竟然有人都捐70...
2018-08-30 17:22:32
3600
原创 代理模式(proxy)
前言 代理模式是一个大类,而且会经常用到,它包含了远程代理,虚拟代理,防火墙代理等,当然还有动态代理了,学过spring的人应该不陌生。 各种代理模式样式差别很大,不容易从程序上辨认,但是可以从功能上认出来,今天我就举个例子聊聊代理模式最基本的样子,从例子中认识代理模式。 举例为静态代理的基本应用,稍后再介绍代理模式的一些特点。 情境引入 本次我们以滴滴为例...
2018-08-29 11:07:42
16610
1
原创 命令模式(command)
定义 命令模式将请求,封装成对象,以便使用不同的请求,队列或者日志来参数化其他的对象,命令模式也支持撤销的操作。 理解 在我看来命令模式最大的优势就是实现了调用者与被调用者之间的解耦,而被调用者往往不只一种,但被封装成对象之后,留出统一的接口,这样可以实现统一调用,而通过命令模式实现的撤销操作则用处更大了。 应用场景 利用命令模式可以将运算程序都...
2018-08-28 17:24:15
324
原创 工厂模式一一抽象工厂模式(abstract factory)
前言 什么是工厂我就不在介绍了,我写的简单工厂已经介绍的很详细了,文中有链接。不论是对比简单工厂还是工厂方法,抽象工厂看起来都是一种很麻烦的模式,抽象工厂和工厂方法其实是完成了类似的功能,上期我们介绍工厂方法的时候我说过,对于工厂方法的扩展,添加一种产品是很容易的,而且不用修改原有的代码,而如果对已经存在的产品去细分,则没办法符合开闭原则了(在菜单上如果我添加新的产品蛋炒饭,工厂方...
2018-08-26 16:48:30
399
原创 工厂模式一一工厂方法模式 (factory method)
前言 之前的博客介绍了简单工厂,虽然简单工厂达到了工厂模式的效果,但是简单工厂在设计上却有很大的缺陷,其中最大的缺点就是不易扩展,而在工厂方法模式里则修正了这个缺点,下面举例的程序是从简单工厂改的,简单工厂是了解工厂模式的入门,建议先去看看我写的简单工厂的博客。传送门:https://blog.csdn.net/zhen921/article/details/81986986...
2018-08-24 17:05:43
793
原创 工厂模式一一简单工厂(factory)
写在前面 首先要明白简单工厂,并不是23种设计模式的一种,它更应该归类到一种编程习惯之中,不论是抽象工厂,还是工厂方法都是比较成熟而且富有弹性的设计模式了,在这里谈简单工厂是为了引出那两个重磅级的设计模式。 简单工厂的作用 工厂,一听就知道是用来制造东西的,而在程序里工厂是专门用来创建对象的,这点都不例外,说白了简单工厂模式,就是专门建立了一个类负责对象...
2018-08-23 20:14:01
570
原创 外观模式(facade)
外观模式本身理解起来是很容易的,也就一句话 talk is cheap , show you code情景假设你家养了一个机器人,笨笨,它很笨,而你经常让他给你冲咖啡,但是步骤都要你一个一个去指示,比如,放咖啡粉,倒热水,搅拌搅拌,都要去下命令让他完成,而如果想摆脱这些繁杂的步骤,使用外观模式就行了,这样你的指令就是,去帮我泡杯咖啡。(下面例子中注意对比加不加外观模式源程序和类图的区别)。...
2018-08-23 10:05:35
621
原创 适配器模式(adapter)
理解 适配器模式所做的就是对接口的转换,如果想给手机充电,而现实是只有一个三孔插头,此时如果有一个插座肯定就解决了。因此适配器直接作用就是对接口的转换,适配成你现实需要的接口,而适配器是在原有类的基础上扩展出来的(有现成的三孔插头了,才能做适配),即也是为了对现有类方法的复用 适配器分为两种类适配器通过继承创建的适配器对象适配器通过组合创建的适配器 应用场...
2018-08-22 16:07:27
2064
原创 模版方法模式(template)
理解涵义:定义了一个算法的步骤,允许子类实现其中的一个或多个步骤模版方法普遍是在多个类中有些算法步骤一成不变的出现,或是类与类算法步骤是相同,但具体实现有差异,可以将相同的部分提取出来封装起来,定义基本算法骨架,然后让子类去继承实现 模版方法在实际中应用很多,其重要性不在于提供的步骤,而是把相同代码提取出来进行封装的思想 应用环境只要多个类都要按一定算法步骤去写,就能提取封装...
2018-08-21 19:00:44
430
原创 装饰者模式(decorator)
作用 装饰者模式的作用就是可以方便的为组件添加功能,例如买卷饼的时候,你肯定希望卷饼是按自己的口味卷的,要不要放鸡蛋,要不要加生菜,辣椒酱还是番茄酱,如果能自由搭配最好,写程序也是一样,如果有一堆零件,自由搭配肯定更灵活,所以装饰者存在的意义就是给基本组件附加功能。 应用场景io流(装饰者模式在实例化的时候,总是一个套一个,如下所示) File f=new File(...
2018-08-20 16:03:46
255
原创 观察者模式(observer)
我的看法 其实现方式实际上为观察者定义统一的接口,便于主题的通知,而主题内维护了一个观察者列表,在列表上的观察者,主题发生变化的时候会遍历通知 实质上 观察者模式=出版者+订阅者(即被观察的主题发生变化会通知观察者) 应用场景 订阅号 swing组件的监听器 天气预报平台等 其中用...
2018-08-19 10:51:23
410
原创 策略模式(strategy)
个人理解策略模式封装了算法族,其设计的目标在于对容易发生变化的行为(算法)进行封装,使其在不影响源代码的基础上容易添加删除行为(算法)。应用场景 主要用于在类与类之间的表现在行为不同,运行时需要选择不同的行为,策略模式则封装了这些行为 考虑到不同的情况会应用不同的算法,也用策略模式封装算法 所体现的设计原则 对修改封闭,对扩展开放(想要添加新的行为不用修改原有代码) ...
2018-08-18 17:20:39
350
原创 java中覆盖和重载的区别
1. 首先搞明白覆盖是什么? · 举个栗子public class Main { public static void main(String[] args) { new Father().print(); new Son().print(); }}class Father{ public void print(){ System.ou...
2018-06-16 17:06:35
25252
2
原创 java中Collection与collections的区别
Collection和collections本质上是不同的,前者是集合类的接口,后者是一个包含了很多静态方法的工具类 · 下图虚线框表示接口,实线框是具体类,可见对于list和set类的创建都实现了collection接口,因此collection接口存在的目的是更好的扩展集合类 · 下图是java 的api中collections的方法,可见其中都是静态方法,而这些方法都...
2018-06-16 15:51:38
466
原创 StringBuffer /StringBuilder和String 的区别
· 首先要知道它们的作用主要是为了保存字符串(他们的区别也主要体现在这),比起string 的提供的各种操作,前两者主要优势则是体现在速度上(底下附实例验证)。记住几个重要知识点· 速度上 StringBuilder>StringBuffer>String (前两个速度很接近,但速度远超string)· StringBuilder 线程不安全,...
2018-05-28 13:31:15
216
原创 排序算法入门——基数排序
前言 基数排序的排序原理不难理解,但是在算法设计上,个人感觉还是比那些常见的排序要难的,耐心慢慢一步步理解,还是比较容易看懂的,注意基数排序有两种,一种是高位优先,一种是低位优先,在这里我只讲低位优先,即先排个位,再排十位……….时间复杂度· 基数排序的时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数注:比其他的稳定排序原理...
2018-05-17 17:33:25
18993
9
原创 排序算法入门——快速排序
涵义· 虽说快速排序是由冒泡排序改进而来,二者都是通过元素交换达到排序效果,但是在个人看来快速排序思想和冒泡完全不同。时间复杂度· 直接插入排序最好的时间复杂度为O(nlog2n)· 直接插入排序的最坏时间复杂度为O(n2)· 因此直接插入排序总的平均时间复杂度为O(nlog2n)注:不稳定 排序原理快...
2018-05-15 21:18:36
307
原创 事务(transation)的知识点
定义· 一个最小的不可再分的工作单元· 通常一个事务对应一个完整的业务· 一个完整的业务需要批量的DML语句(Insert updatedelete..)语句共同完成· 事务只和dml语句有关· 需要多少dml语句与业务逻辑有关举例银行的转账业务,涉及两个账户的修改,所以要么都修改成功,要么都不修改...
2018-05-14 16:50:13
1853
原创 排序算法入门——希尔(shell)排序
涵义· 希尔排序是直接插入排序的改进版,其排序过程中采用的排序依然是插入排序,但是也做了一定优化,使插入排序效率更高。时间复杂度· 直接插入排序最好的时间复杂度为O(n)· 直接插入排序的最坏时间复杂度为O(n^2)· 因此直接插入排序总的平均时间复杂度为O(n^1.3)注:不稳定排序原理相对于插入排序的一...
2018-05-12 10:40:37
4769
2
原创 1.2.2 hidehandkerchief(附翻译)
Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8026 Accepted Submission(s): 2571 Problem Description The Children’s Day has passed for ...
2018-05-12 08:49:01
492
原创 排序算法入门——直接插入排序
时间复杂度 · 直接插入排序最好的时间复杂度为O(n)· 直接插入排序的最坏时间复杂度为O(n^2)· 因此直接插入排序总的平均时间复杂度为O(n^2)注:具有稳定性排序原理 虽然给出的排序数字为一个数组或者别的容器,但是排序的时候,就当是顺序给你一个又一个数字,给你一个你排一个(类似于扑克牌,打牌的...
2018-05-11 09:51:07
3075
1
原创 mysql数据库的备份与恢复(附测试截图)
数据库备份恢复注意要点· 备份命令不是在mysql里输入的,而是在命令行里· 不要在命令结尾加分号;· 恢复命令有两种,我只展示命令行中的恢复办法 备份命令格式Mysqldump -u用户名 -p密码 要备份的数据库名称 >备份路径 备份名称.sql 举个栗子用户名 root 密码 123456 要备份的数据库名称 imau 备份到 f盘 备份名称...
2018-05-09 15:24:32
1923
原创 1.2.1Climbing Worm(附翻译)
Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5750 AcceptedSubmission(s): 3389 Problem DescriptionAn inch worm is at the bottom of a well ninches...
2018-05-07 18:26:43
480
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人