应用性能管理工具PinPoint介绍-程序员宅基地

技术标签: linux  pinpoint  

概述

下面给大家介绍一个开源的 APM (Application Performance Management/应用性能管理)工具 - Pinpoint。一个分布式事务跟踪系统的平台,思路基于google Dapper,用于基于java的大规模分布式系统,通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系。Pinpoint的目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统提供解决方案。pinpoint 有3个主要组件组成:日志收集器[Collector]、控制台[Web]、代理[Agent],采用HBase进行存储。 Collector和Web都是WAR包,Agent采用一个JAVA应用程序加载。

Pinpoint的特点如下:

  • 分布式事务跟踪,跟踪跨分布式应用的消息
  • 自动检测应用拓扑,帮助你搞清楚应用的架构
  • 水平扩展以便支持大规模服务器集群
  • 提供代码级别的可见性以便轻松定位失败点和瓶颈
  • 使用字节码增强技术,添加新功能而无需修改代码
  • 安装探针不需要修改哪怕一行代码及trace server端部署简单,支持hdfs存储
  • 具有简单的阀值触发报警功能
  • 移植性比较强的,会比较讨人喜欢(相比cat)
  • 插件化功能可扩展(https://github.com/naver/pinpoint/wiki/Pinpoint-Plugin-Developer-Guide)

    平台的架构图如下:


环境准备

apache-tomcat-8.0.36.tar.gz
hbase-1.0.3-bin.tar.gz
jdk-7u79-linux-x64.tar.gz
pinpoint-agent-1.5.2.tar.gz
pinpoint-collector-1.5.2.war
pinpoint-web-1.5.2.war
zookeeper-3.4.6-10.el6.x86_64.rpm

以上软件地址10.21.10.77  路径/home/cib/software(绝对路径) 用户名/密码 cib/cib123456

部署环境约定

192.168.56.11    CentOS6(jdk1.7.0)    Pinpoint-collector, Pinpoint-web, zookeeper    #下面我们将简称pp-collector&pp-web
192.168.56.12    CentOS6(jdk1.7.0)    Hbase
192.168.56.13    CentOS6(jdk1.7.0)    Pinpoint-agent(demo应用)
以上服务器地址也可以部署在同一台服务器上 我的都是安装在10.21.10.77上的

系统环境说明

查看服务器上面1.0安装的软件是否已经安装了和相关的服务是否是开启的 如果有开启的服务 先暂停服务

开始部署

jdk安装

我这里的jdk安装的方式是用tar.zp的方式 安装请用root用户 切换到root用户sudo su - 
解压jdk,解压命令:tar -xvzf /home/java/jdk-7u25-linux-x64.tar.gz
设置环境变量 
vi ~/.bashrc
export JAVA_HOME=/home/java/jdk/jdk1.7.0_69
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$JAVA_BIN:$PATH
刷新环境变量设计
source ~/.bashrc
查看jdk版本java -version 如果有版本号信息 表示安装成功

安装 HBase

部署和初始化 Hbase

pinpoint存储依赖于hbase,hbase的分布式文件存储系统依赖于hadoop,因此如果hbase需要要使用hdfs存储数据,就需要安装hadoop,但是hbase如果使用普通的文件系统存储数据,就不需要安装hadoop。

下图为pinpoint版本和Hbase的关系:

Pinpoint Version   HBase 0.94.x	HBase 0.98.x   HBase 1.0.x   HBase 1.1.x
    1.0.x	      yes	      no	    no          no
    1.1.x	      no	 not tested	   yes	     not tested
    1.5.x	      no	 not tested	   yes	     not tested

hbase 安装

解压hbase-1.0.3-bin.tar.gz
$ tar xf /root/pp/hbase-1.0.3-bin.tar.gz /usr/local/
$ cd /usr/local/hbase-1.0.3/conf
修改/usr/local/hbase-1.0.3/conf/hbase-env.sh
$ vim hbase-env.sh
export JAVA_HOME=/home/java/jdk/jdk1.7.0_69     # 指到自己对应的JAVA_HOME,默认使用java6
$ vim hbase-site.xml 
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///data/hbase</value>        # 这里我们指定Hbase本地来存储数据,生产环境将数据建议存入HDFS中。
 </property>
</configuration>

$ ../bin/start-hbase.sh        // 启动 Hbase

注意: 这里说明一下,我们是最简方式启动的Hbase,没有单独部署Hbase集群管理的zookeeper,而是直接使用Hbase自带的zk模块。另外,Hbase强烈建议将数据存入HDFS里面,目前我们是存在Hbase本地的。

验证Hbase是否启动成功

$ jps
8114 Jps
7820 HMaster

下载并执行pp的Hbase初始化表语句

$ wget -c https://raw.githubusercontent.com/naver/pinpoint/master/hbase/scripts/hbase-create.hbase -P /root/pp/
$ cd /usr/local/hbase-1.0.3
$ ./bin/hbase shell /root/pp/hbase-create.hbase      #  这里需要大概半分钟时间完成pp的表初始化
$ ./bin/hbase shell
2016-07-14 20:57:10,606 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 19 19:26:53 PST 2016
hbase(main):001:0> status 'detailed'       # 我这里已经初始化pp相关表,所以数据展示比较多
version 1.0.3
0 regionsInTransition
master coprocessors: []
1 live servers
c612:46781 1468494831781
    requestsPerSecond=0.0, numberOfOnlineRegions=194, usedHeapMB=18, maxHeapMB=241, numberOfStores=322, numberOfStorefiles=3, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=9272, writeRequestsCount=385, rootIndexSizeKB=2, totalStaticIndexSizeKB=1, totalStaticBloomSizeKB=0, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, coprocessors=[MultiRowMutationEndpoint]
    "AgentEvent,,1468495003477.b13eb3203210fb9d94feb1a445e0ad1b."
        numberOfStores=1, numberOfStorefiles=0, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=0, writeRequestsCount=0, rootIndexSizeKB=0, totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=-1, dataLocality=0.0
    "AgentInfo,,1468494998919.fa9d36f7b52b95ee5216a1ec757ad690."
...

HBase脚本介绍

  • hbase-create.hbase - 创建pinpoint必须的表。
  • hbase-drop.hbase - 删除pinpoint必须的所有表
  • hbase-flush-table.hbase - 刷新所有表
  • hbase-major-compact-htable.hbase- 压缩主要的所有表

    我们同时可以登录Hbase Web管理控制台来验证相关数据 http://192.168.56.12:16010/master-status 这个地址是指你自己安装的地址

    安装 Pinpoint-collector

    安装pp-collector的jdk条件:

    系统已安装JDK 6、JDK 7+ 、Maven 3.2.x+ ;并设置环境变量:JAVA_6_HOME和JAVA_7_HOME.下图为JDK版本与Pinpoint版本关系:

    Pinpoint Agent Collector  Web
    1.0.x   6+   6+         6+
    1.1.x   6+   7+         7+
    1.5.x   6+   7+         7+

    pp-collector的安装与配置

    #创建/data/service/目录
    $ mkdir -p /data/service/
    #解压你的tomcat致 /data/service 这个路径你可以解压到自己创建的目录
    $ tar xf /root/pp/apache-tomcat-8.0.35.tar.gz -C /data/service/
    $ cd /data/service/
    #将apache-tomcat-8.0.35移动到pinpoint-collector文件中
    $ mv apache-tomcat-8.0.35/ pinpoint-collector
    #更改pinpoint-collector tomcat的server.xml
    $ vim /data/service/pinpoint-collector/conf/server.xml       # 因为我们的pp-collector和pp-web部署在同台设备,所以请确认tomcat启动端口不会冲突
    #如果在同一个服务器启用多个tomcat 请更改下面server的port端口 当然你也可以用别的方式
    <Server port="8005" shutdown="SHUTDOWN">     
    #设置pinpoint-collector tomcat的端口
    <Connector port="8085" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->     #  注释该行
    #pinpoint-collector-1.5.2.war部署到webapps 并命名为ROOT
    $ rm -rf /data/service/pinpoint-collector/webapps/*
    $ unzip pinpoint-collector-1.5.2.war -d /data/service/pinpoint-collector/webapps/ROOT/
    $ cd  /data/service/pinpoint-collector/webapps/ROOT/WEB-INF/classes
    $ ls -al
    -rw-rw-r-- 1 root root 15835 Apr  7 14:43 applicationContext-collector.xml
    -rw-rw-r-- 1 root root  7485 Apr  7 14:43 applicationContext-hbase.xml
    -rw-rw-r-- 1 root root   757 Apr  7 14:43 hbase.properties     
    -rw-rw-r-- 1 root root  1845 Apr  7 14:43 log4j.xml
    -rw-rw-r-- 1 root root  1360 Apr  7 14:43 pinpoint-collector.properties     # 主要针对pp-agent的配置,同时支持tcp和udp协议数据传输
    -rw-rw-r-- 1 root root  3292 Apr  7 14:43 servlet-context.xml
    ...

    这里大概说一下: applicationContext-collector.xml, applicationContext-hbase.xml 这俩个配置文件时collector与agent和Hbase之间通信时需要设定的一些参数,在后续调优的时候需要用到,hbase.properties 主要是设定后端存储的连接配置,log4j.xml那就是log相关了。

    $ vim hbase.properties
    hbase.client.host=192.168.56.12        # 这里我们只修改这一项配置就好,能够让collector将汇报上来的数据存储到Hbase 如果你是在同一台机器上安装的hbase就没必要改了 因为默认就是localhost
    hbase.client.port=2181

    这里tomcat我们就用8085端口了,实际的生产环境可能需要根据实际情况修改tomcat侦听端口。OK,到此,pp-collector我们就基本上配置完成了。接下来我们开始配置pp-web,它与collector很类似。

    安装 Pinpoint-web

    2.2.3 pp-web的配置

    $ cd /data/service/
    $ tar xf /root/pp/apache-tomcat-8.0.35.tar.gz -C /data/service/
    $ mv apache-tomcat-8.0.35 pinpoint-web
    #更改pinpoint-collector tomcat的server.xml
    $ vim /data/service/pinpoint-web/conf/server.xml       # 因为我们的pp-collector和pp-web部署在同台设备,所以请确认tomcat启动端口不会冲突
    #如果在同一个服务器启用多个tomcat 请更改下面server的port端口 当然你也可以用别的方式
    <Server port="8006" shutdown="SHUTDOWN">     
    #设置pinpoint-collector tomcat的端口
    <Connector port="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->     #  注释该行
    #pinpoint-collector-1.5.2.war部署到webapps 并命名为ROOT
    $ rm -rf /data/service/pinpoint-web/webapps/*
    $ unzip pinpoint-web-1.5.2.war -d /data/service/pinpoint-web/webapps/ROOT/
    $ cd  /data/service/pinpoint-web/webapps/ROOT/WEB-INF/classes   
    $ ls -al
    total 88
    -rw-rw-r-- 1 root root 2164 Apr  7 14:43 applicationContext-cache.xml
    -rw-rw-r-- 1 root root 3649 Apr  7 14:43 applicationContext-dao-config.xml
    -rw-rw-r-- 1 root root 1490 Apr  7 14:43 applicationContext-datasource.xml
    -rw-rw-r-- 1 root root 6680 Apr  7 14:43 applicationContext-hbase.xml
    -rw-rw-r-- 1 root root 1610 Apr  7 14:43 applicationContext-websocket.xml
    -rw-rw-r-- 1 root root 6576 Apr  7 14:43 applicationContext-web.xml
    -rw-rw-r-- 1 root root  106 Apr  7 14:43 batch.properties
    -rw-rw-r-- 1 root root  682 Apr  7 14:43 ehcache.xml
    -rw-rw-r-- 1 root root 1005 Jul 14 21:45 hbase.properties
    -rw-rw-r-- 1 root root  153 Apr  7 14:43 jdbc.properties
    -rw-rw-r-- 1 root root 3338 Apr  7 14:43 log4j.xml
    -rw-rw-r-- 1 root root 1420 Apr  7 14:43 mybatis-config.xml
    -rw-rw-r-- 1 root root  630 Apr  7 14:43 pinpoint-web.properties
    -rw-rw-r-- 1 root root  141 Apr  7 14:43 project.properties
    -rw-rw-r-- 1 root root 3872 Apr  7 14:43 servlet-context.xml
    drwxrwxr-x 2 root root 4096 Jul 14 21:46 sql 
    
    $ vim hbase.properties
    hbase.client.host=192.168.56.12    # 设置Hbase数据源
    hbase.client.port=2181
    ...
     

    配置解说

    //pinpoint-web.properties --web参数配置如下:
    cluster.enable=true
    cluster.web.tcp.port=9997
    cluster.zookeeper.address=localhost
    cluster.zookeeper.sessiontimeout=30000
    cluster.zookeeper.retry.interval=60000
    cluster.connect.address=
    
    
    //hbase.properties        -- 配置连接hbase参数如下:
    hbase.client.host (default: localhost)
    hbase.client.port (default: 2181)
    
    //hbase数据库和mysql数据库选择一项配置,如果配置了hbase数据库,此项不用配置,仅当选用mysql数据库时配置
    //jdbc.properties         -- 配置连接mysql数据库如下:
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8
    jdbc.username=admin
    jdbc.password=admin
    
    //hbase数据库和mysql数据库选择一项配置,如果配置了hbase数据库,此项不用配置,仅当选用mysql数据库时配置
    //创建pinpoint数据库并创建表 mysql命令行下执行命令如下:
    create DATABASE if not exists pinpoint DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    use pinpoint
    \. sql/CreateTableStatement-mysql.sql
    \. sql/SpringBatchJobReositorySchema-mysql.sql
    commit;

    注:zookeeper和pp-collector、pp-web不在同一台服务器上时的配置

    从pinpoint1.5.0开始,pp-web到pp-agent的request请求直接通过pp-collector来统筹管理,包括一些real-time级别的信息监测,而zookeeper在其中间协调三者之间的通信沟通。如果zookeeper部署在独立的一台设备,这里我就需要修改一下pp-colletor & pp-web的配置文件pinpoint-collector.properties,pinpoint-web.properties,不然会导致俩个模块启动失败。详细描述参见官方文档

    $ rpm -ivh /root/pp/zookeeper-3.4.6-10.el6.x86_64.rpm
    $ /etc/init.d/zookeeper start     # 保证zookeeper的2181端口起来就可以了
    
    修改pinpoint-collector.properties
    vi /data/service/pinpoint-collector/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties
    
    
    # enable cluster in socket manager.
    cluster.enable=true
    cluster.zookeeper.address=localhost            #如果zk单独配置, 需要修改此项
    cluster.zookeeper.sessiontimeout=30000
    cluster.listen.ip=
    cluster.listen.port=
    
     修改pinpoint-web.properties
    vi /data/service/pinpoint-web/webapps/ROOT/WEB-INF/classes/pinpoint-web.properties  
    
    # -------------------------------------------------------------------------------------------------
    # The cluster related options are used to establish connections between the agent, collector, and web in order to send/receive data between them in real time.
    # You may enable additional features using this option (Ex : RealTime Active Thread Chart).
    # -------------------------------------------------------------------------------------------------
    # Usage : Set the following options for collector/web components that reside in the same cluster in order to enable this feature.
    # 1. cluster.enable (pinpoint-web.properties, pinpoint-collector.properties) - "true" to enable
    # 2. cluster.zookeeper.address (pinpoint-web.properties, pinpoint-collector.properties) - address of the ZooKeeper instance that will be used to manage the cluster
    # 3. cluster.web.tcp.port (pinpoint-web.properties) - any available port number (used to establish connection between web and collector)
    # -------------------------------------------------------------------------------------------------
    # Please be aware of the following:
    #1. If the network between web, collector, and the agents are not stable, it is advisable not to use this feature.
    #2. We recommend using the cluster.web.tcp.port option. However, in cases where the collector is unable to establish connection to the web, you may reverse this and make the web establish connection to the collector.
    #   In this case, you must set cluster.connect.address (pinpoint-web.properties); and cluster.listen.ip, cluster.listen.port (pinpoint-collector.properties) accordingly.
    cluster.enable=true
    cluster.web.tcp.port=9997
    cluster.zookeeper.address=localhost
    cluster.zookeeper.sessiontimeout=30000
    cluster.zookeeper.retry.interval=60000
    cluster.connect.address=
    
    注意:以上配置文件需要修改 是因为zookeeper单独部署

    到这里,我们就可以启动pp-colletor和pp-web了

    启动的方式有很多 我是用比较笨的方式进去pinpoint-colletor 和pinpoint-web 的bin目录下执行start.sh启动的

    安装 Pinpoint-agent

    我们这个时候可以部署一个pp-agent试玩一下了,其实也就是很多APM厂商传说中的探针。这里我的探针是部署在自己的应用下面的,就只贴一下跑在tomcat下的探针配置信息了。顺带说明一下部署上的注意点。

    以下是pp目前支持埋点的java模块:

    JDK 6+
    Tomcat 6/7/8, Jetty 8/9
    Spring, Spring Boot
    Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
    Thrift Client, Thrift Service, DUBBO PROVIDER, DUBBO CONSUMER
    MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL, MARIA
    Arcus, Memcached, Redis, CASSANDRA
    iBATIS, MyBatis
    gson, Jackson, Json Lib
    log4j, Logback

    部署pp-agent (探针)

    我们约定tomcat容器安装位置 /data/projects/service/app_demo,这里我们就将pp-agent解压至 /data/projects/service/下。

    $ tar xf /root/pp/pinpoint-agent-1.5.2.tar.gz -C /data/projects/service/
    $ cd /data/projects/service/pinpoint-agent-1.5.2/
    $ vim pinpoint.config
    profiler.collector.ip=192.168.56.11  #这里说明一下: 我们只要指定pp-colletor的地址就可以了,至于端口如果之前pp-colletor没有变更这里也不需要修改。如果你的生产环境特殊,pinpoint支持还是很丰富的,同时支持tcp和udp协议传输。 默认是localhost 

    此刻,我们开始往我们的应用里部署探针。

    $ vim /data/projects/service/app_demo/bin/catalina.sh
    AGENT_VERSION="1.5.1"
    AGENT_ID="pp201606011442"
    APPLICATION_NAME="app-192-168-56-13"
    AGENT_PATH="/data/projects/service/pinpoint-agent-1.5.1"
    CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-${AGENT_VERSION}.jar"
    CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"
    CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"

    这里说明一下:

  • 探针配置项写到 CATALINA_OPTS 变量下一行即可。
  • AGENT_ID 命名必须在生产环境里唯一,否则后面将会混乱。
  • APPLICATION_NAME 配置为一个服务组的ID号,即服务组下的实例ID。
  • 此外参考官方agent文档说明

    重启被采集端的应用,使探针生效。

    Pinpoint安装完成

    打开浏览器,访问如下pp-web的页面验证我们的探针部署是否成功。其中,第二个链接是pp的APM主页面可以看到探针汇报上来的信息了。

    http://192.168.56.11:8086/stat.html      # pp-agent 信息统计页面,即探针部署情况的统计信息 
    http://192.168.56.11:8086/#/main       # pp APM信息主页面

    Pinpoint源码下载

  • 下载pinpoint源码

    制作自己的Pinpoint定制版war包 编译环境要求

    maven:3.2+
    jdk-6/7/8

    解压master.zip,然后执行命令: maven命令

    mvn install -Dmaven.test.skip=true


  • 转载路径:http://blog.csdn.net/mingyu1016/article/details/53925611
  • 相关资料:http://blog.csdn.net/u013793732/article/details/63684929

  • -----------------------使用心得------------------------------
  • 1.pp-web 去除无用的应用名:
  • 下载pinpoint源码可以,找到pinpoint-web 模块,包路径为:com.navercorp.pinpoint.web.controller下的AdminController类,可以看到其中有个方法是removeApplicationName,只需要调用这个方法,传入参数就能删除没用的应用。使用方式如下:
  • http://ip/admin/removeApplicationName.pinpoint?applicationName=admin-dev&password=admin

  • 2.pinpoint-web显示不了agent的信息
  • 原因是可能是要给服务所在的服务器进行host配置。比如:

    agent服务器的hostname叫agent01,那就要在/etc/hosts里声明:agent01 127.0.0.1

    其它服务同理,都要做这个配置才行。


  • ----------------------2017年12月6日10:42:09-----------------------

  • 问题:今天pinpoint接收不到数据,pp-web疯狂报错zookeeper(用的hbase自带的),发现hbase挂掉了,

  • 使用命令:

  • ./start-hbase.sh

  • 报错信息:

  • OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
    OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

  • 解决办法

  • cd hbase/conf

  • vim hbase-env.sh

  • 注释掉以下:

  • # Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
    export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

    export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"


  • 之后再次启动,成功。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013170178/article/details/78564117

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法