自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 JDK默认实现的观察者模式

观察者 java.util.Observer一个类想要在被观察者对象发生改变时得到通知的话,可以实现Oberver接口。当被观察者对象发生改变时,这个方法会被调用。应用会调用Observable对象的notifyObservers方法以通知这个被观察者对象的所有的观察者对象。被观察者 java.util.Observable一个被观察者对象可以有一个或多个观察者.一个观察者可以是任何实现了Observer的类。当一个被观察者对象发生改变时,应用会调用Observable对象的notif..

2020-12-25 15:07:52 186

原创 数据结构与算法-单向链表

一、链表1、链表是以节点的方式存储的,是链式存储2、每个节点包含data域和指向下一个节点的next域3、链表分带头节点的链表和不带头节点动的链表,根据实际需求来确定二、应用场景游戏排行榜三、思路分析添加节点由于head不能改动,定义一个临时变量temp,遍历链表,找到最后一个节点,将最后一个节点的next指向新节点根据顺序添加节点由于head不能改动,定义一个临时变量temp,遍历链表,找到no比新节点heroNode.no大的前一个节点temp,heroNode.next = te

2020-12-24 20:56:00 105

原创 数据结构与算法-队列

一、队列队列是有序列表,可以用数组或链表实现二、应用场景银行取号排队,先到先处理三、思路分析数组模拟队列思路分析1、maxSize表示队列的最大长度2、ront指向队列头部数据的前一个位置,初始值为-13、rear指向队列的尾部数据,初始值为-14、添加数据时,先判断队列是否已满(当rear=maxSize-1时,队列已满),未满,则rear++,5、取出数据时,先判断队列是否已空(当front=rear时,队列已空),未空,front++,四、代码实现/** * 数组模拟

2020-12-23 21:42:49 150

原创 数据结构与算法-稀疏数组

一、稀疏数组稀疏数组1、第一行记录数组一共有几行几列,有多少个不同的值2、把不同值的元素的行、列及值记录在一个小规模的数组中,从而缩小数组的规模二、应用场景当一个数组中大部分元素为0,或者为同一个值时,可以使用稀疏数组来保存该数组。如五子棋盘。五子棋盘存盘退出和续盘。存盘退出:使用稀疏数组存盘可节省空间续盘:稀疏数组可还原成原来的二维数组三、代码实现思路二维数组转稀疏数组1、遍历二维数组,得到有效数据的个数sum2、sum+1就是稀疏数组的行数,列数固定为3列,创建稀疏数组s

2020-12-23 20:47:45 85 1

原创 crontab表达式详解

一、crontab表达式详解在线 cron 表达式生成器:http://cron.qqe2.com/1、cron属性:指定具体的时间点,cron表达式可以完成任意的时间搭配,必须六或七个域,中间使用空格隔开,从前完后依次为:秒(1-59)、分(1-59)、时(1-23)、日(1-31)、月(1-12)、星期(1-7)、年(~2099)特殊字符:*:匹配该域的任意值-:表示范围,例如:0 0 9-17 * * * 每天朝九晚五时间内的0分0秒触发/: 时间间隔,例如:5/10 * * *

2020-12-23 14:54:16 1708

原创 正则表达式

一、单个字符(数量:1)字符:表示由一位字符所组成,如a \\:表示转义字符"\" \t:表示一个"\t"符号 \n:匹配换行"\n"符号二、字符集(数量:1)[abc]:表示可能是字符a或者是字符b或者是字符c中的任意一位[^abc]:不是a、b、c中的任意一位[a-z]:所有的小写字母[a-zA-Z]:表示任意的一位字母,不区分大小写[0-9]:表示任意的一位数字三、...

2020-03-03 12:34:38 63

原创 linux学习记录—grep和egrep

一、常规使用grep -E等价于egrep 排除匹配的行grep -v python filenamegrep -vi python filename输出行号grep -n python filename扩展的正则表达式grep -E "python|PYTHON" filenamegrep "py.*" file不支持扩展的正则表达式,按字面查找grep -F "p...

2020-03-02 22:37:02 90

原创 linux学习记录—find命令

一、基本命令find /etc -name '*.conf' find /etc -iname '*.conf'find . -user find . -group find . -type f find . -type d查看当前目录的文件和文件夹大小,以kb为单位ll -h filename二、指定文件大小-sizefind /etc -size -100kh三、...

2020-03-02 21:59:29 114

原创 Oracle实例状态

一、动态注册和静态注册lsnrctl status查看实例状态静态注册的实例状态会显示为unknow,动态注册的实例状态会显示为ready或者blocked二、实例状态为blocked实例状态会显示为blocked说明实例不可用。先检查对应实例的数据库是否已经启动。在多实例的环境下,先查看.bash_profile里的ORACLE_ID的配置,看配置是否正确。启动数据库sqlplu...

2020-03-02 18:37:40 1608

原创 Oracle表空间相关操作

一、扩展表空间-- 修改数据文件大小alter database datafile '数据文件位置' resize 30720Malter database datafile file_id resize 30720M --file_id是数据文件id-- 添加数据文件,此方法最多能加32g的数据文件alter tablespace 表空间名字 add datafile '数据文件位置...

2020-02-20 11:36:27 83

原创 Oracle 查看表空间的大小及使用情况

1、查看表空间的名称及大小SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_sizeFROM dba_tablespaces t, dba_data_files dWHERE t.tablespace_name = d.tablespace_nameGROUP BY t.tablespace_name;2、...

2020-02-20 11:25:55 146

原创 linux常用命令备忘

1、远程文件拷贝scp sell.jar root@192.168.0.110:/home/redis/software

2020-02-18 19:44:20 102

原创 centos下安装redis

一、环境1、CentOS版本:CentOS release 6.5 (Final)查看版本命令:cat /etc/issue2、redis国内下载地址3、redis版本:5.0.7查看版本命令:./redis-server -v或./redis-server --version二、安装1、root用户下创建组和用户(可不做)groupadd redisgroupuseradd -...

2020-02-18 01:11:12 67

原创 linux学习记录—常用工具

1、find命令find /etc -name '*.conf'忽略大小写 find /etc -iname '*.conf'所属用户find . -user 所属组find . -group 文件类型find . -type f 文件夹类型find . -type d按文件大小查找find /etc -size -100k查看文件大小ll -h filename...

2020-02-13 14:27:18 88

原创 linux学习记录—函数的高级用法

1、判断nginx是否在运行示例一this_pid=$$ //当前进程号while true; do ps -ef|grep nginx|grep -v grep|grep -v $this_pid if [ $? -eq 0 ]; then echo "Nginx is running..." sleep 3 else systemctl start nginx e...

2020-02-13 14:23:34 72

原创 linux学习记录—变量的高级用法

1、删除字符串variable_1="I love you, Do you love me"echo $variable_1从前面开始匹配,删除最短的,结果"e you, Do you love me"var1=${variable_1#*ov}从前面开始匹配,删除最长的,结果"e me"var2=${variable_1##*ov}从后面开始匹配,删除最短的,结果"I love y...

2020-02-10 12:23:01 110

原创 SpringBoot整合其他组件时遇到的问题

一、整合Mybatis1、Error parsing Mapper XML异常:Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is ‘file [D:\Projects\EclipseProjects\springcloud\microcl...

2020-01-11 09:47:04 122

原创 Mysql8.0.18解压版安装

一、环境信息系统版本:win10软件版本:mysql-8.0.18-winx64.zip解压路径:D:\Programs\mysql-8.0.18-winx64设置系统环境变量:MYSQL_HOME=D:\Programs\mysql-8.0.18-winx64;PATH增加%MYSQL_HOME%\bin二、配置使用MYSQL1、初始化cmd环境下,进入%MYSQL_HOME%\b...

2020-01-10 23:40:28 219

原创 SMPP长短信

最近在做SMPP协议接口的对接,在发送长短信时,长短信的合并有问题。如一条长短信被拆分成两条,那客户将会收到两条短信。正常应该是一条合并后的短信。本文通过示例代码说明一下结果过程。一、长短信协议头长短信协议头,有6位协议头和7位协议头,这里拿6位协议头做说明:6位协议头格式:05 00 03 XX MM NNbyte 1 : 05, 表示剩余协议头的长度byte 2 : 00, 包头类型...

2019-10-30 17:20:50 1779

原创 观察者模式

观察者抽象类:Observer.java观察者具体实现类1:StockObserver.java观察者具体实现类2:NBAObserver.java被观察者抽象类:Subject.java被观察者具体实现类:Secretary.java测试类:Client.java被观察者维护有观察者的一份列表,当被观察者的状态发生变化时,遍历观察者列表以通知他们Observer.javapa...

2019-10-28 09:12:57 84

原创 TCP三次握手与四次挥手

服务器处于监听端口状态客户端向服务器发送SYN包,此时SYN=1,初始化一个序列号seq=x(随机生成),SYN=1的包不能携带数据,但消耗一个序列号,此时服务器知道客户端能向它发送信息,客户端进入SYN_SEND状态服务器向客户端发送SYN+ACK包,此时SYN=1,ACK=1,初始化一个序列号seq=y(随机生成),确认序号ack=x+1(第一次SYN包的seq加1),即服务器端表示希望...

2019-10-28 09:07:01 81

原创 状态模式

状态模式:允许一个对象在内部状态改变时改变它的行为。对象看起来似乎修改了它的类。何时使用:代码中含有大量与状态有关的条件语句。将状态的判断逻辑转移到表示不同状态的一系列类中,可以把复制的判断逻辑简化。状态类的抽象类:State.java,控制状态的切换上下文类:Work.java早上状态类:ForenoonState.java中午状态类:NoonState.java下午状态类:Afte...

2019-10-22 11:12:08 53

原创 tomcat执行shutdown.sh之后进程还存在

一、问题背景环境:linux,tomcat9问题描述:tomcat执行shutdown.sh之后进程还存在原因:项目中存在非守护线程Thread.currentThread().setDaemon(false);二、问题解决思路:设置线程为守护线程Thread.currentThread().setDaemon(true);记录tomcat进程pid,shutdown时强制关闭进程...

2019-10-18 16:42:03 859

原创 Tomcat中文乱码问题

一、解决request请求乱码问题修改${Tomcat_Home}/conf目录下的server.xml文件修改前修改后,加了后面两行参数二、解决post请求乱码问题将${Tomcat_Home}/conf目录下的web.xml文件里的setCharacterEncodingFilter过滤器打开即可。如果这样还不能解决,可从以下两个思路尝试去解决问题:1、代码写得问题2、项目...

2019-10-17 17:13:52 80

原创 建造者模式

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者抽象类:PersonBuilder.java具体建造者类1:PersonFatBuilder.java具体建造者类2:PersonThinBuilder.java指挥者类:PersonDirecotor.java测试类:Client.java实现此模式的关键在于使用一个指挥者类持有建造者的实例...

2019-10-16 14:19:40 78

原创 外观模式

外观类:FUN.java子系统类1:Stock1.java子系统类2:Stock2.java测试类:Client.java实现此模式的关键在外观类将持有每一个子系统类的实例,通过调用子系统来实现客户需要的功能,从而为客户提供满足功能的接口满足迪米特法则,子系统之间的耦合度低不满足开闭原则,可能需要修改外观类的实现Fund.javapackage com.pattern.test...

2019-10-16 11:09:02 52

原创 模板方法

模板类:TestPaper.java具体实现类1:TestPaper1.java具体实现类2:TestPaper2.java测试类:Client.java实现此模式的关键在于将子类的重复不变的结构提取到父类中,如本例中提取出一个模板方法question()到父类中。然后将变化的部分在父类中定义一个抽象方法,如本例父类中的answer()方法。由具体的实现类去实现该方法,从而使调用模板方...

2019-10-16 11:05:26 84

原创 plsql配置oracleclient

一、软件版本请先行安装PLSQL和ORACLE。PLSQL:12.0.7.1837Oracle:11.2.0Oracleclient:11.2.0.4二、配置oracleclient2.1、下载instantclient-basic-nt-11.2.0.4.0.ziphttp://www.oracle.com/technetwork/topics/winsoft-085727.htm...

2019-10-15 09:19:44 431

原创 动态代理模式

代理类与被代理类公共的接口:GiveGift.java被代理类(追求者):Pursuit.java动态生成代理类的类:LoggerHandler.java被追求者类:SchoolGirl.java(可忽略,不影响对动态代理模式的理解)测试类:Client.java实现此模式的关键在于代理类与被代理类实现相同的接口,这样但凡使用到被代理类的地方都可以使用代理类,代理类持有被代理类的引用。...

2019-10-14 11:11:21 60

原创 静态代理模式

代理类与被代理类公共的接口:GiveGift.java被代理类(追求者):Pursuit.java代理类:PursuitProxy.java被追求者类:SchoolGirl.java(可忽略,不影响对静态代理模式的理解)测试类:Client.java实现此模式的关键在于代理类与被代理类实现相同的接口,这样但凡使用到被代理类的地方都可以使用代理类,代理类持有被代理类的引用。符合依赖倒转...

2019-10-14 09:23:40 87

原创 装饰模式

一、类的卸载抽象装饰类与被装饰类的父接口:Operate.java被装饰类:Person.java抽象装饰类:Finery.java具体装饰类A:BigTrouser.java具体装饰类A:Tshirts.java测试类:Client.java实现此模式的关键在于抽象装饰类与被装饰类实现相同的接口,抽象装饰类持有公共接口的引用。符合依赖倒转原则,针对接口编程,依赖于抽象而不依赖于...

2019-10-12 09:21:54 53

原创 类加载器(二)

一、命名空间每个类加载器都有自己的命名空间,命名空间由该加载器及其所有父加载器所加载的类组成。在同一个命名空间中,不会出现类的完整名字(包括类的包名)相同的两个类;在不同的命名空间中,有可能出现类的完整名字(包括类的包名)相同的两个类。同一命名空间内的类是互相可见的子加载器的命名空间包含所有父加载器的命名空间。因此由子加载器加载的类能看见父加载器加载的类。由父加载器加载的类不能看见子加...

2019-10-10 14:25:28 92

原创 策略模式

策略类的接口:CashSuper.java策略上下文类:CashContext.java原价策略:CashNormal.java打折策略:CashRebate.java返现策略:CashReturn.java测试类:Client.java实现此模式的关键在于策略上下文类持有策略类的引用。符合依赖倒转原则,针对接口编程,依赖于抽象而不依赖于具体。CashContext.java持有策...

2019-10-10 12:18:26 53

原创 添加SSH端口

1、修改sshd-config文件vi /etc/ssh/sshd-config将Port 22的注释打开在下面新增Port 111222、重启sshd服务service sshd restart

2019-10-10 12:03:40 274

原创 修改oracle端口

1、查看监听是否启动lsnrctl status2、停止监听lsnrctl stop3、修改listener.ora文件的PORT参数ORACLE_BASE=/home/oracle/app/oracle/文件所在位置${ORACLE_BASE}/product/11.2.0/dbhome_1/network/admin/listener.oravi listener.ora4、...

2019-10-09 22:45:34 91

原创 类加载器(一)

一、类加载器的种类根类加载器:Bootstrap,该加载器没有父加载器,它负责加载虚拟机的核心类库,如java.lang.*等,它从系统属性sun.boot.class.path所指定的目录中加载类库,它依赖于系统底层,属于虚拟机的实现的一部分,没有继承java.lang.ClassLoader类扩展类加载器:Extension,它的父加载器为根类加载器,它从系统属性java.ext.dirs...

2019-09-28 15:52:20 74

原创 类的加载、连接与初始化

一、类的加载、连接与初始化加载:查找并加载类的二进制数据将字节码文件加载到内容,将数据放入方法区,在堆内容生成一个java.lang.Class对象,Class对象封装了方法区中对应的类的数据结构。连接:验证:确保被加载的类的正确性准备:为类的静态变量分配内存,并将其初始化为默认值解析:把类中的符号引用转换为直接引用初始化:为类的静态变量赋予用户给予的初始值初始化的条件:首次主动使...

2019-09-27 17:29:47 143

原创 git学习手记五—自定义Git

1、设置忽略文件如.class等文件在git status时不会提示未添加在本地仓库新建.gitignore文件如:H:\gitlearn\gitrep.gitignore在github官网找对应的文件,复制内容到.gitignore文件中https://github.com/github/gitignore将Java.gitignore内容复制到.gitignore文件中提交.gi...

2019-09-27 17:05:34 82

原创 GPG安装测试

待续。。。

2019-09-26 15:17:47 285

原创 git学习手记四—标签管理

1、新建标签git tag v1.02、查看所有标签git tag3、查看日志,里面有commit id信息git log --pretty=oneline --abbrev-commit4、指定commit id 给某个提交点新建标签git tag -a v0.6 -m “version” $commit_id5、查看指定标签git show v0.66、GPG安装测试,第7...

2019-09-26 15:16:05 62

oracle_11g_11.2.0.4_DBA管理手册官方文档.zip

oracle 11g DBA官方管理手册,里面详细说明了如何用非界面方式安装数据库,管理表空间等操作

2019-09-23

空空如也

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

TA关注的人

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