收集几十位大厂面试者的面试题及见解-Netty模块

在 Netty 的事件循环中执行数据库操作时,需要注意线程安全问题 Netty是一个高性能的Java网络框架,常用于构建高并发的服务器应用。NoSQL则是指非关系型数据库,适用于处理大规模数据和高扩展性需求。接下来要思考用户可能的实际需求,比如他们可能在开发分布式系统,需要处理高并发请求并存储海量数据。这时候Netty负责网络通信,NoSQL负责数据存储,两者结合能提升整体性能。要注意用户可能对两者的整合细节感兴趣,比如Netty如何处理异步IO,NoSQL如何支持水平扩展,以及实际应用中的案例,比如物联网或实时分析系统。 阅读详情

1 简述BIO、NIO和AIO。

BIO:客户端并发数和后端的线程数是一比一,线程的创建和销毁很消耗系统资源。并发量大,服务器性能下降,会出现栈和堆溢出错误。当前线程创建连接后,如果没有操作进入阻塞操作,浪费服务器资源。
NIO:通过多路复用器一个线程处理多个通道,避免多线程之间的上下文切换导致系统开销过大。并且通道中有了事件,才能进行读写操作。减少系统开销。
AIO:异步IO,用户线程通过系统调用,告知内核启动某个IO操作(数据准备、数据复制),完成后通知用户程序,执行后续的操作。但是依赖操作系统底层,而且linux系统支持不完善。

2 为什么使用Netty进行项目开发?

  1. Netty是基于NIO实现的,实现了阻塞和非阻塞Socket。而且对各种协议API进行统一封装,简化开发。
  2. Netty只依赖JDK底层api,不需要引入额外依赖。
  3. 社区活跃,发现bug可以快速修复。
  4. 高度可定制线程模型,单线程、一个或多个线程池。
  5. 网络通信更加高性能、低延迟、尽可能的减少不必要的内存拷贝。
  6. NIO可能会导致Selector空轮询问题,官网JDK1.6修复该问题,只是概率低点。

3 什么是Reactor线程模型?

不是Java和Netty专有的,是一种并发编程模型,是一种思想。
Reactor有三种角色,Reactor负责监听和分配事件。Acceptor处理客户端新连接,并分派请求到处理链中。Handler将自身和事件绑定,执行读写操作。
Reactor线程模型有三种,单线程、多线程、主从多线程。

4 介绍下单线程、多线程、主从多线程模型。

单线程:
Reactor充当多路复⽤器⻆⾊,监听多路连接的请求,由单线程完成 。Reactor收到客户端发来的请求时,如果是新建连接通过Acceptor完成,其他的请求由Handler完成(读写操作)。
试用一些简单业务逻辑和并发量不高的地方。没有线程之间切换和线程之间通信问题。但是Reactor负担过重,导致系统性能下降,如果当前线程进入死循环,整个系统不可用。
多线程:
和单线程之间区别是,Handler只负责响应用户请求,真正读写操作在其他线程完成。降低Reactor的性能开销,充分利⽤CPU资源,从⽽更专注的做事件分发⼯作。提升整 个应⽤的吞吐。
多线程数据共享和访问⽐较复杂。如果⼦线程完成业务处理后,把结果传递给主线程Reactor进⾏ 发送,就会涉及共享数据的互斥和保护机制。 Reactor承担所有事件的监听和响应,只在主线程中运⾏,可能会存在性能问题。例如并发百万客户端连接,或者服务端需要对客户端握⼿进⾏安全认证,但是认证本身⾮常损耗性能。
主从多线程模型:
MainReactor负责监听server socket,处理⽹络IO连接建⽴,将建⽴的socketChannel指 定注册给SubReactor。
SubReactor主要完成和建⽴起来的socket的数据交互和事件业务处理操作。
响应快,不必为单个同步事件所阻塞,虽然Reactor本身依然是同步的。 可扩展性强,可以⽅便地通过增加SubReactor实例个数来充分利⽤CPU资源。 可复⽤性⾼,Reactor模型本身与具体事件处理逻辑⽆关,具有很⾼的复⽤性。

总结:在netty中多Reactor三种模型都有很好的支持,一般情况下,服务端采用主从架构模型。

5 IO模型:阻塞IO模型、非阻塞IO模型、select、epoll线程模型。

阻塞IO模型
创建socket,fd绑定监听,调用系统的accept()函数等待系统内核响应,如果内核没有接受连接,一直阻塞中,接受客户端数据函数也是阻塞中,发送信息也是等待客户端信息发送。
非阻塞IO模型
调用系统的连接函数、接受客户端数据函数、发送数据函数都变成异步了,不用等待内核响应,直接执行下一步。应用程序要得到响应不断的轮询调用。
select、epoll线程模型
redis模块中已总结过,https://www.jianshu.com/p/fe6d9f7d9e9b。

6 Netty中的核心组件

ChannerHandler、Channel、EventLoop、EventLoopGroup、ChannelPipeline、Bootstrap、Future
Channel:每个客户端连接都会创建一个Channel,它负责基本的IO操作。
EventLoop:用于监控和协调事件,每个EventLoop会占用一个Thread,当前线程处理发生在EventLoop上所有IO操作。
EventLoopGroup:用于生成EventLoop。服务端需要两个,客户端需要一个。因为服务端需要建立连接和业务处理。
ChannelHandler:对于数据的⼊站和出站的业务逻辑的编写都是在ChannelHandler中完成的。
ChannelPipeline:channel进行数据传递时候,需要进行编码和节码等一系列操作操作。ChannelPipeline是对ChannelHandler管理。
Bootstrap:将各个组件串起来,并绑定端口,启动服务。
Future:了⼀种在操作完成时通知应⽤程序。

7 Netty零拷贝解释下?

Bytebuf 使⽤的是⽤池化的Direct Buffer类型使⽤的堆外内存,不需要进⾏字节缓冲区的⼆次拷 ⻉,如果使⽤堆内存,JVM会先拷⻉到堆内,再写⼊Socket,就多了⼀次拷⻉。 CompositeByteBuf将多个ByteBuf封装成⼀个ByteBuf,在添加ByteBuf时不需要进程拷⻉。 Netty的⽂件传输类DefaultFileRegion的transferTo⽅法将⽂件发送到⽬标channel中,不需要进 ⾏循环拷⻉,提升了性能。

8 ByteBuf 释放问题

手动释放:ReferenceCountUtil.release(byteBuf); 进⾏释放。

自动释放:
HeadHandler出站自动释放。
⼊站的TailHandler,TailHandler放在最后面,每个处理器将消息下穿。
继承SimpleChannelInboundHandler自动释放。

9 知道哪些编解码器?

在netty开发中定义编解码器需要实现ByteToMessageDecoder、MessageToByteEncoder。

对象编解码器:JDk自带的编解码器、Hessian编解码器。
基于Redis协议的编解码器。字符串编解码器。

10 Netty 拆包粘包的实质?TCP通信的粘包和拆包怎么处理?

在Netty的应用层,按照 ByteBuf 为单位来发送/读取数据,但是到了底层操作系统仍然是按照字节流发送数据。因此,从底层到应用层,需要进行二次拼装。操作系统底层,是按照字节流的方式读入,到了 Netty 应用层面,需要二次拼装成 ByteBuf。在Netty 层面,拼装成ByteBuf时,就是对底层TCP缓冲的读取,这里就有问题了。上层应用层每次读取底层缓冲的数据容量是有限制的,当TCP底层缓冲数据包比较大时,将被分成多次读取,造成断包,在应用层来说,就是半包。其次,如果上层应用层一次读到多个底层缓冲数据包,就是粘包。

在发送消息包时候,在头部加上两个字节,存储发送数据字节长度。在bytebuf获取数据时候,先读取两个字节,即字节长度len1,然后从bytebuf中读取len1长度的字节。

11 Netty服务启动流程?

创建服务端channel,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvQDtDzv-1632808167443)(//upload-images.jianshu.io/upload_images/25117622-a51c283e071494c1.png?imageMogr2/auto-orient/strip|imageView2/2/w/594/format/webp)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A40e2mMS-1632808167444)(//upload-images.jianshu.io/upload_images/25117622-9a9df6b2f0841186.png?imageMogr2/auto-orient/strip|imageView2/2/w/615/format/webp)]

初始化服务端channel,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2OJW9FXR-1632808167445)(//upload-images.jianshu.io/upload_images/25117622-3308695696b0ba9b?imageMogr2/auto-orient/strip|imageView2/2/w/636/format/webp)]

注册selector,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLyQatUB-1632808167446)(//upload-images.jianshu.io/upload_images/25117622-becb89036a91507c?imageMogr2/auto-orient/strip|imageView2/2/w/667/format/webp)]

绑定端口。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RA8dAOfJ-1632808167447)(//upload-images.jianshu.io/upload_images/25117622-23f47ab838bf60c7?imageMogr2/auto-orient/strip|imageView2/2/w/662/format/webp)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cLClczut-1632808167447)(//upload-images.jianshu.io/upload_images/25117622-8c72cad68c1b1813?imageMogr2/auto-orient/strip|imageView2/2/w/639/format/webp)]

12 连接过程刨析?

新连接接入:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-elULhcJE-1632808167448)(//upload-images.jianshu.io/upload_images/25117622-93502e5f2ab6581d.png?imageMogr2/auto-orient/strip|imageView2/2/w/622/format/webp)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2994vb5A-1632808167449)(//upload-images.jianshu.io/upload_images/25117622-153092fe8598e59b.png?imageMogr2/auto-orient/strip|imageView2/2/w/625/format/webp)]

注册读事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rAOxR1LV-1632808167451)(//upload-images.jianshu.io/upload_images/25117622-d56e425e23ad3725.png?imageMogr2/auto-orient/strip|imageView2/2/w/623/format/webp)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJFg8Jvz-1632808167451)(//upload-images.jianshu.io/upload_images/25117622-d192f7a306ca2a91?imageMogr2/auto-orient/strip|imageView2/2/w/604/format/webp)]

13 使用Netty如何优化?

2. 使⽤EventLoop的任务调度
直接放⼊channel所对应的EventLoop的执⾏队列,⽽直接使⽤channel.writeAndFlush(data),会导致线程的切换。
3. 减少ChannelPipline的调⽤长度
ctx.channel().writeAndFlush(msg); ,所有的handler都会执行一遍。ctx.writeAndFlush(msg),从当前的handler一直执行到pipline尾部。
4. 减少ChannelHandler的创建
如果channelhandler是⽆状态的(即不需要保存任何状态参数),那么使⽤Sharable注解,并在 bootstrap时只创建⼀个实例,减少GC。否则每次连接都会new出handler对象。
5. ⼀些配置参数的设置
bossGroup只是需要配置一个,因为ServerSocketChannel只会注册到一个eventLoop上,⽽这个eventLoop只会有⼀个线程在运⾏。workGroup集器核数两倍,即发挥虚拟机内核优势,又防止线程上下文切换开销。
响应时间有⾼要求的场景,禁⽤nagle算法,不等待,⽴即发送。

14 我说Netty不是真正的“异步IO”,你认同吗?

认同。因为使用的IO模型是采用epoll,应用端不断循环调用epoll对象的消息队列,当消息队列中有事件消息,然后应用端对事件消息一个个处理。所以是同步操作。但是由于也是一个线程处理多个客户端的读写操作,类似异步感觉。

15 Netty的IO模型,Reactor模式,Handler线程一定要新起一个线程来进行数据库操作吗?

不一定,因为handler进行业务操作是在workeGroup线程池操作,这个线程池线程数是内核的两倍。所以Handler进行业务操作,如果线程数没有达到核心线程数,则会创建一个新的线程执行。如果达到了核心线程数,则会使用之前的线程执行。

16 Netty 中责任链?

就是ChannelPipeline,用来将每一个handler串成链表,然后进行管理。保证了进行消息传递时候,执行handler顺序。

17 长连接和短链接描述下。

TCP在进行读写前,需要server和client建立连接。建立连接的过程就是三次握手四次挥手。消耗网络资源和有事件延迟。
短链接:就是客户端和服务端读写完毕后,释放连接。再次读取,需要从新建立连接。
长连接:每次读写之后,连接不断开。后续读写依旧使用这个连接。

18 Netty的长连接/心跳机制有了解?

在TCP保持长连接时候,由于网络原理或者其他异常。client和server没有交互,无法发现对方掉线。引入心跳机制。
心跳机制原理,在client和server在一定时间内没有数据交互,服务端或者客户端发送一个特殊数据包给对象,对方立刻回应,代表连接中。
TCP实际上自带长连接选项,本身就有心跳包机制。但是TCP协议层面长连接灵活性不够,所以一般是在应用层自定义心跳机制,在netty中实现,则是通过IdleStateHandler核心类实现。

19 一个请求进入netty具体用了哪些类?

如果是一个连接请求,首先是被EventLoopGroup产生的EventLoop监控到是连接事件,然后由Acceptor进行连接创建。
如果是一个读/写请求,被工作的EventLoopGroup产生EventLoop监控到,然后进入Channel,进行执行链ChannelPipeline,执行每一个ChannelHandler。

LabVIEW与三菱PLC通讯实战:ActiveX控件在FX5U上的应用技巧 本文深入探讨了如何利用三菱MX Component中的ActiveX控件,在LabVIEW中实现与FX5U系列PLC的高效、稳定通讯。文章从环境配置、ActiveX控件生命周期管理、数据读写性能优化及容错机制等实战角度,分享了构建工业级健壮通讯程序的核心技巧与架构设计思路。 阅读详情

相关推荐

Emuelec系统安装全流程:超详细版指南(从零开始)

手把手带你完成emuelec系统的完整安装,从基础准备到系统配置一步不落,适合新手入门。深入解析emuelec在各类设备上的部署技巧,让复古游戏体验更流畅。

weixin_42594419的博客 1972

基于netty进行对象传输(操作数据库)

基于netty进行对象传输 编写了一个使用netty搭建的C/S项目,该项目用于远程访问数据库,实现客户端发送请求,服务端接收请求进行相应的数据库操作,返回数据给客户端。 项目结构 客户端代码 package com.syx.client; import com.syx.client.handler.ClientHandler; import com.syx.entity.SendMsg; import com.syx.entity.User; import io.netty.bootstrap.Boo

weixin_42304484的博客 1464

SAP Parallel Accounting(平行分类账业务)配置及操作手册【适用于多国家会计准则】

在SAP系统中,分类账(Ledger)是用于会计核算的核心概念,它允许企业根据不同的会计原则和货币进行财务记录。定义分类账是配置平行账(Parallel Accounting)的第一步。分类账的创建:通过事务代码OX18可以创建新的分类账。通常,一个SAP系统会有一个主分类账(如0L),它代表法定会计和实时传输至管理会计(CO)的账本。分类账属性:在创建分类账时,需要定义其属性,如会计年度变式、货币、会计原则等。这些属性将决定分类账的核算规则和适用性。

数字化2025 4618

Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别

一个帖子的整理 一个帖子的整理: Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别 如果你不带参数的实例化:Handler handler = new Handler();那么这个会默认用当前线程的looper 一般而言,如果你的Handler是要来刷新操作UI

thanklife的专栏 5万+

AMBA VIP基础使用方式(AXI)

AXI环境配置 1)基础配置 作为master或者slave使用时,对应的is_active = 1 只作为i监测(monitor)使用时,对应slave_cfg的is_active = 0(对应端口连接也有所区别) class smu_axi_cfg extends svt_axi_system_configuration; `uvm_object_utils(smu_aix_cfg) function new(string name="smu_axi_cfg); super.new(n..

qq_37573794的博客 7984

电源完整性分析:PDN阻抗与去耦电容设计——目标阻抗计算与电容选型深度实战

摘要:随着嵌入式处理器主频突破 GHz、多核架构普及,电源完整性(Power Integrity, PI)已成为高速 PCB 设计中不可忽视的关键环节。本文从 PDN(电源分配网络)阻抗模型出发,系统讲解目标阻抗计算方法、去耦电容选型策略、反谐振抑制技术,并结合 STM32F4 核心板的完整设计实例,提供一套可落地的电源完整性工程实践方案。电源完整性设计是一项系统工程,需要从目标阻抗计算电容选型反谐振抑制PCB 布局目标阻抗是设计的起点,由电源电压、纹波要求和瞬态电流决定去耦电容。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

想进安全大厂么!快来看面试题及经验

最近有不少同学在后台留言,希望发一些安全岗位面试题、面试经验。小编今天把以前收集的部分安全厂商面试题和经验分享给大家。由于文件较多,请在本号后台(网络安全研究所)回复消息“面试”,领取...

网络安全 889

使用pyqt5实现可勾选的测试用例界面

使用pyqt5实现可勾选的测试用例界面

天赐好车的博客 629

网络安全面试高频题:DDOS+Linux+TCP+OSPF已练完(建议收藏)

2021都说工作不好找,也是对网络安全的要求变高。前段时间自己有整理了一些网络安全面试常问的高频考点问题做成一份PDF文档(1000道高频题),同时也整理一些图文解析及笔记,今天在这免费分享给大家,希望大家在下一次面试做好复习,长期的积累和短期的突击让自己能找到一个满意的工作! 内容一览 渗透测试初级面试题 小伙伴可以帮忙转发+关注,后台私信【面试】二字即可获取领取方式! 各大厂、银行面试题 这份资料里...

MachineGunJoe666 620

Imagenet数据集1000类别中英文

英文 {0: 'tench, Tinca tinca', 1: 'goldfish, Carassius auratus', 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias', 3: 'tiger shark, Galeocerdo cuvieri', 4: 'hammerhead, hammerhead shark', 5: 'electric ray, cram.

识物专栏 1800

Python全栈项目--手机语音远程控制智能家居系统(含嵌入式控制)

摘要:本项目实现了一个基于Python全栈的智能家居语音控制系统,支持手机端语音指令控制家居设备。系统采用FastAPI后端+Vue3前端的架构,集成Web Speech API实现语音识别,通过嵌入式设备(如ESP32)执行硬件控制。功能包括用户认证、设备管理、场景联动、指令解析和日志记录,支持HTTP轮询和直推两种命令下发模式。项目涵盖物联网全链路开发,适用于课程设计或毕业设计原型开发。

exlink2012的专栏 880

大厂面试(安全岗)

这些是今年3-9月份各个大厂问我的一些问题,这里给出了我的一些解决方案,包括阿里,腾讯,字节,美团问道的一些问题,当然有一些问题我没有给出答案(涉及到自己的一些技巧),也有一些常规问题没有罗列,比如自我介绍,项目经验,还有根据你的简历问的东西我就没有罗列出来,以及一些非常简单的问题我也没有罗列出来,比如sqlmap --os-shell原理是啥,ok 1.shiro反序列化 shiro550(命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值)

weixin_43570648的博客 553

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2176

「秘籍」网络安全求职面试宝典,轻松搞定面试官!拿下大厂offer

又到了一年求职季, 有粉丝找小编咨询 小编收集了些面试相关应对技巧分享给大家 面试好比就像是场约会 你是不是常常担心自己没有表现好 又担心对方是个“渣男” 有时候吧 你看上了对方 对方看不上你 还有的时候 你们互相看不上眼...... HR的那些面试套路 仔细阅读 把握机会 赢得Offer 常见面试问题回答技巧 1、 请你做一下自我介绍? 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希...

MachineGunJoe666 988

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python HTTPS如何同时信任两套CA:默认信任库与追加加载的区别

Python接入私有CA时,create_default_context(cafile=...)并不等于在默认信任库上追加。用两套临时CA和回环HTTPS正反例,区分默认加载、显式选择、追加信任与名称及业务验收,避免用关闭证书验证掩盖配置问题。

谁呀!的博客 524

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HTTPS 证书到期,要提前多久处理

证书续签的核心逻辑,不是看证书签发有多快,而是给验证、审核、多节点部署、故障排查留出容错时间。个人站点、DV 证书,底线是提前 30 天;企业商用 OV 证书,尽量提前两个月安排。有条件优先开启自动续签,是低成本、稳定规避证书过期告警的办法。

zxanz1的博客 206

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

成为全栈·基础补充·域名、DNS 与 HTTPS 证书

输入网址后,浏览器需要解析域名、连接目标服务、验证 TLS 证书,再发送 HTTP 请求。本文解释 A/AAAA/CNAME/TXT/MX 记录、DNS 缓存和 TTL,说明证书的域名匹配、有效期与续期边界,并把 DNS、HTTPS 和反向代理放在同一条部署链路中。最后给出逐层排查清单,帮助区分解析、连接、证书和应用路由故障。

FungLeo's Blog 531

HTTPS API接口安全

记录一次 FastAPI 和 Uvicorn 双向 TLS 证书实验,以及身份验证与业务授权的边界。

ailx10 740

免费公共子域名与全套免费 HTTPS 科普:从 sslip.io 说起

就是用来绕开这些步骤的。别人已经有了一个域名,把它的子域名免费开放给大家用,配合自动 DNS 解析和免费证书,几分钟就能得到一个带锁头的 HTTPS 地址。

weixin_52236586的博客 274

Docker部署FreshRSS:配置HTTPS、自动刷新与数据备份

对于希望自己管理订阅数据的人来说,可以把它部署在 Linux 主机上,通过浏览器访问。准备长期使用,还需要考虑几个问题:如何通过 HTTPS 访问、订阅是否会自动刷新、重建容器后数据是否保留,以及怎样备份。本文使用 Docker Compose 部署 FreshRSS,选择 SQLite 保存数据,由 Caddy 提供 HTTPS,并配置定时刷新。导出 OPML 适合保存订阅清单,但不能替代完整备份。关注的网站越来越多,获取更新往往变成了一项重复劳动:打开网站、查看有没有新文章,再把感兴趣的内容保存下来。

tedcloud123的博客 244

Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战

grep/sed/awk 三剑客完整选项表、正则元字符、sed 一行命令(替换/删除/追加)、awk 字段与模式动作实战,文本处理随查随用的速查手册。

2502_91473995的博客 441

宝塔在nginx里配置https服务,以及防止漏洞扫描

【代码】宝塔在nginx里配置https服务。

qq_22905801的博客 293

Ubuntu学习笔记-配置Gitea通过https访问

本文记录在 Ubuntu(树莓派 aarch64)环境下为 Gitea 1.26.4 配置 HTTPS 访问的完整过程。先说明 HTTP 与 HTTPS 的差异及自签名证书的适用场景,再使用 OpenSSL 手动生成带 SAN 的本地自签名证书,依次完成创建证书目录、编写 openssl.cnf、生成 RSA 私钥与 CSR、自签名签发证书、校验证书与密钥匹配、设置文件权限等步骤;随后修改 Gitea 的 app.ini 将 ROOT_URL 切换为 https,并调整 Nginx 反向代理引用证书、开启

向往的是:佛祖堂前的鱼,静静听禅。 196

javaEE(7)HTTP与HTTPS

HTTP是应用层协议,基于TCP(或UDP)传输,通过请求/响应报文交互。其核心包括URL定位资源、GET/POST等方法、状态码反馈结果及无状态特性。为解决明文传输的安全问题,引入HTTPS,采用混合加密与CA数字证书机制,实现身份认证、防窃听与篡改。尽管HTTPS增加握手开销,但保障了通信安全,是现代Web的必备标准。

2502_93175209的博客 2527

HTTPS 与域名部署:证书、重定向和代理请求头

以一个 Nginx 站点和 ACME 自动签发证书为例,完成域名解析检查、HTTP-01 验证、TLS 配置、重定向和续期演练。再通过常见故障现象区分 DNS、证书、TLS 握手和反向代理头问题,避免证书过期、跳转循环或错误信任客户端转发头。

m0_62221377的博客 438

深入解析 HTTP 与 HTTPS:从网络基础到安全加密

本文系统解析HTTP与HTTPS的核心原理:HTTP作为应用层协议,基于请求-响应模型传输数据,状态码如404表示资源未找到;而HTTPS通过TLS/SSL在HTTP基础上加入混合加密(非对称加密交换密钥,对称加密传输数据)与数字证书机制,防范中间人攻击,保障数据机密性与完整性。理解二者区别,是掌握Web安全与开发调试的关键。

h_Maennn的博客 429
上一篇: 第一个Netty服务如何写?Netty组件是什么?ByteBuf是什么?
下一篇: 收集几十位大厂面试者的面试题及见解-Redis模块
AndroidYingZi
博客等级 码龄6年 6粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值