<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[caohuilei的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/caohuilei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; caohuilei]]></copyright><item><title><![CDATA[一个人工智能 ai资讯类的网站]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/137757042</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/137757042</guid><author>caohuilei</author><pubDate>Sun, 14 Apr 2024 22:47:24 +0800</pubDate><description><![CDATA[一个人工智能 ai资讯类的网站]]></description><category></category></item><item><title><![CDATA[人工智能的未来]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/136423566</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/136423566</guid><author>caohuilei</author><pubDate>Sat, 02 Mar 2024 22:06:20 +0800</pubDate><description><![CDATA[撒阿萨。]]></description><category></category></item><item><title><![CDATA[常量池 java1.7 1.8]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/103372111</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/103372111</guid><author>caohuilei</author><pubDate>Tue, 03 Dec 2019 17:26:49 +0800</pubDate><description><![CDATA[总结：

   new String("xxx")："xxx"字面量自动常量池里，但返回的是堆中的对象引用。

  new String("xxx") +new String("bbb"): xxx 和 bbb 会自动放到常量池，但是结果返回的是堆中的对象；常量池中并不存在xxxbbb

   intern():如果常量池中存在此对象的字符串，则不作操作，返回常量池对象引用...]]></description><category></category></item><item><title><![CDATA[http协议 缓存过期]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/89043926</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/89043926</guid><author>caohuilei</author><pubDate>Fri, 05 Apr 2019 15:37:03 +0800</pubDate><description><![CDATA[Cache-Control:

no-cache 无缓存

max-age=512  阿里云cdn通过这种方式控制缓存过期时间，如果过期去源站获取数据。如果设置的时间过程（如果不设置默认一年），就算源站更新，那也很长时间之后才会更新cdn数据。
...]]></description><category></category></item><item><title><![CDATA[idea 生成 serializable id]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/88199957</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/88199957</guid><author>caohuilei</author><pubDate>Tue, 05 Mar 2019 19:54:30 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[java升级带来的问题]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/87618044</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/87618044</guid><author>caohuilei</author><pubDate>Mon, 18 Feb 2019 14:14:08 +0800</pubDate><description><![CDATA[jdk从1.7升级到1.8之后出现如下错误 


2019-02-18 11:56:54,425 ERROR [localhost-startStop-1] (FrameworkServlet.java:457) - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreExceptio...]]></description><category></category></item><item><title><![CDATA[Java加载文件]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/85148683</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/85148683</guid><author>caohuilei</author><pubDate>Thu, 20 Dec 2018 23:57:07 +0800</pubDate><description><![CDATA[一般加载文件有两种方式，1.利用类的加载方法 2.利用类加载器的加载方法

1.利用类的加载方法

Class.getResource(String path)

如果以"/"开头，则是从classpath根开始查找

如果不以"/"开头，则是从此类所在的包下查找

2.利用类加载器加载

Class.getClassLoader().getResource(String path)

不能以"/...]]></description><category></category></item><item><title><![CDATA[org.apache.commons.net.io.CopyStreamException: IOException caught while copying.]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/84946781</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/84946781</guid><author>caohuilei</author><pubDate>Mon, 10 Dec 2018 21:26:21 +0800</pubDate><description><![CDATA[使用ftp上传，我的原因是 远程服务器有一个相同的文件，并且处于打开状态（不知道这样描述对不对）]]></description><category></category></item><item><title><![CDATA[IDEA部署tomcat时 部署路径的设置方式]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/84893563</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/84893563</guid><author>caohuilei</author><pubDate>Sat, 08 Dec 2018 16:21:40 +0800</pubDate><description><![CDATA[在idea部署时会改变tomcat 的catalina.base的路径，以本机（mac）为例，catalina.base的路径为：


/Users/uc/Library/Caches/IntelliJIdea2018.2/tomcat/Unnamed_servletDemo

此目录下包含配置信息，其中server.xml的片段为:


&amp;lt;Host name=&quot;localhost&quot; app...]]></description><category></category></item><item><title><![CDATA[idea 注释格式化之后回到同一行]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/84779831</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/84779831</guid><author>caohuilei</author><pubDate>Mon, 03 Dec 2018 21:25:06 +0800</pubDate><description><![CDATA[格式化前：

使用Shift+Alt+Ctrl+L 格式化后：

但是我不想格式化后注释回到同一行，可以如下设置：

Preferences-&amp;gt;Editor-&amp;gt;Code Style-&amp;gt;Java-&amp;gt;JavaDoc 将Preserve line feeds 选中

...]]></description><category></category></item><item><title><![CDATA[生成web service 客户端代码]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/84402635</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/84402635</guid><author>caohuilei</author><pubDate>Fri, 23 Nov 2018 23:09:31 +0800</pubDate><description><![CDATA[首先可以使用java命令wsimport生成客户端代码，命令如下：


wsimport -s ~/work -p demo.chh.test http://xxxxx/abc?wsdl

但是在使用中报错如下：


正在解析 WSDL...


[ERROR] &quot;不支持使用 SOAP 编码。
http://xxxx/abc?wsdl中的第 57 行上的 SOAP 扩展元素包含 use=&quot;enco...]]></description><category></category></item><item><title><![CDATA[soap restful提供的服务的一些理解]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/84403586</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/84403586</guid><author>caohuilei</author><pubDate>Fri, 23 Nov 2018 21:12:23 +0800</pubDate><description><![CDATA[1.资源定位

soap建立在http协议的基础上，基于xml格式，定义了一套访问资源的标准。

restful通过url本身就可以定位资源

2.对资源的描述

soap可以使用wsdl对资源进行描述

restful没有方式对资源进行描述

3.易用性

soap使用一般借助第三方框架，比如java本身实现对web service的实现（jax-ws）或者是axis,但是使用起来还是会有各种问...]]></description><category></category></item><item><title><![CDATA[FTP 获取文件列表 报FTPConnectionClosedException异常]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/84347384</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/84347384</guid><author>caohuilei</author><pubDate>Fri, 23 Nov 2018 19:42:41 +0800</pubDate><description><![CDATA[使用apache common-net的FTP工具（FTPClient)获取文件列表（listFiles方法）时报如下异常：


org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received.  Server closed connection.

原因客户端连接服务端的模式有关系，将连接模式改...]]></description><category></category></item><item><title><![CDATA[openjdk 下载]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/83107185</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/83107185</guid><author>caohuilei</author><pubDate>Wed, 17 Oct 2018 11:30:44 +0800</pubDate><description><![CDATA[http://download.java.net/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-b147-27_jun_2011.zip]]></description><category></category></item><item><title><![CDATA[spring源代码阅读2----xml解析]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/81087186</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/81087186</guid><author>caohuilei</author><pubDate>Tue, 17 Jul 2018 21:32:21 +0800</pubDate><description><![CDATA[大部分自定义配置都是放在xml中的，spring容器需要解析xml对BeanFactory进行初始化。下面说一下解析过程，以ClassPathXmlApplicationContext类说明。

ClassPathXmlApplicationContext文件初始化方法如下：


public ClassPathXmlApplicationContext(
			String[] configLo...]]></description><category></category></item><item><title><![CDATA[spring源代码阅读1----容器加载]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/81077863</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/81077863</guid><author>caohuilei</author><pubDate>Tue, 17 Jul 2018 11:29:25 +0800</pubDate><description><![CDATA[以ClassPathXmlApplicationContext分析容器的加载过程，也就是BeanFactory的生成过程。

ClassPathXmlApplicationContext构造方法如下：


	public ClassPathXmlApplicationContext(
			String[] configLocations, boolean refresh, @Nullable A...]]></description><category></category></item><item><title><![CDATA[quartz原理分析5----关于加锁]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/81073087</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/81073087</guid><author>caohuilei</author><pubDate>Mon, 16 Jul 2018 23:12:13 +0800</pubDate><description><![CDATA[如果在集群环境，就需要面临多个服务器同时访问任务的问题，如果不对并发访问进行控制，可能造成数据的不一致。quartz使用数据库加锁的方式来控制并发访问。

使用数据库锁必须在集群环境下，设置集群环境需要在quartz.properties中进行如下设置：


org.quartz.jobStore.isClustered = true

在quartz中需要加锁的场景有很多，比如获取触发器时，更新...]]></description><category></category></item><item><title><![CDATA[quartz原理分析4----任务执行]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/81072683</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/81072683</guid><author>caohuilei</author><pubDate>Mon, 16 Jul 2018 22:25:02 +0800</pubDate><description><![CDATA[任务执行是通过QuartzSchedulerThread类来实现的，此类继承了Thread，可以作为一个线程单独运行。QuartzScheduler有个此类的属性，在QuartzScheduler初始化的时候会创建线程并执行。

QuartzSchedulerThread有个状态属性，在初始执行的时候状态pause=true，只有在初始化完成之后（QuartzScheduler.start()）才...]]></description><category></category></item><item><title><![CDATA[quartz原理分析3----调度任务启动过程]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/81067821</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/81067821</guid><author>caohuilei</author><pubDate>Mon, 16 Jul 2018 17:20:01 +0800</pubDate><description><![CDATA[调度任务的启动是通过Scheduler的start()方法实现的。


public void start() throws SchedulerException {
    sched.start();
}

sched是QuartzScheduler对象。


public void start() throws SchedulerException {

        if (shutti...]]></description><category></category></item><item><title><![CDATA[quartz原理分析2----job和trigger的存储]]></title><link>https://blog.youkuaiyun.com/caohuilei/article/details/81066370</link><guid>https://blog.youkuaiyun.com/caohuilei/article/details/81066370</guid><author>caohuilei</author><pubDate>Mon, 16 Jul 2018 16:44:56 +0800</pubDate><description><![CDATA[    对于数据库模式的调度任务，job和trigger需要被存储到数据库中。当服务器再次启动的时候调度任务可以继续执行。

    下面分析任务的存储代码。


   public static void main(String[] args) throws SchedulerException {

        SchedulerFactory sf = new StdSchedulerF...]]></description><category></category></item></channel></rss>