Tomcat 快速入门
Tomcat 快速入门 🎁 版本说明 当前最新版本:Tomcat 8.5.24 环境要求:JDK7+ 1. Tomcat 简介1.1. Tomcat 是什么Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为 Web 服务器的一些特有功能,如 Tomcat 管理和控制平台、安全域管理和 Tomcat 阀等。 由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。 1.2. Tomcat 重要目录 /bin - Tomcat 脚本存放目录(如启动、关闭脚本)。 *.sh 文件用于 Unix 系统; *.bat 文件用于 Windows 系统。 /con...
JavaWeb 之 Servlet 指南
JavaWeb 之 Servlet 指南Servlet 简介没有找到官方文档,更多信息查看:菜鸟教程 什么是 ServletServlet(Server Applet),即小服务程序或服务连接器。Servlet 是 Java 编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。 狭义的 Servlet 是指 Java 实现的一个接口。 广义的 Servlet 是指任何实现了这个 Servlet 接口的类。 Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。 Servlet 和 CGI 的区别Servlet 技术出现之前,Web 主要使用 CGI 技术。它们的区别如下: Servlet 是基于 Java 编写的,处于服务器进程中,他能够通过多线程方式运行 service() 方法,一个实例可以服务于多个请求,而且一般不会销毁; CGI(Common Gateway Interface...
JavaWeb 之 Filter 和 Listener
JavaWeb 之 Filter 和 Listener引入了 Servlet 规范后,你不需要关心 Socket 网络通信、不需要关心 HTTP 协议,也不需要关心你的业务类是如何被实例化和调用的,因为这些都被 Servlet 规范标准化了,你只要关心怎么实现的你的业务逻辑。这对于程序员来说是件好事,但也有不方便的一面。如果这个规范不能满足你的业务的个性化需求,就有问题了,因此设计一个规范或者一个中间件,要充分考虑到可扩展性。Servlet 规范提供了两种扩展机制:Filter和Listener。 FilterFilter 是过滤器,这个接口允许你对请求和响应做一些统一的定制化处理。 Filter 提供了过滤链(Filter Chain)的概念,一个过滤链包括多个 Filter。客户端请求 request 在抵达 Servlet 之前会经过过滤链的所有 Filter,服务器响应 response 从 Servlet 抵达客户端浏览器之前也会经过过滤链的所有 FIlter。 过滤器方法Filter 接口有三个方法: init:初始化 Filter destroy:销毁 Filt...
JavaWeb 之 Cookie 和 Session
JavaWeb 之 Cookie 和 SessionCookie由于 Http 是一种无状态的协议,服务器单从网络连接上无从知道客户身份。 会话跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话。常用会话跟踪技术是 Cookie 与 Session。 Cookie 是什么Cookie 实际上是存储在客户端上的文本信息,并保留了各种跟踪的信息。 Cookie 工作步骤: 客户端请求服务器,如果服务器需要记录该用户的状态,就是用 response 向客户端浏览器颁发一个 Cookie。 客户端浏览器会把 Cookie 保存下来。 当浏览器再请求该网站时,浏览器把该请求的网址连同 Cookie 一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。 注:Cookie 功能需要浏览器的支持,如果浏览器不支持 Cookie 或者 Cookie 禁用了,Cookie 功能就会失效。 Java 中把 Cookie 封装成了javax.servlet.http.Cookie类。 Cookie 类中的方法 方法 功能 public void setDomain(St...
JavaWeb 之 Jsp 指南
JavaWeb 之 Jsp 指南简介什么是 Java Server PagesJSP全称Java Server Pages,是一种动态网页开发技术。 它使用 JSP 标签在 HTML 网页中插入 Java 代码。标签通常以 <% 开头以 %> 结束。 JSP 是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。网页开发者们通过结合 HTML 代码、XHTML 代码、XML 元素以及嵌入 JSP 操作和命令来编写 JSP。 JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。 JSP 标签有多种功能,比如访问数据库、记录用户选择信息、访问 JavaBeans 组件等,还可以在不同的网页中传递控制信息和共享信息。 JSP 工作原理JSP 是一种 Servlet,但工作方式和 Servlet 有所差别。 Servlet 是先将源代码编译为 class 文件后部署到服务器下的,先编译后部署。 Jsp 是先将源代码部署到服务器再编译,先部署后编译。 Jsp 会在客户端第一次请求 Jsp 文件时被编译为 Http...
redis基础
初识RedisRedis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json。 认识NosqlNoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。 结构化和非结构化传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束。 而NoSql则对数据库格式没有严格约束,往往形式松散,自由。可以键值型,文档型,图格式。 关联和非关联传统数据库的表与表之间往往存在关联,例如外键。而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合: 123456789101112131415161718{ id: 1, name: "张三", orders: [ &...
sqlite
SQLite SQLite 是一个无服务器的、零配置的、事务性的的开源数据库引擎。 SQLite 简介SQLite 是一个C语言编写的轻量级、全功能、无服务器、零配置的的开源数据库引擎。 SQLite 的设计目标是嵌入式的数据库,很多嵌入式产品中都使用了它。SQLite 十分轻量,占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。SQLite 能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。 SQLite 大小只有 3M 左右,可以将整个 SQLite 嵌入到应用中,而不用采用传统的客户端/服务器(Client/Server)的架构。这样做的好处就是非常轻便,在许多智能设备和应用中都可以使用 SQLite,比如微信就采用了 SQLite 作为本地聊天记录的存储。 SQLite 语法和 mysql 差不多,不做详细记录,后面有遇到特殊的在做记录。 SQLite JAVA Client(1)...
Spring 集成 Mybatis
Spring 集成 MybatisMybatis 官网 是一款持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 快速入门要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。 如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: 12345<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency> 从 XML 中构建 SqlSessionFactor...
分布式面试总结
分布式面试总结分布式缓存Redis 有什么数据类型?分别用于什么场景 数据类型 可以存储的值 操作 STRING 字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作 LIST 列表 从两端压入或者弹出元素 读取单个或者多个元素 进行修剪,只保留一个范围内的元素 SET 无序集合 添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素 HASH 包含键值对的无序散列表 添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在 ZSET 有序集合 添加、获取、删除元素 根据分值范围或者成员来获取元素 计算一个键的排名 What Redis data structures look like Redis 的主从复制是如何实现的 从服务器连接主服务器,发送 SYNC 命令; 主服务器接收到 SYNC 命名后,开始执行 BGSAVE 命令生成 RDB 文件并使用缓冲区记录此后执行的所有写命令; 主服务器 BGSAVE 执行完后,向所有从服务器发送快照文件...
设计模式之单例模式
设计模式之单例模式意图单例模式(Singleton)是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 单例 (Singleton) 类声明了一个名为 getInstance 获取实例的静态方法来返回其所属类的一个相同实例。 单例的构造函数必须对客户端 (Client) 代码隐藏。 调用 getInstance 方法必须是获取单例对象的唯一方式。 所有单例的实现都包含以下两个相同的步骤: 将默认构造函数设为私有, 防止其他对象使用单例类的 new运算符。 新建一个静态构建方法作为构造函数。 该函数会 “偷偷” 调用私有构造函数来创建对象, 并将其保存在一个静态成员变量中。 此后所有对于该函数的调用都将返回这一缓存对象。 如果你的代码能够访问单例类, 那它就能调用单例类的静态方法。 无论何时调用该方法, 它总是会返回相同的对象。 单例模式的优点: ✔️️️ 你可以保证一个类只有一个实例。 ✔️️️ 你获得了一个指向该实例的全局访问节点。 ✔️️️ 仅在首次请求单例对象时对其进行初始化。 单例模式的缺点: ❌ 违反了单一职责原则。...










