<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[走向架构师之路]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/lenolong</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; lenolong]]></copyright><item><title><![CDATA[负载均衡与集群之apache+tomcat]]></title><link>https://blog.csdn.net/lenolong/article/details/51090002</link><guid>https://blog.csdn.net/lenolong/article/details/51090002</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:14:16 +0800</pubDate><description><![CDATA[看完了有一本书，就应该有所收获，有所总结，最近把《大型网站技术架构》一书给看完了，给人的印象实在深刻，再加上之前也搞过书本上讲的反向代理和负载均衡以及session独立存储和缓存，因此书本看起来还是挺通俗易懂的，而且作者李智慧给人的印象（书本）也挺深刻的，我从这本书中也学到了许多，了解的许多，但是理解还是比较抽象的，写出来才是真正的理解，因此准备写一系列的博客来介绍和加深理解大型网站技术架构。
]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（八）：java内存分析工具-MAT和OQL]]></title><link>https://blog.csdn.net/lenolong/article/details/51089966</link><guid>https://blog.csdn.net/lenolong/article/details/51089966</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:11:10 +0800</pubDate><description><![CDATA[以下内容翻译自MAT帮助文档。

MAT下载地址 http://www.eclipse.org/mat/

一、Class Histogram



 Class Histogram shows the classes found in the snapshot, the number of objects for each class, the heap memory consu]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（七）：java垃圾收集分析总结]]></title><link>https://blog.csdn.net/lenolong/article/details/51089953</link><guid>https://blog.csdn.net/lenolong/article/details/51089953</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:09:34 +0800</pubDate><description><![CDATA[一、垃圾回收触发条件

  1、Minor gc触发条件

当新生代空间不足时会主动触发Minor gc，并且自动扩容（可通过控制使新生代直接处于最大内存空间，避免自动扩容和垃圾收集）。

  2、Full gc触发条件

和新生代一样，当老年代空间不足时会触发Full gc，并且自动扩容；另外当在代码中调用System.gc()时也会触发Full gc。 可通过参数-XX:+Di]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（六）：java垃圾收集分析实战（内存分配与回收策略）]]></title><link>https://blog.csdn.net/lenolong/article/details/51089948</link><guid>https://blog.csdn.net/lenolong/article/details/51089948</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:09:07 +0800</pubDate><description><![CDATA[试验环境jdk 1.6.0_37。



 虚拟机参数-XX:PrintGCDetails让虚拟机在发生垃圾回收行为时打印内存回收日志，并在进程退出时候输出当前的内存各区域分配情况。
 以下代码测试都将加上 -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 参数，即设置java堆大小限制为20M,新生代10M，]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（五）：hotspot垃圾收集算法实现]]></title><link>https://blog.csdn.net/lenolong/article/details/51089945</link><guid>https://blog.csdn.net/lenolong/article/details/51089945</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:08:31 +0800</pubDate><description><![CDATA[本文所讲的是sun hotspot虚拟机实现，主要讲解Serial，ParNew，Parallel Scavenge,Serial Old,CMS(Concurrent Marsk Sweep),Parallel  Old,G1（garbage first）垃圾收集器。

先看java堆内存结构，适用于非G1收集器外的垃圾收集器：




 

首先根据java对象的生存周期长短]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（四）：对象存活判定算法和垃圾收集算法]]></title><link>https://blog.csdn.net/lenolong/article/details/51089942</link><guid>https://blog.csdn.net/lenolong/article/details/51089942</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:07:52 +0800</pubDate><description><![CDATA[程序计数器、虚拟机栈、本地方法栈3个区域随线程生，随线程而灭；



栈中的栈帧随着方法的进入和退出而有条不紊的执行这出栈和入栈操作。


每一个栈帧中分配多少内存基本上是在类结构确定下来是就已知的，因此这几个区域的内存分配和回收都具备确定性，在这几个区域内不需要过多考虑回收问题，因为方法结束或者线程结束时，内存就跟着回收了。


因此我们主要学习java堆和方法区的内存分配和]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（三）：String.intern()-字符串常量池]]></title><link>https://blog.csdn.net/lenolong/article/details/51089939</link><guid>https://blog.csdn.net/lenolong/article/details/51089939</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:07:09 +0800</pubDate><description><![CDATA[看源码：

 public native String intern();
 
 Returns a canonical representation for the string object.

A pool of strings, initially empty, is maintained privately by the class String.

When the i]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（二）：java内存溢出实战]]></title><link>https://blog.csdn.net/lenolong/article/details/51089933</link><guid>https://blog.csdn.net/lenolong/article/details/51089933</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:06:49 +0800</pubDate><description><![CDATA[按照java内存的结构，发生内存溢出的地方常在于堆、栈、方法区、直接内存。
1、堆溢出

堆溢出原因莫过于对象太多导致，看代码。



[java] view
 plain copy


 print?



package baby.oom;  
  
import java.util.ArrayList;  
import java.util.List;  ]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机（一）：java内存区域（内存结构划分）]]></title><link>https://blog.csdn.net/lenolong/article/details/51089897</link><guid>https://blog.csdn.net/lenolong/article/details/51089897</guid><author>lenolong</author><pubDate>Thu, 07 Apr 2016 22:02:19 +0800</pubDate><description><![CDATA[图一：java内存结构划分


由上图可知，java内存主要分为6部分，分别是程序计数器，虚拟机栈，本地方法栈，堆，方法区和直接内存,下面将逐一详细描述。
1、程序计数器

线程私有，即每个线程都会有一个，线程之间互不影响，独立存储。
代表着当前线程所执行字节码的行号指示器。2、虚拟机栈

线程私有，它的生命周期和线程相同。

描述的是java方法执行的内存模型：每个方法在执]]></description><category></category></item><item><title><![CDATA[java中重载与重写的区别]]></title><link>https://blog.csdn.net/lenolong/article/details/51079064</link><guid>https://blog.csdn.net/lenolong/article/details/51079064</guid><author>lenolong</author><pubDate>Wed, 06 Apr 2016 22:04:53 +0800</pubDate><description><![CDATA[首先我们来讲讲：重载(Overloading)


    （1） 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在，具有不同的参数个数/类型。

重载Overloading是一个类中多态性的一种表现。


    （2） Java的方法重载，就是在类中可以创建多个方法，它们具有相同的名字，但具有不同的参数和不同的定义。

调用方法时通过传递给它们的不]]></description><category></category></item><item><title><![CDATA[MySQL索引背后的数据结构及算法原理]]></title><link>https://blog.csdn.net/lenolong/article/details/49055993</link><guid>https://blog.csdn.net/lenolong/article/details/49055993</guid><author>lenolong</author><pubDate>Sun, 11 Oct 2015 23:06:48 +0800</pubDate><description><![CDATA[原文出处： 张洋   欢迎分享原创到伯乐头条

摘要

本文以MySQL数据库为研究对象，讨论与数据库索引相关的一些话题。特别需要说明的是，MySQL支持诸多存储引擎，而各种存储引擎对索引的支持也各不相同，因此MySQL数据库支持多种索引类型，如BTree索引，哈希索引，全文索引等等。为了避免混乱，本文将只关注于BTree索引，因为这是平常使用MySQL时主要打交道的索引，至于哈希索引和全]]></description><category></category></item><item><title><![CDATA[全面理解HTTP]]></title><link>https://blog.csdn.net/lenolong/article/details/49055327</link><guid>https://blog.csdn.net/lenolong/article/details/49055327</guid><author>lenolong</author><pubDate>Sun, 11 Oct 2015 22:40:47 +0800</pubDate><description><![CDATA[引言：作为一名软件工程Web专业学生，对于HTTP的熟悉掌握是必不可少的，特此做记录，打造自己的HTTP栈。


URL与URI

我们经常接触到的就是URL了，它就是我们访问web的一个字符串地址，那么URI是什么呢？他们是什么关系呢？
URL：uniform resource location 统一资源定位符
URI：uniform resource identifier 统一资]]></description><category></category></item><item><title><![CDATA[脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别]]></title><link>https://blog.csdn.net/lenolong/article/details/49047765</link><guid>https://blog.csdn.net/lenolong/article/details/49047765</guid><author>lenolong</author><pubDate>Sun, 11 Oct 2015 14:22:26 +0800</pubDate><description><![CDATA[一、脏读、不可重复读、幻读

1、脏读：脏读就是指当一个事务正在访问数据，并且对数据进行了修改，而这种修改还没有提交到数据库中，这时，另外一个事务也访问这个数据，然后使用了这个数据。
例如：
　　张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。
　　与此同时，
　　事务B正在读取张三的工资，读取到张三的工资为8000。
　　随后，
　　事务A发生异常，而回滚]]></description><category></category></item><item><title><![CDATA[分布式相关技术及其比较]]></title><link>https://blog.csdn.net/lenolong/article/details/49004397</link><guid>https://blog.csdn.net/lenolong/article/details/49004397</guid><author>lenolong</author><pubDate>Fri, 09 Oct 2015 19:27:29 +0800</pubDate><description><![CDATA[随着计算机和网络技术的快速发展，新技术层出不穷。就分布式计算而言，近年来就诞生了诸如集群计算、网格计算、云计算等新兴技术。虽然这些技术的本质是分布式技术，生存土壤都是计算机和网络，都是为了解决数据的计算、传输和存储等问题，但是他们的之间在服务对象、实用场景等方面存在着差别。本文在介绍这些技术后，对其中一些技术做出了比较。
所有的资源来均来自互联网。





1.       分布式]]></description><category></category></item><item><title><![CDATA[高并发量网站解决方案]]></title><link>https://blog.csdn.net/lenolong/article/details/48954359</link><guid>https://blog.csdn.net/lenolong/article/details/48954359</guid><author>lenolong</author><pubDate>Wed, 07 Oct 2015 21:35:29 +0800</pubDate><description><![CDATA[一个小型的网站，可以使用最简单的html静态页面就实现了，配合一些图片达到美化效果，所有的页面均存放在一个目录下，这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰富，网站相关的技术经过这些年的发展，已经细分到很细的方方面面，尤其对于大型网站来说，所采用的技术更是涉及面非常广，从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求，已经不是原来简单的ht]]></description><category></category></item><item><title><![CDATA[程序员如何在复杂代码中查找到程序的bug？]]></title><link>https://blog.csdn.net/lenolong/article/details/48299311</link><guid>https://blog.csdn.net/lenolong/article/details/48299311</guid><author>lenolong</author><pubDate>Tue, 08 Sep 2015 22:22:31 +0800</pubDate><description><![CDATA[最近在挑选更合适的物品来兑换，请牛牛们不要着急。

程序员新人怎样在复杂代码中找 bug？

姚冬，程序员:

我曾经做了两年大型软件的维护工作，那个项目有10多年了，大约3000万行以上的代码，参与过开发的有数千人，代码checkout出来有大约5个GB，而且bug特别多，open的有上千，即使最高优先级的showstopper也有上百。

分享下我的debug的经验

1.]]></description><category></category></item><item><title><![CDATA[我是如何构建一个持续发展的项目]]></title><link>https://blog.csdn.net/lenolong/article/details/47281703</link><guid>https://blog.csdn.net/lenolong/article/details/47281703</guid><author>lenolong</author><pubDate>Tue, 04 Aug 2015 20:06:41 +0800</pubDate><description><![CDATA[说起项目，每个程序员都应该搭建过自己的项目，而我也搭建过数十个企业级或互联网级项目；在做企业级项目时也抽象了一套通过的开发脚手架ES方便开发，也做过一些通用的代码生成工具来生成通用项目架子或一些CRUD的代码。做这些平台或项目的时候或多或少给我一些启示和原则，而这些启示和原则一直指导着我内心方向，时刻指导我不偏离航线。
 
启示录

心中有原则代码规范化代码审查代码重构代码注释代码逻辑抽象]]></description><category></category></item><item><title><![CDATA[如何做好项目的需求与业务调研？]]></title><link>https://blog.csdn.net/lenolong/article/details/45704007</link><guid>https://blog.csdn.net/lenolong/article/details/45704007</guid><author>lenolong</author><pubDate>Wed, 13 May 2015 23:35:10 +0800</pubDate><description><![CDATA[1. 调研工作如何组织？

很多人认为调研工作极难，水平最高的人才能做好一次调研，软件工程中也强调需求获取是最难的事情。有的人要么认为不过如此，甚至是一个普通技术支持都可以做的工作。

现在有很多企业上管理软件之前都希望软件公司派人来了解情况，提出针对性建议。这其实给很多软件公司销售经理出了个难题，自己亲自上企业不信任，而且也不专业，请公司派咨询顾问过来资源难以协调，响应不及时用户也不满意]]></description><category></category></item><item><title><![CDATA[如何做好项目的验收工作？]]></title><link>https://blog.csdn.net/lenolong/article/details/45703999</link><guid>https://blog.csdn.net/lenolong/article/details/45703999</guid><author>lenolong</author><pubDate>Wed, 13 May 2015 23:34:32 +0800</pubDate><description><![CDATA[实施项目最快乐的事情就是项目验收，可是经常是没完没了的信息化，不见不散的项目组，验收之路何其漫漫。

我在整个项目经理技巧中都反复强调任何工作达到成效，并不在一时一地事情做到位，而是在平时工作积累中将事情细节做完善，做到位，很多想要的结果就自然达到了。

项目验收就是我们最想要达到的结果，一旦项目验收对很多人还意味着一件现实的事情就是，我们可以回款了，可以获得项目提成收入了，同样项目验收也]]></description><category></category></item><item><title><![CDATA[如何做项目或产品演示？]]></title><link>https://blog.csdn.net/lenolong/article/details/45703959</link><guid>https://blog.csdn.net/lenolong/article/details/45703959</guid><author>lenolong</author><pubDate>Wed, 13 May 2015 23:34:13 +0800</pubDate><description><![CDATA[项目或产品演示不是演讲，也不是答辩，更不是培训。

尽管在很多表达和现场互动技巧上，演讲，答辩，培训和演示都有相通的地方。

演讲更侧重对某一个问题看法的陈述，主要是交换观点，允许争鸣，听众可以不同意你的观点，但一定会捍卫你发言的权利。

除了常见的演讲比赛外，很多时候演讲者是受邀请，以一种被尊重状态出场，是处于一种比较从容的心态下开始的。

演讲的过程一般也是比较连续，不会被随意]]></description><category></category></item></channel></rss>