自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小大虽差,各任其性,苟当其分,逍遥一也。

  • 博客(797)
  • 收藏
  • 关注

原创 如何从零手写实现数据库连接池 dbcp?

*** 池化的连接池/*** 是否繁忙* @return 状态/*** 设置状态* @param busy 状态/*** 获取真正的连接* @return 连接/*** 设置连接信息* @param connection 连接信息/*** 设置对应的数据源* @param dataSource 数据源/*** 获取对应的数据源信息* @return 数据源这里我们直接继承了 Connection 接口,实现时全部对 Connection 做一个代理。

2024-03-13 11:09:14 2347

原创 sensitive-word 敏感词开源工具使用入门

有时候我们希望将敏感词的加载设计成动态的,比如控台修改,然后可以实时生效。v0.0.13 支持了这种特性。简化伪代码如下,数据的源头为数据库。MyDdWordAllow 和 MyDdWordDeny 是基于数据库为源头的自定义实现类。@Autowired@Autowired/*** 初始化引导类* @return 初始化引导类*/@Bean// 各种其他配置.init();敏感词库的初始化较为耗时,建议程序启动时做一次 init 初始化。

2023-12-18 15:37:03 2710

原创 面试官:你们项目中是怎么做防重复提交的?

面试经历记得刚毕业的时候,有一次去参加面试。上来面试官问我:“你们项目中是怎么做防重复提交的?”一开始听到这个问题是蒙圈的,支支吾吾半天没回答出来。然后面试官直接来一道算法题,喜闻乐见地面试失败。多年过去,虽然很少接触到控台应用,但是近期对于防止重复提交却有了一点自己的心得。在这里分享给大家,希望你工作或者面试中遇到类似的问题时,对你有所帮助。本文将从以下几个方面展开:(1)重复提交产生的原因(2)什么是幂等性(3)针对重复提交,前后端的解决方案(4)如果实现一个防重复提交工具产生原

2020-08-05 22:09:23 5051

原创 java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架

产品需求产品经理需要导出一个页面的所有的信息到 EXCEL 文件。需求分析对于 excel 导出,是一个很常见的需求。最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件。客户体验 & 服务性能客户体验如果导出的文件比较大,比如几十万条数据,同步导出页面就会卡主,用户无法进行其他操作。服务性能导出的时候,任务比较耗时就会阻塞主线程。如果导出的服务...

2018-11-26 21:52:07 30085

原创 java retry(重试) spring retry, guava retrying 详解

系列说明java retry 的一步步实现机制。 java-retry 源码地址情景导入简单的需求产品经理:实现一个按条件,查询用户信息的服务。小明:好的。没问题。代码UserService.javapublic interface UserService { /** * 根据条件查询用户信息 * @par...

2018-08-08 18:01:54 17172 2

原创 Nginx R31 doc-09-Serving Static Content 静态内容

继续上面的示例,如果请求 URI 是 /images/some/path/,并且如果存在 /www/data/images/some/path/index.html,则 NGINX 将返回该文件。在这里,如果请求中的 URI 是 /path/,并且 /data/path/index.html 不存在但 /data/path/index.php 存在,则对 /path/index.php 的内部重定向被映射到第二个位置。如果存在,则 NGINX 进行内部重定向,如果不存在,则返回指定的状态码。

2024-05-23 00:33:31 251

原创 Nginx R31 doc-08-NGINX 和 NGINX Plus 作为 Web 服务器

如果有多个服务器匹配请求的 IP 地址和端口,NGINX Plus 将请求的 Host 标头字段与 server 块中的 server_name 指令进行比较。下面的示例 location 使用路径名参数,匹配以 /some/path/ 开头的请求 URI,例如 /some/path/document.html。例如,您可以定义三个 location 块来指示虚拟服务器将一些请求发送到一个代理服务器,将其他请求发送到不同的代理服务器,并通过从本地文件系统提供文件来为其余的请求提供服务。

2024-05-23 00:32:06 313

原创 Nginx-6-nginx 汇总入门介绍

nginx作为当今火爆的、高性能的http及反向代理服务,不管前端还是后端,都需要全面去了解,学习,实操。一句话:搞懂nginx如何使用以及工作逻辑对于程序员来说是必不可少的!我们看看本文的大纲 先了解一下本文都讲了哪些东西,大纲如下:nginx介绍nginx安装nginx目录一览nginx.conf文件解读location路由匹配规则反向代理负载均衡动静分离跨域缓存黑白名单nginx限流https配置压缩其他一些常用指令与说明重试策略最后总结。

2024-05-22 00:06:37 257

原创 Nginx R31 doc-07-内容缓存

但是,这样的缓存条目并没有完全从缓存中删除:它们仍然保存在磁盘上,直到它们由于不活动(由 proxy_cache_path 指令的 inactive 参数确定)或由缓存清除器(通过 proxy_cache_path 的 purger 参数启用)而被删除,或者客户端尝试访问它们。NGINX 可以删除缓存中过期的缓存文件。此外,如果请求匹配了 proxy_cache_bypass 指令定义的条件,则 NGINX Plus 会立即将请求传递到 backend2,而不会在缓存中查找相应的响应。

2024-05-22 00:05:45 332

原创 Nginx-05-nginx 反向代理是什么?windows 下如何配置使用 nginx

nginx 是一种高性能的反向代理服务器软件,它支持多种协议,包括 HTTP、HTTPS、SMTP、POP3 等,可以用于代理 Web 应用、电子邮件系统、FTP 服务器等各种网络服务。此外,反向代理还可以通过负载均衡来提高服务器的性能和可靠性,将请求分发到不同的后端服务器上,避免单个服务器负载过高而导致服务不可用。综上所述,反向代理是一个非常有用的服务器架构模式,可以提高服务器的性能、可用性和安全性,并为服务器的功能扩展提供了便利。缓存:反向代理可以缓存一些经常请求的资源,从而减少后端服务器的负载。

2024-05-21 00:30:04 1275

原创 Nginx-04-Docker Nginx

Nginx 的最大作用,就是搭建一个 Web Server。有了容器,只要一行命令,服务器就架设好了,完全不用配置。

2024-05-21 00:28:57 429

原创 Nginx R31 doc-03-HTTP Load Balancing HTTP 负载均衡

HTTP 负载均衡在 Web 或应用服务器组之间负载平衡 HTTP 流量,使用多种算法和高级功能,如慢启动和会话保持。概述跨多个应用程序实例进行负载平衡是一种常用的技术,用于优化资源利用率、最大化吞吐量、减少延迟,并确保容错配置。观看 NGINX Plus for Load Balancing and Scaling 网络研讨会,深入了解 NGINX 用户用于构建大规模、高可用性 Web 服务的技术。NGINX 和 NGINX Plus 可以在不同的部署场景中作为非常高效的 HTTP 负载均衡器使

2024-05-19 23:27:17 575

原创 Nginx R31 doc-02-nginx 基本功能

主进程的进程 ID 默认写入到 nginx.pid 文件中,该文件位于 /usr/local/nginx/logs 或 /var/run 目录中。为了更容易维护配置,我们建议将其拆分为一组特定功能的文件,存储在 /etc/nginx/conf.d 目录中,并在主 nginx.conf 文件中使用 include 指令来引用特定功能文件的内容。通常位于 /usr/local/nginx/conf、/etc/nginx 或 /usr/local/etc/nginx 其中之一。工作进程执行请求的实际处理。

2024-05-19 23:26:07 927

原创 Nginx-01-为什么使用 Nginx? nginx 的优缺点

选择 Nginx 作为负载均衡器有很多原因,主要包括其性能、灵活性和广泛的功能。

2024-05-18 10:55:55 834

原创 Nginx R31 doc 官方文档-01-nginx 如何安装

从包中安装 NGINX Open Source 比从源代码构建要简单快速得多,但从源代码构建使您能够编译非标准模块。预构建包适用于大多数流行的 Linux 发行版,包括 CentOS、Debian、Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES) 和 Ubuntu。安装 NGINX Open Source 可以选择预构建包或从源代码安装,在所有支持的 Linux 发行版上按步骤进行。我们建议在生产服务器上使用稳定版。

2024-05-18 10:52:22 581

原创 Nginx-6-nginx.conf文件 解读

以上就是nginx.conf文件的配置了,主要讲了一些指令的含义,当然实际的指令有很多,我在配置文件并没有全部写出来,准备放到后边章节详细阐述这些东西,比如:location匹配规则,反向代理,动静分离,负载均衡策略,重试策略,压缩,https,限流,缓存,跨域这些 我们都没细说,这些东西比较多比较细不可能把使用规则和细节都写到上边的配置文件中,所以我们下边一一解释说明关于这些东西的配置和使用方式。http块: 可以嵌套多个server,配置代理,缓存,日志格式定义等绝大多数功能和第三方模块的配置。

2024-05-16 23:33:30 775

原创 Nginx-05-nginx 反向代理是什么?windows 下如何配置使用 nginx

此外,反向代理还可以提供一些高级的安全功能,例如访问控制、内容过滤、SSL 加密等,进一步增强服务器的安全性。SSL 终止:反向代理可以终止 SSL 连接,从而减少后端服务器的负载,并提高整个服务器集群的性能。此外,反向代理还可以通过负载均衡来提高服务器的性能和可靠性,将请求分发到不同的后端服务器上,避免单个服务器负载过高而导致服务不可用。综上所述,反向代理是一个非常有用的服务器架构模式,可以提高服务器的性能、可用性和安全性,并为服务器的功能扩展提供了便利。例如,可以缓存静态文件、动态页面的静态部分等。

2024-05-16 23:29:01 750

原创 Nginx-04-Docker Nginx

Nginx 的最大作用,就是搭建一个 Web Server。有了容器,只要一行命令,服务器就架设好了,完全不用配置。

2024-05-15 21:11:15 772

原创 Nginx-03-Nginx 项目架构

驱动的Web服务器。然而,以前以LAMP(Linux,Apache,MySQL,PHP,Python或Perl)为基础的网站形式,现在可能不仅仅是一个基于LEMP的(E'代表'引擎x')但是,越来越多的做法是将Web服务器推向基础设施的边缘,并以不同的方式围绕它集成相同或经过改进的应用程序和数据库工具集。nginx非常适合这一点,因为它提供了方便卸载并发,延迟处理,SSL(安全套接字层),静态内容,压缩和缓存,连接和请求限制,甚至来自应用程序的HTTP媒体流所需的关键功能层到更有效的边缘Web服务器层。

2024-05-15 21:06:40 257

原创 Nginx-02-Nginx Ubuntu 安装 + windows10 + WSL ubuntu 安装 nginx 实战笔记

现在,Nginx已经安装并运行在你的Ubuntu系统上。你可以通过在浏览器中输入服务器的IP地址或域名来验证是否成功安装。在Ubuntu上安装Nginx通常是一个相对简单的过程。如果一切顺利,你应该能够看到Nginx的欢迎页面。浏览器的话,可以看到对应的欢迎页面。

2024-05-14 08:57:20 261

原创 Nginx-01-为什么使用 Nginx? nginx 的优缺点

选择 Nginx 作为负载均衡器有很多原因,主要包括其性能、灵活性和广泛的功能。

2024-05-14 08:54:48 640

原创 Nginx-01-Nginx 是什么? 能做什么?

NGINX随之发展,现在支持现代Web的所有组件,包括WebSocket,HTTP / 2和多种视频格式的流媒体(HDS,HLS,RTMP等)。随着Web应用程序的开发和交付不断发展,NGINX Plus不断添加功能以实现完美的应用程序交付,从最近宣布的使用针对NGINX定制的JavaScript实现的配置支持到支持动态模块。使用NGINX,您可以使用与负载均衡器,反向代理,内容缓存和Web服务器相同的工具,从而最大限度地减少组织需要维护的工具和配置量。无缓存的反向代理加速,简单的负载均衡和容错.。

2024-05-13 22:59:10 2571 1

原创 Nginx-01-聊一聊 nginx

Nginx 是一个高性能的 HTTP 服务器和反向代理,由俄罗斯的程序员伊戈尔·赛索耶夫(Igor Sysoev)开发。Nginx 的设计目标是提供高并发、高可用性、低资源消耗的网络服务,它以其稳定性、丰富的功能和低内存占用而闻名。高性能:Nginx 能够处理大量的并发连接,这得益于它的事件驱动和异步架构。低资源消耗:Nginx 以其轻量级和低内存使用而著称,这使得它非常适合在资源受限的环境中运行。反向代理。

2024-05-13 22:57:58 649

原创 从零手写实现 tomcat-12-listener 监听器

还记得我们最初 web.xml 中的 listener 吗?-- Listener 配置 --><listener><listener><listener><listener><listener><listener>listener 作用是什么?我们又该如何解析实现呢?这里就不定义了,直接复用 servlet 的标准 api。

2024-05-12 11:12:55 408

原创 从零手写实现 tomcat-11-filter 过滤器

还记得我们最初 web.xml 中的 filter 吗?<web-app>-- Filter 配置 --><filter></filter></web-app>他的作用是什么?我们又该如何解析实现呢?这里就不定义了,直接复用 servlet 的标准 api。

2024-05-12 11:11:11 286

原创 从零手写实现 tomcat-10-static resource 静态资源文件

在Tomcat中,静态文件通常指的是那些不需要服务器动态处理就可以直接返回给客户端的文件,比如HTML页面、CSS样式表、JavaScript脚本、图片等。这些文件的内容是固定的,不会根据每个请求而改变。

2024-05-11 08:53:13 737

原创 从零手写实现 tomcat-09-servlet 处理类

还记得我们最初 web.xml 中的 servlet 吗?<web-app>-- servlet 配置 --><servlet></servlet></web-app>servlet 是什么?我们又该如何解析实现呢?这里就不定义了,直接复用 servlet 的标准 api。

2024-05-11 08:49:30 354

原创 从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?

开始之前,我们来一起思考下面 3 个问题:我们在 springboot 中可以像 main 一样直接启动,如何实现的?那么Spring是怎么和Tomcat容器进行集成?Spring和Tomcat容器的生命周期是如何同步?

2024-05-10 08:55:34 1030

原创 从零手写实现 tomcat-07-war 如何解析处理三方的 war 包?

到目前为止,我们处理的都是自己的 servlet 等。但是 tomcat 这种做一个 web 容器,坑定要能解析处理其他的 war 包。这个要如何实现呢?

2024-05-10 08:54:52 552 1

原创 从零手写实现 tomcat-06-servlet bio/thread/nio/netty 池化处理

其实 netty 就是针对 nio api 设计的过于复杂的问题,做了大量的改进和优化。mini-cat 是简易版本的 tomcat 实现。平时使用 tomcat 等 web 服务器不可谓不多,但是一直一知半解。其实这个还是不够的,测试发现这里的 socket 其实还是阻塞的。于是想着自己实现一个简单版本,学习一下 tomcat 的精髓。现在的实现看起来一切都好,但是有一个问题,会导致阻塞。不过测试发现,依然会阻塞在 sleep 的地方。看的出来,我们废了很大的精力才实现了 nio。

2024-05-09 08:52:22 439

原创 从零手写实现 tomcat-05-servlet 处理支持

根据请求方式分别处理/*** servlet 管理*//*** 注册 servlet*//*** 获取 servlet*/

2024-05-09 08:50:55 375

原创 从零手写实现 tomcat-04-请求和响应的抽象

mini-cat 是简易版本的 tomcat 实现。resources 下面的文件,mvn clean install 之后,默认在。我们针对入参 request 和 出参 response 做一个简单的封装。于是想着自己实现一个简单版本,学习一下 tomcat 的精髓。我们根据 url 解析本地的 html 等静态资源信息。1)获取当前 class 文件对应的资源文件根路径。2)然后拼接完整文件路径,读取文件内容。这里是针对 http 请求的解析处理。直接改动为对应的出入参对象。

2024-05-08 08:55:45 416

原创 从零手写实现 tomcat-03-基本的 socket 实现

浏览器通过这个“管道”发送请求,Tomcat接收请求后,处理它,并把响应数据通过同一个“管道”发送回浏览器。简而言之,Java套接字是Tomcat实现网络通信的核心,它允许Tomcat接收客户端的请求,并发送响应,从而实现Web服务的功能。:由于可能有成千上万的客户端同时请求,Tomcat会为每个连接创建一个新的线程,这样每个请求就可以并行处理,而不会互相干扰。要解决这个问题,可以将服务器的监听逻辑放在一个单独的线程中执行,这样 start() 方法就可以立即返回,不会阻塞主线程。

2024-05-08 08:52:25 1953

原创 web server apache tomcat11-34-Ahead of Time compilation support

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

2024-05-07 08:59:53 1049

原创 web server apache tomcat11-33-CDI

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

2024-05-07 08:58:19 791

原创 从零手写实现 apache Tomcat-02-web.xml 入门详细介绍

web-app>:这是整个web.xml文件的根标签,所有的配置都在这个标签里面。<servlet>:这个标签用来定义一个Servlet。Servlet是Java Web应用中用来处理HTTP请求的程序。在这段代码里,我们定义了一个名为my的Servlet,它的完整类名是。:这是Servlet的名称,用来在其他地方引用这个Servlet。:这是Servlet的完整类名,服务器会用这个类名来创建Servlet的实例。:这个标签用来定义Servlet和URL之间的映射关系。

2024-05-06 09:28:10 1479 2

原创 web server apache tomcat11-32-rewrite

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。重写阀门实现了 URL 重写功能,与 Apache HTTP Server 中的 mod_rewrite 非常相似。

2024-05-06 08:49:13 976

原创 web server apache tomcat11-31-websocket

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。Tomcat 支持 RFC 6455 所定义的 WebSocket。

2024-05-06 08:48:03 845

原创 web server apache tomcat11-30-The Tomcat JDBC Connection Pool

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。JDBC连接池org.apache.tomcat.jdbc.pool是Apache Commons DBCP连接池的替代或替代方案。那么为什么我们需要一个新的连接池呢?Commons DBCP 1.x是单线程的。为了保证线程安全,Commons在对象分配和对象返回期间短暂锁定整个池。请注意,这不适用于Commons DBCP 2.x。Commons DBCP 1.x可能会很慢。

2024-04-30 09:05:33 808

原创 web server apache tomcat11-29-Windows Authentication

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。集成的Windows身份验证通常在内部网络环境中使用,因为它要求执行身份验证的服务器和被验证的用户属于同一个域。为了让用户自动认证,用户使用的客户端机器也必须属于该域。有几种选项可以在Apache Tomcat中实现集成的Windows身份验证。内置的Tomcat支持。使用第三方库,如Waffle。使用支持Windows身份验证的反向代理执行身份验证步骤,如IIS或httpd。

2024-04-30 09:00:27 1307 1

空空如也

空空如也

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

TA关注的人

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