精华内容
下载资源
问答
  • 网络 — MB/s、Mb/s、Mbps、Mbit/s、Kbps

    万次阅读 多人点赞 2018-10-26 15:53:07
    MB/s(兆字节每秒)、Mb/s(兆比特每秒)、Mbps(兆比特每秒)、Mbit/s(兆比特每秒)、Kbps(千比特每秒) 1Byte(字节)= 8 bit(比特) 【1B=8b】 1MB(百万字节也称兆字节)= 8 Mb 1Mb = 0.125MB 1Kb = 1024bit 1...

     

    MB/s(兆字节每秒)、Mb/s(兆比特每秒)、Mbps(兆比特每秒)、Mbit/s(兆比特每秒)、Kbps(千比特每秒)

    1Byte(字节) = 8 bit(比特) 【1B=8b】

    1MB(百万字节也称兆字节) = 8 Mb

    1Mb = 0.125MB

    1Kb = 1024bit

    1KB = 1024Byte

    Mbps 即 Milionbit per second(百万位每秒); // Milionbit=1000Kilobit=1000000bit,所以1Mbps=1000 000bps;

    Kbps 即 Kilobit per second(千位每秒);

    bps 即 bit per second(位每秒)= bit / s;

    bit(binary digit)即比特,指一位二进制位,一个比特就是二进制数字中的一个1或0,比特是信息论中使用的信息量的单位。网络技术中的速率指的是数据的传送速率,也称为数据率或比特率,指每秒传输多少二进制代码位数,单位用位/秒(bit/s或b/s),也记作bps 。

    k=10^3=千,M=10^6=兆,G=10^9=吉,T=10^12=太,P=10^15=拍,E=10^18=艾,Z=10^21=泽,Y=10^24=兆。谈到网络速率时往往指的是额定速率或标称速率,而并非网络实际运行的速率。注意在计算机领域中,数的计算使用二进制,千=K=2^10=1024,兆=M=2^20

    带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”,带宽的单位是数据率的单位bit/s。

    1MB=1024KB=1024*1024B;   1MB/s = 8Mb/s = 1024KB/s

    所以1M宽带即指1Mbps=1000Kbps=1000/8KBps=125KBps; 因此1M的带宽下载的速度一般不会超过125KB每秒。

    2M、3M带宽的下载速度分别不会超过250KB、375KB每秒。

    在我们实际上网应用中,下载软件时常常看到诸如下载速度显示为128KBps(KB/s),103KB/s等等宽带速率大小字样,因为ISP提供的线路带宽使用的单位是比特,而一般下载软件显示的是字节(1字节=8比特),所以要通过换算,才能得实际值。然而我们可以按照换算公式换算一下: 
    128KB/s=128*8(Kb/s)=1024Kb/s=1Mb/s即128KB/s=1Mb/s。

    • 1Mbps与 1MB/s 是有区别的,1MB/s指的是是1024KB/S  
    • 记住K和k是没区别的  ,区别在于bps属于位每秒的单位,而m/s ,KB/S这两个属于字节每秒的单位;数据传输速率的衡量单位K是十进制含义,但数据存储的K是2进制含义。1kbit/s就是1000bit/s,而KB是1024个字节,注意KB和kbit的区别;

    例如:15GB的数据块以10G的速率(省略bps)传送,表明有15* 2^30 *8比特的数据块以10* 10^9 bit/s的速率传送。

    • 计算ADSL的真实速度ADSL是大家经常使用的上网方式。那么电信和网通声称的“512K”ADSL下载速度是多少? 

     换算方法为512Kbit/s=(512/8)KByte/s=64KByte/s,考虑线路等损耗实际的下载速度在50KB/S以上就算正常了

    • 计算内网的传输速度 

    经常有人抱怨内网的传输的数度慢那么100MBPS网卡的速度应该有多快?网卡的100Mbps同样是以bit/s来定义的

    所以100Mb/S=100000KByte/s=(100000/8)KByte/s=12500KByte/s 在理论上1秒钟可以传输12.5MB的速据考虑到干扰的因素每秒传输只要超过10MB就是正常了
     

     

    展开全文
  • Chia官方钱包命令行P盘教程一、获取官方钱包并注册开通1、访问Chia官网(https://www.chia.net/)下载官方钱包;2、安装并打开钱包,设置语言为“中文”...本方法未经过严格测试,bug请联系我。 e-mail:kepy.chen@ou

    一、获取官方钱包并注册开通

    本方法未经过严格测试,有bug请联系我。
    e-mail:kepy.chen@outlook.com
    此方法只适用于P盘,绑定矿池等操作不在此赘述,参考各矿池文档,绑定好后,可以用此方法P盘,矿池挖矿软件或官方软件耕种(挖矿)。
    “前期准备工作,引用自网络”

    1、访问Chia官网(https://www.chia.net/)下载官方钱包;

    在这里插入图片描述
    github地址:https://github.com/Chia-Network/chia-blockchain/wiki/INSTALL#Windows下载:
    在这里插入图片描述

    2、安装并打开钱包,设置语言为“中文”,并“创建一个新的私钥”

    在这里插入图片描述

    3、生成的24个助记词为您的个人私钥,请妥善保存,以防钱包丢失或被盗!!!

    在这里插入图片描述

    二、使用命令行挖矿

    1.在保持官方钱包打开的情况下(是否可以关闭,未测试。理论上可以)打开命令行;

    右键运行 – 输入“cmd”
    在这里插入图片描述

    2.在窗口输入P盘命令

    此命令并非无脑一键P盘,需要了解几个参数,这里只解释几个关键参数,其余参数不影响P盘。
    参数:
    -k 官方解释为农田的大小,详细见下图,需要使用32以上;
    在这里插入图片描述
    -b 分配的内存大小,32推荐4000MB
    -r 分配的线程数
    -t 缓存盘路径(即ssd盘,c盘需要设置文件夹)
    -2 二级缓存(可以不设置,给多ssd盘使用)
    -d 最终文件的存储路径(即机械硬盘)
    -n 循环执行多少次(顺序执行)

    cd %USERPROFILE%\AppData\Local\chia-blockchain\app-1.0.5\resources\app.asar.unpacked\daemon\
    chia.exe plots create -k 32 -b 4000 -u 128 -r 4 -t e:\P -2 c:\P -d D:\F -n 1
    

    回车后显示此页面,就成功启动P盘程序。
    在这里插入图片描述

    3.多P设置

    其实多p很简单,根据自己盘符,设置好命令后,打开多个“cmd”窗口,运行命令即可。
    例如:
    D盘:nvme 1T ssd
    E盘:nvme 1T ssd
    F盘:4T HDD
    G盘:4T HDD
    最多可以同时运行6个P盘(有人可能会杠,为什么不是7个,没有做raid),同时运行三个D盘到F盘,三个E盘到G盘,运行如下。
    D盘 到 F盘:

    cd %USERPROFILE%\AppData\Local\chia-blockchain\app-1.0.5\resources\app.asar.unpacked\daemon\
    chia.exe plots create -k 32 -b 4000 -u 128 -r 4 -t D:\tempdrive1 -d F:\ -n 1
    

    运行三次。

    E盘 到 G盘:

    cd %USERPROFILE%\AppData\Local\chia-blockchain\app-1.0.5\resources\app.asar.unpacked\daemon\
    chia.exe plots create -k 32 -b 4000 -u 128 -r 4 -t E:\tempdrive1 -d G:\ -n 1
    

    运行三次。
    这样就可以同时6P。

    大概方法就是如此,有疑问,可以留言,也可以邮件。

    展开全文
  • 原以为跳出后,P指向'\0',而实际上并非如此!我按跳出后P指向'\0',结果怎么拼接都实现不了,NND。为了验证这个问题,我们先上个小程序吧: #include void main() {  char *p = "abcdefg";  while(*p+

        在研究strcat函数实现的时候,发现了while(*p++ !=‘\0’)的大秘密,也让我发现了在上篇博客中我犯的一个错误。原以为跳出后,P指向'\0',而实际上并非如此!我按跳出后P指向'\0',结果怎么拼接都实现不了,NND。为了验证这个问题,我们先上个小程序吧:

    #include<stdio.h>

    void main()

    {

       char *p = "abcdefg";

       while(*p++ != 'c');

      printf("%c\n", *p);

    }

    您猜打印出来的是几? 结果是d。

    为什么呢?

    原来*和++的优先级是一样的,当优先级一样的时候,程序按自左至右的顺序执行。所以当*p = 'c' 或者*p = '\0'时,p仍然要往下移一位,即p指向满足条件后的下一个字节。

    由于'\0' 结束符,if 、while当会把他判成0,因此程序写成while(*p++ );效果也一样,最终程序指向字符串结束符'\0'的下一字节。

    如果这样写:

    while(*p)

    p++;

    当*p='\0'时,进不到while里面的循环,因此这种写法跳出循环的时候,p指向的是'\0'。同志们注意了,这样写while后面是没有“;”号的,文章一开始的写法后面是有“;”号的。

    所以明白了这,我们写strcat就好些了,首先查找目的字符串dst的末尾处,然后复制过去就OK了。

    #include <stdio.h>

    #include <assert.h>

    char *strcat(char *dst, const char *src)

    {

      assert(dst);

       char *dstFirst = dst;

      while(*dst++);

      dst--;

     while(*dst++ = *src++);

     return dstFirst;

    }


    //测试部分

    void main()

    {

        char *str1 = "you must";

        char *str2 = "zijuezizhi!";

        char *dst = malloc(100);  

        strcat(strcat(dst, str1), str2);

       prinf("%s\n", dst);

        free(dst);

        dst = NULL; 这个为什么大家指点奋斗

    }

    测试结果:you mustzijuezizhi!  一切正常。

        char *dst = malloc(100); 这句话也可以这样写:char *dst = NULL; dst = (char *)malloc(100);在程序结束处一定要free(dst)啊!也有书上说在dst调用strcat之前,要*dst = '\0',我没这样,测试结果也正确。水平有限,有些问题解释不了,大神看到了指点一二。

    这里交代下为甚strcat包括strcpy函数要返回char*类型,通过程序也看到了,返回的是首地址。我们printf打印一个字符串用的参数 就是首地址。因此通过返回首地址可以实现像strcat(strcat(dst, str1), str2);这种链式调用。在某些场合很方便。





    展开全文
  • 有些数据库连接的时候超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的...

    1. 引言

    1.1 定义

    • 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。
    • 对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。


    • 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
    • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

    1.2 参考资料

    DBCP

      
    1. 下载地址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
    2. 相关属性说明: http://commons.apache.org/proper/commons-dbcp/configuration.html

    c3p0

      
    1. 下载地址:http://sourceforge.net/projects/c3p0/
    2. 相关属性说明: http://www.mchange.com/projects/c3p0/

    Druid

      
    1. 下载地址:http://repo1.maven.org/maven2/com/alibaba/druid/
    2. 相关属性说明: https://github.com/alibaba/druid/wiki

    2. 数据库连接池

    2.1 原理

    • 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。
    • 使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。
    • 而连接的建立、断开都由连接池自身来管理。
    • 同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等,也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

    2.2 常见数据库连接池及其特点

    在Java中开源的常用的数据库连接池有以下几种 :

    1)DBCP

      
    1. DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.
    2. DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP

    2)c3p0

      
    1. c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,
    2. 包括了实现jdbc3jdbc2扩展规范说明的Connection Statement 池的DataSources 对象。

    3)Druid

      
    1. 阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser
    2. 支持所有JDBC兼容的数据库,包括OracleMySqlDerbyPostgresqlSQL ServerH2等等。
    3. Druid针对OracleMySql做了特别优化,比如OraclePS Cache内存占用优化,MySqlping检测优化。
    4. Druid提供了MySqlOraclePostgresqlSQL-92SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。
    5. 简单SQL语句用时10微秒以内,复杂SQL用时30微秒。
    6. 通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。
    7. Druid防御SQL注入攻击的WallFilter就是通过DruidSQL Parser分析语义实现的。

    3. 主要配置说明

    连接池配置大体可以分为基本配置、关键配置、性能配置等主要配置。

    3.1 基本配置

    基本配置是指连接池进行数据库连接的四个基本必需配置:

    传递给JDBC驱动的用于连接数据库的用户名、密码、URL以及驱动类名。

     

    DBCP

    c3p0

    Druid

    用户名

    username

    user

    username

    密码

    password

    password

    password

    URL

    url

    jdbcUrl

    jdbcUrl

    驱动类名

    driverClassName

    driverClass

    driverClassName

    注:在Druid连接池的配置中,driverClassName可配可不配,如果不配置会根据url自动识别dbType(数据库类型),然后选择相应的driverClassName。

    3.2 关键配置

    • 为了发挥数据库连接池的作用,在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。
    • 无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。
    • 连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中

    最小连接数:

    • 是数据库一直保持的数据库连接数,所以如果应用程序对数据库连接的使用量不大,将有大量的数据库资源被浪费。

    初始化连接数:

    • 连接池启动时创建的初始化数据库连接数量。

    最大连接数

    • 是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求被加入到等待队列中。

    最大等待时间:

    • 当没有可用连接时,连接池等待连接被归还的最大时间,超过时间则抛出异常,可设置参数为0或者负数使得无限等待(根据不同连接池配置)。

     

    DBCP

    c3p0

    Druid

    最小连接数

    minIdle(0)

    minPoolSize(3)

    minIdle(0)

    初始化连接数

    initialSize(0)

    initialPoolSize(3)

    initialSize(0)

    最大连接数

    maxTotal(8)

    maxPoolSize(15)

    maxActive(8)

    最大等待时间

    maxWaitMillis(毫秒)

    maxIdleTime(0秒)

    maxWait(毫秒)

    注1:

    • 在DBCP连接池的配置中,还有一个maxIdle的属性,表示最大空闲连接数,超过的空闲连接将被释放,默认值为8。
    • 对应的该属性在Druid连接池已不再使用,配置了也没有效果,c3p0连接池则没有对应的属性。

    注2:

    • 数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。
    • 如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;
    • 如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。
    • 在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。

    3.3 性能配置

    预缓存设置:

    • 即是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    • JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。
    • 但由于预缓存的statements属于单个connection而不是整个连接池,所以设置这个参数需要考虑到多方面的因素。
    • 单个连接拥有的最大缓存数:要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
    • 在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100

     

    DBCP

    c3p0

    Druid

    开启缓存功能

    poolPreparedStatements

    maxStatements

    poolPreparedStatements

    单个连接拥有的最大缓存数

    maxOpenPrepared-

    Statements

    maxStatementsPer-

    Connection

    maxOpenPrepared-

    Statements

    连接有效性检测设置:

    • 连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。
    • 如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。
    • 有些数据库连接的时候有超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。
    • 当然,为了保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能。

     

    DBCP

    c3p0

    Druid

    申请连接检测

    testOnBorrow

    testConnectionOnCheckin

    testOnBorrow

    是否超时检测

    testWhileIdle

     

    testWhileIdle

    空闲时间

    timeBetweenEvictionRunsMillis

    idleConnectionTestPeriod

    timeBetweenEvictionRunsMillis

    校验用sql语句

    validationQuery

    preferredTestQuery

    validationQuery

    归还连接检测

    testOnReturn

    testConnectionOnCheckout

    testOnReturn

    超时连接关闭设置:

    • removeAbandoned参数用来检测到当前使用的连接是否发生了连接泄露,所以在代码内部就假定如果一个连接建立连接的时间很长,则将其认定为泄露,继而强制将其关闭掉。

     

    DBCP

    c3p0

    Druid

    是否超时关闭连接

    removeAbandoned

    breakAfterAcquireFailure

    removeAbandoned

    超时时间

    removeAbandonedTimeout

    checkoutTimeout

    removeAbandonedTimeout

    是否记录日志

    logAbandoned

     

    logAbandoned

    c3p0重连设置:

    • 设置获取连接失败后,是否重新连接以及间隔时间。

     

    DBCP

    c3p0

    Druid

    重连次数

     

    acquireRetryAttempts

     

    间隔时间

     

    acquireRetryDelay

     

    4. 配置详解

    4.1 DBCP 属性说明表

    属性(Parameter)

    默认值(Default)

    描述(Description)

    username

     

    传递给JDBC驱动的用于建立连接的用户名(The connection username to be passed to our JDBC driver to establish a connection.)

    password  

     

    传递给JDBC驱动的用于建立连接的密码(The connection password to be passed to our JDBC driver to establish a connection.)

    url

     

    传递给JDBC驱动的用于建立连接的URL(The connection URL to be passed to our JDBC driver to establish a connection.)

    driverClassName

     

    使用的JDBC驱动的完整有效的java 类名(The fully qualified Java class name of the JDBC driver to be used.)

    defaultAutoCommit

    driver default

    连接池创建的连接的默认的auto-commit状态,没有设置则不会自动提交(The default auto-commit state of connections created by this pool. If not set then the setAutoCommit method will not be called.)

    initialSize

    0

    初始化连接:连接池启动时创建的初始化连接数量(The initial number of connections that are created when the pool is started.

    maxTotal

    8

    最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制(The maximum number of active connections that can be allocated from this pool at the same time, or negative for no limit.)

    maxIdle

    8

    最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制(The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.)

    minIdle

    0

    最小空闲连接:连接池中容许保持空闲状态的最小连接数量,负数表示没有现在(The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.)

    注意:如果在某些负载比较大的系统中将maxIdel设置过小时,很可能会出现连接关闭的同时新连接马上打开的情况.这是由于关闭连接的线程比打开的快导致的.所以,对于这种系统中,maxIdle的设定值是不同的但是通常首选默认值

    (NOTE: If maxIdle is set too low on heavily loaded systems it is possible you will see connections being closed and almost immediately new connections being opened. This is a result of the active threads momentarily closing connections faster than they are opening them, causing the number of idle connections to rise above maxIdle. The best value for maxIdle for heavily loaded system will vary but the default is a good starting point.)

    maxWaitMillis

    indefinitely

    最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待(The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely.)

    validationQuery  

     

    SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录(The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row. If not specified, connections will be validation by calling the isValid() method.)

    testOnCreate

    false

    指明是否在建立连接之后进行验证,如果验证失败,则尝试重新建立连接(The indication of whether objects will be validated after creation. If the object fails to validate, the borrow attempt that triggered the object creation will fail.)

    testOnBorrow

    true

    指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个. 注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串(The indication of whether objects will be validated before being borrowed from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another.)

    testOnReturn

    false

    指明是否在归还到池中前进行检验(The indication of whether objects will be validated before being returned to the pool.)

    testWhileIdle

    false

    指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. 注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串(The indication of whether objects will be validated by the idle object evictor (if any). If an object fails to validate, it will be dropped from the pool.)

    timeBetweenEviction-

    RunsMillis

    -1

    在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.如果设置为非正数,则不运行空闲连接回收器线程(The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run.)

    numTestsPerEvictionRun

    3

    在每次空闲连接回收器线程(如果有)运行时检查的连接数量(The number of objects to examine during each run of the idle object evictor thread (if any).)

    minEvictableIdleTime-Millis  

    1000*60*30

    连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒(The minimum amount of time an object may sit idle in the pool before it is eligable for eviction by the idle object evictor (if any).)

    softMiniEvictableIdle- TimeMillis

    -1

    说明(The minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle connection evictor, with the extra condition that at least "minIdle" connections remain in the pool. When miniEvictableIdleTimeMillis is set to a positive value, miniEvictableIdleTimeMillis is examined first by the idle connection evictor - i.e. when idle connections are visited by the evictor, idle time is first compared against miniEvictableIdleTimeMillis (without considering the number of idle connections in the pool) and then against softMinEvictableIdleTimeMillis, including the minIdle constraint.)

    maxConnLifetimeMillis

    -1

    说明(The maximum lifetime in milliseconds of a connection. After this time is exceeded the connection will fail the next activation, passivation or validation test. A value of zero or less means the connection has an infinite lifetime.)

    logExpiredConnections

    true

    说明(Flag to log a message indicating that a connection is being closed by the pool due to maxConnLifetimeMillis exceeded. Set this property to false to suppress expired connection logging that is turned on by default.

    connectionInitSqls

    null

    说明(A Collection of SQL statements that will be used to initialize physical connections when they are first created. These statements are executed only once - when the configured connection factory creates the connection.)

    info

    true

    说明(True means that borrowObject returns the most recently used ("last in") connection in the pool (if there are idle connections available). False means that the pool behaves as a FIFO queue - connections are taken from the idle instance pool in the order that they are returned to the pool.)

    poolPreparedState-ments

    false

    开启池的prepared statement 池功能(Enable prepared statement pooling for this pool.)

    maxOpenPreparedState-ments  

    unlimited

    statement池能够同时分配的打开的statements的最大数量, 如果设置为0表示不限制(The maximum number of open statements that can be allocated from the statement pool at the same time, or negative for no limit.)

    NOTE - Make sure your connection has some resources left for the other statements. Pooling PreparedStatements may keep their cursors open in the database, causing a connection to run out of cursors, especially if maxOpenPreparedStatements is left at the default (unlimited) and an application opens a large number of different PreparedStatements per connection. To avoid this problem, maxOpenPreparedStatements should be set to a value less than the maximum number of cursors that can be open on a Connection.

    accessToUnderlyingConnectionAllowed

    false

    控制PoolGuard是否容许获取底层连接(Controls if the PoolGuard allows access to the underlying connection.) 默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.(关闭底层连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用.注意: 不要关闭底层连接, 只能关闭前面的那个. Default is false, it is a potential dangerous operation and misbehaving programs can do harmful things. (closing the underlying or continue using it when the guarded connection is already closed) Be careful and only use when you need direct access to driver specific extensions. NOTE: Do not close the underlying connection, only the original one.

    removeAbandoned

    false

    标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout. 设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接. (Flags to remove abandoned connections if they exceed the removeAbandonedTimout. A connection is considered abandoned and eligible for removal if it has not been used for longer than removeAbandonedTimeout. Setting one or both of these to true can recover db connections from poorly written applications which fail to close connections.)

    removeAbandonedTimeout

    300

    泄露的连接可以被删除的超时值, 单位秒 (Timeout in seconds before an abandoned connection can be removed.)

    logAbandoned

    false

    标记当Statement或连接被泄露时是否打印程序的stack traces日志。被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,因为需要生成stack trace。(Flag to log stack traces for application code which abandoned a Statement or Connection. Logging of abandoned Statements and Connections adds overhead for every Connection open or new Statement because a stack trace has to be generated.)

    abandonedUsageTracking

    false

    如果为true, 那么连接池会记录每个方法调用时候的堆栈信息以及废弃连接的调试信息(If true, the connection pool records a stack trace every time a method is called on a pooled connection and retains the most recent stack trace to aid debugging of abandoned connections. There is significant overhead added by setting this to true.)

    注:如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2)and (getNumActive() > getMaxActive() - 3)时被触发. 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用.

    If you have enabled removeAbandonedOnMaintenance or removeAbandonedOnBorrow then it is possible that a connection is reclaimed by the pool because it is considered to be abandoned. This mechanism is triggered when (getNumIdle() < 2) and (getNumActive() > getMaxTotal() - 3) and removeAbandonedOnBorrow is true; or after eviction finishes and removeAbandonedOnMaintenance is true. For example, maxTotal=20 and 18 active connections and 1 idle connection would trigger removeAbandonedOnBorrow, but only the active connections that aren't used for more then "removeAbandonedTimeout" seconds are removed (default 300 sec). Traversing a resultset doesn't count as being used. Creating a Statement, PreparedStatement or CallableStatement or using one of these to execute a query (using one of the execute methods) resets the lastUsed property of the parent connection.

    4.2 C3P0  属性说明表

    属性(Parameter)

    默认值(Default)

    描述(Description)

    user

     

    同DBCP中的username属性

    password  

     

    同DBCP中的password属性

    jdbcUrl

     

    同DBCP中的jdbcUrl属性

    driverClass

     

    同DBCP中的driverClass属性

    autoCommitOnClose

    false

    默认值false表示回滚任何未提交的任务,设置为true则全部提交,而不是在关闭连接之前回滚

    (C3P0's default policy is to rollback any uncommitted, pending work. Setting autoCommitOnClose to true causes uncommitted pending work to be committed, rather than rolled back on Connection close.)

    *参见DBCP中的defaultAutoCommit属性

    initialPoolSize

    3

    初始化连接:连接池启动时创建的初始化连接数量(The initial number of connections that are created when the pool is started.

    *参见DBCP中的initialSize属性

    maxPoolSize

    15

    连接池中保留的最大连接数(Maximum number of Connections a pool will maintain at any given time.)      *参见DBCP中的maxIdle属性

    minPoolSize

    3

    连接池中保留的最小连接数(Minimum number of Connections a pool will maintain at any given time.)      *参见DBCP中的maxIdle属性

    maxIdleTime

    0

    最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以秒计数),超过时间则抛出异常,如果设置为0表示无限等待(Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire.)                            *参见DBCP中maxWaitMillis 属性

    preferredTestQuery

    null

    定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意:测试的表必须在初始数据源的时候就存在。(Defines the query that will be executed for all connection tests, if the default ConnectionTester (or some other implementation of QueryConnectionTester, or better yet FullQueryConnectionTester) is being used. Defining a preferredTestQuery that will execute quickly in your database may dramatically speed up Connection tests.)

    testConnectionOn- Checkin

    false

    如果设为true那么在取得连接的同时将校验连接的有效性。(If true, an operation will be performed asynchronously at every connection checkin to verify that the connection is valid. Use in combination with idleConnectionTestPeriod for quite reliable, always asynchronous Connection testing.)                                     *参见DBCP中的testOnBorrow属性

    testConnectionOn- Checkout

    false

    如果设为true那么在每个connection提交的时候都将校验其有效性,但是要确保配置的preferredTestQuery的有效性(If true, an operation will be performed at every connection checkout to verify that the connection is valid. Be sure to set an efficient preferredTestQuery or automaticTestTable if you set this to true.)                                 *参见DBCP中的testOnBorrow属性

    idleConnectionTest- Period

    0

    如果设置大于0,表示过了多少秒检查一次空闲连接,结合testConnectionOnCheckin以及testConnectionOnCheckout使用(If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out connections, every this number of seconds.)

    acquireRetryAttempts

    30

    定义在从数据库获取新连接失败后重复尝试的次数, 如果小于0则表示无限制的连接。(Defines how many times c3p0 will try to acquire a new Connection from the database before giving up. If this value is less than or equal to zero, c3p0 will keep trying to fetch a Connection indefinitely.)

    acquireRetryDelay

    1000

    两次连接中的间隔时间,单位毫秒。(Milliseconds, time c3p0 will wait between acquire attempts.)

    breakAfterAcquire-

    Failure

    false

    获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用 getConnection() 的时候继续尝试获取连接。如果为 true,那么在尝试获取连接失败后该数据源将声明已断开并永久关闭。(If true, a pooled DataSource will declare itself broken and be permanently closed if a Connection cannot be obtained from the database after making acquireRetryAttempts to acquire one. If false, failure to obtain a Connection will cause all Threads waiting for the pool to acquire a Connection to throw an Exception, but the DataSource will remain valid, and will attempt to acquire again following a call to getConnection().)

    checkoutTimeout

    0

    当连接池用完时客户端调用 getConnection() 后等待获取新连接的时间,潮湿后将抛出SQLException,如设为0,则为无限期等待。单位毫秒。(The number of milliseconds a client calling getConnection() will wait for a Connection to be checked-in or acquired when the pool is exhausted. Zero means wait indefinitely. Setting any positive value will cause the getConnection() call to time-out and break with an SQLException after the specified number of milliseconds.)

    maxStatements

    0

    控制数据源内加载的PreparedStatements数量(Enable prepared statement pooling for this pool.)

    maxStatementsPer- Connection

    0

    定义了连接池内单个连接所拥有的最大缓存statements数(The maximum number of open statements that can be allocated from the statement pool at the same time, or negative for no limit.)

    4.3 DRUID 属性说明表

    DruidDataSource配置兼容DBCP,但个别配置的语意有所区别。

    配置 缺省值 说明
    name   配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:”DataSource-” + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。详情-点此处
    url   连接数据库的url,不同数据库不一样。例如:
    mysql : jdbc:mysql://10.20.153.104:3306/druid2
    oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
    username   连接数据库的用户名
    password   连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里
    driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
    initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
    maxActive 8 最大连接池数量
    maxIdle 8 已经不再使用,配置了也没效果
    minIdle   最小连接池数量
    maxWait   获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
    poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    maxPoolPreparedStatementPerConnectionSize -1 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
    validationQuery   用来检测连接是否有效的sql,要求是一个查询语句,常用select ‘x’。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
    validationQueryTimeout   单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法
    testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    testOnReturn false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    keepAlive false
    (1.0.28)
    连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
    timeBetweenEvictionRunsMillis 1分钟(1.0.14) 有两个含义:
    1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
    2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
    numTestsPerEvictionRun 30分钟(1.0.14) 不再使用,一个DruidDataSource只支持一个EvictionRun
    minEvictableIdleTimeMillis   连接保持空闲而不被驱逐的最小时间
    connectionInitSqls   物理连接初始化的时候执行的sql
    exceptionSorter 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接
    filters   属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
    监控统计用的filter:stat
    日志用的filter:log4j
    防御sql注入的filter:wall
    proxyFilters   类型是List,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系

    参考说明:https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8
    展开全文
  • html p标签文字加粗_文字HTML标签

    千次阅读 2020-08-28 16:48:03
    html p标签文字加粗 p标签 (The p tag) This tag defines a paragraph of text. 该标签定义了一段文本...It’s a block element. 这是一个块元素。 Inside it, we can add any inline element we like, like sp...
  • 在前面的k8s controller-manager之hpa源码分析一文中曾经分析了k8s的hpa源码,讲解了hpa的流程,但只是基于...因此需要用到自定义metric指标进行自动伸缩,这里使用prometheus作为第三方metric收集器,并通过k8s-p...
  • 郑冰刚提到P值,说P值的定义(着重号是笔者加的,英文是从WikiPedia摘来的): P值就是当原假设为真时,比所得到的样本观察结果更极端的结果出现的概率。 The P-value is the probability of obtaining a result...
  • 一旦内核对象创建完成,系统就分配用于线程的堆栈的内存。该内存是从进程的地址空间 分配而来的,因为线程并不拥有它自己的地址空间。...的p v P a r a m参数的值。紧靠它的下面是传递给C r e a t e T h r e a d的p
  • 给照片或者视频中的人物头发换颜色,这个技术已经在手机app诸如天天P图,美图秀秀等应用中使用,并获得了不少用户的青睐。 如何给照片或者视频中的人物头发换发色? 换发色算法流程如下图所示: 1,AI头发分割...
  • ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步, 并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。 时钟的跃变,对于某些程序会导致很...
  • Bjarne Stroustrup's C++ Style and Technique FAQ

    千次阅读 2010-06-10 18:28:00
    Bjarne Stroustrup's C++ Style and Technique FAQModified October 4, 2009Source: http://www2.research.att.com/~bs/bs_faq2....
  • 利用 Tinyproxy 搭建 HTTP(S) 代理

    万次阅读 2015-09-10 09:50:44
    可以使用 Google Translate 来应个急,但并非 100% 有效,比如最近我在访问 wireshark.org 时就遇到了问题。好在我们还能搭建 HTTP(S) 代理。目前市面上许多 HTTP(S) 代理 软件可以选择,我们将使用 Tinyproxy。...
  • 51 单片机的 P0 口

    千次阅读 2016-01-25 12:06:21
    遇到了几个问题,都是说 P0 口可以输出 1 的,链接如下:http://zhidao.baidu.com/question/646645068422989525.htmlhttp://zhidao.baidu.com/question/2052001422785793947.htmlP0 口内部的电路图,并不是人人都...
  • K8s StatfulSet使用总结

    千次阅读 2019-08-02 15:59:00
    StatefulSet:在1.3以前K8s中StatefulSet叫PetSet(宠物集),由此也可看出StatefulSet是关注个体,而非群体。 StatefulSet要满足以下几点: 稳定且唯一的网络标识符; 如: Redis集群, 在Redis集群中,它是通过槽位...
  • 为方便下面,先说下pPp打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的内容,并追加到默认输出之前。 sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将...
  • 使用Docker Compose简化K8S配置

    千次阅读 2019-08-19 11:16:47
    翻译自:Simplifying Kubernetes with Docker Compose and Friends 今天我们很开心能够声明K8S平台上支持Docker Compose,之前这个功能只在...为什么K8S还要用Docker Compose? Kubernetes API体量非常大,超过...
  • 事件:测试需要,要在自己的计算机上搭建临时IIS,在打开或关闭windows功能里,开启了相关组件及功能,确定应用后提示“出现错误,并非所有功能被成功更改”。 解决:网上查阅相关资料后,众说纷纭。后来在一小哥...
  • Manacher’s Algorithm超详细!!!

    千次阅读 2018-11-13 08:56:15
    当一个较大长度的回文串结构包含一个位于其自身中心左侧的较小长度回文串时,那么基于对称性质,将会另一个相同的较小长度的回文串位于较大长度的回文串的右侧。如果左侧的较小回文串不是较大回文串的前缀,则是第...
  • (statistic) fisher的P

    千次阅读 2014-05-06 22:17:02
    R·A·Fisher(1890-1962)作为一代假设检验理论的创立者,在假设检验中首先提出P值的概念。他认为假设检验是一种程序,研究人员依照这一程序可以对某一总体参数形成一种判断。也就是说,他认为假设检验是数据分析的...
  • linux下sprintf_s函数的替代

    千次阅读 2016-11-06 22:30:15
    windows平台下线程安全的格式化字符串函数sprint_s并非标准C函数,因此linux下无法使用,但可以使用snprintf函数代替。 /*函数原型:*/ int snprintf(char *dest, size_t n, const char *fmt, ...); /*函数...
  • (文/Regina Nuzzo)衡量统计真实性的“黄金标准”——P值,并非众多科学家想象的那样可靠。 2010年某个瞬间,马特·莫德尔(Matt Motyl)离享受科学荣誉仅一步之遥。那时,他发现政治极端主义者看到的世界是...
  •  var form = jQuery.createUploadForm(id, s.fileElementId, s.data); //创建form表单  var io = jQuery.createUploadIframe(id, s.secureuri);//创建Iframe /////////////////////////////////////////...
  • 算法和流程图(及N-S流程图)

    千次阅读 2019-08-04 07:12:00
    算法和流程图 2.1.1算法 计算机语言只是一种工具。光学习语言的规则还不够,最...并非只有“计算”的问题才算法。广义地说,为解决一个问题而采取的方法和步骤,称为“算法”。不要把“计算方法”(computationa...
  • I/O 大会的第一天,我们公布了下一个版本的 Android,也就是 Android P 的 beta 版本。Android P 将 AI 定位为操作系统的核心,并侧重于...
  • 白话空间统计之:Moran's I(莫兰指数)

    万次阅读 多人点赞 2015-07-29 16:58:07
    Moran's I这个东西,官方叫做:莫兰指数,是澳大利亚统计学家帕特里克·阿尔弗雷德·皮尔斯·莫兰(Patrick Alfred Pierce Moran),在1950年提出的。一般是用来度量空间相关性的一个重要指标。
  • 克拉默法则(Cramer's Rule)的证明

    千次阅读 2017-12-13 01:33:00
    但是在学习过程中遇到一个讲解的不清楚的知识点(Cramer's Rule),于是上网查询,但是出乎意料的是网上的证明方法都复杂且大多数都是用验证法,这对于数学的学习是及其没有帮助的,我作为一个数学爱好者就开始探索...
  • 然而池化处理本身也要付出代价,因此,并非任何情况下都适合采用对象池化。基本上,只在重复生成某种对象的操作成为影响性能的关键因素的时候,才适合进行对象池化。如果进行池化所能带来的性能提高并不重要的话,...
  • 并非所有的功能被成功更改。 从安装成功的电脑上拷贝ghost版本缺少的文件,然后再安装telnet客户端,我已打包 链接:https://pan.baidu.com/s/1Cna39ZYc2t-z0GOvaTH8-w 提取码:4bbp 如果复制文件时,提示没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,712
精华内容 43,084
关键字:

并非有的s是p