注:本文内容摘抄自CDN详解 — 不挑食的程序员,博主在其基础上进行了少量修改并加入了部分原创,感谢,侵删~ 之前我们已经学习过缓存机制以及Web代理,但对于大型网站的构建,这些还远远不够。要想真正的构建一个流行的网站,内容分发网络(Content Delivery Network)简称CDN,是一项不可或缺的技术。 什么是CDN? 以下内容摘自维基百科: 内容分发网络(CDN)是指一种通过互联网互相连接的计算机网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户。 如果对整个CDN系统做一个简单的描述: CDN系统主要由4大部分组成,每部分都由集群所构成。这4部分分别由CDN专属DNS服务器、全局负载均衡设备、区域负载均衡设备、CDN缓存服务器(边缘节点)构成。除过CDN专属DNS服务器,其他3部分集群都有源服务器上对应资源的全部或部分副本。CDN系统通过各部分的负载均衡算法,最终指示客户端使用附近最优的边缘节点中的一台缓存 继续阅读 >>


董恒毅 18/06/18 20:35:04
版权声明:本文出自“丁胖胖的BLOG”,请务必保留此出处:http://z00w00.blog.51cto.com/515114/1031287。 引言 我们在之前的Web缓存机制一文中提到,缓存服务器就可以作为一种代理服务器。 代理分为正向代理、反向代理、透明代理等等。今天我们着重介绍这三种代理方式。 什么是代理?什么是代理服务器? 在正式开始前,我们先对标题中的概念进行定义,以下摘自维基百科: 代理(英语:Proxy):也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。 代理服务器(英文:Proxy Server):提供代理服务的计算机系统或其它类型的网络终端。 正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术 继续阅读 >>


董恒毅 18/06/12 21:36:18
序言 对于大多数人来说,我想,接触的第一个电子邮箱应该都是QQ邮箱。我也不例外,从第一次接触QQ邮箱开始,就对这种有别于传统邮箱的软件产生了一些兴趣,却由于种种原因一直都没有去探究它。前段时间刚好在找实习,期间凸显了电子邮箱的重要性,刚好最近也有了一些空闲的时间,遂在了解了电子邮件的基本工作原理之后,将其整理为这篇博客。 使用电子邮件的好处 很多人还不清楚使用电子邮件的好处,我贴一下。内容节选自:为什么要使用Email及如何用好Email 写Email跟用笔写信是一样的,你可以经过深思熟虑,将语言精心组织之后再写下来,也就是说,在工作中使用它更加正式,而且可以留下记录作为证据。长期使用Email会锻炼你的写作能力和语言组织能力; 如果我们都习惯使用“回复”或“全部回复”,通过一个邮件就可以看到关于一个项目全部的沟通信息; 上级经常不知道我们打电话或者发IM消息给客户到底在谈些什么,而发Email时“抄送”给他,通常情况下他都会很乐意接收,当然你也可以“抄送”或者“密送”给其他你希望看到 继续阅读 >>


董恒毅 18/06/08 14:34:36
借由这个问题,今天我们就把 32 位 CPU、64 位 CPU、32 位操作系统、64 位操作系统之间的区别与联系彻底搞清楚。对于这个问题,博主也是一知半解了好长时间啊~ 基本概念 32位的CPU与64位CPU 以下内容摘自维基百科: 64 位 CPU 是指 CPU 内部的通用寄存器的宽度为 64 比特,支持整数的 64 比特宽度的算术与逻辑运算。那么 32 位 CPU 同理。 一个 CPU,联系外部的数据总线与地址总线,可能有不同的宽度;术语“64位”也常用于描述这些总线的大小。不过这一术语也可能指电脑指令集的指令长度,或其它的数据项。去掉进一步的条件,“64位”电脑架构一般具有 64 位宽的整数型寄存器,它可支持 64 位“区块”的整数型数据。 64 位架构无疑可应用在需要处理大量数据的应用程序,如数字视频、科学运算、和早期的大型数据库。 那么 32 位 CPU 与 64 位 CPU 到底有什么区别? 数据处理能力增强:64 位 CPU 通用寄存器的 继续阅读 >>


董恒毅 18/05/25 23:20:56
注:本文中的部分内容摘抄自他人博客,如有侵权,请联系我,侵删~ 本篇博客主要讲述 synchronized 关键字的实现原理以及 JDK 1.6 后对 synchronized 的种种优化。synchronized 的使用不再赘述。 博主目前依旧存在的疑惑 请在阅读完此篇博客之后,帮助博主回答这三个问题: 多线程争夺 Monitor 的具体过程是怎样的?是根据 ObjectMonitor 中的 _count 值判断当前 Monitor 是否被锁定吗? JVM 如果检测到在单线程环境下执行同步代码(StringBuffer),是会进行锁消除呢,还是会使用偏向锁? 对于偏向锁的撤销过程及膨胀过程,博主只是在一些博客的基础上给出了自己的理解!不权威,建议阅读源码,博主对这部分知识的讲解持怀疑态度,如果在阅读的过程中发现博主对偏向锁的撤销与膨胀理解有误,请指出,感激不尽~(网上基本上没有从源码角度分析的,对于偏向锁撤销与升级的详细过程也是众说纷纭) 引言 我们先来看一份代码: 继续阅读 >>


董恒毅 18/04/27 11:38:27
注:感谢 美团点评技术团队 的分享~~,博客部分内容摘抄自其中。侵删! 今天我们来探究一下 HashMap 的内部实现机制。 明确 JDK 1.8 中的 HashMap 使用数组 + 链表 + 红黑树的结构进行实现。 HashMap 的底层思想主要是哈希表,我们来看看 Java 的设计者们是怎么使用数组 + 链表 + 红黑树设计出 HashMap 的。 HashMap的基本属性 既然是用哈希表进行实现,那么基本的数据结构就是数组了,HashMap 部分源码如下: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { transient Node<K,V>[] table; // HashMap 底层数据结构(Node 数组) transient int size; 继续阅读 >>


董恒毅 18/04/20 21:55:40
源码地址:XiyouLinux Group 图书借阅平台 项目地址中包含了一份README,因此对于项目的介绍省去部分内容。这篇博客,主要讲述项目中各个模块的实现细节。 项目概述及成果 首先将本项目使用到技术罗列出来: 使用Spring + Spring MVC进行后台开发 使用Bootstrap和jQuery框架进行前端开发 使用自定义注解与自定义的JdbcRowMapper简化JdbcTemplate对数据库的操作 使用腾讯云的对象存储服务进行图书照片的远程存储 使用MD5加密算法对用户密码在后台进行加密存储 使用过滤器进行一个会话中的身份校验 手动从Spring容器中获取bean 数据库设计中的诸多细节… … 由于前端开发是由团队中的其他人在负责,在加上博主对前端这块并不了解,因此本篇博客并不讨论有关第二点技术实现上的细节。 本项目如README中所述,在后期还有许多需要进行优化的地方。如果你对本项目感兴趣,不妨在GitHub中将 继续阅读 >>


董恒毅 18/03/13 00:22:30
注:本篇博客大部分内容截选自阮一峰老师的DNS 原理入门一文。其中少部分内容是博主自己的理解。 什么是DNS 我们知道,网络本身只能理解数字形式的地址,也就是IP地址。但是直观的IP地址毫无规律,很难让人记住,并且如果使用IP地址浏览一个公司的主页,意味着这家公司一旦将主页移动到了另一台机器上,且该机器具有不同的IP地址,那么必须将该机器的IP地址通知给每一个人。因此人们引入了类似于www.baidu.com这样的域名。而要将域名转换为对应的IP地址,就需要DNS服务器(Domain Name System)。 在早期的ARPANET时代,只有一个简单的hosts.txt文件,它列出了所有的计算机名字和其对应的IP地址。每天晚上,所有的主机都从一个维护此文件的站点将该文件取回,然后在本地进行更新。对于一个拥有几百台大型分时机器的网络而言,这种方法工作的相当好。 然而当几百万台PC连接到互联网以后,问题就出现了。首先这个文件会变的非常大,并且主机名冲突的现象将会频繁发生。为了解决这些问题,DNS服 继续阅读 >>


董恒毅 18/03/05 18:01:22
源码地址:多线程爬虫–抓取淘宝商品详情页URL 项目地址中包含了一份README,因此对于项目的介绍省去部分内容。这篇博客,主要讲述项目的构建思路以及实现细节。 项目概述及成果 首先将本项目使用到技术罗列出来: MySQL数据库进行数据持久化及对宕机情况的发生做简单的处理 Redis数据库做IP代理池及部分已抓取任务的缓存 自制IP代理池 使用多线程执行任务(同步块,读写锁,等待与通知机制,线程优先级) HttpClient与Jsoup的使用 序列化与反序列化 布隆过滤器 之后会对其中使用到的技术进行详细的解释。 本项目如README中所述,还有许多不完善的地方,但IP代理池与任务抓取线程之间的调度与协作基本已无问题。也就是说,在此项目的框架上,如果你想修改其中代码用作其他抓取任务,也是完全可以的。我抓取到的数据所保存的源文件也放在GitHub的README上供大家免费浏览与下载(近90000的商品ID)。 整体思路 首 继续阅读 >>


董恒毅 18/03/02 22:35:30
由于我将继承与多态的讲解分成了三篇博客,所以在这篇博客给出三篇博客总的链接,阅读顺序由第一篇至第三篇就可以。 第一篇:主要讲解分派:JVM–详解虚拟机字节码执行引擎之静态链接、动态链接与分派 第二篇:主要讲解invokevirtual指令:JVM–从JVM层面深入解析对象实例化、多态性实现机制 第三篇:主要讲解继承与方法表: JVM–再谈继承与多态 相信这三篇博客会给你带来惊喜~~~ 作者:championhengyi 发表于 2018/01/12 14:53:43 原文链接 https://blog.csdn.net/championhengyi/article/details/79044061 阅读:722 继续阅读 >>


董恒毅 18/01/12 14:53:43