Shark

时而学习之 不亦乐乎

网络代理(5HAD0W50CKS)源码学习

源码

作为少时一窥世界的窗口,说其是国内该领域最伟大的先驱也不为过。但近来环境愈加严厉,使用效果越来越差,但其源码仍值得一看。 基础概念回顾 网络七层模型,由上至下分别为 应用,表示,会话,传输,网络,数据链路,物理 TCP/UDP: 传输层(四层)协议。 SOCKS: 会话层(五层)协议,SS基于此实现 HTTP: 应用层(七层)协议,基于TCP协议实现 socket编程...

HashMap的"bug"

随记

如果面试官问你,如何修改集合中的值,你会怎么回答? 直接entrySet,keySet遍历然后Map::remove?那你可能要和眼前的工作擦肩而过了。不过相信大家都踩过这个坑,这样遇到老朋友ConcurrentModificationException。emmm,那么筛选删除两步走、Java8的Stream?恭喜你,这是正确答案。 那么,我想问的是,Iterator是支持遍历时删除元素的...

Linux 踩坑小计

随记

Docker 内容器可以ping通宿主机IP,但是无法访问其他容器映射在宿主机上的端口 问题描述:现宿主机A内Docker运行了两个容器B与C。B的80端口映射到宿主机A的80端口,外部PC可以访问B提供的服务。但在C容器内,能ping通宿主机A的IP,能ping通B容器IP。但是却无法访问B提供的服务 问题原因:docker的一个已知Bug 解决方法:Centos7环境下,向/etc/...

g++ -l 选项

随记

问题 为什么有些时候g++必须使用-lxxx才能通过编译 $ g++ log.cpp -llog4cplus $ g++ log.cpp /tmp/cc6uljhh.o: In function `main': log.cpp:(.text+0x20): undefined reference to `log4cplus::Logger::getRoot()' log.cpp:(.text+...

JVM Specification 中文版 第二章-JVM架构

翻译

本章只阐述了一个抽象的模型。而不会谈到JVM任何具体的实现。 为了正确的实现JVM,必须能够正确的解析 class 的文件格式并执行其中的操作。JVM规范不涉及实现细节,因为这样会为人们戴上枷锁。比如,运行时数据区域的内存布局,垃圾回收(gc)算法的使用和其他可对JVM指令可做出的优化(例如,将指令翻译为机器码),这些都交由实现者决定。 本规范对 Unicode 的所有引用都来自 The...

Linux 下 ATA 与 SATA 的命名规则

StackOverflow

问题 原文地址 假设现在有两块磁盘,one master SATA and one master ATA,他们在 /dev 下会如何呈现? 回答 这个要取决与你的 SATA 驱动和系统配置 (distribution’s configuration), 可能会是 /dev/hda 和 /dev/hdb, 或者 /dev/hda 和 /dev/sda,或者是 /dev/sda 和 /d...

JVM Specification 中文版 第一章-简介

翻译

一点点历史 Java是一门通用的,支持并发且面相对象的编程语言。它的语法和 C、C++ 有些类似,但是它舍弃了 C/C++ 中许多复杂、难以理解且不安全的特性。最初,Java平台是为了解决那些面向网络用户的应用程序构建问题。它旨在支持多种主机架构,并允许软件组件的安全交付。为了满足这些需求,编译后的代码必须能通过网络传输,并能保证在任意的客户机上安全的运行。 随着万维网(World Wid...

JVM Specification 中文版 前言及目录

翻译

源文档地址 在日常工作中,因英语差而多走了很多弯路,这个系列主要是为了提高自己的英语阅读水平,另一方面,也为了对让自己对JVM能有更全面的理解。因个人水平有限,翻译错误之处还请多多指教。

vSphere、ESXi和vCenter的区别

搬运

原文地址 这些天来,对于VMware的虚拟化解决方案有很多疑问。在业内,VMware毫无疑问是首屈一指的虚拟化方案提供商。人们在刚开始接触VMware的虚拟化平台时,经常会在学习 VMware vSphere 和它的组件时感到困惑。所以,今天我在这里会对它们做一个全面的介绍。人们很难了解 vSphere 的主要组件。而去了解 vSphere、ESXi和vCenter之间的差异是非常有必...

SAN, NAS 和 DAS的区别

ServerFault

原文地址 他们之间的差异就像快设备与文件系统一样。如果你对UNIX很熟的话,这是非常容易理解的,因为在UNIX中,这两者的区别很明显。不过在Windows中也一样。 块设备是裸盘的句柄。比如;/dev/sda 是一个磁盘, /dev/sda1 是在该磁盘上的分区 文件系统是建立在在块设备的基础上的。你可以把它挂载出来,然后存储数据。比如 mount /dev/sda1 /mn...