<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[p744174529的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/p744174529</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; p744174529]]></copyright><item><title><![CDATA[Java Socket搭建一个简单地Web服务器（1）]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/73823799</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/73823799</guid><author>p744174529</author><pubDate>Tue, 27 Jun 2017 21:17:39 +0800</pubDate><description><![CDATA[今天突然想写一个简单地Web服务器，根据我对Tomcat的了解，简单总结了一下写一个简单地服务器需要哪些步骤：
1.首先肯定要借助ServerSocket和Socket这两个类。
2.ServerSocket类指定服务器接口。
3.ServerSocket调用accept()方法生成一个Socket对象，Socket对象调用getInputStream()获得浏览器发来的Http请求的基本信]]></description><category></category></item><item><title><![CDATA[java源代码学习——InputStream]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/73331196</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/73331196</guid><author>p744174529</author><pubDate>Fri, 16 Jun 2017 14:33:25 +0800</pubDate><description><![CDATA[InputStream :
一个abstract类
已知直接子类：
AudioInputStream,ByteArrayInputStream,FileInputStream
FilterInputStream,
org.omg.CORBA.portable.InputStream
ObjectInputStram
PipedInputStream
SequenceInputStr]]></description><category></category></item><item><title><![CDATA[由Spring引出的一些瞎想（3）]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/73251728</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/73251728</guid><author>p744174529</author><pubDate>Wed, 14 Jun 2017 20:31:21 +0800</pubDate><description><![CDATA[上次虽然可以不依赖与构造方法的参数，但是依旧要求为每个参数写一个构造方法，这次就完全去掉构造方法。


既然不使用构造方法来生成实例对象，那么就一定要用到Method和Field两个类。


基本思路如下：getDeDe
1.XML解析思路不变，最终解析还是返回一个List.
2.创建Bean的方法要发生改变，这次先要用Field类的getName方法返回要生成Bean的类的全部属]]></description><category></category></item><item><title><![CDATA[JAVA源码学习（1）——Integer]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/73195198</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/73195198</guid><author>p744174529</author><pubDate>Tue, 13 Jun 2017 20:50:41 +0800</pubDate><description><![CDATA[Integer类继承Number类，实现Comparable接口


Number是一个抽象类，里面定义了对应int，float等数据类型的多种抽象方法


Integer的parseInt方法：

parseInt(String s)默认调用parseInt(s，10)
parseInt(String s,int radix):radix为String表示的数是以几进制的形式表]]></description><category></category></item><item><title><![CDATA[由Spring引出的一些瞎想（2）]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/73105024</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/73105024</guid><author>p744174529</author><pubDate>Mon, 12 Jun 2017 13:57:33 +0800</pubDate><description><![CDATA[之前利用List进行创建实例，主要存在的问题是要求各个类的属性的个数必须一致。


为了能够可以不受这个限制，考虑用Map来存放XML中的配置信息






因为要创建XML中配置的所有的对象，所以还是用List来储存，不同的的是List，用map来储存创建实例所需要的全部信息。每个map除了需要有创建实例所需要的属性以外，还要有该类的全类名。这个全类名也从XML中获取。
]]></description><category></category></item><item><title><![CDATA[由Spring引出的一些瞎想（1）]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/73061020</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/73061020</guid><author>p744174529</author><pubDate>Sun, 11 Jun 2017 19:06:09 +0800</pubDate><description><![CDATA[在学习Spring的时候，突然想自己写一个解析XML得到并得到实例对象的方法。




打算分成两个步骤来完成：
1.解析XML，得到基本信息。
2.由解析得到的内容创建实例对象。




首先来写一个XML文件，自己给XML文件定义了一系列规则：
XML文件每个Bean中必须有一个class标签，class标签内的内容为要创建的对象的类型。
每个POJO必须有一个构造]]></description><category></category></item><item><title><![CDATA[当你输入网址时都发生了什么（2）——TCP链接的建立]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/72871297</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/72871297</guid><author>p744174529</author><pubDate>Mon, 05 Jun 2017 21:01:53 +0800</pubDate><description><![CDATA[关于TCP有一个重要并且著名的三次握手和四次分手，这里只说一下三次握手
首先看一下TCP包的首部结构




可以看到在这个结构的中间有URG，ACK等标识。
当客户机要和服务器建立链接时，就要通过这些标识来确认链接。
这里我们讨论的主要是SYN，ACK，SEQ。
首先，客户端发送一个SYN为1，且SEQ为随机（记为X）的一个包给服务器
服务器收到后，会产生一个SEQ（Y）为随]]></description><category></category></item><item><title><![CDATA[mysql之TIMESTAMP（时间戳）用法详解]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/72853068</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/72853068</guid><author>p744174529</author><pubDate>Sat, 03 Jun 2017 16:57:38 +0800</pubDate><description><![CDATA[一、TIMESTAMP的变体

TIMESTAMP时间戳在创建的时候可以有多重不同的特性，如：

1.在创建新记录和修改现有记录的时候都对这个数据列刷新：


TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP


2.在创建新记录的时候把这个字段设置为当前时间，但以后修改时，不再刷新它：


T]]></description><category></category></item><item><title><![CDATA[java web在linux环境下上传文件出现的一些问题]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/72852111</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/72852111</guid><author>p744174529</author><pubDate>Sat, 03 Jun 2017 14:55:21 +0800</pubDate><description><![CDATA[昨天做了一个文件的上传和下载功能，在win环境下测试没有问题，但是项目打包发布到linux时就出现了各种问题。记录一下出现的问题和解决方案。
使用的server服务器是tomcat，数据库是mysql。


首先，我在win环境下上传路径设置的是request.getSession().getServletContext().getRealPath("\\")+File.separator]]></description><category></category></item><item><title><![CDATA[当你输入网址时都发生了什么(1）——URL解析与DNS]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/72828489</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/72828489</guid><author>p744174529</author><pubDate>Thu, 01 Jun 2017 09:56:37 +0800</pubDate><description><![CDATA[最近做Java Web也有一段时间了，既然做网站，那么怎么能对访问网站的流程没有一个基本的呢，所以就整理了一下从输入网址并回车的到成功访问到网站的一个过程。
简单来说，访问网址的过程大致可以分为五步：
1.解析URL。
2.浏览器发起DNS查询请求。
3.浏览器与网站建立连接。
4.进行数据的请求和传输。
5.浏览器根据服务器发回的内容解析并渲染页面。


这篇文章中我先介绍第一]]></description><category></category></item><item><title><![CDATA[关于java web中session的一些注意事项与总结]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71716097</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71716097</guid><author>p744174529</author><pubDate>Fri, 12 May 2017 12:38:44 +0800</pubDate><description><![CDATA[session的创建时机：
session的创建并不是在浏览器向服务器发出请求的瞬间产生的，而是在server端调用HttpServletRequest.getSession()时创建的。
在一个jsp页面中，session能够作为隐式对象被调用是因为jsp在编译的过程中自动调用了HttpServletRequest.getSession()。
而当在jsp商品页面中使用时，jsp页面将不会]]></description><category></category></item><item><title><![CDATA[<ref bean>使用注意事项]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71404199</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71404199</guid><author>p744174529</author><pubDate>Mon, 08 May 2017 11:09:33 +0800</pubDate><description><![CDATA[最近在学习spring过程中，有人问我为什么使用标签时总是显示bean未定义。
为了解决这个问题，就要分析一下bean的加载机制和的作用范围。
首先，查找的范围有两个，一个是当前xml文档，另一个是和它属于同一BeanFactory中的其他javabean。
而对于bean的加载，以scope为单例为例，bean是在ApplicationContext对象创建时调用。
例如Applicat]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——从尾到头打印链表]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71280902</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71280902</guid><author>p744174529</author><pubDate>Sat, 06 May 2017 19:30:20 +0800</pubDate><description><![CDATA[题目表述：输入一个链表，从尾到头打印链表每个节点的值。
这个题目可以利用Stack的特点。Stack是先入后出，可以利用Stack的pop方法从尾部弹出元素，把弹出的元素放入一个数组中，再将这个数组从头到尾输出。]]></description><category></category></item><item><title><![CDATA[在腾讯云Centos7系统下配置tomcat]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71189016</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71189016</guid><author>p744174529</author><pubDate>Thu, 04 May 2017 21:21:48 +0800</pubDate><description><![CDATA[首先要确保jdk已经正确安装和配置
然后下载tomcat安装包，这里我用的是wget命令下载，下载地址可以登录tomcat的主页，点击gz包，此时的url就是wget需要的地址


下载完成后用tar命令，解压安装。
之后，我们要进入tomcat安装目录下的bin文件夹，用sudo sh startup.sh命令，启动tomcat


然后我们可以来看一下启动是否成功。输入curl]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——用两个栈实现队列]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71173355</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71173355</guid><author>p744174529</author><pubDate>Thu, 04 May 2017 18:31:16 +0800</pubDate><description><![CDATA[题目描述：用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。
首先我们知道，栈的特点是先入后出，而队列的特点是先入先出。
假设有abc这三个数，对于栈来说，它的入栈顺序是abc，而出栈顺序是cba，而对于队列来说，它的入列和出列顺序都是abc。那么如果我们用对abc进行出栈操作，把出栈的元素按顺序放入另一个栈（记作栈2），那么栈2的入栈顺序就是cba，那么就可]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——替换空格]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71171780</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71171780</guid><author>p744174529</author><pubDate>Thu, 04 May 2017 16:20:03 +0800</pubDate><description><![CDATA[题目描述：请实现一个函数，将一个字符串中的空格替换成“%20”。例如，当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
这道题的步骤大致是这样的：1.计算字符串中空格的数量。2.计算替换后字符串的长度。3.进行替换]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——矩形覆盖]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71137355</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71137355</guid><author>p744174529</author><pubDate>Wed, 03 May 2017 19:01:24 +0800</pubDate><description><![CDATA[题目描述：我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形，总共有多少种方法？
还是一个斐波那契数列问题，直接放代码：]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——二维数组中的查找]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/71079919</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/71079919</guid><author>p744174529</author><pubDate>Tue, 02 May 2017 12:40:13 +0800</pubDate><description><![CDATA[题目描述：在一个二维数组中，每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。
常规思路肯定就是按照顺序遍历二维数组，但是这样时间复杂度太高。这个问题其实如果大学里学过运筹学的话解决起来特别简单。我们看这个二维数组有什么特点。这个数组每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——变态跳台阶]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/70903916</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/70903916</guid><author>p744174529</author><pubDate>Fri, 28 Apr 2017 13:06:40 +0800</pubDate><description><![CDATA[题目描述：一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
这个题和之前的跳台阶问题很相似，主要解决点在于找出规律和用循环代替递归。]]></description><category></category></item><item><title><![CDATA[剑指offer（java代码）——和为S的两个数字]]></title><link>https://blog.youkuaiyun.com/p744174529/article/details/70888768</link><guid>https://blog.youkuaiyun.com/p744174529/article/details/70888768</guid><author>p744174529</author><pubDate>Fri, 28 Apr 2017 10:43:46 +0800</pubDate><description><![CDATA[题目描述：输入一个递增排序的数组和一个数字S，在数组中查找两个数，使得他们的和正好是S，如果有多对数字的和等于S，输出两个数的乘积最小的。 

这道题友好就友好在给的是一个递增数组。对于递增数组，我们可以去计算数组第一个数字和数组最后一个数字的和，如果和小于S，那么我们就去计算第二个数与最后一个数的和。如果大于S，我们就计算数组第一个数与倒数第二个数的和。这样做的一个好处是，我们找到的第一个符]]></description><category></category></item></channel></rss>