- 博客(63)
- 收藏
- 关注
原创 docker基本应用
docker安装 卸载旧版 sudo yum remove docker-ce \ docker-ce-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logro...
2021-07-22 08:06:14 203 1
原创 京淘项目云服务器部署
1 Linux环境部署1.1 安装JDK1.1.1 上传JDK1.1.2 解压文件tar -xvf jdk-8u51-linux-x64.tar.gz1.1.3 校验JDK是否有效java -version1.1.4 修改JDK环境变量1)编辑文件: /etc/profile#设定jdk环境export JAVA_HOME=/usr/local/src/jdk1.8export PATH=$JAVA_HOME/bin:$PATHexport..
2021-05-28 09:35:48 265 2
原创 面试指导----线程 进程 协程
进程是操作系统管理内存和程序的容器 线程是CPU运行的基础单元 协程是用户态的一个运行单元,它标志用户态的运行程序wait和block的区别wait: 线程运行到某一阶段被执行wait函数之后,就回去竞争某一把锁,如果竞争得到,或者被notify唤醒,该线程就可以继续运行,因此wait状态可以理解我们的运行程序在遇到一些条件的时候,主动去做等待被唤醒的动作. block: 当我的CPU在等待某一个IO进程的时候会进入block(阻塞状态),也就是被IO blockRunnable和Call..
2021-05-25 19:38:37 261 1
原创 Linux环境配置(JDK+数据库)
1 Linux环境部署1.1 安装JDK1.1.1上传JDK1.1.2修改文件名1.1.3 校验JDK是否有效1.1.4 修改JDK环境变量1) 编辑文件: /etc/profile2) 让环境变量生效方法一: 重启Linux系统 方法二: 刷新系统变量 source /etc/profile1.2 安装Linux数据库1.2.1 下载MariaDB数据库测试: 当前虚拟机是否可以正确的链接外网.[root@localhost sr.
2021-05-24 17:59:44 200 1
转载 Linux命令集
ifconfig/ip addr 检查IP地址pwd 检查当前的位置tab键 自动补齐(注意唯一性)cd命令是linux中最基本的命令语句,必须熟练掌握cd / 返回根目录cd ~ 用户主目录cd . 当前目录cd ..返回到上一级目录cd /usr/ 进入到usr目录cd – 返回上一个目录cd 直接回家递归创建mkdir -p a/aa/aaaVi/vim创建/查看/编辑文件命...
2021-05-24 15:52:35 83
原创 全局过滤器实现jwt校验
1. 获取请求对象和响应对象2. 判断当前的请求是否为登录,如果是,直接放行3. 获取当前用户的请求头jwt信息4. 判断当前令牌是否存在5. 如果令牌存在,解析jwt令牌,判断该令牌是否合法,如果不合法,则向客户端返回错误提示信息5.1. 合法,则向header中重新设置userId6. 放行
2021-05-23 01:12:00 817 1
原创 每天一道面试题(28)
1. SpringBoot项目的启动流程简单概述2. MySQL数据库的索引作用和优缺点. 如何创建索引3. 简单介绍ThreadLocal的作用(结合实例)4. 说说自己的缺点5. Spring框架bean对象的生命周期6. SpringBoot框架中yml和properties文件哪个优先加载7. 怎么理解多线程,你的项目当中哪里用到了多线程8. 10000个数据包含字母和数字 用ASCll码排序 怎么实现9. 什么是二叉树,红黑树是什么10. jvm的内存结构介绍一
2021-05-21 10:04:18 83
原创 基于XML的AOP配置步骤
基于XML的AOP配置步骤spring中基于XML的AOP配置步骤 1.把通知Bean也交给spring来管理 2.使用aop:config标签表明开始AOP的配置 3.使用aop:aspect标签表明配置切面 id属性:是给切面提供唯一标识 ref属性:是指定通知类bean的Id. 4.在aop:aspect标签的内部使用对应标签来配置通知的类型 我们现在示
2021-04-28 00:40:32 269 2
转载 基于子类的动态代理
动态代理特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 基于接口的动态代理涉及的类:Proxy 提供者:JDK官方 如何创建代理对象: 使用Proxy类中的newInstance方法 创建代理对象的要求 被代理对象最少要实现一个接口,如果没有则不能使用 newProxyInstance方法的参数 ClassLoader:类加载器 它是用于加载代理对象字节码的,和被代理对象使用相同的类加载器
2021-04-27 00:11:47 84
原创 基于XML的动态代理实现事务管理(以转账为例)
需求实现对账户的增删改查 实现账户间转账(要有事务控制)数据库表准备create table account( id int primary key auto_increment, name varchar(40), money float)character set utf8 collate utf8_general_ci;insert into account(name,money) values('aaa',1000);insert into account(name,mo
2021-04-26 23:14:50 117
原创 基于接口的动态代理
动态代理特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 基于接口的动态代理涉及的类:Proxy 提供者:JDK官方 如何创建代理对象: 使用Proxy类中的newInstance方法 创建代理对象的要求 被代理对象最少要实现一个接口,如果没有则不能使用 newProxyInstance方法的参数 ClassLoader:类加载器 它是用于加载代理对象字节码的,和被代理对象使用相同的类加载器
2021-04-26 00:40:53 129
原创 Spring整合junit的配置
步骤1.导入spring整合junit的jar(坐标) 2.使用junit提供的一个注解把原有的main方法替换成spring提供的 @Runwith 3.spring的运行器,spring和ioc创建是基于xml还是基于注解的,并且说明位置 @ContextConfiguration location:指定xml文件的位置,加上classpath关键字,表示在类路径下 classes:指定注解类所在的位置 ...
2021-04-25 18:28:01 86
转载 基于注解的IOC案例(CRUD)
数据库表create table account( id int primary key auto_increment, name varchar(40), money float)character set utf8 collate utf8_general_ci;insert into account(name,money) values('aaa',1000);insert into account(name,money) values('bbb',1000);insert in
2021-04-25 08:52:32 75
原创 基于XML的IOC案例(CRUD)
数据库表create table account( id int primary key auto_increment, name varchar(40), money float)character set utf8 collate utf8_general_ci;insert into account(name,money) values('aaa',1000);insert into account(name,money) values('bbb',1000);insert in
2021-04-25 08:29:01 103
转载 Mybatis 多表查询示例(多对多查询)
示例:用户和角色 一个用户可以有多个角色 一个角色可以赋予多个用户 需求:实现Role到User多对多 步骤: 1、建立两张表:用户表,角色表 让用户表和角色表具有多对多的关系。需要使用中间表,中间表中包含各自的主键,在中间表中是外键。 2、建立两个实体类:用户实体类和角色实体类 让用户和角色的实体类能体现出多对多的关系 各自包含对方一个集合引用 3、建立两个配置文件 用户的peizhiwenjian 角色的配置文件 4、实现配置 当
2021-04-19 19:51:15 221
原创 Mybatis 多表查询示例(一对多查询)
需求:查询所有用户信息及用户关联的账户信息 分析:用户信息和他的账户信息为一对多关系,并且查询过程中如果用户没有账户信息,此时也要将用户信息查询出来,可以想到左外连接查询。数据库脚本DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL COMMENT '用户名称', `birthday` datet
2021-04-19 09:03:40 134
原创 Mybatis 多表查询示例(一对一查询(多对一))
Mybatis中的多表查询表之间的关系有几种 一对多 多对一 一对一 多对多 举例 用户和订单之间就是一对多 订单和用户之间就是多对一 一个用户可以下多个订单 多个订单属于同一个用户 人和身份证号就是一对一 一个人只能有一个身份证号 一个身份证号只能属于一个人 老师和学生之间就是多对多 一个学生可以被多个老师教 一个老师可以教多个学生 特例: 如果拿出每一个订单,他都只能属于一个用户 所以Mybatis就把多对
2021-04-18 23:59:35 153
原创 基于代理Dao的CRUD——使用实体类的包装对象作为查询条件
使用实体类的包装对象作为查询条件我们知道,Sql语句传参,使用标签的parameterType属性来设定。该属性的取值可以是基本类型,引用类型(例如:String类型),还可以是实体类类型(POJO类)。同时也可以使用实体类的包装类。注意事项:基本类型和String类型我们可以直接写类型名称,也可以使用包名.类名的方式,例如:java.lang.String。传递pojo包装对象开发中通过pojo传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件,还可以包括其他的查询条件(比如
2021-04-17 13:25:40 166
原创 Mybatis 与 JDBC 编程的比较
数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池技术可解决此问题。 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库连接。 Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能性较大,sql变动需要改变Java代码。 解决:将Sql语句配置在XXXXmapper.xml文件中,从而实现与Java代码的分离。 向Sql语句传参数麻烦,因为sql语句的where条件是不定的,可能多也可能少,占位符需要和参数对应。 解决:My
2021-04-17 10:12:53 83
原创 基于代理Dao实现CRUD操作
使用要求:1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定类名 3.SQL语句的配置标签<select>,<insert>,<delete>,<update>的id属性必须和持久层接口的方法名相同.查询所有在持久层接口中添加findAll方法 /** * 查询所有 * @return */ List<
2021-04-15 22:15:42 123
原创 MySQL练习题(二)多表查询、子查询(含数据库脚本)
数据库脚本准备-- ------------------------------------- 创建db30库、dept表、emp表并插入记录-- ------------------------------------- 删除db30库(如果存在)drop database if exists db30;-- 重新创建db30库create database db30 charset utf8;-- 选择db30库use db30;-- 删除部门表, 如果存在drop tab
2021-04-13 15:20:21 1268
原创 Mybatis(二)----入门案例
mybatis的入门案例第一步:读取配置文件 第二步:创建SqlSessionFactory工厂 第三步:创建SqlSession 第四步:创建Dao接口的代理对象 第五步:执行dao中的方法 第六步:释放资源/** * mybatis的入门案例 */public class MybatisTest { /** * 入门案例 * @param args */ public static void main(String[] args) t
2021-04-10 11:16:43 122
原创 Mybatis(一)----环境搭建
mybatis的概述mybatis是一个持久层框架,用Java编写的。 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程 它使用了ORM思想实现了结果集的封装。 ORM: Object Relational Mapping 对象关系映射 简单的说: 就是把数据库表和实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表 需要做到:实体类的属性和数据库表的字段名称保持一致。 ...
2021-04-09 23:03:43 94
原创 MySQL练习题
创建数据库和表的SQL脚本-- ------------------------------------- 创建db10库、emp表并插入记录-- ------------------------------------- 删除db10库(如果存在)drop database if exists db10;-- 重新创建db10库create database db10 charset utf8;-- 选择db10库use db10;-- 删除员工表(如果存在)drop tabl
2021-04-09 11:10:02 2676 6
原创 每天一道面试题(27)----hashCode()与equals()的相关规定
hashCode()与equals()的相关规定:如果两个对象相等,则hashCode一定也是相同的 hashCode是JDK根据对象的地址或者字符串以及数字算出来的int类型的数值 两个对象相等,则他们的equals方法返回true 两个对象有相同的hashCode值,它们也不一定相等 因此,equals方法被覆盖重写,则hashCode方法也必须被覆盖重写 hashCode()的默认行为是对堆上的对象产生独特值.如果没有重写hashCode(),则该class的两个对象无论如何都不会相
2021-04-08 08:09:19 237
原创 Java网站项目(一)----注册页面表单校验
1、校验用户名的方法 //校验用户名 function checkUsername() { alert("校验用户名"); return true; //1.获取用户名 var username = $("#username").val(); //2.定义正则 字母开头,允许5-16字节,允许字母数字下划线 var reg_username = /^[a-zA-Z][a-zA-Z0-9_...
2021-04-05 22:02:43 325
原创 NOSQL——非关系型数据库的概念
概念1、什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
2021-04-03 20:45:30 308
原创 案例:使用JSON校验用户名是否存在
校验用户名是否存在服务器响应的数据,在客户端使用时,要想当做json数据格式使用。有两种解决方案:$.get(type):将最后一个参数type指定为"json" 在服务器端设置MIME类型 response.setContentType("application/json;charset=utf-8"); 编写服务器端Servlet代码@WebServlet("/findUserServlet")public class FindUserServlet exten
2021-04-03 19:43:00 303
原创 Json概念与基本语法
1、概念JavaScript Object Notation:JavaScript对象表示法Person p = new Person(); p.setName("张三"); p.setAge(23); p.setGender("男");var p = {"name":"张三","age":23,"gender":"男"};json现在多用于存储和交换文本信息的语法 进行数据的传输 JSON 比 XML 更小、更快、更易解析。2.语法1、基本规则数据在名称/值对中:json
2021-04-03 15:47:51 106
原创 Redis学习(一)之Linux环境准备
1、查看IP地址:ip addr解决CentOS7无法查看IP地址请参考:https://blog.csdn.net/qq_37649504/article/details/1154096902、连接Xshell3、执行yum命令:yum -y install gcc automake aotuconf libtool make注意:必须联网,下载需要几分钟时间4、安装文件上传工具:执行:yum -y install lrzsz至此基础Linux环境安装完...
2021-04-03 10:36:57 217
原创 Redis学习(二)之Redis安装
1、访问redis.io,进入download页面,我安装的是5.0版本2、回到Xshell进入目录,执行:cd /usr/local/src 创建自己的redis目录,执行:mkdir redis,并进入redis目录:cd redis 利用Linux下的wget命令开始下载redis,执行:wgethttps://download.redis.io/releases/redis-5.0.12.tar.gz 解决wget命令无法执行,请参考:https://blog.csdn.ne...
2021-04-03 10:36:35 74
原创 解决CentOS7无法查询IP地址的问题
输入ip addr命令查看。此命令会出现3个条目,CentOS的IP地址是ens33条目中的inet值,发现ens33没有inet这个属性,那么就没法通过IP地址连接虚拟机。接下来查看ens33网卡的配置:1.命令为:vi /etc/sysconfig/network-scripts/ifcfg-ens33 注意vi后面要加空格、2.从配置清单中可以发现CentOS7默认是不启动网卡的(ONBOOT=no)。把这一项修改为yes(ONBOOT=yes)。修改方法:按i键进行输入修改,然...
2021-04-02 23:38:03 835
原创 每天一道面试题(24)----类同时继承父类和实现接口时易出现的问题
类同时继承父类和实现接口时易出现的问题使用接口的时候,需要注意:接口是没有静态代码块或者构造方法的。一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。格式:public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB {// 覆盖重写所有抽象方法}如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
2021-04-02 00:03:42 584
原创 每天一道面试题(25)----Collections集合工具类
java.utils.Collections是集合工具类,用来对集合进行操作。public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。public class Demo01Collections { public static void main(St
2021-04-01 22:46:46 124
原创 每天一道面试题(21)----Java中ArrayList和LinkedList区别?
ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加、删除、插入新的元素或者数据的扩展和重定向。LinkedList使用了循环双向链表数据结构。与基于数组的ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作场景。LinkedList链表由一系列表项连接而成。一个表项总是包含3个部分:元素内容,前驱表和后驱表,如图所示:在下图展示了一个包含3个元素的LinkedList的各个表
2021-03-30 22:37:18 84
原创 每天一道面试题(20)----数组和链表分别比较适合用于什么场景?
数组和链表简介在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中地数据进行各种处理。当内存中有足够大地连续空间时,可以把数据连续地存放在内存中,各种编程语言中的数组一般都是按这种方式存储的;当内存中只有一些离散的可用空间时,想要连续存储数据非常困难,这时能想到的一种解决方式是移动内存中的数据,把离散的空间聚集成连续的一大块空间。然而有时候移动数据也会存在困难;另外能想到的方式是
2021-03-30 20:33:38 876
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人