精华内容
下载资源
问答
  • 面向对象与面向过程的本质的区别

    万次阅读 多人点赞 2018-01-10 20:19:04
    如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点时间来研读一下这篇博客,你一定会有很大的收获的! 一、面向对象与面向过程的区别 面向过程就是分析出解决问题所...

    前言:

    如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点时间来研读一下这篇博客,你一定会有很大的收获的!

    一、面向对象与面向过程的区别

    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

    可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

    如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

    可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

    上述的内容是从网上查到的,觉得这个例子非常的生动形象,我就写了下来,现在就应该理解了他俩的区别了吧,其实就是两句话,面向对象就是高度实物抽象化、面向过程就是自顶向下的编程!

    二、面向对象的特点

    在了解其特点之前,咱们先谈谈对象,对象就是现实世界存在的任何事务都可以称之为对象,有着自己独特的个性

    这里写图片描述
    属性用来描述具体某个对象的特征。比如小志身高180M,体重70KG,这里身高、体重都是属性。
    面向对象的思想就是把一切都看成对象,而对象一般都由属性+方法组成!

    属性属于对象静态的一面,用来形容对象的一些特性,方法属于对象动态的一面,咱们举一个例子,小明会跑,会说话,跑、说话这些行为就是对象的方法!所以为动态的一面, 我们把属性和方法称为这个对象的成员!

    :具有同种属性的对象称为类,是个抽象的概念。比如“人”就是一类,期中有一些人名,比如小明、小红、小玲等等这些都是对象,类就相当于一个模具,他定义了它所包含的全体对象的公共特征和功能,对象就是类的一个实例化,小明就是人的一个实例化!我们在做程序的时候,经常要将一个变量实例化,就是这个原理!我们一般在做程序的时候一般都不用类名的,比如我们在叫小明的时候,不会喊“人,你干嘛呢!”而是说的是“小明,你在干嘛呢!”

    面向对象有三大特性,分别是封装性、继承性和多态性,这里小编不给予太多的解释,因为在后边的博客会专门总结的!

    三、面向过程与面向对象的优缺点

    很多资料上全都是一群很难理解的理论知识,整的小编头都大了,后来发现了一个比较好的文章,写的真是太棒了,通俗易懂,想要不明白都难!

    用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。

    蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

    蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

    到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

    盖浇饭的好处就是"菜"“饭"分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是"可维护性"比较好,“饭” 和"菜"的耦合度比较低。蛋炒饭将"蛋”“饭"搅和在一起,想换"蛋”"饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
      
    看了这篇文章,简单的总结一下!

    面向过程

    优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
    缺点:没有面向对象易维护、易复用、易扩展

    面向对象

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
    缺点:性能比面向过程低

    展开全文
  • MyISAM与InnoDB 的区别(9个不同点)

    万次阅读 多人点赞 2018-09-23 09:49:21
    区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2. InnoDB支持外键,而MyISAM不...

    区别:

    1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 

    2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败; 

    3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。

           MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

           也就是说:InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值;而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针。

     

    4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快(注意不能加有任何WHERE条件);

    那么为什么InnoDB没有了这个变量呢?

        因为InnoDB的事务特性,在同一时刻表中的行数对于不同的事务而言是不一样的,因此count统计会计算对于当前事务而言可以统计到的行数,而不是将总行数储存起来方便快速查询。InnoDB会尝试遍历一个尽可能小的索引除非优化器提示使用别的索引。如果二级索引不存在,InnoDB还会尝试去遍历其他聚簇索引。
        如果索引并没有完全处于InnoDB维护的缓冲区(Buffer Pool)中,count操作会比较费时。可以建立一个记录总行数的表并让你的程序在INSERT/DELETE时更新对应的数据。和上面提到的问题一样,如果此时存在多个事务的话这种方案也不太好用。如果得到大致的行数值已经足够满足需求可以尝试SHOW TABLE STATUS
     

    5. Innodb不支持全文索引,而MyISAM支持全文索引,在涉及全文索引领域的查询效率上MyISAM速度更快高;PS:5.7以后的InnoDB支持全文索引了

    6. MyISAM表格可以被压缩后进行查询操作

    7. InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁

           InnoDB的行锁是实现在索引上的,而不是锁在物理行记录上。潜台词是,如果访问没有命中索引,也无法使用行锁,将要退化为表锁。

    例如:
    
        t_user(uid, uname, age, sex) innodb;
    
        uid PK
        无其他索引
        update t_user set age=10 where uid=1;             命中索引,行锁。
    
        update t_user set age=10 where uid != 1;           未命中索引,表锁。
    
        update t_user set age=10 where name='chackca';    无索引,表锁。

     

    8、InnoDB表必须有唯一索引(如主键)(用户没有指定的话会自己找/生产一个隐藏列Row_id来充当默认主键),而Myisam可以没有

    9、Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI

            Innodb:frm是表定义文件,ibd是数据文件

            Myisam:frm是表定义文件,myd是数据文件,myi是索引文件

     

    如何选择:

        1. 是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM;

        2. 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读也有写,请使用InnoDB。

        3. 系统奔溃后,MyISAM恢复起来更困难,能否接受;

        4. MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。

     

    InnoDB为什么推荐使用自增ID作为主键?

        答:自增ID可以保证每次插入时B+索引是从右边扩展的,可以避免B+树和频繁合并和分裂(对比使用UUID)。如果使用字符串主键和随机主键,会使得数据随机插入,效率比较差。

     

    innodb引擎的4大特性

           插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)

     

    展开全文
  • 彻底理解Runnable和Thread的区别

    万次阅读 多人点赞 2019-07-30 09:45:42
      在实际工作中,我们很可能习惯性地选择Runnable或Thread之一直接使用,根本没在意二者的区别,但在面试中很多自以为是的菜货面试官会经常而且非常严肃的问出:请你解释下Runnable或Thread的区别?尤其是新手就...

    鄙人的新书《Elasticsearch权威指南》正式出版发行,欢迎购买!本书由华为、中兴高级技术专家全面审读并撰序,助您挑战百万年薪 购书链接:在这里插入图片描述

    《Elasticsearch权威指南》

    欢迎关注鄙人公众号,技术干货随时看!
    在这里插入图片描述

      在实际工作中,我们很可能习惯性地选择Runnable或Thread之一直接使用,根本没在意二者的区别,但在面试中很多自以为是的菜货面试官会经常而且非常严肃的问出:请你解释下Runnable或Thread的区别?尤其是新手就容易上当,不知如何回答,就胡乱编一通。鄙人今天告诉你们这二者本身就没有本质区别,就是接口和类的区别。问出这个问题的面试官本身就是个二流子!如果非要说区别,请看如下:

    1. Runnable的实现方式是实现其接口即可
    2. Thread的实现方式是继承其类
    3. Runnable接口支持多继承,但基本上用不到
    4. Thread实现了Runnable接口并进行了扩展,而Thread和Runnable的实质是实现的关系,不是同类东西,所以Runnable或Thread本身没有可比性。

      网络上流传的最大的一个错误结论:Runnable更容易可以实现多个线程间的资源共享,而Thread不可以! 这是一个二笔的结论!网络得出此结论的例子如下:

    //program--Thread
    public class Test {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            new MyThread().start();
            new MyThread().start();
    
        }
    
    
         static class MyThread extends Thread{
            private int ticket = 5;
            public void run(){
                while(true){
                    System.out.println("Thread ticket = " + ticket--);
                    if(ticket < 0){
                        break;
                    }
                }
            }
        }
    }
    

    运行结果如下:

    Thread ticket = 5
    Thread ticket = 5
    Thread ticket = 4
    Thread ticket = 3
    Thread ticket = 2
    Thread ticket = 1
    Thread ticket = 0
    Thread ticket = 4
    Thread ticket = 3
    Thread ticket = 2
    Thread ticket = 1
    Thread ticket = 0
    
    Process finished with exit code 0
    
    

      很显然,总共5张票但卖了10张。这就像两个售票员再卖同一张票,原因稍后分析。现在看看使用runnable的结果:

    //program--Runnable
    public class Test2 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyThread2 mt=new MyThread2();
            new Thread(mt).start();
            new Thread(mt).start();
    
    
        }
        static class MyThread2 implements Runnable{
            private int ticket = 5;
            public void run(){
                while(true){
                    System.out.println("Runnable ticket = " + ticket--);
                    if(ticket < 0){
                        break;
                    }
                }
            }
        }
    }
    

      运行结果如下:

    
    Runnable ticket = 5
    Runnable ticket = 4
    Runnable ticket = 3
    Runnable ticket = 1
    Runnable ticket = 0
    Runnable ticket = 2
    
    Process finished with exit code 0
    
    

      嗯,嗯,大多数人都会认为结果正确了,而且会非常郑重的得出:Runnable更容易可以实现多个线程间的资源共享,而Thread不可以! 真的是这样吗?大错特错!
      program–Thread这个例子结果多卖一倍票的原因根本不是因为Runnable和Thread的区别,看其中的如下两行代码:

            new MyThread().start();
            new MyThread().start();
    

      例子中,创建了两个MyThread对象,每个对象都有自己的ticket成员变量,当然会多卖1倍。如果把ticket定义为static类型,就离正确结果有近了一步(因为是多线程同时访问一个变量会有同步问题,加上锁才是最终正确的代码)。
    现在看program–Runnable例子中,如下代码:

            MyThread2 mt=new MyThread2();
            new Thread(mt).start();
            new Thread(mt).start();        
    

      只创建了一个Runnable对象,肯定只卖一倍票(但也会有多线程同步问题,同样需要加锁),根本不是Runnable和Thread的区别造成的。再来看一个使用Thread方式的正确例子:

    public class Test3  extends Thread {
    
            private int ticket = 10;
    
            public void run(){
                for(int i =0;i<10;i++){
                    synchronized (this){
                        if(this.ticket>0){
                            try {
                                Thread.sleep(100);
                                System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--));
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
    
            public static void main(String[] arg){
                Test3 t1 = new Test3();
                new Thread(t1,"线程1").start();
                new Thread(t1,"线程2").start();
            }
    
    }
    

    运行结果如下:

    线程1卖票---->10
    线程1卖票---->9
    线程1卖票---->8
    线程1卖票---->7
    线程1卖票---->6
    线程1卖票---->5
    线程1卖票---->4
    线程1卖票---->3
    线程1卖票---->2
    线程1卖票---->1
    
    Process finished with exit code 0
    
    

      上例中只创建了一个Thread对象(子类Test3),效果和Runnable一样。synchronized这个关键字是必须的,否则会出现同步问题,篇幅太长本文不做讨论。
      上面讨论下来,Thread和Runnable没有根本的没区别,只是写法不同罢了,事实是Thread和Runnable没有本质的区别,这才是正确的结论,和自以为是的大神所说的Runnable更容易实现资源共享,没有半点关系!
      现在看下Thread源码:

    public
    class Thread implements Runnable {
        /* Make sure registerNatives is the first thing <clinit> does. */
        private static native void registerNatives();
        static {
            registerNatives();
        }
    
        private volatile String name;
        private int            priority;
        private Thread         threadQ;
        private long           eetop;
    

      可以看出,Thread实现了Runnable接口,提供了更多的可用方法和成员而已。

      结论,Thread和Runnable的实质是继承关系,没有可比性。无论使用Runnable还是Thread,都会new Thread,然后执行run方法。用法上,如果有复杂的线程操作需求,那就选择继承Thread,如果只是简单的执行一个任务,那就实现runnable。
      再遇到二笔面试官问Thread和Runnable的区别,你可以直接鄙视了!

    展开全文
  • Git fetch和git pull的区别

    万次阅读 多人点赞 2012-06-14 20:56:10
    Git中从远程的分支获取最新的版本到本地有这样2个命令:1.git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin mastergit log -p master..origin/mastergit merge origin/maste...

    原文: http://www.tech126.com/git-fetch-pull/ 

    Git中从远程的分支获取最新的版本到本地有这样2个命令:
    1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

    
     

        
    git fetch origin master
    git log -p master..origin/master
    git merge origin/master

        以上命令的含义:
       首先从远程的origin的master主分支下载最新的版本到origin/master分支上
       然后比较本地的master分支和origin/master分支的差别
       最后进行合并
       上述过程其实可以用以下更清晰的方式来进行:

    
     

    git fetch origin master:tmp
    git diff tmp 
    git merge tmp

        从远程获取最新的版本到本地的test分支上
       之后再进行比较合并
    2. git pull:相当于是从远程获取最新版本并merge到本地

    
     

    git pull origin master

    上述命令其实相当于git fetch 和 git merge
    在实际使用中,git fetch更安全一些
    因为在merge前,我们可以查看更新情况,然后再决定是否合并。

    展开全文
  • springboot和springmvc的区别

    万次阅读 多人点赞 2019-03-15 22:21:37
    面试题:你知道springboot和springmvc的区别是什么? 之前自己搭过springboot的相关项目,但是如何进行比较,从自我感觉来看就是使用springboot用起来几乎没有配置,个人搭的项目没有用到配置相关的内容。于是我就...
  • 终于懂了TCP和UDP协议区别

    万次阅读 多人点赞 2020-03-26 12:03:28
    终于懂了TCP和UDP协议区别
  • get请求和post请求的详细区别

    万次阅读 多人点赞 2019-06-06 16:29:40
    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中...
  • 同步和异步的区别

    万次阅读 多人点赞 2018-10-25 19:10:42
    原文地址:同步和异步,区别 同步: 同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的...
  • Python:pip 和pip3的区别

    万次阅读 多人点赞 2018-06-06 16:05:01
    装完python3后发现库里面既有pip也有pip3,不知道它们的区别,因此特意去了解了一下。 解释 先搜索了一下看到了如下的解释, 安装了python3之后,库里面既会有pip3也会有pip 1. 使用pip install XXX 新...
  • JAVA重写和重载的区别

    万次阅读 多人点赞 2018-07-11 22:04:05
    有什么区别? 答:  重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)...
  • 数据仓库之OLAP与OLTP区别

    万次阅读 2020-06-29 17:18:36
    关于数据仓库 数据仓库的定义 一个面向主题,集成的,稳定,随时间变化的数据集合,以用于支持...数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别 OLTP(联机事务处理) 操作型处理,叫联机事务处理OLTP(On-Line
  • hive like与rlike的区别

    万次阅读 2016-03-28 14:55:31
    like与rlike的区别: like不是正则,而是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。 rlike是正则,正则的写法与java一样。'\'需要使用'\\',例如'\w'需要使用'\\w' hive> select "aaaaa" like...
  • Java进阶(三十五)java int与integer的区别

    万次阅读 多人点赞 2016-07-19 19:26:08
    java int与integer的区别前言 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象。 1.Java 中的数据类型分为基本数据类型...
  • 关于JRE和JDK的区别,终于知道他们的区别

    万次阅读 多人点赞 2017-11-11 16:16:07
    导致,一直弄不明白,JDK和JRE的区别是什么??经过几年的“钻研”,“开悟”,我终于明白了。哦哈哈哈JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。...
  • Python列表和元组的详细区别

    万次阅读 多人点赞 2018-06-06 20:40:06
    Python列表和元组的详细区别 一、列表和元组的区别 二、列表(List) 三、元组(Tuple) Python列表和元组的详细区别 一、列表和元组的区别 列表是动态数组,它们不可变且可以重设长度(改变其内部元素...
  • RIP和OSPF的区别

    万次阅读 多人点赞 2019-01-02 08:08:20
    RIP和OSPF的区别 (1)【名字不同】RIP(路由信息协议)——分布式的基于距离向量的路由选择协议;OSPF(开放最短路径优先协议)—— 使用分布式的基于链路状态的路由选择协议 (2)【工作核心不同】RIP:数跳数;...
  • 99%的人都理解错了HTTP中GET与POST的区别

    万次阅读 多人点赞 2019-03-02 23:43:55
    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问...
  • Java>>与>>>的区别

    万次阅读 多人点赞 2018-07-22 16:44:24
    &gt;&gt;:带符号右移。正数右移高位补0,负数右移高位补1。比如: 4 &gt;&gt; 1,结果是2;-4 &gt;&gt; 1,结果是-2。-2 &...没区别。 对于负数而言,-2 &gt;&
  • 代理软件中PAC模式和全局模式的区别

    万次阅读 多人点赞 2019-04-25 08:35:43
    区别一:使用流量多少不一样。 PAC模式:节省流量。 全局模式:流量消耗较多。 区别二:运行速度快慢不一样。 PAC模式:国内网站依旧走本地网络,速度快,绝大部分国外网站都走代理,速度也快。。 全局模式:...
  • 进程和线程的主要区别(总结)

    万次阅读 多人点赞 2018-06-13 10:11:52
    根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类...
  • drop与delete的区别

    万次阅读 多人点赞 2018-08-04 10:00:28
    drop与delete的区别: 初学sql语言,难免被drop和delete用法弄混,二者都有删除的意思。那它们又有什么区别呢? drop主要用于删除结构 例如删除数据库:drop database XX,删除表 drop table XX。字段...
  • ArrayList和LinkedList区别及使用场景

    万次阅读 多人点赞 2018-09-07 18:51:40
    ArrayList和LinkedList区别及使用场景 1. LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同。ArrayList是基于数组实现的,LinkedList是基于双链表实现的。另外LinkedList类不仅是List接口的...
  • Spring的两种代理JDK和CGLIB的区别浅谈

    万次阅读 多人点赞 2016-08-04 17:39:49
    一、原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成...
  • OLTP与OLAP的区别

    万次阅读 多人点赞 2016-03-30 10:00:05
    OLTP和OLAP的区别联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。 OLTP的特点一般有: 1.实时性...
  • Java—重写与重载的区别

    万次阅读 多人点赞 2018-06-03 18:22:24
    Java—重写与重载的区别 这几周开始看Java的知识,发现有一个有趣的现象就是,前两天刚看过的知识点,过一天又忘掉了。而且很多东西堆在脑子里像浆糊一样。所以边学习边总结是很重要的,今天想写一篇关于重写和重载...
  • Java和C++的区别

    万次阅读 多人点赞 2019-07-02 20:19:31
    Java和C++的区别: 1.Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。 2.C++是编译...
  • Mybatis-Plus和Mybatis的区别

    万次阅读 多人点赞 2019-04-01 11:09:50
    Mybatis-Plus是一个Mybatis的增强工具,它在Mybatis的基础上做了增强,却不做改变。我们在使用Mybatis-Plus之后既可以使用Mybatis-Plus的特有功能,又能够正常使用Mybatis的原生功能。Mybatis-Plus(以下简称MP)是为...
  • 前端模块化,AMD与CMD的区别

    万次阅读 多人点赞 2016-08-03 17:15:51
    AMD和CMD的区别,require和seajs的用法,CommonJS的规范...
  • 面向过程编程和面向对象编程的步骤、特性与区别? ** 面向过程编程和面向对象编程的区别 ** 面向过程编程: 分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的依次调用即可。 优点...
  • 在元素上写事件和addEventListent()的区别 onclick添加事件不能绑定多个事件,后面绑定的会覆盖前面的。而addEventListener能添加多个事件绑定,按顺序执行。 addEventListener方式,不支持低版本的IE。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,105,133
精华内容 442,053
关键字:

区别