- 博客(72)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 设计原则-接口隔离原则
文章目录接口隔离原则接口隔离原则一个类对另一个类的依赖应该建立在最小的接口上。接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。接口隔离原则的优点:接口隔离原则是为了约束接口、降低类对接口的依赖性,遵循接口隔离原则有以下 5 个优点。将臃肿庞大的接口分解为
2021-03-04 21:55:55
189
1
原创 设计原则-依赖倒置原则
文章目录依赖倒置原则依赖倒置原则在面向对象编程领域中,依赖倒置原则(Dependency inversion principle,DIP)是指一种特定的解耦(传统的依赖关系创建在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。该原则规定:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。通过
2021-03-03 22:57:01
176
1
原创 设计原则-里氏替换原则
文章目录里氏替换原则里氏替换原则可以解读为:派生类(子类)对象可以在程序中代替其基类(超类)对象。子类可以扩展父类的功能,但不能改变父类原有的功能。里氏替换原则对继承进行了规则上的约束,这种约束主要体现在四个方面:子类可以实现父类的抽象方法,但不能重写父类的非抽象方法。子类中可以增加自己特有的方法。当子类的方法重载父类的方法时,方法的前置条件(即方法的输入/入参)要比父类 方法的输入参数更宽松。如父类方法的入参是HashMap那么子类重载方法的入参因该是Map。当子类实现父类的抽象方法时,
2021-03-03 22:19:47
198
1
原创 设计原则-单一职责原则
文章目录单一职责原则单一职责原则sd**在面向对象编程领域中, 单一职责原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。**所有它的(这个类的)服务都应该严密的和该功能平行(功能平行,意味着没有依赖)。一个类或者模块应该有且只有一个改变的原因。一个具体的例子就是,想象有一个用于编辑和打印报表的模块。这样的一个模块存在两个改变的原因。第一,报表的内容可以改变(编辑)。第二,报表的格式可以改变(打印)。这两方面会
2021-03-03 15:21:02
133
原创 设计原则-开闭原则
文章目录开闭原则(Open-Closed Principle,OCP)梅耶开闭原则多态开闭原则开闭原则(Open-Closed Principle,OCP)在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用品质的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需
2021-03-02 00:57:06
76
原创 数据结构-线性表
如有错误,望不吝斧正!文章目录线性表顺序存储结构链式存储结构线性表线性表是零个或多个元素的有限序列。顺序存储结构链式存储结构本文参考大话数据结构
2021-02-06 23:05:14
153
原创 数据结构-时间复杂度和空间复杂度
文章目录算法时间复杂度推导大O阶方法常数阶线性阶对数阶算法时间复杂度定义:在进行算法分析时,语句总的执行次数T(n)是关于问题模型n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。这样用大写O()来体现算法时间复杂度的记法,成为大O记法。一般情况下,随着n的增大,T(n
2021-02-05 10:58:20
201
原创 数据库-MySQL事务隔离级别
https://www.ibm.com/developerworks/cn/opensource/os-mysql-transaction-isolation-levels-and-locks/index.html
2021-01-23 23:13:04
122
1
转载 JAVA位移运算
1、java将负整数转成二进制这里以8位为例,只是为了表明过程,实际中java的int类型是4byte,也就是32位。二进制的首位是符号位,0表示正数,1表示负数,在java中,会对负数进行取反加一操作,进而计算出实际的十进制值。如10101010,此8位的二进制数首位是1,表示负数,所以对后面的七位进行取反加一操作,即0101010–>1010110,换成十进制的数就是86,再加上首位的1表示负数,结果就是-86。2、位移运算1)正数的右移:如10 >> 2,左边自动补0,右边移出
2021-01-05 14:06:53
249
原创 解决ElasticSearch Head访问Elasticsearch跨域
使用Chrome插件的方式访问没有跨域问题,但是使用编译源码的方式访问,会有跨域的问题,在Elasticsearch的配置文件elasticsearch.yml的最后加上如下配置即可解决:http.cors.enabled: truehttp.cors.allow-origin: "*"...
2020-12-10 21:25:48
966
原创 解决ElementUI的el-rate组件改变值页面不渲染的问题
文章目录解决ElementUI的el-rate组件改变值页面不渲染的问题问题原因解决方案解决ElementUI的el-rate组件改变值页面不渲染的问题问题原因事情是这样的,本人作为一名后端从业者,为了提(追)升(赶)自(潮)己(流),使用vue作为前端写了个商城项目,就在开发评价模块的时候遇到问题了。使用ElementUI的Rate时候,发现设置默认值后,更改评分,评分的值变了,页面却没有渲染,依旧是五星。rate代码如下:<div v-for="(item,index) in items
2020-10-25 09:48:54
3933
原创 springboot使用环绕通知打印每个方法运行时间
在调用方法时,知道每个方法的运行时间是很有必要的,使用AOP可以很好的实现:@Aspect@Component@Slf4jpublic class ServiceLogAspect { /** * 环绕通知,打印超时方法日志 * 3s error * 2s warn * <2s info * @param joinPoint * @return * @throws Throwable */ @Ar
2020-10-24 10:59:33
1016
原创 SpringBoot使用@PropertySource获取properties配置信息
文章目录SpringBoot使用@PropertySource获取properties配置信息新建Properties文件编写对应的类测试SpringBoot使用@PropertySource获取properties配置信息新建Properties文件编写对应的类@Component@ConfigurationProperties(prefix = "test")@PropertySource("classpath:test.properties")public class TestProp
2020-10-22 14:59:33
704
原创 部署vue项目到nginx
文章目录部署vue项目到nginx修改nginx的配置文件rewrite 指令的作用部署vue项目到nginx修改nginx的配置文件增加如下配置:#ssl配置省略location /api { rewrite ^.+api/?(.*)$ /$1 break; proxy_pass http://ip:port; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real
2020-10-19 17:13:13
247
原创 解决An invalid character [34] was present in the Cookie value的问题
使用springboot内置的tomcat启动后,请求接口出现An invalid character [34] was present in the Cookie value的错误,上面的 [34] 中的 34 是指 ASCII 码(十进制)对应的字符 “(双引号)。Tomcat 8 更换默认的 CookieProcessor 实现为 Rfc6265CookieProcessor ,之前的实现为 LegacyCookieProcessor 。前者是基于 RFC6265 ,而后者基于 RFC6265、RF
2020-10-10 11:24:37
2508
原创 CentOS7安装rz和sz命令 lrzsz
lrzsz官方网站:http://freecode.com/projects/lrzsz/在CentOS7中想要上传下载文件可以使用rz和sz命令,但是在使用前需要先进行安装:yum -y install lrzsz
2020-09-18 10:14:37
740
原创 使用IDEA直接生成docker镜像并运行
文章目录基于Dockerfile生产镜像并运行基于Dockerfile生产镜像并运行新建maven项目,并在根目录(pom.xml同级目录)下新建Dockerfile文件编写Dockerfile文件:FROM openjdk:8-jdk-alpineADD target/*.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"]右击Dockerfile文件选择如下项:填写如下配置:选择Before launch,填写如下配置:cle
2020-09-16 22:56:56
1147
1
原创 IDEA连接docker
文章目录IDEA连接docker修改配置IDEA增加docker连接IDEA连接docker安装docker,参考:修改配置修改docker配置文件:vi /usr/lib/systemd/system/docker.service找到 ExecStart ,在后面加上 -H tcp://0.0.0.0:2375:以上步骤完成后,重启docker:systemctl daemon-reload && systemctl restart docker.service防
2020-09-16 14:27:05
254
原创 Dockerfile使用
文章目录Dockerfile使用使用构建镜像上下文路径指令讲解FROMRUNshell 格式:exec 格式:CMDCOPYADDDockerfile使用Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。使用# 表示注释指令全部大写构建镜像在 Dockerfile 文件的存放目录下,执行构建动作:docker build -t myImg:0.1 .myImg:0.1表示:镜像名称:镜像标签最后的 . 代表本次执行的上下文路径上下文路径
2020-09-15 17:27:58
329
原创 Docker容器启动报错:WARNING: IPv4 forwarding is disabled. Networking will not work.
Docker容器启动报错:WARNING: IPv4 forwarding is disabled. Networking will not work.解决方案:执行以下命令:systemctl restart docker
2020-09-13 10:58:08
141
原创 VMware虚拟机设置静态IP
修改VMnet8的IP地址鼠标右击桌面的网络图标,选择属性,打开更改适配器设置,进行如下设置:更改虚拟网络编辑器打开VMware,选择编辑 > 虚拟网络编辑器,更改子网IP和NAT设置的网关IP,需要和默认网关一致,否则无法访问外网3.修改虚拟机网卡信息TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #修改为静态ip模式DEFROUTE=yesIPV4_FAILURE_FATAL=noIP..
2020-09-12 20:07:16
175
原创 VMware虚拟机开机一直黑屏
有时候使用VMware虚拟机,开机莫名其妙就黑屏了,找了好半天,找到的解决方案:右键以管理员身份运行CMD,并输入 netsh winsock reset 然后重启电脑,我就是这样解决的。
2020-09-12 16:03:54
385
原创 idea设置类、接口和枚举的注释模板
设置类、接口和枚举的注释打开Settings后,选择Editor -> File and Code Templates -> Files -> Class:增加以下模板:/*** @description: ${description}* @version: 0.0.1* @author: * @createTime: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}**/...
2020-09-12 09:26:46
928
原创 rabbitmq-centos7安装rabbitmq
文章目录下载下载rabbitmq是基于erlang开发的,所以我们要先安装erlang。rabbitmq与erlang的版本之间也有着对应关系,具体对应关系可以查看rabbitmq官网的说明:https://www.rabbitmq.com/which-erlang.html
2020-09-10 16:55:59
97
原创 推荐几个好用的idea插件
文章目录插件收费插件JRebel & XRebelJRebel没有效果时的相关设置及解决办法MyBatis Log Plugin开源插件grep consolerestfultookit插件收费插件网上都有解决办法JRebel & XRebel官网地址:https://www.jrebel.com/JRebel是一个热部署插件XRebel是一个调优插件JRebel没有效果时的相关设置及解决办法设置项目自动编译设置 compiler.automake.allow.whe
2020-09-10 11:58:12
245
原创 Centos7防火墙配置
文章目录Centos7防火墙配置查看firewall服务状态查看firewall的状态开启、重启、关闭、firewalld.service服务查看防火墙规则查询、开放、关闭端口Centos7防火墙配置查看firewall服务状态systemctl status firewalld查看firewall的状态firewall-cmd --state开启、重启、关闭、firewalld.service服务# 开启service firewalld start# 重启service fire
2020-09-08 14:53:02
103
原创 在虚拟机centos7系统中首次查看ip地址
文章目录在虚拟机centos7系统中首次查看ip地址问题解决在虚拟机centos7系统中首次查看ip地址在虚拟机中安装好centos7后,输入 ip addr 查看ip地址,发现并没有我们想要的信息:问题解决输入如下命令,打开ens33:vi /etc/sysconfig/network-scripts/ifcfg-ens33 发现ONBOOT=NO,表示 CentOS 7默认是不启动网卡的。然后按下i键,改为ONBOOT=YES,然后按下**:wq**保存并退出。然后输入以下命令重启网
2020-09-08 14:48:06
407
原创 项目管理-安装Gradle
文章目录安装Gradle下载配置环境变量验证安装Gradle官方网站:https://gradle.org下载下载Gradle-6.5配置环境变量下载完成后,解压到D盘:配置环境变量打开 此电脑 → 属性 → 高级系统设置 → 环境变量,点击新建,输入变量名:GRADLE_HOME,变量值:D:\gradle-6.5找到path项:双击打开,点击新建,输入以下内容:%GRADLE_HOME%\bin验证重新打开cmd,输入:gradle -v...
2020-08-29 13:36:34
130
原创 设计模式-单例模式
文章目录单例模式简介实现思路实现方式懒汉式,方法上加synchronized 的方式双检锁/双重校验锁(DCL,即 double-checked locking)枚举饿汉式破坏单例模式的方法及解决办法单例模式简介单例模式(Singleton Pattern)也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。实现思路一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名
2020-08-21 00:03:02
103
原创 算法-冒泡排序
文章目录冒泡排序简介实现演示代码冒泡排序简介冒泡排序(Bubble Sort)又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。实现演示代码 public static void main(String[] args) { //需要排序的数组 int
2020-08-20 22:52:12
146
原创 算法-二分查找
文章目录二分查找简介功能实现递归while循环完整代码二分查找简介二分查找(binary search)又叫折半查找,要求数据序列呈线性结构(排过序的数据序列)。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。功能实现递归public static int binarySe
2020-08-20 14:19:56
110
原创 数据库-如何设计一个关系型数据库
文章目录前言模块划分存储部分程序实例前言小伙伴在面试的时候,有没有被问道过:如何设计一个关系型数据库?如果你没有看过本文,又不谙此道,那肯定会慌张不易,答不到点子上。别慌,接下来我们一起来简单了解一下吧。模块划分如何设计一个关系型数据库?其实只需要划分为两个部分,如下图所示:存储部分该部分类似于一个文件系统,将数据持久化到存储设备当中。程序实例程序实例主要是对存储进行逻辑上的管理,划分为8个子模块:存储管理:将数据的逻辑关系转换为物理存储关系缓存机制:主要是优化执行效率SQL解析:
2020-05-16 01:01:47
417
原创 docker-使用docker运行Nginx镜像
文章目录使用docker运行Nginx镜像查找镜像运行镜像使用docker运行Nginx镜像查找镜像在docker镜像仓库查找Nginx镜像:https://hub.docker.com/_/nginx运行镜像本文选取的Nginx版本是:nginx:1.17在 /opt 下创建 /nginx-web/html 文件夹,用于运行项目:mkdir -p /opt/nginx-web/html创建完成后,将项目拷贝其中zip压缩包使用:unzip projectNametar压缩包使用:
2020-05-10 17:57:10
272
原创 git-Git常用命令
文章目录Git常用命令创建仓库在已存在目录中初始化仓库克隆现有的仓库操作和提交跟踪新文件状态简览查看已暂存和未暂存的修改提交更新跳过使用暂存区域从暂存区域移除文件彻底删除文件跟踪文件清单中移除重命名查看提交历史远程仓库的使用查看远程仓库添加远程仓库从远程仓库中抓取与拉取fetchpull推送到远程仓库查看某个远程仓库远程仓库的重命名与移除重命名移除撤销取消暂存的文件撤消对文件的修改撤销指定的提交Git常用命令想具体学习Git的朋友可以去官网文档了解:https://git-scm.com/book/zh
2020-05-10 00:14:37
121
原创 SpringBoot-使用SpringAOP
文章目录在SpringBoot中使用SpringAOP概念使用引入依赖新建切面定义切点指示器定义通知环绕通知使用AOP的优点应用场景在SpringBoot中使用SpringAOP概念连接点(join point):类里面可以被增强的方法就是连接点。切点(point cut):对接入点进行拦截的定义规则。通知(advice):拦截到接入点后,进行的操作。分为以下五种操作:前置通知(b...
2020-05-06 20:21:34
329
原创 knife4j的使用
文章目录knife4j使用swagger2的使用Spring Boot 单服务架构knife4jknife4j的前世今生,我们不作细究,感兴趣的朋友可以去 官网 一探究竟。本文只是记录简单的使用方法,以便快速入手。使用swagger2的使用由于knife4j本就是需要swagger2支持,所以奉上swagger2学习地址:https://www.ibm.com/developerwor...
2020-05-01 23:06:32
10199
3
原创 MySQL-创建时间和更新时间自动赋值
文章目录mysql创建时间和更新时间自动赋值在navicat中如下设置:SQL语句如下:mysql创建时间和更新时间自动赋值在navicat中如下设置:创建时间:更新时间:SQL语句如下:`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_time` datetime...
2020-04-30 22:58:42
1408
原创 spring注解@transactional事务传播
文章目录事务传播传播类型REQUIREDSUPPORTSMANDATORYREQUIRES_NEWNOT_SUPPORTEDNEVERNESTED事务传播在spring中使用事务的时候,经常会写如下代码: @Transactional(propagation = Propagation.REQUIRED) ,不明就里的小伙伴一起来看看吧。传播类型传播类型分为7种,具体可查看org.spri...
2020-04-29 17:14:03
1808
原创 数据库-PDMan使用教程
文章目录PDMan简介使用下载安装创建新模块开始菜单栏设置功能数据库连接同步数据到数据库PDMan简介PDMan是一款数据库建模工具,国产开源易用。支持常用的MySQL、Oracal等数据库,具体信息查看官网:http://www.pdman.cn/使用下载安装下载完成后,一路安装即可。安装完成后,打开软件是如下界面:创建新模块点击下图左侧新建模块建好模块后,在数据表下,新...
2020-04-25 11:44:04
38828
5
原创 Vue-模拟数据
文章目录babel简介安装使用babel简介官方文档Babel 是一个 JavaScript 编译器,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。安装运行这些命令来安装包:npm install -g --save-dev @babel/core @babel/cli @babel...
2020-04-19 13:59:26
253
springmvc能够访问jar中的ftl文件,不能访问war中的ftl文件
2017-11-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人