自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 idea导入多模块开发的maven项目的时候报错的解决方案,导入的顺序要求

idea导入多模块开发的maven项目的时候经常会某一个子模块打包一直报错这个时候需要首先clean整个项目,然后对父模块先进行install,然后根据子模块之间的依赖顺序,一个一个进行install,然后项目就能构建成功了...

2021-03-31 22:23:40 959 1

原创 servlet抽取三:依然是基于注解的方式,利用监听器进行优化

前言上一篇博客servlet抽取二:基于注解的方式实现的程序还有许多的优化空间,需要改进,首先每次调用都需要扫描类和方法,需要新建了一个对象,而这些过程是重复的,所以这篇博客是基于上次的程序进行改进,在Tomcat启动的时候,就进行控制器的扫描,并存储,然后提高效率当Tomcat启动或终止时,ServletContextListener,会对这两个事件进行处理思想当Tomcat启动的时候,扫描类和方法,将映射与对象和方法存储到map中,当得到请求的时候,通过map来获取对象和方法进行调用代码M

2021-03-31 17:05:26 134 2

原创 servlet抽取二:基于注解的方式

回顾之前写过一篇博客是servlet的抽取但是在使用的时候,每次都要加上method=xxx现在就想基于之前的方法进行改进,实现类似于springmvc那样的效果直接根据请求,找到对应的方法,来执行,所以现在就是用注解的方式对之前的serlvet抽取进行改进思想创建一个servlet,让所有的请求走这个servlet再在这个servlet中,通过注解找到编写了映射地址的方法的类(这个类是标注有注解)再找到这个类中定义的方法,对标注了映射地址的方法,通过反射调用代码与解释工具类Cl

2021-03-31 16:17:34 151 5

转载 Java注解:使用isAnnotationPresent(注解名.class)总是返回false

isAnnotationPresent判断方法上自定义注解总是返回false需要在自定义注解上加 @Retention(RetentionPolicy.RUNTIME),声明该注解的存活策略可以保留到运行时,再通过反射获取时才可以正确获取。@Retention(RetentionPolicy.RUNTIME)public @interfaec 自定义注解名 { 数据类型 属性名;}...

2021-03-31 15:36:32 2799 4

转载 request.getRequestURL()和request.getRequestURI()的区别

request.getRequestURL() 返回全路径request.getRequestURI() 返回除去host(域名或者ip)部分的路径request.getContextPath() 返回工程名部分,如果工程映射为/,此处返回则为空request.getServletPath() 返回除去host和工程名部分的路径 例如: request.getRequestURL() http://localhost:8080/jqueryLearn/resources/request.j

2021-03-31 15:34:36 300

转载 什么是 CI 持续集成

现在做测试,经常听到一个概念 持续集成 CI Continuous Integration。那什么是持续集成呢?相信大家看了不少文章之后依然是一脸懵逼。这里呢,用我自己的理解谈一下,不正确的地方还请指正。要说持续集成,首先要明白什么是集成。很多测试同学说到集成,就想到集成测试。这里的集成主要是指代码的集成:举例来说,比如当前迭代,开发时间为两周。项目开始后,开发人员会从代码管理工具(SVN 或 GIT)的主干代码上复制一份代码到自己本地电脑。然后在自己的本地电脑上进行开发,假设这个项目有三个开发

2021-03-30 15:59:49 1756

原创 bean工厂的思想——面向接口编程,ioc的思想,控制反转

为什么要去使用beanFactory?主要是为了解耦合我们可以去看一个很简单的案例一个web项目可以分为控制层业务层dao层如果说根据分层来分模块开发,那么控制层就会依赖业务层,业务层又会依赖dao层那么一旦dao层的代码发生变化,比如以前的类设计有问题,重新换个类,那么业务层就会发生变化同样的控制层可能也要发生变化所以他们之间的联系是硬编码,耦合性太强这个时候为了避免这种情况就要面向接口编程 ,我们需要什么功能提前用接口的方式定义出来那么即使以后换了一个类 但是只要接口没变,函

2021-03-28 17:29:01 184 1

原创 idea maven tomcat插件的使用

maven官方的插件都发布在这个网站 https://maven.apache.org/plugins/tomcat maven插件官网在这 https://tomcat.apache.org/maven-plugin.htmltomcat maven插件 官方文档https://tomcat.apache.org/maven-plugin-2.2/run-mojo-features.html简单的使用如下1. 在pom.xml中配置<plugin> <groupId

2021-03-27 15:50:40 693

原创 解决idea maven配置了plugin却在插件窗口不显示的问题,以Tomcat的maven插件为例

注意看plugins标签所在的位置plugin的父标签plugins 可以直接放在build标签下也可以放在pluginManagement标签下而我们在创建maven项目的时候 默认存在的那个plugins标签是在pluginManagement标签下的而pluginManagement标签只是对插件的一种声明 而不会对插件进行加载所以解决办法如下:我们要在build标签下再写一个plugins标签然后再把plugin标签放进去下面是完整的pom.xml文件<?xml versio

2021-03-27 15:27:01 2286 4

原创 创建无骨架的javaweb maven项目

创建无骨架的java工程修改打包方式标准web项目的目录结构问题1: 缺少webapp 目录问题2: 缺少 web.xml

2021-03-27 14:30:13 211

原创 Maven 构建生命周期

简介maveb生命周期这个概念听起来很晦涩难懂,简单来讲可以理解为项目在创建阶段的编译测试打包这一系列过程在idea中,maven的这些生命周期变成了一个个功能的按钮下面这个图介绍了idea maven管理界面的各种功能1 clean命令清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package,mvn clean test1.1 idea上操作发现 target目录 被 清除了1.2 命令行操作执行清屏命令:经过观察发现ta

2021-03-27 14:25:28 138

原创 maven依赖范围

一个例子以servlet的maven依赖为例<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope></dependency>这里的

2021-03-26 22:33:07 219

原创 CentOS7使用firewall-cmd打开关闭防火墙与端口 以开放8080端口为例

centos7版本对防火墙进行加强,不再使用原来的iptables,启用firewalld简单上手(以配置8080端口为例)输入命令查看防火墙的状态firewall-cmd --state;如果没有开启,输入命令systemctl start firewalld.service;开启8080端口,输入:firewall-cmd --zone=public --add-port=8080/tcp --permanent;zone=public:表示作用域为公共的;add-

2021-03-26 11:18:08 12927 4

原创 Linux下安装mysql-5.7.24

https://www.jianshu.com/p/276d59cbc529

2021-03-26 11:07:53 110

原创 linux下tomcat的安装与配置

Linux系统部署Tomcatlinux版本tomcat上传到linux系统中的/usr/local下tar -xvf解开压缩包tar -xvf apache-tomcat-8.5.37.tar.gz开放Linux8080端口对外访问/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT/etc/rc.d/init.d/iptables save在centos7之后上面的命令失效了使用firewall-cmd命令去替代1.输入

2021-03-25 21:13:31 101

原创 CSDN的文章转为MD并全打包一键下载

来自github https://github.com/ame-yu/CSDN-export-scriptCSDN-moveCSDN的文章转为MD并全打包一键下载❗❓兼容性:现代浏览器应该都行QuickStart登陆CSDN前往https://blog-console-api.csdn.net/F12-> console 复制下面那句话,回车var s=document.createElement('script');s.type='text/javascript';

2021-03-25 20:17:19 3453 1

原创 Linux安装Java,以centos 为例 并解决javac: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录 报错

Linux操作系统部署JDKlinux版本JDK上传到linux系统中的 /usr/local下tar -xvf 解开压缩包tar -xvf jdk-8u191-linux-i586.tar.gz配置环境变量进入 /etc目录中,编辑文件profile以下代码复制到profile文件中#set java environment JAVA_HOME=/usr/local/jdk1.8.0_191 CLASSPATH=.:$JAVA_HOME/lib.tools.jar

2021-03-25 17:11:29 532 1

原创 Linux yum 命令

介绍Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum常用命令列出所有可更新的软件清单命令:yum check-update更新所有软件命令:yum update仅安装指定的软件命令:yum install <package_name>

2021-03-25 16:16:00 106

原创 Java访问Redis,Jedis的使用

导入jar包下载jedis的jar包,或者使用Maven,gradle等导入基本使用set 字符串 //set 字符串 @Test public void myTest01(){ Jedis jedis = new Jedis("localhost"); jedis.set("jedis_key","jedis_string"); jedis.close(); }get字符串 //get 字符串 @Te

2021-03-25 10:53:35 167 2

原创 一个专门用来读取Properties文件的类ResourceBundle

在src下新建一个文件my_data.propertiesname=kehaocountry=china用ResourceBundle 读取代码如下public class ResourceBundleDemo { public static void main(String[] args) { ResourceBundle bundle = ResourceBundle.getBundle("my_data"); String name = bundle.

2021-03-25 10:43:29 92

原创 Redis数据类型与相关命令

1. key (键)Redis有五大数据类型:String、List、Set、Zset、Hash注意:Redis采用键值对存储数据,key永远是String类型,五大数据类型指的是value部分2. String (字符串)一个key对应一个value;String可以包含任何数据,比如jpg图片等;String是Redis最基本的 数据类型,一个String的value最大可支持512M3. List (列表)底层是一个字符串链表;可以从头或尾添加元素注意:(1) 添加元素时:

2021-03-23 21:39:45 109

原创 redis windows下安装 配置windows服务

1. 下载下载地址:https://github.com/tporadowski/redis/releases。下载下来之后是一个压缩包,解压之后就可以直接使用了运行服务端,然后再运行客户端就可以使用了2. 配置windows服务如果只是这样去使用会非常的不方便我们就可以像安装MySQL那样,给他配置一个Windows服务在安装目录运行cmd,执行下面的命令redis-server --service-install redis.windows.conf然后windows服务中就会多出

2021-03-23 20:28:47 156

原创 【Mysql】mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法

可以参考【Mysql】mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法先运行SELECT * FROM information_schema.innodb_trx;然后看这三条如果有不是0的情况找到对应的然后根据其对应的值kill id的值就完事了eg:kill 89;...

2021-03-22 22:14:52 888

转载 ajax跨域问题

前言从刚接触前端开发起,跨域这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了,16年时也整理过一篇相关文章,但是感觉还是差了点什么,于是现在重新梳理了一下。个人见识有限,如有差错,请多多见谅,欢迎提出issue,另外看到这个标题,请勿喷~题纲关于跨域,有N种类型,本文只专注于ajax请求跨域(,ajax跨域只是属于浏览器"同源策略"中的一部分,其它的还有Cookie跨域iframe跨域,LocalStorage跨域等这里不做介绍),内容大概如下:什么是ajax

2021-03-22 15:43:18 134

原创 vue快速上手指北

1.Vue简介1.1. Vue是什么Vue.JS是优秀的前端 JavaScript 框架库和框架的区别:库(如jQuery)库是工具. 提供大量API,体现了封装的思想、需要自己调用这些API框架框架提供了一套完整解决方案,使用者要按照框架所规定的某种规范进行开发1.2. 为什么要学习 Vue随着项目业务场景的复杂,传统模式(html+jquery)已无法满足需求就出现了Angular/React/Vue等框架企业需求主流框架之一(React Angular Vu

2021-03-21 15:19:59 191

原创 jQuery ajax

概述通过 HTTP 请求加载远程数据。jQuery 底层 AJAX 实现。简单易用的高层实现见get和post方法。$.ajax()方法可以更加详细的设置底层的参数。语法jQuery.ajax([settings])其中,settings是一个js字面量形式的对象,格式是{name:value,name:value… …},常用的name属性名如下:属性名称解释url请求的服务器端url地址async(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送

2021-03-19 12:54:21 108

原创 jQuery的遍历

jQuery对象本身就是数组对象,通过jQuery选择器获得的都是满足该选择器条件的元素对象的集合体。因此常常需要对jQuery对象进行遍历。1. 原始方式遍历语法for(var i=0;i<元素数组.length;i++){ 元素数组[i];}代码<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> &l

2021-03-19 12:19:37 732

原创 jQuery的DOM操作

1. jQuery对DOM树中的文本和值进行操作语法API方法解释val([value])获得/设置 元素value属性相应的值text([value])获得/设置 元素的文本内容html([value])获得/设置 元素的标签体内容代码演示<script type="text/javascript"> //页面加载完成 $(function(){ //获取迪丽热巴 console.log(

2021-03-19 11:50:23 76

原创 javscript BOM对象

1. js的BOM概述BOM(Browser Object Model)浏览器对象模型,是将我们使用的浏览器抽象成对象模型,例如我们打开一个浏览器,会呈现出页面,通过js提供BOM对象我们可以模拟浏览器功能。例如,在浏览器地址栏输入地址,敲击回车这个过程,我们可以使用location对象进行模拟。再例如,浏览器中的前进和后退按钮,我们可以使用history对象模拟。2. js的BOM对象Window对象,对象表示浏览器中打开的窗口。Location对象,包含有关当前 URL 的信息。用于操作浏览

2021-03-18 20:58:48 244 1

原创 JavaScript内置对象

1 顶层函数(全局函数)parseFloat() 方法parseFloat() 函数可解析一个字符串,并返回一个浮点数。语法var value = parseFloat(string)提示:该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止.提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。Not a Number提示:如果只想解析数字的整数部分,请使用 parseInt() 方法。parseInt() 方

2021-03-18 20:17:04 148 1

原创 MySQL 中LIMIT的使用(分页查询)

分页查找的作用使用SELECT查询时,如果结果集数据量很大,比如几万行数据,放在一个页面显示的话数据量太大,不如分页显示,每次显示100条。要实现分页功能,实际上就是从结果集中显示第1~100条记录作为第1页,显示第101~200条记录作为第2页,以此类推。因此,分页实际上就是从结果集中“截取”出第M~N条记录。LIMIT基本语法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset;只使用一个参数mysql> S

2021-03-18 18:06:04 540

原创 Mybatis传递多个参数的4种方式

1. 函数接口中直接是传入多个参数的1.1. 顺序传入参数public User selectUser(String name, int deptId);<select id="selectUser" resultMap="UserResultMap"> select * from user where user_name = #{0} and dept_id = #{1}</select>#{}里面的数字代表你传入参数的顺序。1.2. @Param注

2021-03-18 17:27:45 333 1

原创 mybatis 一级缓存和二级缓存

MyBatis一级缓存一级缓存:是SqlSession级别的,也就是同一个SqlSession内执行相同select语句的时候,不再去查询数据库,而是从Mybatis内部的缓存内存结构去直接拿到数据。缓存失效时机:sqlSession关闭sqlSession提交事务(意味着可能是一个增删改的动作,需要更新缓存,那么这个时候Mybatis就会把已有的一级缓存给清理掉)MyBatis二级缓存开启二级缓存<setting name="cacheEnabled" value="t

2021-03-17 17:10:54 224

原创 MyBatis注解开发

@Insert注解注解属性value:写入SQL语句@Options注解实现添加新数据的主键封装注解属性useGeneratedKeys:使用生成的主键,配置为truekeyProperty:主键封装的pojo对象属性@SelectKey注解实现添加新数据的主键封装注解属性statement:要执行的SQL语句before:在添加SQL语句之前还是之后进行,配置为falsekeyProperty:主键封装的pojo对象属性注解实现添加数据UserMap

2021-03-17 16:39:34 83

原创 mybatis延迟加载

参考:你真的懂了mybatis延迟加载吗?什么是mybatis延迟加载这玩意就是为了替代多表联合查询的,将一次多表查询换成多次查询,这样再暂时不需要一些数据的时候就可以节省资源举个例子:有两张表:图书表(book):图书类型表(category):我们可以这样做在类型实体类里面添加一个属性存放该类型下的图书public class Category { private int cid; private String cname; private List&.

2021-03-17 15:35:38 250 1

原创 MyBatis多表管理查询

多表关联关系分析多表关联:至少两个表关联。分析多表关系的经验技巧:从一条记录出发,不要从表整体去分析,比如分析A表和B表关系,A表中的一条记录对应B表中的几条记录,如果是一条,那么A到B就是一对一;如果多条,那么A到B就是一对多一对一,从订单表出发,到用户表,是一对一的关系一对多,从用户表出发,到订单表,一条用户数据可以在订单表中存在多条记录,这就是一对多。通过主外键来体现一对多的表结构。一的一方是主表,多的一方是从表,从表当中有一个字段是外键,指向了主表的主键多对多,用户和角色表,一个

2021-03-17 14:02:10 186

原创 mybatis 动态SQL

什么是动态SQL,为什么要使用动态SQL举一个简单的例子需求:根据用户的性别和用户名多条件查询用户信息。对于这个需求可以写出这样一个mapper的配置<select id="queryUserBySexAndUsername" resultType="user" parameterType="user"> select * from user where sex=#{sex} and username like #{username}</select>在这个配置中

2021-03-17 13:26:39 142

原创 mybatis手动映射

为什么需要手动映射当数据表中的列名和pojo中类的属性名不同时,将会出现封装数据失败的现象,MyBatis无法将数据表中的数据准确的封装到pojo对象中,因此必须使用手动映射的方式来实现。比如 ,java类User 有一项数据为userId ,而在数据库中user表的对应列为user_id,那么就会产生mybatis不能直接对应过去的问题解决办法 ⟶\longrightarrow⟶手动映射<mapper namespace="com.kehao.mapper.OrdersMapper"&g

2021-03-15 17:13:34 800 1

原创 mybatis 全局typeAliases配置(配置别名)

什么是typeAliases配置,有什么用一个简单的例子<mapper namespace="com.kehao.mapper.UserMapper"> <select id="queryUserById" parameterType="Integer" resultType="com.kehao.pojo.User"> select * from user where id=#{id} </select></mapper>可以

2021-03-15 16:50:27 604

原创 mybatis动态代理

简单使用Mapper动态代理开发遵从的规范sql映射文件的namespace必须和mapper接口的全限定类名保持一致mapper接口的接口方法名必须和xml中的sql语句id保持一致mapper接口的接口方法形参类型必须和sql语句的输入参数类型保持一致mapper接口的接口方法返回类型必须和sql语句的resultType保持一致定义接口(放到mapper包下,将mapper的xml放到和接口同样的路径)public interface UserMapper { User qu

2021-03-15 16:25:08 124

mfc可视化程序设计大作业俄罗斯方块

mfc可视化程序设计的大作业俄罗斯方块,windows应用程序,visual studio2013下开发

2019-04-26

Unity坦克大战

复古的小时候经常玩的坦克大战游戏的unity的实现案例。

2019-04-26

unity口红游戏

就是unity实现的外面商场里面很多人玩的口红游戏,不过这里并没有用口红的图片,可以修改

2019-04-26

unity跳一跳

微信里的网红小游戏跳一跳unity的复刻项目,可以作为参考

2019-04-26

遗传算法tsp案例

遗传算法解决tsp(旅行商问题)的python实现代码,有图形和控制台输出

2019-04-26

ios音乐播放器案例

ios音乐播放器案例,xcode8.3环境实现,采用swift语言

2019-04-26

html八数码游戏

使用html+css+javascript实现了八数码小游戏,可以作为参考

2019-04-26

html图片切换案例

html图片切换案例,就是几个图片切换比较简单,可以参考

2019-04-26

学生管理系统javaweb+ssm框架后台+easyui前端

所需要的包是采用maven配置的,没有转maven可以自己导入包或者安装maven

2019-04-26

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

TA关注的人

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