如何使用RxJava

Hello World:

如下hello world 的例子是用Java,Groovy、等语言实现的。从字符串列表中创建一个Observable 并且用一个打印每个被这个Observable发射的String的函数来订阅它。

你可以找到额外的例子在每个 language adaptor 文件夹下。

  • RxGroovy examples
  • RxClojure examples
  • RxScala examples

Java

public static void hello(String... names) {
    Observable.from(names).subscribe(new Action1() {

        @Override
        public void call(String s) {
            System.out.println("Hello " + s + "!");
        }

    });
}
hello("Ben", "George");
Hello Ben!
Hello George!

Groovy

def hello(String[] names) {
    Observable.from(names).subscribe { println "Hello ${it}!" }
}
hello("Ben", "George")
Hello Ben!
Hello George!

如何用RxJava来设计

为了使用你创建Observables(发射数据项),转换这些Observables 通过不同的方式去获取你感兴趣的确切的数据条目,接着观测并且对这些感兴趣的条目序列做出反应(通过实现Observers或者Subscribers ,接着将它们订阅到所产生的转换后的Observables)

创建Observables

为了创建一个Observable, 你可以通过传入一个展示Observable的行为的函数来手动的实现Observable的行为或者你可以将现有的数据结构转换为一个Observable通过使用 some of the Observable operators that are designed for this purpose.(一些Observable操作符)

创建一个Observable从已有的数据结构:

你可以使用just()或者from()函数来将对象,列表或者数组转换为可发射这些对象的Observables:

Observable o = Observable.from("a", "b", "c");

def list = [5, 6, 7, 8]
Observable o = Observable.from(list);

Observable o = Observable.just("one object");

这些被转换的Observables 将同步的调用订阅他们的Subscriber的onNext()函数为每个被这些Observable发射的item,接着将会调用subscriber的onCompleted()函数。

创建一个Observable通过create()函数

通过设计你自己的Observable且用create() 函数来实现它,你可以实现异步i/o ,计算操作甚至无限的数据流。

同步Observable例子:

/**
 * This example shows a custom Observable that blocks 
 * when subscribed to (does not spawn an extra thread).
 */
def customObservableBlocking() {
    return Observable.create { aSubscriber ->
        50.times { i ->
            if (!aSubscriber.unsubscribed) {
                aSubscriber.onNext("value_${i}")
            }
        }
        // after sending all values we complete the sequence
        if (!aSubscriber.unsubscribed) {
            aSubscriber.onCompleted()
        }
    }
}

// To see output:
customObservableBlocking().subscribe { println(it) }

异步的Observable 例子:

如下的例子使用Groovy去创建一个发射75个字符串的Observable

以使示例更加清晰,它被写的很啰嗦,带有静态类型和Fun1匿名内部类的实现:

/**
 * This example shows a custom Observable that does not block
 * when subscribed to as it spawns a separate thread.
 */
def customObservableNonBlocking() {
    return Observable.create({ subscriber ->
        Thread.start {
            for (i in 0..<75) {
                if (subscriber.unsubscribed) {
                    return
                }
                subscriber.onNext("value_${i}")
            }
            // after sending all values we complete the sequence
            if (!subscriber.unsubscribed) {
                subscriber.onCompleted()
            }
        }
    } as Observable.OnSubscribe)
}

// To see output:
customObservableNonBlocking().subscribe { println(it) }

这是用Clojure同样的实现

(defn customObservableNonBlocking []
  "This example shows a custom Observable that does not block 
   when subscribed to as it spawns a separate thread.
   
  returns Observable"
  (Observable/create 
    (fn [subscriber]
      (let [f (future 
                (doseq [x (range 50)] (-> subscriber (.onNext (str "value_" x))))
                ; after sending all values we complete the sequence
                (-> subscriber .onCompleted))
        ))
      ))

如下是一个从WiKipedia获取文章的例子每一篇都调用onNext函数.

(defn fetchWikipediaArticleAsynchronously [wikipediaArticleNames]
  "Fetch a list of Wikipedia articles asynchronously.
  
   return Observable of HTML"
  (Observable/create 
    (fn [subscriber]
      (let [f (future
                (doseq [articleName wikipediaArticleNames]
                  (-> subscriber (.onNext (http/get (str "http://en.wikipedia.org/wiki/" articleName)))))
                ; after sending response to onnext we complete the sequence
                (-> subscriber .onCompleted))
        ))))

(-> (fetchWikipediaArticleAsynchronously ["Tiger" "Elephant"]) 
  (.subscribe #(println "--- Article ---\n" (subs (:body %) 0 125) "...")))

回到Groovy,同样的功能 但是使用闭包而不是匿名内部类:

/*
 * Fetch a list of Wikipedia articles asynchronously.
 */
def fetchWikipediaArticleAsynchronously(String... wikipediaArticleNames) {
    return Observable.create { subscriber ->
        Thread.start {
            for (articleName in wikipediaArticleNames) {
                if (subscriber.unsubscribed) {
                    return
                }
                subscriber.onNext(new URL("http://en.wikipedia.org/wiki/${articleName}").text)
            }
            if (!subscriber.unsubscribed) {
                subscriber.onCompleted()
            }
        }
        return subscriber
    }
}

fetchWikipediaArticleAsynchronously("Tiger", "Elephant")
    .subscribe { println "--- Article ---\n${it.substring(0, 125)}" }

结果:

--- Article ---
 


Tiger - Wikipedia, the free encyclopedia ...
--- Article ---
 


Elephant - Wikipedia, the free encyclopedia</tit ...
</code></pre> 
 <p>注意:所有之上的例子为了简洁忽略了错误处理。参看如下包含错误处理的例子。</p> 
 <p>更多信息能够在 Observable和 创建 Creating Observables页面找到。</p> 
 <h2>使用操作符转换Observables</h2> 
 <p>RxJava允许你把操作符链在一起去进行转换和组合 Observables.</p> 
 <p>如下Groovy例子用一个预定义,异步的Observable发射75个item,跳过前10个item,拿取接下来的5个并且在订阅和打印这些item之前转换他们。</p> 
 <pre><code>/**
 * Asynchronously calls 'customObservableNonBlocking' and defines
 * a chain of operators to apply to the callback sequence.
 */
def simpleComposition() {
    customObservableNonBlocking().skip(10).take(5)
        .map({ stringValue -> return stringValue + "_xform"})
        .subscribe({ println "onNext => " + it})
}
</code></pre> 
 <p>结果如下:</p> 
 <pre><code>onNext => value_10_xform
onNext => value_11_xform
onNext => value_12_xform
onNext => value_13_xform
onNext => value_14_xform
</code></pre> 
 <p>如下是一个marble图表说明这个转换过程:</p> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 586px;"> 
   <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/f1520125ca5f42aeacf80829aa9c7486.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/f1520125ca5f42aeacf80829aa9c7486.jpg" width="650" height="544" alt="如何使用RxJava_第1张图片" style="border:1px solid black;"></a> 
   </div> 
  </div> 
  <div class="image-caption">
    image.png 
  </div> 
 </div> 
 <p>如下是下一个Clojure例子,消费3个异步的Observables,包括从一个到另一个的依赖关系,并且通过使用zip函数组合这三个Observables发射的item并使用map来转换它的结果来发射一个单一的响应。</p> 
 <pre><code>(defn getVideoForUser [userId videoId]
  "Get video metadata for a given userId
   - video metadata
   - video bookmark position
   - user data
  return Observable<Map>"
    (let [user-observable (-> (getUser userId)
              (.map (fn [user] {:user-name (:name user) :language (:preferred-language user)})))
          bookmark-observable (-> (getVideoBookmark userId videoId)
              (.map (fn [bookmark] {:viewed-position (:position bookmark)})))
          ; getVideoMetadata requires :language from user-observable so nest inside map function
          video-metadata-observable (-> user-observable 
              (.mapMany
                ; fetch metadata after a response from user-observable is received
                (fn [user-map] 
                  (getVideoMetadata videoId (:language user-map)))))]
          ; now combine 3 observables using zip
          (-> (Observable/zip bookmark-observable video-metadata-observable user-observable 
                (fn [bookmark-map metadata-map user-map]
                  {:bookmark-map bookmark-map 
                  :metadata-map metadata-map
                  :user-map user-map}))
            ; and transform into a single response object
            (.map (fn [data]
                  {:video-id videoId
                   :video-metadata (:metadata-map data)
                   :user-id userId
                   :language (:language (:user-map data))
                   :bookmark (:viewed-position (:bookmark-map data))
                  })))))
</code></pre> 
 <p>响应如下:</p> 
 <pre><code>{:video-id 78965, 
 :video-metadata {:video-id 78965, :title House of Cards: Episode 1, 
                  :director David Fincher, :duration 3365}, 
 :user-id 12345, :language es-us, :bookmark 0}
</code></pre> 
 <p>如下是一个marble图表来说明如何代码如何生成应答:</p> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 812px;"> 
   <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/7601ae9357164cd2a192c4bb31f9a1b6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/7601ae9357164cd2a192c4bb31f9a1b6.jpg" width="650" height="754" alt="如何使用RxJava_第2张图片" style="border:1px solid black;"></a> 
   </div> 
  </div> 
  <div class="image-caption">
    image.png 
  </div> 
 </div> 
 <p>如下Groovy例子,来自于 Ben Christensen’s QCon presentation on the evolution of the Netflix API,它使用merge操作符来组合两个Observables,接着使用reduce操作符来从结果序列中构建一个单一的item,接着使用map转换该item在发射它之前。</p> 
 <pre><code>public Observable getVideoSummary(APIVideo video) {
   def seed = [id:video.id, title:video.getTitle()];
   def bookmarkObservable = getBookmark(video);
   def artworkObservable = getArtworkImageUrl(video);
   return( Observable.merge(bookmarkObservable, artworkObservable)
      .reduce(seed, { aggregate, current -> aggregate << current })
      .map({ [(video.id.toString() : it] }))
}
</code></pre> 
 <p>这儿是一个marble图表说明代码如何使用reduce操作符来从多个Obserables组合的单一结构中获取结果。</p> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 700px;"> 
   <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/70a3d074695844b694fc056c2b873e28.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/70a3d074695844b694fc056c2b873e28.jpg" width="650" height="650" alt="如何使用RxJava_第3张图片" style="border:1px solid black;"></a> 
   </div> 
  </div> 
  <div class="image-caption">
    image.png 
  </div> 
 </div> 
 <p>错误处理:</p> 
 <p>如下是一个上面的改进后的关于Wikipedia的例子包括错误处理:</p> 
 <pre><code>/*
 * Fetch a list of Wikipedia articles asynchronously, with error handling.
 */
def fetchWikipediaArticleAsynchronouslyWithErrorHandling(String... wikipediaArticleNames) {
    return Observable.create({ subscriber ->
        Thread.start {
            try {
                for (articleName in wikipediaArticleNames) {
                    if (true == subscriber.isUnsubscribed()) {
                        return;
                    }
                    subscriber.onNext(new URL("http://en.wikipedia.org/wiki/"+articleName).getText());
                }
                if (false == subscriber.isUnsubscribed()) {
                    subscriber.onCompleted();
                }
            } catch(Throwable t) {
                if (false == subscriber.isUnsubscribed()) {
                    subscriber.onError(t);
                }
            }
            return (subscriber);
        }
    });
}
</code></pre> 
 <p>注意它如何调用<code>onError(Throwable t)</code>,如果发生错误并注意如下代码传入subscribe()(第二个函数来处理错误)</p> 
 <pre><code>fetchWikipediaArticleAsynchronouslyWithErrorHandling("Tiger", "NonExistentTitle", "Elephant")
    .subscribe(
        { println "--- Article ---\n" + it.substring(0, 125) }, 
        { println "--- Error ---\n" + it.getMessage() })
</code></pre> 
 <p>更多信息参看 Error-Handling-Operators ,RxJava中的特殊错误处理,包括像 <code>onErrorResumeNext()</code> 和 <code>onErrorReturn()</code> 的函数,这些函数允许Observables继续回退在遇到错误的情况下。</p> 
 <p>下面是一个示例,你可以使用这样的方法传递关于你遇到的任何异常的自定义信息。想象你有一个Observable或者级联的Observables-myObservable。并且你想拦截任何正常通过Subscriber 的onError函数的异常,用自定义的Throwable来替换这些异常。你可以通过修改myObservable用onErrorResumeNext()函数,并传入这个函数一个带有你自定义的Throwable(一个被称为error()的实用的函数将会为你生成这样一个Observable)</p> 
 <pre><code>myModifiedObservable = myObservable.onErrorResumeNext({ t ->
   Throwable myThrowable = myCustomizedThrowableCreator(t);
   return (Observable.error(myThrowable));
});
</code></pre> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1491228009997295616"></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">你可能感兴趣的:(如何使用RxJava)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1902705698823794688.htm"
                           title="c#:使用串口通讯实现数据的发送和接收" target="_blank">c#:使用串口通讯实现数据的发送和接收</a>
                        <span class="text-muted">妮妮学代码</span>
<a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E4%B8%B2%E5%8F%A3%E9%80%9A%E8%AE%AF/1.htm">串口通讯</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>串口通讯(SerialCommunication)是一种常见的硬件设备与计算机之间的数据传输方式,广泛应用于工业控制、嵌入式系统、传感器数据采集等领域。本文将详细介绍如何使用C#实现基于串口通讯的数据发送和接收,并结合代码示例解析其实现过程。1.概述串口通讯的核心是System.IO.Ports.SerialPort类,它封装了串口操作的底层细节,提供了简单易用的接口。以下是串口通讯的基本流程:1</div>
                    </li>
                    <li><a href="/article/1902705697313845248.htm"
                           title="C#:使用UDP协议实现数据的发送和接收" target="_blank">C#:使用UDP协议实现数据的发送和接收</a>
                        <span class="text-muted">妮妮学代码</span>
<a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/UDP/1.htm">UDP</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/udp/1.htm">udp</a>
                        <div>UDP(UserDatagramProtocol)是一种无连接的、轻量级的传输协议,适用于对实时性要求较高的应用场景,如视频流、在线游戏等。与TCP不同,UDP不保证数据的可靠传输,但其传输效率更高。本文将详细介绍如何使用C#实现基于UDP协议的数据发送和接收,并结合代码示例解析其实现过程。1.概述UDP通讯的核心是UdpClient类,它封装了UDP协议的底层操作,提供了简单易用的接口。以下是U</div>
                    </li>
                    <li><a href="/article/1902685648029020160.htm"
                           title="开源模型应用落地-qwen模型小试-调用Qwen2-7B-Instruct-进阶篇(十二)" target="_blank">开源模型应用落地-qwen模型小试-调用Qwen2-7B-Instruct-进阶篇(十二)</a>
                        <span class="text-muted">开源技术探险家</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E6%A8%A1%E5%9E%8B-%E5%AE%9E%E9%99%85%E5%BA%94%E7%94%A8%E8%90%BD%E5%9C%B0/1.htm">开源模型-实际应用落地</a><a class="tag" taget="_blank" href="/search/%23/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/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/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>
                        <div>一、前言经过前五篇“qwen模型小试”文章的学习,我们已经熟练掌握qwen大模型的使用。然而,就在前几天阿里云又发布了Qwen2版本。无论是语言模型还是多模态模型,均在大规模多语言和多模态数据上进行预训练,并通过高质量数据进行后期微调以贴近人类偏好。本文将介绍如何使用Transformers库进行模型推理(相较于qwen1系列,使用方式上有较大的调整),现在,我们赶紧跟上脚步,去体验一下新版本模型</div>
                    </li>
                    <li><a href="/article/1902649330712506368.htm"
                           title="Django系列教程(13)——Cookie和Session应用场景及案例" target="_blank">Django系列教程(13)——Cookie和Session应用场景及案例</a>
                        <span class="text-muted">l软件定制开发工作室</span>
<a class="tag" taget="_blank" href="/search/Django%E6%95%99%E7%A8%8B/1.htm">Django教程</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a>
                        <div>目录什么是cookie,cookie的应用场景及缺点Django中如何使用cookieCookie使用示例什么是session及session的工作原理Django中如何使用会话sessionSession使用示例小结HTTP协议本身是”无状态”的,在一次请求和下一次请求之间没有任何状态保持,服务器无法识别来自同一用户的连续请求。有了cookie和session,服务器就可以利用它们记录客户端的访</div>
                    </li>
                    <li><a href="/article/1902648069812449280.htm"
                           title="Python 的类中,self 是一个特殊的参数" target="_blank">Python 的类中,self 是一个特殊的参数</a>
                        <span class="text-muted">可可乐不加冰</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%AD%A6%E4%B9%A0%E4%B8%93%E6%A0%8F/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的类中,self是一个特殊的参数,它代表类的实例本身。self是方法的第一个参数,用于访问实例的属性和方法。下面我将从多个角度解释self的含义、作用以及如何使用它。1.self表示类的实例本身在Python中,当你创建一个类的实例时,实际上是在内存中创建了一个对象。self参数代表的就是这个对象本身。通过self,你可以在类的方法中访问和修改实例的属性。2.为什么需要self?se</div>
                    </li>
                    <li><a href="/article/1902646179129257984.htm"
                           title="如何使用C# 读写西门子PLC" target="_blank">如何使用C# 读写西门子PLC</a>
                        <span class="text-muted">A_nanda</span>
<a class="tag" taget="_blank" href="/search/%E8%A5%BF%E9%97%A8%E5%AD%90/1.htm">西门子</a>
                        <div>在C#WPF应用程序中,与西门子S7系列PLC进行通信是一个常见的需求,尤其是在工业自动化领域。以下是三种实现WPF上位机与西门子S7系列PLC通信同步的方式,每种方式都提供了代码实例、优缺点和使用场景。1.使用S7.Net库代码示例://创建PLC连接varplc=newS7.Net.Plc(CpuType.S71500,"192.168.1.10",0,1);plc.Open();//读取PL</div>
                    </li>
                    <li><a href="/article/1902635217303171072.htm"
                           title="一文搞懂Nginx: 域名配置、SSL、HTTP转HTTPS" target="_blank">一文搞懂Nginx: 域名配置、SSL、HTTP转HTTPS</a>
                        <span class="text-muted">千层冷面</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E7%B1%BB/1.htm">知识类</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/ssl/1.htm">ssl</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>本文将在Centos系统下详解Nginx服务器,从概念、下载、安装、编译、配置(含域名和证书)到启动。本文先讲Nginx如何使用,然后再谈概念。一、实践1.下载下载通常有2种方式:Centos自带的包管理工具、源码编译安装(推荐,拓展性强),本文使用源码编译安装的形式下载从Nginx官网(nginx.org)下载Nginx的源代码。亦可以使用wget命令或者浏览器下载后通过FTP等方式传输到服务器</div>
                    </li>
                    <li><a href="/article/1902614905312309248.htm"
                           title="如何在 Python 中将语音转换为文本" target="_blank">如何在 Python 中将语音转换为文本</a>
                        <span class="text-muted">无水先生</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%AD%E9%9F%B3%E5%A4%84%E7%90%86/1.htm">语音处理</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E7%BB%BC%E5%90%88/1.htm">人工智能综合</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/xcode/1.htm">xcode</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库执行语音识别,以在Python中将音频语音转换为文本。想要更快地编码吗?我们的Python代码生成器让您只需点击几下即可创建Python脚本。现在就现在试试!二、语言AI库2.1相当给力的转文字库  语音识别是计算机软件识别口语中的单词和短语并将其转换为人类可读文本的能力。在本教程中,您将学习如何使用SpeechRecognition库在Python中</div>
                    </li>
                    <li><a href="/article/1902599895328550912.htm"
                           title="【使用 Element UI 实现手动上传文件:FormData 追加文件和其他参数,支持单文件覆盖上传】" target="_blank">【使用 Element UI 实现手动上传文件:FormData 追加文件和其他参数,支持单文件覆盖上传】</a>
                        <span class="text-muted">Hermione_log</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在开发Web应用时,文件上传是一个常见的需求。ElementUI提供了强大的el-upload组件,可以轻松实现文件上传功能。本文将详细介绍如何使用ElementUI实现以下功能:手动触发文件上传:用户选择文件后,点击按钮手动上传。使用FormData追加文件和其他参数:将文件和其他表单数据一起提交。单文件覆盖上传:只允许上传一个文件,新文件会覆盖旧文件。1.实现思路为了实现上述功能,我们需要以下</div>
                    </li>
                    <li><a href="/article/1902590553229422592.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/%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%E4%BA%BA/1.htm">机器人</a>
                        <div>Python在人工智能与机器人开发中的应用与实践Python已经成为人工智能和机器人开发的主要编程语言之一,凭借其简洁的语法、强大的库支持和广泛的社区资源,Python为开发者提供了一个高效且易于学习的平台。在这篇文章中,我们将深入探讨如何使用Python进行人工智能(AI)和机器人开发,并通过实际代码示例展示核心技术和应用。1.Python在人工智能中的应用人工智能(AI)领域的核心任务包括机器</div>
                    </li>
                    <li><a href="/article/1902586015130906624.htm"
                           title="BigemapPro 图斑名称自定义修改全攻略" target="_blank">BigemapPro 图斑名称自定义修改全攻略</a>
                        <span class="text-muted">Bigemap软件</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E9%9C%80%E6%B1%82/1.htm">软件需求</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a>
                        <div>在地图制作中,图斑名称的显示和修改是一个常见但重要的任务。今天,我们就来详细讲解如何使用BigemapPro自定义修改图斑名称,并通过字段信息组合显示它的名称,让你的地图更加专业和直观!在完成图斑绘制后,若想让图斑名称即刻显示在地图上,操作非常简便。只需选中图层文件夹,点击鼠标右键,选择【显示图元名称】选项,图斑名称便会迅速出现在地图对应位置,帮助我们快速识别各个图斑。一、单个图斑名称修改手动修改</div>
                    </li>
                    <li><a href="/article/1902553357927641088.htm"
                           title="js将元素滚动到可见区域" target="_blank">js将元素滚动到可见区域</a>
                        <span class="text-muted">无足鸟丶</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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>除了使用scrollIntoView方法之外,还可以使用scrollIntoViewIfNeeded方法作为兼容性更好的替代方法。scrollIntoViewIfNeeded方法在某些情况下会更加平滑地将元素滚动到可见区域,而不会强制滚动到视口的顶部或底部。它的兼容性也比scrollIntoView方法更好。以下是一个示例代码,展示如何使用scrollIntoViewIfNeeded方法将元素滚动</div>
                    </li>
                    <li><a href="/article/1902532796862230528.htm"
                           title="taro-vue2 如何使用国密加解密" target="_blank">taro-vue2 如何使用国密加解密</a>
                        <span class="text-muted">周亚鑫</span>
<a class="tag" taget="_blank" href="/search/taro/1.htm">taro</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>taro-vue2如何使用国密加解密returnunescape(encodeURIComponent(str)).split("").map(val=>val.charCodeAt());​returndecodeURIComponent(escape(String.fromCharCode(...strBuffer)));constsm2=require('miniprogram-sm-cry</div>
                    </li>
                    <li><a href="/article/1902500507159687168.htm"
                           title="纳米尺度仿真软件:Quantum Espresso_(19).输运性质计算" target="_blank">纳米尺度仿真软件:Quantum Espresso_(19).输运性质计算</a>
                        <span class="text-muted">kkchenjj</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A62/1.htm">分子动力学2</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%8B%9F%E4%BB%BF%E7%9C%9F/1.htm">模拟仿真</a><a class="tag" taget="_blank" href="/search/%E4%BB%BF%E7%9C%9F%E6%A8%A1%E6%8B%9F/1.htm">仿真模拟</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/1.htm">分子动力学</a>
                        <div>输运性质计算在纳米尺度仿真软件中,输运性质计算是研究材料和器件中电荷和热能输运的重要工具。QuantumEspresso提供了多种方法来计算输运性质,包括使用非平衡格林函数(NEGF)和传输矩阵方法(TMM)。本节将详细介绍如何使用QuantumEspresso及其相关模块进行输运性质的计算,包括设置计算参数、运行模拟以及分析结果。1.非平衡格林函数(NEGF)方法1.1.原理非平衡格林函数(NE</div>
                    </li>
                    <li><a href="/article/1902496843942653952.htm"
                           title="如何轻松爬取 TikTok 评论?手把手教你高效采集数据!" target="_blank">如何轻松爬取 TikTok 评论?手把手教你高效采集数据!</a>
                        <span class="text-muted">pzhyy</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AE%B9%E8%BF%90%E8%90%A5/1.htm">内容运营</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E5%AA%92%E4%BD%93%E8%BF%90%E8%90%A5/1.htm">新媒体运营</a>
                        <div>引言随着TikTok的全球火爆,越来越多的数据分析师、营销人员和研究人员希望获取TikTok视频评论,以分析用户反馈、市场趋势或热门内容。然而,手动整理TikTok评论既耗时又低效,因此,使用一款高效的TikTok采集器成为刚需。Tapicker是一款功能强大的TikTok采集软件,可以帮助用户自动爬取TikTok评论,省去繁琐的手工整理工作。本文将详细介绍如何使用Tapicker爬取TikTok</div>
                    </li>
                    <li><a href="/article/1902493560381435904.htm"
                           title="一键秒连WiFi智能设备,uni-app全栈式物联开发指南。" target="_blank">一键秒连WiFi智能设备,uni-app全栈式物联开发指南。</a>
                        <span class="text-muted">豆豆(前端开发+ui设计)</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>如何使用uni-app框架实现通过WiFi连接设备并进行命令交互的硬件开发。为了方便理解和实践,我们将提供相应的源代码示例,帮助开发者快速上手。1.硬件准备在开始之前,请确保你已经准备好以下硬件设备:支持WiFi连接的设备:如ESP8266、ESP32等。控制端设备:手机或电脑,安装有支持uni-app开发的开发环境(如HBuilderX)。网络环境:确保设备和控制端在同一个局域网内。2.uni-</div>
                    </li>
                    <li><a href="/article/1902474142414860288.htm"
                           title="使用MarkdownHeaderTextSplitter拆分Markdown文档" target="_blank">使用MarkdownHeaderTextSplitter拆分Markdown文档</a>
                        <span class="text-muted">scaFHIO</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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>在AI驱动的应用中,如聊天机器人或问答系统,处理大型文档时,通过分片技术将文档拆分为更小的单元是必要的步骤。尤其是对于Markdown格式的文件,它们通常由各种层级的标题结构化组织。通过按标题拆分,有利于保留文档的上下文语义一致性。本篇文章将讲解如何使用MarkdownHeaderTextSplitter来实现这一目标。技术背景介绍在将完整的段落或文档进行嵌入时,嵌入过程会考虑文本的整体上下文以及</div>
                    </li>
                    <li><a href="/article/1902464309766713344.htm"
                           title="理解并使用基于n-gram重叠的示例选择器" target="_blank">理解并使用基于n-gram重叠的示例选择器</a>
                        <span class="text-muted">shuoac</span>
<a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>在AI及自然语言处理任务中,选择与输入最相似的示例可以显著提升生成的质量和上下文相关性。本文将介绍如何使用NGramOverlapExampleSelector工具,通过n-gram重叠来筛选和排序示例,从而帮助实现这一目标。技术背景介绍n-gram重叠技术通过比较输入文本与示例文本在字符或词组上的相似度,计算一个介于0到1之间的分数来表示相似度。这个分数越高,表示文本间的重叠越大。NGramOv</div>
                    </li>
                    <li><a href="/article/1902451078541144064.htm"
                           title="深入理解 Java 反射与 PropertyDescriptor 的应用" target="_blank">深入理解 Java 反射与 PropertyDescriptor 的应用</a>
                        <span class="text-muted">HoroMin</span>
<a class="tag" taget="_blank" href="/search/web%E5%9F%BA%E7%A1%80/1.htm">web基础</a><a class="tag" taget="_blank" href="/search/easybbs%E9%A1%B9%E7%9B%AE%E7%96%91%E9%9A%BE%E8%AE%B0%E5%BD%95/1.htm">easybbs项目疑难记录</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%8F%8D%E5%B0%84/1.htm">反射</a>
                        <div>在Java编程中,反射是一项强大的功能,它允许我们在运行时动态地访问和操作类的信息,包括字段、方法和构造函数等。在处理JavaBean时,反射的灵活性尤为重要。而PropertyDescriptor类正是用于简化JavaBean属性的动态访问和操作。本文将探讨反射的基本概念,并通过具体示例展现如何使用PropertyDescriptor。什么是反射?反射是Java的一个特性,允许程序在运行时检查类</div>
                    </li>
                    <li><a href="/article/1902444524861452288.htm"
                           title="使用Tiktoken进行文本分割:优化大语言模型的输入" target="_blank">使用Tiktoken进行文本分割:优化大语言模型的输入</a>
                        <span class="text-muted">bhawfgrcbtwny</span>
<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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>引言在处理大语言模型时,因其对输入的token数量有限制,文本分割成为一个至关重要的任务。为了确保生成的文本块不会超过模型的token限制,我们需要使用与模型相同的tokenizer来计数和分割文本。在本文中,我们将探讨如何使用Tiktoken和其他工具来实现有效的文本分割。主要内容1.Tiktoken介绍Tiktoken是由OpenAI创建的一个快速BPE(BytePairEncoding)to</div>
                    </li>
                    <li><a href="/article/1902425212301930496.htm"
                           title="使用CharacterTextSplitter实现文本按字符拆分" target="_blank">使用CharacterTextSplitter实现文本按字符拆分</a>
                        <span class="text-muted">bavDHAUO</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>在文本处理任务中,按字符进行拆分是一种简单且有效的方法。本篇文章将介绍如何使用CharacterTextSplitter类对文本进行按字符拆分,并生成适用于下游任务的LangChainDocument对象。技术背景介绍文本拆分是自然语言处理(NLP)中的一个基础步骤,尤其在大文本分块处理、文本摘要等任务中。CharacterTextSplitter是langchain-text-splitters</div>
                    </li>
                    <li><a href="/article/1902413862867628032.htm"
                           title="Julia语言的饼图" target="_blank">Julia语言的饼图</a>
                        <span class="text-muted">尤宸翎</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%85%E7%BD%97%E4%B8%87%E8%B1%A1/1.htm">包罗万象</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>Julia语言的饼图:全面剖析与实战指南引言在数据可视化的领域中,饼图作为一种经典的可视化工具,广泛用于展示各个分类在总体中的占比关系。尽管饼图在一些数据分析师中被视为相对简单和直观的图形,但它在实际运用中依然扮演着重要角色。本文将重点探讨如何使用Julia语言实现饼图的绘制,分析其背后的逻辑,并通过实例帮助读者掌握这一基本技能。Julia语言简介Julia是一种高性能、高级别的编程语言,适用于数</div>
                    </li>
                    <li><a href="/article/1902388257430237184.htm"
                           title="Python 爬虫实战:如何爬取小红书数据并进行分析" target="_blank">Python 爬虫实战:如何爬取小红书数据并进行分析</a>
                        <span class="text-muted">Python爬虫项目</span>
<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><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a>
                        <div>一、引言随着社交电商的崛起,小红书(Xiaohongshu)作为一款结合了社交和电商的应用,吸引了大量年轻用户。用户在平台上分享购物心得、生活经验以及个性化的消费推荐内容,形成了庞大的用户数据与内容生态。因此,如何从小红书获取数据进行分析,成为了数据科学、市场营销和社交媒体研究中的一个重要课题。本文将介绍如何使用Python编写爬虫爬取小红书的数据,分析如何通过小红书的开放API获取用户信息、帖子</div>
                    </li>
                    <li><a href="/article/1902365681907724288.htm"
                           title="MyBatisPlus 代码生成器如何使用?一篇文章学会它!!!" target="_blank">MyBatisPlus 代码生成器如何使用?一篇文章学会它!!!</a>
                        <span class="text-muted">程序猿ZhangSir</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%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/MyBatis/1.htm">MyBatis</a><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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>目录一.MP代码生成器简介二.准备工作2.1建立数据库和表2.1创建项目三.编写工具类3.1创建类3.2定义数据库连接变量3.3定义单表代码生成函数3.4扩展为任意表自动生成代码四.测试代码生成器4.1测试单表生成model方法一.MP代码生成器简介代码生成器是MyBatis-Plus提供的一个非常实用的功能,可以快速生成Entity、Mapper、MapperXML、Service、Contro</div>
                    </li>
                    <li><a href="/article/1902364293693763584.htm"
                           title="chatgpt赋能python:Python处理雷达基数据:从入门到实践" target="_blank">chatgpt赋能python:Python处理雷达基数据:从入门到实践</a>
                        <span class="text-muted">lvsetongdao123</span>
<a class="tag" taget="_blank" href="/search/ChatGpt/1.htm">ChatGpt</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a>
                        <div>Python处理雷达基数据:从入门到实践随着气象技术的不断发展,雷达探测技术已成为当今天气预报和气象研究的主要手段之一。雷达基数据是气象雷达接收到的未经加工的原始数据,因其包含大量天气信息,不仅在天气预报、天气预警等方面得到了广泛应用,还被广泛地用于气象科研和大气环境研究。本文将介绍如何使用Python处理雷达基数据,解析其中的信息,获取有效的天气数据,以及分析和可视化这些数据。雷达基数据格式与处</div>
                    </li>
                    <li><a href="/article/1902363659921846272.htm"
                           title="印度、马来股票K线接口与实时数据对接文档" target="_blank">印度、马来股票K线接口与实时数据对接文档</a>
                        <span class="text-muted">金融数据出海</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E9%87%91%E8%9E%8D/1.htm">金融</a><a class="tag" taget="_blank" href="/search/python3.11/1.htm">python3.11</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>概述本文档旨在为开发者提供关于如何使用StockTVAPI获取特定股票或指数的K线数据(即OHLCV数据,包括开盘价、最高价、最低价、收盘价以及成交量),以及如何通过WebSocket(WS)获取实时市场数据的详细指南。通过本文档,您将了解到如何构造请求URL,解析返回的数据,以及一些实用的应用场景示例。K线接口说明请求方法GET请求URLhttps://api.stocktv.top/stock</div>
                    </li>
                    <li><a href="/article/1902338832217468928.htm"
                           title="乐观锁与悲观锁的 MyBatis-Plus 实现" target="_blank">乐观锁与悲观锁的 MyBatis-Plus 实现</a>
                        <span class="text-muted">drebander</span>
<a class="tag" taget="_blank" href="/search/mybatis-plus/1.htm">mybatis-plus</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a>
                        <div>在高并发场景下,数据库的并发控制是确保数据一致性的关键。乐观锁和悲观锁是两种常见的并发控制机制,它们分别适用于不同的场景。MyBatis-Plus提供了对乐观锁的支持,使得开发者可以轻松实现并发控制。本文将详细介绍乐观锁与悲观锁的概念、MyBatis-Plus如何实现乐观锁、实现乐观锁的场景,以及如何使用@Version注解进行版本控制。1.乐观锁与悲观锁的概念1.1乐观锁(OptimisticL</div>
                    </li>
                    <li><a href="/article/1902336059375677440.htm"
                           title="使用 Vue 2.x + Element UI 搭建后台管理系统详解" target="_blank">使用 Vue 2.x + Element UI 搭建后台管理系统详解</a>
                        <span class="text-muted">不知名靓仔</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>引言Vue.js是一个非常流行的前端框架,而ElementUI是基于Vue2.x的一套完整的UI组件库,非常适合用来构建企业级的后台管理系统。本文将详细介绍如何使用Vue2.x和ElementUI来搭建一个后台管理系统,包括项目初始化、路由配置、状态管理、权限验证等关键步骤。vue2后台管理项目源码合集下载地址见最下方1.环境准备确保你的开发环境中已安装Node.js和npm。接下来,我们将使用V</div>
                    </li>
                    <li><a href="/article/1902330384071323648.htm"
                           title="基于 Python 将 PDF 转 Markdown 并拆解为 JSON,支持自定义标题处理" target="_blank">基于 Python 将 PDF 转 Markdown 并拆解为 JSON,支持自定义标题处理</a>
                        <span class="text-muted">drebander</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a>
                        <div>在日常工作中,我们经常需要将PDF文件转换为可编辑、可结构化的数据格式,比如Markdown和JSON。但实际操作中,自动化工具往往会出现标题识别不准确的问题,尤其是PDF转换过程中,缺乏明确的标题标识。这篇文章将教你如何使用Python将PDF转换为Markdown,并通过自定义规则精准识别标题,最终将内容按标题结构拆解为JSON,方便后续快速检索与使用。1.实现目标将PDF文件转换为Markd</div>
                    </li>
                    <li><a href="/article/1902322310598160384.htm"
                           title="【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现跨平台二维码扫描应用" target="_blank">【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现跨平台二维码扫描应用</a>
                        <span class="text-muted">金枝玉叶9</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%871/1.htm">程序员知识储备1</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%872/1.htm">程序员知识储备2</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%873/1.htm">程序员知识储备3</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>《一起学Rust|Tauri2.0框架》是一个结合Rust语言与Tauri框架开发跨平台应用的教程。Tauri2.0是一个非常适合构建跨平台桌面应用的框架,它让开发者可以使用Web技术(如HTML、CSS、JavaScript)来创建前端,同时利用Rust编写后端逻辑,确保应用运行高效且轻量。在这个教程中,开发者可以学习如何使用Rust与Tauri2.0框架实现一个跨平台二维码扫描应用。具体步骤可</div>
                    </li>
                                <li><a href="/article/118.htm"
                                       title="异常的核心类Throwable" target="_blank">异常的核心类Throwable</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%BA%90%E7%A0%81/1.htm">源码</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/1.htm">异常处理</a><a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a>
                                    <div>java异常的核心是Throwable,其他的如Error和Exception都是继承的这个类 里面有个核心参数是detailMessage,记录异常信息,getMessage核心方法,获取这个参数的值,我们可以自己定义自己的异常类,去继承这个Exception就可以了,方法基本上,用父类的构造方法就OK,所以这么看异常是不是很easy 
 
 
 
package com.natsu;


</div>
                                </li>
                                <li><a href="/article/245.htm"
                                       title="mongoDB 游标(cursor) 实现分页 迭代" target="_blank">mongoDB 游标(cursor) 实现分页 迭代</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>上篇中我们讲了mongoDB 中的查询函数,现在我们讲mongo中如何做分页查询 
 
     如何声明一个游标 
       var mycursor = db.user.find({_id:{$lte:5}}); 
      迭代显示游标数</div>
                                </li>
                                <li><a href="/article/372.htm"
                                       title="MySQL数据库INNODB 表损坏修复处理过程" target="_blank">MySQL数据库INNODB 表损坏修复处理过程</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>最近mysql数据库经常死掉,用命令net stop mysql命令也无法停掉,关闭Tomcat的时候,出现Waiting for N instance(s) to be deallocated 信息。查了下,大概就是程序没有对数据库连接释放,导致Connection泄露了。因为用的是开元集成的平台,内部程序也不可能一下子给改掉的,就验证一下咯。启动Tomcat,用户登录系统,用netstat -</div>
                                </li>
                                <li><a href="/article/499.htm"
                                       title="剖析如何与设计人员沟通" target="_blank">剖析如何与设计人员沟通</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>最近做图烦死了,不停的改图,改图……。烦,倒不是因为改,而是反反复复的改,人都会死。很多需求人员不知该如何与设计人员沟通,不明白如何使设计人员知道他所要的效果,结果只能是沟通变成了扯淡,改图变成了应付。 
 
那应该如何与设计人员沟通呢? 
 
我认为设计人员与需求人员先天就存在语言障碍。对一个合格的设计人员来说,整天玩的都是点、线、面、配色,哪种构图看起来协调;哪种配色看起来合理心里跟明镜似的,</div>
                                </li>
                                <li><a href="/article/626.htm"
                                       title="qq空间刷评论工具" target="_blank">qq空间刷评论工具</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>

var a=document.getElementsByClassName('textinput');
					var b=[];
					for(var m=0;m<a.length;m++){
						if(a[m].getAttribute('placeholder')!=null)
							b.push(a[m])
					}
					var l</div>
                                </li>
                                <li><a href="/article/753.htm"
                                       title="S2SH整合之session" target="_blank">S2SH整合之session</a>
                                    <span class="text-muted">灵静志远</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a>
                                    <div>错误信息: 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cartService': Scope 'session' is not active for the current thread; consider defining a scoped</div>
                                </li>
                                <li><a href="/article/880.htm"
                                       title="xmp标签" target="_blank">xmp标签</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%AD%BE/1.htm">标签</a>
                                    <div>今天在处理数据的显示上遇到一个问题: 
var html = '<li><div class="pl-nr"><span class="user-name">' + user
           + '</span>' + text + '</div></li>';
ulComme</div>
                                </li>
                                <li><a href="/article/1007.htm"
                                       title="Ajax的常用技巧(2)---实现Web页面中的级联菜单" target="_blank">Ajax的常用技巧(2)---实现Web页面中的级联菜单</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a>
                                    <div>在网络上显示数据,往往只显示数据中的一部分信息,如文章标题,产品名称等。如果浏览器要查看所有信息,只需点击相关链接即可。在web技术中,可以采用级联菜单完成上述操作。根据用户的选择,动态展开,并显示出对应选项子菜单的内容。 在传统的web实现方式中,一般是在页面初始化时动态获取到服务端数据库中对应的所有子菜单中的信息,放置到页面中对应的位置,然后再结合CSS层叠样式表动态控制对应子菜单的显示或者隐</div>
                                </li>
                                <li><a href="/article/1134.htm"
                                       title="天-安-门,好高" target="_blank">天-安-门,好高</a>
                                    <span class="text-muted">atongyeye</span>
<a class="tag" taget="_blank" href="/search/%E6%83%85%E6%84%9F/1.htm">情感</a>
                                    <div>    我是85后,北漂一族,之前房租1100,因为租房合同到期,再续,房租就要涨150。最近网上新闻,地铁也要涨价。算了一下,涨价之后,每次坐地铁由原来2块变成6块。仅坐地铁费用,一个月就要涨200。内心苦痛。 
 
    晚上躺在床上一个人想了很久,很久。 
   
    我生在农</div>
                                </li>
                                <li><a href="/article/1261.htm"
                                       title="android 动画" target="_blank">android 动画</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E9%80%8F%E6%98%8E%E5%BA%A6/1.htm">透明度</a><a class="tag" taget="_blank" href="/search/%E5%B9%B3%E7%A7%BB/1.htm">平移</a><a class="tag" taget="_blank" href="/search/%E7%BC%A9%E6%94%BE/1.htm">缩放</a><a class="tag" taget="_blank" href="/search/%E6%97%8B%E8%BD%AC/1.htm">旋转</a>
                                    <div>android的动画有两种  tween动画和Frame动画 
  
tween动画;,透明度,缩放,旋转,平移效果 
  
Animation   动画 
AlphaAnimation 渐变透明度 
RotateAnimation 画面旋转 
ScaleAnimation 渐变尺寸缩放 
TranslateAnimation 位置移动 
Animation</div>
                                </li>
                                <li><a href="/article/1388.htm"
                                       title="查看本机网络信息的cmd脚本" target="_blank">查看本机网络信息的cmd脚本</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a>
                                    <div>@echo 您的用户名是:%USERDOMAIN%\%username%>"%userprofile%\网络参数.txt"
@echo 您的机器名是:%COMPUTERNAME%>>"%userprofile%\网络参数.txt"
@echo ___________________>>"%userprofile%\</div>
                                </li>
                                <li><a href="/article/1515.htm"
                                       title="plsql 清除登录过的用户" target="_blank">plsql 清除登录过的用户</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>tools---preferences----logon history---history  把你想要删除的删除 
 
 
-------------------------------------------------------------------- 
若有其他凝问或文中有错误,请及时向我指出, 
我好及时改正,同时也让我们一起进步。 
email : binary_spac</div>
                                </li>
                                <li><a href="/article/1642.htm"
                                       title="【Pig一】Pig入门" target="_blank">【Pig一】Pig入门</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/pig/1.htm">pig</a>
                                    <div>Pig安装 
1.下载pig 
  
wget http://mirror.bit.edu.cn/apache/pig/pig-0.14.0/pig-0.14.0.tar.gz 
  
2. 解压配置环境变量 
  
   如果Pig使用Map/Reduce模式,那么需要在环境变量中,配置HADOOP_HOME环境变量 
  
expor</div>
                                </li>
                                <li><a href="/article/1769.htm"
                                       title="Java 线程同步几种方式" target="_blank">Java 线程同步几种方式</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/volatile/1.htm">volatile</a><a class="tag" taget="_blank" href="/search/synchronized/1.htm">synchronized</a><a class="tag" taget="_blank" href="/search/ThredLocal/1.htm">ThredLocal</a><a class="tag" taget="_blank" href="/search/ReenTranLock/1.htm">ReenTranLock</a><a class="tag" taget="_blank" href="/search/Concurrent/1.htm">Concurrent</a>
                                    <div>为何要使用同步?       java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),        将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,        从而保证了该变量的唯一性和准确性。    1.同步方法&</div>
                                </li>
                                <li><a href="/article/1896.htm"
                                       title="StringUtils判断字符串是否为空的方法(转帖)" target="_blank">StringUtils判断字符串是否为空的方法(转帖)</a>
                                    <span class="text-muted">BreakingBad</span>
<a class="tag" taget="_blank" href="/search/null/1.htm">null</a><a class="tag" taget="_blank" href="/search/StringUtils/1.htm">StringUtils</a><a class="tag" taget="_blank" href="/search/%E2%80%9C%E2%80%9D/1.htm">“”</a>
                                    <div>转帖地址:http://www.cnblogs.com/shangxiaofei/p/4313111.html 
  
public static boolean isEmpty(String str)      
  判断某字符串是否为空,为空的标准是 str== 
null  
或 str.length()== 
0    </div>
                                </li>
                                <li><a href="/article/2023.htm"
                                       title="编程之美-分层遍历二叉树" target="_blank">编程之美-分层遍历二叉树</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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/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/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LevelTraverseBinaryTree {

    /**
     * 编程之美 分层遍历二叉树
     * 之前已经用队列实现过二叉树的层次遍历,但这次要求输出换行,因此要</div>
                                </li>
                                <li><a href="/article/2150.htm"
                                       title="jquery取值和ajax提交复习记录" target="_blank">jquery取值和ajax提交复习记录</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/jquery%E5%8F%96%E5%80%BC/1.htm">jquery取值</a><a class="tag" taget="_blank" href="/search/ajax%E6%8F%90%E4%BA%A4/1.htm">ajax提交</a>
                                    <div>
// 取值
	// alert($("input[name='username']").val());
	// alert($("input[name='password']").val());
	// alert($("input[name='sex']:checked").val());
	// alert($("</div>
                                </li>
                                <li><a href="/article/2277.htm"
                                       title="推荐国产工作流引擎嵌入式公式语法解析器-IK Expression" target="_blank">推荐国产工作流引擎嵌入式公式语法解析器-IK Expression</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a>
                                    <div>这个开源软件包是国内的一位高手自行研制开发的,正如他所说的一样,我觉得它可以使一个工作流引擎上一个台阶。。。。。。欢迎大家使用,并提出意见和建议。。。 
----------转帖--------------------------------------------------- 
 IK Expression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言</div>
                                </li>
                                <li><a href="/article/2404.htm"
                                       title="关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer" target="_blank">关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>1、PropertyPlaceholderConfigurer 
Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。接下来让我们逐渐的深入其配置。 
 
基本的使用方法是:(1) 
 
<bean id="propertyConfigurerForWZ&q</div>
                                </li>
                                <li><a href="/article/2531.htm"
                                       title="二叉树:二叉搜索树" target="_blank">二叉树:二叉搜索树</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%8F%89%E6%A0%91/1.htm">二叉树</a>
                                    <div>    所谓二叉树,就是一个节点最多只能有两个子节点,而二叉搜索树就是一个经典并简单的二叉树.规则是一个节点的左子节点一定比自己小,右子节点一定大于等于自己(当然也可以反过来).在树基本平衡的时候插入,搜索和删除速度都很快,时间复杂度为O(logN).但是,如果插入的是有序的数据,那效率就会变成O(N),在这个时候,树其实变成了一个链表. 
 
tree代码: 
 
</div>
                                </li>
                                <li><a href="/article/2658.htm"
                                       title="C语言字符串函数大全" target="_blank">C语言字符串函数大全</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/function/1.htm">function</a>
                                    <div>C语言字符串函数大全 
  
  
函数名: stpcpy 
功 能: 拷贝一个字符串到另一个 
用 法: char *stpcpy(char *destin, char *source); 
程序例: 
  
#include <stdio.h> 
#include <string.h> 
  
int main</div>
                                </li>
                                <li><a href="/article/2785.htm"
                                       title="友盟统计页面技巧" target="_blank">友盟统计页面技巧</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E5%B7%A7/1.htm">技巧</a>
                                    <div>在基类调用就可以了, 基类ViewController示例代码 
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [MobClick beginLogPageView:[NSString stringWithFormat:@"%@",self.class]];
</div>
                                </li>
                                <li><a href="/article/2912.htm"
                                       title="window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法" target="_blank">window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法</a>
                                    <span class="text-muted">flyvszhb</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a>
                                    <div>window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法 
 
本机已经安装了jdk1.7,而比较早期的项目需要依赖jdk1.6,于是同时在本机安装了jdk1.6和jdk1.7. 
 安装jdk1.6前,执行java -version得到 
C:\Users\liuxiang2>java -version 
java version "1.7.0_21&quo</div>
                                </li>
                                <li><a href="/article/3039.htm"
                                       title="Java在创建子类对象的同时会不会创建父类对象" target="_blank">Java在创建子类对象的同时会不会创建父类对象</a>
                                    <span class="text-muted">happyqing</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%88%9B%E5%BB%BA/1.htm">创建</a><a class="tag" taget="_blank" href="/search/%E5%AD%90%E7%B1%BB%E5%AF%B9%E8%B1%A1/1.htm">子类对象</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E7%B1%BB%E5%AF%B9%E8%B1%A1/1.htm">父类对象</a>
                                    <div>  
1.在thingking in java 的第四版第六章中明确的说了,子类对象中封装了父类对象, 
  
2."When you create an object of the derived class, it contains within it a subobject of the base class. This subobject is the sam</div>
                                </li>
                                <li><a href="/article/3166.htm"
                                       title="跟我学spring3 目录贴及电子书下载" target="_blank">跟我学spring3 目录贴及电子书下载</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>  
  一、《跟我学spring3》电子书下载地址: 
《跟我学spring3》  (1-7 和 8-13) http://jinnianshilongnian.iteye.com/blog/pdf   
  
跟我学spring3系列 word原版 下载 
  
  二、
源代码下载  
最新依</div>
                                </li>
                                <li><a href="/article/3420.htm"
                                       title="第12章 Ajax(上)" target="_blank">第12章 Ajax(上)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3547.htm"
                                       title="BI and EIM 4.0 at a glance" target="_blank">BI and EIM 4.0 at a glance</a>
                                    <span class="text-muted">blueoxygen</span>
<a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a>
                                    <div>http://www.sap.com/corporate-en/press.epx?PressID=14787 
  
有机会研究下EIM家族的两个新产品~~~~ 
  
New features of the 4.0 releases of BI and EIM solutions include:  
 
  Real-time in-memory computing – </div>
                                </li>
                                <li><a href="/article/3674.htm"
                                       title="Java线程中yield与join方法的区别" target="_blank">Java线程中yield与join方法的区别</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别。坦白的说,实际上我并没有用过其中任何一个方法,所以,如果你感觉有不恰当的地方,请提出讨论。 
&nb</div>
                                </li>
                                <li><a href="/article/3801.htm"
                                       title="android Manifest.xml选项" target="_blank">android Manifest.xml选项</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/Manifest/1.htm">Manifest</a>
                                    <div>结构 
继承关系 
public final class Manifest extends Objectjava.lang.Objectandroid.Manifest 
内部类 
 
 
 class Manifest.permission权限 
 class Manifest.permission_group权限组 
 构造函数 
 
public Manifest () 详细  androi</div>
                                </li>
                                <li><a href="/article/3928.htm"
                                       title="Oracle实现类split函数的方" target="_blank">Oracle实现类split函数的方</a>
                                    <span class="text-muted">zhaoshijie</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>关键字:Oracle实现类split函数的方 
项目里需要保存结构数据,批量传到后他进行保存,为了减小数据量,子集拼装的格式,使用存储过程进行保存。保存的过程中需要对数据解析。但是oracle没有Java中split类似的函数。从网上找了一个,也补全了一下。 
 
CREATE OR REPLACE TYPE t_split_100 IS TABLE OF VARCHAR2(100); 
 
cr</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>