java-web学习
文章平均质量分 93
空城1995
爱编程,爱java。
展开
-
git的一些常用命令讲解和开发规范总结
一、git基本配置介绍1. config的三个作用域 local:区域为本仓库 global: 当前用户的所有仓库 system: 本系统的所有用户 2. 添加最小配置$ git config --global user.name 'yfy' $ git config --global user.email 'yfy@163.com'3. 查看配置$ git config --local --list ##只能在仓库里面起作用, 普通路径git不管理.原创 2020-09-29 20:04:31 · 193 阅读 · 0 评论 -
在IntelliJ IDEA中使用git
1.软件安装 下载地址:https://git-scm.com/download 安装好之后为下面的目录结构 2.在IDEA中配置 git 3.将工程添加至本地git仓库(1)在 idea 中创建一个工程,例如创建一个 java 工程(2)创建本地仓库1)在菜单中选择“vcs”→Import into Version Control→Cre...原创 2018-12-01 20:47:53 · 175 阅读 · 0 评论 -
Tomcat调优
1.部署安装Tomcathttp://tomcat.apache.org/ 将文件上传到linux服务器中,解压 tar -zxvf apache-tomcat-8.0.50.tar.gz 修改配置文件,配置tomat的管理用户 vim /conf/tomcat-users.xml<role rolename="manager"/><r...原创 2019-08-13 17:52:47 · 98 阅读 · 0 评论 -
LinkedList插入元素一定比ArrayList快吗
在选择数据结构的时候,我们通常会考虑每种数据结构不同操作的时间复杂度,以及使用场景两个因素。对于数组,随机元素访问的时间复杂度是 O(1),元素插入操作是 O(n);对于链表,随机元素访问的时间复杂度是 O(n),元素插入操作是 O(1)。那么,在大量的元素插入、很少的随机访问的业务场景下,是不是就应该使用 LinkedList 呢?接下来,我们写一段代码测试下两者随机访问和插入的性能吧。我们定义下面几个方法,分别为随机访问LinkedList数组和ArrayList数组,往LinkedLi原创 2020-08-17 15:52:10 · 954 阅读 · 2 评论 -
如何在队列排队之前让ThreadPoolExecutor将线程增加到最大数量
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> w...原创 2020-08-10 20:09:34 · 2807 阅读 · 8 评论 -
ThreadLocal线程复用导致的安全问题
我们知道,ThreadLocal 适用于变量在线程间隔离,而在方法或类间共享的场景。如果用户信息的获取比较昂贵(比如从数据库查询用户信息),那么在 ThreadLocal 中缓存数据是比较合适的做法。但,这么做为什么会出现用户信息错乱的 Bug 呢?我们看一个具体的案例吧。使用 Spring Boot 创建一个 Web 应用程序,使用 ThreadLocal 存放一个 Integer 的值,来暂且代表需要在线程中保存的用户信息,这个值初始是 null。在业务逻辑中,我先从 ThreadLocal 获原创 2020-08-08 15:29:49 · 3180 阅读 · 0 评论 -
java.util.Map中put,computeIfAbsent与putIfAbsent区别
computeIfAbsent和putIfAbsent区别是三点:1、当Key存在的时候,如果Value获取比较昂贵的话,putIfAbsent就白白浪费时间在获取这个昂贵的Value上(这个点特别注意)2、Key不存在的时候,putIfAbsent返回null,小心空指针,而computeIfAbsent返回计算后的值3、当Key不存在的时候,putIfAbsent允许put null进去,而computeIfAbsent不能,之后进行containsKey查询是有区别的(当然了,此条针对Ha原创 2020-08-08 14:35:23 · 1985 阅读 · 0 评论 -
JDK1.8新特性之时间和日期的使用
LocalDate该类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息。另外,它也不附带任何与时区相关的信息public class LocalDataTest { public static void main(String[] args) { //你可以通过静态工厂方法of创建一个LocalDate实例。LocalDate实例提供了多种方法来...原创 2019-12-20 15:09:06 · 597 阅读 · 0 评论 -
分布式文件服务器FastDFS
目录1.什么是FastDFS2.文件上传和下载流程(1)文件上传流程(2)文件下载流程3.FastDFS图片上传及回显的案例(1)导入pom依赖(2)导入springmvc的配置和FastDFS的配置文件(3)编写web.xml(4)创建返回的结果对象(5)导入FastDFSClient的工具类(6)创建文件上传的Controller层代码(7)前端...原创 2018-12-08 21:54:31 · 439 阅读 · 0 评论 -
网页静态化技术Freemarker
目录1.为什么要使用网页静态化技术2.什么是Freemarker3.入门小Demo(1)引入maven依赖(2)创建模板文件(3)生成文件4.FTL指令(1)定义简单类型(2)定义对象类型5.include指令6.if指令7.list指令8.内建函数(1)获取集合大小(2)转换JSON字符串为对象(3)日期格式化(4)数字转换为字...原创 2018-12-09 12:34:23 · 247 阅读 · 0 评论 -
跨域解决方案之CORS
目录1.什么叫做跨域请求2.跨域调用测试3.解决方案CORS跨域(1)概述(2)请求过程(3)解决办法(4)SpringMVC跨域注解1.什么叫做跨域请求跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。2...原创 2018-12-16 14:20:51 · 569 阅读 · 0 评论 -
微信二维码支付快速入门
目录一、二维码生成插件qrious二、HttpClient三.微信扫码支付1.申请步骤2.开发文档四、入门Demo1.工程搭建2.myStudy-pay-interface3.myStudy--pay-service(1)引入pom依赖(2)创建配置文件(3)导入上文提到的HttpClient工具类(4)创建WeixinPayService的实现...原创 2018-12-17 20:09:45 · 927 阅读 · 1 评论 -
消息中间体activeMQ
一、简介1.什么是消息中间体消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色有Producer(生产者)、Consumer(消费者)2.什么是JMSJMS(Java Messaging Service)是Java平台上有关面向消息中间件的...原创 2018-12-12 13:28:41 · 276 阅读 · 0 评论 -
基于JWT的Token认证机制实现
一、基于JWT的Token认证机制实现1.什么是JWT JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 2.JWT组成一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。头部(Header)头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JS...原创 2019-01-13 15:57:13 · 1844 阅读 · 1 评论 -
Java Optional 的 orElse() 和 orElseGet() 的区别
1. 接收的参数不同orElse()方法以一个自定义类型的数据作为参数public T orElse(T t)orElseGet()方法以一个Supplier类型的数据作为参数public T orElseGet(Supplier<? extends T> other)2. 程序的执行过程不同以下面一段代码为例:public static void...转载 2019-05-09 21:02:11 · 7507 阅读 · 1 评论 -
枚举类的使用-使用实例域来替代序数
许多枚举都与一个单独的int值进行了关联。所有的枚举都有ordinal方法,这个方法返回了每个枚举常量的位置。你也许会试着从ordinal方法里获取得到一个关联的int值:public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET, NONET, DECTET; public...原创 2019-06-24 15:22:14 · 233 阅读 · 0 评论 -
java获取pdf的页数、内容和缩略图
1.导入maven依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.8</versi...原创 2019-07-05 11:25:22 · 3552 阅读 · 2 评论 -
java使用POI工具类导出excel
POI导出excel1.导入maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0...原创 2019-07-31 15:45:47 · 884 阅读 · 1 评论 -
JDK5的一些新特性
一、泛型 * 为什么要使用泛型? - 一般使用在集合上 ** 比如现在把一个字符串类型的值放入到集合里面,这个时候,这个值放入到集合之后,失去本事的类型,只能是object类型, 这个时候,比如想要对这个值进行类型转换,很容易出现类型转换错误,怎么解决这个问题,可以使用泛型来解决。 * 在集合上如何使用泛型 - 常用集合 list set map - 泛型语法 集合<Stri...原创 2018-04-25 20:36:31 · 163 阅读 · 0 评论 -
乐观锁和悲观锁的区别
一、乐观锁和悲观锁的区别1.乐观锁 总是做最好的打算,每次去拿数据的时候都会认为别人不会修改,因此不会上锁。 乐观锁的其中一种实现方式是在数据库上添加version字段(也可以使用timestamp时间戳),每次执行更新操作的时候,都会将当前版本号+1,并在后面加上条件 where version=1 这里假设有A和B两个人操作一个数据库表,该表目前的count字段=100,...原创 2018-10-23 22:53:43 · 200 阅读 · 0 评论 -
javascript对象和json字符串之间转换的问题
在开发中,当使用ajax向后端发送请求返回一个json时,有两个可能,一种是返回json字符串,一种是返回object。javascript中有两个方法可以用来处理两者之间的互相转换问题: JSON.parse(string) :接受一个 JSON 字符串并将其转换成一个 JavaScript 对象。 JSON.stringify(obj) :接受一个 JavaScrip...原创 2018-10-12 13:03:26 · 274 阅读 · 0 评论 -
Java-Web HTTP协议
一、HTTP概述 HTTP(hypertext transport protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。 HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。二、请求协议 ...原创 2018-04-27 09:39:52 · 242 阅读 · 0 评论 -
Java-Web JSP指令、javabean和EL表达式
目录 一、JSP指令 1.JSP指令概述 2.page指令 (1)pageEncoding和contentType (2)import (3)errorpage和isErrorpage (4)web.xml中配置错误页面 (5)autoFlush和Buffer (...原创 2018-05-05 15:28:21 · 365 阅读 · 0 评论 -
MyEclipse创建JavaWeb应用和TomCat的配置
一、配置TomCat 使用MyEclipse配置服务器后,就可以使用MyEclipse来启动和停止服务器了。当然,你需要先安装好服务器(Tomcat),才能配置。 MyEclipse自带了一个Tomcat,强烈建议不要使用它。所以,我们需要先把MyEclipse自带的Tomcat关闭,然后再来配置我们自己的Tomcat。在工具栏中找到,点击下箭头,点击Configure...原创 2018-04-26 18:17:29 · 409 阅读 · 0 评论 -
TomCat服务器和Web应用
一、软件系统体系结构 常见软件系统体系结构B/S、C/S 1.C/S C/S结构即客户端/服务器(Client/Server),例如QQ; 需要编写服务器端程序,以及客户端程序,例如我们安装的就是QQ的客户端程序; 缺点:软件更新时需要同时更新客户端和服务器端两端,比较麻烦; 优点:...原创 2018-04-26 17:51:30 · 401 阅读 · 0 评论 -
java反射机制和junit的使用
一、反射的原理 *JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 * 应用在一些通用性比较高的代码中 * 后面学到的框架,大多数都是使用反射来实现的 * 在框架开发中,都是基于配置文件开发 ** 在配置文件中配置了类,可以通过反射...原创 2018-04-26 10:40:00 · 524 阅读 · 0 评论 -
xml解析案例:一个简单的学生管理系统
1.创建一个xml文件,写一些学生信息<?xml version="1.0" encoding="UTF-8"?><person> <student> <id>001</id> <name>张三</name> <age原创 2018-04-24 19:54:19 · 3736 阅读 · 0 评论 -
xml解析: dom4j
目录一、XML解析1.概述2.解析方式和解析器二、Dom4j的基本使用1.解析原理2.基本使用2.常用方法(1)SaxReader对象(2)Document对象(3)Element对象三、dom4j练习1.使用dom4j查询xml2.使用dom4j实现添加操作3.使用dom4j实现在特定位置添加元素 4.使用dom4j实现修改节点的操作...原创 2018-04-24 17:28:24 · 540 阅读 · 0 评论 -
Java-Web Servlet开发
一、Servlet概述 1.什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: 接收请求数据; ...原创 2018-04-28 11:09:39 · 183 阅读 · 0 评论 -
Java-Web JSTL标签库、自定义标签库和MVC设计模式
目录一、JSTL标签库1.什么是JSTL2.JSTL标签库 3.使用taglib指令导入标签库4.core标签库常用标签(1)out和set(2)remove(3)url(4)if(5)choose(6)forEach 5.fmt标签库常用标签 (1)格式化时间 (2)格式化数字二、自定义标签库 ...原创 2018-05-07 16:17:08 · 295 阅读 · 0 评论 -
HttpSession之验证码练习
ValidateColorServlet.javapackage com.session;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServ...原创 2018-09-09 11:07:03 · 297 阅读 · 0 评论 -
动态代理入门
目录 一、动态代理1、运行时实现指定的接口2、newProxyInstance()方法的参数3、invoke()方法4、动态代理的用途5.简单的自定义连接池二、类加载器1.什么是类加载器2.JVM眼中的相同的类3.类加载器的代理模式4.Tomcat的类加载器一、动态代理1、运行时实现指定的接口 想实现某个接口,你需要写...原创 2018-05-30 18:18:22 · 254 阅读 · 0 评论 -
Java-Web 基础加强之泛型、注解和Servlet3.0新特性
目录 一、泛型1.泛型类2.泛型方法3.继承(实现)泛型类(接口)4.通配符 (1)通配符概述 (2)通配符的缺点 (3)通配符的限制 (4)带有下边界的通配符 (5)带有下边界的通配符 (6)通配符小结二、注解1.注解的概述2.java中的注解3.定...原创 2018-05-29 18:10:41 · 297 阅读 · 0 评论 -
Java-Web 文件上传和文件下载
一、文件上传 将信息从个人计算机(本地计算机)传送至中央计算机(远程计算机)系统上,让网络上的人都能看到。 1.文件上传对页面的要求 (1)必须使用表单,而不能是超链接; (2)表单的method必须是POST,而不能是GET; (3)表单的enctype必须是multipart/form-data; (4)在表单中添加f...原创 2018-05-23 21:07:26 · 335 阅读 · 0 评论 -
Servlet优化之BaseServlet
BaseServlet 1.我们希望在一个Servlet中可以有多个请求处理方法 2、客户端发送请求时,必须多给出一个参数,用来说明要调用的方法 3、参数名遵守约定 4、希望帮助简化重定向和转发,利用返回值 我们知道,Servlet中处理请求的方法是service()方法,这说明我们需要让service()方法去调用其他方法。例如调用add()、mod()、d...原创 2018-05-21 15:27:40 · 565 阅读 · 0 评论 -
Java-Web 监听器和过滤器
目录一、监听器1.监听器概述2.创建与销毁监听器3.操作域对象属性的监听器4.HttpSession的监听器二、过滤器1.过滤器简介2.过滤器的生命周期3.过滤器方法中的参数4.多个过滤器执行顺序5.四种拦截方式6.过滤器的应用场景7.设置目标资源一、监听器1.监听器概述 在JavaWeb被监听的事件源为:Servlet...原创 2018-05-21 20:40:21 · 276 阅读 · 0 评论 -
Java-Web JSP、Cookie和Session域对象
一、JSP入门 1.什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。 2.JSP的组成 JSP = html + Java脚本(代码片段) + JSP动态标签 3.JSP语法 3.1 JSP脚本 JSP脚本就是java代...原创 2018-05-04 12:01:15 · 688 阅读 · 0 评论 -
Java-Web 编码和路径
一、响应编码 当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso-8859-1,因为iso-8859-1不支持中文,一定乱码。 在使用response.getWriter()之前可以使用response.setCharaceterEncoding()来设置字符流的编码为gbk或utf-8,当然我们通常会选择...原创 2018-04-29 17:20:00 · 424 阅读 · 0 评论 -
Java-Web Response响应和Request请求
一、请求响应流程图二、response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来对客户端进行响应的,这说明在service()方法中使用...原创 2018-04-29 12:01:13 · 726 阅读 · 0 评论 -
XML简介及基本语法
目录一、xml的简介(了解)二、xml的语法1.文档声明2.元素/标签定义3.属性4.注释5.转义字符6.CDATA区7.PI指令(处理指令)三、xml的约束四、DTD约束五、dtd的三种引入方式1. 内部DTD2. 外部DTD3. 外部DTD六、使用dtd定义元素1.约束元素的嵌套层级2.约束元素体里面的数据3.数量词...原创 2018-04-22 20:37:42 · 2192 阅读 · 0 评论