Golang爬虫入门指南

引言

网络爬虫是一种自动化程序,用于从互联网上收集信息。随着互联网的迅速发展,爬虫技术在各行各业中越来越受欢迎。Golang作为一种高效、并发性好的编程语言,也逐渐成为爬虫开发的首选语言。本文将介绍使用Golang编写爬虫的基础知识和技巧。

一、环境准备

在开始编写Golang爬虫之前,我们需要先准备好开发环境。首先,确保你已经安装了Golang,并配置好了GOPATH。其次,我们需要安装一些必要的库,比如net/http用于发送HTTP请求,golang.org/x/net/html用于解析HTML等。可以使用go get命令来安装这些库。

go get -u golang.org/x/net/html

二、发送HTTP请求

在编写爬虫之前,我们需要先了解如何发送HTTP请求。Golang提供了net/http包,可以方便地发送GET和POST请求。

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	resp, err := http.Get("https://www.example.com")
	if err != nil {
		fmt.Println("请求发送失败:", err)
		return
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("读取响应失败:", err)
		return
	}

	fmt.Println(string(body))
}

上面的代码中,我们使用http.Get发送了一个GET请求,并得到了响应。然后我们使用ioutil.ReadAll来读取响应的内容,并将其打印出来。

三、解析HTML

一般来说,我们爬取的数据都是存储在HTML中的。因此,我们需要学会如何解析HTML。Golang提供了golang.org/x/net/html包来帮助我们解析HTML。

package main

import (
	"fmt"
	"net/http"
	"golang.org/x/net/html"
)

func main() {
	resp, err := http.Get("https://www.example.com")
	if err != nil {
		fmt.Println("请求发送失败:", err)
		return
	}
	defer resp.Body.Close()

	doc, err := html.Parse(resp.Body)
	if err != nil {
		fmt.Println("解析HTML失败:", err)
		return
	}

	// 在这里进行HTML解析操作...

}

上面的代码中,我们使用html.Parse函数来解析HTML,并得到一个表示整个HTML文档的树状结构。在这个树状结构中,我们可以使用不同的方法来查找和提取我们需要的数据。

package main

import (
	"fmt"
	"net/http"
	"golang.org/x/net/html"
)

func main() {
	resp, err := http.Get("https://www.example.com")
	if err != nil {
		fmt.Println("请求发送失败:", err)
		return
	}
	defer resp.Body.Close()

	doc, err := html.Parse(resp.Body)
	if err != nil {
		fmt.Println("解析HTML失败:", err)
		return
	}

	findLinks(doc)
}

func findLinks(n *html.Node) {
	if n.Type == html.ElementNode && n.Data == "a" {
		for _, a := range n.Attr {
			if a.Key == "href" {
				fmt.Println(a.Val)
			}
		}
	}

	for c := n.FirstChild; c != nil; c = c.NextSibling {
		findLinks(c)
	}
}

上面的代码中,我们定义了一个递归函数findLinks来查找HTML中的所有链接。我们使用html.NodeTypeData属性来判断当前节点是否为标签,并使用Attr属性来获取链接的地址。

四、并发爬虫

并发是Golang的一个重要特性,能够提高爬虫的效率。我们可以使用Golang的并发机制来同时发送多个HTTP请求,加快网页的爬取速度。

package main

import (
	"fmt"
	"net/http"
	"golang.org/x/net/html"
)

func main() {
	urls := []string{
		"https://www.example.com/page1",
		"https://www.example.com/page2",
		"https://www.example.com/page3",
	}

	ch := make(chan string)

	for _, url := range urls {
		go fetch(url, ch)
	}

	for range urls {
		fmt.Println(<-ch)
	}
}

func fetch(url string, ch chan<- string) {
	resp, err := http.Get(url)
	if err != nil {
		ch <- fmt.Sprintf("请求 %s 发送失败:%v", url, err)
		return
	}
	defer resp.Body.Close()

	doc, err := html.Parse(resp.Body)
	if err != nil {
		ch <- fmt.Sprintf("解析 %s 失败:%v", url, err)
		return
	}

	// 在这里进行HTML解析操作...

	ch <- fmt.Sprintf("请求 %s 完成", url)
}

上面的代码中,我们定义了一个ch通道用于接收爬虫的结果。然后,我们使用go关键字来开启多个协程,每个协程负责爬取一个网页的内容并进行解析。最后,我们使用<-ch来从通道中获取结果并打印出来。

五、数据存储

爬取到的数据通常需要保存到数据库或者文件中。Golang提供了各种数据库驱动和文件操作函数,可以方便地进行数据存储。

package main

import (
	"fmt"
	"net/http"
	"golang.org/x/net/html"
	"os"
	"io"
)

func main() {
	resp, err := http.Get("https://www.example.com")
	if err != nil {
		fmt.Println("请求发送失败:", err)
		return
	}
	defer resp.Body.Close()

	file, err := os.Create("output.html")
	if err != nil {
		fmt.Println("创建文件失败:", err)
		return
	}
	defer file.Close()

	_, err = io.Copy(file, resp.Body)
	if err != nil {
		fmt.Println("保存文件失败:", err)
		return
	}

	fmt.Println("文件保存成功")
}

上面的代码中,我们使用os.Create函数创建了一个名为output.html的文件,并使用io.Copy函数将HTTP响应的内容保存到文件中。

六、案例

案例一:爬取网页标题

package main

import (
	"fmt"
	"net/http"
	"golang.org/x/net/html"
)

func main() {
	resp, err := http.Get("https://www.example.com")
	if err != nil {
		fmt.Println("请求发送失败:", err)
		return
	}
	defer resp.Body.Close()

	doc, err := html.Parse(resp.Body)
	if err != nil {
		fmt.Println("解析HTML失败:", err)
		return
	}

	title := findTitle(doc)
	fmt.Println("网页标题:", title)
}

func findTitle(n *html.Node) string {
	if n.Type == html.ElementNode && n.Data == "title" {
		return n.FirstChild.Data
	}

	for c := n.FirstChild; c != nil; c = c.NextSibling {
		title := findTitle(c)
		if title != "" {
			return title
		}
	}

	return ""
}

在上面的例子中,我们使用findTitle函数来查找网页的标题。我们通过递归遍历HTML树,如果遇到</code>标签,我们就返回其内容。</p> <h4>案例二:爬取图片链接</h4> <pre><code class="prism language-go"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token string">"net/http"</span> <span class="token string">"golang.org/x/net/html"</span> <span class="token punctuation">)</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> resp<span class="token punctuation">,</span> err <span class="token operator">:=</span> http<span class="token punctuation">.</span><span class="token function">Get</span><span class="token punctuation">(</span><span class="token string">"https://www.example.com"</span><span class="token punctuation">)</span> <span class="token keyword">if</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"请求发送失败:"</span><span class="token punctuation">,</span> err<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token punctuation">}</span> <span class="token keyword">defer</span> resp<span class="token punctuation">.</span>Body<span class="token punctuation">.</span><span class="token function">Close</span><span class="token punctuation">(</span><span class="token punctuation">)</span> doc<span class="token punctuation">,</span> err <span class="token operator">:=</span> html<span class="token punctuation">.</span><span class="token function">Parse</span><span class="token punctuation">(</span>resp<span class="token punctuation">.</span>Body<span class="token punctuation">)</span> <span class="token keyword">if</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"解析HTML失败:"</span><span class="token punctuation">,</span> err<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token punctuation">}</span> images <span class="token operator">:=</span> <span class="token function">findImages</span><span class="token punctuation">(</span>doc<span class="token punctuation">)</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"图片链接:"</span><span class="token punctuation">)</span> <span class="token keyword">for</span> <span class="token boolean">_</span><span class="token punctuation">,</span> img <span class="token operator">:=</span> <span class="token keyword">range</span> images <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>img<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token function">findImages</span><span class="token punctuation">(</span>n <span class="token operator">*</span>html<span class="token punctuation">.</span>Node<span class="token punctuation">)</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">string</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> images <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">string</span> <span class="token keyword">if</span> n<span class="token punctuation">.</span>Type <span class="token operator">==</span> html<span class="token punctuation">.</span>ElementNode <span class="token operator">&&</span> n<span class="token punctuation">.</span>Data <span class="token operator">==</span> <span class="token string">"img"</span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token boolean">_</span><span class="token punctuation">,</span> attr <span class="token operator">:=</span> <span class="token keyword">range</span> n<span class="token punctuation">.</span>Attr <span class="token punctuation">{</span> <span class="token keyword">if</span> attr<span class="token punctuation">.</span>Key <span class="token operator">==</span> <span class="token string">"src"</span> <span class="token punctuation">{</span> images <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>images<span class="token punctuation">,</span> attr<span class="token punctuation">.</span>Val<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">for</span> c <span class="token operator">:=</span> n<span class="token punctuation">.</span>FirstChild<span class="token punctuation">;</span> c <span class="token operator">!=</span> <span class="token boolean">nil</span><span class="token punctuation">;</span> c <span class="token operator">=</span> c<span class="token punctuation">.</span>NextSibling <span class="token punctuation">{</span> images <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>images<span class="token punctuation">,</span> <span class="token function">findImages</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token operator">...</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> images <span class="token punctuation">}</span> </code></pre> <p>在上面的例子中,我们使用<code>findImages</code>函数来查找网页中的所有图片链接。我们通过递归遍历HTML树,如果遇到<code><img></code>标签,我们就将其<code>src</code>属性的值添加到结果集中。</p> <h4>案例三:爬取动态生成内容</h4> <pre><code class="prism language-go"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token string">"net/http"</span> <span class="token string">"io/ioutil"</span> <span class="token punctuation">)</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> resp<span class="token punctuation">,</span> err <span class="token operator">:=</span> http<span class="token punctuation">.</span><span class="token function">Get</span><span class="token punctuation">(</span><span class="token string">"https://api.example.com/data"</span><span class="token punctuation">)</span> <span class="token keyword">if</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"请求发送失败:"</span><span class="token punctuation">,</span> err<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token punctuation">}</span> <span class="token keyword">defer</span> resp<span class="token punctuation">.</span>Body<span class="token punctuation">.</span><span class="token function">Close</span><span class="token punctuation">(</span><span class="token punctuation">)</span> body<span class="token punctuation">,</span> err <span class="token operator">:=</span> ioutil<span class="token punctuation">.</span><span class="token function">ReadAll</span><span class="token punctuation">(</span>resp<span class="token punctuation">.</span>Body<span class="token punctuation">)</span> <span class="token keyword">if</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"读取响应失败:"</span><span class="token punctuation">,</span> err<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token punctuation">}</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"动态生成内容:"</span><span class="token punctuation">,</span> <span class="token function">string</span><span class="token punctuation">(</span>body<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre> <p>在上面的例子中,我们通过发送HTTP请求获取了一个动态生成的内容。这个内容可能是通过API接口返回的,而不是直接通过HTML页面展示的。我们使用<code>ioutil.ReadAll</code>函数来读取响应的内容,并将其打印出来。</p> <p>以上就是三个使用Golang编写爬虫的案例。通过这些案例,你可以更好地理解和应用Golang爬虫的基础知识和技巧。当然,实际的爬虫开发还需要根据具体的需求和场景进行更复杂的处理和优化。希望这些案例对你有所启发,让你能够更好地掌握Golang爬虫的开发。</p> <h3>结论</h3> <p>通过学习本文介绍的知识和技巧,我们可以使用Golang编写一个简单但功能强大的爬虫。当然,爬虫的开发还有很多其他的技术和工具可以学习和使用,但是本文所介绍的内容已经足够帮助我们入门和实践了。希望本文对你有所帮助,也希望你能够继续深入学习和探索爬虫技术的更多细节。</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1715718383963549696"></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">你可能感兴趣的:(Go,golang,爬虫,iphone)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1830450956249165824.htm" title="最后一个平安夜" target="_blank">最后一个平安夜</a> <span class="text-muted">青年_5473</span> <div>12.24本期作者:fly凌晨三点第六十九个红眼航班落了?嗯,在车里飞了四段平安就好晚安ThanksGod~第六十九个平安夜祝好2019.12.24感谢投稿:Fly你时刻挂念收摊你先回去吧明天还上班呢路上暗不安全第三百五十八个平安夜“一场车祸三张病危通知书三场急救五天ICU最后一个平安夜我不喜欢永远,因为两个人其中一个人不在了,就不是永远了。投稿:你我皆云烟,留点什么吧写啥都行自己边写边哭的最好的</div> </li> <li><a href="/article/1830443970640048128.htm" title="142. Go操作Kafka(confluent-kafka-go库)" target="_blank">142. Go操作Kafka(confluent-kafka-go库)</a> <span class="text-muted">百里守约学编程</span> <a class="tag" taget="_blank" href="/search/go/1.htm">go</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>文章目录Apachekafka简介开始使用ApacheKafka构建生产者构建消费者总结之前已经有两篇文章介绍过Go如何操作kafka28.windows安装kafka,Go操作kafka示例(sarama库)51.Go操作kafka示例(kafka-go库)Apachekafka简介ApacheKafka是一个开源分布式事件流平台,用于高性能数据管道、流式分析、数据集成和关键任务应用程序。它提供</div> </li> <li><a href="/article/1830441701190234112.htm" title="【Go 快速入门】Go Test 工具 | 单元测试 | 基准测试" target="_blank">【Go 快速入门】Go Test 工具 | 单元测试 | 基准测试</a> <span class="text-muted">ღCauchyོꦿ࿐</span> <a class="tag" taget="_blank" href="/search/Go/1.htm">Go</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95/1.htm">基准测试</a> <div>文章目录gotest工具单元测试子测试测试覆盖率基准测试性能比较函数重置时间并行测试本节项目地址:07-UnitTestBenchmarkTestgotest工具Go语言中的测试依赖gotest,该命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是gotest测试的一部分,不会被gobuild编译到最终的可执行文件中。在*_test.go文</div> </li> <li><a href="/article/1830440063071252480.htm" title="Django 表单" target="_blank">Django 表单</a> <span class="text-muted">wjs2024</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Django表单Django表单是Web开发中不可或缺的一部分,它允许用户与网站进行交互,如提交数据、上传文件等。在Django框架中,表单功能非常强大,支持各种自定义和验证,使得开发者能够轻松地处理用户输入。本文将详细介绍Django表单的使用方法,包括创建表单、表单字段、表单验证、表单渲染以及表单提交等。1.创建Django表单在Django中,创建表单通常涉及以下步骤:导入forms模块。创</div> </li> <li><a href="/article/1830438171859578880.htm" title="Go 语言版本管理——Goenv" target="_blank">Go 语言版本管理——Goenv</a> <span class="text-muted">小小小熊猫5</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E4%B8%93%E6%A0%8F/1.htm">专栏</a><a class="tag" taget="_blank" href="/search/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/1.htm">环境配置</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a> <div>Go语言版本管理——Goenv命令安装goenv安装和切换Go版本goenv是一个专门管理Go语言版本的工具。命令安装goenvgithub-goenvgitclonehttps://github.com/go-nv/goenv.git~/.goenvecho'exportGOENV_ROOT="$HOME/.goenv"'>>~/.bash_profileecho'exportPATH="$GO</div> </li> <li><a href="/article/1830436532339699712.htm" title="【Go语言成长之路】使用 Go 和 Gin 开发 RESTful API" target="_blank">【Go语言成长之路】使用 Go 和 Gin 开发 RESTful API</a> <span class="text-muted">风华同学</span> <a class="tag" taget="_blank" href="/search/Go%E8%AF%AD%E8%A8%80%E6%88%90%E9%95%BF%E4%B9%8B%E8%B7%AF/1.htm">Go语言成长之路</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/gin/1.htm">gin</a><a class="tag" taget="_blank" href="/search/restful/1.htm">restful</a> <div>文章目录使用Go和Gin开发RESTfulAPI一、前提二、设计API端点三、创建项目四、运行项目4.1编写代码4.2运行代码使用Go和Gin开发RESTfulAPI本教程使用Go和GinWebFramework(Go语言中优秀的第三方Web框架)编写一个RESTfulWeb服务API,实现路由请求、检索请求详细信息、JSON编码响应。一、前提Go1.16以及之后的版本curl工具,在Linux和</div> </li> <li><a href="/article/1830436532981428224.htm" title="【Go语言成长之路】泛型入门" target="_blank">【Go语言成长之路】泛型入门</a> <span class="text-muted">风华同学</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>文章目录泛型入门一、前提二、创建项目三、调用非泛型函数四、调用泛型函数处理多种类型五、不使用类型参数调用泛型函数六、声明类型约束为接口泛型入门本教程介绍了Go中泛型(generics)的基础知识,并且将声明两个简单的非泛型函数,然后在单个泛型函数中捕获相同的逻辑。一、前提Go1.18以及更高的版本二、创建项目创建一个名为generics的目录:~$mkdirgenerics~$cdgenerics</div> </li> <li><a href="/article/1830427452208410624.htm" title="奥本海默:在那⼀瞬间,我成为了死神" target="_blank">奥本海默:在那⼀瞬间,我成为了死神</a> <span class="text-muted">阿布B612</span> <div>"Prometheusstolefirefromthegodsandgaveittoman.""普罗⽶修斯从众神那⾥窃取了⽕种并将其交给了⼈类。"诺兰用一场贯穿影片的听证会,将奥本海默扒掉衣服,赤裸裸的展示在众人面前。黑白与彩色胶片交错,区分上帝与主人公视角。第⼀阶段求学情绪不稳定被隐藏宇宙的幻想所困扰一切在求学时种下因果。他是天才,也是普通人。剑桥实验室的奥本海默此时尚算不上优秀,甚至笨手笨脚的</div> </li> <li><a href="/article/1830427079238316032.htm" title="大语言模型诞生、探索和爆发阶段" target="_blank">大语言模型诞生、探索和爆发阶段</a> <span class="text-muted">花开盛夏^.^</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/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><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a> <div>大语言模型的发展可以分为几个阶段,每个阶段都有其特点和发展重点。以下是大致的时间线以及各个阶段的特点:一、大语言模型诞生阶段这一阶段大约从2017年末到2019年初,期间出现了几个关键的技术突破,这些技术奠定了现代大语言模型的基础。2017年:Google发表了Transformer架构,这是一种基于自注意力机制的神经网络架构,它彻底改变了自然语言处理(NLP)领域,使得大规模并行化处理成为可能,</div> </li> <li><a href="/article/1830423637920935936.htm" title="XML" target="_blank">XML</a> <span class="text-muted">4164fccdcf1c</span> <div>XMLTutorialforiOS:HowToChooseTheBestXMLParserforYouriPhoneProject</div> </li> <li><a href="/article/1830421856528723968.htm" title="2019-10-20晨间日记" target="_blank">2019-10-20晨间日记</a> <span class="text-muted">素鋆</span> <div>今天是什么日子起床:6:00就寝:12:00天气:阴心情:Good纪念日:无叫我起床的不是闹钟是梦想年度目标及关键点:特长生冲进班级前20本月重要成果:班级第36总人数46今日三只青蛙/番茄钟成功日志-记录三五件有收获的事务财务检视人际的投入nice开卷有益-学习/读书/听书写作业健康与饮食今日步数:今日锻炼:今日饮食:好习惯打卡</div> </li> <li><a href="/article/1830419267472945152.htm" title="自学数据结构的网站" target="_blank">自学数据结构的网站</a> <span class="text-muted">花开盛夏^.^</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>自学数据结构的网站有很多,以下是一些推荐的高质量和受欢迎的网站:LeetCode描述:LeetCode是一个知名的在线编程训练平台,特别适合算法和数据结构的学习与练习。它提供了大量的编程题目,涵盖了从简单到困难的各个难度级别,帮助用户逐步掌握算法和数据结构。网址:https://leetcode.com/(英文)或LeetCode中文版visualgo描述:visualgo是一个由新加坡国立大学开</div> </li> <li><a href="/article/1830416637677891584.htm" title="Remove Adjacent Repeated Characters II" target="_blank">Remove Adjacent Repeated Characters II</a> <span class="text-muted">GakkiLove</span> <div>Removeadjacent,repeatedcharactersinagivenstring,leavingonlytwocharactersforeachgroupofsuchcharacters.Thecharactersinthestringaresortedinascendingorder.Examples“aaaabbbc”istransferredto“aabbc”classSolu</div> </li> <li><a href="/article/1830406905860812800.htm" title="Django学习日志三:模型层" target="_blank">Django学习日志三:模型层</a> <span class="text-muted">Z天南之城Z</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/django%E5%85%A5%E9%97%A8/1.htm">django入门</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Django学习日志三:模型层1日志一我们学习了Django的配置,详见:Django学习日志一Django的配置日志二我们学习了创建第一个django项目,详见:Django学习日志二——创建第一个django项目下面我们来学习模型层的使用:五、模型层模型层用于和数据交互。可以通过模型和关系型数据库实现持久化的操作。在Django开发中主要以MySQL作为首选数据库,同时使用非关系型数据库Mon</div> </li> <li><a href="/article/1830401988462997504.htm" title="python网络爬虫(三)——爬虫攻防" target="_blank">python网络爬虫(三)——爬虫攻防</a> <span class="text-muted">光电的一只菜鸡</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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>  爬虫是模拟人的浏览访问行为,进行数据的批量抓取,当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。换句话说就是,服务器是不喜欢有人抓取自己的数据的,那么,网站方面就会这队这些爬虫者采取一些反爬策略。  服务器识别爬虫的一种方式是通过检查连接的User-Agent来识别到底是浏览器访问还是代码访问的。如果是代码访问的,当访问量增大时,服务器其就会直接封掉来访IP。  在</div> </li> <li><a href="/article/1830394046116360192.htm" title="python3爬虫——贴吧实战" target="_blank">python3爬虫——贴吧实战</a> <span class="text-muted">没耕过田的牛</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>初学者之贴吧爬虫一、思路二、步骤1.引入库2.载入网页数据3.分析结构提取信息4.将结果写入txt文件中三、封装四、总结一、思路明确目的及需求,以剑来吧为例。本次实例练习准备爬取“剑来吧”每个帖子的标题、帖子链接、发帖作者、发帖时间、回帖数量,那么拿到网页,二话不说先进入开发者模式先观察html文档结构——找规律。因为直接在网页源码上看很难看出结构特征,可以将源码粘贴到工作区排版后再进一步观察,很</div> </li> <li><a href="/article/1830392281736245248.htm" title="python网络爬虫(二)——数据的清洗与组织" target="_blank">python网络爬虫(二)——数据的清洗与组织</a> <span class="text-muted">光电的一只菜鸡</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>  学会了网络爬虫发送请求后,我们可以获得一段目标的HTML代码,但是还没有把数据提取出来,接下来需要进行数据的清洗与组织。foritemindata:result={'title':item.get_test(),'link':item.get('href')}print(result)  首先明确要提取的数据是标题和链接,标题在a标签中,提取标签的正文用get_text()方法;链接在a标签的</div> </li> <li><a href="/article/1830388227375198208.htm" title="2022-08-22" target="_blank">2022-08-22</a> <span class="text-muted">阳光不锈陋室茶事</span> <div>【文章标题】暑期校本培训感悟【文章链接】https://www.jianshu.com/p/0aa290116e77?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends战友你好,非常荣幸能点评你的文章,首先为你点赞。【见】读战友的文章,我看到了中国教育的希望,给到我们最正的力量。这</div> </li> <li><a href="/article/1830385851071295488.htm" title="SLAM中常用的库" target="_blank">SLAM中常用的库</a> <span class="text-muted">wq_151</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/SLAM/1.htm">SLAM</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/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><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/slam/1.htm">slam</a> <div>SLAM中常用的库关于库关于库Pangolin是一个用于OpenGL显示/交互以及视频输入的一个轻量级、快速开发库,下面是Pangolin的Github网址:githubEigen是一个高层次的C++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。pagenanoflann是一个c++11标准库,用于构建具有不同拓扑(R2,R3(点云),SO(2)和SO(3)(2D和3D旋转组))的</div> </li> <li><a href="/article/1830366691113136128.htm" title="【论文阅读】Purloining Deep Learning Models Developed for an Ultrasound Scanner to a Competitor Machine" target="_blank">【论文阅读】Purloining Deep Learning Models Developed for an Ultrasound Scanner to a Competitor Machine</a> <span class="text-muted">Bosenya12</span> <a class="tag" taget="_blank" href="/search/%E7%A7%91%E7%A0%94%E5%AD%A6%E4%B9%A0/1.htm">科研学习</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E7%AA%83%E5%8F%96/1.htm">模型窃取</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E5%AE%89%E5%85%A8/1.htm">模型安全</a> <div>TheArtoftheSteal:PurloiningDeepLearningModelsDevelopedforanUltrasoundScannertoaCompetitorMachine(2024)摘要Atransferfunctionapproach(传递函数方法)hasrecentlyproveneffectiveforcalibratingdeeplearning(DL)algorit</div> </li> <li><a href="/article/1830366060134625280.htm" title="String的API" target="_blank">String的API</a> <span class="text-muted">听风客1</span> <a class="tag" taget="_blank" href="/search/java%E8%AF%AD%E8%A8%80%E7%9A%84%E7%BB%86%E8%8A%82/1.htm">java语言的细节</a><a class="tag" taget="_blank" href="/search/String/1.htm">String</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>packageAPI;publicclassString{//String常用API//charcharAt(intindex)//intcodePointAt(intindex)//intoffsetByCodePoints(intstartIndex,intcpCount)//intcompareTo(Stringother)//IntStreamcodePoints()//newString</div> </li> <li><a href="/article/1830332533577969664.htm" title="Docker" target="_blank">Docker</a> <span class="text-muted">张小胡</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>Docker容器化技术Docker基础Docker是什么?docker原意为“码头工人”,可能会用到集装箱,而docker相当于it行业的集装箱,使用go语言开发实现的。(go语言09年)Docker是一个容器引擎。是一个管理容器的软件。(镜像->容器)(相当于程序->进程之间的关系)Docker并非时一个通用的容器工具,它依赖于已存在并运行的Linux内核环境;Docker实质上是在已运行的Li</div> </li> <li><a href="/article/1830325474274930688.htm" title="经验笔记:Hadoop" target="_blank">经验笔记:Hadoop</a> <span class="text-muted">漆黑的莫莫</span> <a class="tag" taget="_blank" href="/search/%E9%9A%8F%E6%89%8B%E7%AC%94%E8%AE%B0/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/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>Hadoop经验笔记一、Hadoop概述Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。其设计目的是为了在商用硬件上运行,具备高容错性和可扩展性。Hadoop的核心是HadoopDistributedFileSystem(HDFS)和YARN(YetAnotherResourceNegotiator),这两个组件加上MapReduce编程模型,构成了Hadoop的基本架构。二、H</div> </li> <li><a href="/article/1830316900526157824.htm" title="django_filter 的 values/values_list区别" target="_blank">django_filter 的 values/values_list区别</a> <span class="text-muted">小胖_@</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>django_filter的values/values_listvalues"""django.db.models.query.QuerySetdefvalues(self,*fields:Any,**expressions:Any)->Union[QuerySet,QuerySet]"""test_infos=Test.objects.filter().values()#返回全部列数据#Test</div> </li> <li><a href="/article/1830316055164186624.htm" title="DragonFireFury" target="_blank">DragonFireFury</a> <span class="text-muted">lanyue456</span> <div>Alongtimeago,inapowerfulcountry,therewasakingwholovedmoneyverymuch.Hewantedatreasurewithalotofgemsinthemountainsbuthewasveryafraidofthetyrannosaurusthatguardedthetreasure.Sohecameupwithastrategy,hecal</div> </li> <li><a href="/article/1830316018711490560.htm" title="django_filter的values / values_list" target="_blank">django_filter的values / values_list</a> <span class="text-muted">子钦加油</span> <div>fromdjango.dbimportmodelsclassBlog(models.Model):name=models.CharField(max_length=100)tagline=models.TextField()def__str__(self):#__unicode__onPython2returnself.nameclassAuthor(models.Model):name=mode</div> </li> <li><a href="/article/1830315542783815680.htm" title="Builder建造者模式" target="_blank">Builder建造者模式</a> <span class="text-muted">淡淡的橙子</span> <div>最近在看设计模式之禅。该书以生动有趣的言语为我们描绘了GoF所带来的设计模式的殿堂。其中有些设计模式讲的比较好,比如抽象工厂,模板方法等。但是在将Builder模式的时候,个人感觉和自己的理解可能有些出入,所以在此记录下自己的理解。Builder模式的wiki地址:wiki-Builderpattern说个题外话,设计模式的wiki有着非常详细的内容,有兴趣的可以去学习学习,这个是设计模式的首页:</div> </li> <li><a href="/article/1830310599217737728.htm" title="Java流程控制08:continue、break、goto" target="_blank">Java流程控制08:continue、break、goto</a> <span class="text-muted">怒放的生命.</span> <a class="tag" taget="_blank" href="/search/%E3%80%8AJavaSE%E5%9F%BA%E7%A1%80%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">《JavaSE基础》学习笔记</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/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>本节内容视频链接:https://www.bilibili.com/video/BV12J41137hu?p=43&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p=43&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5java中brea</div> </li> <li><a href="/article/1830297745903153152.htm" title="零知识证明框架:gnark" target="_blank">零知识证明框架:gnark</a> <span class="text-muted">孙绿如叶~</span> <a class="tag" taget="_blank" href="/search/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E%28ZKP%29/1.htm">零知识证明(ZKP)</a><a class="tag" taget="_blank" href="/search/%E5%AF%86%E7%A0%81%E5%AD%A6/1.htm">密码学</a> <div>一.zkSNARKs的一般构造流程首先将一个NP问题拍平(Flatten)构成电路(若干个乘法门/加法门构成),在电路的基础上构造约束,也就是R1CS,有了约束就可以把NP问题抽象成QAP问题。有了QAP问题的描述,就可以在QAP上构建zkSNARKs。二.gnarkgnark是consenSys开发的一个zkSARNK实现,采用Go语言,目前支持groth16,github地址:https://</div> </li> <li><a href="/article/1830294466141974528.htm" title="vscode中开发goalng,debug时遇到的tools报错问题" target="_blank">vscode中开发goalng,debug时遇到的tools报错问题</a> <span class="text-muted">ellija</span> <a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a> <div>版本vscode最新版本golang==1.18.10dlv==>1.8.3gopls==0.16.0==>0.14.21、vscode开发golang,delvedlv版本1.19高于golang版本FailedtolaunchistoooldforthisversionofDelve1.0、前言下载vscode之后,安装golang1.80.10的版本,项目打开之后,vscode提示下载dlv</div> </li> <li><a href="/article/43.htm" title="集合框架" target="_blank">集合框架</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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/1.htm">集合框架</a> <div>   集合框架 集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。 从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。   简单介绍:   Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi</div> </li> <li><a href="/article/170.htm" title="Table Driven(表驱动)方法实例" target="_blank">Table Driven(表驱动)方法实例</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/Table+Driven/1.htm">Table Driven</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E9%A9%B1%E5%8A%A8/1.htm">表驱动</a> <div>实例一: /** * 驾驶人年龄段 * 保险行业,会对驾驶人的年龄做年龄段的区分判断 * 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞) */ public class AgePeriodTest { //if...el</div> </li> <li><a href="/article/297.htm" title="Jquery 总结" target="_blank">Jquery 总结</a> <span class="text-muted">cuishikuan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/jquery%E6%96%B9%E6%B3%95/1.htm">jquery方法</a> <div>1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim('   Hello   ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$</div> </li> <li><a href="/article/424.htm" title="面向对象概念的提出" target="_blank">面向对象概念的提出</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/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/1.htm">面向对象</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E8%BF%87%E7%A8%8B/1.htm">面向过程</a> <div>        面向对象中,一切都是由对象展开的,组织代码,封装数据。   在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。       下面就结合编程语言的发展史,聊一聊面向过程和面向对象。      c语言由贝尔实</div> </li> <li><a href="/article/551.htm" title="linux网口绑定" target="_blank">linux网口绑定</a> <span class="text-muted">被触发</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。 一、环境描述 我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。 二、双网卡绑定步骤: 2.1 修改/etc/sysconfig/network</div> </li> <li><a href="/article/678.htm" title="XML基础语法" target="_blank">XML基础语法</a> <span class="text-muted">肆无忌惮_</span> <a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>一、什么是XML? XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。   二、为什么学习XML? 用来解决程序间数据传输的格式问题 做配置文件 充当小型数据库   三、XML与HTM</div> </li> <li><a href="/article/805.htm" title="为网页添加自己喜欢的字体" target="_blank">为网页添加自己喜欢的字体</a> <span class="text-muted">知了ing</span> <a class="tag" taget="_blank" href="/search/%E5%AD%97%E4%BD%93+%E7%A7%92%E8%A1%A8+css/1.htm">字体 秒表 css</a> <div>@font-face { font-family: miaobiao;//定义字体名字 font-style: normal; font-weight: 400; src: url('font/DS-DIGI-e.eot');//字体文件 } 使用: <label style="font-size:18px;font-famil</div> </li> <li><a href="/article/932.htm" title="redis范围查询应用-查找IP所在城市" target="_blank">redis范围查询应用-查找IP所在城市</a> <span class="text-muted">矮蛋蛋</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>原文地址: http://www.tuicool.com/articles/BrURbqV 需求 根据IP找到对应的城市 原来的解决方案 oracle表(ip_country): 查询IP对应的城市: 1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994 2. select city from ip_</div> </li> <li><a href="/article/1059.htm" title="输入两个整数, 计算百分比" target="_blank">输入两个整数, 计算百分比</a> <span class="text-muted">alleni123</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public static String getPercent(int x, int total){ double result=(x*1.0)/(total*1.0); System.out.println(result); DecimalFormat df1=new DecimalFormat("0.0000%"); </div> </li> <li><a href="/article/1186.htm" title="百合——————>怎么学习计算机语言" target="_blank">百合——————>怎么学习计算机语言</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java+%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">java 移动开发</a> <div>    对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和</div> </li> <li><a href="/article/1313.htm" title="linux下tomcat开机自启动" target="_blank">linux下tomcat开机自启动</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a> <div>方法一: 修改Tomcat/bin/startup.sh 为: export JAVA_HOME=/home/java1.6.0_27 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:. export PATH=$JAVA_HOME/bin:$PATH export CATALINA_H</div> </li> <li><a href="/article/1440.htm" title="spring aop实例" target="_blank">spring aop实例</a> <span class="text-muted">bijian1013</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/AOP/1.htm">AOP</a> <div>1.AdviceMethods.java package com.bijian.study.spring.aop.schema; public class AdviceMethods { public void preGreeting() { System.out.println("--how are you!--"); } } 2.beans.x</div> </li> <li><a href="/article/1567.htm" title="[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization" target="_blank">[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/serialization/1.htm">serialization</a> <div>enableComplexMapKeySerialization配置项的含义  Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。   GsonBuilder用于</div> </li> <li><a href="/article/1694.htm" title="【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题" target="_blank">【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a> <div>包括Spark Streaming在内的实时计算数据可靠性指的是三种级别: 1. At most once,数据最多只能接受一次,有可能接收不到 2. At least once, 数据至少接受一次,有可能重复接收 3. Exactly once  数据保证被处理并且只被处理一次,   具体的多读几遍http://spark.apache.org/docs/lates</div> </li> <li><a href="/article/1821.htm" title="shell脚本批量检测端口是否被占用脚本" target="_blank">shell脚本批量检测端口是否被占用脚本</a> <span class="text-muted">ronin47</span> <div>#!/bin/bash cat ports |while read line do#nc -z -w 10 $line nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then echo $line:ok else echo $line:fail fi done 这里的ports 既可以是文件</div> </li> <li><a href="/article/1948.htm" title="java-2.设计包含min函数的栈" target="_blank">java-2.设计包含min函数的栈</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/ import java.util.ArrayList; import java.util.List; public class MinStack { //maybe we can use origin array rathe</div> </li> <li><a href="/article/2075.htm" title="Netty源码学习-ChannelHandler" target="_blank">Netty源码学习-ChannelHandler</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div> 一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享” 例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是 因为每一次调用decode方法时,可能数据未接收完全(incomplete), 它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的 p</div> </li> <li><a href="/article/2202.htm" title="java生成随机数" target="_blank">java生成随机数</a> <span class="text-muted">cngolon</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>方法一: /** * 生成随机数 * @author cngolon@126.com * @return */ public synchronized static String getChargeSequenceNum(String pre){ StringBuffer sequenceNum = new StringBuffer(); Date dateTime = new D</div> </li> <li><a href="/article/2329.htm" title="POI读写海量数据" target="_blank">POI读写海量数据</a> <span class="text-muted">ctrain</span> <a class="tag" taget="_blank" href="/search/%E6%B5%B7%E9%87%8F%E6%95%B0%E6%8D%AE/1.htm">海量数据</a> <div>import java.io.FileOutputStream; import java.io.OutputStream; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming</div> </li> <li><a href="/article/2456.htm" title="mysql 日期格式化date_format详细使用" target="_blank">mysql 日期格式化date_format详细使用</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/date_format/1.htm">date_format</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2/1.htm">日期格式转换</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E5%8C%96/1.htm">日期格式化</a> <div> 日期转换函数的详细使用说明  DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n</div> </li> <li><a href="/article/2583.htm" title="一个程序员分享8年的开发经验" target="_blank">一个程序员分享8年的开发经验</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a> <div>  在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。 明确入行的目的 很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容</div> </li> <li><a href="/article/2710.htm" title="android欢迎界面淡入淡出效果" target="_blank">android欢迎界面淡入淡出效果</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。 主要代码如下: package com.myaibang.activity; import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown</div> </li> <li><a href="/article/2837.htm" title="linux 复习笔记之常见压缩命令" target="_blank">linux 复习笔记之常见压缩命令</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/tar%E8%A7%A3%E5%8E%8B/1.htm">tar解压</a><a class="tag" taget="_blank" href="/search/linux%E7%B3%BB%E7%BB%9F%E5%B8%B8%E8%A7%81%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4/1.htm">linux系统常见压缩命令</a><a class="tag" taget="_blank" href="/search/linux%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4/1.htm">linux压缩命令</a><a class="tag" taget="_blank" href="/search/tar%E5%8E%8B%E7%BC%A9/1.htm">tar压缩</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2109693 linux中常见压缩文件的拓展名 *.gz gzip程序压缩的文件 *.bz2 bzip程序压缩的文件 *.tar tar程序打包的数据,没有经过压缩 *.tar.gz tar程序打包后,并经过gzip程序压缩 *.tar.bz2 tar程序打包后,并经过bzip程序压缩 *.zi</div> </li> <li><a href="/article/2964.htm" title="Android 应用程序发送shell命令" target="_blank">Android 应用程序发送shell命令</a> <span class="text-muted">gqdy365</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!! 发就发吧! 一、关于shell指令: 我们知道,shell指令是Linux里面带的</div> </li> <li><a href="/article/3091.htm" title="java 无损读取文本文件" target="_blank">java 无损读取文本文件</a> <span class="text-muted">hw1287789687</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6/1.htm">读取文件</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E6%8D%9F%E8%AF%BB%E5%8F%96/1.htm">无损读取</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6/1.htm">读取文本文件</a><a class="tag" taget="_blank" href="/search/charset/1.htm">charset</a> <div>java 如何无损读取文本文件呢? 以下是有损的 @Deprecated public static String getFullContent(File file, String charset) { BufferedReader reader = null; if (!file.exists()) { System.out.println("getFull</div> </li> <li><a href="/article/3218.htm" title="Firebase 相关文章索引" target="_blank">Firebase 相关文章索引</a> <span class="text-muted">justjavac</span> <a class="tag" taget="_blank" href="/search/firebase/1.htm">firebase</a> <div>Awesome Firebase 最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。 Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。 开发者只需引用一个 API 库文件就可以使用标准 RE</div> </li> <li><a href="/article/3345.htm" title="C++学习重点" target="_blank">C++学习重点</a> <span class="text-muted">lx.asymmetric</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>1.c++面向对象的三个特性:封装性,继承性以及多态性。   2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。   3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。   4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。 &n</div> </li> <li><a href="/article/3472.htm" title="java bean和xml相互转换" target="_blank">java bean和xml相互转换</a> <span class="text-muted">q821424508</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/xml%E5%92%8Cbean%E8%BD%AC%E6%8D%A2/1.htm">xml和bean转换</a><a class="tag" taget="_blank" href="/search/java+bean%E5%92%8Cxml%E8%BD%AC%E6%8D%A2/1.htm">java bean和xml转换</a> <div>这几天在做微信公众号 做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题, 然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 , 还是贴出来记录一下      顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。   packag</div> </li> <li><a href="/article/3599.htm" title="C 语言初级 位运算" target="_blank">C 语言初级 位运算</a> <span class="text-muted">1140566087</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div> 第十章 位运算   1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节   2、位运算符: 运算符 作用 ~ 按位求反 << 左移 >> 右移 & 按位与 ^ 按位异或 | 按位或 他们的优先级从高到低;   3、位运算符的运算功能: a、按位取反: ~01001101 = 101</div> </li> <li><a href="/article/3726.htm" title="14点睛Spring4.1-脚本编程" target="_blank">14点睛Spring4.1-脚本编程</a> <span class="text-muted">wiselyman</span> <a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a> <div>14.1 Scripting脚本编程 脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行; 如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦; 如果我们的应用不允许重启,这在现实的情况中也是很常见的; 在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean; spring支持脚本</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>