精华内容
下载资源
问答
  • 随着各行业竞争格局的变更,越来越多传统行业受到影响,小编近几年服务了不少酒店行业的客户,今天借此机会和各位聊聊酒店网站建设应该怎么做!酒店网站建设应该怎么做呢?在思考这个问题前我们先来考虑下用户的行为...

    随着各行业竞争格局的变更,越来越多传统行业受到影响,小编近几年服务了不少酒店行业的客户,今天借此机会和各位聊聊酒店网站建设应该怎么做!
    酒店网站建设应该怎么做呢?在思考这个问题前我们先来考虑下用户的行为轨迹,消费者访问酒店官方网站只有两个行为,一个是信息了解对比,另一个是预约订购。当我们明确这两个行为时我们酒店网站建设就有了方向。
    首先是信息的展现,酒店的对比无非是房间参数信息、餐饮、价格、位置等信息,而这些信息是每一家酒店都具备的,选取一些合适的照片和文字信息在网站内展现即可。另一方面则是预约订购了,这个相对内容展现较为复杂一些,当然也有不同的做法,最简单的做法是用户提交入住信息管理员通过后台查看然后线下联系即可,但较为耗时繁琐。

    b4a134939b9d9365c9c6d853dacd8c93.png

    酒店网站建设

    另一种方式则和酒店系统对接,实时展现酒店内可入住房间及房型信息,用户点击预订后选择入住时间和人数进入支付页面,在线完成入住申请、支付等业务。
    另外建议酒店网站建设时可以考虑公众号开发,开发出到店服务,比如wifi连接、餐饮在线预订、一键呼叫服务、接送机服务等。
    酒店行业服务方向基于网站建设有很多可优化空间,这个时代不就是这样吗?越简洁的服务方式,越受消费者欢迎。如果您有酒店网站建设需求,欢迎您来咨询,数维网建愿与您一起携手更好的服务消费者。

    展开全文
  • 目录 前言 关于实验对比方向 关于编译优化 1、实验目的 ...不过试了实验室win7系统虽然可以运行,但是生成的asm文件我怎么都没找到,就算了,尽管方向2还想用Win-TC呢。 本实验实现了方向...

    目录

    前言

    关于实验对比方向

    关于编译优化

    1、实验目的

    2、实验平台、工具

    3、实验设计

    4、实验步骤

    5、实验结果讨论


    前言

    在折腾完win10下载Win-TC用不了、先痛苦后享受地做完C#版后,发现实验要求里是有Win-TC附件链接的。不过试了实验室win7系统虽然可以运行,但是生成的asm文件我怎么都没找到,就算了,虽然方向2还想用Win-TC做呢。

    本实验实现了方向1、3。另外,由于整个篇幅太长,实验3只给出了设计,完整的可以查完文档。文末给出了C#反汇编的il文件的参考链接。

    完整文档及源码可以点击下载:this

     

    关于实验对比方向

    • 方向1-相同编译器下不同优化参数(相同源代码,采用不同的优化参数)的性能对比
    • 方向2-不同编译器下相同源代码(例如采用C语言用WinTC和gcc对比;或者C#下采用不同的.NET Framework版本2.0和4.0(版本差最好拉大一点))的性能对比
    • 方向3-相同编译器下相同编译参数,不同的源代码写法(源代码结果一样,但实现不同,例如递归和通常的实现等)的对比

    关于编译优化

    代码编译优化,文末有参考的博文链接,其实老师上课讲的ppt也很清晰。

    Debug与Release二者的详细区分:

    • Debug:Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。
    • Release:Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

    VS中可以选择优化参数,如下:

    • 汇编原理:编译器对变量的存取速度,寄存器快于内存,最慢是硬盘。(寄存器>内存>硬盘)

    相对复杂的工作流程产生了更多的时延,累计起来就比寄存器慢很多,为了提高执行效率,编译器会对有必要优化的变量做访问方式上的处理,这就是编译器对变量的优化。

    多数情况下,变量是存放在内存而非寄存器中的,这样对变量的存取效率很低。对于频繁使用的变量,编译器自动地把变量mov到寄存器里,使用的时候直接访问寄存器里的值,以加快存取速度,这就是寄存器对变量的优化。



    1、实验目的

    在编程语言中,对比不同编程风格的代码写法,或者通过使用不同的编译器和编译优化参数,通过编译器生成汇编代码,静态分析所生成汇编代码的运行效率。

    2、实验平台、工具

    在Windows平台下,采用visual studio 2015开发工具编写C#程序,并通过VS中引入Microsoft自带的外部工具ildasm反汇编生成il文件。然后使用UltraCompare工具来比较汇编文件的异同(win-TCwin10 64位下无法正常运行)。

    3、实验设计

    方向1. 相同编译器下不同优化参数的性能对比(相同源代码,采用不同的优化参数)

    在VS2015中,编写代码test1如下,使用Debug和Release编译并用ildasm生成对应的汇编代码,再对比分析。

            /// <summary>
            /// 相同编译器下不同优化参数的性能对比
            /// </summary>
            /// 
            /// -> Debug和Release编译
            /// -> 对比il文件
            public static void test1()
            {
                /// 0.空指令删除--> 很明显,代码中没有了nop字段,程序更加紧凑了。
    
    
                /// 1.冗余优化-->未使用的变量
                Console.WriteLine("->exp1: not use x=27");
                int x = 27;
                const string strHello = "HELLOWORLD";
                // Console.WriteLine(strHello);
                Console.WriteLine("End->exp1");
                /// .locals init (int32 x)优化后不见了(局部变量,类型为int32)
                /// ldc.i4.3(将3推送到堆栈上)和stloc.0(将值从堆栈弹出到局部变量 0)也消失了。
                /// 没有使用的变量,在设置为优化的时候,就直接消失了,就像从来没有写过一样
    
                /// 2.优化-->try-catch空句
                Console.WriteLine("->exp2: try-catch set null");
                try
                {
    
                }
                catch { }
    
                try { } catch { }
                finally {
                    Console.WriteLine("End->exp2");
                }
                /// 空的try catch直接消失了,但是空的try catch finally代码是不会消失的,但是也不会直接调用finally内的代码(即还是会生成try代码段)。
    
                /// 3.优化-->跳转简化
                goto LABEL1;
                LABEL2: Console.WriteLine("->exp3: simplify goto");
                Console.WriteLine("End->exp3");
                goto LABELNext;
                LABEL1: goto LABEL2;
                /// 一些多层的标签跳转会得到简化
    
    
                /// 4.临时变量消除:for中 i<n 优化后不会声明bool变量比较
                LABELNext: Console.WriteLine("->exp4: for");
    
                int n = 27;
                int[] array = new int[n];
                for (int k = 0; k < n; k++)
                {   /// 数组初始化
                    array[k] = k;
                }
    
                /// 折半查找 元素Num
                int Num = 4;
                int low = 0;
                int high = n - 1;
                int mid = 0;
                bool found = false;
                
                while ((low <= high) && !found )
                {
                    mid = (low + high) / 2;
                    if (Num > array[mid])
                        low = mid + 1;
                    else if (Num == array[mid])
                        found = true;
                    else high = mid - 1;
                }
                if (found)
                    Console.WriteLine("数组包含所找元素");
                else
                    Console.WriteLine("not Found");
            }

     

    方向3. 相同编译器下相同编译参数,不同的源代码写法的对比

    在VS2015中,编写代码test3 add和test3 sub,对循环条件中循环变量的自增和自减问题进行讨论,以下为两段代码:

          static void Main(string[] args)
            {
                //test1();
    
                / test3 add
                //int itotal = 1000;
                //int a = 0;
                //for (int i = 0; i < itotal; i++)
                //{
                //    a++;
                //}
                //Console.WriteLine("a=" + a);
    
                /// test3 sub
                int itotal = 1000;
                int a = 0;
                for (int i = itotal; i >= 0; i--)
                {
                    a++;
                }
                Console.WriteLine("a=" + a);
    
                Console.Read();
            }

    使用相同的优化参数Release编译并用ildasm生成对应的汇编代码,对比以上代码的运行效率,分析在完成相同的功能,for循环使用++和–哪个效率更高,应用到编程中,我们如何提高for循环效率。

    4、实验步骤

    方向1. 相同编译器下不同优化参数的性能对比

     a) 在VS2015中,编写代码test1如下:

    b) 设置调试配置为Debug,编译程序 ,打开ildasm工具将exe转储成test1Debug.il文件:

        c) 设置调试配置为Release,编译程序 ,打开ildasm工具将exe转储成test1Release.il文件:  

    d) 对两个文件用UC对比,讨论结果:

    5、实验结果讨论

    方向1. 相同编译器下不同优化参数的性能对比(相同源代码,采用不同的优化参数):左边是无任何优化的Debug的汇编代码,右边是Release优化级别的代码及汇编,下面分析6点。

    另外发现,有时候编译器优化后会导致一些本来运行正常的代码出问题,可参阅书本《CLR via C#》了解。

     1.1 从Main中test1()函数的调用就可以看出很明显的优化——代码中没有了nop字段,程序更加紧凑了。

    1.2 对未使用的变量的冗余优化。

    如下图,右边优化后, .locals init (int32 x)优化后不见了(局部变量,类型为int32), 变量x在程序中是声明但未使用的。

    对没有使用的变量,release优化的时候,就直接消失了,就像从来没有写过一样。

    1.3 优化try-catch空句。如下图:

    右边优化后,第一个空的try catch直接消失了;但是空的try catch finally代码是不会消失的,且不会直接调用finally内的代码(即还是会生成try代码段),故第二个空的try catch finally在右边保留了,同时优化了nop空操作。

     1.4 跳转简化:一些多层的标签跳转会得到简化

    源代码:

    比较如下图,右边直接简化成源程序最后的效果。

    1.5 临时变量消除:优化后不会声明临时的bool变量(如fori<n的比较)

    源程序中有比较的变量如下图:

    其中第3的两处均为对Num和array[mid]两个值的比较,故用同一个bool值即可,则总共4个bool值,编译优化后临时变量均消除了,如下图声明时优化后无需bool值:

    例如数组初始化的for循环中,右边release优化后,在比较k<n时直接用blt.s指令,而左边无则需通过变量V_9的bool值前后比较判断,如下图:

    折半查找 元素Num对应的初始化说明如下:

    1.6 计算堆栈优化,请看下图第一个方框(low <= high)的对比:

    左边对low变量的调用为:Ldloc.S     将特定索引处的局部变量加载到计算堆栈上

    右边对low变量的调用(方框中high的上一句)为:Ldloc.3     将索引 3 处的局部变量加载到计算堆栈上

    (回去1.5中的图可知,调用栈中第3个变量为low)则优化后直接加载了调用栈中第3个变量即low,而左边未优化时,需获取变量low的特定索引,再回去调用栈中加载该变量

    While循环体内容如下:

    方向3. 相同编译器下相同编译参数,不同的源代码写法的对比

    3.1 for循环使用++和––哪个效率更高

       分析发现,在完成相同的功能,for循环使用第2种––的方法效率更高。原因如下:

    • 在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
    • 第2种––的方法判断是和0比较,很多cpu和0比较可以减少1个指令。

    参考:

    i - -操作本身会影响CPSR(当前程序状态寄存器),CPSR常见的标志有N(结果为负), Z(结果为0),C(有进位),O(有溢出)。i > 0,可以直接通过Z标志判断出来

    i++操作也会影响CPSR(当前程序状态寄存器),但只影响O(有溢出)标志,这对于i < n的判断没有任何帮助。所以还需要一条额外的比较指令,也就是说每个循环要多执行一条指令。

    • 考虑使用情况:itotal可能会变化,所以比较时每次都要先从调用栈中获取变量itotal的值,再加载到计算堆栈中。

    如下图中第2个蓝色方框中,左边指令 ldloc.2  调用itotal与i作比较,而右边直接将int32数值0加载进计算堆栈中与i做比较。

     


    参考博客:

    方向1:

    C#编译器优化那点事》——被推荐好书:《C# via CLR》——《CLR via C# 读书笔记 2-1 编译器优化导致的问题

    C#程序性能优化

    C#的性能优化

    C#中那些[举手之劳]的性能优化

    VS中Dubug和Release的详细区别

    方向2:未更新

    方向3:

    for循环用效率分析(++和--时效率的差异分析)

    编译器在代码优化方面的局限性

    VS反编译C++代码

    .NET IL .maxstack指令如何工作

     

    展开全文
  • 这篇文章,我要记下周末我用 Go 的处理图像实验的想法。这个演示只是从浏览器中获取图像输入,然后应用各种图像变换,如亮度,对比度,色调,饱和度等,最后将其转储回浏览器。这测试了两件事 - 简单的CPU绑定执行...

    Go 的主分支最近完成了一个 WebAssembly 的工作原型实现。作为 WASM 的爱好者,我自然要把玩一下。

    这篇文章,我要记下周末我用 Go 做的处理图像实验的想法。这个演示只是从浏览器中获取图像输入,然后应用各种图像变换,如亮度,对比度,色调,饱和度等,最后将其转储回浏览器。这测试了两件事 - 简单的CPU绑定执行,这是图像转换应该做的事情,以及在 JS 和 Go 之间传递数据。

    回调

    应该明确如何在 JS 和 Go 之间进行调用,不是我们在 emscripten 中的常用的方式;它是暴露一个函数然后从 JS 调用它。在 Go 中,JS 的互操作是通过回调完成的。在您的 GO 代码中,设置可以从 JS 调用的回调。这些是您希望在 GO 代码中执行的主要事件处理程序。

    它看起像这样 -

    js.NewEventCallback(js.PreventDefault, func(ev js.Value) {
        // handle event
    })
    

    这有个模式-随着你的应用增长,它成为一个 DOM 事件回调处理程序列表。我把它看作 REST 应用的 URL 处理器。

    为了规范,我把所有回调作为我的主结构的方法并在一个地方关联它们。类似于你把 URL 处理器声明在不同的文件里并在一个地方设置所有路由一样。

    // Setup callbacks
    s.setupOnImgLoadCb()
    js.Global.Get("document").
        Call("getElementById", "sourceImg").
        Call("addEventListener", "load", s.onImgLoadCb)
    
    s.setupBrightnessCb()
    js.Global.Get("document").
        Call("getElementById", "brightness").
        Call("addEventListener", "change", s.brightnessCb)
    
    s.setupContrastCb()
    js.Global.Get("document").
        Call("getElementById", "contrast").
        Call("addEventListener", "change", s.contrastCb)
    

    然后在一个单独文件里编写您的回调 -

    func (s *Shimmer) setupHueCb() {
        s.hueCb = js.NewEventCallback(js.PreventDefault, func(ev js.Value) {
            // quick return if no source image is yet uploaded
            if s.sourceImg == nil {
                return
            }
            delta := ev.Get("target").Get("value").Int()
            start := time.Now()
            res := adjust.Hue(s.sourceImg, delta)
            s.updateImage(res, start)
        })
    }
    

    执行

    我吐槽的是图像数据从 Go 传给浏览器的方式。在图像上传时,我把 src 属性设置为整个图像的base64编码格式,该值传到 Go 代码中对其解码为二进制,应用转换然后再编回 base64 并设置目标图像的 src 属性。

    这使得 DOM 非常沉重,需要从 Go 传递一个巨大的字符串到 JS。 如果 WASM 中 SharedArrayBuffer 有所支持可能会改善。我也在研究在画布中直接设置像素,看看有没有任何好处。即使为了消减这个 base64 转换也应该花些时间。(请不吝赐教其他方法)

    性能

    对于一个 100KB 的 JPEG图像,应用转换所需时间约为180~190毫秒。这个时间随着图像大小而增加。这是使用 Chrome 65 测试的。(FF一直报错,我也没时间调查)

    d2d3a230beffd19bcbbe4a7102085d46.png

    性能快照显示

    10b82c1d3748aa3e7b9b2ca773aada7f.png

    堆相当大。堆快照大约1GB

    整理想法

    完整库在这 - github.com/agnivade/shimmer。随意使用。提醒一下这是我一天写的,所有显然会有改进的地方。我会进一步研究。

    附:- 请注意,图像变换不会应用于另一个图像之上。就是说如果您更改亮度然后更改色调,则生成的图像将仅改变原始图像的色调。这是现在的待办项目。


    展开全文
  • currenttimemillis前言在高并发场景下...在系统中有时候不可避免要打印一些时间戳,但怎么做才更好呢。代码实现iimport java.util.concurrent.Executors;import java.util.concurrent.scheduledexecutorservice...

    currenttimemillis

    前言

    在高并发场景下system.currenttimemillis()并发问题严重,甚至比创建一个普通对象要耗时的多;在系统中有时候不可避免要打印一些时间戳,但怎么做才更好呢。

    代码实现

    iimport java.util.concurrent.Executors;

    import java.util.concurrent.scheduledexecutorservice;

    import java.util.concurrent.TimeUnit;

    import java.util.concurrent.atomic.AtomicLong;

    /**

    * 高并发场景下System.currentTimeMillis()的性能问题的优化

    * 时间戳打印建议使用

    */

    public class SystemClock {

    private static final String THREAD_NAME = "system.clock";

    private static final SystemClock MILLIS_CLOCK = new SystemClock(1);

    private final long precision;

    private final AtomicLong now;

    private SystemClock(long precision) {

    this.precision = precision;

    now = new AtomicLong(System.currentTimeMillis());

    scheduleClockUpdating();

    }

    public static SystemClock millisClock() {

    return MILLIS_CLOCK;

    }

    private void scheduleClockUpdating() {

    ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(runnable -> {

    Thread thread = new Thread(runnable, THREAD_NAME);

    thread.setDaemon(true);

    return thread;

    });

    scheduler.scheduleatfixedrate(() ->

    now.set(System.currentTimeMillis()), precision, precision, TimeUnit.MILLISECONDS);

    }

    public long now() {

    return now.get();

    }

    }

    调用示例

    Long start = SystemClock.millisClock().now()

    测试对比

    public static void main(String[] args) {

    int times=integer.MAX_VALUE;

    long start = System.currentTimeMillis();

    for (long i = 0; i < times; i++) {

    SystemClock.millisClock().now();

    }

    long end = System.currentTimeMillis();

    System.out.println("SystemClock Time:" + (end - start) + "毫秒");

    long start2 = System.currentTimeMillis();

    for (long i = 0; i < times; i++) {

    System.currentTimeMillis();

    }

    long end2 = System.currentTimeMillis();

    System.out.println("SystemCurrentTimeMillis Time:" + (end2 - start2) + "毫秒");

    }

    输出结果是:

    SystemClock Time:2741毫秒

    SystemCurrentTimeMillis Time:14072毫秒

    五倍的效率

    细节决定成败,敬畏每一行代码,代码优化永无止境!

    相关阅读

    System一个很牛掰的类 ,位于java.lang包下,有很多可以获取到系统底层的东西,现分享一二:System类本意就代表系统,系统级的很多属性和控

    谈谈获取系统时间,以及和服务端交互时的时间校验

    背景

    最近玩旅行青蛙,偶然发现在没有网络情况下,还是可以正常的收三叶草以及

    展开全文
  • 实验吧 逆向 bin100

    2018-05-03 21:16:12
    实验吧又把这道题给下价了,最近都是在写一些自己以前没事思路的题 老师为了赶进度 也没有 让我做windows下的逆向,让我学习pwn 那么问题来了 到底什么事pwn 网上的资料少的要死 我特别的想知道怎么做...........
  • switch和if-else性能对比

    2020-06-24 15:06:50
    重要程度和使用频率更是首屈一指,那么在日常编码中,我们怎么在switch和if-else中抉择呢? 实验开始 switch VS if 从考虑性能上考虑的话,尽量使用switch,因为这个性能比if高,但具体会高多少呢。 借助 Oracle ...
  • 代码中的数据为随机(其实是我乱按的)出来的数据并非实验室结果。文末将注明引用文献。本文仅供相互学习之用,如有侵权,请联系笔者删除。 该项目的目的是:在横纵坐标代表两个变量的基础上,在散点图中实现对第...
  • cocos2d-js除了native游戏外,还可以用来HTML5游戏/动画,那么它跟adobe的createjs框架比较会怎么样呢? (背景知识:createjs是adobe支持的HTML5框架,沿用了Flash的思想,实现了最基本的显示列表和事件机制,...
  • 实验室经常会开组会,分享最新文献、介绍近期工作、年度总结等。很多同学习惯于在这种会上灌水、蒙混过关。 这样表面上看省时省力,其实会带来负面收益。因为听众会从一场昏昏欲睡的演讲里体会到这个人不怎么样...
  • Go语言 常见数据结构性能测试

    千次阅读 2014-04-20 21:07:13
    在开发过程中,我们总是在设计不同的数据结构和不同的算法对数据进行组织和存取,有些场合我们可以用硬编码或者代码生成器来生成一组函数按条件返回数据,...下面对比实验。 我们知道go的map数据量不管大小都能
  • 工厂在产模组射频测试问题:在设置非信令模式时,最后一条指令总是返回error...程序有通过实验室模组与在产模组进行对比验证,实验室模组射频测试没问题。模组位号和极性有做对比验证,未看出问题。怎么解决??? ...
  • 刚开始使用rabbitmqctl 创建集群的时候会有一个问题,怎么控制节点是disk node还是ram node?翻看了rabbitmq2.8.7的代码... 这个实验其实之前已经过了,这里抽出来做对比: [root@localhost scripts]# [root@localh...
  • arduino通过esp8266模块发送数据到云服务器

    千次阅读 多人点赞 2019-10-19 15:01:20
    arduino通过esp8266模块发送数据到云服务器 ...通过对比实验,我决定用esp8266wifi模块进行通信。 云服务器的话,我现在还没写相应的代码,所以先用Onenet平台进行配置。 Onenet平台进行配置 1.进入...
  • JOS是MIT开放课程6.828的实验系统,它做好了涉及底层...在做实验的时候,要明白的一点是,做这个实验是为了帮助我们更好的理解操作系统的概念和基本的设计原则,多想想要是自己设计这个系统会怎么做,然后对比JOS...
  • 此测试不具有一般性:数据量太少,实验重复次数不够,没有空白对比试验(~听着怎么像是生物实验了)。如果感兴趣,可以自己重复实验。 第一种,经典的冒泡排序,代码如下:(A) long start = System....
  • 之前高性能网络设计是怎么做的?这样设计的依据目标函数是否存在问题? 高性能网络的真实的设计目标是什么?依据设计目标,进行对比实验,可以得到一些有用的怎样的设计准则? 依据提出的设计准则,设计了一个网络,...
  • 最近在准备小论文的实验,因为是做对比实验,但是由于存在随机性,在tensorflow框架中每次运行的结果都不一样,导致我改进的方法不知道是由于随机性造成的还是真的起到了作用,越来越怀疑,于是到处搜,怎么消除网络...
  • 你的分组平衡采用具体是怎么做的 解决你的motivation的合理性在哪? 你的c++有98分,说一说指针和引用的差别,它们哪些是变量 问题还都是比较硬核的,面试的老师也不是特别想说话,感觉气氛比较沉闷。我的回答也不是...
  • 2020-11-17

    千次阅读 2020-11-17 22:13:31
    来到东北大学已经快三个月了,这段时间在生活上以及学习上总是会不自觉的跟本科的经历一下对比,什么宿舍怎么怎么着,饭怎么怎么着,有好也有不好,今天主要说一下学业上的吧,到这之后发现人人都是大佬,不学习...
  • 已经了将近一个月的对比实验,都是一些基础的东西,但是刚刚对于测试和学习好像有了一点新的想法,所以从困难的数理统计复习中停下来,希望记录下来。 权限的提取相对简单,而且用时较少,直接用androguard 的...
  • 安装中文输入法)后,接下来安装显卡驱动相关,配置好深度学习环境,虽然课题中用不到太多,但是有时测试做对比实验用,为避免不必要麻烦,还是安装以下。根据显卡驱动对应表,最开始准备安装384.90版本的驱动(之前...
  • PCB尺子制作心得

    千次阅读 热门讨论 2018-12-27 17:50:04
    PCB尺子制作心得写在开始正文开始尺子局部介绍及操作方法 写在开始 实验室经常需要制作PCB电路板,师兄让我...单单无用的PCB板回来未免有点浪费,想着2019年即将来了,那就加工一批PCB的尺子好了,即能对比各...
  • Wireshark初步入门

    2019-09-23 19:56:48
    为了能让Wireshark得到一些数据包,你可以开始你的第一次数据包捕获实验了。你可能会想:“当网络什么问题都没有的时候,怎么能捕获数据包呢?” 首先,网络总是有问题的。 其次,数据包分析并不一定要等到有问题...
  • python 进阶知识与应用

    2021-01-23 16:57:22
    毕业前在学校当然也写代码的,作为一个科研人员,更多时间是在看论文,只有在做实验或刷题时才写代码。那时候真的忍不住感叹,为什么我写的代码看起来这么low?可读性也不怎么好。一对比,隔壁实验室工作了三年再...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

对比实验怎么做