METHODS

C语言实现HTTP/HTTPS通信:从Socket编程到OpenSSL集成 网络通信是现代软件开发的基石,其底层依赖于TCP/IP协议栈。Socket编程作为操作系统提供的网络编程接口,允许应用程序直接操作传输层,建立可靠的字节流连接。在此基础上,应用层协议如HTTP定义了客户端与服务器之间交换数据的格式,而HTTPS则通过引入TLS/SSL安全层,在TCP连接之上进行加密握手与数据传输,保障了通信的机密性与完整性。理解这些底层原理对于开发高性能网络服务、嵌入式系统或进行深度网络调试具有重要价值。本文聚焦于使用C语言手动实现HTTP和HTTPS通信,通过解析协议报文、处理TCP连接 阅读详情

 方法在分门别类的放在不同类中,类再放置于包中,这样就方便我们去阅读代码。当然方法还有一个重要的用途就是解决了代码的重用问题。

分割方法时,基本原则就是应该放在一起的放在一起,应该分割的片段分割开。呵呵,是不是觉得很废话呢?不过事实确实如此。Kent给出了他认为划分方法时需要考虑的几个因素:大小、意图和方法命名。代码分了太多很小的方法容易导致意图表达不明确,但太大的话容易导致代码重复,缺失了灵活性。在《对象健身操》一文中,作者提出了一个比较极端的要求就是一个方法不能超过5行,大家可以根据自己实际情况来判别自己的方法大小,但是我觉得如果不是特别需要,不要超过一屏。最后要说的是一定要有一个好的名字,多翻翻字典什么也是有必要的,这个无论是Kent、Martin还是Uncle Bob都是很认可的,并都在他们的书中做出了要求。

组合方法(Composed Method)

通过对其他方法的调用来组合出新的方法。被调用的方法大致属于相同的抽象层次。小的方法体读起来更轻松一些。

组合方法时应当根据事实而非推测。先让代码工作,然后再决定该怎么安排它的结构。

揭示意图的名称(Intension-Revealing Method)

在名称上反映方法打算做什么事。如果一个方面不能起一个非常恰当的名字,那么有可能你的方法不满足SRP,这个要注意。

方法可见性( Method Visibility)

尽可能降低方法的公开程度。选择可见性要注意两个方面:1、未来的灵活性;2、调用对象的代价。

方法对象( Method Object)

把复杂的方法变成对象。

覆盖方法(Overriden Method)

通过覆盖一个方法来表达特殊化。

重载方法(Overloaded Method)

为同样的计算提供不同的接口。

方法返回类型( Method Return Type)

在可以表达意图的基础上,尽可能声明一个泛化的返回类型。

方法注释( Method Comment)

通过方法注释来传达不容易从代码中读出的信息。但是在应用程序,我们尽可能的通过测试来解释代码意图,因为TDD下,测试与代码是一致的,而我们大多数人很少会尽心的维护注释。只在不得不用的时候再写注释。

助手方法(Helper Method)

增加小的、私有的方法来使计算的主体部分表达的更简明。助手方法的目的是通过暂时隐藏目前不关心的细节,让你得以通过方法的名字来表达意图,从而令大尺度的运算更具可读性。

调试输出方法(Debug Print Method)

用toString()输出有用的调试信息。

转换(Conversion)

清晰的表达一个类型的对象到另一个类型的转换。

转换方法(Conversion Method)

对于简单的、有限的转化,在源对象中提供一个方法,让它返回转换后的对象。

在转换方法中,源对象需要和目标对象耦合在一起,但是如果本来没有关系的两者仅仅只是由于转换才关联在一起,那就没有什么必要了。

转换构造器(Conversion Constructor)

对于大多数转换,在目标对象的类中提供一个方法,让它接受一个源对象作为参数。

创建(Creation)

清晰表达对象的创建。

完整的构造器(Complete Constructor)

编写一个构造器,让它返回完全塑造好的对象。它告诉读者运行这个类必须要有那些参数,要比无参构造器+set方法更能表达意图。

工厂方法(Factory Method)

将较复杂的创建表达成类中的一个静态方法,而非构造器。只有我们在创建对象时,不仅仅单纯的创建,还要进行其他动作才需要用到工厂方法,否则用构造器就可以了。

内部工厂(Internal Method)

将需要进一步解释或者日后需要调整的对象创建封装进一个助手方法。我们建立一个方法并返回一个对象,常见的延迟初始化就是一个内部工厂的例子:

private T getT(){
	if(t == null)
		t = new T();
	return t;
}


容器访问器方法(Collection Accessor Method)

为容器的限制性访问提供方法。不需要把整个容器展现给别人,那样一方面不容易表达我们使用容器的意图,另一方面容器中的状态很容易在不知情的情况下被人修改,这绝对是一个灾难。

当然,如果我们要返回一个容器的Iterator时要注意,Iterator是支持remove操作的。

布尔值Setting方法(Boolean Setting Method)

如果有助于沟通,为布尔值的两种状态分别提供一个设置方法。

查询方法(Query Method)

通过名为asXXX的方法返回布尔值。

有时候一个对象需要根据另一个对象的状态来决定,这种依赖关系并不好,不过万一确实需要时,我们应该在相应的方法名称上加上‘be’、‘have’、’is‘等。

当然如果一个对象有很多逻辑都需要另一个对象的状态,那么我们就需要考虑是不是逻辑犯错地方了。

相等性判断方法(Equality Method)

同时定义equals()和hashCode().

Getting方法(Getting Method)

在特殊情况下提供对一个字段的访问,用一个方法返回该字段。当然在写一个getting之前要注意是不是真的需要,根据“数据应该和逻辑在一起”的原则,getting是不是意味着逻辑在其他地方呢?是不是需要调整数据或是逻辑的位置呢?

Setting方法(Setting Method)

在更罕见的情况下提供一个设置字段的方法。settting容易暴露程序的内部结构,使用前一定要多加注意。

安全副本(Safe Copy)

对传入或传出访问器方法的对象进行复制,避免混淆。

Apache服务器SSL证书安装与HTTPS配置全流程实战指南 SSL/TLS证书是实现HTTPS加密通信的核心技术,通过在客户端与服务器之间建立加密隧道,保障数据传输的机密性与完整性。其工作原理基于非对称加密与数字证书体系,服务器使用私钥解密数据,而公钥则通过证书向客户端证明身份。这项技术的核心价值在于为Web应用提供基础安全层,防止中间人攻击与数据窃听,同时满足现代浏览器安全策略与搜索引擎排名要求。在应用场景上,无论是个人博客、企业官网还是电商平台,部署HTTPS已成为提升用户信任、保障交易安全及启用现代Web API(如地理位置服务)的必要前提。本文聚焦于Apac 阅读详情

相关推荐

OpenWrt上部署Squid 6.11:实现HTTPS透明代理与家庭网络精准管控

代理服务器是网络架构中的关键组件,它通过转发客户端请求来管理网络流量、提升访问速度并增强安全性。其核心原理是在客户端与目标服务器之间充当中间人,实现内容缓存、访问控制和协议转换。在家庭或小型办公环境中,部署代理服务器能有效管理设备上网行为、屏蔽不良内容并优化带宽使用。Squid作为一款成熟的开源缓存代理软件,支持显式和透明代理模式,尤其通过SSL Bump技术能解密HTTPS流量,实现基于URL和内容的精细过滤。本文以OpenWrt软路由为平台,详细讲解从源码编译Squid 6.11、配置ACL访问控制列表

weixin_34302561的博客 500

开发中需要读取java的注释(不是注解)的方法

在开发中,遇见需要统计项目的资源路径,如果一个一个的录入太过麻烦,所以学习了一下javadoc包 具体代码: import com.sun.javadoc.ClassDoc; import com.sun.javadoc.MethodDoc; import com.sun.javadoc.RootDoc; /** * JavaDoc的使用方法 */ public class JavaD...

jianguang01的博客 1万+

HTTPS抓包失败原因与Burp证书信任链配置全解

HTTPS抓包本质上是构建端到端的TLS信任链,其核心在于客户端(浏览器/App)对代理工具签发CA证书的信任授权。原理上需完成三重对齐:代理流量转发路径、服务端证书动态签发、系统级根证书信任注入。技术价值体现在可解密HTTPS明文流量,支撑安全审计、接口调试与加密逻辑分析。典型应用场景包括Web前端安全测试、移动App抓包、单点登录流程排查及政务/金融类内网系统调试。本文聚焦Burp Suite实战中高频卡点——ERR_SSL_PROTOCOL_ERROR、证书警告与域名不匹配问题,深度解析浏览器代理配置

weixin_33711647的博客 486

Java高级系列——如何高效的编写方法(methods)

一、介绍 本文我们将会花一些时间从不同的方面去讨论一下Java中方法的设计和实现方式。在本系列前面的文章中我们已经看到,在Java中编写一个方法非常的简单,但是在编写方法时掌握一些关键的要素可以让方法可读性更强而且更加高效。 二、方法签名(Method signatures) 我们已经知道,Java是面向对象语言。因此,Java中的每个方法属于类的实例(static方法属于类本身),每个方法

Ron.Zheng 4979

Charles抓包工具实战指南:HTTP/HTTPS调试、手机抓包与排障

HTTP代理工具是前端与测试工程师进行接口调试、网络问题定位和灰度验证的核心基础设施。其原理基于应用层中间人代理机制,通过拦截并解析HTTP/HTTPS请求响应,实现流量可视化、请求篡改与Mock模拟。相比Wireshark等底层抓包工具,它更聚焦业务语义;相比浏览器开发者工具,它支持全系统级流量捕获与双向修改。技术价值体现在提升联调效率、支撑App逆向分析、辅助性能瓶颈识别及实现零代码接口Mock。典型应用场景包括移动端网络调试、登录态问题排查、竞品接口分析及CI/CD中的网络行为断言。本文围绕Charl

weixin_30521161的博客 386

Jenkins Nginx反向代理与HTTPS配置实战指南

反向代理是现代Web应用架构的基础技术,通过在应用服务器前部署轻量网关(如Nginx),实现请求转发、协议升级与安全加固。其核心原理在于解耦网络层与业务层:网关统一处理SSL/TLS终止、请求头注入(X-Forwarded-*)、路径重写及超时控制,使后端服务(如Jenkins)专注逻辑交付。该技术显著提升系统安全性(避免HTTP明文暴露)、可维护性(集中证书管理)和扩展性(无缝接入负载均衡)。典型应用场景包括CI/CD平台(Jenkins/GitLab CI)对外安全发布、微服务API网关统一入口,以及遗

weixin_34319111的博客 663

微信小程序SSL证书链配置全解析:从原理到实战解决网络请求失败

SSL/TLS证书是保障HTTPS通信安全的基石,其核心在于通过非对称加密和数字签名实现身份认证与数据加密。证书链机制构成了信任传递的桥梁,由根证书、中间证书和服务器证书组成,客户端需逐级验证以建立可信连接。在工程实践中,证书链的完整性直接决定了服务在不同客户端环境下的兼容性,尤其对于微信小程序这类封闭且安全要求严格的运行环境。开发者常因服务器未发送完整的中间证书链,导致浏览器访问正常而小程序请求失败,典型表现为net::ERR_SSL_PROTOCOL_ERROR等错误。本文聚焦证书链配置这一高频痛点,结

weixin_33646989的博客 283

SpringBoot+Vue前后端分离项目HTTPS部署全攻略:从证书申请到Nginx配置

HTTPS作为HTTP的安全超集,通过SSL/TLS协议在传输层对数据进行加密和身份验证,有效防止中间人攻击和数据窃听,是保障Web应用通信安全的基石。其技术价值在于为数据传输提供机密性、完整性和身份认证,已成为现代Web应用尤其是涉及用户登录、支付交易等敏感操作场景的强制要求。在前后端分离架构中,前端Vue应用与后端SpringBoot API的通信同样需要HTTPS保护,以避免混合内容警告和满足浏览器安全策略。本文聚焦于**Nginx反向代理**这一核心部署模式,详细解析如何为SpringBoot后端和

weixin_30654583的博客 487

HTTPS抓包原理与Burp中间人代理实战指南

HTTPS抓包本质是理解TLS握手与公钥基础设施(PKI)的信任机制。它并非简单解密,而是通过中间人代理(MITM)重构证书信任链,依赖客户端对自签名CA证书的显式信任。其技术价值在于实现安全测试、接口调试与网络行为分析,广泛应用于Web渗透测试、移动端App安全评估及前后端联调场景。过程中需深入掌握SNI识别、动态证书生成、HSTS绕过及Android/iOS证书固定(Pinning)应对等核心能力。BurpSuite作为主流工具,其有效性高度依赖SSL/TLS拦截配置与浏览器/系统级证书信任设置,而非仅

weixin_30509393的博客 602

基于Frida的SSL库Hook技术:实现iOS/Android双端HTTPS抓包与SSL Pinning绕过

SSL/TLS协议是保障网络通信安全的基石,它通过非对称加密、对称加密和数字证书验证等机制,在客户端与服务器之间建立加密通道,确保数据传输的机密性、完整性和身份认证。其核心原理在于握手过程中的证书链验证,这正是SSL Pinning(证书绑定)技术所依赖的关键环节。在移动安全测试与逆向工程领域,SSL Pinning常被应用用于防止中间人攻击,但也给安全研究人员带来了抓包挑战。传统方法如修改系统证书或Hook应用层网络框架,往往面临兼容性差、操作繁琐等问题。通过深入理解SSL库(如Android的OpenS

weixin_33767813的博客 451

ssl_error_rx_record_too_long根因解析:端口错配而非SSL故障

HTTPS连接错误`ssl_error_rx_record_too_long`常被误判为证书或TLS协议问题,实则源于HTTP与HTTPS协议在443端口上的根本性错配——浏览器发起TLS握手,服务器却返回明文HTTP响应。其技术本质是应用层协议协商失败,而非加密层异常;核心价值在于快速区分‘配置缺陷’与‘安全配置’,避免无效重签证书或升级OpenSSL;典型场景覆盖Nginx/Apache虚拟主机部署、容器化服务暴露、云环境安全组配置等;本文聚焦于通过端口监听验证、HTTP直连探测、OpenSSL握手模拟

weixin_33997389的博客 421

解决pip install SSL EOF错误:从原理到实战的完整指南

SSL/TLS协议是保障网络通信安全的核心技术,它通过加密和身份验证机制确保数据传输的私密性与完整性。其工作原理基于非对称加密、对称加密和数字证书的协同,在客户端与服务器之间建立安全通道。这一技术对于现代软件开发和运维至关重要,尤其是在依赖远程包管理的Python生态中。当使用pip进行包安装时,SSL/TLS握手失败会导致连接异常中断,具体表现为“EOF occurred in violation of protocol”错误。该问题常由**系统SSL/TLS库过时**或**网络中间件干扰**等因素触发,

weixin_33910460的博客 345

Jenkins Nginx反向代理+SSL配置实战指南

HTTPS 是现代 Web 应用的基础安全要求,其核心在于 TLS 加密通道建立、证书信任链验证与反向代理的协议透传能力。Nginx 作为高性能 HTTP 服务器,凭借原生 WebSocket 支持、灵活的请求头控制和成熟的 SSL 卸载能力,成为 Jenkins 等 Java Web 应用部署 HTTPS 的首选代理方案。技术价值体现在三方面:规避浏览器‘不安全’警告、满足 Git 平台 Webhook 的 HTTPS 回调强制要求、阻断中间人窃取 Session Cookie 或构建凭据。典型应用场景包

weixin_30632089的博客 402

爬虫抓包实战:从Wireshark到Mitmproxy的HTTPS解密与协议分析

在网络数据抓取与分析领域,协议嗅探是理解应用通信逻辑的基础技术。其核心原理是通过拦截网络数据包,对传输层和应用层协议进行解析,从而可视化数据流。这项技术的核心价值在于帮助开发者逆向工程API接口、调试网络请求以及分析数据交互逻辑,尤其在Web爬虫、安全测试和移动应用分析等场景中不可或缺。传统工具如Wireshark擅长网络层抓包,但面对主流的HTTPS加密流量时,常遇到解密难题。而应用层代理工具Mitmproxy通过中间人攻击机制,能有效实现HTTPS流量的实时解密与修改,结合Python脚本扩展,可自动化

weixin_33994429的博客 331

HTTPS部署实战:从SSL/TLS原理到Nginx配置优化

SSL/TLS协议是保障网络通信安全的核心技术,它通过非对称加密、对称加密和数字证书机制,构建了数据传输的信任基础。其技术价值在于解决了HTTP明文传输的三大缺陷:防止窃听、验证服务器身份、确保数据完整性,从而成为现代Web安全的基石。在应用场景上,无论是电商支付、用户登录还是API通信,HTTPS都是保护敏感信息的标准配置。本文以Nginx服务器为例,详细解析了如何通过Let's Encrypt获取免费证书,并配置SSL/TLS协议、加密套件,实现HTTP到HTTPS的重定向。同时,针对证书链完整性、混合

优快云头条 749

HTTP与HTTPS深度解析:从协议原理到网络安全实战

HTTP与HTTPS是互联网通信的基石,理解其请求-响应模型、TLS握手、证书链验证等核心机制,是构建安全网络应用的前提。HTTPS通过加密、完整性校验和身份认证,有效防御窃听、篡改和中间人攻击,广泛应用于Web服务、API接口和容器镜像拉取等场景。掌握这些协议原理,不仅能帮助开发者快速排查TLS握手失败、混合内容警告等常见故障,更是网络安全入门与进阶的必修课。

weixin_34268579的博客 259

Nginx安全加固与HTTPS部署实战:从协议配置到防护策略

SSL/TLS协议是保障网络通信安全的基石,它通过加密和身份验证机制,确保数据在传输过程中的机密性与完整性。其核心原理基于非对称加密进行密钥交换,并结合对称加密实现高效的数据传输。这项技术的价值在于为Web服务提供了端到端的安全保障,是构建可信互联网环境的关键。在实际应用场景中,Nginx作为广泛使用的Web服务器和反向代理,其安全配置直接关系到线上服务的稳定与安全。通过合理配置SSL/TLS协议版本、加密套件,并实施访问控制、请求限制等防护策略,可以有效抵御常见网络攻击,同时确保HTTPS性能最优。本文聚

weixin_33709609的博客 388

解决Burpsuite SSL握手错误:从原理到实战排查指南

SSL/TLS协议是保障网络通信安全的核心技术,它通过非对称加密、对称加密和哈希算法等机制,在客户端与服务器之间建立加密通道,确保数据传输的机密性和完整性。其工作原理基于握手协议、记录协议等协同工作,在握手阶段协商加密套件、交换证书并生成会话密钥。这一技术对于Web安全测试、渗透测试及日常开发调试具有重要价值,尤其是在中间人代理场景下,安全测试人员需要拦截和分析HTTPS流量。当代理工具如Burpsuite在拦截过程中遇到“Unsupported or unrecognized SSL message”错误

cucanqi9387的博客 434
上一篇: BEHAVIOR
下一篇: Manifesto for Agile Software Development
weeweee
博客等级 码龄16年 10粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值