一个模仿Yahoo!的流处理引擎管。

riko的Python项目详细描述


riko:一个模仿雅虎的流处理引擎!Pipes
===========================================================

|travis| |versions| |pypi|

Index
-----

`Introduction`_ | `Requirements`_ | `Word Count`_ | `Motivation`_ | `Usage`_ |
`Installation`_ | `Design Principles`_ | `Scripts`_ | `Command-line Interface`_ |
`Contributing`_ | `Credits`_ | `More Info``project structure``license`

`` riko``有'synchronous``和'asynchronous`` api,支持'parallel
execution`,非常适合处理rss提要[].`` riko``还提供用于执行``flows``的``命令行接口,即流处理器,也称为``workflows``。

和maps
-通过CPU/处理器或线程执行"并行处理"
-等等…


notes
^^^^^

[]`真正简单的联合`.
…[#] `Mashup (web application hybrid)`_

Requirements
------------

``riko`` has been tested and is known to work on Python 2.7, 3.5, and 3.6;
PyPy2 5.8.0, and PyPy3 5.8.0.

Optional Dependencies
^^^^^^^^^^^^^^^^^^^^^

======================== =================== ===========================
Feature 依赖安装的依赖性安装
===================================================================异步api ` twisted ``异步``异步安装riko的riko安装riko的riko安装riko的riko安装riko的riko安装riko安装riko的riko安装riko安装riko的riko安装riko安装riko安装riko的加速xml解析的lxml `=>加速feed解析的feed解析的feed解析]U``PIP安装ll riko[xml]```
=====================================================


notes
^^^^^

[]如果不存在"lxml",则"riko"将默认为内置python xml解析器
。[]如果不存在"speedparser",则"riko"将默认为"feedparser",在本例中,我们使用几个"管道"来计算网页上的单词数。代码块::python

>
>gt>gt;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\gt;
>;>###设置管道配置"1"。"detag"选项将从结果中删除所有html标记
>;>;>;&2。获取hackernews
>;>;主页
>;>;3的"body"标记中包含的文本。将换行符替换为空格,并将结果分配给"content"
>;>;>;&4。使用空白作为分隔符标记结果文本。计算每个令牌出现的次数
>;>;>;6。获取原始流
>;>;>;7。提取第一个单词及其计数
>;>;>;8。提取第二个单词及其计数。提取第三个单词及其计数
>;>;url='https://news.ycombinator.com/'
>;>;fetch_conf={
…'url':url,'start':'<;body>;','end':'<;/body>;','detag':true}1
>;
>;
>;>替换配置{
…'规则":[
…{查找':'\r\n','替换':'},
…{'find':'\n','replace':'}}
>;
>;>flow=(
)。…syncpipe('fetchpage',conf=fetch_conf)2
….strreplace(conf=replace_conf,assign='content')3
….tokenizer(conf={'delimiter':''},emit=true)4
….count(conf={'count撸key':'content'})5
>;
>;>stream=flow.output撸6
>;>next(stream)7
{"'sad":1}
>;>>下一步(stream)8
{'(':28}
>;>下一步(stream)9
{'(1999)':1}


^^^^^^^^^^^^^^^^

雅虎!Pipes[]\u是一个用户友好的Web应用程序,用于


聚合、操作和mashup来自Web各地的内容


要创建自定义管道,我遇到了"Pipe2py",它翻译了一个
Yahoo!导入python代码。`` pipe2py``适合我当时的需要
,但未被维护,缺乏异步或并行处理。

``riko``解决了'pipe2py`的缺点,但取消了对导入雅虎的支持!管道json工作流。`` riko``包含~`40个内置模块,也称为``pipes``,它们允许您以编程方式执行大多数任务yahoo!允许使用管道。

why you should should use riko
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``riko``提供了许多与其他流处理应用程序(如huginn、flink、spark和storm[\br/>不同之处。即:

-占用空间小(cpu和内存使用量)
-本地rss/atom支持
-简单的安装和使用
-一个纯python库,支持
-内置模块"管道"来过滤、排序和修改"流"。:

-不分布式(可在服务器群集上运行)
-没有用于创建"流"的图形用户界面
-不连续监视"流"以获取新数据
-无法对特定事件作出反应
-基于迭代器(拉取)的流仅支持单个使用者BLE总结了这些观察结果:

=============================================================================
库流类型封装rss simple[]异步并行cep[]分布式
===================================================================
riko pull small√√√√√
pipe2 py pull small√√
huginn push med√[]√√
others push large[][][]_√√√
=========================================================================


有关详细信息,请查看"常见问题解答"。

注意事项
^^


[]雅虎终止了雅虎!2015年的管道,但您可以查看"剩余"的内容。[]`huginn`、`flink`、`spark``和`storm`.
[]您可以通过"分割"模块减轻这种影响
…[]不依赖外部服务,如mysql、kafka、yarn、zookeeper或mesos
。复杂事件处理[]Huginn似乎没有发出"异步Web请求"
。[]许多库在没有使用第三方库的情况下无法解析rss流
…尽管大多数库都提供本地模式,但许多库需要与数据摄取器(例如flume/kafka)集成才能执行任何有用的操作
。[]我找不到证据表明这些库提供了异步API(而且显然"spark不"提供了异步API)


usage
----

``riko``打算直接用作Python库。

usage index
^^^^^^^^^^

-`获取提要`
-`synchronous processing`
-`parallel processing`
-`asynchronous processing`
-`cookbook`

>`riko``可以通过"source"
``pipes``从本地和远程文件路径获取rss提要。每个"source"``pipe``返回一个``stream``,即
字典的迭代器,也称为``items`.

。从riko.modules导入fetch,fetchsitfefeed,fetchsitfeed,fetchsitfeed;从riko.modules导入fetch,fetchsitfeed,fetchsitfeed;从riko.modules导入fetch,fetchsitfeed,fetchsitfeed;
>gt;35;;;;;;;;;;;;;;;;;
>>;gt;stream=fetch.pipe(conf={'url':'https://news.ycombinator.com/ycombinator.com/rss'>>>>>>>铁找到第一个rss提要35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35; 35 35 35
>>>;gt;gt;stream=fetchsitfeed.pipe(conf={'url''http://arrstechnica.com/rsrsrss feed s/feeds/feeds/feeds/feeds/注意:无论你如何获取rssfeed,它将具有相同的
>;>;结构
>;>;item=next(stream)
>;>;item.keys()
dict\u键(['title\u detail','author.uri','tags','summary\u detail','author.name','y:published','y:title','content','title、'pubdate'、
'guidislink'、'id'、'summary'、'dc:creator'、'authors'、'published\parsed'、
'links'、'y:id'、'author'、'link'、'published')

在",
"克里斯·李",
"http://arstechnica.com/?p=924009')

有关支持的"文件类型"和"协议"的完整列表,请参见"常见问题解答"。有关更多示例,请参见"获取数据和提要"。

代码块::python

>;>from riko.collections import syncpipe
>;
>;>'包含''值':'.com'}
>>gt;xpath='/html/body/中心/body/中心/表/tr[3]/td/表[2]/tr[1]/td/table/tr/tr/td[3]/span/span/span'
>>gt;xpath-conf={'url'{'subkey':'注释'},'xpath''xpath'''xpath'''xpath''''xpath''xpath'''xpath''xpath''xpath''xpath''xpath''xpath'>>>>>>gt;
>>>>>>>gt;'gt;'gt;'gt;gt;'gt;'gt;;
>;>>syncpipe是一个方便类,它创建可链接的流并允许并行处理。
>;
>;>1。获取hackernews rss feed
>;>;2。筛选链接中带有".com"的项目
>;>;>;3。按标题升序排列项目。从每个项目中获取第一条注释
>;>;>;5。将结果展平到一个原始流中。提取第一个项目的内容
>>gt;
>>gt;注意:排序并不懒惰,因此使用此管道时请小心
>;
>;…syncpipe('fetch',conf=fetch_conf)1
….filter(conf={'rule':筛选器规则})2
….sort(conf={'rule':{'sort\'key':'title'})3
….xpathFetchPage(conf=xpath_conf))4
>;
>;
>;>stream=flow.output 5
>;>next(stream)['content']\6
'打开人工胰腺主页:'

工作流创建`,用于
创建``流``的另一种(基于函数的)方法。有关可用的完整列表,请参见"pipes"``管道`.

parallel processing
^^^^^^^^^^^^^^^^^^^


使用``riko``的并行api生成``threadpool``[]`[

代码块::python

>;>from riko.collections import syncpipe
>;
>;>'包含','值':'.com'}
>;>;xpath='/html/body/center/table/tr[3]/td/table[2]/tr[1]/td/table/tr/td[3]/span/span'
>;>;xpath配置={'url':{'subkey':'comments'},'xpath':xpath}
>;
>;>;>;\###
>>>>以下流程将:
>>>1。获取hackernews rss feed
>;>;2。在文章链接中筛选带有".com"的项目。并行地从所有项中获取第一条注释(使用4个工作线程)
>;>;4。将结果展平为一个原始流
>;>;>;5。提取第一个项目的内容
>;>
>;>注意:在筛选之后排序没有意义,因为并行提取不能保证
>;>顺序
>;>流=(
…syncpipe('fetch',conf=fetch_conf,parallel=true,workers=4)1
….filter(conf={'rule':筛选器规则})2
….xpathFetchPage(conf=xpath_conf))3
>;
>;
>;>stream=flow.output 4
>;>next(stream)['content']\5
他使用了下面的exa例如,何时抛出自己的错误:'

Asynchronous processing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^


要启用异步处理,必须安装"Async"模块。

。代码块::bash

pip安装riko[async]


使用"riko"异步api的示例。

…代码块::python

>;>from riko.bado import coroutine,react
>;>from riko.collections import asyncpippe
>;
>;>}
>;>;筛选规则={'field':'link','op':'contains','value':'.com'}
>;>;xpath='/html/body/center/table/tr[3]/td/table[2]/tr[1]/td/table/tr/td[3]/span/span'
>;>;xpath配置={'url':{'subkey':'comments'},"xpath":xpath}
>;
>;>创建一个异步管道流:
>;
获取hackernews rss feed
>;>;2。在文章链接中筛选带有".com"的项目。异步从每个项中获取第一条注释(使用4个连接)
>;>4。将结果展平为一个原始流
>;>;>;5。提取第一个项目的内容
>;
>;>注意:由于异步提取不能保证
>;>顺序
>;@coroutine
def运行(反应器):
…流=产量(
…异步管道('fetch',conf=fetch_conf,connections=4)1
….filter(conf={'rule':筛选器规则})2
….xpathFetchPage(conf=xpath_u conf)3
….输出)4

…打印(下一个(流)[内容])5
>;
>;
>;>尝试:
…反应(运行)
…系统退出除外:
…pass
这里是迭代的工作原理():


cookbook
^^^^^^^^^^

请参见"cookbook"或"ipython notebook"了解更多示例。


notes
^^^^^

[]您可以通过另外将"threads=false"传递到"syncpipe"来启用"processpool",即"syncpipe('fetch',conf={url':url},parallel=true,threads=false)``"。



在命令行中,使用``pip``(推荐*)

代码块::bash


或"轻松安装"`

…代码块::bash

easy_install riko


有关详细信息,请参阅"安装文档"。


设计原则
----


riko中的主要数据结构是"项"和"流"。一个``item`
只是一个python字典,``stream``是``items``的迭代器。您可以使用类似于
`[{content':'hello world'}``这样简单的东西手动创建一个``stream``流。在
``riko``中,通过``pipes``操作``streams``流。"pipe"只是一个接受
"stream"或"item"并返回"stream"的函数。``管道``是可组合的:您可以使用一个``pipe``的输出作为另一个``pipe``的输入。

`riko```pipes``有两种类型;``operators``和``processors`.
``operators``一次对整个``stream``进行操作,无法处理
单个项。示例"operators"包括"count"、"pipefilter"、"reverse"和"reverse"。代码块::python

>;>;来自riko.modules.reverse import pipe
>;
>;>;stream=[{'title':'riko pt。1'},{'title':'riko点。2'}]
>;>>下一个(管道(流))
{标题':'riko pt。2'}

``processors``处理单个``items``并且可以跨
线程或进程并行化。示例"处理器"包括"fetchsitefeed"、"hash"、"pipeitembuilder"和"piperegex"。代码块::python

>;>from riko.modules.hash import pipe
>;
>;>item={'title':'riko pt。1'}
>;>stream=管道(项目,字段='title')
>;>next(流)
{'title':'riko pt。1,"hash":2853617420}

某些"处理器",例如"pipetokenizer",返回多个结果。

……代码块::python

>;>;来自riko.modules.tokenizer导入管道
>;
>;>;item={'title':'riko pt。1'}
>;>tokenizer_conf={'delimiter':'}
>;>stream=pipe(item,conf=tokenizer_conf,field='title')
>;>next(stream)
{'tokenizer':[{'content':'riko'},
{'content':'pt.},
{'content':'1'},
'title':'rik邻氯铂。1'}

>;>;在这种情况下,如果我们只需要结果,我们可以"发出"它,而不是
>;>;流=管道(item,conf=标记器配置,field='title',emit=true)
>;>;下一个(流)
{内容':'riko'}

``运算符``被分为``聚合器`
和``composers``。``聚合器``,例如``count``,将输入``stream``的所有``items``与单个``item``组合成一个新的``stream``;
,而``composers`,例如``filter``则创建一个新的``stream``包含输入``stream``的部分或全部`` items```.

代码块::python

>;>;来自riko.modules.count import pipe
>;
>;>;stream=[{'title':'riko pt。1'},{'title':'riko点。2'}]
>;>next(pipe(stream))
{count':2}

NFIG选项。

…代码块::python

>;>;counted=pipe(stream,conf={'count_key':'title'})
>;>;next(counted)
{'riko pt。1分:1}
>;>next(计数)
{'riko pt。2:1}

``处理器``分为``source``和``transformer``两个子类型。
``sources`,例如``itembuilder``可以创建``stream``而
``transformers`,例如``hash``只能转换``stream``中的项。

代码块::python

>;>;来自riko.modules.itembuilder导入管道
>;
>;>;attrs={'key':'title','value':'riko pt。1'}
>;>next(管道(conf={'attrs':attrs}))
{'title':'riko pt。1'}

|创建流?|
+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————波瑟流+————————————————————————————————————————————————————————————————————————————————————————————————检查其元数据。

…代码块::python

>;>;从riko.modules导入fetchpage,count
>;
>;>;fetchpage.async嫒u pipe.\udict嫒br/>{type':'processor',name':'fetchpage',sub嫒type':'source}
>;>;count.pipe.\udict嫒br/>{type':'operator,'名称':'计数','子类型':'聚合器'}

``syncpipe``和``asyncpippe``类(除其他外)执行此操作
检查是否允许方便的方法链接和透明的并行化。代码块::python

>;>;来自riko.collections import syncpipe
>;
>;>;attrs=[
…{'key':'title','value':'riko点。1'},
…{'key':'content','value':"让我们谈谈riko!"}]
>;>flow=syncpipe('itembuilder',conf={'attrs':attrs}).hash()
>;>flow.list[0]
{'title':'riko pt.1',
"内容":"让我们谈谈里科!",
"hash":134630218}

[]聚合器的输出"stream"是只有1个"item"的迭代器。

a
``workflow``只是一个包含名为``pipe``的函数的文件,该函数创建``flow``并处理生成的``stream``.


cli用法
^^^^^^^^^^^^^

用法:runpipe[pipeid]

description:运行riko pipe

positional参数:
pipeid要运行的管道(默认:从stdin读取)。


可选参数:
-h,--帮助显示此帮助消息并退出
-a,--异步加载异步管道。

-t,--在测试模式下测试运行(使用默认输入)。

cli setup
^^^^^^^^^^

``flow.py`

来自未来的导入打印_函数
从riko.collections导入syncpipe

conf1={'attrs':[{'value':'https://google.com','key':'content'}}
conf2={'rule':[{'find':'com','replace':'co.uk'}}

def pipe(test=false):
kwargs={'conf':conf1,'test':test}
flow=syncpipe('itembuilder',**kwargs).strreplace(conf=conf2)
stream=flow.output

您应该
然后在终端中看到以下输出:

…代码块:bash

https://google.co.uk

``runpipe``还将在``examples``目录中搜索``workflows``。键入
`` runpipe demo``后,您将看到以下输出:

…代码块:bash

清理682附近卫生法资格的最后期限


脚本
----

``riko``带有内置的任务管理器``manage`.


setup
^^^^

代码块::bash



>示例
^^^^^^^^^^

*运行python linter和nose测试*

…代码块::bash


manage lint


contribution
----

请模拟此repo中使用的编码样式/约定。
如果添加新类或函数,请使用
示例添加相应的文档块。另外,还要确保python linter和nose测试通过。

请参阅"贡献文档"了解更多详细信息。

credits
----

`` riko一开始是pipe2py的一个分支,但后来分歧太大,以至于原来的代码库(如果有的话)所剩无几。教程"项目结构"代码块::bash

食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品类食品——初始化——扭曲的
_——初始的py
_——集合的py
_——py
——测试的
——测试的py
——初始的py
——标准的rc
——测试的实例。py
——con属性。rst
——dev requirements.txt
——license
——makefile
——manage.py
——manifest.in
——optional requirements.txt
——requirements.txt
——readme.rst
——requirementsrements.txt
——setup.cfg
——setup.py
|特拉维斯图片:https://img.shields.io/travis/nerevu/riko/master.svg
:目标:https://travis ci.org/nerevu/riko

…|版本image::https://img.shields.io/pypi/pyversions/riko.svg
:目标:https://pypi.python.org/pypi/riko

…| pypi图像::https://img.shields.io/pypi/v/riko.svg
:目标:https://pypi.python.org/pypi/riko

……_同步:同步处理
…_异步:异步处理
…_并行执行:并行处理
…_并行处理:并行处理
…_库:用法

…_贡献文档:https:。//github.com/neuvu/riko/blob/master/contribution.rst
。常见问题解答:https://github.com/nerevu/riko/blob/master/docs/faq.rst
…管道:https://github.com/nerevu/riko/blob/master/docs/faq.rst'35;什么-管道-可用
…40内置:https://github.com/nerevu/riko/blob/master/docs/faq.rst&35;what-pipes-are-available
。u文件类型:https://github.com/nerevu/riko/blob/master/docs/faq.rst\35;什么-文件-类型-受支持
…协议:https://github.com/nerevu/riko/blob/master/docs/faq.rst'35;什么-协议-受支持
…安装文档:https://github.com/nerevu/riko/blob/master/docs/installation.rst
。食谱:https://github.com/nerevu/riko/blob/master/docs/cookbook.rst
。拆分:https://github.com/nerevu/riko/blob/master/riko/modules/split.py'35;l15-l18
…备选工作流创建:https://github.com/nerevu/riko/blob/master/docs/cookbook.rst'35;备选-工作流-创建
。获取数据和提要:https://github.com/nerevu/riko/blob/master/docs/cookbook.rst'35;获取-数据-和-提要

…pypy:http://pypy.org
。真正的简单联合:https://en.wikipedia.org/wiki/rss
…mashup(web应用程序混合):https://en.wikipedia.org/wiki/mashup%u28web应用程序混合%29
。https://github.com/ggaughan/pipe2py/
。雨根:https://github.com/cantino/huginn/
。弗林克:http://flink.apache.org/
…spark:http://spark.apache.org/streaming/
。风暴:http://storm.apache.org/
…复杂事件处理:https://en.wikipedia.org/wiki/complex event processing
。ASNC Web请求:https://github.com/cantino/huginn/blob/bf7c2feba4a7f27f39de96877c121d40282c0af9/app/models/agents/rss'agent.rb'351
。U Spark没有:https://github.com/perwendel/spark/issues/208
。网址:https://web.archive.org/web/20150930021241/http://pipes.yahoo.com/pipes/
。http://www.crummy.com/software/beautifulsoup/bs4/doc/'35;安装-a-parser
…扭曲:http://twistedmatrix.com/
…speedparser:https://github.com/jmoiron/speedparser
。麻省理工学院许可证:http://opensource.org/licenses/mit
…virtualenv:http://www.virtualenv.org/en/latest/index.html
。ipython笔记本:http://nbviewer.jupyter.org/github/nerevu/riko/blob/master/examples/usage.ipynb
。一步一步的介绍。tutorial: http://nbviewer.jupyter.org /github /aemreunal /tuttuttutor /blob /master tuttuttuttuttuttuttuttuttuttuttuttuttutor <<<<<<<<<<<<<<<<<<<<<<<<
- Store downloaded packages in wheel dir.[Reuben Cummings]

-修复前缀生成。[Reuben Cummings]

v0.35.1(2016年7月22日)
----


错误修复
~~~~~~~~~~~br/>
-修复makefile lint命令。[Reuben Cummings]

-更新Pygogo需求(修复'35;2)[Reuben Cummings]

v0.35.0(2016-07-19)
---------
新建
~~br/>


-限制唯一跟踪项的数量。[Reuben Cummings]

-添加对管道计数的分组功能。[鲁本·卡明斯]


错误修复
~br/>~br/>
-修复元数据处理器。[Reuben Cummings]

v0.34.0(2016年7月19日)
——————————————————————————————————————————————————————————————————————————————————————[鲁本·卡明斯]

-为过滤管道添加更多操作。[鲁本·卡明斯]


更改

-合并异步pmap和异步imap。[Reuben Cummings]

-更改延迟进程名称和参数。[Reuben Cummings]

-重命名模块/函数,并更新文档。[鲁本·卡明斯]


错误修复
~~~~~~br/>
-强制getelementsbytagname返回child。[鲁本·卡明斯]

-仅在实际需要时使用fakereactor。[Reuben Cummings]

-修复异步HTML解析。[鲁本·卡明斯]

-防止索引器错误。[Reuben Cummings]

-修复http文件的异步打开。[Reuben Cummings]

-对HTML解析要宽容。[国王uben cummings]

-修复空的xpath和起始值错误。[Reuben Cummings]

v0.33.0(2016-07-01)
---------


更改
~~~~~


-PY3支持的主要重构:[Reuben Cummings]

-修复PY3和打开文件错误
-端口丢失扭曲模块
-重构RSS解析
-和流式JSON S支持
-重命名请求函数
-生成benchmarks.py脚本并添加到测试中

[Reuben Cummings]

v0.32.0(2016-06-16)
---------


更改
~~~~~


-重构以删除扭曲的依赖项。【Reuben Cummings】

v0.31.0(2016-06-16)
————————————————————————————————————————增加平行测试。[Reuben Cummings]

v0.30.2(2016-06-16)
---------


错误修复
~~~~~~~

-添加缺少的可选依赖项。[Reuben Cummings]

v0.30.1(2016-06-16)
---------


错误修复
~~~~~~~

-修复失败的测试运行程序。[Reuben Cummings]

-修复LXML依赖性错误。[Reuben Cummings]

v0.30.0(2016-06-15)
---------


~~~

-首先尝试从curdir加载工作流。[鲁本·卡明斯]


错误修复
~~~~~~~~~

-修复剩余的pypyy错误。[Reuben Cummings]

-修复pypy的"newdict instance"错误。[Reuben Cummings]

-向"fetchpage"异步解析器添加detagging。[Reuben Cummings]

v0.28.0(2016-03-25)
---------


~~~

-如果找不到匹配的正则表达式,则添加选项指定值。[Reuben Cummings]

更改
~~~~~~~~

-将默认汇率字段设为"内容"[Reuben Cummings]

-立即拆分返回源层。[鲁本·卡明斯]


错误修复
~~~~~~~~~

-修复输入管道的测试模式。[Reuben Cummings]

-修复终端解析。[Reuben Cummings]

-如果没有输入,请修复输入管道。[鲁本·卡明斯]

-修复睡眠配置。[Reuben Cummings]

-修复JSON布尔解析。[鲁本·卡明斯]






欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java NIO选择器最多只能选择50个SelectionKeys?   java阻止ImageButton创建新活动   为什么Java方法“Arrays.copyOf”处理中的整数数组与处理对象数组时的行为不同   java将安卓 1.6日历字段提取到vcal   将字符串转换为双精度后的java问题   java使用Webflux,是否可以使用AOP获取用于日志记录的ServerHttpRequest   java与jTextArea的基本区别是什么。setText()和jTextArea。append()方法?   java程序执行时间|将值保存到文件或数据结构?   java如何将表示字符的整数转换为字符串?   Java LWJGL新的渲染问题windows   java GUI提供异常   java创建第二个对象使类的函数不再工作   如何在java中将000验证为3位数字?   java bigO算法的时间复杂度,可以在不重复的情况下找到最长的子串   在30像素内点击按钮后,java在两个图像之间转换   java eclipse maven nexus不可解父pom   当存在其他SecurityConstraint时,java TransportGuary机密将被忽略   重新连接后激发的java Red5客户端流断开事件   javafx聊天应用程序中连接客户端的java问题