自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (6)
  • 收藏
  • 关注

原创 cookie创建的三个参数(有效期+有效路径+httponly)

1.创建cookie对象+ URLEncoder.encode转码1.1有效期:setMaxAge();可通过web.xml设置或者在servlet中设置<!-- 使用配置文件修改session的有效期--> <session-config><!-- 单位是分钟--> <session-timeout>10</session-timeout> </session-config>

2020-08-31 20:36:02 1614

转载 encodeRedirectURL与encodeURL作用

session对象能和客户建立意义对应的关系依赖于客户的浏览器是否支持cookie,如果客户的浏览器不支持的话,那么客户再不同网页之间的session对象可能时互不相同的,因为服务器无法将ID存放到客户端,就不能建立session对象和客户的一一对应关系。可以通过URL重写来实现session对象的唯一性。所谓URL重写就是当客户从一个页面重新连接到一个页面时,通过向这个新的URL添加参数,把session对象的id传过去,这样能够保证session对象是完全相同的。可以使用response对象调用enco

2020-08-31 19:45:39 1444

原创 使用servlet完成简单的登录功能(servlet与html之间跳转(重定向))

1.新建web项目直接在web下面创建html文件2.login.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>login</title></head><body><h2>用户登录</h2><form action="login" method="p

2020-08-29 17:25:19 2622 4

原创 创建Servlet的几种方式+web.xml中关于servlet的一些配置+浏览器、服务器交互Postman测试

1.继承Servlet接口,重写servlet方法package d01;import javax.servlet.*;import java.io.IOException;import java.util.Date;/** * zt * 2020/8/28 * 10:53 */public class MyServlet implements Servlet { /** * 初始化servlet,只执行一次 * @param servletConfig

2020-08-28 15:13:58 571

原创 测试是否链接Tomcat服务器成功

1.下载Tomcat2.打开startup.bat,浏览器访问http://localhost:8080/3.访问成功

2020-08-27 11:11:45 715

原创 初步使用Druid连接池+代码示例:对图书进行增删改查

1.创建数据库,向里面添加数据数据库名:BookShop#用户表 CREATE TABLE USER( id INT(11) PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, PASSWORD VARCHAR(32) NOT NULL, realname VARCHAR(20), email VARCHAR(50) NOT NULL, gender VARCHAR(50) NOT NULL,flag INT(11), role IN

2020-08-24 22:39:27 1101

原创 自己封装数据库工具类

1.代码package d04_dbutils;import java.io.InputStream;import java.sql.*;import java.util.Properties;/** * zt * 2020/8/20 * 15:53 * 封装数据库工具类 * 1.注册驱动 * 2.获取连接 * 3.关闭资源 * ------------------------------ * 4.执行命令(增、删、改) * 5.查询 * 6.事务操作 */publi

2020-08-20 19:33:52 210

原创 PreparedStatement连接数据库实现登录验证,避免sql注入问题

一、代码package d03_system;import java.sql.*;import java.util.Scanner;/** * zt * 2020/8/20 * 14:19 * 1.注册驱动(可省略) * 2.创建链接 * 3.创建命令 * 4.执行命令 * 5.关闭资源 * * PreparedStatement pstat = conn.prepareStatement("select * from user where name=? and passwo

2020-08-20 15:50:56 385

原创 使用prepareStatement连接数据库实现增、删、改、查

一、代码自己建的数据库表如下图:package d03_system;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;/** * zt * 2020/8/20 * 15:05 * 使用prepareStatement实现增、删、改、查 */public class JdbcDemo5 {

2020-08-20 15:44:50 541

原创 垃圾回收

1.垃圾回收1.1垃圾判定没有任何引用指向的对象,称为垃圾。算法:1.引用计数算法 2.可达性分析算法(java):通过一系列的GC Root对象为起点进行索引,没有任何引用链项链的对象就是不可用的,此算法解决了循环引用问题。GC Root包含下列这几种1.虚拟机栈中引用的对象2.静态属性对象3.方法区中常量引用对象–>字符串常量池里的引用4.本地方法栈中JNI(Native方法)引用的对象5.synchronized锁对象6.Class对象...

2020-08-18 10:05:54 104

原创 Lambda什么时候使用+简化匿名内部类

1.简化匿名内部类Lambda可以简化的内容: 1.lambda中如果只有一条语句,可以把{}省略掉,如果有返回值return也省略掉 2.参数列表中的类型是可以推断出来的,所以可以省略 3.方法引用简化: Comparator<String> comparator = String::comparaTo;2.代码package d01_lamda;import java.util.Comparator;/** * zt * 2020/8/13 * 9:42

2020-08-13 10:05:09 263

原创 单例模式-->饿汉式+懒汉式

一、概述单例模式:要求整个程序只有一个对象 * 三步骤:1.私有化构造方法 * 2.在类的内部创建一个对象 * 3.通过公开的方法,返回这个对象1.饿汉式/* *饿汉式:类一加载,对象就初始化 * 缺点:生命周期太长,浪费空间 * 有点:线程安全 * /public class SingleTon { //1.私有构造方法 private SingleTon(){} //2.在类的内

2020-08-12 21:57:56 122

原创 类对象 与 类的对象

类对象Class<?> class1 = Class.forName("d01_student.Student");类的对象(new)Class<?> class1 = Class.forName("d01_student.Student");Student stu1 = (Student) class1.newInstance();

2020-08-12 20:37:03 594

原创 反射:Reflect(获取类对象三种方法)

1.反射获取对象的三种方法推荐方式三(因为前两种方式编译的时候都要求有Student类,此方式不需要,没有也不会报错)1.获取类对象 1.方式一:对象获取 2.方式二:类名.class 3.方式三:class.forName(),(推荐)2.代码//反射操作1,获取类对象三种方式 public static void reflecOp1() throws Exception { //1.获取类对象 //1.1方式一:

2020-08-12 20:29:55 2162

原创 三次握手与四次挥手+图解

三次握手(链接的建立)客户端与服务器均处于未连接状态,并且是客户端主动向服务器请求建立连接1.1为什么要第三次握手?确定服务器也可以向客户端发送数据2.四次挥手(连接的释放)客户端与服务器均处于连接建立状态,客户端主动断开连接2.1为什么中间服务器要两次连续发送数据(2、3)因为要进行关闭等待...

2020-08-11 20:02:20 148

原创 使用NIO实现非阻塞式(相对的)多人聊天室

1.服务端package d02_test;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocketChannel;import java.nio.chan

2020-08-11 19:46:15 181

原创 UDP实现多人聊天室

概述先运行接收方,避免收不到一开始的数据造成数据丢失1.接收方Receiverpackage d03_chat;import java.net.DatagramPacket;import java.net.DatagramSocket;/** * zt * 2020/8/11 * 10:13 * 接收方 * * System.out.println(dp.getAddress().getHostAddress()+":"+data); * getAddress方法和getHos

2020-08-11 10:47:04 1357

原创 java使用TCP,由客户端向服务端传输图片,(电脑与电脑)或(同一台电脑)

概述1.完成图片的复制,与客户端向服务端传输文字相差不大。都是: 1.1基于TCP协议的服务器端 1.创建服务器套接字,绑定端口号(new ServerSocket(1008)) 2.侦听客户连接,返回socker(listener.accept()) 3.获输入、输出流 4.处理数据 5.关闭资源 1.2基于TCP协议的客户端 1.创建客户端套接字,指定服务器的地址和端口号

2020-08-10 21:11:00 390

原创 java实现客户端服务端互发消息并接收

一、总的来说,先了解它们的组成部分基于TCP协议的服务器端 1.创建服务器套接字,绑定端口号(new ServerSocket(1008)) 2.侦听客户连接,返回socker(listener.accept()) 3.获输入、输出流 4.处理数据 5.关闭资源 基于TCP协议的客户端 1.创建客户端套接字,指定服务器的地址和端口号 2.获输入、输出流

2020-08-10 18:36:06 3006 4

原创 序列化与反序列化Serializable,Externalizable

1.代码Demo3测试类/* * zt * 2020/8/8 * 15:34 *序列化:把Person对象写入硬盘中 要求:1.序列化的类必须是Serializable自动或者Externalizable手动序列化接口 2.序列化的类要添加一个私有的long类型静态常量serialVersionUID,保证序列化的类反序列化的类是同一个类。 (1)使用transient修饰的属性,不可以序列化 (2)静态属性不能序列化 面试题:使用transi

2020-08-08 16:21:00 208

原创 将一个txt文件,复制到另一个txt文件中(缓冲字节流(BufferedInputStream,BufferedOutputStream))

1.代码package d04_test;/* * zt * 2020/8/8 * 15:07 *使用缓冲字节流实现复制文件(BufferedInputStream) */import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class Demo1 {

2020-08-08 15:27:07 1105

原创 用缓冲字节流,复制一个照片

1.代码package d01_TestInput;/* * zt * 2020/8/7 * 12:02 *边读边写 */import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class CopyFiel { public static void m

2020-08-07 12:23:44 538 1

原创 缓冲字节输出流BufferedOutputStream

1.代码package d01_TestInput;/* * zt * 2020/8/7 * 11:36 * */import java.io.BufferedOutputStream;import java.io.FileOutputStream;public class TestBufferedOutputStream { public static void main(String[] args) throws Exception { //创建缓冲字节输出

2020-08-07 11:55:53 173

原创 缓冲字节输入流BufferedInputStream

1.在e盘下创建aaa.txt1.代码package d01_TestInput;/* * zt * 2020/8/7 * 11:31 * */import java.io.BufferedInputStream;import java.io.FileInputStream;public class TestBufferedInputStream { public static void main(String[] args) throws Exception {

2020-08-07 11:51:21 197

原创 使用文件字节输出流FileOutputStream写入文件

1.代码package d01_TestInput;/* * zt * 2020/8/7 * 11:11 * */import java.io.FileOutputStream;public class TestFileOutputStream { public static void main(String[] args) throws Exception { //1.创建流 FileOutputStream fos = new FileOutp

2020-08-07 11:30:47 453

原创 使用文件字节输入流FileInputStream读取文件

1.在e盘下创建aaa.txt文件2.代码package d01_TestInput;/* * zt * 2020/8/7 * 10:33 * */import java.io.FileInputStream;public class Test1 { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("e:\\

2020-08-07 10:51:57 334

原创 在控制台,递归显示文件夹下所有文件目录代码+ 运行结果

1.用递归方式显示文件夹------->效果图代码实现package TestFile;/* * zt * 2020/8/6 * 17:46 *递归显示文件夹 */import java.io.File;public class Demo1 { public static void main(String[] args) { listDir(new File("e:\\aaa"), 0); } public static void lis

2020-08-06 18:02:27 439

原创 文件操作与文件夹操作

1.文件操作package TestFile;/* * zt * 2020/8/6 * 16:47 * 文件操作 1.创建文件 2.删除文件 3.获取信息 4.判断 5.修改名字 */import java.io.File;import java.io.IOException;import java.sql.Date;public class FileOperate { public s

2020-08-06 17:40:46 172

原创 二叉查找树代码java+运行结果

1.代码package TestTree;/* * zt * 2020/8/3 * 14:41 *二叉查找树: */public class BinarySortTree { //根节点 private Node root; //元素个数 private int size; public int getSize() { return size; } //添加元素 public void add(int v

2020-08-04 10:32:27 566

RDB持久化机制: - RDB默认开启 - RDB存储二进制数据

- RDB持久化机制: - RDB默认开启 - RDB存储二进制数据,RDB在持久化和读取持久化文件时,速度较快 - RDB持久化的时机: save second keys # 在second时间内,执行了key次写操作,就执行RDB的持久化 - 优缺点:持久化效率高,RDB持久化时机导致RDB策略不安全 ,数据可能会丢失。 - AOF持久化机制: - AOF默认关闭,需要将appendonly yes手动开启 - RDB默认持久化日志文件,将每次写操作的命令持久化到本地文件中,在持久化和读取持久化文件时,相对RDB较慢

2020-11-05

Redis的其他命令

为什么学习Redis - 为了提升查询效率,需要使用到缓存技术 - 单机架构搭建集群后,Session等基于JVM技术的存储型内容,多台节点数据是无法共享的 - 单机架构搭建集群后,传统的锁已经失效了

2020-11-05

《Nginx介绍:配置+使用》

为什么要学习Nginx: - 单体架构搭建集群后出现了很多问题: - 客户端如何存储大量的服务器的ip地址和端口号 - 客户端的请求到底发送给哪台服务器 - 静态资源和动态资源如何分开处理 - Nginx解决: - 客户端只需要记住Nginx的ip地址和端口号即可 - 客户端不需要关注请求到底发送给了哪台服务器,Nginx会做统一的请求转发 - Nginx可以代理静态资源,也可以代理动态资源,实现动静分离

2020-11-05

Docker&Nginx

- 在公司开发项目时,如果完成了N个功能之后,再去类生产环境中去测试时,能会产生大量的问题,并且代码可能会偏离主干。 - 可以使用CI持久集成,每完成一个小功能,就立即将程序打包,部署到类生产环境中,并测试功能,帮助咱们快速定位问题,防止功能代码偏离主干。 - CI:将工作区的代码托送到远程的gitlab仓库后,gitlab-runner工具会感知到代码被修改,立即根据代码中的一个文件中的要求,将程序打包部署,并通过docker启动起来。

2020-11-05

《docker详解:配置+使用》

- 封装:将操作系统,软件环境,据体软件和各种依赖全部都封装到一个镜像(image)中。 - 标准化: - 镜像统一的存放到一个中央仓库中。 - 统一的命令操作。 - Docker提供了统一的RESTful的API接口。 - 隔离性:运行容器时,会单独的在Linux内核中开辟一片空间,避免影响其他程序。

2020-11-05

Linux环境搭建VMware+xterm

为自己的电脑配置Linux环境,在VMware中安装Linux,使用Xterm连接Linux(可视化操作界面),详细介绍,包含安装细节,以及对应的Linux操作命令

2020-10-27

空空如也

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

TA关注的人

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