精华内容
下载资源
问答
  • vue中的attribute 和 property 是什么意思

    千次阅读 2020-07-11 11:44:09
    作为 attribute 和 property 的 value 及 Vue.js 的相关处理 attribute 和 property 是 Web 开发中,比较容易混淆的概念,而对于 value,因其特殊性,更易困惑,本文尝试做一下梳理和例证

    作为 attribute 和 property 的 value 及 Vue.js 的相关处理

    attribute 和 property 是 Web 开发中,比较容易混淆的概念,而对于 value,因其特殊性,更易困惑,本文尝试做一下梳理和例证


    attribute 和 property 的概念

    简单的说,attribute 是元素标签的属性,property 是元素对象的属性,例如:

    <input id="input" value="test value">
    <script>
    let input = document.getElementById('input');
    console.log(input.getAttribute('value')); // test value
    console.log(input.value); // test value
    </script>
    
    • input 的 value attribute 是通过标签里的 value=“test value” 定义的,可以通过input.getAttribute(‘value’) 获取,可以通过 input.setAttribute(‘value’, ‘New Value’) 更新
    • input 的 value property 可通过 input.value 获取和更新,初始值是与 attribute 中的赋值一致的

    attribute 和 property 的绑定

    如果在最开始的时候,更新 attribute value 的值,property 的值也会随之改变

    但是更新 property value 的值(在文本框输入或给 input.value 赋新值 ),attribute 的值不会随之改变,而且此时再更新 attribute 的值,property 的值也不再随之改变,如此动画所示,也可访问此页面尝试进行操作

    这其实是脏值标记(dirty value flag)在起作用,dirty value flag 的初始值为 false,即 attribute value 的更新默认会改变对应的 property value,但是一旦用户交互修改了 property value,dirty value flag 的值就变为 true,即attribute value 的更新就不会改变对应的 property value 了

    所以在实际项目中,我们一般都是在处理作为 property 的 value


    Vue.js 对 value 的处理

    一般情况使用 :value

    Vue.js 的 v-bind,一般情况下是在处理 attribute,如果要作为 property 处理的话,需要加上 .prop

    不过 v-bind:value 却大都默认为处理 property 值,因为被强制转化了,例如:

    <input id="input" :value="'test value'" >
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
    let input = new Vue({
      el: '#input',
      mounted () {
        console.log(this.$el.getAttribute('value')); // null
        console.log(this.$el.value); // test value
        console.log(this._vnode.data) // {attrs: {id: "input"}, domProps: {value: "test value"}}
      }
    });
    </script>
    

    可见,Vue.js 将 value 作为 VNode 的 data 中的 domProps 的属性,而不是 attrs 的属性,所以挂载后会成为作为 property 的 value

    在 Vue.js 源码中,强制转化 property 的处理如下:

    // src/compiler/parser/index.js
    function processAttrs (el) {
    ...
            if ((modifiers && modifiers.prop) || (
              !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)
            )) {
              addProp(el, name, value, list[i], isDynamic)
            } else {
              addAttr(el, name, value, list[i], isDynamic)
            }
    

    其中 platformMustUseProp 在 web 平台的定义如下:

    // src/platforms/web/util/attrs.js
    const acceptValue = makeMap('input,textarea,option,select,progress')
    export const mustUseProp = (tag: string, type: ?string, attr: string): boolean => {
      return (
        (attr === 'value' && acceptValue(tag)) && type !== 'button' ||
        (attr === 'selected' && tag === 'option') ||
        (attr === 'checked' && tag === 'input') ||
        (attr === 'muted' && tag === 'video')
      )
    }
    

    由上可知,类型不为 button 的 input, textarea, option, select, progress 的 value 会强制作为 property,而不需要设置为 :value.prop

    例如 textarea 标签,其本身其实并不支持 value attribute,所以以下代码中的 value 的值并不会显示在多行文本框中

    <textarea value="test value"></textarea>
    

    复制代码但是在 Vue.js 中, 以下代码能成功绑定到 value property 并显示在多行文本框中

    <textarea :value="'test value'"></textarea>
    

    特殊情况使用 :value.prop

    以上 Vue.js 源码需要注意的还有,强制作为 property, 还要满足 !el.component,即不为动态组件,因为动态组件的 el.component 的值为其 is attribute 的值

    即动态组件的的 v-bind 默认都是作为 attribute的,如果要作为 property,就要使用 .prop,例如:

    <div id="app">
      <component :is="element" :value.prop="'test value'"></component>
      <button @click="change">Change</button>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
    let app = new Vue({
      el: '#app',
      data: {
        element: 'input'
      },
      methods: {
        change () {
          this.element = 'input' === this.element ? 'textarea' : 'input';
        }
      }
    });
    </script>
    

    如果以上 component 中,删除 :value.prop 的 .prop,切换到 textarea 时,其值就不会显示在多行文本框中,可以在此页面点击切换标签查看


    总结

    • 作为 attribute 和 property 的 value 的绑定关系会在用户交互更新值后失效
    • Vue.js 一般使用 :value 即可让 value 作为 property
    • Vue.js 动态模版需要使用 :value.prop 才可让 value 作为 property
    展开全文
  • mysql技能梳理

    2020-03-27 22:21:44
    知道事务的基本概念,那么就该知道数据库锁是什么意思,然后有些时候死锁,数据库的卡顿,长时间没有响应都是因什么而起 索引和查询 MySQL 设计思想是”如果内存够,就要多利用内存,尽量减少磁盘访问“,而B+...

    事务

    不管是什么数据库,事务都是要考虑的。 一般情况下开发注重的是隔离性,如幻读,脏读,不可重复读。然后就是MySQL是怎么实现的。

    知道事务的基本概念,那么就该知道数据库锁是什么个意思,然后有些时候死锁,数据库的卡顿,长时间没有响应都是因什么而起

    索引和查询

    MySQL 设计思想是”如果内存够,就要多利用内存,尽量减少磁盘访问“,而B+树就是能拥有高效查询减少磁盘访问次数的存储结构。基本上纵观MySQL的知识点,基本上都是遵循这个思想。

    索引的结构

    学习索引,要知道索引是什么样子的结构,为啥用B+,不用数组,不用哈希表,不用二叉树。一是为了减少io操作,二是结构不行,哈希只适合等值,数组插入性能不行,不过用来做静态存储还是可以的。

    主键: 叶子节点存的是整行的数据。
    非主键:叶子节点存的是主键的值

    明白了键的存储方式后,查询的时候有一项优化叫覆盖索引,目的就是避免回表,实际操作是联合索引,使用联合索引就要知道最左匹配原则,然后就是知道在查询时,多条件的时候,怎么使用索引的

    索引的创建和维护

    创建时需要考量的有索引的长度,索引的使用场景,如果是联合索引还需要考虑怎么利用最左匹配原则来少创建索引

    需要考虑长度的一般都是字符串索引,太长的是创建不了的。如果太长了也需要创建,可以考虑指给前缀创建索引,如果字符串类似身份证号似的,前缀都差不多一样,就需要换个思路,例如倒过来,使用hash值等

    索引随着数据的删除或新增会产生空洞的,有时候会发现删了半个表的数据了,但磁盘空间没减少多少,这是因为索引的空间没有释放。针对这些,我们可以通过重建索引来解决

    现在很多业务都是逻辑删

    SQL

    关于数据库的基本概念和存储的方式理解后,我们就可以进一步去分析理解一条SQL的执行效率是因何而定的

    order by

    排序的时候有个用来排序的空间sort_buffer, 先说对无索引的排序,MySQL会根据内存的大小决定使用全字段排序还是rowid排序,rowid就是只在sort_buffer 对需要排序的的字段+主键进行排序,然后根据主键进行回表取回所有数据。全字段排序就是全字段都在sort_buffer里,排序完直接给结果,就不用回表了。因为回表有磁盘访问,所以咱们尽量避免。

    刚入行时,前辈就说,使用mybatis在select时别用*,需要什么字段就写什么。原因是传输的数据多,io消耗大,确实,但不仅消耗io,还有内存呢。

    优化 使用覆盖索引,查询的条件以及order by的条件能联合起来,这样查的时候基本上就是有序的,可以避免排序

    覆盖索引简直是万能,但是,索引长度越长,占用的空间也就越大。所以还是需要慎重的。

    join

    很多公司优化最多的恐怕就是join。

    用小表作为驱动表,小表就是where后行数小的表。有时候我们会用left join ,但实际上有时候并不是左边的就是驱动表,哪个为驱动表是优化器来选择的。不过我们还是可以根据业务来预估的。

    join的时候,也有个空间用来join,join_buffer。

    避免全表扫描,尽管我们有查询条件,但在没有索引的情况下必然是全表扫描,然后两个表都是全表扫描,然后再匹配一下,最简单的join语句,也需要计算 tableA.size*tableB.size次。表越大,查询时间约久。

    换种思路

    使用临时表呀,当两个非常大的表join时,把要查询的东西插入临时表,再从临时表查询,也许会更快。

    使用前,要先测试

    使用hash join,数据库中是没有hash join,这个操作是在业务代码里。java举例来说,多个表join时,可以分别根据条件查出list,转成HashMap,然后遍历匹配就好啦~

    group by

    引用课程里的原话:

    如果对 group by 语句的结果没有排序要求,要在语句后面加 order by null;

    尽量让 group by 过程用上表的索引,确认方法是 explain 结果里没有 Using temporary 和 Using filesort;

    如果 group by 需要统计的数据量不大,尽量只使用内存临时表;

    也可以通过适当调大 tmp_table_size 参数,来避免用到磁盘临时表;

    如果数据量实在太大,使用 SQL_BIG_RESULT 这个提示,来告诉优化器直接使用排序算法得到 group by 的结果。

    count

    Count 是需要扫表的,而对于有索引的字段来说,min,max不需要,因为最大值最小值就是索引的边界嘛

    我们有时争议 count(0),count(字段)还是count(*)。 如果不需要跳过null的情况,还是用 \*的好,这个MySQL是有优化的。总结其说的,count(*)和coun(0)类似,> count(主键) > count(普通字段)

    参考 https://time.geekbang.org/column/article/72775

    网上还有其他理论的,https://www.cnblogs.com/-flq/p/10302965.html

    但一个给出了原因,第二个只说了结论,我更倾向于前者说的

    语句的执行

    更新语句

    update t set a=1 where id=2; 

    基本上操作都是在内存里,所以查询的时候内存如果有也是直接取内存的。当需要从数据库查的时候,有个merge的过程,从charge_buffer 到磁盘。

    在这里我们要重点了解下redolog ,MySQL不会直接把更新操作更新到磁盘上,是把更新操作都记录在redolog里,攒的差不多了,再一起更新到磁盘。redologbinlog的二次提交也是MySQL的事务的重要操作。

    当MySQL宕机时,redolog也是恢复数据的重要一环。

    查询语句

    select xx,yy from t where xx =1 order by yy;

    查询缓存的在8.0版本开始删除了。

    日志

    MySQL能够回滚到任何一个时刻的状态,这是真的。这个需要从binlog讲起。binlog里记录了所有的操作记录,有3种格式,statement,row,mixed。statement基本上跟执行的SQL一致,row则包含当时的所有字段的值,mixed就是混合的状态。考虑数据库的恢复以及主从同步的情况,可能需要设置成mixed的模式。

    三种模式的讲解参考 : https://www.cnblogs.com/rinack/p/9595370.html

    性能

    基本上用好索引后,大部分优化都解决了。但除此之外,还有一些关于锁的,关于IO的。

    例如大规模的删数据,修改表结构,都会产生锁,当并发量的时候,更是执行时间看不见尽头...

    偶尔什么也没做,也会发现数据库卡一下。这可能是刷新脏页。脏页就是内存和磁盘不一致的页面,在适当的场景需要同步merge。例如redolog写满了,内存不足了,还有2个场景基本不用考虑MySQL空闲了,MySQL关闭了。刷脏页的速度也跟脏页的比例,写磁盘的速度,不过写在流行的SSD就提速了很多,很多服务器IOPS已经不再是瓶颈。

    刷新脏页频率可以通过参数设置,从而达到调优的效果,有点像java的GC,不同的是一个是持久化,一个是清理内存。emmm,前者在持久化也清理内存!

    高可用

    主从,主主互备

    在还是个萌新的时候,就搞过主从,是直接按照网上的文档弄的,当时知其然不知其所以然。现在总结下,这个思想类似算法的分而治之然后再收集合并。纲领是这样,做起来很复杂。思路基本上2种

    1. 使用代理,类似 mycat
    2. 系统直连,在代码里配置上主从的数据库地址,然后拦截器根据语句属性自动切换

    各有优缺点,第一种开发上省事了,但运维的难度还是有的,第二种开发上麻烦点,但现在成熟的代码库挺多的,但灵活度上可能不如第一种,例如切换主从,切换数据库...

    但不管那种方式,都有主从同步延时的风险,这个可能是因为网络,可能是因为从库硬件不行,也有可能使用了大事务。总之,能预防,有监控,发生问题,有解决方案。

    展开全文
  • 引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,... 泛型的英文解释为generic,当然我们查询这个单词时,更多的解释是通用的意思,然而有些人会...

    引言:

    前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解,那就让我们一起进入本专题的学习的。

     

    一、泛型的是什么

      泛型的英文解释为generic,当然我们查询这个单词时,更多的解释是通用的意思,然而有些人会认为明明是通用类型,怎么成泛型了的,其实这两者并不冲突的,泛型本来代表的就是通用类型,只是微软可能有一个比较官方的此来形容自己引入的特性而已,既然泛型是通用的, 那么泛型类型就是通用类型的,即泛型就是一中模子。 在生活中,我们经常会看到模子,像我们平常生活中用的桶子就是一个模子,我们可以用桶子装水,也可以用来装油,牛奶等等,然而把这些都装进桶子里面之后,它们都会具有桶的形状(水,牛奶和油本来是没有形的),即具有模子的特征。同样,泛型也是像桶子一样的模子,我们可以用int类型,string类型,类去实例化泛型,实例化之后int,string类型都会具有泛型类型的特征就是说可以使用泛型类型中定义的方法,如List<T>泛型,如果用int去初始化它后,List<int>的实例就可以用List<T>泛型中定义的所有方法,用string去初始化它也一样,和我们生活中的用桶装水,牛奶,油等非常类似

    二、C# 2.0为什么要引入泛型

      大家通过第一部分知道了什么是泛型,然而C#2.0中为什么要引入泛型的?这答案当然是泛型有很多好处的。下面通过一个例子来说明C# 2.0中为什么要引入泛型,然后再介绍下泛型所带来的好处有哪些。

      当我们要写一个比较两个整数大小的方法时,我们可能很快会写出下面的代码:

     public class Compare
        {
            // 返回两个整数中大的那一项
            public static int Compareint(int int1, int int2)
            {
                if (int1.CompareTo(int2) > 0)
                {
                    return int1;
                }
    
                return int2;
            }
        }

    然而需求改变为又要实现比较两个字符串的大小的方法时,我们又不得不在类中实现一个比较字符串的方法:

      // 返回两个字符串中大的一项
            public static string Comparestring(string str1, string str2)
            {
                if (str1.CompareTo(str2) > 0)
                {
                    return str1;
                }
    
                return str2;
            }

    如果需求又改为要实现比较两个对象之间的大小时,这时候我们又得实现比较两个对象大小的方法,然而我们中需求中可以看出,需求中只是比较的类型不一样的,其实现方式是完全一样的,这时候我们就想有没有一种类型是通用的,我们可以把任何类型当做参数传入到这个类型中去实例化为具体类型的比较,正是有了这个想法,同时微软在C#2.0中也想到了这个问题,所以就导致了C#2.0中添加了泛型这个新的特性,泛型就是——通用类型,有了泛型之后就可以很好的帮助我们刚才遇到的问题的,这样就解决了我们的第一个疑问——为什么要引入泛型。下面是泛型的实现方法:

     public class Compare<T> where T : IComparable
        {
            public  static T CompareGeneric(T t1, T t2)
            {
                if (t1.CompareTo(t2) > 0)
                {
                    return t1;
                }
                else
                {
                    return t2;
                }
            }
        }

    这样我们就不需要针对每个类型实现一个比较方法,我们可以通过下面的方式在主函数中进行调用的:

     public class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Compare<int>.CompareGeneric(3, 4));
                Console.WriteLine(Compare<string>.CompareGeneric("abc", "a"));
                Console.Read();
            }
        }

      通过上面的代码大家肯定可以理解C# 2.0中为什么要引入泛型的,然而泛型可以给我们带什么好处的呢?从上面的例子可以看出,泛型可以帮助我们实现代码的重用,大家很清楚——面向对象中的继承也可以实现代码的重用,然而泛型提供的代码的重用,确切的说应该是 “算法的重用”(我理解的算法的重用是我们在实现一个方法中,我们只要去考虑如何去实现算法,而不需要考虑算法操作的数据类型的不同,这样的算法实现更好的重用,泛型就是提供这样的一个机制)。

      然而泛型除了实现代码的重用的好处外,还有可以提供更好的性能和类型安全,下面通过下面一段代码来解释下为什么有这两个好处的。

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Diagnostics;
    
    namespace GeneralDemo
    {
        public class Program
        {
            static void Main(string[] args)
            {
                Stopwatch stopwatch = new Stopwatch();
    
                // 非泛型数组
                ArrayList arraylist = new ArrayList();
    
                // 泛型数组
                List<int> genericlist= new List<int>();
                // 开始计时
                stopwatch.Start();
                for (int i = 1; i < 10000000; i++)
                {
                    genericlist.Add(i);
                    ////arraylist.Add(i);
                }
    
                // 结束计时
                stopwatch.Stop();
    
                // 输出所用的时间
                TimeSpan ts = stopwatch.Elapsed;
                string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                 ts.Hours, ts.Minutes, ts.Seconds,
                 ts.Milliseconds/10);
                Console.WriteLine("运行的时间: " + elapsedTime);
                Console.Read();
            }
        }
    }

    当我们把 arraylist.Add(i);这行代码注释掉来测试向泛型数组中加入数据的运行时间,下面是我机器的上运行的一个截图:

    当我们把 genericlist.Add(i);这行代码注释掉来测试向一个非泛型数组中加入数据的运行时间,下面附上我机器上的运行的时间截图:

    从两个结果中就可以明显看出 向泛型数组中的加入数据的效率远高于非泛型数组。有图有真相,这样就充分说明泛型的另一个好处——高性能,然而泛型类型也保证了类型安全(大家都知道,C#是一个强类型的语言的,强类型指的是在每定义一个变量都需要指定变量的类型),当我们向这个泛型genericlist数组中添加string类型的值时,此时就会造成编译器报错 无法从“string”转换为’int‘ ”

     

    三、小结

      本专题主要和大家分享了C# 2.0中为什么会引入委托,以及委托的好处,相信通过上面的介绍大家已经对委托有一个简单的认识以及对于泛型所带来的好处也有一个全面的认识,对于泛型的高性能本专题并没有给出原因,这个内容将会在下面一个专题向大家介绍。

     

     



         本文转自LearningHard 51CTO博客,原文链接:http://blog.51cto.com/learninghard/1049624,如需转载请自行联系原作者



    展开全文
  • 绑定将python闭包之前,先梳理一下闭包中的绑定操作。先看看2个相关的错误 NameError 和UnboundLocalErrorWhen a name is not found at all, a NameError exception is raised. If the name refers to a local ...

    绑定

    将python闭包之前,先梳理一下闭包中的绑定操作。

    先看看2个相关的错误 NameError 和UnboundLocalError

    When a name is not found at all, a NameError exception is raised. If the name refers to a local variable that has not been bound, a UnboundLocalError exception is raised. UnboundLocalError is a subclass of NameError.

    NameError比较好理解,即引用未定义,例如

    fun1()

    def fun1():

    pass

    但是UnboundLocalError却比较隐晦,意思是引用变量未绑定,注意这里的变量可能是已经定义了的。

    **If a name binding operation occurs anywhere within a code block, all uses of the name within the block are treated as references to the current block. **This can lead to errors when a name is used within a block before it is bound. This rule is subtle. Python lacks declarations and allows name binding operations to occur anywhere within a code block. The local variables of a code block can be determined by scanning the entire text of the block for name binding operations.

    下面来看看关于这种错误的隐晦bug。

    def outer_func():

    loc_var = "local variable"

    def inner_func():

    loc_var += " in inner func"

    return loc_var

    return inner_func

    clo_func = outer_func()

    clo_func()

    #UnboundLocalError: local variable "loc_var" referenced before assignment

    程序在执行clo_func()的时候出了问题。

    注意语句loc_var += " in inner func"可以看作loc_var = loc_var + " in inner func", 而在求取算式loc_var + " in inner func"的时候需要变量loc_var的值,而变量loc_var在函数inner_func内是有定义的,即loc_var += " in inner func", 因此inner_func会去引用该值,但是inner_func的loc_var却没有完成绑定,因此出现了UnboundLocalError错误,有点类似递归死循环。

    由此可见,python中总是优先引用自身代码块内出现的变量,不管先后次序。

    注意这里是不管先后次序,因此可能引发UnboundLocalError

    If a name binding operation occurs anywhere within a code block, all uses of the name within the block are treated as references to the current block.

    再举一个类似的例子

    import sys

    def add_path(new_path):

    path_list = sys.path

    if new_path not in path_list:

    import sys

    sys.path.append(new_path)

    add_path("./")

    此处path_list = sys.path 会引用第2个 import sys 而不是第一个, 由此导致了引用未绑定,因为sys被当成了还没有import。

    bind name:下面的操作均可视为绑定操作

    函数的形参

    import声明

    类和函数的定义

    赋值操作

    for循环首标

    异常捕获中相关的赋值变量

    还有一些关于UnboundLocalError的其他例子,如下

    1 def get_select_desc(name, flag, is_format = True):

    2 if flag:

    3 sel_res = "Do select name = %s" % name

    4 return sel_res if is_format else name

    5

    6 get_select_desc("Error", False, True)

    这种错误在编译的时候不会出错,但是在运行某些例子的时候就会出现UnboundLocalError。

    那如何避免这种错误呢?我觉得可以注意以下几点

    当局部变量与全局变量重名时

    当通过函数参数来选择是否绑定变量时

    这种错误和诸如C, C++等其他语言有较大差别,我觉得可能是因为在这些语言中变量的定义是明确的,如int i = 1; 。而在python中却不需要明确定义变量,因此python的每一条赋值语句在某种程度上可以说都是一次定义。但有时候这样子很不方便,于是python里也有了相应的语法,nonlocal与global定义, 但是注意nonlocal是python3的语法

    展开全文
  • 工作中,遇到一点问题,自己简单梳理一下。就是一个系统中,系统服务只会有一个,不同的用户共用一个系统服务,不像一般的应用程序,不同的用户启动的应用程序会有多个,用uid区别开,至此也解开了对一个一直有留意...
  • 最近在了解Hbase,写点学习笔记方便自己梳理知识逻辑,也同大家有些交流,希望也能帮到同样刚入门学习的新手,快速地了解其知识背景。因为很多专业词汇我不知其中文对应,所以就不翻译了,其实我认为有些词汇从中文...
  • 实验记录 | 梳理代码2

    2021-05-14 21:21:50
    凡事预则立,不预则废。我就不相信我多下一点功夫会搞不定它。我一定要把它弄清楚。 刚刚看到github上关于这个流程的讨论,对于...并且每一个文件的意思什么? 那个学弟之所以可以与作者“对话”,主要原因还是细致.
  • 原文:从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 由我进行二次编辑整理而成。 长文预警!...浏览器的硬件加速是什么意思? 从浏览器进程,再到浏览器内核运行,再到JS引擎单线程,再...
  • 3A和ISP算法概念梳理

    千次阅读 2019-08-01 13:41:39
    1、确认Ev offset正确性是什么意思? 类似于OB offset,对应于LSB中的LV的等级进行补偿校正。 2、target = (THD/Y)*CWV THD :from parameter Y :from N% of histogram brightness value. CWV :centre weighting ...
  • 1、contentType字段:这个字段的意思,ajax发送给后端的数据是什么类型 如果在ajax中不指定这个属性,则默认是urlencoded 那么,我们发送的数据的格式就如下,重点关注contentType和data这2个字段值 $.ajax({ ...
  • 第一课重点梳理

    2014-06-30 22:45:07
    今天马哥讲课重点在操作系统和API、ABI之间是什么意思,要搞清楚,还是要先看看第一个概念,系统调用。百度上说:系统调用的概念就是操作系统为应用程序提供的接口。而系统调用的工作原理跟圆一样,因为操作系统的...
  • Scrum | 产品列表梳理

    千次阅读 2019-12-19 18:14:20
    什么是Refinement Refinement 这个词是加工、提炼的意思,在scrum里,其实就是对下阶段的需求做一个讨论、澄清、细化的一个活动,希望通过这个活动,使得团队能对后续阶段的需求能有一个common understanding,尽量...
  • (1)静态的意思,用来修饰成员变量和成员函数 (2)静态的特点: 随着类的加载而加载 优先于对象存在 对所有对象共享 可以被类名直接调用 (3)静态的注意事项 A:静态方法只能访问静态成员 为什么:因为静态的内容是随着类...
  • 3、服务注册和发现是什么意思?Spring Cloud 如何实现?4、负载平衡的意义什么?5、什么是 Hystrix?它如何实现容错?6、什么是 Hystrix 断路器?我们需要它吗?7、什么是 Netflix Feign?它的优点是什么?8、什么是...
  • 什么是AOP 意思是面向切面编程,是通过预编译和运行期动态代理实现程序功能的统一维护的一种技术。 AOP的作用及其优势 作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强 优势:减少重复代码,提高开发...
  • 关于kvm知识做一次简单梳理回顾,首先了解kvm是什么?kvm的全称是Kernel-based Virtual Machine,从字面意思理解是基于kernel内核的虚拟机,其实是Linux内核模块,此模块在系统中的表现为虚拟字符设备/dev/kvm,使得...
  • 本文主要讲了一下UHS-III、A2、LV代表什么意思,下面一起来学习下
  • 在看Spring源码的过程中确实及其难受的,为什么,大部分人看源码基本都是debug一点一点去看的,最后发现,越追越离谱,越追越深,到最后都追到JDK源码了,也没有明白是什么意思! 对于学习源码,我的看法是,先去...
  • java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象。对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输。反序列化...
  • 一、字节串和字节数组 字节串(也叫字节序列)bytes 作用: 存储以字节为单位的数据 ...流量是什么:100MBPS 意思是一秒钟内有100M个位发出去(二进制数) 比如网络上发送一个字母‘A’,我们知道这些其实都...
  • Day9:编写API什么是API? API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用...写了那么多的本地小程序,一直在自己手机上玩没什么意思,总得和这个世界有点连接。
  • 首先我们看一下ORM是什么意思 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 。从效果上说,它...
  • 线性表,从字面意思上理解,它肯定是一种线性的,或者是“一对一”的关系。 他的第一个数据元素没有前驱,这个数据元素被称为开始节点也乐意成为头节点;最后一个数据元素没有后续,这个数据元素称为终端节点或者尾...
  • 结果收到邮件面试结束了,说什么"你优秀的学识和能力给我们留下了深刻的印象!经过对你综合情况的仔细评估,并经过与岗位需求进行谨慎匹配和权衡之后, 非常遗憾,我们这次没有和你达成合作。但你的信息已经被录入到...
  • 1:static关键字 (1)静态的意思。可以修饰类的成员(成员变量和成员方法); (2)静态成员的特点: A:随着类的加载而加载,生命周期最长。 B:优先于对象存在。 } C:被所有的对象所共享。 D:比非静态成员多了一...
  • [炭烧有话说]: Java Stream 已经出现很长时间了,但很多Java程序员还是不理解它的工作方式。 不会 Stream 不要紧,我们开发的时候可以不用 Stream,但...这段 Stream 代码共有 5 行,下面看每一行都是什么意思。 第1行
  • 在w3cschool教程中cookie的示例代码感觉每一行都不是很懂,所以单独拿出来梳理一下。 1、cookie是什么 当你浏览一个网站的时候,网站会默认你是第一次来访。但是有了cookie,你的浏览器就会告诉那个网站,你看我...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 203
精华内容 81
关键字:

梳理什么意思