Java 静态方法的返回值泛型使用与调用 static method generic return type and invoke

泛型(generic)类型在 Java 中使用特别频繁, 尤其在各种集合类(Collection)中. 一般如果自定义的类要使用泛型, 那么需要在类定义的时候, 声明泛型, 如:

public class MyClass<T> {...}

那么, 如果想在类的静态方法里上使用泛型, 以及如何在调用的时候, 传入泛型类型呢?

- 阅读剩余部分 -

使用apache httpclient 默认连接池导致的系统瓶颈问题

现今的 Java 开发基本都会使用开源的开发框架, 它们都经过很多人的验证, 包含了很多成熟的最佳实践. 另外这些框架中经常包含一些可调的参数, 如果不读官方文档, 调节参数, 默认的参数可能由于不太适应真正的业务需求, 导致应用出现某些瓶颈问题.

##症状
有告警显示某些 web 服务器的 Tomcat busy threads 横躺在了最大值上, 成了一条直线段. 如下图:
busyThreadMax.png

- 阅读剩余部分 -

诊断 Java 由 Synchronizer 和 AQS 混合组成的死锁

死锁问题在 SRE 的日常的应用诊断中, 经常遇到. 遇到的大多数, 都是通过 thread dump 里面明显看到的, 因为 thread dump 默认会在最后打印出 JVM 识别出来的死锁. 对于使用 AQS 锁的情况, 获得的锁就不会打印在 thread dump 里面. 这时候, 就需要分析具体的堆栈的情况去具体识别. 这里就展示一个这样的案例.

症状:

首先, 报警显示有个机器的 Tomcat 服务线程被用光了, 已经无法再接受新的请求. 该应用其它server还是正常工作, 所以判断只是这个 server 走火入魔, 陷入了困境.
tomcatThreadsMax.png

- 阅读剩余部分 -

草稿 用例驱动 讲明白 iptables 防火墙

涉及:
The iptables firewall works by interacting with the packet filtering hooks in the Linux kernel’s networking stack. These kernel hooks are known as the netfilter framework.

Every packet that enters networking system (incoming or outgoing) will trigger these hooks as it progresses through the stack, allowing programs that register with these hooks to interact with the traffic at key points. The kernel modules associated with iptables register at these hooks in order to ensure that the traffic conforms to the conditions laid out by the firewall rules.

Netfilter 的前身(Linux 2.2.x ipchains and Linux 2.0.x ipfwadm),后继 nftables iptables (table, chain, rule, policy)
network offload 到硬件

iptables 防火墙工具 基于 kernel 的netfilter 包过滤框架(package filter framework)
防火墙 policy 对应 iptables rule
iptables 语法:

参考: https://en.wikipedia.org/wiki/Netfilter
https://www.netfilter.org/
https://www.digitalocean.com/community/tutorials/a-deep-dive-into-iptables-and-netfilter-architecture
https://www.linode.com/docs/security/firewalls/control-network-traffic-with-iptables/