精华内容
下载资源
问答
  • Python提供了以下几个内置tools模块,简化开发operator collections itertools functools除此之外,还有一些其他工具,比如mimetools、unittest等,上述四个tools作用于内建类型和函数、类等,比较通用,也较为常用...

    Python提供了以下几个内置tools模块,简化开发

    operator collections itertools functools

    除此之外,还有一些其他工具,比如mimetools、unittest等,上述四个tools作用于内建类型和函数、类等,比较通用,也较为常用。

    -operator : 内置的操作符模块

    -collections : 简化容器类型的一些操作和使用

    -itertools : 可迭代类型工具

    -functools : 函数工具,尤其是装饰器

    operator

    operator提供了一个函数与符号的相互转换,方便我们在编程时选择:

    examples

    (1)符号转函数:

    比如在一些需要某些符号功能,却需要提供该符号的函数表示时,尤其是在map reduce filter等的key 和cmp里面

    from operator import add

    print reduce(add,range(10))

    (2)函数转符号:

    这个例子有点特别,但是在类定义中常见,add->__add__这种方式差别跟python的变量有关。

    附:python变量命名方式(来自网络):

    python变量命名规范

    下面是python符号函数映射表

    class A():

    def __init__(self,num):

    self.num=num

    def __add__(self,other):

    return self.num+other.num

    Operation

    Syntax

    Function

    Addition

    a + b

    add(a, b)

    Concatenation

    seq1 + seq2

    concat(seq1, seq2)

    Containment

    Test obj in seq

    contains(seq, obj)

    Division

    a / b

    div(a, b) (without future.division)

    Division

    a / b

    truediv(a, b) (with future.division)

    Division

    a // b

    floordiv(a, b)

    Bitwise And

    a & b

    and_(a, b)

    Bitwise Exclusive Or

    a ^ b

    xor(a, b)

    Bitwise Inversion

    ~ a

    invert(a)

    Bitwise Or

    a | b

    or_(a, b)

    Exponentiation

    a ** b

    pow(a, b)

    Identity

    a is b

    is_(a, b)

    Identity

    a is not b

    is_not(a, b)

    Indexed Assignment

    obj[k] = v

    setitem(obj, k, v)

    Indexed Deletion

    del obj[k]

    delitem(obj, k)

    Indexing

    obj[k]

    getitem(obj, k)

    Left Shift

    a << b

    lshift(a, b)

    Modulo

    a % b

    mod(a, b)

    Multiplication

    a * b

    mul(a, b)

    Negation (Arithmetic)

    - a

    neg(a)

    Negation (Logical)

    not a

    not_(a)

    Positive

    + a

    pos(a)

    Right Shift

    a >> b

    rshift(a, b)

    Sequence Repetition

    seq * i

    repeat(seq, i)

    Slice Assignment

    seq[i:j] = values

    setitem(seq, slice(i, j), values)

    Slice Deletion

    del seq[i:j]

    delitem(seq, slice(i, j))

    Slicing

    seq[i:j]

    getitem(seq, slice(i, j))

    String Formatting

    s % obj

    mod(s, obj)

    Subtraction

    a - b

    sub(a, b)

    Truth Test

    obj

    truth(obj)

    Ordering

    a < b

    lt(a, b)

    Ordering

    a <= b

    le(a, b)

    Equality

    a == b

    eq(a, b)

    Difference

    a != b

    ne(a, b)

    Ordering

    a >= b

    ge(a, b)

    Ordering

    a > b

    gt(a, b)

    collections

    主要是为容器类型: list, set, and tuple提供了一些便利

    有以下几个类型

    type

    describe

    namedtuple

    factory function for creating tuple subclasses with named fields

    deque

    list-like container with fast appends and pops on either end

    Counter

    dict subclass for counting hashable objects

    OrderedDict

    dict subclass that remembers the order entries were added

    defaultdict

    dict subclass that calls a factory function to supply missing values

    namedtuple

    主要用于对tuple里面的分量进行命名,生成一个tuple的子类,这个子类继承了原来的tuple类,有相同的属性方法。

    from collections import namedtuple

    mytuple=namedtuple('mytuple',('name','age')])

    first=mytuple('tom',19)

    print first.name,first.age

    这种namedtuple可以用来对获取的的数据库数据进行命名,我们从数据库获取的每条记录都是用一个tuple,不方便我们取属性,如果换成我们自定义的namedtuple类型,更便于操作和理解。

    deque

    这是一种队列类型,有队列类型的相关操作,可以弥补list这种广义表类型的某些不足,比如在前面插入较慢(这里你可以查找一些python的资料,对于python的list前段吧插入时会整个后移list,效率较低)

    关于这种类型相应的方法支持可以参考后面附上的python library链接

    Counter

    可以理解为一个计数字典

    from collections import *

    d = Counter("hello world hello BJ".split())

    print d

    # OUT : Counter({'hello': 2, 'world': 1, 'BJ': 1})

    print d['SH']

    # OUT : 0

    返回一个字典的子类,键值为可迭代对象里的对象和相应数量。

    对于这个字典里没有的键,返回0,类似于普通字典的 d.get(‘SH’,0)

    关于这种类型的其他方法也可参考官方文档,讲得很清楚。

    OrderedDict

    有序字典,字典中的键按序排放,加入了一些与顺序有关的操作,比如popitem()等

    defaultdict

    对于一个defaultdict类型,当你去访问它的键值时,如果没有这个键,它会调用一个可调用对象,将返回值赋给这个键。

    call1 = int

    call2 = list

    call3 = lambda :4

    from colletions import defaultdict

    mydict1 = defaultdict(call1)

    mydict2 = defaultdict(call2)

    mydict3 = defaultdict(call3)

    print mydict1['not'],mydict2['not'],mydict3['not']

    # OUT : 0 [] 4

    # 执行过程是,去取这个键的值,如果没有,调用call1(None),...

    # 如果你想知道我说的对不对,可以把call3 = lambda x:4 ,试试,看他的报错就知道了。

    colletions后面还列出了一些类,用于继承和isinstance判断

    本节参考:

    python library - collections

    itertools

    可以参考:

    python library - itertools

    前面的都比较好理解

    主要想解释下tee,感觉tee像是对原迭代对象的n份deepcopy,不知道他说的那个split是不是这个意思

    Combinatoric generators部分:

    对于s=’ABCD’

    Iterator

    Arguments

    Results

    product()

    p, q, … [repeat=1]

    cartesian product, equivalent to a nested for-loop

    permutations()

    p[, r]

    r-length tuples, all possible orderings, no repeated elements

    combinations()

    p, r

    r-length tuples, in sorted order, no repeated elements

    combinations_with_replacement()

    p, r

    r-length tuples, in sorted order, with repeated elements

    product(‘ABCD’, repeat=2)

    类似Ann

    AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD

    permutations(‘ABCD’, 2)

    类似A2n

    AB AC AD BA BC BD CA CB CD DA DB DC

    combinations(‘ABCD’, 2)

    类似C2n

    AB AC AD BC BD CD

    combinations_with_replacement(‘ABCD’, 2)

    C2n+AA…DD

    AA AB AC AD BB BC BD CC CD DD

    functools

    这里面前面几个工具是用来衔接的old-new,这点感觉跟那个__future__模块很像

    后面的跟函数闭包里面的装饰器有关,一共有三个函数(类)

    update_wrapper wraps partial

    wraps是简化了的update_wrapper

    关于这三个:

    update_wrapper:Update a wrapper function to look like the wrapped function.

    wraps:This is a convenience function for invoking update_wrapper() as a function decorator when defining a wrapper function.

    partial是一个类,有多个属性。

    前面俩个可以参考官方例子,partial可以用于固定函数参数

    from functools import partial

    def basefunc(a,b):

    return a+b

    newfunc = partial(basefunc,b=1)

    print newfunc(5)

    # OUT : 6

    #这里要考虑函数默认参数的问题,如果newfunc = partial(basefunc,a=1),print 时会报错,必须print newfunc(b=5),关于函数默认参数赋值问题,基本上原则是默认赋值的放后面,否则要在调用函数时使用形参

    展开全文
  • java工具 tools

    2013-03-27 00:26:16
    什么是自动化测试? 性能分析工具
  • 经常有萌新问我 比如 pt tools 有哪些功能,或者 pt tools什么用之类的话语。今天小编就给大家来简单介绍下 pt tools 这款工具的基本功能。 首先你用pt tools之前得有一个身份,就是你必须是一名合格的pter,...

    记得2017年的年尾发布了一款工具,截至今日,已经快2年了。这款名为 pt tools 的工具,已经升级到了5.0版本。经常有萌新问我 比如 pt tools 有哪些功能,或者 pt tools 有什么用之类的话语。今天小编就给大家来简单介绍下 pt tools 这款工具的基本功能。

    首先你用pt tools之前得有一个身份,就是你必须是一名合格的pter,因为pt tools的使用者100%都是pter,而且大部分都是属于“大佬”级别的,作为一个萌新如果第一次使用pt tools,肯定是慢慢得“瑟瑟发抖”才对~~

    那么至于如何成为一名pter这里就不多做介绍了,今天我们主要的任务,是拆分一下pttools的一些基本功能。如果小编说的不是很详细,大家也可以自行去PTTools官网查看相关资料说明(http://www.pttools.cn/)

    下面是软件的截图(图片取自互联网)

    从图片中可以看到这明显是一款浏览器嘛。是的。pt tools 确实是一款浏览器,采用谷歌Google Chromium内核浏览器,对于HTML5的支持也比较不错。当然如果只是一款浏览器,那么今天就没有必要做介绍了。

    可以看到图片的左侧,有一系列的功能性按钮,例如:交流区、个人数据、聚合搜索等等。相信聪明的小伙伴应该能看出来这是啥了。如果你知道PT是啥,那么看到这些功能是否会突然眼前一亮?是的,这也是为什么介绍pt tools之前,一定要说明大家得有一个身份,那就是你必须是名pter才可以。因为不是pter是无法用除了浏览器之外其它的任何功能噢~~

    你也可以理解为是pt tools 就是一个浏览器,然后给你封装好了很多关于pt相关的插件。然后你只需要按需使用即可。OK,问题来了,知道了 pt tools 都有哪些功能后,我们如何才能得到pt站点的帐号呢,或者说如何才能成为一名pter呢? 这就不得不说 pt tools的“交流区”这个功能!

    因为篇幅有限,这里就不给大家截图了,pt tools的开发者貌似考虑到这个情况,特意开设了pt tools交流区,据说是可以求到邀请的,关键你得合理利用软件的其余功能,比如个人数据,或者数据统计,让自己的数据变得漂亮起来才行。这样pt tools 里面的大佬才会看中你。

    俗话说的好,师傅领进门,修行靠个人。所以,大家知道了pt tools 具体有哪些功能就好了。后面的路还是得自己去走才说的过去~OK,以上就是关于“pt tools 看介绍说是一款PT工具,具体有什么用呢?”的具体介绍,感谢大家观看。

    展开全文
  • 首先为什么要安装VMware Tools 呢? 因为安装 VMware Tools 后,工具套件中的实用程序可增强虚拟机客户机操作系统的性能,改善虚拟机的管理。更简单的说 VMware Tools是 VMware虚拟机的必备软件。 那么接下来说安装...

    首先为什么要安装VMware Tools 呢?

    因为安装 VMware Tools 后,工具套件中的实用程序可增强虚拟机客户机操作系统的性能,改善虚拟机的管理。更简单的说 VMware Tools是 VMware虚拟机的必备软件。
    先看看效果吧!
    在这里插入图片描述

    那么接下来说安装步骤吧!

    目录

    一、获得Root权限
    二、装载CD-ROM 设备
    三、安装 VMware Tools工具

    一、获得Root权限

    这里我使用的时Ubuntu的系统,第一次获取root权限时要激活。
    在这里插入图片描述
    (1)鼠标右击–>打开终端
    (2)输入: sudo passwd
    (3)设置启动root时的密码
    Password: <— 输入你当前用户的密码
    Enter new UNIX password: <— 新的Root用户密码
    Retype new UNIX password: <— 重复新的Root用户密码
    passwd:已成功更新密码

    注:Linux中所有的密码都是不显示的。

    在这里插入图片描述
    (4)输入:su
    (5)输入密码:*******(获得root权限)

    二、装载CD-ROM 设备

    (1)、检查CD-ROM是否存在
    输入: chmod +x /dev/cdrom on /mnt/cdrom type iso9660 \ (ro,nosuid,nodev\ )
    我这里前两个命令失败了,最后一个命令成功了。
    在这里插入图片描述
    (2)安装CD-ROM
    输入: mkdir /mnt/cdrom
    输入: mount /dev/cdrom /mnt/cdrom
    在这里插入图片描述
    出现上图即为成功。

    三、安装 VMware Tools工具

    如图设置就会出现一个DVD的软件。
    在这里插入图片描述
    在这里插入图片描述
    输入: cd /tmp
    输入: tar zxpf /mnt/cdrom/VMwareTools-x.x.x-yyyy.tar.gz
    输入: cd vmware-tools-distrib
    输入: ./vmware-install.pl
    输入: yes
    按enter
    运行 vmware-config-tools.pl 配置文件。
    输入: Cd /tmp/vmware-tools-distrib/bin
    输入:./ vmware-config-tools.pl
    按enter

    退出root

    输入: exit

    展开全文
  • 转载地址:...译者地址:【翻】一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build Tools: The new DSL stru...

    转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/

    译者地址:【翻】一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5

    原文:First Look at New Android Gradle Build Tools: The new DSL structure and Gradle 2.5

    双语对照地址: 【翻-双语】一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5

    Android Studio 1.3 的平台已经接近于稳定的发布版,新的功能不断推出,包括对NDK 的完美支持。它看起来有一些重大的改变也正在等待合适的孵化时机,如:新的 Gradle 构建工具以及新设计的 DSL (gradle 脚本代码结构)

    在我把玩了一个小时之后,我发现它是非常有趣的,所以,我决定去写下这篇博客来向你们这些家伙介绍这个构建工具即将带来的改变,好让你们做好准备。

    Android Gradle 构建工具(Android Gradle Build Tools)是什么?

    万一你还不知道它呢!Android Gradle 构建工具是一个运行时用于处理 module 下的 build.gradle 文件的,在这个文件传递到 Gradle 去做进一步操作之前进行的。

    Gradle Build Tools 在项目中的 build.gradle 声明就像下面这样:

    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
    

    每个版本的 Gradle Build Tools 可以与下面列出的受支持的 Gradle 版本协同工作。

    Android Gradle PluginGradle
    1.0.0 - 1.1.3 2.2.1 - 2.3
    1.2+ 2.2.1+

    在 Android Gradle Build Tools 中定义了语法规则,和我们使用的语法规则在 build.gradle 文件中来写 Gradle 脚本(And the syntax we use these days to write Gradle Script in build.gradle file is defined in Android Gradle Build Tools.). 我们称它为 DSL(Domain-Specific Language).

    新的 Android Gradle 构建工具

    从 Gradle Build Tools 1.0 问世以来, DSL 还没有被动过, Android Studio 团队决定对新的 Gradle Build Tools 做出重大的改变。它仍然在试验阶段,通过改变其基础的 Gradle 的新组件模型机制使其显著的减少在配置上花费的时间。然而开发团队正在努力尝试去移除这些通用的变化,以尽量减少从传统的插件在未来的迁移过程。(However development teams are working hard trying to remove these current changes to minimize the migration process from the traditional plugin in the future.)

    不管怎么样,坦白的说,新的 DSL 看起来相当不错。我必须说我对这些改变非常信服,因为这个新的 DSL 结构以及命名比现在的这个更加有意义。

    尝试新的 Gradle Build Tools 只需要简单的在项目的 build.gradle 文件中更改 build tools 的版本:

    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.1.0'
    }
    

    请注意, 新版本的 build tools 要与刚刚发布的 Gradle 2.5 一起使用才行,所以你需要首先安装 Gradle2.5,在你的项目的 gradle/gradle-wrapper.properties 文件下修改 distributionUrl 这一行:

    distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-bin.zip
    

    进入设置页面( Windows 系统在 File -> Settings 或 Mac OS X 在 Android Studio -> Preferences 下),并且,确保你选择使用的是默认配置的 gradle wrapper.

    defaultwrapper

    然后修改 module 的 build.gradle 文件从这样:

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 22
        buildToolsVersion "23.0.0 rc3"
    
        defaultConfig {
            applicationId "com.inthecheesefactory.hellojni25"
            minSdkVersion 15
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.2.0'
    }
    

    改成这样:

    apply plugin: 'com.android.model.application'
    
    model {
        android {
            compileSdkVersion = 22
            buildToolsVersion = "23.0.0 rc3"
    
            defaultConfig.with {
                applicationId = "com.inthecheesefactory.hellojni25"
                minSdkVersion.apiLevel = 15
                targetSdkVersion.apiLevel = 22
                versionCode = 1
                versionName = "1.0"
            }
        }
        android.buildTypes {
            release {
                isMinifyEnabled = false
                proguardFiles += file('proguard-rules.pro')
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.2.0'
    }
    

    你可以注意到结构有很大的不同。com.android.application 现在改为 com.android.model.application. 大多数属性要求有 = 操作符,以及 += 操作符被用于添加元素(也许是多个)到集合中。以前一些属性的名字定义的不是非常的清晰的,现在也有所调整,举个例子:minSdkVersion 现在变成了minSdkVersion.apiLevel

    好了,让我们用 gradle 文件同步项目去应用这些改变。

    syncgradle

    然后只需要运行它。在使用更有意义的语法规则后,一切按预期的那样工作。使用新鲜出炉的 Gradle 2.5 构建!

    run

    试试 NDK 的支持

    Android Studio 1.3 嘚瑟的宣布了完全支持 NDK。所以,让我们用一个非常简单的 native 代码例子来做尝试。首先,你需要在项目的 local.properties 文件里定义一个 NDK 的目录。请注意你可以在 Android NDK Downloads Page 中显示的 NDK r10e 和在 SDK Manager 中显示的 NDK Bundle 都是可以使用的。

    ndk.dir=PATH_TO_NDK_ROOT
    

    创建 HelloJni.java 放在你的 Java 包下。

    public class HelloJni {
        public native String stringFromJNI();
    }
    

    在 src/main 目录里面创建一个 jni 文件夹,并且创建一个 hello-jni.c 文件里面写如下的内容:

    hello-jni.c

    #include <string.h>
    #include <jni.h>
    
    jstring
    Java_com_inthecheesefactory_hellojni25_HelloJni_stringFromJNI( JNIEnv* env,
                                                      jobject thiz )
    {
    #if defined(__arm__)
      #if defined(__ARM_ARCH_7A__)
        #if defined(__ARM_NEON__)
          #if defined(__ARM_PCS_VFP)
            #define ABI "armeabi-v7a/NEON (hard-float)"
          #else
            #define ABI "armeabi-v7a/NEON"
          #endif
        #else
          #if defined(__ARM_PCS_VFP)
            #define ABI "armeabi-v7a (hard-float)"
          #else
            #define ABI "armeabi-v7a"
          #endif
        #endif
      #else
       #define ABI "armeabi"
      #endif
    #elif defined(__i386__)
       #define ABI "x86"
    #elif defined(__x86_64__)
       #define ABI "x86_64"
    #elif defined(__mips64)  /* mips64el-* toolchain defines __mips__ too */
       #define ABI "mips64"
    #elif defined(__mips__)
       #define ABI "mips"
    #elif defined(__aarch64__)
       #define ABI "arm64-v8a"
    #else
       #define ABI "unknown"
    #endif
    
        return (*env)->NewStringUTF(env, "Hello from JNI !!  Compiled with ABI " ABI ".");
    }
    

    请不要忘记将 com_inthecheesefactory_hellojni25 改变成对应的 HelloJni.java 的包名,否则它是不工作的。

    对于那些熟悉 NDK 的人,你可能注意到了 Makefiles 已经不再需要了。

    这是最终的文件目录:

    files

    现在,让我们在 MainActivity.java 中测试这段 JNI 代码,把下面这段代码放到 MainActivity 类的最后一行:

    public class MainActivity extends AppCompatActivity {
        ...
        static {
            System.loadLibrary("hello-jni");
        }
    }
    

    修改 onCreate 就像这样:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        Toast.makeText(MainActivity.this,
                        new HelloJni().stringFromJNI(),
                        Toast.LENGTH_LONG)
                .show();
    }
    

    duang~完成!现在,你可以通过 Java 代码来使用 native 代码了,运行试试吧

    screenshot18

    随着在 Android Studio 上令人惊叹的完全支持 NDK,Java 代码现和 Native 代码现在可以配合更加天衣无缝。如果你在 Java 中调试代码,它将会跳转到 native 代码的正确位置。(译者:这点还真是令人惊叹喔!)

    linkjni

    不管怎么说,它仍然处于实验阶段,某些功能仍在开发中。对于严肃的用户来说,最好等到它最终发布吧。

    结论

    我必须说新的 Gradle Build Tools 是非常有趣的。主要改变的 DSL 看起来非常有前途,并且对于现在的来说具有更深远的意义。优秀的代码应该能告诉我们它能做什么(译者:能从字面意思理解这段代码的意思),对吧?

    然后它仍然还处于实验阶段。这个 DSL 还不是最终的版本,我们最好只是学习和了解他的存在,而不是现在立刻就切换到这个新的版本。不管怎么说,我相信距离它发布可供实际使用的稳定版本不会很久了。做好准备吧!

     

    引用原文:http://blog.csdn.net/lijinhua7602/article/details/48596955

     

    写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!

    如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

    转载于:https://www.cnblogs.com/summary-2017/p/7617107.html

    展开全文
  • 1,最小化的linux系统(centos\redhat)默认都是没有安装setup图形小工具的,你输入setup命令会提示commandnotfound . ...2,安装好之后,你会发现里面什么都没有,这只是一个图形工具。我们需要用到的网络...
  • 管理工具 tools不可用 当工作负载堆积时,管理网络和系统的压力会很大。 没有人真正喜欢花多长时间才能做到,每个人都希望自己昨天完成特定的事情。 因此,难怪我们中的许多人会被开源精神所吸引,即弄清楚什么...
  • 金坛区红星铂悦风华项目为什么那么火爆原因是红星铂悦风华人居住宅,洼地 金坛市中心区域高品质楼盘龙湖物业 人车分流、外墙保温、双层玻璃等项目由江苏城东建设与苏房投集团共同合作开发, 位于金坛市滨湖新城板块...
  • 构建工具build tools

    2019-03-11 10:57:00
    构建工具是从源代码自动创建可执行应用程序的程序(例如.apk for android app)。构建包括将代码编译,链接和打包成可用或可执行的形式。 基本上,构建自动化是脚本...为什么我们使用构建工具或构建自动化?  在...
  • 什么是Inotify? Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化...
  • 讲者|宋微建微建设计创办人中国建筑学会室内设计分会副理事长宋微建 x 眼界talks现场空间到底是什么?真的是我们现在所谈论的「空间」吗?如果我们连空间都不确定是什么那我们又怎么来做空间设计?在现代科学认知里...
  • 原创文章版权归微信公众号“把科学带回家”所有来源 | 《万物》等编辑 | Mirror蚊子叫声那么弱,为什么能把人吵醒?首先要为蚊子“澄清”的是,它们并不会“叫”。和苍蝇、蜜蜂的嗡嗡声一样,我们所以为的叫声其实是...
  • tools4clj 在官方clojure工具的阴影下: const version = "1.10.2.796" 这是什么? 这是Clojure的旅途工具tools4clj构建会生成两个二...与官方clojure / clj工具相比有什么不同吗? 对于Go用户: 轻松进入C
  • #1楼 参考:https://stackoom.com/question/1DTq6/Docker将什么添加到lxc-tools-用户空间LXC工具 #2楼 Let's take a look at the list of Docker's technical features , and check which ones are provided by LXC...
  • js之封装tools工具

    2019-02-26 17:31:00
    什么80%的码农都做不了架构师?>>> ...
  • doDBA tools什么?doDBA tools是一个基于控制台的远程监控工具,它不需要在本地/远程系统上安装任何软件,它可以实时收集操作系统、MySQL、InnoDB的实时性能状态数据,并可以生成Doing日志文件,来帮助你快速了解/...
  • 什么是Geotools

    千次阅读 2019-01-09 21:42:52
    而OGC是国际标准,所以geotools将来必定会成为开源空间数据处理的主要工具,目前的大部分开源软件,如udig,geoserver等,对空间数据的处理都是由geotools来做支撑。而其他很多的web服务,命令行工具和桌面程序都...
  • [img=https://img-bbs.csdn.net/upload/201503/17/1426587711_269914.jpg][/img][img=https://img-bbs.csdn.net/upload/201503/17/1426587720_421197.jpg][/img]

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,751
精华内容 700
关键字:

tools什么工具