精华内容
下载资源
问答
  • msm_we-源码

    2021-03-27 01:56:13
    是什么触发了get_transition_data()正在处理的异常? 什么是“经线”? get_transition_data() 经纱是回收事件 seg_histories到底存储了seg_histories ? 学分 该程序包是使用和项目模板创建的。
  • One of the biggest ... It’s something we can’t easily get more of, but linting can help us make the most out of the time we have. 时间是软件开发中最大的挑战之一。 这我们无法轻易获得的更多...

    One of the biggest challenges in software development is time. It’s something we can’t easily get more of, but linting can help us make the most out of the time we have.

    时间是软件开发中最大的挑战之一。 这是我们无法轻易获得的更多东西,但是棉绒可以帮助我们充分利用自己的时间。

    那么什么是棉绒呢? (So what is linting?)

    lint, or a linter, is a tool that analyzes source code to flag programming errors, bugs, stylistic errors, and suspicious constructs. https://en.wikipedia.org/wiki/Lint(software)

    lintlinter ,是一种分析源代码以标记编程错误,bug,样式错误和可疑结构的工具。 https://zh.wikipedia.org/wiki/林特(软件)

    Simply put, a linter is a tool that programmatically scans your code with the goal of finding issues that can lead to bugs or inconsistencies with code health and style. Some can even help fix them for you!

    简而言之,lint是一种以编程方式扫描您的代码的工具,旨在发现可能导致错误或代码健康状况和样式不一致的问题。 有些甚至可以帮您修复它们!

    Take for instance, the following example:

    例如,以下示例:

    const test = 'I am a test';
    console.log(`Test: ${test}`);
    const test = 'Another one.';

    We’re declaring the constant test twice, which our javascript engine won’t be happy about. With the proper linter settings and watch configuration, instead of getting caught later as an error when the code runs, you’ll immediately get an error through your linter running in the background:

    我们将两次声明常数test ,这对于我们的javascript引擎不会感到满意。 有了正确的lint设置和监视配置,您不会立即在后台运行lint时得到错误,而不会在代码运行时稍后被捕获为错误:

    10:9  error  Parsing error: Identifier 'test' has already been declared
    
       8 |   const test = 'I am a test';
       9 |   console.log(`Test: ${2}`);
    > 10 |   const test = 'Another one.';
         |         ^

    It might be pretty obvious that you have 2 of the same const declarations given this is only 3 lines, but in a more complex application, this can save tons of time having to hunt down a pesky bug that’s not always obvious.

    很显然,由于只有3行,所以您有2个相同的const声明,但是在更复杂的应用程序中,这可以节省大量时间来寻找讨厌的bug(这并不总是很明显)。

    棉绒能提供什么帮助? (What all can linting help with?)

    Lots of things, including but not limited to:

    很多东西 ,包括但不限于:

    • Flagging bugs in your code from syntax errors

      标记语法错误中的错误
    • Giving you warnings when code may not be intuitive

      在代码可能不直观时发出警告
    • Providing suggestions for common best practices

      提供常见最佳做法的建议
    • Keeping track of TODO’s and FIXME’s

      跟踪TODO和FIXME
    • Keeping a consistent code style

      保持一致的代码风格

    Most things you can think of probably already exist in one form or another, and if not, you can even create custom rules that fit your needs!

    您可以想到的大多数事情可能已经以一种或另一种形式存在 ,如果没有,您甚至可以创建适合您需求的自定义规则

    这实际上有什么帮助?我为什么要关心呢? (How is this actually helping or why should I care?)

    Probably the biggest overlying theme of the list above is the fact that these issues will be called out immediately. No longer will these issues creep up on you in the middle of running your app or give someone anxiety during a code review. No longer will you and your reviewer endlessly fight passive aggressively through the comments about whether or not to include a semicolon at the end of JS statements (you should 🔥).

    上面列表中最大的潜在主题是这些问题将立即被消除。 在运行应用程序的过程中,这些问题不再会蔓延到您身上,也不会在代码审查过程中让您感到焦虑。 您和您的审阅者将不再通过有关是否在JS语句末尾添加分号的注释来进行无休止的消极战斗( 您应该 🔥)。

    All of those moments that stop you from being productive because of a silly syntax error or the micro-interactions you and your teammates have during a review take time. They add up and end up taking away the time you can spend fixing another bug or developing the next great feature of your product.

    所有这些由于愚蠢的语法错误或您和您的队友在审阅过程中发生的微交互而使您无法工作的时刻都需要花费时间。 他们累加起来,最终浪费了您花费时间修复另一个错误或开发产品的下一个强大功能的时间。

    那我该如何开始呢? (So how do I actually get started?)

    Even though there are linters for most, if not all, other mainstream languages, for the purpose of this post, I’m going to focus on Javascript. The same principles apply, but the tooling may be a bit different.

    就本文而言,即使大多数(如果不是全部)其他主流语言都存在问题,我还是将重点放在Javascript上。 适用相同的原则,但工具可能有所不同。

    I’m going to run through how you can get set up for basic linting in a React app. You can easily follow along by spinning up your own React app or using my Gatsby starter: https://github.com/colbyfayock/gatsby-starter-sass#starting-from-scratch

    我将介绍如何在React应用程序中设置基本的棉绒。 您可以通过旋转自己的React应用程序或使用我的Gatsby入门程序轻松地进行跟踪: https : //github.com/colbyfayock/gatsby-starter-sass#starting-from-scratch

    你的林特 (Your Linter)

    To get started, we first need a linter. Probably the most popular in the Javascript world is ESLint. Your linter will actually be the engine for defining rules and parsing your files to test against. ESLint is available as an npm package by itself and once installed, out of the box it allows you to set up a basic configuration file and hit the ground running with some command line tools.

    首先,我们首先需要一头短绒。 ESLint 可能是 Java语言世界中最受欢迎的 。 您的linter实际上将是定义规则和解析要测试的文件的引擎。 ESLint本身可作为npm软件包提供, 一旦安装 ,即开即用,它使您可以设置基本配置文件并使用某些命令行工具运行。

    Let’s first add our ESLint dependency:

    首先添加我们的ESLint依赖项:

    yarn add eslint -D

    We’re installing this as a devDependency (hence the -D flag), because this isn’t something our application needs to run. After it’s successfully installed, let’s add it to our package.json as a script:

    我们将其安装为devDependency (因此devDependency -D标志),因为这不是我们的应用程序需要运行的东西。 成功安装后,让我们将其作为脚本添加到package.json中:

    ...
    "scripts": {
      ...
      "lint": "eslint .  --ext .js"
      ...
    },
    ...

    In the above, we’re running our linter on the entire project directory on any file that has an extension of .js. If you're working with a large project with many file types, maybe even some you don't want linted, you can change that flag or be more specific with other options.

    在上面,我们在扩展名为.js任何文件上的整个项目目录上运行linter。 如果您正在处理具有许多文件类型的大型项目,甚至可能不需要删除某些文件类型,则可以更改该标志,或者使用其他选项进行更具体的描述

    To support ESLint, we’ll need to do one more thing. Let’s add a file at the root of our project (probably where your package.json is) called .eslintrc.js and make the contents of the file simply:

    为了支持ESLint,我们还需要做一件事。 让我们在项目的根目录(可能是package.json所在的位置)添加一个名为.eslintrc.js的文件,并使文件内容简单:

    module.exports = {};

    Once you’re ready, you can run yarn lint and… get an error.

    准备就绪后,就可以运行yarn lint ,…报错。

    This is okay, and expected in our project, so let’s move on.

    没关系,并且在我们的项目中可以预期,所以让我们继续。

    您的解析器 (Your Parser)

    A common tool in the chain for Javascript developers is Babel, which allows you to write code with features that may not be supported in all browsers, such as using arrow functions, that are available in ES6, and other conventions like importing files via import.

    Babel是Java开发人员链中常用的工具,它使您可以编写具有并非所有浏览器都支持的功能的代码,例如使用ES6中可用的箭头功能 ,以及通过import导入文件等其他约定。

    The code you write may already run through Babel to work in a browser, but that doesn’t apply to ESLint by default, so ESLint allows you to specify a parser that allows the linting processing to look at the same code as your browser sees. In this case we’ll want to use Babel’s ESLint parser that’s made available to us.

    您编写的代码可能已经通过Babel运行,可以在浏览器中运行,但是默认情况下不适用于ESLint,因此ESLint允许您指定一个解析器,该解析器允许lint处理查看与您浏览器所见相同的代码。 在这种情况下,我们将要使用向我们提供的Babel ESLint解析器。

    To set that up, we’ll want to first install our dependency:

    要进行设置,我们首先要安装依赖项:

    yarn add babel-eslint -D

    Typically if you're using babel-eslint you'll want to make sure babel is installed next to it, but in our case, Gatsby already uses babel, so we don’t necessarily need to add it. After that’s set up, we’ll want to update our .eslintrc.js config file with some new options:

    通常,如果您正在使用babel-eslint ,则需要确保在其旁边安装了babel ,但是在我们的情况下,Gatsby已经使用了babel ,因此我们不一定需要添加它。 设置完之后,我们将要使用一些新选项来更新.eslintrc.js配置文件:

    module.exports = {
        "env": {
            "browser": true,
            "node": true,
            "es6": true
        },
        "parser": "babel-eslint"
    };

    Here, we’re letting ESLint know that our environment will be run in node (Gatsby’s precompiling), inside the browser (the app), and it will use ES6. This helps ESLint know how to run your code. Additionally, we want to set up our parser to be babel-eslint.

    在这里,我们让ESLint知道我们的环境将在浏览器(应用程序)内部的节点(Gatsby的预编译)中运行,并且它将使用ES6。 这可以帮助ESLint知道如何运行您的代码。 另外,我们希望将解析器设置为babel-eslint

    Once we’re ready to go, run yarn lint again and… well nothing really happened.

    一旦我们准备好yarn lint再次运行yarn lint ,……实际上什么也没发生。

    This is still expected, as we don’t have any rules set up!

    由于我们没有设置任何规则,因此仍然可以预期!

    您代码的插件 (Plugins for your code)

    Writing a React app? The Babel parser may help you transform your code, but you might have a hard time being productive, as ESLint needs to understand how it should work to lint your React files.

    写一个React应用? Babel解析器可能会帮助您转换代码,但是您可能很难提高工作效率,因为ESLint需要了解它应该如何工作才能整理React文件。

    Part of the beauty of ESLint is that it allows you to configure plugins that have the opportunity to create and set rules for you. Luckily, along with our Babel parser above that does some of the heavy lifting, we have a React plugin available that does just that and takes care of linting the JSX for us.

    ESLint的部分优点在于,它允许您配置有机会为您创建和设置规则的插件 。 幸运的是,连同上面的Babel解析器可以完成一些繁重的工作,我们提供了一个React插件,可以做到这一点并为我们处理JSX。

    Let’s first install our dependency:

    首先安装依赖项:

    yarn add eslint-plugin-react -D

    Further, let’s update our .eslintrc.js file again:

    此外,让我们再次更新.eslintrc.js文件:

    module.exports = {
        "settings": {
            "react": {
                "version": "detect"
            }
        },
        "env": {
            "browser": true,
            "node": true,
            "es6": true
        },
        "plugins": [
            "react"
        ],
        "parser": "babel-eslint"
    };

    What we’re adding here is a setting that automatically detects what React version you’re using, which is helpful to let your linting get parsed properly, and then set up our react plugin that we installed above.

    我们在此处添加的设置会自动检测您正在使用的React版本,这有助于让您的棉绒被正确解析,然后设置上面安装的react插件。

    For one last final time, we will run our lint script and get nothing:

    最后的最后一次,我们将运行我们的lint脚本,但不会得到任何结果:

    他人意见定义的规则 (Rules defined by others’s opinions)

    If you’re not really sure where to get started or just want to quickly get up and running, it’s recommend that you enable ESLint’s own recommended rules. Let’s add this to our .eslintrc.js config file:

    如果您不太确定从哪里开始,或者只是想快速启动并运行,建议您启用ESLint自己的推荐规则 。 让我们将其添加到我们的.eslintrc.js配置文件中:

    module.exports = {
        "settings": {
            "react": {
                "version": "detect"
            }
        },
        "env": {
            "browser": true,
            "node": true,
            "es6": true
        },
        "plugins": [
            "react"
        ],
        "extends": [
            "eslint:recommended"
        ],
        "parser": "babel-eslint"
    };

    And let’s run our yarn lint.

    然后运行我们的yarn lint

    Woah! This will immediately give you a lot errors, it seems like something’s wrong.

    哇! 这会立即给您带来很多错误,似乎有些问题。

    Since we’re running a React app, we also want to make sure our linter understands the rules it should follow, so let’s also add our React plugin to the .eslintrc.js config setup:

    由于我们正在运行React应用,因此我们还想确保我们的linter理解它应该遵循的规则,因此我们还要将React插件添加到.eslintrc.js配置设置中:

    "extends": [
            "eslint:recommended",
            "plugin:react/recommended"
        ],

    Now if you run yarn lint, you get something a little more logical.

    现在,如果您运行yarn lint ,您会得到一些合乎逻辑的东西。

    If you’re following along, it looks like our starter app had a misplaced semicolon and a missing prop in our propTypes validation for Layout.js. Writing this helped me fix my own repo! 🎉

    如果您遵循,它看起来像我们启动的应用程序有一个错位的分号,并在我们缺少的道具propTypes验证了Layout.js 。 写这篇文章有助于我修复自己的仓库! 🎉

    Going further, if those don’t seem to fit your needs, lots of developers and teams have published their own configurations that ESLint allows you to easily tap into.

    更进一步,如果那些看起来不符合您的需求,那么许多开发人员和团队都发布了自己的配置,ESLint允许您轻松地使用它们。

    Some popular ones include:

    一些受欢迎的包括:

    Not happy with the options available? You can even create and publish your own to either layer on top of others as a starting point or give it a go from scratch.

    对可用选项不满意? 您甚至可以从头开始创建并发布到其他任何层之上,也可以从头开始。

    让它完成工作(大部分) (Let it do the work (most of it))

    You don’t think I’m going to make you fix all of those thing yourself do you? Well, you may have to fix some, but let’s try to get ESLint to fix some of it for us.

    您认为我不会让您自己解决所有这些问题吗? 好吧,您可能需要修复一些问题,但是让我们尝试让ESLint为我们修复一些问题。

    If you noticed after we ran the command above, ESLint gave us an extra message:

    如果您在执行上面的命令后注意到,ESLint给了我们额外的消息:

    So let’s give it a try! Let’s run:

    因此,让我们尝试一下! 让我们运行:

    yarn lint --fix

    And what do you know, it now only gives us 1 linting error.

    而且您知道吗,它现在只给我们带来1条棉绒错误。

    Turns out ESLint was able to fix our semicolon issue automatically, but we’ll still have to add pageName to our Layout’s propTypes manually, not too much of a lift.

    事实证明,ESLint能够自动解决分号问题,但我们仍然必须手动将pageName添加到LayoutpropTypes ,而不必propTypes

    Running one more time and finally nothing again! But this time because everything's looking good.

    再运行一次,最后什么也没有! 但是这次是因为一切都很好。

    继续写凌乱的代码! (Go forth and write messy code!)

    Kidding 😜 The good news here, is now you can easily take a look at the general health of your codebase as well as hopefully fix most of it automatically. This is going to save a lot of headaches as you work with others on your team, and generally, it’s nice to have all of your code neat and tidy.

    开玩笑here这里的好消息是,您现在可以轻松查看代码库的总体运行状况,并希望大多数代码可以自动修复。 当您与团队中的其他人一起工作时,这将省去很多麻烦,通常,将所有代码都整齐地整理是一件很不错的事情。

    This post is just getting started. ESLint is a wide open book with tons of plugins and rules, and it’s not the only linting tool in the game. Play around and find what fits best for you and your team. The little time spent configuring it to your app will save you lots more time in the long run.

    这篇文章才刚刚开始。 ESLint是一本开放式的书,其中包含大量的插件和规则,它不是游戏中唯一的整理工具。 游玩,找到最适合您和您的团队的东西。 从长远来看,花很少的时间配置到您的应用程序将为您节省更多时间。

    其他起绒工具签出 (Other linting tools to check out)

    • JSHint: an alternative to ESLint

      JSHint :替代ESLint

    • Stylelint: a linting tool for CSS and CSS-like syntaxes like Sass

      Stylelint :一种用于CSS和类似Sass的 CSS语法的整理工具

    • Awesome ESLint: a simple list of awesome configs, parsers, plugins, and other tools to boost your ESLint game

      很棒的ESLint :一系列很棒的配置,解析器,插件和其他工具的简单列表,可用来增强您的ESLint游戏

    • Webhint: linting tool for accessibility, speed, and more website best practices

      Webhint整理工具,用于辅助功能,速度和更多网站最佳实践

    • A11y JSX Plugin: ESLint plugin for checking accessibility rules on JSX elements

      A11y JSX插件 :ESLint插件,用于检查JSX元素上的可访问性规则

    Originally published at https://www.colbyfayock.com/2019/10/what-is-linting-and-how-can-it-save-you-time

    最初发布https://www.colbyfayock.com/2019/10/what-is-linting-and-how-can-it-save-you-time

    翻译自: https://www.freecodecamp.org/news/what-is-linting-and-how-can-it-save-you-time/

    展开全文
  • r软件中合并列Now that we’ve gotten to the core of what programming languages do, let’s get a little more concrete and see what some of them are and what they look like. 现在,我们已经得到了什么编程...

    r软件中合并列

    Now that we’ve gotten to the core of what programming languages do, let’s get a little more concrete and see what some of them are and what they look like.

    既然我们已经了解了编程语言的核心功能,那么让我们更具体一些,看看其中一些是什么以及它们的外观。

    Python (Python)

    Python is one of the most pervasive languages right now, due in part to its relative closeness to English and therefore low barrier to entry. It may seem cryptic at first, but you’ll see in time that other languages can get worse.

    Python是目前使用最广泛的语言之一,部分原因是它与英语的相对亲近性以及因此较低的进入障碍。 乍一看似乎很神秘,但是您会及时发现其他语言会变得更糟。

    
    names = ['Ann', 'Bob', 'Catherine', 'Dave']
    
    

    print('Hello ' + name)
    print('Hello ' + name)

    Can you guess what the above will do? First, we create a list of names. We then take each name in the list and “print” it to the screen along with a greeting. It would look something like this:

    您能猜出上述内容会做什么吗? 首先,我们创建一个名称列表。 然后,我们将列表中的每个名称与问候一起“打印”到屏幕上。 它看起来像这样:

    Neat, huh? (Not all that neat, but hey. We’re learning, people.)

    整洁吧? (不是那么整洁,但是嘿。我们正在学习,人们。)

    JavaScript (JavaScript)

    JavaScript is another very popular language right now due to its use in web browsers like Chrome or Safari. As more and more people use the web, it’s convenient to use a language that works natively on the tools they use. Let’s see the equivalent of the code above, in JavaScript:

    由于JavaScript在Chrome或Safari等网络浏览器中的使用,JavaScript现在是另一种非常流行的语言。 随着越来越多的人使用网络,使用一种在其使用的工具上本地工作的语言会很方便。 让我们看一下与JavaScript中的上述代码等效的代码:

    
    var names = ["Ann", "Bob", "Catherine", "Dave"];
    
    

    console.log("Hello " + name);
    console.log("Hello " + name);
    }
    }

    You’ll notice there are some differences from Python, but ultimately the program reads similarly. We build a list of names, and then “log” them to the “console” with results identical to the above.

    您会注意到与Python有一些区别,但是最终该程序的读取方式类似。 我们建立一个名称列表,然后将它们“登录”到“控制台”,其结果与上述相同。

    Java (Java)

    Java — not at all related to JavaScript — is a programming language used by uncountable pieces of software. It’s the go-to choice when writing enterprise software because of its maturity and portability among operating systems like Windows, Mac OS X, and Linux. Let’s see our program once more, this time in Java:

    Java(与JavaScript根本不相关)是无数软件使用的编程语言。 由于它在Windows,Mac OS X和Linux等操作系统中的成熟性和可移植性,它是编写企业软件时的首选。 让我们再次使用Java来看看我们的程序:


    {
    {
    System.out.println(“Hello “ + name);
    System.out.println(“Hello “ + name);
    }
    }
    }
    }
    }
    }

    翻译自: https://www.pybloggers.com/2016/03/coalescing-the-abstract-into-software/

    r软件中合并列

    展开全文
  • 什么是服务器 服务器就是一台高性能电脑 电脑上安装了提供服务的软件就称为 xxx服务器 举例: 邮件服务器: 就是在电脑上安装了提供邮件收发服务的软件 ftp服务器: 就是在电脑上安装了提供文件上传下载服务的软件 ...

    Servlet

    什么是服务器

    • 服务器就是一台高性能电脑
    • 电脑上安装了提供服务的软件就称为 xxx服务器
    • 举例:
      1. 邮件服务器: 就是在电脑上安装了提供邮件收发服务的软件
      2. ftp服务器: 就是在电脑上安装了提供文件上传下载服务的软件
      3. 数据库服务器: 在电脑上安装了提供数据增删改查服务的软件(MySQL/Oracle…)
      4. web服务器: 就是在电脑上安装了web服务软件(Webserver)

    Web服务软件做了那些事儿

    1. 负责建立底层的网络连接
    2. 负责将客户端请求的文件返回给客户端
    3. web服务器又称为web容器, web容器是用来装组件(Servlet),Web服务软件通过解析请求地址找到对应的Servlet作出响应

    Servlet

    • Servlet是用于扩展Web服务软件业务功能的组件,每一种业务都对应一个单独的Servlet

    如何在Eclipse中关联Tomcat

    1. 下载Tomcat安装文件: 从苍老师文档服务器, 找到常用下载->Java->Tomcat 8.4.45 解压到一个指定的目录(路径中不要有中文,可以在D盘直接创建java文件夹把下载的文件复制过去)
    2. eclipse中window->最后一个->Server->Runtime
      如果里面有内容删除, 点击add->找到8.5(没有8.5的同学从文档服务器下载新的eclipse,下载完后记得要配置maven) ->点击Browser->找到第一步解压的文件夹->Finish
    3. 找到servers面板(如果找不到 window->show View里面找,还是找不到other里面搜),在servers面板中点击超链接添加对应版本的Tomcat, 添加完之后双击修改单选到中间位置(这一步是修改部署工程的路径 作用后面会讲)
    4. 在servers里面Tomcat上右键start启动Tomcat,在控制台输出以下内容后,在浏览器中访问localhost:8080 显示出猫说明搞定
      Server startup in 580 ms

    如何删除关联

    1. 在servers面板中删除添加的Tomcat
    2. eclipse中window->最后一个->Server->Runtime 找到添加的Tomcat删除
    3. 把解压的Tomcat安装文件夹删除,重新解压

    如何创建一个Web工程

    1. 创建maven工程 把jar改war
    2. 改错: 在最长的文件名上面右键点击最长的一个, 此过程是创建了web.xml配置文件,该配置文件中保存着请求路径和Servlet的对应关系
    3. 让创建的工程和Tomcat关联, 在工程名上右键->Properties->Targeted runtimes 在里面的Tomcat后面打钩 保存关闭即可
    4. 创建Servlet, 包名cn.tedu 类名HelloServlet 删除类里面的注释和代码
    5. 重写service方法 ,删除方法中的内容,控制台输出HelloServlet
    6. 在工程名上面右键Run as->Run on Server
    7. 浏览器中访问http://localhost:8080/servlet_1_1/HelloServlet,显示空白,控制台输出HelloServlet说明OK.

    Servlet响应流程

    • 请求由客户端浏览器发出,服务器的Tomcat软件先接收到请求,并且获取到请求中的子地址(/HelloServlet),Tomcat会拿着子地址去web.xml配置文件中找到对应的Servlet完整类名,然后通过反射技术实例化Servlet,然后调用Servlet中的service方法.最终执行到我们所写代码

    客户端发出请求的几种方式

    1. 在浏览器的地址栏中写请求路径 回车后发出请求 get
    2. 在页面中通过超链接发出请求 get
    3. 在页面中通过form表单发出请求 get/post

    Get和Post的区别

    • GET: 请求参数放在请求地址的后面,请求参数有大小限制 只能传递几k的数据,而且参数在地址栏中可以看到 所以不能传递敏感信息(密码)
      浏览器地址栏发出的请求是get
      超链接发出的请求是get
      form表单默认发出的请求是get
    • Post:请求参数放在请求体里面用户看不到,而且没有大小限制 通常上传文件时或者传递敏感信息时使用POST
      只有form表单设置method="post"时 发出的才是post请求
    创建的Servlet需要改名的话,切记把web.xml中的一起改掉不然报错
    修改Servlet或页面里面的代码不需要重新运行工程,新增了Servlet后因为web.XML文件修改了 所以需要重新运行工程

    发出请求时如何传递参数以及Servlet中如何获取参数

    • get请求获取参数时中文乱码问题
      Tomcat8.0以下版本才会有此问题, 找到Servers工程中的server.xml里面的65行 添加以下URIEncoding="UTF-8"属性
      <Connector URIEncoding=“UTF-8” connectionTimeout=“20000”
    • post请求参数有中文时每次获取参数之前执行以下代码
      request.setCharacterEncoding(“UTF-8”);

    常见异常以及处理方式

    404:

    找不到资源, 此路径没有对应的文件,也没有对应的Servlet, 此时检查请求路径是请求文件还是请求Servlet,

    • 1.如果请求的是文件 第一时间检查路径是否正确(包括请求路径和文件名)还要检查工程中的文件所在位置
    • 2.如果请的是Servlet 第一时间检查路径是否正确(包括请求路径和Servlet名字是否和web.xml中的名字一致)

    405:

    找到了Servlet但是没有找到Servlet里面对应的方法, 比如:发出的请求是get请求但是Servlet里面没有doGet方法,或者发出的请求是post请求在Servlet里面没有doPost

    500:

    找到了Servlet也找到了对应doGet或doPost方法,在执行里面java业务代码的时候出错.

    • 唯一解决方案就是详细检查业务代码

    练习---------------------------------------------------------------

    SayHello步骤:
    1. 在webapp下面创建sayhello.html页面 页面中添加form表单发出get请求,请求地址为SayHelloServlet 表单中有一个文本框和一个提交按钮
    2. 创建SayHelloServlet 留下doGet方法其它全部删除,在方法中获取传递过来的参数,把参数和你好拼接到一起 通过HelloServlet里面的相关代码把拼接好的字符串返回给浏览器
    创建新的工程实现SayHello功能
    1. 创建maven工程servlet1_2 把jar改war
    2. 改错: 在最长的文件名上面右键点击最长的一个, 此过程是创建了web.xml配置文件,该配置文件中保存着请求路径和Servlet的对应关系
    3. 让创建的工程和Tomcat关联, 在工程名上右键->Properties->Targeted runtimes 在里面的Tomcat后面打钩 保存关闭即可
    4. 在webapp下面创建sayhello.html页面 页面中添加form表单发出get请求,请求地址为SayHelloServlet 表单中有一个文本框和一个提交按钮
    5. 创建SayHelloServlet 留下doGet方法其它全部删除,在方法中获取传递过来的参数,把参数和你好拼接到一起 通过HelloServlet里面的相关代码把拼接好的字符串返回给浏览器
    加法运算练习
    1. 在webapp下创建add.html页面页面中添加form表单发出get请求 提交地址为AddServlet, form表单里面两个文本输入框(name分别为n1和n2)和一个提交按钮
    2. 创建AddServlet留下doGet方法,在方法中获取传递过来的n1和n2 得到的是字符串类型需要转成int类型进行加法运算 把得到的结果返回给浏览器
    BMI练习
    • BMI身体质量指数 = 体重(kg)/身高(m)的平方 70/(1.8*1.8)
    • 18.5以下 体重偏轻 18.5-24之间正常体重 24-28之间偏重 大于28肥胖
    • 步骤:
      1. 创建bmi.html页面 页面中添加form表单,提交地址BMIServlet,两个文本输入框(name分别为h和w) 和一个提交按钮
      2. 创建BMIServlet 留下doGet方法获取传递过来的身高体重,转成double类型按照上面的公式进行计算得到bmi的值,判断bmi的值是在哪个范围来决定给页面返回什么数据
    展开全文
  • 作者:Alan Page, 微软卓越测试工程总监,How We Test Software at Microsoft (中文翻译为《微软的软件测试之道》)一书的作者之一。 翻译:卢玥俪、陆梦嫣、汪宏 近来我遇到越来越多的人对我们会发布还有...

    原文地址: Why bugs don’t get fixed

    作者:Alan Page, 微软卓越测试工程总监,How We Test Software at Microsoft (中文翻译为《微软的软件测试之道》)一书的作者之一。

    翻译:卢玥俪、陆梦嫣、汪宏

     

         近来我遇到越来越多的人对我们会发布还有bug的产品大为惊讶。而让我大吃一惊的是,这些人中还有许多是软件测试人员,我本以为他们应该对此早已经有所了解。建议大家先阅读Eric Sink较早写的(但是很棒的)文章。不知道我还能对此话题有多少贡献,但我想试试。

     

         许多bug并不值得去修复。“你这也算是测试人员吗?”,你肯定会冲我大叫,“测试人员是产品质量的捍卫者。”我可以再重复一次(如果需要的话)许多bug并不值得去修复。“让我来告诉你原因。在大多数情况下,修复bug就必须要修改代码。而修改代码需要投入资源(时间)并会引入风险。这真是很糟糕,但这却是事实。有时,如果风险和投入远超过修复bug的价值,因此我们就不会被修复这些bug。

         我们决定是否修复一个bug并不是,也不应该是靠“感觉”。我喜欢用“用户痛苦”的概念来帮助我做决定。我会用三个关键因素来考虑并确定“用户痛苦”:

         1、严重性 —— 这个bug将产生什么影响 —— 它会让整个程序崩溃吗?它会导致用户的信息丢失吗?或者并不是那么严重?有更简单的解决方法吗?还是它仅仅是个无关紧要的问题?

         2、频繁性 —— 用户碰到这个问题的频率高吗?它是程序主要工作流程中的一部分?还是隐藏在一个并不常用的功能中?在最常用的那部分程序中存在的小问题很可能是需要修复的,而一些不常用到的那部分程序中存在的大问题,也许我们会放在一边。

         3、对客户的影响 ——如果你之前准备工作做得好,你应该已经知道你的客户是谁,你的每个客户群中会有多少(或者是你希望有多少)用户。这样你就需要判断,这个问题将会影响到每位用户一,还是仅仅一部分人。如果你能追踪出客户如何使用你的产品,你就能得到更准确的数据。

         以上3点因素就构成了一个公式。给上面的每一个因素都分配一个数值范围,并且用一些计算 —— 你可以直接使用加法、乘法或是基于你的应用程序以及市场因素加上权值。打个比方,我们只需要执行加法并且对每个bug赋予10分的数值范围。

         Bug #1:比如它是一个会让程序崩溃的bug(10分),它存在于程序的主要部分(10分),它影响了80%的客户(8分),因此这个bug的”用户痛苦“量值为28分,我们打赌我们肯定会修复它。

         Bug #2:它仅仅是一个关于排列的bug(2分),它出现在二级窗口中(2分),这个bug所在的那部分程序只会在旧版本中被使用到(2分)。因此这个bug的“用户痛苦” 量值为6分,我们很可能不会去修复它了。

         遗憾的是,很多情况并不像上面所说的那么简单。Bug #3是一个数据丢失问题(10分),它存在于一个应用程序的某个主要部分中,却只在某些特定的情况下才出错(5分)(顺便提一下,数据是主观编造出的)。客户研究证明它很少会被使用(2分)。因此它的 “用户痛苦”量值为17分,这是一个模棱两可的数据,修与不修都可以。一方面,修复它所需要的投入可能并不值得,只要这个问题能够被理解,并且它没有任何盲点,不再理会这个bug很可能是正确的处理方法。

         从另一方面来看,你必须把它和系统中的其他bug进行权衡。我们在这里应用“破窗效应Broken Window”—— 如果应用程序中有太多此类中等阈值的bug,产品的质量(或者最起码,从质量的感觉上)一定大受影响。你在考虑系统中每一个bug的时候,还应该结合考虑系统中其他(已知的)bug,并且以此来分析、决定哪些bug是需要被修复的而哪些则不值得被修复。

         正式发布的软件中有bug的确是一件十分糟糕的事 —— 但基于我们现有的开发工具和开发语言,我们还没有找到一个更加合理的解决方法。

        

    补充:

         写出这篇文章的时候,我想我遗漏了公式中的第四个因素:发布日期。临近发布日期时,这个因素在修复/不修复bug的决定中也起了关键作用。然而我并不确定它是否是第四个因素,也无法确定在临近发布时期时,修复一个bug所需要的 “用户痛苦”量值的阈值是多少。

    转载于:https://www.cnblogs.com/stbchina/archive/2010/01/14/Why_Bugs_Dont_Get_Fixed.html

    展开全文
  • 深信服实习面经11_02

    千次阅读 2016-11-08 07:21:41
    netstat icmp curl tcp weget 一面 开发环境主要linux,语言C,脚本语言python。 平时做自己的测试学习linux用的多? linux一般用什么系统呢? 平时在自己的PC机安装Centos还是有什么其他的方法?个人做...
  • 当然已知的不利之处在于PHP由于开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。但是PHP的邮件列表很有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你...
  • libusb-1.0.9

    热门讨论 2012-10-25 15:52:15
    每个管道都一个主机上的一个软件和设备上一个端点的通道。每个端点对于设备来说完成一部分特殊的目标,比如接受命令或者传输数据。一个全速设备最高可以拥有16个端点,然后低速的设备只拥有三个端点。 所有的USB...
  • Get to know natural language processing (NLP) Understand malware feature engineering Build generative adversarial networks using Python libraries Work on threat hunting with machine learning and the ...
  • (你个性上最大的特点是什么?) A:Helpfulness and caring.(乐于助人和关心他人。) A:Adaptability and sense of humor.(适应能力和幽默感。) A:Cheerfulness and friendliness.(乐观和友爱。) Q: How ...
  • 一套完整的、全平台覆盖的软件套装,包括了web、桌面、安卓、IOS设备,而且全部开源! 还有... 3. 获取Leanote Leanote云笔记产品包括: Leanote Web & Server(即本仓库), 桌面客户端, IOS, android. 4端全部...
  • SSO-WebDemo

    2013-08-12 20:25:57
    随着互联网的高速发展,WEB应用几乎统治了绝大部分的软件应用系统,因此WEB-SSOSSO应用当中最为流行。WEB-SSO有其自身的特点和优势,实现起来比较简单易用。很多商业软件和开源软件都有对WEB-SSO的实现。其中值得...
  • npm install 失败

    2020-12-29 01:32:00
    4.17.20 - Run <code>npm i npm -g</code> to upgrade your npm version, and then <code>npm audit</code> to get more info. added 205 packages from 179 contributors in 31.193s <h2>5.软件版本和npm ...
  • 不知道是什么原因导致的?请大虾解惑。 ``` void BasicTaskScheduler::SingleStep(unsigned maxDelayTime) { fd_set readSet = fReadSet; // make a copy for this select() call fd_set writeSet = ...
  • 然后发现散点图的趋势不明显,最好加上回归直线,看看回归模型反映的趋势是什么,或者发现图中离群点太多,最好做一下对数变换,减少大数值对图形的主导性。, 从始至终,数据分析者都在数据层面上思考问题,而不是拿...
  • head first design patterns 真正非扫描版

    热门讨论 2011-09-19 18:30:53
    With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on…something else. Something more challenging. Something more complex....
  • 外文翻译 stus MVC

    2010-05-28 15:02:31
    Even if you never implement a system with Struts, you may get some ideas for your future servlets and JSP page implementation. Introduction Kids in grade school put ...
  • @ get read to call C functions (for nand_read()) ldr sp, DW_STACK_START @ setup stack pointer mov fp, #0 @ no previous frame, so fp=0 @ copy U-Boot to RAM ldr r0, =TEXT_BASE mov r1, #0x0 mov r2...
  • 作为开发者其实比较好奇其他人在做什么业余项目(不管目的做到盈利/玩票/试试看) 所以特意建了这个库。欢迎各位开发者把自己的项目加进来~ 发 Pull Request 或 Issue 即可 (入选标准:必须网站或App,不能...
  • # 软件版本: hadoop 2.7 flink1.10.0 flink和hadoop不是在一个机器上 link安装在ip:105 hadoop集群 ip: 101,102,103集群 #往hdfs上保存checkpoint出现异常失败(在flink web提交job): ``` Caused by: java....
  • @format X: /q/u/autoset (format 这个命令不可以使用/y这个参数的,可喜的微软留了个autoset这个参数给我们,效果和/y一样的。) 3.Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 ...
  • s1 = "本篇博客主要介绍两款语言探测工具,用于区分文本到底是什么语言," s2 = 'We are pleased to introduce today a new technology' print(detect(s1)) print(detect(s2)) print(detect_langs(s3)) # detect_...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

weget是什么软件