精华内容
下载资源
问答
  • 防火墙起初看起来很难使用,但是实际上并不是这样。服务以及区域使一个个碎片的结合以及Linux防火墙的配置变得很容易。尽管工作在Linux内核的网络过滤器代码上,总体上和旧有的配置防火墙的方法是不兼容的。...

    防火墙起初看起来很难使用,但是实际上并不是这样。服务以及区域使一个个碎片的结合以及Linux防火墙的配置变得很容易。尽管工作在Linux内核的网络过滤器代码上,总体上和旧有的配置防火墙的方法是不兼容的。Red Hat Enterprise Linux 7 和其他的新版本则需要依靠新的配置方法。本文的所有命令都基于RHEL 7。

    防火墙工作网络

    首先,检查防火墙是否在运行。使用列表1中的systemctl status firewalld命令。

    列表1.下面的序列表明防火墙是活动状态且在运行中。这些斜线是有帮助的,当你试图将表1显示出来,使用-1命令。

    [root@rhelserver ~]# systemctl status firewalld

    firewalld.service - firewalld - dynamic firewall daemon

    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)

    Active: active (running) since Thu 2014-05-22 07:48:08 EDT; 14min ago

    Main PID: 867 (firewalld)

    CGroup: /system.slice/firewalld.service

    └─867 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

    May 22 07:48:08 rhelserver.example.com systemd[1]: Started firewalld - dynami...

    防火墙中的一切都与一个或者多个区域相关联。

    配置之后,RHEL 7服务器正常会在公共区域,但是你也许会想将它放置在另一个网络配置防火墙访问。这时使用firewall-cmd --get-default-zone命令,该命令显示你的服务器在哪一个网络。如果你想查看配置特定网络的详细信息,你可以使用列表2中的firewall-cmd --zone=zonename --list-all命令。

    列表2.

    root@rhelserver ~]# firewall-cmd --get-default-zone

    public

    [root@rhelserver ~]# firewall-cmd --get-zones

    block dmz drop external home internal public trusted work

    [root@rhelserver ~]# firewall-cmd --zone=public --list-all

    public (default, active)

    interfaces: ens33

    sources:

    services: dhcpv6-client sander ssh

    ports:

    masquerade: no

    forward-ports:

    icmp-blocks:

    rich rules:

    改变当前区域并不难:使用firewall-cmd --set-default-zone=home命令,该命令可用于从公共网络到家庭网络制定一个默认网络。

    服务和其他构件

    在区域中有一些基本的构件块,其中服务是较重要的。防火墙使用管理员创建在/usr/lib/firewalld/services(系统默认服务) 和/etc/firewalld/services文件下的XML文件,配置的自身服务集。XML文件时通过列表3中的例子创建的。

    列表3.

    [root@rhelserver services]# cat ftp.xml

    FTP

    FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the

    vsftpd package installed for this option to be useful.

    每一个服务定义都需要一个简短的名字、描述和端口网络用于指定需要使用的协议、端口和模块名。

    列表4.以下是创建防火墙服务的例子

    [root@rhelserver services]# cat sander.xml

    Sander

    Sander is a random service to show how service configuration works.

    一旦你有了正确的服务文件,使用以下代码复制它。firewall-cmd --list-services命令显示从你服务器上的所有可以找到的服务列表。如果要增加服务则输入firewall-cmd --add-service yourservice将服务放到默认网络上,或者是使用--zone=zonename选择特定网络。

    具体配置请看配置Linux防火墙的几种方式(下)篇,谢谢关注!

    展开全文
  • 资深的 C 语言用户可能熟悉另一不同的 do-while 循环用法,把语句放在 do-while(0) 之中,在循环内部用 break 语句来结束执行循环。以下代码片段示范了此方法: do { if ($i ) { echo "i is not big enough"; ...

    满意答案

    00e27ab806e4881f8254fe7ae8741834.png

    xanewnet

    2014.08.20

    00e27ab806e4881f8254fe7ae8741834.png

    采纳率:55%    等级:10

    已帮助:470人

    do-while 和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和正规的 while 循环主要的区别是 do-while 的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在正规的 while 循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为 FALSE 则整个循环立即终止)。

    do-while 循环只有一种语法:

    $i = 0;

    do {

    echo $i;

    } while ($i > 0);

    ?>

    以上循环将正好运行一次,因为经过第一次循环后,当检查表达式的真值时,其值为 FALSE($i 不大于 0)而导致循环终止。

    资深的 C 语言用户可能熟悉另一种不同的 do-while 循环用法,把语句放在 do-while(0) 之中,在循环内部用 break 语句来结束执行循环。以下代码片段示范了此方法:

    do {

    if ($i < 5) {

    echo "i is not big enough";

    break;

    }

    $i *= $factor;

    if ($i < $minimum_limit) {

    break;

    }

    echo "i is ok";

    /* process i */

    } while(0);

    ?>

    如果还不能立刻理解也不用担心。即使不用此“特性”也照样可以写出强大的代码来。

    add a note User Contributed Notes

    do-while

    rlynch at lynchmarks dot com

    09-May-2006 05:02

    I would not be as pessimistic about the potential uses of the do-while construction, myself. It is just about the only elegant way of coding blocks that must have at least a single pass of execution, and where various assessments can short-circuit the logic, falling through.

    Consider the example of prompting a user to input a value for a variable. The code in while() format might be:

    $result = null ;

    while( $result === null )

    {

    print "Gimme some skin, bro!> ";

    $result = trim( fgets( $stdin ) );

    if( $result === '' )

    $result = null ;

    }

    ?>

    Well, that works. Lets try it in do-while format:

    $result = '';

    do {

    print "Gimme some skin, bro!> ";

    $result = trim( fgets( $stdin ) );

    }

    while( $result === '' );

    ?>

    See how it just "reads better"? You say to yourself, "set up $result, print a message, get a response, and continue do to that while the nincompoop fails to enter anything."

    Likewise, that "Advanced C" programming example turns out to be the elegant "no goto" way to run through exceptionally involved pieces of block-logic, with a trivial 'break' able to get one all the way past all the unnecessary code in one fell swoop.

    For just about every other 'while()' block application, it shouldn't be used. While() is what we expect, and while() is what we should use ... except when the surprisingly common "but we have to do it at least once" criterion pops up its pretty head.

    rlynch AT lynchmarks DOT com

    00分享举报

    展开全文
  • 不过这种方法个限制:1、 必须使用TCP/IP协议2、 不能使用高级管理工具,比如Oracle Connection Manager3、 客户端必须有相应的扩展命名服务,比如DNS或HOSTS文件4、 LISTENER的监听端口必须是15215、 服务器...

    一、HOSTNAME方法

    对于网络结构比较单一,Oracle服务器比较少的情况下,可以使用HOSTNAME方法。不过这种方法有几个限制:

    1、 必须使用TCP/IP协议

    2、 不能使用高级管理工具,比如Oracle Connection Manager

    3、 客户端必须有相应的扩展命名服务,比如DNS或HOSTS文件

    4、 LISTENER的监听端口必须是1521

    5、 服务器LISTENER必须设置GLOBAL_NAME

    第5点在Oracle10g SG中明确指定,但经下面测试,也可以不设置GLOBAL_NAME。

    下面谈谈使用HOSTNAME连接Oracle数据库的方法:

    1、不设置GLOBAL_NAME方式

    1)可以使.Net MANAGER工具配置概要文件,选择HOSTNAME,也可以直接编辑SQ.Net.ORA文件,只保留HOSTNAME方法,如下:

    # sq.Net.ora.Network Configuration File:

    G:/Oracle/product/10.2.0/db_1.NetWORK/ADMIN/sq.Net.ora

    #SQ.Net.AUTHENTICATION_SERVICES = (NTS)

    NAMES.DIRECTORY_PATH= (HOSTNAME)

    2)配置HOSTS文件,位于C:/WINDOWS/system32/drivers/etc

    # Copyright (c) 1993-1999 Microsoft Corp.

    #

    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

    # For example:

    #

    #      102.54.94.97     rhino.acme.com          # source server

    #       38.25.63.10     x.acme.com              # x client host

    127.0.0.1       localhost

    192.168.0.172   ora10g          #Oracle DATABASE SERVER

    此处的ora10g 就是客户端进行连接时@后面的连接串,即为Oracle的SID_NAME。

    3)服务器端LISTENER,如下:

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (SID_NAME = PLSExtProc)

    (Oracle_HOME = G:/Oracle/product/10.2.0/db_1)

    (PROGRAM = extproc)

    )

    (SID_DESC =

    (SID_NAME = ora10g)

    )

    )

    LISTENER =

    (DESCRIPTION_LIST =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = linyuefe)(PORT = 1521))

    )

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

    )

    4)连接Oracle

    SQL> conn gddc/gddc@ora10g; --Oracle服务器的SID_NAME

    已连接。

    验证一下是不是通过HOSTNAME方法进行连接的,我们把HOSTS文件中的IP地址修改成192.168.0.173,如下:

    192.168.0.173   ora10g          #Oracle DATABASE SERVER

    再进行连接:

    SQL> disconn

    从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options 断开

    SQL> conn gddc/gddc@ora10g;

    ERROR:

    ORA-12170: TNS: 连接超时

    2、设置GLOBAL_NAME方式

    1)设置HOSTS文件,如下:

    # Copyright (c) 1993-1999 Microsoft Corp.

    #

    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

    # For example:

    #

    #      102.54.94.97     rhino.acme.com          # source server

    #       38.25.63.10     x.acme.com              # x client host

    127.0.0.1       localhost

    192.168.0.172   linyuefe --linyuefe为目标Oracle服务器的计算机名

    2)服务器端LISTENER,设置GLOBAL_NAME,如下:

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (SID_NAME = PLSExtProc)

    (Oracle_HOME = G:/Oracle/product/10.2.0/db_1)

    (PROGRAM = extproc)

    )

    (SID_DESC =

    (GLOBAL_DBNAME = linyuefe) –linyuefe为服务器计算机名

    (SID_NAME = ora10g)

    )

    )

    LISTENER =

    (DESCRIPTION_LIST =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = linyuefe)(PORT = 1521))

    )

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

    )

    3)连接Oracle

    SQL> conn gddc/gddc@linyuefe;

    已连接。

    二、使用EZCONNECT方法

    EZCONNECT方法Oracle10G新推出的功能,对于客户端不需要任何配置,不过有以下几个限制:

    1、客户端必须安装Oracle.Net Services 10g

    2、客户端和服务器端必须支持TCP/IP协议

    下面介绍EZCONNECT的用法:

    1) 设置概要文件,如下 :

    # sq.Net.ora.Network Configuration File: G:/Oracle/product/10.2.0/db_1.NetWORK/ADMIN/sq.Net.ora

    NAMES.DIRECTORY_PATH= (EZCONNECT)

    2) 进行连接

    SQL> conn gddc/gddc@linyuefe:1521/ora10g;

    已连接。

    其中,linyuefe为服务器机器名也可以是IP地址,1521为监听端口(不指定的话默认为1521),ora10g为数据库Service Name。

    --使用默认端口

    SQL> disconn

    从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options 断开

    SQL> conn gddc/gddc@linyuefe/ora10g;

    已连接。

    --使用IP

    SQL> disconn

    从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options 断开

    SQL> conn gddc/gddc@192.168.0.172/ora10g;

    已连接。

    --只使用主机名

    SQL> conn gddc/gddc@linyuefe;

    已连接。

    三、TNSNAME方法

    这种方法是平时使用得最多的方法,在这里也不做介绍

    展开全文
  • Spring 有哪几种依赖注入方式?官方是怎么建议使用的呢? 前言 本章的内容主要是想探讨我们在进行Spring 开发过程当中,关于依赖注入的几个知识点。感兴趣的读者可以先看下以下问题: @Autowired, @Resource, @...

    Java面试题精选 今天

    Spring 有哪几种依赖注入方式?官方是怎么建议使用的呢?
    前言
    本章的内容主要是想探讨我们在进行Spring 开发过程当中,关于依赖注入的几个知识点。感兴趣的读者可以先看下以下问题:
    @Autowired, @Resource, @Inject 三个注解的区别
    当你在使用@Autowired时,是否有出现过Field injection is not recommended的警告?你知道这是为什么吗?
    Spring 依赖注入有哪几种方式?官方是怎么建议使用的呢?
    如果你对上述问题都了解,那我个人觉得你的开发经验应该是不错的
    下面我们就依次对上述问题进行解答,并且总结知识点。
    @Autowired, @Resource, @Inject 三个注解的区别
    Spring 支持使用@Autowired, @Resource, @Inject 三个注解进行依赖注入。下面来介绍一下这三个注解有什么区别。
    @Autowired
    @Autowired为Spring 框架提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired。
    这里先给出一个示例代码,方便讲解说明:
    public interface Svc {

    void sayHello();
    

    }

    @Service
    public class SvcA implements Svc {

    @Override
    public void sayHello() {
        System.out.println("hello, this is service A");
    }
    

    }

    @Service
    public class SvcB implements Svc {

    @Override
    public void sayHello() {
        System.out.println("hello, this is service B");
    }
    

    }

    @Service
    public class SvcC implements Svc {

    @Override
    public void sayHello() {
        System.out.println("hello, this is service C");
    }
    

    }
    测试类:
    @SpringBootTest
    public class SimpleTest {

    @Autowired
    // @Qualifier("svcA")
    Svc svc;
    
    @Test
    void rc() {
        Assertions.assertNotNull(svc);
        svc.sayHello();
    }
    

    }
    装配顺序:
    1.按照type在上下文中查找匹配的bean
    查找type为Svc的bean 复制代码
    2.如果有多个bean,则按照name进行匹配
    查找name为svc的bean 复制代码
    查找name为svcA的bean 复制代码
    a.如果有@Qualifier注解,则按照@Qualifier指定的name进行匹配
    b.如果没有,则按照变量名进行匹配
    3.匹配不到,则报错。(@Autowired(required=false),如果设置required为false(默认为true),则注入失败时不会抛出异常)
    @Inject
    在Spring 的环境下,@Inject和@Autowired 是相同的,因为它们的依赖注入都是使用AutowiredAnnotationBeanPostProcessor来处理的。

    @Inject是 JSR-330 定义的规范,如果使用这种方式,切换到Guice也是可以的。
    Guice 是 google 开源的轻量级 DI 框架
    如果硬要说两个的区别,首先@Inject是Java EE包里的,在SE环境需要单独引入。另一个区别在于@Autowired可以设置required=false而@Inject并没有这个属性。
    @Resource
    @Resource是JSR-250定义的注解。Spring 在 CommonAnnotationBeanPostProcessor实现了对JSR-250的注解的处理,其中就包括@Resource。

    @Resource有两个重要的属性:name和type,而Spring 将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
    装配顺序:
    1.
    如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
    2.
    3.
    如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
    4.
    5.
    如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。
    6.
    7.
    如果既没有指定name,又没有指定type,则默认按照byName方式进行装配;如果没有匹配,按照byType进行装配。
    8.
    IDEA 提示 Field injection is not recommended
    在使用IDEA 进行Spring 开发的时候,当你在字段上面使用@Autowired注解的时候,你会发现IDEA 会有警告提示:
    Field injection is not recommended
    Inspection info: Spring Team Recommends: “Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies”.

    翻译过来就是这个意思:
    不建议使用基于 field 的注入方式。
    Spring 开发团队建议:在你的Spring Bean 永远使用基于constructor 的方式进行依赖注入。对于必须的依赖,永远使用断言来确认。
    比如如下代码:
    @Service
    public class HelpService {
    @Autowired
    @Qualifier(“svcB”)
    private Svc svc;

    public void sayHello() {
        svc.sayHello();
    }
    

    }

    public interface Svc {
    void sayHello();
    }

    @Service
    public class SvcB implements Svc {
    @Override
    public void sayHello() {
    System.out.println(“hello, this is service B”);
    }
    }
    将光标放到@Autowired处,使用Alt + Enter 快捷进行修改之后,代码就会变成基于Constructor的注入方式,修改之后:
    @Service
    public class HelpService {
    private final Svc svc;

    @Autowired
    public HelpService(@Qualifier("svcB") Svc svc) {
        // Assert.notNull(svc, "svc must not be null");
        this.svc = svc;
    }
    
    public void sayHello() {
        svc.sayHello();
    }
    

    }
    如果按照Spring 团队的建议,如果svc是必须的依赖,应该使用Assert.notNull(svc, “svc must not be null”)来确认。
    修正这个警告提示固然简单,但是我觉得更重要是去理解为什么Spring 团队会提出这样的建议?直接使用这种基于 field 的注入方式有什么问题?

    首先我们需要知道,Spring 中有这么3种依赖注入的方式:

    基于 field 注入(属性注入)


    基于 setter 注入


    基于 constructor 注入(构造器注入)

    1. 基于 field 注入
      所谓基于 field 注入,就是在bean的变量上使用注解进行依赖注入。本质上是通过反射的方式直接注入到field。这是我平常开发中看的最多也是最熟悉的一种方式,同时,也正是 Spring 团队所不推荐的方式。比如:
      @Autowired
      private Svc svc;
    2. 基于 setter 方法注入
      通过对应变量的setXXX()方法以及在方法上面使用注解,来完成依赖注入。比如:
      private Helper helper;

    @Autowired
    public void setHelper(Helper helper) {
    this.helper = helper;
    }
    注:在 Spring 4.3 及以后的版本中,setter 上面的 @Autowired 注解是可以不写的。
    3. 基于 constructor 注入
    将各个必需的依赖全部放在带有注解构造方法的参数中,并在构造方法中完成对应变量的初始化,这种方式,就是基于构造方法的注入。比如:
    private final Svc svc;

    @Autowired
    public HelpService(@Qualifier(“svcB”) Svc svc) {
    this.svc = svc;
    }
    在 Spring 4.3 及以后的版本中,如果这个类只有一个构造方法,那么这个构造方法上面也可以不写 @Autowired 注解。
    基于 field 注入的好处
    正如你所见,这种方式非常的简洁,代码看起来很简单,通俗易懂。你的类可以专注于业务而不被依赖注入所污染。你只需要把@Autowired扔到变量之上就好了,不需要特殊的构造器或者set方法,依赖注入容器会提供你所需的依赖。
    基于 field 注入的坏处
    成也萧何败也萧何
    基于 field 注入虽然简单,但是却会引发很多的问题。这些问题在我平常开发阅读项目代码的时候就经常遇见。

    容易违背了单一职责原则 使用这种基于 field 注入的方式,添加依赖是很简单的,就算你的类中有十几个依赖你可能都觉得没有什么问题,普通的开发者很可能会无意识地给一个类添加很多的依赖。但是当使用构造器方式注入,到了某个特定的点,构造器中的参数变得太多以至于很明显地发现something is wrong。拥有太多的依赖通常意味着你的类要承担更多的责任,明显违背了单一职责原则(SRP:Single responsibility principle)。

    这个问题在我司的项目代码真的很常见。


    依赖注入与容器本身耦合

    依赖注入框架的核心思想之一就是受容器管理的类不应该去依赖容器所使用的依赖。换句话说,这个类应该是一个简单的POJO(Plain Ordinary Java Object)能够被单独实例化并且你也能为它提供它所需的依赖。

    这个问题具体可以表现在:


    你的类和依赖容器强耦合,不能在容器外使用


    你的类不能绕过反射(例如单元测试的时候)进行实例化,必须通过依赖容器才能实例化,这更像是集成测试


    不能使用属性注入的方式构建不可变对象(final 修饰的变量)

    Spring 开发团队的建议
    Since you can mix constructor-based and setter-based DI, it is a good rule of thumb to use constructors for mandatory dependencies and setter methods or configuration methods for optional dependencies.
    简单来说,就是

    强制依赖就用构造器方式


    可选、可变的依赖就用setter 注入

    当然你可以在同一个类中使用这两种方法。构造器注入更适合强制性的注入旨在不变性,Setter注入更适合可变性的注入。

    让我们看看Spring 这样推荐的理由,首先是基于构造方法注入,
    The Spring team generally advocates constructor injection as it enables one to implement application components as immutable objects and to ensure that required dependencies are not null. Furthermore constructor-injected components are always returned to client (calling) code in a fully initialized state. As a side note, a large number of constructor arguments is a bad code smell, implying that the class likely has too many responsibilities and should be refactored to better address proper separation of concerns.
    Spring 团队提倡使用基于构造方法的注入,因为这样一方面可以将依赖注入到一个不可变的变量中 (注:final 修饰的变量),另一方面也可以保证这些变量的值不会是 null。此外,经过构造方法完成依赖注入的组件 (注:比如各个 service),在被调用时可以保证它们都完全准备好了。与此同时,从代码质量的角度来看,一个巨大的构造方法通常代表着出现了代码异味,这个类可能承担了过多的责任。
    而对于基于 setter 的注入,他们是这么说的:
    Setter injection should primarily only be used for optional dependencies that can be assigned reasonable default values within the class. Otherwise, not-null checks must be performed everywhere the code uses the dependency. One benefit of setter injection is that setter methods make objects of that class amenable to reconfiguration or re-injection later.
    基于 setter 的注入,则只应该被用于注入非必需的依赖,同时在类中应该对这个依赖提供一个合理的默认值。如果使用 setter 注入必需的依赖,那么将会有过多的 null 检查充斥在代码中。使用 setter 注入的一个优点是,这个依赖可以很方便的被改变或者重新注入。
    小结
    以上就是本文的所有内容,希望阅读本文之后能让你对Spring 的依赖注入有更深的理解。
    如果本文有帮助到你,希望能点个赞,这是对我的最大动力
    参考

    Setter-based dependency injection[1]


    Field Dependency Injection Considered Harmful[2]


    IDEA 警告 Field injection is not recommended[3]

    参考资料
    [1]
    https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/beans.html#beans-setter-injection: https://link.juejin.cn?target=https%3A%2F%2Fdocs.spring.io%2Fspring%2Fdocs%2F4.2.x%2Fspring-framework-reference%2Fhtml%2Fbeans.html%23beans-setter-injection
    [2]
    https://www.vojtechruzicka.com/field-dependency-injection-considered-harmful/: https://link.juejin.cn?target=https%3A%2F%2Fwww.vojtechruzicka.com%2Ffield-dependency-injection-considered-harmful%2F
    [3]
    https://boris1993.github.io/projects/java/coding-tips/idea-warninig-field-injection-is-not-recommended.html: https://link.juejin.cn?target=https%3A%2F%2Fboris1993.github.io%2Fprojects%2Fjava%2Fcoding-tips%2Fidea-warninig-field-injection-is-not-recommended.html
    感谢阅读,希望对你有所帮助 😃

    展开全文
  • 不过这种方法个限制:1、 必须使用TCP/IP协议2、一、HOSTNAME方法对于网络结构比较单一,Oracle服务器比较少的情况下,可以使用HOSTNAME方法。不过这种方法个限制:1、 必须使用TCP/IP协议2、 不能使用高级...
  • 我最近接管了一个用Python编写并使用网页.py. 我创建了一个类,我想导入,但是我得到了“TypeError:'module'object is not callable”错误。所有的.py模块都存储在一个名为“lib”的目录中。lib目录中有以下模块-...
  • ARMA模型的几种定阶方法摘 要本文针对自回归滑动平均(ARMA )过程的参数估计和定阶,把 Box-Jenkins 方法和 BIC 准则与系统的定阶方法加以结合,详细地介绍了基于线性估计和自回归定阶准则的方法(ARCRI)和公因子检验...
  • 内存溢出的几种原因和解决办法

    千次阅读 2021-01-08 16:51:40
    使用ByteBuffer中的allocateDirect()的时候会用到,很多javaNIO的框架中被封装为其他的方法:java.lang.OutOfMemoryError: Direct buffer memory 如果你在直接或间接使用了ByteBuffer中的allocateDirect方法的时候...
  • 在查看执行计划中,大家熟知的oracle表的连接方式有几种主要表连接嵌套循环连接 排序合并连接 哈希连接三种,具体的如何使用这里就不用分析啦,google一下多得数不清楚,下面在这里通过表格来说明一下他们几个之间的...
  • 导读:数据库性能优化最主要的就是SQL优化,SQL优化的关键离不开三点:表的连接方式、访问路径和执行顺序,本文重点介绍几种常见的连接方式。多表关联查询,查询优化器的执行步骤具体如下。1)访...
  • 这主要是因为,在linux中有这么一思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。 所以 空闲内存=free+buffers+cached=total-used 通过...
  • 1 、使用jdk的Timer和TimerTask实现 可以实现简单的间隔执行任务,无法实现按日历去调度执行任务。 2、使用Quartz实现 Quartz 是一个异步任务调度框架,功能丰富,可以实现按日历调度。 3、使用Spring Task实现 ...
  • 方法一 登陆账号 curl 'https://signon.jgi.doe.gov/signon/create' --data-urlencode 'login=*****' --data-urlencode 'password=*****' -c cookies > /dev/null # ****处修改为账号与密码 下载所有文件的列表...
  • 1) 利用CONVERTER, 或第三方工具, 如 Platespin, Vizioncore 的产品等。2) 在VCB PROXY服务器... 这里主要说说第3, 也是ESX管理中最常用的1. vcbMounter是ESX3附带的VM备份工具。 它可以对运行中的VM进行热备...
  • 本文提供了几种方法。一. bigKeys这是redis-cli自带的一个命令。对整个redis进行扫描,寻找较大的key。例:redis-cli -h b.redis -p 1959 --bigkeys输出# Scanning the entire keyspace to find biggest ke...
  • 判断进程是否存在的几种方法 参考 判断进程是否存在的几种方法 注意 通过 pid 去判断一个程序是否还在运行并不是很妥当,因为: 因为内核会在进程消亡时回收进程ID,这个 ID 可能被分配给其他进程,所以随着时间...
  • 前言在Android开发中我们可能会有延时执行某个操作的需求,例如我们启动应用的时候,一开始呈现的是一个引导页面,过了两三秒后,会自动跳转到主界面。这就是一个延时操作。...1.实现延迟的几种方法?答:1.java.u...
  • --查询表空间使用情况SELECT Upper(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D....
  • 原标题:Linux查看分区文件系统类型的几种方法在Linux 中如何查看分区的文件系统类型,下面总结几种查看分区文件系统类型的方法。1、df -T 命令查看这个是最简单的命令,文件系统类型在Type列输出。只可以查看已经...
  • 年前尝试过用julia调用python代码(函数),虽然都用PyCall,看起来很方便,但是系统性的总结却不多。 1、julia调用python现成库中函数 # 调用python中现有的库 using PyCall math = pyimport("math") v = math....
  • UE4 移动物体的几种方法

    千次阅读 2020-12-19 12:04:31
    SetActorLocation()2,AActor::AddActorWorldOffset(), AActor::AddActorLocalOffset()AddActorWorldOffset与AddActorLocalOffset区别:如果期望Actor沿着某个世界坐标系方向移动,那么使用AddActorWorld...
  • 第一种方法:df命令# df -hTFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs .9G .9G % /devtmpfs tmpfs .9G .0K .9G % /dev/shmtmpfs tmpfs .9...
  • 20210506“收听”22kHz以下的无线电波的几种简单方法 时间:2021-05-06 作者:Giovanni Di Maria 在VLF频段观察频谱图无疑是项非常有趣且神秘的活动,至少在活动的最初几天,即使在晚上,也都会让你沉浸在PC上。...
  • UE4 移动物体的几种方法 1,Actor->SetActorLocation Actor->SetActorLocation() 2,AActor::AddActorWorldOffset(), AActor::AddActorLocalOffset() AddActorWorldOffset与AddActorLocalOffset区别:...
  • 与大家分享VMware虚拟机热备份的几种方法VMware虚拟机热备份的几种方法1) 利用CONVERTER, 或第三方工具, 如 Platespin, Vizioncore 的产品等。2) 在VCB PROXY服务器上通过VCB来热备3) 或是在ESX的SERVICE CONSOLE...
  • 1 Oracle 中的Goto 用法:declarex number;beginx:=10; --定义的初始值<> --循环点x:= x-2; -- 循环的处理条件dbms_output.put_line('结果x是:'||x); -- 循环一次打印一次if x>0 thenGOTO repeat_loop; --...
  • mysql跳过大量replication错误的几种方法(错误大家都不想见到,但是见到了也得想办法处理):1,使用pt-slave-restart脚本地址:http://www.percona.com/doc/percona-toolkit/pt-slave-restart.html推荐使用这种方法...
  • 1 Promise Promise有一个缺点是一旦创建无法取消,所以本质上Promise是无法被终止的. ...方法是在then/catch返回一个新的Promise实例,并保持pending状态: new Promise((resolve, reject) => { setTimeout(() =

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,374
精华内容 66,949
关键字:

used几种用法