要不要再学学下面的文章?
以非阻塞方式执行一个函数 (blog.codingnow.com)
用过 skynet 的应该都碰到过:当我们在服务中不小心调用了一个长时间运行而不返回的 C 函数,会独占一个工作线程。同时,这个被阻塞的服务也无法处理新的消息。一旦这种情况发生,看似是无解的。我们通常认为,是设计问题导致了这种情况发生。skynet 的框架在监测到这种情况发生时,会输出 maybe in an endless loop 。

如果是 Lua 函数产生的死循环,可以通过发送 signal 打断正在运行运行的 Lua 虚拟机,但如果是陷入 C 函数中,只能事后追查 bug 了。

那么,如果我原本就预期一段 C 代码会运行很长时间,有没有可能从底层支持以非阻塞方式运行这段代码呢?即,在这段代码运行期间,该服务还可以接收并处理新的消息?
by @技术头条 2024-03-13 13:20 查看详情
通过漫游交换进行隐蔽访问的新型后门 GTPDOOR 分析 (paper.seebug.org)
GTPDOOR 是一种基于 Linux 的恶意软件,旨在部署在邻近 GRX(GPRS 交换网络)的电信网络系统中,具有通过GTP-C(GPRS 隧道协议- 控制平面)信令消息传递 C2 流量的功能。这使得 C2 流量能够与正常流量混合,并重新利用可能对 GRX 网络开放且暴露的已允许端口。
by @技术头条 2024-03-12 22:49 查看详情
JVM内存问题排查流程 (l1n.wang)
首先确认问题现象,可以通过服务状态,监控面板、日志信息、监控工具(VisualVM)等,确认问题类型:
1、内存使用率居高不下、内存缓慢增加、OOM等;
2、频繁GC:Full GC等;
发现问题不建议重启,留存状态。
by @技术头条 2024-03-12 22:26 查看详情
HTTPS通信过程分析 (l1n.wang)
为什么需要HTTPS?HTTP缺点: 1. 明文传输; 2.C/S两端不存在验证机制,无法确认对方身份,可能存在中间人攻击。
by @技术头条 2024-01-17 23:09 查看详情
JVM 剖析花园:2 - 透明大页 (www.diguage.com)
大页面是提高应用程序性能的简单技巧。Linux 内核中的“透明大页”功能使其更易于使用。JVM 中的“透明大页”支持使其易于选择。尝试大页面总是一个好主意,尤其是当你的应用程序有大量数据和大堆时。
by @技术头条 2024-01-14 19:21 查看详情
JVM 剖析花园:1 - 锁粗化及循环 (www.diguage.com)
虽然锁粗化并不适用于整个循环,但另一种循环优化方法—​循环展开—​为常规锁粗化创造了条件,一旦中间表示开始看起来好像有 N 个相邻的锁-解锁序列,就可以进行锁粗化。这不仅能带来性能上的优势,还有助于限制粗化的范围,避免对过大的循环进行过度粗化。
by @技术头条 2024-01-14 19:21 查看详情
Nginx日志分析-MIME types (ixyzero.com)
Nginx日志的分析,尤其是加白,在不是特别清楚功能和作用的情况下,还是应该细粒度的操作,比如先按照Content-Type加白,就比按照domain维度的加白粒度会更细一点,比按照uri来加白要更方便和准确一点。简单记录一下,方便后面有需要的时候参考。
by @技术头条 2024-01-14 18:57 查看详情
QUIC协议解析与DDoS攻击分析 (blog.nsfocus.net)
QUIC(Quick UDP Internet Connections)协议是一种基于UDP的新型可靠传输协议,目前主要用于HTTP/3.0。近年来,现网中逐步发现了一些基于QUIC协议的DDoS攻击痕迹,并且友商也已经开始了关于QUIC协议的DDoS攻防相关研究。因此,ADS团队针对该协议进行了一系列的分析和实验,为相关的DDoS攻击防御技术研究打下基础。
by @技术头条 2024-01-13 23:43 查看详情
TinyInst 的插桩实现原理分析 (paper.seebug.org)
TinyInst 是一个基于调试器原理的轻量级动态检测库,由 Google Project Zero 团队开源,支持 Windows、macOS、Linux 和 Android 平台。同 DynamoRIO、PIN 工具类似,解决二进制程序动态检测的需求,不过相比于前两者 TinyInst 更加轻量级,更加便于用户理解,更加便于程序员进行二次开发。

本文将通过分析 TinyInst 在 Windows 平台上的插桩源码,来理解 TinyInst 的基本运行原理;为后续调试 TinyInst 的衍生工具(如 Jackalope fuzzing 工具)或二次开发打下基础。
by @技术头条 2023-11-06 22:59 查看详情
软件开发 | JVM 解释和编译指南 (linux.cn)
Java 是一种跨平台的编程语言。程序源代码会被编译为 字节码bytecode,然后字节码在运行时被转换为 机器码machine code。解释器interpreter 在物理机器上模拟出的抽象计算机上执行字节码指令。即时just-in-time(JIT)编译发生在运行期,而 预先ahead-of-time(AOT)编译发生在构建期。

本文将说明解释器、JIT 和 AOT 分别何时起作用,以及如何在 JIT 和 AOT 之间权衡。
by @技术头条 2023-11-06 22:57 查看详情