<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[minGW_Lee on the way]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/github_34606293</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_34606293]]></copyright><item><title><![CDATA[高性能网络服务器编程]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/80006487</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/80006487</guid><author>github_34606293</author><pubDate>Thu, 19 Apr 2018 16:08:13 +0800</pubDate><description><![CDATA[下面来解释下为什么Linux AIO 和Java AIO都不使用！

基本的IO编程过程（包括网络IO和文件IO）：


打开文件描述符（windows是handler，java是stream或channel）
多路捕获（Multiplexe，即select和poll和epoll）IO可读写的状态
可以读写的文件描述符进行IO读写


由于IO设备速度和CPU内存比速度会慢，为了更好的利用CPU和...]]></description><category></category></item><item><title><![CDATA[Java IO 再理解]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/80004786</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/80004786</guid><author>github_34606293</author><pubDate>Thu, 19 Apr 2018 14:46:46 +0800</pubDate><description><![CDATA[上一次写对Java IO的理解，主要是各种查资料进行汇总，觉得自己对IO理解的差不多了。 
直到最近参加面试之后，我感觉自己对IO的理解还是有些偏差，于是重新查阅一些资料，有了一些新的见解。

同步与异步

通过上一篇博客Java IO 深入理解的介绍，我们已经知道对于一个IO操作，它会涉及到两个系统对象，一个是调用这个IO的process(or Thread)，另一个就是系统内核（Kernel）...]]></description><category></category></item><item><title><![CDATA[Struts2：输入校验-基于XML配置方式实现]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751322</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751322</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:09:32 +0800</pubDate><description><![CDATA[使用基于XML配置方式实现输入校验时，Action也需要继承ActionSupport，并且提供校验文件，校验文件和action类放在同一个包下，文件的取名格式为：ActionClassName-validation.xml，其中ActionClassName为action的简单类名，-validation为固定写法。如果Action类为cn.itcast.UserAction，那么该文件的取名应...]]></description><category></category></item><item><title><![CDATA[Struts2：输入校验-采用手工编写代码实现]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751313</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751313</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:08:39 +0800</pubDate><description><![CDATA[在struts2中，我们可以实现对action的所有方法校验或者对action的制定方法进行校验。

对于输入校验struts2提供了两种实现方法:


采用手工编写代码实现
基于XML配置方式实现


1.采用手工编写代码实现 
(1)对action中的所有方法校验 
通过重写validate()方法实现，validate()方法会校验action中所有与execute方法签名相同的方法。当某个...]]></description><category></category></item><item><title><![CDATA[Struts2：输入校验的流程]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751303</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751303</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:06:39 +0800</pubDate><description><![CDATA[在点击提交后，struts会对其进行处理。 
1.类型转化器对请求参数执行类型转换，并把转换后的值赋给action中的值 
（jsp中的值，传到Action中时 对应属性转换失败）

2.如果在执行类型转换的过程中出现异常，系统会将异常信息保存到ActionContext，conversionError拦截器将异常信息添加到fieldErrors里。不管类型转换是否出现异常，都会进入第3步。

3...]]></description><category></category></item><item><title><![CDATA[Struts2：自定义拦截器]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751298</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751298</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:06:16 +0800</pubDate><description><![CDATA[要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口：



public class PermissionInterceptor implements Interceptor {

    @Override
    public void destroy() {
        // TODO Auto-generated m...]]></description><category></category></item><item><title><![CDATA[Struts2：文件上传]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751292</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751292</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:05:19 +0800</pubDate><description><![CDATA[第一步: 
在WEB-INF/lib下加入commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar(FileUtils工具类在这个jar文件中)

第二步：把form表的enctype设置为：“multipart/form-data”，如下：

&amp;lt;form action=&quot;addfile&quot; enctype=&quot;multipart/form-data&quot; ...]]></description><category></category></item><item><title><![CDATA[Struts2：访问或添加request/session/application属性]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751284</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751284</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:03:32 +0800</pubDate><description><![CDATA[Structs2为了避免你直接访问servlet API ，它对request/session/application 这三个范围进行了封装，可以通过ActionContext对象获取



public String execute() throws UnsupportedEncodingException
{
    ActionContext ctx = ActionContext.getC...]]></description><category></category></item><item><title><![CDATA[Struts2：自定义类型转换器]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751273</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751273</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:02:10 +0800</pubDate><description><![CDATA[public class DateTypeConverter extends DefaultTypeConverter {              
         //必须继承DefaultTypeConverter类
         //然后重写convertValue方法
    @Override
    public Object convertValue(Map&amp;lt;Strin...]]></description><category></category></item><item><title><![CDATA[Struts2：接收请求参数]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751265</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751265</guid><author>github_34606293</author><pubDate>Fri, 30 Mar 2018 00:01:14 +0800</pubDate><description><![CDATA[1.采用基本类型接收请求参数(get/post) 
在Action类中定义与请求参数同名的属性，struts2便能自动接收请求参数并赋予给同名属性 
请求路径:  http://localhost:8080/test/view.action?id=78



public class ProductAction{

     private Integer id;
     //构建GET SET...]]></description><category></category></item><item><title><![CDATA[Struts2：使用通配符定义action]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751255</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751255</guid><author>github_34606293</author><pubDate>Thu, 29 Mar 2018 23:59:29 +0800</pubDate><description><![CDATA[&amp;lt;action name=&quot;list_*&quot; class=&quot;cn.itcast.action.HelloWorldAction&quot; method=&quot;{1}&quot;&amp;gt;
    &amp;lt;result name=&quot;success&quot;&amp;gt;/WEB-INF/page/{1}.jsp&amp;lt;/result&amp;gt;
&amp;lt;/action&amp;gt;

list_addUI   ]]></description><category></category></item><item><title><![CDATA[Struts2：result配置的各种视图转发类型]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751244</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751244</guid><author>github_34606293</author><pubDate>Thu, 29 Mar 2018 23:58:04 +0800</pubDate><description><![CDATA[result配置类似于struts1中的forward，但struts2中提供了多种结果类型，常用的类型有：dispatcher（默认值）、redirect、redirectAction、plainText。

在result中还可以使用${属性名}表达式访问action中的属性，表达式里的属性名对应action中的属性。如下：



&amp;lt;result type=&quot;redirect&quot;&amp;gt;/...]]></description><category></category></item><item><title><![CDATA[Struts2：Action配置中的各项默认值]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751236</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751236</guid><author>github_34606293</author><pubDate>Thu, 29 Mar 2018 23:56:57 +0800</pubDate><description><![CDATA[&amp;lt;package name=&quot;itcast&quot; namespace=&quot;/test&quot; extends=&quot;struts-default&quot;&amp;gt;
    &amp;lt;action name=&quot;helloworld&quot; class=&quot;cn.itcast.action.HelloWorldAction&quot; method=&quot;execute&quot;&amp;gt;
        &am]]></description><category></category></item><item><title><![CDATA[Struts2：搭建Struts2环境]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751226</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751226</guid><author>github_34606293</author><pubDate>Thu, 29 Mar 2018 23:55:55 +0800</pubDate><description><![CDATA[搭建Struts2环境时，一般需要做以下3个步骤：


找到开发Struts2应用需要使用到的jar文件
编写Struts2的配置文件
在web.xml中加入Struts2 MVC框架启动配置


1.下载struts2完整包 
注： 不要全选所有的包拉到web-inf的lib目录下，因为有些牵扯到和第三方框架插件包，但是本身没有提供第三方框架的类，会报找不到第三方框架类的错误。



只需要拉必...]]></description><category></category></item><item><title><![CDATA[Struts2：第一个Struts2应用Hello world]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79751211</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79751211</guid><author>github_34606293</author><pubDate>Thu, 29 Mar 2018 23:53:24 +0800</pubDate><description><![CDATA[配置struts.xml文件

在struts2框架中使用包来管理Action，包的作用和java中的类包是非常相似的，它主要用于管理一组业务功能相关的action。在实际应用中，我们应该把一组业务功能相关的Action放在同一个包下。

配置包时必须指定name属性，该name属性值可以任意取名，但必须唯一，它不对应java的类包，如果其他包要继承该包，必须通过该属性进行引用。包的namespa...]]></description><category></category></item><item><title><![CDATA[Oracle和Mysql的区别]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79654753</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79654753</guid><author>github_34606293</author><pubDate>Thu, 22 Mar 2018 15:24:20 +0800</pubDate><description><![CDATA[一、并发性

并发性是oltp数据库最重要的特性，但并发涉及到资源的获取、共享与锁定。

mysql: 
mysql以表级锁为主，对资源锁定的粒度很大，如果一个session对一个表加锁时间过长，会让其他session无法更新此表中的数据。 
虽然InnoDB引擎的表可以用行级锁，但这个行级锁的机制依赖于表的索引，如果表没有索引，或者sql语句没有使用索引，那么仍然使用表级锁。

oracle: ...]]></description><category></category></item><item><title><![CDATA[309. Best Time to Buy and Sell Stock with Cooldown]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/79148056</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/79148056</guid><author>github_34606293</author><pubDate>Wed, 24 Jan 2018 10:46:33 +0800</pubDate><description><![CDATA[题目:

Say you have an array for which the i-th element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, bu]]></description><category></category></item><item><title><![CDATA[Spring中Bean及@Bean的理解]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/78868945</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/78868945</guid><author>github_34606293</author><pubDate>Fri, 22 Dec 2017 00:00:18 +0800</pubDate><description><![CDATA[Bean在Spring和SpringMVC中无所不在，将这个概念内化很重要，下面分享一下我的想法：@Bean 只能用在方法上一、Bean是啥
Java面向对象，对象有方法和属性，那么就需要对象实例来调用方法和属性（即实例化）；
凡是有方法或属性的类都需要实例化，这样才能具象化去使用这些方法和属性；
规律：凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解；
把Bean理解为]]></description><category></category></item><item><title><![CDATA[Java: Timer启用后无法停止？如何停止Timer]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/78661341</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/78661341</guid><author>github_34606293</author><pubDate>Wed, 29 Nov 2017 08:58:52 +0800</pubDate><description><![CDATA[利用Timer和TimerTask可以实现定时完成某些任务。但是在运行过程中出现了很奇怪的现象： 
所有TimerTask都完成了，按理说线程应该自动退出，但是它却没有！在JDK1.5的文档Timer类中，有这样一句话： 
“对 Timer 对象最后的引用完成后，并且 所有未处理的任务都已执行完成后，计时器的任务执行线程会正常终止（并且成为垃圾回收的对象）。但是这可能要很长时间后才发生。”但是这个“]]></description><category></category></item><item><title><![CDATA[Palindromic Substrings]]></title><link>https://blog.youkuaiyun.com/github_34606293/article/details/78644217</link><guid>https://blog.youkuaiyun.com/github_34606293/article/details/78644217</guid><author>github_34606293</author><pubDate>Mon, 27 Nov 2017 13:46:27 +0800</pubDate><description><![CDATA[Given a string, your task is to count how many palindromic substrings in this string. 
  The substrings with different start indexes or end indexes are counted as different substrings even they consist]]></description><category></category></item></channel></rss>