精华内容
下载资源
问答
  • 目录 ...解释器模式(Interpreter Pattern):定义语言的文法,并且建立一个解释器来解释改语言中的句子,这里的“语言”意思是规定格式语法的代码,所以解释器模式是一种类行为型模式 二、模...

    一、模式定义

    解释器模式(Interpreter Pattern):定义语言的文法,并且建立一个解释器来解释改语言中的句子,这里的“语言”意思是规定格式和语法的代码,所以解释器模式是一种类行为型模式

    二、模式角色

    • Context: 环境类
    • Client: 客户类
    • AbstractExpression: 抽象表达式
    • TerminalExpression: 终结符表达式
    • NonterminalExpression: 非终结符表达式

    三、模式分析

    模式表示,可以使用文法规则或抽象语法树来表示语言

    文法规则实例:

    • expression ::= value | symbol
    • symbol ::= expression '+' expression | expression '-' expression
    • value ::= an integer //一个整数值

    在文法规则定义中可以使用一些符号来表示不同的含义,如使用“|”表示或,使用“{”和“}”表示组合,使用“*”表示出现0次或多次等,其中使用频率最高的符号是表示或关系的“|” 。

    除了使用文法规则来定义一个语言,在解释器模式中还可以通过一种称之为抽象语法树(Abstract Syntax Tree, AST)的图形方式来直观地表示语言的构成,每一棵抽象语法树对应一个语言实例。
    在这里插入图片描述

    四、典型例子

    典型的解释器模式例子:

    抽象表达式类:

    public abstract class AbstractExpression
    {
        public abstract void interpret(Context ctx);
    } 
    

    终结符表达式类:

    public class TerminalExpression extends AbstractExpression
    {
        public void interpret(Context ctx)
        {
            //对于终结符表达式的解释操作
        }
    } 
    

    非终结符表达式类:

    public class NonterminalExpression extends AbstractExpression
    {
        private AbstractExpression left;
        private AbstractExpression right;
        
        public NonterminalExpression(AbstractExpression left,AbstractExpression right)
        {
            this.left=left;
            this.right=right;
        }
        
        public void interpret(Context ctx)
        {
            //递归调用每一个组成部分的interpret()方法
            //在递归调用时指定组成部分的连接方式,即非终结符的功能
        }   
    } 
    

    环境类代码:

    public class Context
    {
        private HashMap map = new HashMap();
        public void assign(String key, String value)
        {
            //往环境类中设值
        }
    public String lookup(String key)    
    {
            //获取存储在环境类中的值
        }
    } 
    

    例子来自《设计模式》一书

    转载于:https://www.cnblogs.com/mzq123/p/10703067.html

    展开全文
  • 在我们开始讨论简洁代码的细节之前,让我们先来了解一下简洁代码是什么意思。其实,并没有一个好的答案能解释这个问题。在编程中,这个问题涉及面很广,因此产生了一些默认的规则。但是,每种编程语言范式都呈现.....

    62bc0676d2514fac8bbe79d0383427b4.png

    1 概述

    在本文中,我们将介绍编写简洁代码的原则或约定。我们还将了解为什么简洁的代码很重要,以及如何在Java中实现这一点。此外,我们将找找看是否有什么可用的工具来帮助我们。

    2 什么是简洁代码?

    在我们开始讨论简洁代码的细节之前,让我们先来了解一下简洁代码是什么意思。其实,并没有一个好的答案能解释这个问题。

    在编程中,这个问题涉及面很广,因此产生了一些默认的规则。但是,每种编程语言和范式都呈现出它们自己的一套细微差别,这就要求我们在实践中采用合适的规则。

    总的来说,简洁的代码就是任何开发人员都能轻松阅读和修改。虽然听起来像是过度简化了这一概念,但接下来我们将在本文中看到这是如何构建起来的。

    Martin Fowler,他曾这样描述简洁代码:

    任何傻瓜都能写出让计算机理解的代码。优秀的程序员才会编写出人类能够理解的代码。

    3 为什么要关心简洁的代码?

    编写简洁的代码是个人习惯问题,但更是个技巧问题。作为一个开发者,我们的经验和知识,日积月累,不断成长。

    但是,我们必须要扪心自问,为什么我们要致力于更加简洁的代码呢?很多人可能会觉得这将使得代码更易阅读,但这就足够了吗?

    简洁的编码原则更有助于我们达成软件开发原本期望的目标。于此,让我们进一步理解它:

    •    更容易维护代码库:任何软件开发的生命周期内,我们都需要对其进行修改和维护,而简洁的代码更易于开发者去修改和维护。

    •    更容易排除故障:由于各种各样的原因,软件可能会出现意外的行为。它可能时好时坏,而使用简洁编码原则开发的软件更容易排除问题。

    •    更快的上手速度:在软件开发的生命周期中,不同开发人员都会创建、更新和维护它,开发人员可能会在不同的时间点加入。这便需要更快的上手速度来提高效率,而简洁的代码有助于实现这一目标。

    4 简洁代码的特征

    使用简洁的编码原则编写的代码库有一些特征。我们来看下这些特征:

    •    突出重点:编写的代码用来解决特定的问题,严禁去做与它所要解决的问题无关的事情。这适用于代码库中的所有抽象的级别,如方法、类、包或模块。

    •    简单:这是简洁代码最重要和也容易被忽略的特性。代码库的复杂性不断增加使它们更容易出错,并且难于阅读和维护。因此,软件的设计和实现必须尽可能的简单,这样才能帮助我们达到预期的效果。

    •    可测试:简洁的代码虽然简短,但必须解决紧要的问题。它最好使用自动化的方式能够直观且简单的去测试我们的代码库。这有助于建立代码库的基准行为,并使更改代码库更容易,并且不会破坏任何内容。

    这些是帮助我们实现上文所述目标的方法。与后期重构相比,在开发起始考虑这些特征是大有裨益的。这将降低软件生命周期的总体成本。

    5 用Java编写简洁的代码

    现在我们已经了解了足够多的背景知识,接下来介绍如何在Java中使用那些简洁编码原则。Java提供了许多可以帮助我们编写简洁代码的实例。我们将在不同的应用中对它们进行分类总结,并了解如何使用这些实例编写简洁的代码。

    5.1 项目结构

    虽然Java不强制任何项目结构,但是遵循一致的模式来组织源文件、测试、配置、数据和其他代码组件是很有用的。Maven是一种流行的Java构建工具,它规定了特定的项目结构。虽然我们可能不使用Maven,但遵守惯例总是有益的。

    以下是Maven建议我们创建的一些文件夹:
    •    src/main/java: 源文件
    •    src/main/resources:资源文件,比如配置文件
    •    src/test/java:测试源文件
    •    src/test/resources:测试资源文件,比如配置文件

    5.2. 命名约定

    遵循命名约定可以大大提高代码的可读性和可维护性。Spring的创建者Rod Johnson强调了Spring中命名约定的重要性:

    “… 如果你知道某个东西做的事情是什么,那么你很有可能猜到它的Spring类或接口的名称 …”
    在Java中命名时,规定了一组要遵守的规则。一个格式良好的名称不仅有助于阅读代码,而且还传达了很多关于代码意图的信息。我们来举几个例子:

    •    类:在面向对象概念中,类是对象的蓝图(即表现形式),通常表示现实世界的对象。因此,用名词作为类的名称是有意义的:

    public class Customer {
    }

    •    变量: Java中的变量描述了类创建的对象的属性。因此变量的名称应该清楚地描述变量的含义:

    public class Customer {
        private String customerName;
    }

    •    方法:Java中的方法是类的一部分,因此通常表示对类创建的对象的属性进行的操作。因此,使用动词来命名方法是很有用的:

    public class Customer {
        private String customerName;
        public String getCustomerName() {
            return this.customerName;
        }
    }

    虽然我们只讨论了如何在Java中命名标识符,不过,还有其他一些约定成俗的规则,比如驼峰式大小写,还有很多关于接口、枚举和常量命名的约定,我们都应该注意它们的可读性。

    5.3. 源文件结构

    源文件中包含不同的元素。虽然Java编译器强制执行一些结构,但大部分都是可变的。不过遵循在源文件中放置元素的特定顺序可以显著提高代码的可读性。可以参考很多流行的风格指南,比如谷歌的和Spring的。

    我们看下源文件中元素的典型排序应该是什么样的:
    •    Package statement  //包声明
    •    Import statements  //导入语句
    •    All static imports  //所有静态导入
    •    All non-static imports  //所有非静态导入
    •    Exactly one top-level class //只有一个顶级类
    •    Class variables //类变量
    •    Instance variables  //实例变量
    •    Constructors  //构造函数
    •    Methods  //方法

    除此之外,还可以根据功能或范围对方法进行分组。虽然没有统一的约定,但我们需要规定一次,然后始终如一地遵循。
    让我们来看一个格式良好的源文件:

    /src/main/java/com/baeldung/application/entity/Customer.java

    package com.baeldung.application.entity;

    import java.util.Date;

    public class Customer {
        private String customerName;
        private Date joiningDate;
        public Customer(String customerName) {
            this.customerName = customerName;
            this.joiningDate = new Date();
        }

        public String getCustomerName() { 
            return this.customerName; 
        }

        public Date getJoiningDate() {
            return this.joiningDate;
        }
    }

    5.4. 空白

    众所周知,短段落比大段文字更容易阅读和理解。这同样适用于阅读代码方面,放置良好且一致的空格和空白行可以增强代码的可读性。

    我们的思想是在代码中引入逻辑分组,这有助于在阅读代码时思考其过程。这并没有一个单一的规则可以采用,而是一套通用的以可读性为中心的指导方针和指导思想:

    •    在静态块、字段、构造函数和内部类之前先空两行
    •    方法的签名有多行时在其后空一行
    •    保留关键字(如if、for、catch)与其后的圆括号用单个空格隔开
    •    保留关键字(如else)和封闭括号(如“{”或“}”)用单个空格隔开
    这里列出的例子不多,只是提供一个方向。

    5.5. 缩进

    虽微不足道,但几乎所有开发人员都认为有良好缩进的代码更容易阅读和理解。Java中没有统一的代码缩进约定。因此,重点就是要么采用一个流行的约定,要么定义一个私有约定,然后整个团队都去遵循它。

    让我们来看一些重要的缩进标准:

    •    一个典型的标准是使用四个空格来作为一个缩进单元。需注意的是,有些指南建议使用制表符而不是空格作为缩进单元。这两种方式都可以,但关键是要保持一致性!
    •    行长度通常都有一个上限,因为现在开发人员使用的屏幕更大,所以这个上限可以设置得比传统的80更高些。
    •    最后一点,由于许多表达式都不适合在一行中,我们必须不断分割它们到不同的行中:
    •    链式调用方法时.号之前换行
    •    在表达式的运算符前换行
    •    换行后缩进以提高可读性
    让我们来看一个例子:

    List customerIds = customer.stream()
      .map(customer -> customer.getCustomerId())
      .collect(Collectors.toCollection(ArrayList::new));

    5.6. 方法参数

    对于常规方法来说,参数是必不可少的。但一长串的参数会使人很难阅读和理解代码。那么,我们应该如何去进行约定呢?让我们来了解下可能对我们有帮助的建议:

    •    限制一个方法接受的参数数量,最多三个参数是比较好的选择。
    •    如果它需要的参数多于推荐的参数时,考虑重构该方法。一般来说,很长的参数列表表明该方法可能要做很多事情。
    •    可以将参数绑定到指定的类型中,但注意不要将不相关的参数放到同一个类型中。
    •    最后,虽然我们应该使用这些建议来评判代码的可读性,但是我们不能太过死板,要灵活运用。
    来看一个例子:

    public boolean setCustomerAddress(String firstName, String lastName, String streetAddress, 
      String city, String zipCode, String state, String country, String phoneNumber) {
    }


    // This can be refactored as below to increase readability

    public boolean setCustomerAddress(Address address) {
    }

    5.7. 硬编码(固定值)

    代码中的硬编码值通常会导致多种副作用。例如,它可能导致重复,从而使修改更加困难。如果需要的值是动态的,通常会导致不良的行为。在大多数情况下,可以通过以下方式之一来替换硬编码值:
    •    使用Java中定义的常量或枚举来替换。
    •    或者,在类级别或在单独的类文件中定义的常量来替换。
    •    如果可能,可以选择配置文件或应用环境中的值来替换。
    我们来看一个例子:

    private int storeClosureDay = 7;

    // This can be refactored to use a constant from Java

    private int storeClosureDay = DayOfWeek.SUNDAY.getValue()

    同样,也没有严格的准则可以去遵循。但是我们必须知道其他人稍后需要阅读和维护此代码。因此,我们应该选择适合自己的约定,并保持一致。

    5.8. 代码注释

    在阅读代码以理解琐碎的内容时,代码注释会很有用。同时,注意不要在注释中包含太多显而易见的内容。这可能会使注释臃肿,从而难以阅读。

    Java允许两种类型的注释:实现注释和文档注释。它们有不同的目的和格式。让我们来更好地理解它们:

    文档/JavaDoc注释

    •    受众群体是代码库的使用者
    •    细节通常是自由实现的,更关注于规范
    •    通常有用且独立于代码库

    实现/块注释

    •    受众群体是开发代码库的开发人员
    •    细节是针对特定场景实现的
    •    通常与代码库一起使用
    那么,我们怎样才能更好地使用它们,使它们变得有用并与所处环境相关呢?
    •    注释应该只是对代码的补充,如果没有注释我们就不能理解代码的话,我们可能需要重构这些代码
    •    应该尽量少的使用块注释来描述重要的设计决策
    •    对大多数类、接口、公共方法和受保护方法应该使用JavaDoc注释
    •    所有的注释都应该格式良好,并有适当的缩进以保证可读性

    我们来看一个有意义的文档注释示例:

    /**This method is intended to add a new address for the customer.However do note that it only allows a single address per zipcode. Hence, this will override any previous address with thesame postal code.*
    @param address 
    an address to be added for an existing customer
    */

    /*
    * This method makes use of the custom implementation of equals 
    * method to avoid duplication of an address with same zip code.
    */

    public addCustomerAddress(Address address) {
    }

    5.9. 记录日志

    任何写代码的人都希望在调试生产代码时获得更多的日志信息。日志的重要性在一般的开发和特殊的维护中怎么强调都不过分。

    Java中有很多用于日志记录的库和框架,包括SLF4J、Logback。虽然它们使日志的记录在代码库中变得微不足道,但是必须关注日志记录的最佳方式。否则日志记录模块可能在维护时成为我们的累赘,而不会提供任何帮助。我们来看看其中一些较好的方法:

    •    避免过多的日志记录,考虑哪些信息可能有助于故障排除
    •    明智地选择日志级别,我们可能希望在生产中选择性地启用不同的日志级别
    •    日志消息中的上下文数据要有非常清晰和描述
    •    使用外部工具对日志消息进行跟踪、聚合和过滤,以便更快地进行分析
    我们来看一个具有正确级别的记录描述性日志的示例:

    logger.info(String.format("A new customer has been created with customer Id: %s", id));

    6 就这些吗?

    尽管上面着重介绍了几种代码格式约定,但这些并不是我们应该了解和关注的唯一约定。可读和可维护的代码受益于日积月累的其他优秀的实践约定。

    随着时间的推移,我们可能会遇到一些有趣的缩写词。它们本质上是将学到的知识浓缩为一个或一组原则,这些原则可以帮助我们编写更好的代码。但是,请注意,我们不应该仅仅因为它们存在就遵循它们。很多时候,它们带来的好处与代码库的大小和复杂性成正比。在采用任何原则之前,我们必须审视我们自己的代码库。更重要的是,我们必须让他们保持一致。

    6.1. SOLID

    SOLID是一个易于记忆的缩写词,它是从编写可理解和可维护的软件的五个原则中提取的:
    •    单一责任原则:我们定义的每个接口、类或方法都应该有一个明确的目标,它应该做一件事情并且做好。这对生产出更小的方法和类十分有效,而且它们也是可测试的。
    •    开闭原则:理想情况下,我们编写的代码应该可以扩展,而修改是封闭的。意思就是一个类应该以一种不需要修改的方式编写,同时,它允许通过继承或组合的方式进行修改。
    •    Liskov替换原则:这个原则的意思是每个子类或派生类都可以替代其父类或基类。这有助于减少代码库中的耦合,从而提高代码库跨平台时的可重用性。
    •    接口隔离原则:实现接口是一种为类提供特定行为的方法。但是,一个类不需要实现它不需要的方法。需要我们做的是定义更小、更集中的接口。
    •    依赖反转原则:根据这个原则,类应该只依赖于抽象,而不依赖于它们的具体实现。这意味着类不应该负责为它们的依赖项创建实例,相反,它们的依赖关系应该注入到类中。

    6.2. DRY & KISS

    DRY代表Don's Repeat Yourself(不要重复)。该原则指出,不应在整个软件中重复执行一段代码。这个原则背后的基本原理是减少代码重复和增加可重用性。然而,我们不能只从字面意思去理解它。某些复制实际上可以提高代码的可读性和可维护性。

    KISS代表“Keep It Simple, Stupid”(笨蛋,保持简单)。这个原则指出,我们应该使代码尽可能简单,这使得它更容易理解和维护。遵循前面提到的一些原则,我们需要保持类和方法的集中和轻量,这将使代码更加简单。

    6.3. TDD

    TDD代表“Test Driven Development(测试驱动开发)”。这是一种编程思想,要求我们只在自动化测试失败时才编写代码。因此,我们必须从自动化测试的设计开发作为起始点。在Java中,有几个框架可以编写自动化的单元测试,比如JUnit和TestNG。

    这样做的好处是巨大的。这使得软件总是按预期工作。由于我们总是从测试开始,所以我们以小块的方式递增地添加工作代码。此外,我们只在新测试或任何旧测试失败时添加代码。这意味着它也会提高可重用性。

    7. 辅助工具

    编写简洁的代码不仅是原则和实践的问题,而且是个人习惯。随着学习和适应能力的发展,我们往往会成为优秀的开发人员。然而,为了在整个大型团队中保持一致性,我们还必须遵循一些强制措施。

    代码审查一直是保持一致性并帮助开发人员通过建设性的反馈意见来成长的好工具。

    在Java生态系统中有几种可用的工具,它们承担了代码审阅者的部分职责。让我们来看下这些工具是什么:

    •    代码格式化:大多数流行的Java代码编辑器,包括Eclipse和IntelliJ,都支持自动的代码格式化。我们可以使用默认的格式规则定义它们,或者用自定义格式规则替换它们。这涉及到许多结构化代码约定。

    •    静态分析工具:有几种用于Java的静态代码分析工具,包括SonarQube、Checkstyle和PMD。它们拥有丰富的规则,可以直接拿来使用,也可以针对特定的项目进行定制。它们在检测违反命名约定和资源泄漏的代码方面非常出色。

    8. 总结

    在本篇文章中,我们已经讨论了简洁代码所体现的重要的编码原则和特征。我们看到了如何在Java开发中采用这些原则。我们还讨论了有助于保持代码可读性和可维护性的其他最佳方法。最后,我们讨论了一些可用的工具来帮助我们完成这项工作。

    总之,需要注意的是,所有这些原则和方法都是为了使我们的代码更简洁。这是一个比较主观的术语,因此必须根据实际场景中的上下文进行评估。

    尽管有许多可以采用的规则,但是我们必须认清我们的团队规模、开发习惯和需求。我们可能不得不自定义或为此设计一套全新的规则。无论情况如何,最重要的是在整个团队组织中保持一致,以获得更多益处。

    Via:https://www.baeldung.com/java-clean-code

    作者:baeldung ,选题:热海,译者:咚咚咚 ,校稿:热海

    长按打开更多惊喜3fe5106aaf7f94b41ab131127edb84c1.png

    896e2c4b1468b5a94f6f5437cfcfbdb6.png

    展开全文
  • 基带调制射频调制

    千次阅读 2015-01-16 19:58:55
    我们常说的信号调制(Modulation),其实在不同的语境(Context)下有着不同的意思。不过不只是初入行的员工,一些老鸟有时也常常会搞混淆。   简单来说,在移动通讯里常常有两个地方涉及到调制,但是意义完全不同。...

    我们常说的信号调制(Modulation),其实在不同的语境(Context)下有着不同的意思。不过不只是初入行的员工,一些老鸟有时也常常会搞混淆。

     

    简单来说,在移动通讯里常常有两个地方涉及到调制,但是意义完全不同。我们以发射机为例加以解释(接收机大体上是相反的过程,通常称为解调)。

     

    第一个调制,俗称为基带调制—发生在数字域上。

     

    基带调制包含两部分:

    1. 数字处理

    编码(不归零码等),校验编码(FEC,CRC),扰码(卷积积分,让能量均匀分布,加强抗干扰能力),这个时候形成一个新的数字码流。

    2. 调制解调

    QPSK,BPSK,QAM等指的就是这部分的调制方式。将信号编码,提高通道利用率,例如QPSK,将两bits的二进制数(00,01,10,11),用四个相位来代表上,达到一次传输的作用。QAM是幅度加相位的调制方式,可以进一步拓宽带宽的利用。在传输中有16QAM,64QAM,256QAM,512QAM,在相同带宽下达到更高的数据传输速率。为进一步提高频谱利用率,将这四个相位信号调制到正交的不相干两个分量上,这就是I和Q信号,形成一个中频信号,就是IF。

     

    其实基带调制的目的,是把需要传输的原始信息在时域、频域,或者码域上进行处理,以达到用尽量小的带宽传输尽量多的信息。很眼熟是吧:没错,这就是香浓定律专注的地方,也是无数算法工程师,DSP工程师忙碌的地方。

     

    完成了这些信号映射,从硬件电路实现上来说,基带调制最终输出IQ信号.

     

    第二个调制,是常说的“射频调制”。

    就是将信号发射到空间。这部分会有一个本振,用来产生发射的RF频率信号,IF信号调制到这个RF射频载波信号上。接下来就是PA,经过PA放大,经过RF匹配电路,耦合到天线发射出去。

    从射频角度来说,这个也可以叫做频谱搬移,其目的是把基带调制的信号搬移到射频频率上,这样信号才能够以无线的方式发射出去。


    展开全文
  • float从字面上的意思就是浮动,这种在印刷排版之类中可能解释的更加贴切。float能让元素从文档流中抽出,它并不占文档流的空间,典型的就是图文混排中文字环绕图片的效果了。并且float这也是目前使用最多的网页布局...

    loat和position这两者并没有孰好孰不好的问题,两者按需使用,各得所需的效果。
    float从字面上的意思就是浮动,这种在印刷排版之类中可能解释的更加贴切。float能让元素从文档流中抽出,它并不占文档流的空间,典型的就是图文混排中文字环绕图片的效果了。并且float这也是目前使用最多的网页布局方式。不过需要注意的是清除浮动是你可能需要注意的地方。并且如果你要考虑到古老的IE6之类的还会有一些bug诸如双边距等等问题。
    而position顾名思义就是定位。他有以下这几种属性:static(默认),relative(相对定位),absolute(绝对定位)和fixed(固定定位)。其中static和relative会占据文档流空间,他们并不是脱离文档的。absolute和fixed是脱离文档流的,不会占据文档流空间。

    比较可以发现,float和position最大的区别其实是是否占据文档流空间的问题。虽然position有absolute和fixed这两个同样不会占据文档流的属性,但是这两个并不适合被用来给整个网页做布局。为什么?因为这样你就得为页面上的每一个元素设置一个xy坐标来定位。

    float布局就显得灵活多了。但是一些特殊的地方搭配relative和absolute布局可以实现更好的效果。因为absolute是基于父级元素的定位,当父级元素是relative的时候,absolute的元素就会是基于它的定位了。比如你可以让一个按钮始终显示在一个元素的右下角。

    如果说到性能问题reflow问题,将元素的position设置为absolute和fixed可以使元素从DOM树结构中脱离出来独立的存在,而浏览器在需要渲染时只需要渲染该元素以及位于该元素下方的元素,从而在某种程度上缩短浏览器渲染时间。所以如果是制作js动画等,用absolute或者fixed定位会更好。

    说得不好的地方请大家补充。总结一句就是不推荐用position来布局整个页面的大框架,而推荐用float或者文档流的默认方式。 
     
    作者:李锦
    链接:https://www.zhihu.com/question/19588854/answer/12309368
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     
     

    共同点:对内联元素设置float或absolute属性,可以让元素脱离文档流(块级元素也可以),并且可以设置其宽高。

    不同点:
    float仍会占据其位置,position会覆盖文档流中的其他元素。

    转载于:https://www.cnblogs.com/zhangchuan09/p/6755100.html

    展开全文
  • 加密算法之DES/AES

    2015-11-21 23:10:55
    加密算法根据密钥分类上来说可以分为对称加密非对称加密两类,对称加密的意思是加密解密都是一个密钥,如DES,非对称加密就是加密解密的密钥不是一个,典型的如RSA,公钥加密私钥解密或者私钥加密公钥解密,...
  • 题意:(把题目意思改为背包解释了)n组物品,一个大小为T的背包。对于每组物品,有物品的数量m,类型s,s=0意思为该组最少放一个物品到背包。s=1意思为最多放一件到背包。s=2意思为随便放(但是每个物品只能放一...
  • 协议:从应用出发,协议可以理解为“规则”,是数据传输数据解释的规则。 典型协议 传输层:常见的有TCP/UDP协议 应用层:常见的有HTTP协议,FTP协议 网络层:常见的有IP协议,ICMP协议,IGMP协议 网络接口层:...
  • WPF 如何在线程中打开子窗体

    千次阅读 2016-03-03 20:51:45
    最近遇到一个问题,在wpf程序的某个线程中打开子窗体时显示“调用线程必须为 STA,因为... Dispatcher的字面意思是“调度员”,很形象地解释了它的作用——处理并发多线程。Dispatcher本身是一个单例模式,构造函
  • 易混淆·的·布局问题

    2018-05-03 00:22:05
    在网页的布局上,经常会存在一行需要并行很多区块的时候,这种情况下我们通常的解决方法就分为元素浮动(float)定位(position)了 float 从字面上的意思就是浮动,这种在印刷排版之类中可能解释的更加贴切。...
  • 学习笔记 | 内生性全面介绍

    千次阅读 2020-09-14 20:55:46
    [2] 金融学里的内生性外生性是什么意思? [3] 内生性的通俗解释 [4] 内生性” 到底是什么鬼? New Yorker告诉你 [5] 内生性问题及其产生原因 以上文章都推荐阅读,本人从[1]、[2]、[3]中学习颇多。 1 内生
  • 问题4-21:有的路由器在广域网相连时,在该路由器的广域网接口处并没有硬件地址,这怎样解释? 问题4-22:IP地址电话号码相比时有何异同之处? 问题4-23:“尽最大努力交付”(best effort delivery)都有哪些含义...
  • PERL语言编程

    2007-06-24 11:55:48
    听起来挺复杂,不过 Perl 的编译器和解释器干这些活效率相当高,我们的编译-运行-修改的过程几乎都是以秒计。再加上 Perl 的许多其他开发特性,这种快速的角色转换很适合做快速原型设计。然后随着你的程序的成熟,你...
  • 问题5-11:“不可靠的交付”(unreliable delivery)“尽最大努力交付”(best effort delivery)是一样的意思吗? 第6章 网络互连 问题6-1:存在多种异构网络对不同网络之间的通信会造成一些麻烦。但为什么世界上还...
  • ”简单理解,格就是穷尽,或者说研究透彻的意思,物即事物道理。所谓格物,就是要推究事物的机理,与上面的“穷理”很类似。与格物常常一起出现的另一个概念是致知。致知的含义是要不断推进自己的知识,由已知而推...
  • java 面试题 总结

    2009-09-16 08:45:34
     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
  •  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
  • 测试培训教材

    2014-04-01 12:10:48
     -测试需求的分析确定。  -测试计划。  -测试设计。  -测试执行。  -测试记录缺陷跟踪。  -回归测试。  -测试总结报告。 一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时...
  • php高级开发教程说明

    2008-11-27 11:39:22
    它是被解释的, P H P 能识别不同的变量类型,但没有严格的类型检查, P H P识别类,但没有结构体类型,类似的例子 很多,但你可能已领会到了关键一点: P H P融合了许多种不同的解决问题的思想,形成了一种全 新的...
  • 第三讲 Linux下的网络服务,配置问题常用工具.................................................................24 一.Linux下的网络服务.....................................................................
  • excel的使用

    2012-11-25 17:06:01
    再比如,公式: =if(SUM(A1:A5>0,SUM(A1:A5),0) 此式就利用了嵌套函数,意思是,当A1至A5的大于0时,返回这个值,如果小于0,那么就返回0。 还有一点要提醒你注意:以上的符号均为半角,而且IF与括号之间...
  • 大概的意思有两点: a. ThreadLocal提供了一种访问某个变量的特殊方式:访问到的变量属于当前线程,即保证每个线程的变量不一样,而同一个线程在任何地方拿到的变量都是一致的,这就是所谓的线程隔离。 b. 如果要...
  • LINGO软件的学习

    2009-08-08 22:36:50
    LINGO是用来求解线性非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

典型解释和意思