我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Elasticsearch在PHP下的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Elasticsearch在PHP下的使用

php操作ElasticSearch

es-php客户端安装
php环境版本要求:
PHP >=7.1.0
ext-curl
ext-json

es-php扩展下载地址:

https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/installation.html
在这里插入图片描述

引在thinkphp6框架中引入elasticsearch/elasticsearch包

composer  require   elasticsearch/elasticsearch="^7.0"

连接es-php客户端
参考文档:
https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/connceting.html

# 引入开发包use Elasticsearch\ClientBuilder;$client = ClientBuilder::create()->setHosts(['192.168.1.128:9200'])->build();

es-php索引创建删除
参考文档:
https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/index_management.html

创建索引

$index = [            "index"=>"lampol",            "body"=>[                "mappings"=>[                    "properties"=>[                        "name"=>["type"=>"keyword"                        ],                        "age"=>["type"=>"byte"                        ],                        "addr"=>["type"=>"text","analyzer"=>"ik_max_word"                        ]                    ]                ]            ]        ];        $response = $client->indices()->create($index);

判断索引是否存在、获取mapping数据结构、删除索引index

# 判断索引是否存在$response = $client->indices()->exists(['index'=>'lampol']);# 获取mapping数据结构$response = $client->indices()->getMapping(['index'=>'lampol']);# 删除索引index$response = $client->indices()->delete(['index'=>'test1']);

es-php文档单个插入以及批量插入
文档单个插入

$doc = [            "index"=>'lampol',            "id"=>1,            "body"=>[                "name"=>"liudehua",                "age"=>33,                "addr"=>"中国广东省深圳市"            ]        ];        $response = $client->index($doc);

批量插入

$docs['body'] = [            ['index'=>['_index'=>'lampol','_id'=>2]],            ['name'=>'liming','age'=>43,'addr'=>'山东省青岛市'],            ['index'=>['_index'=>'lampol','_id'=>3]],            ['name'=>'郭富城','age'=>53,'addr'=>'山东省枣庄市']        ];        $response = $client->bulk($docs);

es-php文档查询修改删除

# 文档查询id=3$id = ['index'=>'lampol','id'=>3,'_source'=>['name','age'=>33]];$response = $client->get($id);# 查询$param = [    'index'=>'lampol',    'body'=>[        'query'=>[            'match'=>[                'addr'=>'深圳'            ]        ]    ]];$response = $client->search($param);# 文档更新id=1$doc = [          'index'=>'lampol',          'id'=>1,          'body'=>[              'doc'=>[                  'age'=>53              ]          ]      ];$response = $client->update($doc);# 文档删除id=3$id = ['index'=>'lampol','id'=>3];$response = $client->delete($id);

ES实战logstash同步mysql数据到es

logstash安装及同步插件jdbc安装配置
1)安装logstash

下载路径(7.12.0版本)
https://www.elastic.co/cn/downloads/past-releases/logstash-7-12-0
在这里插入图片描述
在这里插入图片描述

# 将logstash解压到指定目录下tar xzf logstash-7.12.0-linux-x86_64.tar.gz   -C  /usr/local/# 进入到cd /usr/local/logstash-7.12.0# 创建java包目录mkdir logstash-input-jdbc# 下载mysql-connector-java连接数据库java包放入到logstash-input-jdbc目录中https://repo1.maven.org/maven2/mysql/mysql-connector-java/# 移动到指定目录mv mysql-connector-java-8.0.12.jar /usr/local/logstash-7.12.0/logstash-input-jdbc/  

在这里插入图片描述

2)配置数据库连接,同是指定读取的数据库表数据

vi /usr/local/logstash-7.12.0/logstash-input-jdbc/mysql.conf# 写入内容# 数据输入input{    jdbc {        # mysql的配置信息        jdbc_connection_string => "jdbc:mysql://192.168.1.106:3306/shop?characterEncoding=utf8&useSSL=false&serverTimezone=PRC&rewriteBatchedStatements=true"        jdbc_user => "root"        jdbc_password => "root"        # java驱动程序,logstash不自带的,如果我们不指定它,logstash则在其java类路径中查找(logstash/logstash-core/lib/jars)        jdbc_driver_library => "/usr/local/logstash-7.12.0/logstash-input-jdbc/mysql-connector-java-8.0.12.jar"        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"        # 定时调度器        schedule => "* * * * *"        # 指定追踪的递增字段名称        tracking_column => "id"        # 启用追踪,如果为true,则需要指定tracking_column。tracking_column值作为:sql_last_value,当设置为false时:sql_last_value为最后一次执行查询的时间        use_column_value => "true"        # 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手动修改        last_run_metadata_path => "usr/local/logstash-7.12.0/logstash-input-jdbc/tt.txt"        # 执行读取mysql数据库操作的sql语句,将数据查询出来,如果数据比较多加入limit限制        statement => "SELECT id,goods_title from goods"        # 默认时区        jdbc_default_timezone =>"Asia/Shanghai"        # 是否分页分批次从mysql中读取数据再写入es        # jdbc_paging_enabled => "true"        # jdbc_page_size => "1000"        # 追踪字段的类型。目前只有"numeric"和"timestamp",默认numeric        # tracking_column_type => "timestamp"    }}# 过滤字段,一般不用过滤字段的filter {    mutate {        remove_field => ["@timestamp","@version"]    }}# 数据输出output{    elasticsearch {        hosts => ["http://192.168.1.128:9200"]        index => "goods"        document_id => "%{id}"    }}

3)创建指定索引goods

PUT /goods{  "mappings": {    "properties": {      "id":{        "type":"integer"      },      "goods_type":{        "type":"text",        "analyzer": "ik_max_word",        "search_analyzer": "ik_smart"      }    }  }}

4)运行logstash服务

/usr/local/logstash-7.12.0/bin/logstash -f  /usr/local/logstash-7.12.0/logstash-input-jdbc/mysql.conf

查看数据同步到es下goods情况

# 显示不同索引index下有多少数据GET /_cat/indices?v

在这里插入图片描述

tp6实战ES搜索添加更新删除数据

tp6查询并列表高亮展示

搜索页面
D:\phpstudy_pro\WWW\thinkphp6\view\goods\search.html

DOCTYPE html><html lang="en"><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta name="description" content="">    <meta name="author" content="">    <title>ElasticSearch PHP 实战搜索title>    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap.min.css">    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap-theme.min.css">head><body class="bs-docs-home"><div class="container theme-showcase">    <h1 style=" line-height:2em;">h1><br/>    <div class="row">        <div class="col-sm-3">div>        <div class="col-sm-12">            <div class="panel panel-primary">                <div class="panel-heading">                    <h3 class="panel-title"><strong>ElasticSearch PHP 实战搜索strong>h3>                div>                <div class="panel-body">                    <div class="alert  alert-dismissable">                        <form action="/search" method="post" role="form" name="form1"><div class="form-group">    <div class="input-group">        <input type="text" class="form-control" name="keywords" placeholder="关键词">        <span class="input-group-btn">           <button class="btn btn-default" type="submit">开始搜索button>       span>    div>div>                        form>                        <button class="btn btn-success" onclick="location.href='/goods/create'" type="button">添加商品button>                    div>                div>            div>            <div class="col-sm-3">div>        div>    div>    <script class="lazy" data-src="https://code.jquery.com/jquery-1.10.2.min.js">script>    <script class="lazy" data-src="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/js/bootstrap.min.js">script>body>html>

列表页面:上一页、下一页、高亮展示列表数据
D:\phpstudy_pro\WWW\thinkphp6\view\goods\list.html

DOCTYPE html><html lang="en"><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta name="description" content="">    <meta name="author" content="">    <title>ElasticSearch PHP 实战搜索title>    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap.min.css">    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap-theme.min.css">head><body class="bs-docs-home"><div class="container theme-showcase">    <h1 style=" line-height:2em;">h1><br/>    <div class="row">        <div class="col-sm-3">div>        <div class="col-sm-12">            <div class="panel panel-primary">                <div class="panel-heading">                    <h3 class="panel-title"><strong>ElasticSearch PHP 实战搜索-商品列表strong>h3>                div>                <div class="panel-body">                    <div class="alert  alert-dismissable">                        <div class="table-responsive"><table border="0" cellspacing="0" cellpadding="0" class="table">    <tr class=" label-primary">        <th scope="col" width="20%"><span style="color:white">idspan>th>        <th scope="col"><span style="color:white">商品标题span>th>        <th scope="col"><span style="color:white">操作span>th>    tr>    {foreach $goods as $v}    <tr class="success">        <td>{$v['_source']['id']}td>        <td>{$v['highlight']['goods_title'][0]|raw}td>        <td>            <button class="btn btn-default" type="button"                    onclick="location.href='/goods/'+{$v['_source']['id']}+'/edit'">编辑            button>            <button class="btn btn-danger" type="button" onclick="del({$v['_source']['id']})">删除button>        td>    tr>    {/foreach}table>                        div>                        <div class="col-sm-12"><div class="col-sm-10">div><nav aria-label="Page navigation">    <ul class="pagination">        <li>            <a href="/search?keywords={$keywords}&page={$pre}" aria-label="Previous">                <span aria-hidden="true">上一页span>            a>        li>        <li>            <a href="/search?keywords={$keywords}&page={$next}" aria-label="Next">                <span aria-hidden="true">下一页span>            a>        li>    ul>nav>                        div>                    div>                div>            div>        div>    div>    <script class="lazy" data-src="https://code.jquery.com/jquery-1.10.2.min.js">script>    <script class="lazy" data-src="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/js/bootstrap.min.js">script>body>html><script>    function del(id){        $.ajax({            url:'/goods/'+id,            type:'DELETE',            sueccess:function (res){                console.log(res);                // location.href='/search'            }        });    }script>

控制器
D:\phpstudy_pro\WWW\thinkphp6\app\controller\Goods.php

# 引入use Elasticsearch\ClientBuilder;class Goods{public function index()    {        return view('search');    }    public function search(Request $request)    {        //与es建立连接        $client = ClientBuilder::create()->setHosts(['192.168.1.128:9200'])->build();        $keywords = $request->param('keywords', '', 'trim');        $page = $request->param('page');        $size = 20;        if ($page) {            $from = ($page - 1) * 20;            $pre = $page - 1;            $next = $page + 1;        } else {            $pre = 1;            $next = 2;            $from = ($pre - 1) * 20;        }        $search = [            'index' => 'goods',            'body' => [                'query' => [                    'match' => [                        'goods_title' => $keywords                    ]                ],                'from' => $from,                'size' => $size,                'highlight' => [                    'fields' => [                        'goods_title' => new \stdClass()                    ],                    'pre_tags' => [""],                    'post_tags' => ['']                ]            ]        ];        $res = $client->search($search);        return view('list', ['goods' => $res['hits']['hits'], 'keywords' => $keywords, 'pre' => $pre, 'next' => $next]);    }}

高亮报错处理:
https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/php_json_objects.html

new \stdClass()

在这里插入图片描述

es实战之php添加文档到es
为了保证es和数据库中数据实时同步,在保存数据入mysql同时保存一份在es

添加页面
D:\phpstudy_pro\WWW\thinkphp6\view\goods\add.html

DOCTYPE html><html lang="en"><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta name="description" content="">    <meta name="author" content="">    <title>ElasticSearch PHP 实战搜索title>    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap.min.css">    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap-theme.min.css">head><body class="bs-docs-home"><div class="container theme-showcase">    <h1 style=" line-height:2em;">h1><br/>    <div class="row">        <div class="col-sm-3">div>        <div class="col-sm-12">            <div class="panel panel-primary">                <div class="panel-heading">                    <h3 class="panel-title"><strong>ElasticSearch PHP 实战搜索-添加商品strong>h3>                div>                <div class="panel-body">                    <div class="alert  alert-dismissable">                        <form action="/goods" method="post" role="form" name="form1"><div class="form-group">    <div class="input-group">        <input type="text" name="goods_title" class="form-control" placeholder="商品标题">        <span class="input-group-btn">           <button class="btn btn-default" type="submit">添加button>       span>    div>div>                        form>                    div>                div>            div>            <div class="col-sm-3">div>        div>    div>    <script class="lazy" data-src="https://code.jquery.com/jquery-1.10.2.min.js">script>    <script class="lazy" data-src="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/js/bootstrap.min.js">script>body>html>

控制器

public function create(){    return view('add');}public function save(Request $request){   $client = ClientBuilder::create()->setHosts(['192.168.1.128:9200'])->build();   $goods_title = $request->param('goods_title');   $cat_id = 200;   //插入数据库同时插入es   $id = Db::name('goods')->insertGetId(['cat_id'=>$cat_id,'goods_title'=>$goods_title]);   $doc = [       'index'=>'goods',       'id'=>$id,       'body'=>[           'id'=>$id,           'goods_title'=>$goods_title       ]   ];   $client->index($doc);   return view('search');}

es实战之php更新文档
更新数据库同时更新es

更新页面
D:\phpstudy_pro\WWW\thinkphp6\view\goods\edit.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta name="description" content="">    <meta name="author" content="">    <title>ElasticSearch PHP 实战搜索</title>    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap.min.css">    <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap-theme.min.css"></head><body class="bs-docs-home"><div class="container theme-showcase">    <h1 style=" line-height:2em;"></h1><br/>    <div class="row">        <div class="col-sm-3"></div>        <div class="col-sm-12">            <div class="panel panel-primary">                <div class="panel-heading">                    <h3 class="panel-title"><strong>ElasticSearch PHP 实战搜索-编辑商品</strong></h3>                </div>                <div class="panel-body">                    <div class="alert  alert-dismissable">                        <form action="/goods/{$goods['id']}" method="post" role="form" name="form1"><input type="hidden" name="_method" value="PUT"><div class="form-group">    <div class="input-group">        <input type="text" name="goods_title" class="form-control"               value="{$goods['goods_title']}">        <span class="input-group-btn">           <button class="btn btn-default" type="submit">保存</button>       </span>    </div></div>                        </form>                    </div>                </div>            </div>            <div class="col-sm-3"></div>        </div>    </div>    <script class="lazy" data-src="https://code.jquery.com/jquery-1.10.2.min.js"></script>    <script class="lazy" data-src="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/js/bootstrap.min.js"></script></body></html>

控制器

public function edit($id)    {        $goods = Db::name('goods')->where('id', $id)->find();        return view('edit', ['goods' => $goods]);    }public function update(Request $request, $id){    $goods_title = $request->param('goods_title');    //1、更新数据库    Db::name('goods')->where('id', $id)->update(['goods_title' => $goods_title]);    //2、更新es    $client = ClientBuilder::create()->setHosts(['192.168.1.128:9200'])->build();    $doc = [        'index' => 'goods',        'id' => $id,        'body' => [           'doc'=>[               'goods_title' => $goods_title           ]        ]    ];    $client->update($doc);    return view('search');}

php删除es文档
控制器

public function delete($id)    {        //1、删除数据库id数据        Db::name('goods')->where('id', $id)->delete();        //2、删除es        $client = ClientBuilder::create()->setHosts(['192.168.1.128:9200'])->build();        $client->delete(['index' => 'goods', 'id' => $id]);        return json(['status' => 'success']);    }

来源地址:https://blog.csdn.net/weixin_39218464/article/details/124731324

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Elasticsearch在PHP下的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Elasticsearch 如何在 PHP 中使用

引言:Elasticsearch是一个开源的分布式搜索引擎,它能够实现快速、准确地搜索和分析大量数据。它提供了简单且强大的API,使得开发者可以轻松地在各种编程语言中使用Elasticsearch。这篇文章将向你介绍如何在PHP中使用Ela
2023-10-21

如何在PHP中使用ElasticSearch实现搜索

这篇“如何在PHP中使用ElasticSearch实现搜索”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何在PHP中使用E
2023-06-05

PHP中如何使用Elasticsearch

这篇文章将为大家详细讲解有关PHP中如何使用Elasticsearch,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP中使用Elasticsearchcomposer require elastics
2023-06-06

如何在Django中使用ElasticSearch

这篇文章主要介绍了如何在Django中使用ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何在Django中使用ElasticSearch文章都会有所收获,下面我们一起来看看吧。什么是
2023-06-26

Docker下使用Elasticsearch可视化Kibana的方法

这篇文章将为大家详细讲解有关Docker下使用Elasticsearch可视化Kibana的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用教程在这里我们使用linux系统作为演示系统:fedora
2023-06-07

elasticsearch Client怎么在golang中使用

今天就跟大家聊聊有关elasticsearch Client怎么在golang中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是golanggolang 是Google开发的
2023-06-14

Docker下如何使用Elasticsearch可视化Kibana

本篇内容介绍了“Docker下如何使用Elasticsearch可视化Kibana”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!系统:fed
2023-06-05

ElasticSearch的映射在Python中如何定义和使用?(Python环境下,如何定义和管理ElasticSearch的映射?)

本指南详细介绍了如何在Python中定义和使用ElasticSearch映射。映射定义了索引中每个字段的类型和属性。使用mapping字典和put_mapping方法可以创建映射。使用bulk方法可索引文档,然后使用搜索查询根据映射的字段进行搜索。管理映射包括获取、更新和删除映射。最佳实践包括考虑数据类型、添加属性、使用嵌套类型、更新映射和利用工具。
ElasticSearch的映射在Python中如何定义和使用?(Python环境下,如何定义和管理ElasticSearch的映射?)
2024-04-02

ElasticSearch的高可用性在Python中如何保障?(在Python环境下,如何确保ElasticSearch的高可用性?)

在Python中实现Elasticsearch高可用性需要多方面措施:分布式部署:将Elasticsearch节点分散在不同物理机器和地理位置。主从复制:配置主节点和副本节点,在主节点故障时故障转移。客户端配置:使用Python客户端库连接到多个节点并处理故障。监控和故障转移:集成监控工具和设置自动故障转移机制。其他注意事项:安全配置、备份和恢复,以及测试和演练。遵循这些最佳实践可以最小化停机时间,提高应用程序的稳定性和可靠性。
ElasticSearch的高可用性在Python中如何保障?(在Python环境下,如何确保ElasticSearch的高可用性?)
2024-04-02

如何在java项目中使用elasticsearch与logstash

这篇文章将为大家详细讲解有关如何在java项目中使用elasticsearch与logstash,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java的特点有哪些Java的特点有哪些1.Ja
2023-06-06

ElasticSearch的分布式特性在Python中如何应用?(Python环境下,如何利用ElasticSearch的分布式特性?)

如何利用ElasticSearch的分布式特性(Python环境)ElasticSearch的分布式特性可提升搜索性能和可靠性。在Python中,利用这些特性可以提高应用程序的伸缩性和可用性。主要特性包括:分片和副本:将索引拆分为分片,副本提供冗余。集群管理:添加/删除节点、重新平衡分片。高可用性:副本和故障转移机制确保持续可用性。伸缩性:通过添加/删除节点动态调整集群大小。其他特性:SQL联邦查询:从多个索引/集群查询数据。分布式聚合:获取全局洞察力。地理位置搜索:支持基于地理位置的搜索和聚合。跨集群复
ElasticSearch的分布式特性在Python中如何应用?(Python环境下,如何利用ElasticSearch的分布式特性?)
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录