- 博客(47)
- 资源 (1)
- 收藏
- 关注
原创 设计模式之设计原则
单一职责,我个人认为单一职责是一个分工合作,对于模块来说做的更精准不需要考虑其他的模块的信息,做到了一个模块小而精,对于整理来说松耦合。以人举例,如果你要实现一个人的接口,只需要提供一个基础的人作为接口 然后具体的人添加不同的具体的功能。方法的前置条件(即方法的形参)要比- 父类方法的输入参数更宽松。当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法。接口尽量细化,接口中的方法尽量少。
2024-01-29 22:16:29
523
原创 docker docker安装app
docker安装appnginx# 1、搜索镜像docker search nginx# 2、拉取镜像docker pull nginx# 3、启动容器docker images# 4、测试访问curl localhost:3500# 5、进入容器docker exec -it mynginx /bin/bashtomcat# 官方文档解释# -it :交互模式# --rm:容器启动成功并退出以后容器就自动移除,一般在测试情况下使用!docker run -it -
2021-07-26 10:16:46
851
1
原创 springboot之security框架
Spring Securit首先我们看下它的官网介绍:Spring Security官网地址https://spring.io/projects/spring-security#overview也可以分等级测试 不同等级看到的东西不一样实战测试新建一个初始的springboot项目 web模块 , thymeleaf模块导入静态资源welcome.html |views |level1 1.html 2.html 3
2021-07-23 16:44:10
161
原创 springboot整合swagger-ui
swagger前后端分离 swagger是当下最流行的api框架 前后端通过api进行访问 前后端相对独立松耦合官网:https://swagger.io/springboot集成swaggerspringfox-swagger2swagger-springmvc<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2--> <dependency> <gro
2021-07-23 16:04:24
1023
1
原创 Docker在Centos7上的安装
配置安装Docker官网:http://www.docker.comDocker中文网站:https://www.docker-cn.comDocker Hub官网:https://hub.docker.com (仓库)uname -r 查看内核cat /etc/os-release 查看版本信息安装gcc环境yum -y install gcc -y所有的提示默认操作都是yyum -y install gcc-c++卸载旧版本yum remove docker \
2021-07-23 15:05:12
95
原创 springboot整合mybatis 资源过滤问题
官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfifigure/<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1&
2021-07-23 14:56:56
267
原创 springdata之jdbcTemplate
数据库文件CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `springboot`;/*Table structure for table `department` */ DROP TABLE IF EXISTS `department`; CREATE TABLE `department` ( `id` int(3) NOT NULL
2021-07-23 14:52:34
234
原创 python 自动化测试打包命令
pyinstaller xxx.py参数 --workpath 指定了制作过程中临时文件的存放目录参数 --distpath 指定了最终的可执行文件目录所在的父目录参数 --noconsole 就可以去掉exe执行时的dos窗口参数 --icon=“logo.ico” 路径不匹配就写全路径 指定exe的图标参数 --hidden-import PySide2.QtXml 一些需要导入的包创建一个虚拟环境python -m venv 虚拟环境所在的目录例子:pyinstaller -w l
2021-07-22 16:56:03
174
原创 springboot 配置文件读取的多环境切换
优先级1:项目路径下的config文件夹配置文件优先级2:项目路径下配置文件优先级3:资源路径下的config文件夹配置文件优先级4:资源路径下配置文件
2021-07-22 15:48:38
67
原创 springboot JSR303校验常用注解
@Validated注解 注解在类上@NotNull(message=“不能为空”)@Max(value=120,message=“年龄最大不能查过120”)@Email(message=“邮箱格式错误”)空检查@Null 验证对象是否为null@NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.@NotEmpty 检查约束元素是否为NULL或者是EMPTY.Bo
2021-07-22 15:46:39
167
原创 SSM 三大框架的基本流程
Spring的控制流程SpringMVC的流程1.用户发送请求到前端控制器DisparcherServlet2. 前端控制器收到请求后调用HandleMapple处理器映射器,请求获取Handle3. 处理器映射器根据具体的url找到具体的处理器,并生成处理器对象和处理器拦截器一并返回给前端控制器4. 前端控制器调用HandleAdapter处理器适配器5. HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);6. Handle指向完成后返回ModelAn
2021-04-18 14:59:21
731
原创 前端 浅谈cookie和session
会话会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话;有状态会话:你去一个网站,下次再访问这个网站,服务端会记录你访问过这个网站,称之为有状态会话;cookie和session例子:你是客户端,学校是服务端你怎么证明你是学校的学生你有胸牌:学校给你发胸牌,门卫大叔看见胸牌就会放行档案信息:学校有你的档案信息,服务端记录的你的信息客户端 服务端服务端给客户端一个 信件,客户端下次访问服务端带上信件就可以了; cookie服务器登记你来
2021-04-17 13:06:08
244
原创 前端 重定向和转发
浅谈重定向和转发转发是服务器行为,重定向是客户端行为。转发耗时比重定向少。转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变转发是带数据转发,重定向会丢数据a是客户端,bc都是服务器a转发:a向b发送一个请求,b解决不了去找c。但是对于a来说他是在b这里拿到的资源,所以地址栏不变。整个过程是b在操作,b去找的其他服务器,所以是服务器行为。重定向:a向b发送一个请求,b解决不了让a去找c,整个过程是a在找资源,所以是客户端行为,原来请求的b后来变成了c,所以地址栏改变。现实例子:自
2021-04-17 12:40:30
958
原创 SSM Mybatis
mybatismybatis简介持久化持久层Dao Service Controller完成持久化动作的代码块层界限十分明显特点crud这里就不写了 详情看代码或者配置文件万能的mapmap传递参数,在sql中取出key值即可对象传递参数,在sql中取出对象的属性即可只有一个基本类型参数的情况下,可以直接在sql中取到多个参数用map或者注解模糊查询Java代码执行时 传递通配符List userList = mapper.getuserLike(
2021-04-16 20:43:23
95
原创 SSM Spring篇
Spring框架Spring是一个基于IOC和AOP的结构J2EE系统的框架(容器)iocIOC容器 控制的实现方式 是Spring的基础,Inversion Of Control,是一种设计思想,di依赖注入是实现ioc的一种方式是一种通过描述(xml或者注解)并通过第三方或获取对象的方式①多态实现 耦合度太高 传统开发 需求发生更改的时候需要修改impl下的东西public interface UserDao{void getUser()} //UserDao
2021-04-16 20:37:26
150
原创 IO
io在Java程序中,对于数据的输入/输出操作以“流”(Stream)方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据Java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:按数据流的方向不同可以分为输入流和输出流按照处理数据单位不同可以分为字节流和字符流按照功能不同可以分为节点流和处理流这四个类都是抽象类输入流: InputStream (字节流) Reader(字符流)输
2021-04-16 20:14:31
97
原创 GUC篇
八锁现象synchronized 锁的对象是方法的调用者 同一对象的两个方法用同一个锁 谁先拿到谁先执行两个对象 两个同步方法 不同的对象两把锁 通过延迟的时间片来判断(sleep)(同一个类的不同对象的锁互不干扰)两个静态同步方法 (非静态锁对象 静态锁类)static类一加载就有 锁的是class模板 class对象全局唯一 所以是按线程调用顺序执行一个同步方法 一个静态同步方法 (两把锁 对象锁 类锁) 两个锁 (类锁和对象锁互不干扰) 本质上还是在抢锁(类锁是一种特殊的对象锁)
2021-04-16 20:13:05
538
原创 番外 正则表达式
正则表达式普通字符字母,数字,下划线,汉字,无意义的标点符号简单的转义字符标准字符集合注意区分大小写 大写是相反的意思自定义字符集合[]方括号匹配方式 可以匹配方括号中任意一个字符量词修饰匹配次数的特殊符号{n}表达式重复n次{m,n}表达式至少重复m次,至多重复n次{m, }表达式至少重复m次?表达式0次或1次+表达式至少重复一次*表达式不出先或出现任意次匹配次数的贪婪模式(匹配字符越多越好,默认!)匹配次数的贪婪模
2021-04-16 14:24:33
121
原创 第九篇 JDBC
JDBC初始化驱动通过Class.forName("com.mysql.jdbc.Driver");初始化驱动类com.mysql.jdbc.Driver建立与数据库的连接conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "123456");Statement是用于执行SQL语句的,比如增加,删除创建和获取state
2021-04-16 11:07:17
103
原创 反射
反射动态编译测试脚本引擎rhino可以进行对内容的修改操作字节码操作类库javassisthttps://blog.csdn.net/HC199854/article/details/107252867反射reflect对象.getName() 获得包名加类名getSimpleName 获得类名getFields() 只能找到public属性getDeclaredField 能找到所有的属性getMethods() 获得本
2021-04-16 10:46:59
74
原创 前端 BOM
BOM主流浏览器目前主流的浏览器分这么几种:IE 6~11:国内用得最多的IE浏览器,历来对W3C标准支持差。从IE10开始支持ES6标准;Chrome:Google出品的基于Webkit内核浏览器,内置了非常强悍的JavaScript引擎——V8。由于Chrome一经安装就时刻保持自升级,所以不用管它的版本,最新版早就支持ES6了;Safari:Apple的Mac系统自带的基于Webkit内核的浏览器,从OS X 10.7 Lion自带的6.1版本开始支持ES6,目前最新的OS X 10.
2021-04-16 10:23:18
81
原创 前端 AJAX
ajax使用ajax异步的JavaScript和xml,异步刷新技术ssm框架会把json数据自动封装进pojo无需加载整个网页的基础上,能够更新部分网页的技术不是编程语言,是用于创建更快更好以及交互性更强的web应用程序技术当你在搜索框内输入关键字时,JavaScript能把这些数据发送到服务端,然后服务端返回一个搜索建议的列表通过在后台进行是少量的数据交换,实现异步局部更新将文本输出的值发送给服务器,接受服务器返回的值可以做什么输入用户名时检测用户是否已经存在登陆时提示用户名
2021-04-16 10:22:44
64
原创 前端 DOM
Dom获取id给一个值 值调用方法选择器html被浏览器解析后就是一棵dom树,始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作:更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容;遍历:遍历该DOM节点下的子节点,以便进行进一步操作;添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点;删除:将该节点从HTML中删除,相当于删掉了该DOM节点的内容以及它包含的所有子节点。获取dom节点document.getElem
2021-04-15 18:20:19
92
原创 前端 JQuery
jquery理解 $(function(){})这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。换句话说,写在这里面的JQuery代码都是文档加载好之后的。就不会有获取一个还没有加载好的图片这种问题了。另一种写法$(document).ready(function(){});通过id获取元素与javascript通过id获取元素节点的方式(document.getElementById )不同JQuery通过 $("#id") 就可以获取了需要注意的是,通过 do
2021-04-15 18:18:15
429
原创 前端 JSON
jsonjson是js对象标记语言 轻量级数据交换格式 是js的一个字符串表示法json中一切都是对象对象表示为键值对数据用逗号分隔花括号保存对象方括号保存数组js var user= {name:“fanshuai”,age:21,sex:男};fastjson jackson(阿里的包) json的工具包注解实现 @ResponseBody 将服务端返回的对象转换成json对象 返回到页面 @ RequestBody 接收前端传来的接送数据 把json数据自从封
2021-04-15 18:15:56
276
转载 前端 servlet
servletjavax.servlet 包中包含了 7 个接口 ,3 个类和 2 个异常类 , 它们分别是 :接口:RequestDispatcher,Servlet,ServletConfig,ServletContext,ServletRequest,ServletResponse 和 SingleThreadModel类 :GenericServlet,ServletInputStream 和 ServletOutputStream异常类 :ServletException 和 Unavai
2021-04-15 17:40:15
217
原创 常用类 DATA类
date类以1970/01/01-00-00-00时刻为基准点long类型的变量来表示时间System.currenTimeMillis();获取当前时刻的毫秒数tostring 用来显示系统时间DateFormat 时间的格式化将时间类和String类结合把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现格式化时间。 Date dNow = new Date(
2021-04-15 13:43:54
376
原创 番外 内部类
内部类作用:实现多重继承,实现隐藏,减少类文件编译后产生的字节码文件大小1 成员内部类 不能写静态属性和方法/实例化内部类需要先实例化外部类,通过外部类调用内部类可以访问外部类的所有属性内外部变量名一样时,可以通过this调用内部类 内部类的值会将外部类隐藏 out.this.显示外部属性2 静态内部类 不能调用外部方法和属性 能够直接被外部了实例化(因为类已加载就初始化)可以声明静态方法和变量3 局部内部类 局部内部类是在一个方法内部声明的一个类局部内部类中可以访问外部类的成员变量及
2021-04-15 13:42:18
69
原创 常用类 String StringBuilder StringBuffer
String被称为不可变字符序列String类常用方法string类重写了了object的equals方法,比较的是值1 String str = "str";2 String str = new String();3 String str = new String("abcd");4 char[] c = {"a","b"} String str = new String(c);6 length();返回长度7 isEmpty(); 判断是否为空8 String str = ne
2021-04-15 13:24:30
142
1
原创 面向对象 重写和重载
重写和重载重写和重载重载:存在一个以上的同名方法的现象1.规则+ 形参列表不同 - 形参的类型不一样 - 形参的个数不同+ 与返回值类型无关+ 方法名相同2.优点+ 方便记忆+ 根据重载机制,方法调用根据形参自动匹配调用重写:必须是建立在继承的基础之上通常,派生类继承基本的方法,因此,在调用对象继承的时候,调用和执行的是基类的实现,但是,有时需要派生类中的继承方法有不同的实现规则:第一、在子类可以根据需求,从父类继承来的方法进行重写第二、重写的方法必须要和
2021-04-15 12:18:00
257
原创 面向对象 抽象类 抽象方法 接口
抽象类和抽象方法abstract抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。抽象类和抽象方法意义(为什么要编写抽象类、抽象方法)打个比方,要做一个游戏。如果要创建一个角色,如果反复创建类和方法会很繁琐和麻烦。建一个抽象类后。若要创建角色可直接继承抽象类中的字段和方法,而抽象类中又有抽象方法。如果一个角色有很多种职业,每个职业又有很多技能,要是依次实
2021-04-15 12:09:26
81
原创 第六篇3 网络编程
网络编程网络通信的两个要素 通信双方的地址:ip和端口号网络通信协议:OSI参考模型(太理想化)和TCP/IP协议(事实上的国际标准)向下数据封装,向上数据拆封ip地址 InetAddressjava中使用getByName方法来获取地址本地回环地址hostAddress:127.0.0.1host文件地址 c:\windows\system32\drivers\etc\hosts端口号端口标识正在计算机上运行的进程不同的进程由不同的端口号,用来区分软件被规定一个16位
2021-04-15 11:32:29
65
原创 第六篇2 多线程
线程的5个状态线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。1.新建状态当用new操作符创建一个线程时。此时程序还没有开始运行线程中的代码。2.就绪状态一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。处于就绪状态的线程并不一定立即运行run()方法
2021-04-14 16:51:13
49
原创 第八篇 JVM的基本知识
jvmjvm运行和类加载全过程先加载了类,加载完在进行初始化 初始化完成后加载该方法jvm 先进行静态代码块 构造代码块 然后构造器 (多个静态资源取决于编译的先后顺序) 类成员在对象创造前执行 static修饰的变量 在创建对象前进行初始化操作 储存在堆中 运行时常量池在元空间(方法区就是元空间) 字符串常量池在堆栈 stack:每个线程私有,不能实现线程间的共享!局部变量放置于栈中。栈是由系统自动分配,速度快!栈是一个连续的内存空间!堆 hea
2021-04-14 15:42:44
120
原创 数据结构杂谈
数据结构闲谈空间复杂度空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度树平衡树如何根据平衡因子平衡树平衡因子 = 右子树的高度 - 左子树的高度-1 : 表示左子树比右子树高1 : 表示右子树比左子树高0 : 表示左子树和右子树等高哈夫曼树最优二叉树 不一定是完全二叉树1 对于给定的有各自权值的 n 个结点,构建哈夫曼树有一个行之有效的办法:在 n 个权值中选出两个最小的权值,对应的两个结点组成一个新的二叉树,且新二叉树的根结点的
2021-03-14 19:21:52
152
2
原创 nginx入门笔记
安装配置随笔0.0.0.0 account.jetbrains.com hosts有这个说明师破解版idea尚硅谷老师nginx公开课:自己的笔记 原视频链接找不到了一键安装准备的配置yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel支持热部署 性能高查看linux的ip ifconfig xshell连接进入nginx官网 http://nginx.org/ 下载nginx
2020-11-30 18:54:50
107
原创 Linux 基础命令
linux随笔安全组:用来开启端口映射 否则外部无法访问获取公网ip地址,修改实例名称和密码 第一次需要重启 使用xshell 进行连接 你的密码:war包直接丢到tomcat即可jar包用java -jar执行目录介绍远程服务器ls: 列出目录ls -ll 目录的形式去打印ls-lh 遍历详细信息,如权限,所属用户,创建日期,大小等等信息cd /目录名 切换目录cd ~回到当前的用户目录pwd:显示你现在所在的目录mkdir:创建一个新的目录t
2020-11-30 18:46:10
139
原创 第七篇 SQL从安装到卸载
狂神说Java什么是数据库数据库 DataBase 简称db 数据库管理系统 DataBase Management System 简称DBMS sql是非过程化语言数据库设计过程阶段按照规范的设计方法,一个完成的数据库设计一般分为以下六个阶段:1. 需求分析: 分析用户的需求,包括数据、功能和性能需求;2. 概念结构设计:主要采用E-R模型进行设计,包括画E-R图;3. 逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换,进行关系规范化;4. 数据库物理设计:主要
2020-11-27 18:42:11
243
原创 算法思想浅谈
数据结构常用的数据结构优点缺点应用场景例题特点数组插入快,能够让我们在o(1)的时间内根据数组的下标查询某个元素缺点:查找慢,删除慢,大小固定当我们需要查询某个元素是否存在的时候需要遍历整个数组 消耗o(n)的时间,删除和添加也是数组便于查找和修改字母异位词242静态储存链表灵活的分配内存空间,能在O(1)的时间内删除或者添加元素查询元素需要O(n)的时间,就是查询元素较慢,动态存储便于插入和删除并且速度快链表的翻转24.25动态储存栈可以用
2020-11-26 17:22:34
203
原创 第五篇2 容器的复习整理
集合框架Collection接口存储一组不唯一 无序的对象所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象List接口存储一组不唯一有序的对象arraylist实现了长度可变的数组 在内存中分配连续的空间 可以动态增长和缩减 底层是数组 类型object 可以存放空值 本质是elementData数组linkedlist 链表存储方式 插入删除效率高 非线程安全的异步的 顺序存储结构双向链表 linkedLi
2020-11-26 17:15:11
96
一些简单排序的简单Java实现
2020-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人