Scrapy 入门教程(RUNOOB.COM)

Scrapy 入门教程

  • Scrapy的运作流程
  • 制作 Scrapy 爬虫 一共需要4步:
  • 入门案例
    • 学习目标
    • 一. 新建项目(scrapy startproject)
    • 二、明确目标(mySpider/items.py)
    • 三、制作爬虫 (spiders/itcastSpider.py)
      • 1. 爬数据
      • 2. 取数据

Scrapy 入门教程(RUNOOB.COM)_第1张图片

  • Scrapy Engine(引擎):
    负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
    Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
    Downloader(下载器):负责下载Scrapy
    Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy
    Engine(引擎),由引擎交给Spider来处理,
    Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器).
    Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
    Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。 Spider
    Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

Scrapy的运作流程

代码写好,程序开始运行…
1 引擎:Hi!Spider, 你要处理哪一个网站?
2 Spider:老大要我处理xxxx.com。
3 引擎:你把第一个需要处理的URL给我吧。
4 Spider:给你,第一个URL是xxxxxxx.com。
5 引擎:Hi!调度器,我这有request请求你帮我排序入队一下。
6 调度器:好的,正在处理你等一下。
7 引擎:Hi!调度器,把你处理好的request请求给我。
8 调度器:给你,这是我处理好的request
9 引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求
10 下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)
11 引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的)
12 Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。
13 引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。
14 管道调度器:好的,现在就做!

制作 Scrapy 爬虫 一共需要4步:

1.新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
2.明确目标 (编写items.py):明确你想要抓取的目标
3.制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
4.存储内容 (pipelines.py):设计管道存储爬取内容

入门案例

学习目标

创建一个Scrapy项目
定义提取的结构化数据(Item)
编写爬取网站的 Spider 并提取出结构化数据(Item)
编写 Item Pipelines 来存储提取到的Item(即结构化数据)

一. 新建项目(scrapy startproject)

在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中,运行下列命令:
scrapy startproject mySpider
其中, mySpider 为项目名称,可以看到将会创建一个 mySpider 文件夹,目录结构大致如下:
下面来简单介绍一下各个主要文件的作用:

mySpider/
    scrapy.cfg
    mySpider/
        __init__.py
        items.py
        pipelines.py
        settings.py
        spiders/
            __init__.py
            ...

这些文件分别是:
scrapy.cfg: 项目的配置文件。
mySpider/: 项目的Python模块,将会从这里引用代码。
mySpider/items.py: 项目的目标文件。
mySpider/pipelines.py: 项目的管道文件。
mySpider/settings.py: 项目的设置文件。
mySpider/spiders/: 存储爬虫代码目录。

二、明确目标(mySpider/items.py)

我们打算抓取 http://www.itcast.cn/channel/teacher.shtml 网站里的所有讲师的姓名、职称和个人信息。
1.打开 mySpider 目录下的 items.py。
2.Item 定义结构化数据字段,用来保存爬取到的数据,有点像 Python 中的 dict,但是提供了一些额外的保护减少错误。
3.可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field 的类属性来定义一个 Item(可以理解成类似于 ORM 的映射关系)。
接下来,创建一个 ItcastItem 类,和构建 item 模型(model)。

import scrapy

class ItcastItem(scrapy.Item):
   name = scrapy.Field()
   title = scrapy.Field()
   info = scrapy.Field()

三、制作爬虫 (spiders/itcastSpider.py)

爬虫功能要分两步:

1. 爬数据

在当前目录下输入命令,将在mySpider/spider目录下创建一个名为itcast的爬虫,并指定爬取域的范围:

scrapy genspider itcast "itcast.cn"

打开 mySpider/spider目录里的 itcast.py,默认增加了下列代码:

import scrapy

class ItcastSpider(scrapy.Spider):
    name = "itcast"
    allowed_domains = ["itcast.cn"]
    start_urls = (
        'http://www.itcast.cn/',
    )

    def parse(self, response):
        pass

其实也可以由我们自行创建itcast.py并编写上面的代码,只不过使用命令可以免去编写固定代码的麻烦
要建立一个Spider, 你必须用scrapy.Spider类创建一个子类,并确定了三个强制的属性 和 一个方法。
name = “” :这个爬虫的识别名称,必须是唯一的,在不同的爬虫必须定义不同的名字。
allow_domains = [] 是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略。
start_urls = () :爬取的URL元祖/列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。
parse(self, response) :解析的方法,每个初始URL完成下载后将被调用,调用的时候传入从每一个URL传回的Response对象来作为唯一参数,主要作用如下:
负责解析返回的网页数据(response.body),提取结构化数据(生成item)
生成需要下一页的URL请求。
将start_urls的值修改为需要爬取的第一个url

start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)

修改parse()方法

def parse(self, response):
    filename = "teacher.html"
    open(filename, 'w').write(response.body)

然后运行一下看看,在mySpider目录下执行:

scrapy crawl itcast

是的,就是 itcast,看上面代码,它是 ItcastSpider 类的 name 属性,也就是使用 scrapy genspider命令的唯一爬虫名。
运行之后,如果打印的日志出现 [scrapy] INFO: Spider closed (finished),代表执行完成。 之后当前文件夹中就出现了一个 teacher.html 文件,里面就是我们刚刚要爬取的网页的全部源代码信息。
注意: Python2.x默认编码环境是ASCII,当和取回的数据编码格式不一致时,可能会造成乱码;我们可以指定保存内容的编码格式,一般情况下,我们可以在代码最上方添加

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

这三行代码是 Python2.x 里解决中文编码的万能钥匙,经过这么多年的吐槽后 Python3 学乖了,默认编码是Unicode了…(祝大家早日拥抱Python3)

2. 取数据

爬取整个网页完毕,接下来的就是的取过程了,首先观察页面源码:

<div class="li_txt">
    <h3>  xxx  </h3>
    <h4> xxxxx </h4>
    <p> xxxxxxxx </p>

是不是一目了然?直接上 XPath 开始提取数据吧。
xpath 方法,我们只需要输入的 xpath 规则就可以定位到相应 html 标签节点,详细内容可以查看 xpath 教程。
不会 xpath 语法没关系,Chrome 给我们提供了一键获取 xpath 地址的方法(右键->检查->copy->copy xpath),如下图:
Scrapy 入门教程(RUNOOB.COM)_第2张图片
这里给出一些 XPath 表达式的例子及对应的含义:
/html/head/title: 选择HTML文档中 标签内的 元素
/html/head/title/text(): 选择上面提到的 元素的文字<br/> //td: 选择所有的 <td> 元素<br/> //div[@class=“mine”]: 选择所有具有 class=“mine” 属性的 div 元素<br/> 举例我们读取网站 <a href="http://www.itcast.cn/">http://www.itcast.cn/</a> 的网站标题,修改 <a href="http://itcast.py">itcast.py</a> 文件代码如下:</td></p> <pre><code class="prism language-javascript"># <span class="token operator">-</span><span class="token operator">*</span><span class="token operator">-</span> coding<span class="token punctuation">:</span> utf<span class="token operator">-</span><span class="token number">8</span> <span class="token operator">-</span><span class="token operator">*</span><span class="token operator">-</span> <span class="token keyword">import</span> scrapy # 以下三行是在 Python2<span class="token punctuation">.</span>x版本中解决乱码问题,Python3<span class="token punctuation">.</span>x 版本的可以去掉 <span class="token keyword">import</span> sys <span class="token function">reload</span><span class="token punctuation">(</span>sys<span class="token punctuation">)</span> sys<span class="token punctuation">.</span><span class="token function">setdefaultencoding</span><span class="token punctuation">(</span><span class="token string">"utf-8"</span><span class="token punctuation">)</span> <span class="token keyword">class</span> <span class="token class-name">Opp2Spider</span><span class="token punctuation">(</span>scrapy<span class="token punctuation">.</span>Spider<span class="token punctuation">)</span><span class="token punctuation">:</span> name <span class="token operator">=</span> <span class="token string">'itcast'</span> allowed_domains <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'itcast.com'</span><span class="token punctuation">]</span> start_urls <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'http://www.itcast.cn/'</span><span class="token punctuation">]</span> def <span class="token function">parse</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> response<span class="token punctuation">)</span><span class="token punctuation">:</span> # 获取网站标题 context <span class="token operator">=</span> response<span class="token punctuation">.</span><span class="token function">xpath</span><span class="token punctuation">(</span><span class="token string">'/html/head/title/text()'</span><span class="token punctuation">)</span> # 提取网站标题 title <span class="token operator">=</span> context<span class="token punctuation">.</span><span class="token function">extract_first</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token function">print</span><span class="token punctuation">(</span>title<span class="token punctuation">)</span> pass </code></pre> <p>执行以下命令:</p> <pre><code class="prism language-javascript">$ scrapy crawl itcast <span class="token operator">...</span> <span class="token operator">...</span> 传智播客官网<span class="token operator">-</span>好口碑<span class="token constant">IT</span>培训机构<span class="token punctuation">,</span>一样的教育<span class="token punctuation">,</span>不一样的品质 <span class="token operator">...</span> <span class="token operator">...</span> </code></pre> <p>我们之前在 mySpider/items.py 里定义了一个 ItcastItem 类。 这里引入进来:</p> <pre><code class="prism language-javascript"><span class="token keyword">from</span> mySpider<span class="token punctuation">.</span>items <span class="token keyword">import</span> ItcastItem </code></pre> <p>然后将我们得到的数据封装到一个 ItcastItem 对象中,可以保存每个老师的属性:</p> <pre><code class="prism language-javascript"><span class="token keyword">from</span> mySpider<span class="token punctuation">.</span>items <span class="token keyword">import</span> ItcastItem def <span class="token function">parse</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> response<span class="token punctuation">)</span><span class="token punctuation">:</span> #<span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"teacher.html"</span><span class="token punctuation">,</span><span class="token string">"wb"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>response<span class="token punctuation">.</span>body<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span> # 存放老师信息的集合 items <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token keyword">for</span> each <span class="token keyword">in</span> response<span class="token punctuation">.</span><span class="token function">xpath</span><span class="token punctuation">(</span><span class="token string">"//div[@class='li_txt']"</span><span class="token punctuation">)</span><span class="token punctuation">:</span> # 将我们得到的数据封装到一个 <span class="token template-string"><span class="token string">`ItcastItem`</span></span> 对象 item <span class="token operator">=</span> <span class="token function">ItcastItem</span><span class="token punctuation">(</span><span class="token punctuation">)</span> #<span class="token function">extract</span><span class="token punctuation">(</span><span class="token punctuation">)</span>方法返回的都是unicode字符串 name <span class="token operator">=</span> each<span class="token punctuation">.</span><span class="token function">xpath</span><span class="token punctuation">(</span><span class="token string">"h3/text()"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">extract</span><span class="token punctuation">(</span><span class="token punctuation">)</span> title <span class="token operator">=</span> each<span class="token punctuation">.</span><span class="token function">xpath</span><span class="token punctuation">(</span><span class="token string">"h4/text()"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">extract</span><span class="token punctuation">(</span><span class="token punctuation">)</span> info <span class="token operator">=</span> each<span class="token punctuation">.</span><span class="token function">xpath</span><span class="token punctuation">(</span><span class="token string">"p/text()"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">extract</span><span class="token punctuation">(</span><span class="token punctuation">)</span> #xpath返回的是包含一个元素的列表 item<span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span> <span class="token operator">=</span> name<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> item<span class="token punctuation">[</span><span class="token string">'title'</span><span class="token punctuation">]</span> <span class="token operator">=</span> title<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> item<span class="token punctuation">[</span><span class="token string">'info'</span><span class="token punctuation">]</span> <span class="token operator">=</span> info<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> items<span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> # 直接返回最后数据 <span class="token keyword">return</span> items </code></pre> <p>我们暂时先不处理管道,后面会详细介绍。</p> <p><strong>保存数据</strong><br> scrapy保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,命令如下:</p> <pre><code class="prism language-javascript">scrapy crawl itcast <span class="token operator">-</span>o teachers<span class="token punctuation">.</span>json </code></pre> <p>json lines格式,默认为Unicode编码</p> <pre><code class="prism language-javascript">scrapy crawl itcast <span class="token operator">-</span>o teachers<span class="token punctuation">.</span>jsonl </code></pre> <p>csv 逗号表达式,可用Excel打开</p> <pre><code class="prism language-javascript">scrapy crawl itcast <span class="token operator">-</span>o teachers<span class="token punctuation">.</span>csv </code></pre> <p>xml格式</p> <pre><code class="prism language-javascript">scrapy crawl itcast <span class="token operator">-</span>o teachers<span class="token punctuation">.</span>xml </code></pre> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1276189779330875392"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(学习笔记)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950196906563006464.htm" title="Unity学习笔记1" target="_blank">Unity学习笔记1</a> <span class="text-muted">zy_777</span> <div>通过一个星期的简单学习,初步了解了下unity,unity的使用,以及场景的布局,UI,以及用C#做一些简单的逻辑。好记性不如烂笔头,一些关键帧还是记起来比较好,哈哈,不然可能转瞬即逝了,(PS:纯小白观点,unity大神可以直接忽略了)一:MonoBehaviour类的初始化1,Instantiate()创建GameObject2,通过Awake()和Start()来做初始化3,Update、L</div> </li> <li><a href="/article/1950187554129113088.htm" title="Django学习笔记(一)" target="_blank">Django学习笔记(一)</a> <span class="text-muted"></span> <div>学习视频为:pythondjangoweb框架开发入门全套视频教程一、安装pipinstalldjango==****检查是否安装成功django.get_version()二、django新建项目操作1、新建一个项目django-adminstartprojectproject_name2、新建APPcdproject_namedjango-adminstartappApp注:一个project</div> </li> <li><a href="/article/1950179614320029696.htm" title="python学习笔记(汇总)" target="_blank">python学习笔记(汇总)</a> <span class="text-muted">朕的剑还未配妥</span> <a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86/1.htm">python学习笔记整理</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录一.基础知识二.python中的数据类型三.运算符四.程序的控制结构五.列表六.字典七.元组八.集合九.字符串十.函数十一.解决bug一.基础知识print函数字符串要加引号,数字可不加引号,如print(123.4)print('小谢')print("洛天依")还可输入表达式,如print(1+3)如果使用三引号,print打印的内容可不在同一行print("line1line2line</div> </li> <li><a href="/article/1950147339964444672.htm" title="【Druid】学习笔记" target="_blank">【Druid】学习笔记</a> <span class="text-muted">fixAllenSun</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>【Druid】学习笔记【一】简介【1】简介【2】数据库连接池(1)能解决的问题(2)使用数据库连接池的好处【3】监控(1)监控信息采集的StatFilter(2)监控不影响性能(3)SQL参数化合并监控(4)执行次数、返回行数、更新行数和并发监控(5)慢查监控(6)Exception监控(7)区间分布(8)内置监控DEMO【4】Druid基本配置参数介绍【5】Druid相比于其他数据库连接池的优点</div> </li> <li><a href="/article/1950142042847899648.htm" title="java学习笔记8" target="_blank">java学习笔记8</a> <span class="text-muted">幸福,你等等我</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>一、异常处理Error:错误,程序员无法处理,如OOM内存溢出错误、内存泄漏...会导出程序崩溃1.异常:程序中一些程序自身处理不了的特殊情况2.异常类Exception3.异常的分类:(1).检查型异常(编译异常):在编译时就会抛出的异常(代码上会报错),需要在代码中编写处理方式(和程序之外的资源访问)直接继承Exception(2).运行时异常:在代码运行阶段可能会出现的异常,可以不用明文处理</div> </li> <li><a href="/article/1950113424281235456.htm" title="2025 最强 Agent 智能体 学习笔记 (71)" target="_blank">2025 最强 Agent 智能体 学习笔记 (71)</a> <span class="text-muted">一刀7段</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>Agent智能体的系统学习与职业发展核心内容概览本集是《2025最强Agent智能体全套教程》的第72集,聚焦Agent智能体领域的系统学习方法与职业发展路径,系统梳理了从入门到专家的能力体系、关键学习资源、职业方向选择及行业发展机遇。内容结合技术趋势与职场需求,为不同背景的学习者(学生、开发者、转行人士)提供清晰的成长蓝图,帮助其在Agent智能体领域高效成长,实现职业目标。系统学习的能力体系与</div> </li> <li><a href="/article/1950095708468080640.htm" title="【学习笔记】CBT工作坊第二天:动机驱动行为" target="_blank">【学习笔记】CBT工作坊第二天:动机驱动行为</a> <span class="text-muted">花团与芥末</span> <div>什么叫动机?在认知行为疗法中,动机是引导我们行为的各种外在和内在的力量,唤起行为起始的力量,朝着一定目标与方向进行的力量,维持或停止的力量。也就是说,在我们的所有行为包括没有做的行为背后,都隐藏着某种动机。那么,动机一般有哪些呢?大家一般听说过的,是马斯洛的需求层次理论。在他的金字塔理论中,将动机需求分为了6个层次,从初级到高级分别是:生存(活着的必须条件)--安全(活下去)--爱--尊重--自我</div> </li> <li><a href="/article/1950082037897555968.htm" title="图解系统的学习笔记--硬件结构" target="_blank">图解系统的学习笔记--硬件结构</a> <span class="text-muted">什么蜜桃绵绵冰</span> <a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>CPU是如何执行程序的?图灵机的工作方式图灵机的基本组成纸带:纸带由一个个连续的格子组成,每个格子可以写入字符,纸带就好比内存,而纸带上的格子的字符就好比内存中的数据或程序读写头:可以读取只带上任意格子的字符,也可以把字符写入到纸带的格子读写头上的部件-存储单元、控制单元、运算单元存储单元用于存放数据控制单元用于识别字符是数据还是指令、以及控制程序的流程等预算单元用于执行运算指令冯诺依曼模型计算机</div> </li> <li><a href="/article/1950061236175564800.htm" title="Spring学习笔记07——SpringBoot中关于接口文档管理的注解" target="_blank">Spring学习笔记07——SpringBoot中关于接口文档管理的注解</a> <span class="text-muted">Shaoxi Zhang</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>一、Lombok注解@Data:生成所有字段的getter/setter、toString()、equals()和hashCode()。@Getter/@Setter:单独为所有字段或指定字段生成getter/setter。importlombok.Data;@DatapublicclassUser{privateLongid;privateStringname;}编译后,Lombok会为id和n</div> </li> <li><a href="/article/1950057579757498368.htm" title="零基础入门uniapp Vue3组合式API版本" target="_blank">零基础入门uniapp Vue3组合式API版本</a> <span class="text-muted">鹤早早</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>前言:小程序学习笔记,课程来源up主咸虾米_。仅记录笔记,大家想学习可以去关注他。1.已安装HBuiderX(目前是4.36版本),微信开发者工具(但还没注册小程序码),相关配置OK了。1.16相关架构学习1.pages-index-index.vuebox1box2.layout{border:1pxsolidred;.box1{border:1pxsolidgreen;}.box2{borde</div> </li> <li><a href="/article/1950053795572543488.htm" title="JavaWeb(苍穹外卖)--学习笔记14" target="_blank">JavaWeb(苍穹外卖)--学习笔记14</a> <span class="text-muted">哈哈哈哈哈0627</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>前言终于开始学习做项目了,本篇文章是学习B站黑马程序员苍穹外卖的学习笔记。我的学习路线是Java基础语法-JavaWeb-做项目,管理端的功能学习完之后,就进入到了用户端微信小程序的开发,这篇文章是把我觉得JavaWeb的学习中比较重要的内容写一个总结(其实因为学到下单支付太难了我复习复习前面的)Controller层(这里只讲讲几个需要注意的注解)管理服务端的动态资源:SpringFramewo</div> </li> <li><a href="/article/1950050264991985664.htm" title="Langchain学习笔记(十):文档加载与处理详解" target="_blank">Langchain学习笔记(十):文档加载与处理详解</a> <span class="text-muted"></span> <div>注:本文是Langchain框架的学习笔记;不是教程!不是教程!内容可能有所疏漏,欢迎交流指正。后续将持续更新学习笔记,分享我的学习心得和实践经验。前言在构建基于大语言模型的应用时,文档处理是一个至关重要的环节。无论是构建RAG(检索增强生成)系统,还是进行知识库问答,我们都需要将各种格式的文档转换为模型可以理解和处理的形式。Langchain提供了强大的文档加载和处理功能,支持多种文件格式,并提</div> </li> <li><a href="/article/1950050265457553408.htm" title="Langchain学习笔记(十二):Memory机制与对话管理" target="_blank">Langchain学习笔记(十二):Memory机制与对话管理</a> <span class="text-muted">zhangsan0933</span> <a class="tag" taget="_blank" href="/search/LangChain/1.htm">LangChain</a><a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>注:本文是Langchain框架的学习笔记;不是教程!不是教程!内容可能有所疏漏,欢迎交流指正。后续将持续更新学习笔记,分享我的学习心得和实践经验。前言在构建智能对话系统时,记忆功能是至关重要的。想象一下,如果每次与AI对话都像第一次见面一样,无法记住之前的交流内容,这样的体验将是多么糟糕。LangChain的Memory机制正是为了解决这个问题而设计的,它让AI能够"记住"对话历史,从而提供更加</div> </li> <li><a href="/article/1950004979813117952.htm" title="OkHttp学习笔记5--Events" target="_blank">OkHttp学习笔记5--Events</a> <span class="text-muted">雪晨杰</span> <div>EventsEventsallowyoutocapturemetricsonyourapplication’sHTTPcalls.Useeventstomonitor:事件允许您捕获应用程序HTTP调用的度量。使用事件来监控:ThesizeandfrequencyoftheHTTPcallsyourapplicationmakes.Ifyou’remakingtoomanycalls,oryour</div> </li> <li><a href="/article/1949998940879384576.htm" title="CTF-Web学习笔记:SQL注入篇" target="_blank">CTF-Web学习笔记:SQL注入篇</a> <span class="text-muted">编程到天明</span> <a class="tag" taget="_blank" href="/search/CTF/1.htm">CTF</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a> <div>目录引言一、SQL注入的基础概念1.什么是SQL注入?2.SQL注入的成因二、CTF中常见的SQL注入类型1.按参数类型分类2.按注入方式分类3.其他进阶类型三、CTF实战技巧:从找注入点到拿Flag1.如何判断是否存在注入?2.快速确定数据库类型3.常用工具辅助4.绕过WAF(Web应用防火墙)四、CTF题目示例:一道报错注入实战题目背景解题步骤五、总结与提升引言在CTF(CaptureTheF</div> </li> <li><a href="/article/1949951660868562944.htm" title="Linux驱动开发学习笔记-设备树" target="_blank">Linux驱动开发学习笔记-设备树</a> <span class="text-muted"></span> <div>1、设备树1)将描述板级硬件信息的内容都从Linux内中分离开来,用一个专属的文件格式来描述,这个专属的文件就叫做设备树,文件扩展名为.dts。一个SOC可以作出很多不同的板子,这些不同的板子肯定是有共同的信息,将这些共同的信息提取出来作为一个通用的文件,其他的.dts文件直接引用这个通用文件即可,这个通用文件就是.dtsi文件,类似于C语言中的头文件。.dts描述板级信息(也就是开发板上有哪些I</div> </li> <li><a href="/article/1949871962146795520.htm" title="进阶向:基于Python的本地文件内容搜索工具" target="_blank">进阶向:基于Python的本地文件内容搜索工具</a> <span class="text-muted">超级小识</span> <a class="tag" taget="_blank" href="/search/Python%E8%BF%9B%E9%98%B6/1.htm">Python进阶</a><a class="tag" taget="_blank" href="/search/%E6%9C%89%E8%B6%A3%E7%9A%84%E9%A1%B9%E7%9B%AE/1.htm">有趣的项目</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>概述大家好!今天我们将一起学习如何用Python创建一个简单但强大的本地文件内容搜索工具。这个工具特别适合处理大量文本文件时的快速检索需求。为什么要学习这个工具如果你刚接触编程,完全不用担心!我会从零开始讲解,确保每一步都清晰易懂。想象一下这个常见场景:你有一个装满各种文档的文件夹(可能是工作文档、学习笔记或项目文件),现在想快速找到所有包含"重要笔记"或"项目需求"等关键字的文件。手动逐个打开文</div> </li> <li><a href="/article/1949862622660718592.htm" title="Freertos学习笔记(一)-----FreeRTOS基本知识" target="_blank">Freertos学习笔记(一)-----FreeRTOS基本知识</a> <span class="text-muted">努力搬砖的扁鱼</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/1.htm">嵌入式开发</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>RTOS“realtime”(实时)指的是系统对外部事件能够在规定的、可预测的时间内作出响应。具体含义如下:确定性(Determinism):FreeRTOS强调事件响应的可预测性。无论系统有多少任务,关键操作(比如任务切换、中断处理)都能在已知的最坏情况下完成。这意味着开发者可以预估任务的最大响应延迟。任务优先级与抢占:FreeRTOS支持任务优先级和抢占调度。高优先级任务可以在更低优先级任务运</div> </li> <li><a href="/article/1949837529918271488.htm" title="# Linux学习笔记 - 4" target="_blank"># Linux学习笔记 - 4</a> <span class="text-muted">Norvyn_7</span> <a class="tag" taget="_blank" href="/search/Linux%E5%AD%A6%E4%B9%A0/1.htm">Linux学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>Linux学习笔记-4本篇将介绍Linux中root用户管理、用户与用户组操作、权限控制信息以及chmod/chown命令的使用。1.root用户(超级管理员)root用户拥有最大的系统操作权限,可执行所有操作。1.1su和exitsu命令:切换用户语法:su[-][用户名]-表示切换后加载目标用户的环境变量(建议添加)。不加用户名时默认切换到root用户。示例:su-root#切换到root用户</div> </li> <li><a href="/article/1949831735789285376.htm" title="动态链接库(Dynamic Link Library)学习笔记" target="_blank">动态链接库(Dynamic Link Library)学习笔记</a> <span class="text-muted">peixian2003</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a> <div>经常忘记http://blog.csdn.net/yxin1322/article/details/638156动态链接库(DynamicLinkLibrary)学习笔记作者:yxin1322blog:http://blog.csdn.net/yxin1322转载请注明出处我对动态链接和动态链接库的概念并不陌,但一直以来就停留在概念的层面上,没有更深入的了解。今天抽空看了一下有关动态链接和动态链接</div> </li> <li><a href="/article/1949759807007289344.htm" title="2022-10-28晨间日记" target="_blank">2022-10-28晨间日记</a> <span class="text-muted">明心279</span> <div>今天是什么日子起床:6.00就寝:天气:多云心情:开心纪念日:任务清单昨日完成的任务,最重要的三件事:改进:习惯养成:周目标·完成进度学习·信息·阅读八字笔记整理紫微斗数学习笔记健康·饮食·锻炼耳功八法81站桩35早上小米醪糟汤圆荷包蛋中午馒头蔬菜汤晚上煮泡面人际·家人·朋友工作·思考最美好的三件事1.我是最善良,最可爱,最大度,最宽容,最仁慈,最宽厚,最有魅力的优雅知性女子。我每天都很开心,都很</div> </li> <li><a href="/article/1949710319857233920.htm" title="java23种设计模式-外观模式" target="_blank">java23种设计模式-外观模式</a> <span class="text-muted">千里码!</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E8%A7%82%E6%A8%A1%E5%BC%8F/1.htm">外观模式</a> <div>外观模式(FacadePattern)学习笔记定义外观模式属于结构型设计模式,提供一个统一的接口来访问子系统中的多个接口。它通过定义一个高层接口简化客户端与复杂子系统的交互。适用场景为复杂子系统提供简单入口解耦客户端与子系统分层构建系统(各层通过外观类交互)遗留系统重构(用外观类封装旧接口)模式结构类图ClientFacade-subsystemA:SubsystemA-subsystemB:Su</div> </li> <li><a href="/article/1949646271916601344.htm" title="语言合成模型Spark-TTS-0.5B学习笔记" target="_blank">语言合成模型Spark-TTS-0.5B学习笔记</a> <span class="text-muted">tutgxuzyj</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>语言合成模型Spark-TTS-0.5B学习笔记语言合成是通过计算机技术将文字信息转换为自然流畅的语音输出,模拟人类语音。一、下载Spark-TTS-0.5B项目下载链接:https://github.com/SparkAudio/Spark-TTS.git注:需要科学网络。进入Spark-TTS文件夹,启动命令行窗口。创建Conda环境:condacreate-nsparktts-ypython</div> </li> <li><a href="/article/1949646145076654080.htm" title="编程与数学 03-002 计算机网络 10_应用层协议" target="_blank">编程与数学 03-002 计算机网络 10_应用层协议</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a> <div>编程与数学03-002计算机网络10_应用层协议一、常见的网络应用(一)Web应用(二)电子邮件(三)文件传输二、Web应用协议(HTTP/HTTPS)(一)HTTP协议的请求与响应格式(二)HTTPS的安全机制三、电子邮件协议(SMTP、POP3、IMAP)(一)邮件发送与接收的协议工作原理(二)各协议的功能特点四、总结摘要:本文是计算机网络课程中关于应用层协议的学习笔记。应用层协议是计算机网络</div> </li> <li><a href="/article/1949642741373792256.htm" title="泷羽sec专题课笔记-- Linux作业--开机自启动方法以及破解" target="_blank">泷羽sec专题课笔记-- Linux作业--开机自启动方法以及破解</a> <span class="text-muted">grrrr_1</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>本笔记为泷羽sec《红队全栈课程》学习笔记,课程请可自行前往B站学习,课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等,请使用该课程、本笔记以及课程和笔记中提及工具的读者,遵守网络安全相关法律法规,切勿进行违法违规违纪的操作。写在最前面的话,我们为什么要学习网络安全这门技术:维护国家安全防范网络攻击:网络安全威胁已成为国家安全的重要挑战。学习网络安全有助于识别和防范来自国内外的网络攻击,防</div> </li> <li><a href="/article/1949636437980803072.htm" title="编程与数学 03-002 计算机网络 07_路由算法" target="_blank">编程与数学 03-002 计算机网络 07_路由算法</a> <span class="text-muted">明月看潮生</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC03%E9%98%B6%E6%AE%B5/1.htm">第03阶段</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">智能路由器</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a> <div>编程与数学03-002计算机网络07_路由算法一、静态路由算法(一)手工配置路由表的方法(二)静态路由的优缺点二、动态路由算法原理(一)距离矢量算法(如贝尔曼-福特算法)(二)链路状态算法(如迪杰斯特拉算法)三、路由算法的性能比较(一)收敛速度(二)开销(三)适用场景四、总结摘要:本文是计算机网络课程中关于路由算法的学习笔记。路由算法是网络层的重要组成部分,用于选择最佳路径将数据包从源节点传输到目</div> </li> <li><a href="/article/1949622439969353728.htm" title="Vue 框架 学习笔记" target="_blank">Vue 框架 学习笔记</a> <span class="text-muted"></span> <div>作为初学者对于Vue框架的学习笔记总结了Vue框架的核心知识点,包括:1.基础概念:渐进式框架、两种使用方式、Vue实例创建流程、模板语法和响应式特性。2.常用指令:详细介绍了v-html、v-show/v-if、v-for、v-on、v-bind、v-model等10个指令的功能和用法。3.组件开发:组件结构、注册方式(全局/局部)、数据传递(Props)、组件通信(自定义事件/插槽)、生命周期</div> </li> <li><a href="/article/1949619542237966336.htm" title="JavaWeb(苍穹外卖)--学习笔记11(Filter(过滤器) 和 Interceptor(拦截器))" target="_blank">JavaWeb(苍穹外卖)--学习笔记11(Filter(过滤器) 和 Interceptor(拦截器))</a> <span class="text-muted">哈哈哈哈哈0627</span> <a class="tag" taget="_blank" href="/search/JavaWeb%EF%BC%88%E8%8B%8D%E7%A9%B9%E5%A4%96%E5%8D%96%EF%BC%89/1.htm">JavaWeb(苍穹外卖)</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>前言本篇文章是学习B站黑马程序员苍穹外卖的学习笔记。我的学习路线是Java基础语法-JavaWeb-做项目,管理端的功能学习完之后,又进入用户端的登陆界面的开发,我们可以看到在后续的请求当中,都会在请求头中携带能验证身份的凭证到服务端,而服务端需要统一拦截所有的请求,从而判断是否携带的有合法的JWT令牌,下面主要来说说负责拦截的Filter(过滤器)和Interceptor(拦截器)(感觉整个项目</div> </li> <li><a href="/article/1949611724487323648.htm" title="编程与数学 03-002 计算机网络 08_网络层的IP地址" target="_blank">编程与数学 03-002 计算机网络 08_网络层的IP地址</a> <span class="text-muted"></span> <div>编程与数学03-002计算机网络08_网络层的IP地址一、IP地址的分类与特点(一)IPv4地址的分类(A、B、C、D、E类)(二)各类地址的范围与用途二、子网划分与超网划分(一)子网划分的方法与目的(二)超网划分的原理与应用三、特殊IP地址(一)广播地址(二)回环地址(三)网络地址(四)私有地址(五)多播地址四、总结摘要:本文是计算机网络课程中关于网络层IP地址的学习笔记。IP地址是网络层的核心</div> </li> <li><a href="/article/1949543979942998016.htm" title="【前端学习笔记】CSS的两种盒子模型" target="_blank">【前端学习笔记】CSS的两种盒子模型</a> <span class="text-muted">花上</span> <div>CSS有两种盒子模型。一种是W3C的标准盒子模型。另一种是IE的盒子模型。W3C的标准盒子模型中width包括了width+padding+border。IE的盒子模型的width只有width,不包含padding和border。box-sizing的作用如果想要切换盒子模型,可以使用box-sizing属性。例:box-sizing:content-box是W3C盒子模型  box-sizin</div> </li> <li><a href="/article/88.htm" title="ztree设置禁用节点" target="_blank">ztree设置禁用节点</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/ztree/1.htm">ztree</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/setDisabledNode/1.htm">setDisabledNode</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。 $(function(){ showTree(); setDisabledNode(); }); </div> </li> <li><a href="/article/215.htm" title="JVM patch by Taobao" target="_blank">JVM patch by Taobao</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a> <div>在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。   7050685:jsdbproc64.sh has a typo in the package name 7058036:FieldsAllocationStyle=2 does not work in 32-bit VM 7060619:C1 should respect inline and</div> </li> <li><a href="/article/342.htm" title="将session存储到数据库中" target="_blank">将session存储到数据库中</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a> <div>CREATE TABLE sessions ( id CHAR(32) NOT NULL, data TEXT, last_accessed TIMESTAMP NOT NULL, PRIMARY KEY (id) );   <?php /** * Created by PhpStorm. * User: michaeldu * Date</div> </li> <li><a href="/article/469.htm" title="Vector" target="_blank">Vector</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/vector/1.htm">vector</a> <div>public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) { for (int i = 0; i < cart.size(); i++) { if (cart.get(i).getId().equals(id)) { cart.remove(i); </div> </li> <li><a href="/article/596.htm" title="各连接池配置参数比较" target="_blank">各连接池配置参数比较</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">连接池</a> <div>        排版真心费劲,大家凑合看下吧,见谅~     Druid DBCP C3P0 Proxool 数据库用户名称 Username Username User   数据库密码 Password Password Password   驱动名</div> </li> <li><a href="/article/723.htm" title="[简单]mybatis insert语句添加动态字段" target="_blank">[简单]mybatis insert语句添加动态字段</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>      mysql数据库,id自增,配置如下:       <insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id" parameterType=&</div> </li> <li><a href="/article/850.htm" title="struts2拦截器配置" target="_blank">struts2拦截器配置</a> <span class="text-muted">云端月影</span> <a class="tag" taget="_blank" href="/search/struts2%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">struts2拦截器</a> <div>struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts>     <package name="struts2" extends="struts-default">         &</div> </li> <li><a href="/article/977.htm" title="IE中页面不居中,火狐谷歌等正常" target="_blank">IE中页面不居中,火狐谷歌等正常</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/IE%E4%B8%AD%E9%A1%B5%E9%9D%A2%E4%B8%8D%E5%B1%85%E4%B8%AD/1.htm">IE中页面不居中</a> <div>问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3</div> </li> <li><a href="/article/1104.htm" title="String,int,Integer,char 几个类型常见转换" target="_blank">String,int,Integer,char 几个类型常见转换</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将字串 String 转换成Integer ? Integer integer=Integer.valueOf(str); 如何将整数 int 转换成字串 String ? 1.</div> </li> <li><a href="/article/1231.htm" title="PL/SQL的游标类型" target="_blank">PL/SQL的游标类型</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E6%98%BE%E7%A4%BA%E6%B8%B8%E6%A0%87%28%E9%9D%99%E6%80%81%E6%B8%B8%E6%A0%87%29/1.htm">显示游标(静态游标)</a><a class="tag" taget="_blank" href="/search/%E9%9A%90%E5%BC%8F%E6%B8%B8%E6%A0%87/1.htm">隐式游标</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%A0%87%E7%9A%84%E6%9B%B4%E6%96%B0%E5%92%8C%E5%88%A0%E9%99%A4/1.htm">游标的更新和删除</a><a class="tag" taget="_blank" href="/search/%25rowtype/1.htm">%rowtype</a><a class="tag" taget="_blank" href="/search/ref%E6%B8%B8%E6%A0%87%28%E5%8A%A8%E6%80%81%E6%B8%B8%E6%A0%87%29/1.htm">ref游标(动态游标)</a> <div>游标是oracle中的一个结果集,用于存放查询的结果;   PL/SQL中游标的声明; 1,声明游标 2,打开游标(默认是关闭的); 3,提取数据 4,关闭游标     注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标   隐式游标:主要是对DML数据的操作隐</div> </li> <li><a href="/article/1358.htm" title="JUnit4中@AfterClass @BeforeClass @after @before的区别对比" target="_blank">JUnit4中@AfterClass @BeforeClass @after @before的区别对比</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JUnit4/1.htm">JUnit4</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>一.基础知识 JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源  对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次</div> </li> <li><a href="/article/1485.htm" title="精通Oracle10编程SQL(12)开发包" target="_blank">精通Oracle10编程SQL(12)开发包</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>/* *开发包 *包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数) */ --包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成 --建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等 --在包规</div> </li> <li><a href="/article/1612.htm" title="【EhCache二】ehcache.xml配置详解" target="_blank">【EhCache二】ehcache.xml配置详解</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/ehcache.xml/1.htm">ehcache.xml</a> <div>在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中! ehcache.xml : http://ehcache.org/ehcache.xml ehcache.xsd : http://ehcache.org/ehcache.xsd ehcache配置文件的根元素是ehcahe   ehcac</div> </li> <li><a href="/article/1739.htm" title="java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL" target="_blank">java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a> <div>今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>  随后启动</div> </li> <li><a href="/article/1866.htm" title="angular.element" target="_blank">angular.element</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a><a class="tag" taget="_blank" href="/search/angular.element/1.htm">angular.element</a> <div>angular.element 描述:     包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦)     如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e</div> </li> <li><a href="/article/1993.htm" title="java-给定两个已排序序列,找出共同的元素。" target="_blank">java-给定两个已排序序列,找出共同的元素。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CommonItemInTwoSortedArray { /** * 题目:给定两个已排序序列,找出共同的元素。 * 1.定义两个指针分别指向序列的开始。 * 如果指向的两个元素</div> </li> <li><a href="/article/2120.htm" title="sftp 异常,有遇到的吗?求解" target="_blank">sftp 异常,有遇到的吗?求解</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jcraft/1.htm">jcraft</a><a class="tag" taget="_blank" href="/search/auth/1.htm">auth</a><a class="tag" taget="_blank" href="/search/jsch/1.htm">jsch</a><a class="tag" taget="_blank" href="/search/jschexception/1.htm">jschexception</a> <div>com.jcraft.jsch.JSchException: Auth cancel at com.jcraft.jsch.Session.connect(Session.java:460) at com.jcraft.jsch.Session.connect(Session.java:154) at cn.vivame.util.ftp.SftpServerAccess.connec</div> </li> <li><a href="/article/2247.htm" title="[生物智能与人工智能]神经元中的电化学结构代表什么?" target="_blank">[生物智能与人工智能]神经元中的电化学结构代表什么?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>     我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....      我们可以尝试一下...在某些神经</div> </li> <li><a href="/article/2374.htm" title="通过LAC和CID获取经纬度信息" target="_blank">通过LAC和CID获取经纬度信息</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/lac/1.htm">lac</a><a class="tag" taget="_blank" href="/search/cid/1.htm">cid</a> <div>方法1: 用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度 方法2: 发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&</div> </li> <li><a href="/article/2501.htm" title="JAVA的困难分析" target="_blank">JAVA的困难分析</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。   -----------------------------------------------------------------------------------------</div> </li> <li><a href="/article/2628.htm" title="小学5年级英语单词背诵第二课" target="_blank">小学5年级英语单词背诵第二课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>money 钱 paper 纸 speak 讲,说 tell 告诉   remember 记得,想起 knock 敲,击,打 question 问题 number 数字,号码   learn 学会,学习 street 街道 carry 搬运,携带 send 发送,邮寄,发射   must 必须 light 灯,光线,轻的 front </div> </li> <li><a href="/article/2755.htm" title="linux下面没有tree命令" target="_blank">linux下面没有tree命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>centos p安装 yum -y install tree   mac os安装 brew install tree   首先来看tree的用法 tree 中文解释:tree 功能说明:以树状图列出目录的内容。 语  法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式</div> </li> <li><a href="/article/2882.htm" title="Map迭代方式,Map迭代,Map循环" target="_blank">Map迭代方式,Map迭代,Map循环</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/Map%E5%BE%AA%E7%8E%AF/1.htm">Map循环</a><a class="tag" taget="_blank" href="/search/Map%E8%BF%AD%E4%BB%A3/1.htm">Map迭代</a><a class="tag" taget="_blank" href="/search/Map%E8%BF%AD%E4%BB%A3%E6%96%B9%E5%BC%8F/1.htm">Map迭代方式</a> <div>Map迭代方式,Map迭代,Map循环   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年</div> </li> <li><a href="/article/3009.htm" title="Spring Cache注解+Redis" target="_blank">Spring Cache注解+Redis</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>Spring3.1 Cache注解  依赖jar包: <!-- redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </div> </li> <li><a href="/article/3136.htm" title="Guava中针对集合的 filter和过滤功能" target="_blank">Guava中针对集合的 filter和过滤功能</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/filter/1.htm">filter</a> <div>在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:    @Test public void whenFilterWithIterables_thenFiltered() { List<String> names = Lists.newArrayList("John"</div> </li> <li><a href="/article/3263.htm" title="学习编程那点事" target="_blank">学习编程那点事</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧! 接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去</div> </li> <li><a href="/article/3390.htm" title="架构师之流处理---------bytebuffer的mark,limit和flip" target="_blank">架构师之流处理---------bytebuffer的mark,limit和flip</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/ByteBuffer/1.htm">ByteBuffer</a> <div>1.前言。   如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。 2.例子. 例子代码: String str = "helloWorld"; ByteBuffer buff = ByteBuffer.wrap(str.getBytes()); Sy</div> </li> <li><a href="/article/3517.htm" title="org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1" target="_blank">org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/%24/1.htm">$</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E4%B9%89/1.htm">转义</a><a class="tag" taget="_blank" href="/search/el%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">el表达式</a> <div>最近在做Highcharts的过程中,在写js时,出现了以下异常:   严重: Servlet.service() for servlet jsp threw exception org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, </div> </li> <li><a href="/article/3644.htm" title="用Java实现发送邮件到163" target="_blank">用Java实现发送邮件到163</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/java%E5%AE%9E%E7%8E%B0/1.htm">java实现</a> <div>/* 在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。 本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。 此篇仅介绍用</div> </li> <li><a href="/article/3771.htm" title="探索实体类存在的真正意义" target="_blank">探索实体类存在的真正意义</a> <span class="text-muted">java小叶檀</span> <a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a> <div>一. 实体类简述    实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的 POJO(Plain Old Java Objects)简单的Java对象   它的一般格式就是 public class A{ private String id; public Str</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>