<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pinnuli的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pinnuli</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pinnuli]]></copyright><item><title><![CDATA[Java中的XML之四种方式生成XML文档：DOM，SAX，JDOM，DOM4J]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81297200</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81297200</guid><author>pinnuli</author><pubDate>Tue, 14 Aug 2018 11:57:33 +0800</pubDate><description><![CDATA[现有以下XML文档books.xml,下面的示例生成此文档部分内容



&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;
&amp;amp;lt;bookstore&amp;amp;gt;
    &amp;amp;lt;book id=&amp;quot;1&amp;quot;&amp;amp;gt;
        &amp;amp;lt;name&amp;a]]></description><category></category></item><item><title><![CDATA[Java中的XML之四种方式解析XML文档：DOM，SAX，JDOM，DOM4J]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81297217</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81297217</guid><author>pinnuli</author><pubDate>Tue, 14 Aug 2018 11:57:23 +0800</pubDate><description><![CDATA[现有以下XML文档books.xml,下面的解析示例解析此文档部分内容



&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;
&amp;amp;lt;bookstore&amp;amp;gt;
    &amp;amp;lt;book id=&amp;quot;1&amp;quot;&amp;amp;gt;
        &amp;amp;lt;name&amp]]></description><category></category></item><item><title><![CDATA[Spring Bean装配之基于Java的容器注解]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81297137</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81297137</guid><author>pinnuli</author><pubDate>Tue, 14 Aug 2018 11:57:11 +0800</pubDate><description><![CDATA[@Bean

用于配置和初始化一个有SpringIOC容器管理的新对象的方法，类似于XML配置文件的，通常和@Configuration配合使用



@Configuration
public class StoreConfig {

    @Bean(name = &amp;quot;store&amp;quot;,initMethod = &amp;quot;init&amp;quot;,destroyMethod=&amp;quot;destroy&amp;quot;)
    public ..]]></description><category></category></item><item><title><![CDATA[Java中的XML之与HTML的区别验证，定位信息，命名空间]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81297061</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81297061</guid><author>pinnuli</author><pubDate>Tue, 14 Aug 2018 11:56:57 +0800</pubDate><description><![CDATA[HTML与XML的区别


HTML对大小写不敏感，XML大小写敏感
HTML结束标签可以省略，如&amp;amp;lt;/p&amp;amp;gt;，XML不能
XML只有单个标签而没有结束标签的元素必须以/结束
XML属性值必须用引号括起来
HTML属性可以没有值，XML所有属性必须有值    






验证XML文档

需要指定文档结构时，可以提供一个文档类型定义（DTD）或XML Schema



文档类型定义

...]]></description><category></category></item><item><title><![CDATA[Spring Bean装配之Autowired注解]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81297029</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81297029</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 10:05:59 +0800</pubDate><description><![CDATA[1.可以将@Autowired注解为setter方法



@Autowired
public void setInjectionDAO(InjectionDAO injectionDAO) {
    this.injectionDAO = injectionDAO;
}





2.可以用于构造器或成员变量



@Autowired(required=false)
public void ...]]></description><category></category></item><item><title><![CDATA[Spring Bean装配之各装配项 XML实现和注解实现]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81297012</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81297012</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 10:05:07 +0800</pubDate><description><![CDATA[一、Bean管理的XML配置实现



1.Bean的配置项


Id:Bean的唯一标识
Class：对应实现的类
Scope：范围
Constructor arguments：构造器参数
Properties：属性
Autowiring mode：自动装配模式 
lazy-initialization mode：懒加载模式
Initialization/destruction method：初...]]></description><category></category></item><item><title><![CDATA[JavaWeb 过滤器：工作原理，生命周期，过滤器链，过滤器分类]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81296969</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81296969</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 10:03:36 +0800</pubDate><description><![CDATA[过滤器的工作原理





过滤器的生命周期



过滤器链

Web项目中多个过滤器实现，多个过滤器对应同一个路近执行顺序如何？

过滤器链： 
 
过滤器链执行过程:



过滤器分类




  @WebFilter,在servlet3中，可以使用@WebFilter注解声明过滤器，该注解会在部署时被容器处理，并根据其具体属性配置将其相应的类部署为过滤器，而不用配置
  
  参阅： 
  ...]]></description><category></category></item><item><title><![CDATA[JavaWeb 监听器]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81296893</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81296893</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 10:00:08 +0800</pubDate><description><![CDATA[按监听的对象划分



1.用于监听应用程序环境对象（ServletContext）的事件监听器，实现ServletContextListener接口



public class MyServletContextListener implements ServletContextListener {

    public void contextInitialized(ServletCont...]]></description><category></category></item><item><title><![CDATA[servlet：生命周期，tomcat装载，获取初始化参数]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81296852</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81296852</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 09:58:38 +0800</pubDate><description><![CDATA[servlet生命周期

1.初始化，调用init()方法，生成Servlet实例 
2.响应客户请求，调用service()方法，由service()方法根据提交方式悬着执行doGet()或者doPost()方法 
3.终止，调用destroy()方法 




tomcat装载servlet的三种情况

1.Servlet容器启动时自动装载某些Servlet，需要在web.xml文件中的&amp;lt...]]></description><category></category></item><item><title><![CDATA[git多账号配置，同时使用多个代码托管平台]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81293071</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81293071</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 09:54:50 +0800</pubDate><description><![CDATA[我们在使用git管理代码的时候，经常需要放到不同的托管网站，如github，osc等，那么不同的网站账号不一样，就需要生成不同密钥，配置对应的不同网站，接下来我们写写如何处理。


  ps:这里是在centos7.2下操作，不过其他操作系统依然适用，这里举的例子，一个是github，一个是osc。




1 生成密钥

这里可以设置密钥文件名和路径，/root/.ssh 是路径（一般路径选择默...]]></description><category></category></item><item><title><![CDATA[java Socket应用]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81293089</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81293089</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 09:54:39 +0800</pubDate><description><![CDATA[一、Socket使用时应当注意的一些问题

1.设置超时，从套接字读取信息时，在有数据可供访问之前，读操作会被阻塞，如果此时主机不可达，那么程序将会等待很长时间，并因为系统操作系统的限制最终导致超时


  调用setSoTimeout方法设置




Socket s = new Socket(...);
s.setSoTimeout(10000);


  对构造器Socket(String ...]]></description><category></category></item><item><title><![CDATA[java反射]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81293103</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81293103</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 09:53:40 +0800</pubDate><description><![CDATA[一、Class类的使用

类是对象，任何一个类都是java.lang.class类的实例对象，这个类，这个实例对象可以有三种表达方式，比如Student类： 
- 任何一个类都有一个隐含的静态成员变量class



Class c1 = Student.class;


通过getClass方法获得




Class c2 = Student.getClass();


forName



...]]></description><category></category></item><item><title><![CDATA[JSP学习笔记：简介，内置对象，JavaBean]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292903</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292903</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 09:53:18 +0800</pubDate><description><![CDATA[一、jsp简介



1、jsp三大指令

page指令:&amp;amp;lt;%@page 属性=”” %&amp;amp;gt;,位于jsp页面顶端，可以有多个



&amp;amp;lt;%@ page contentType=&amp;quot;text/html;charset=UTF-8&amp;quot; language=&amp;quot;java&amp;quot; import=&amp;quot;java.text.*&amp;quot;%&amp;amp;gt;


tagli]]></description><category></category></item><item><title><![CDATA[java注解]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81293112</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81293112</guid><author>pinnuli</author><pubDate>Tue, 31 Jul 2018 09:52:45 +0800</pubDate><description><![CDATA[一、注解分类


源码注解（SOURCE）：注解只在源码中存在，编译成.class文件就不存在
编译时注解（CLASS）：注解在源码和.class文件都存在
运行时注解（RUNTIME）：在运行阶段还起作用，甚至会影响运行逻辑的注解
元注解：注解的注解






二、自定义注解



定义：



//元注解
@Target({ElementType.METHOD,ElementType.TYP...]]></description><category></category></item><item><title><![CDATA[java io流与文件]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292966</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292966</guid><author>pinnuli</author><pubDate>Mon, 30 Jul 2018 21:57:06 +0800</pubDate><description><![CDATA[一、流

读写字节 
InputStream.read和OutpueStream.write 
组合流过滤器


某些流（如FileInputStream或者FileOutputStream）只能支持在字节级别上的读写，没有读入数据类型的方法，而其他的流（DataInputStream）这些类就之只能读入数值类型，无法从文件中获取数据，因而对二者进行组合。如：  




FileInputStr...]]></description><category></category></item><item><title><![CDATA[centos7 Let's Encrypt用Certbot获取Https证书 部署nginx（待补充）]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292945</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292945</guid><author>pinnuli</author><pubDate>Mon, 30 Jul 2018 21:55:53 +0800</pubDate><description><![CDATA[1.检查nginx下是否有--with-http_stub_status_module 和--with-http_ssl_module两个模块，安装之后再重新编译



     nginx -V

2.用http克隆github上的certbot



    git clone https://github.com/certbot/certbot /opt/certbot-master

3....]]></description><category></category></item><item><title><![CDATA[java集合框架]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292925</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292925</guid><author>pinnuli</author><pubDate>Mon, 30 Jul 2018 21:54:34 +0800</pubDate><description><![CDATA[一、迭代器

iterator是一个或者实现了Iterator,或者实现ListIterator接口的对象，可以通过循环输出类集的内容，从而获得或删除元素，


next()方法 
逐个访问集合中的每个元素，经常需要与hasNext()方法搭配使用；
java迭代器可以认为位于两个元素之家，当调用next()时，迭代器越过下一个元素，并返回刚刚越过的那个元素的引用
用”for each”循环遍历类...]]></description><category></category></item><item><title><![CDATA[vim的使用，常用命令]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292863</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292863</guid><author>pinnuli</author><pubDate>Mon, 30 Jul 2018 21:50:33 +0800</pubDate><description><![CDATA[一、一般模式：光标的移动、复制粘贴、搜索替换



移动光标：

* 向左移动一个字符：h 或 ← * 
* 向右移动一个字符：l 或 → * 
* 向上移动一个字符：k 或 ↑ * 
* 向下移动一个字符：j 或 ↓ * 
向左移动n个字符：n + h（其他同理)，如10h 
向右移动这一行的n个字符(会换到下一行)：n + space,如20space 
屏幕向上移动一页：Ctrl + b 
...]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 使用技巧（待补充）]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292842</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292842</guid><author>pinnuli</author><pubDate>Mon, 30 Jul 2018 21:49:21 +0800</pubDate><description><![CDATA[一、跳转快捷键

窗口切换：Ctrl + alt + [ / ] 
文件切换：alt + -&amp;gt; / &amp;lt;- 
关闭文件：ctrl + f4 
最近修改文件： ctrl + tab + E 
最近浏览文件： ctrl + E 
回到上次编辑的地方 last edit location: ctrl + shift + backspace  
回到上次浏览的地方 back/forward: c...]]></description><category></category></item><item><title><![CDATA[进程并发常见问题基于信号量解决方法总结：生产者/消费者问题、读/写者问题、银行家算法、哲学家进餐（待补充）]]></title><link>https://blog.youkuaiyun.com/pinnuli/article/details/81292808</link><guid>https://blog.youkuaiyun.com/pinnuli/article/details/81292808</guid><author>pinnuli</author><pubDate>Mon, 30 Jul 2018 21:47:58 +0800</pubDate><description><![CDATA[一、信号量


信号量是一个与队列有关的整型变量。
可以初始化成非负数；
semWait操作使信号量减1。若值为负数，则执行semWait的进程阻塞，否则继续执行；
semSignal操作使信号量加1。若值小于或等于0，则被semWait操作阻塞的进程被解除阻塞。




信号量原语semWait和semSignal的定义



strcut semaphore{
    int count;
 ...]]></description><category></category></item></channel></rss>