<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[互联网十年老兵]]></title><description><![CDATA[互联网十年老兵]]></description><link>https://blog.youkuaiyun.com/happy_coding_life</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; happy_coding_life]]></copyright><item><title><![CDATA[每天一道面试题-谈谈对面向对象思想的理解]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/85007663</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/85007663</guid><author>happy_coding_life</author><pubDate>Fri, 14 Dec 2018 17:56:41 +0800</pubDate><description><![CDATA[这个问题，通常会让很多人有点不知所措，感觉我一直在编码，但是说到思想很难去阐述。

下面，我说说自己的想法，

首先，谈谈“面向过程”vs“面向对象”

我觉得这两者是思考角度的差异，面向过程更多是以“执行者”的角度来思考问题，而面向对象更多是以“组织者”的角度来思考问题，举个例子，比如我要产生一个0-10之间的随机数，如果以“面向过程”的思维，那我更多是关注如何去设计一个算法，然后保证比较均衡产...]]></description><category></category></item><item><title><![CDATA[004-SpringMVC-如何接收各种参数（普通参数，对象，JSON, URL）]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588440</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588440</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:39:53 +0800</pubDate><description><![CDATA[在交互的过程中，其中一个关键的节点就是获取到客户端发送过来的请求参数，本篇文章，我们来罗列下SpringMVC对于各种数据的获取方式：说明：以下重点在讲解如何获取参数上，所以返回的数据不是重点1，普通方式，请求参数名跟Controller的方法参数一致1.1 创建Controller1.2 发送请求做测试（由于方法没有限制请求方式，所以get和post均可）2，当请求参数过多时，以对象的方式传递2...]]></description><category></category></item><item><title><![CDATA[003-SpringMVC快速上手]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588366</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588366</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:34:41 +0800</pubDate><description><![CDATA[前面讲了一些理论上的知识，主要是给有经验的小伙伴做下总结，如果没有SpringMVC的开发经验，可以来阅读下这一篇，帮助你快速入门前提说明：我们的工程都是以Maven的方式来构建，所以需要大家对Maven有一定的认识。1，创建Maven工程，类型为war2，引入依赖&amp;lt;dependency&amp;gt;&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt...]]></description><category></category></item><item><title><![CDATA[002-漫谈SpringMVC架构]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588355</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588355</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:33:43 +0800</pubDate><description><![CDATA[1，SpringMVC是一种基于Servlet的技术，他提供了核心控制器DispatcherServlet，整体为松散的结构，方便应对各种灵活要求。整体的架构图如下：2，SpringMVC的整体架构围绕核心控制器DispatcherServlet来进行工作，下面我们来看看具体执行的流程图，都涉及到哪些组件首先，DispatcherServlet接收到一个客户端请求，然后通过HandlerMappi...]]></description><category></category></item><item><title><![CDATA[001-探究MVC设计的发展]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588336</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588336</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:31:53 +0800</pubDate><description><![CDATA[首先，MVC设计是一种理念，并不局限于Java,其他的语言，比如PHP，.NET也同样可以适用。不过在开发的占比中，java依然是主要地位，所以本文将以JavaWeb来进行描述MVC的发展历程。JavaWeb的第一代开发模式，简称Model1以JSP+JavaBean的模式组合，这个模式会存在什么问题，我们以图说话JavaWeb的第二代开发模式，简称Model2，也称为MVC模式相比Model1，...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-final,finally,finalize有什么区别？]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588316</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588316</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:29:51 +0800</pubDate><description><![CDATA[这道题目的出镜率很高，来，我们直接进入主题：finalfinal修饰类，表示该类不可以被继承final修饰变量，表示该变量不可以被修改，只允许赋值一次final修饰方法，表示该方法不可以被重写finallyfinally是java保证代码一定要被执行的一种机制。比如try-finally或try-catch-finally，用来关闭JDBC连接资源，用来解锁等等finalizefinalize是O...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-转发和重定向的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588049</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588049</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:04:49 +0800</pubDate><description><![CDATA[转发和重定向，这是项目开发中的两种跳转方式，其差异也经常被拿来作为面试题。首先，转发是一次请求，就好比你到医院办理相关手续，然后这个窗口可能不能直接搞定，但是他经过内部协调处理，最终还是通过这个窗口给你反馈最终的结果，所以对于你来说，只需要跟一个窗口交互即可。而重定向，是多次请求，还是上面的例子，这个窗口搞不定你的需求，然后他会告诉你去找另一个窗口（服务器内部）或者去另一家医院办理（跳出当前服务器...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-再谈Cookie跟Session的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588035</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588035</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:03:58 +0800</pubDate><description><![CDATA[cookie跟session有何区别，下面我们来谈谈1，存储的位置不同cookie：存放在客户端session：存放在服务端2，存储的数据类型不同两者都是key-value的结构，但针对value的类型是有差异的cookie：value只能是字符串类型session：value是Object类型3，存储的数据大小限制不同cookie：按照不同的浏览器来说，有些细小的差异，但整体来说就是4K的大小s...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-Servlet属于线程安全的吗？]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588019</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80588019</guid><author>happy_coding_life</author><pubDate>Tue, 05 Jun 2018 22:02:52 +0800</pubDate><description><![CDATA[Servlet不是线程安全的。当Tomcat接收到Client的HTTP请求时，Tomcat从线程池中取出一个线程，之后找到该请求对应的Servlet对象并进行初始化，之后调用service()方法。要注意的是每一个Servlet对象再Tomcat容器中只有一个实例对象，即是单例模式。如果多个HTTP请求请求的是同一个Servlet，那么着两个HTTP请求对应的线程将并发调用Servlet的ser...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-ConcurrentHashMap vs HashMap vs LinkedHashMap vs HashTable]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381293</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381293</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:22:13 +0800</pubDate><description><![CDATA[HashMap：查询和插入速度极快，但是线程不安全，在多线程情况下在扩容的情况下可能会形成闭环链路，耗光cpu资源。LinkedHashMap：基本和HashMap实现类似，多了一个链表来维护元素插入的顺序，因此维护的效率会比HashMap略低。但是因为有链表的存在，遍历效率会高于HashMap。HashTable：线程安全，但性能较差，已经不推荐使用ConcurrentHashMap：线程安全，...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-运行时异常和非运行时异常-你分清楚了吗？]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381312</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381312</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:20:40 +0800</pubDate><description><![CDATA[面试中，经常会遇到这样的情况，问：谈谈运行时异常和非运行时异常？答：运行时异常是指程序运行时发生的异常问：那么非运行时异常又是什么时候发生？答：。。。。。。问：请罗列几个常见的运行时异常？答：空指针异常，IOException，SQLException，数组越界异常。。。。以上这样的场景非常常见，其实这是一个非常基础的问题，但发现大家常常搞混。其实这个问题，我个人认为是取的这个名字误导了大家，运行...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-探究JVM中-类的加载机制]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381245</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381245</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:11:10 +0800</pubDate><description><![CDATA[类的加载机制是怎么样的？下面我们分几个部分来讲解1，这些概念你知道是什么意思吗？相信你应该听过不少这样的词语，类加载机制，双亲委托机制，BootstrapClassLoader、ExtClassLoader、AppClassLoader如果你不清楚，这些都是什么意思？没关系，看完下面的内容，你就清楚了2，什么是类的加载机制？所谓类的加载机制是指JVM将java类加载到内存的过程。我们知道，JVM使...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-从源码探究HashSet的工作原理]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381233</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381233</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:09:39 +0800</pubDate><description><![CDATA[HashSet，给我们最直观的感受就是两点，不可重复和无序，底层采用了hash存储结构。其底层是采用了HashMap，今天我们通过深入源码的方式来了解其背后的原理。我们关注的点有几个1，所谓的hash表是一个怎么样的结构?hash表底层结构是一个数组，且数组的元素是一个链表结构。给大家画个图2，是如何保证唯一的？存放进去的细节如何？首先，在hashSet的底层源代码中，我们发现，它采用的HashM...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-ArrayList和Vector的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381219</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381219</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:06:47 +0800</pubDate><description><![CDATA[首先，推荐大家使用ArrayList，了解这个差别，更多是为了应对面试。两者的最大差异就是线程安全ArrayList：线程不安全，但性能高Vector：线程安全，但性能较低我们如何得到一个类是线程安全或不安全的结论的？从源码的角度来说，你大可以打开ArrayList和Vector的源码一对比，即可发现ArrayList的部分源码：public boolean add(E e) {ensureCap...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-谈谈ArrayList和LinkedList的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381203</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381203</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:04:14 +0800</pubDate><description><![CDATA[1，首先，底层的数据结构不同ArrayList底层的数据结构是数组LinkedList底层的数据结构是双向链表2，其次，做增删改查的差异2.1 查询（定位）数组是一段连续的内存空间，所以定位快而链表需要通过上一个节点找到下一个节点，依次类推，所以定位相比数组要慢2.2 增加如果添加到末尾，则差异不大，ArrayList可能会面临扩容的情况，因为底层是数组而LinkedList只需要生成新对象，然后...]]></description><category></category></item><item><title><![CDATA[每天一道面试题：谈谈==和equals的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381192</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381192</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 12:01:59 +0800</pubDate><description><![CDATA[比较基本数据类型时，只能采用==，比较的是数值当比较引用类型时，==比较的是引用的地址，而equals其实也是，我们查看到equals是Object定义的方法，而其默认的实现也是比较地址。而我们经常用到的String类型，因为重写了equals方法，其内部比较的是内容，所以String s1 = new String(&quot;永远相信美好的事情即将发生&quot;);String s2 = new String(...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-String,StringBuffer,StringBuilder的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381163</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381163</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 11:57:50 +0800</pubDate><description><![CDATA[这道题比较简单，整体来说，分两部分来比较1,String vs StringBufferString:不可变StringBuffer:可变所以，如果在一个循环操作，不断对字符串进行拼接操作，那么使用String会不断创建新的对象，这个效率会比较低，在这种情况下，建议采用StringBuffer2，StringBuffer vs StringBuilderStringBuffer：线程安全Strin...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-程序中怎么实现变量值的交换？]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381153</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80381153</guid><author>happy_coding_life</author><pubDate>Sun, 20 May 2018 11:56:53 +0800</pubDate><description><![CDATA[实现两个变量的值交换，有几种实现方式呢？可以很多种，我今天给大家列举三种方式一：采用临时变量的方式假设要交换的两个变量，int a = 1;int b = 2;int temp = a;a = b;b = temp;方式二：采用数学运算的方式a = a+b;b = a-b;a = a-b;不过这种方式，有可能存在越界的情况，不知道大家发现没有？方式三：采用位运算的方式a = a^b;b = a^b...]]></description><category></category></item><item><title><![CDATA[每天一道面试题-&和&&的区别]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80367111</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80367111</guid><author>happy_coding_life</author><pubDate>Fri, 18 May 2018 17:14:06 +0800</pubDate><description><![CDATA[今天这道题非常简单，哈哈- 第一个是作为逻辑运算符使用，被当成逻辑运算符时有一个非短路的特性，即当第一个操作数为false，那么第二个操作数仍然执行。 - 第二个是作为位运算符使用。&amp;amp;&amp;amp;只有一个用法： - 只能作为逻辑运算符使用，和&amp;amp;的区别在于&amp;amp;&amp;amp;有一个短路的特点，即当第一个操作数为false时（因为这个时候已经可以确定表达式的最终结果已经是false），那...]]></description><category></category></item><item><title><![CDATA[02-MySQL优化系列之-你真的掌握了正确的建表方式吗]]></title><link>https://blog.youkuaiyun.com/happy_coding_life/article/details/80367024</link><guid>https://blog.youkuaiyun.com/happy_coding_life/article/details/80367024</guid><author>happy_coding_life</author><pubDate>Fri, 18 May 2018 17:09:34 +0800</pubDate><description><![CDATA[万丈高楼平地起，如何正确创建表非常重要，而如何正确建表，在于如何正确选择合适的数据类型，所以今天我们来谈谈这个话题说明下：因为发现把图表粘贴过来，显示的时候，格式有点乱，所以我采用截图的方式将图表贴到文章中1，数据类型选择的原则原则一：数据类型从小出发通常情况下，应该选择可以正确存储数据的最小数据类型。最小的数据类型意味占用更小的磁盘，内存和CPU缓存。但是提醒一点，要正确估算存储的数据的取值范围...]]></description><category></category></item></channel></rss>