精华内容
下载资源
问答
  • C语言的优点和缺点

    万次阅读 多人点赞 2016-01-26 14:07:11
    C语言的优点和缺点
    

    C语言的优点和缺点


    C语言的优点:


    1.面向过程的语言
    C语言是面向过程的语言,在这里用户创建过程或函数来执行他们的任务。面向过程的语言是很容易学,因为它遵循的算法来执行你的语句。要使用面向过程的语言开发程序,你需要画/编写算法,然后开始转换成程序或功能。
    2.拥有许多库
    C语言中提供了大量的函数其中包括系统生成的函数和用户定义的函数。 C编译器自带的头文件,其中包括可用于开发程序的许多基本功能列表。同时,程序员还可以创建功能,按他们的要求被称为用户生成/定义的函数。
    3.编译速度
    C编译器产生的机器代码非常快相比其他语言的编译器。 C编译器可以在两秒编译约1000行代码。 C编译器的另一个好处是,它还优化了代码更快的执行速度
    4.易学(语法是接近英语)
    C语言的语法是很容易理解的。它使用关键字就像if, else, goto, switch, goto, main等。这类关键词,我们都在我们的日常生活使用的是传达意义或得到一些决定。
    5.可移植
    C语言的设置是大约3-5 MB。所以,你可以随身携带在你的软盘驱动器或随身碟这种语言。它非常易于安装和操作,又其输出是可以在任何一台电脑,没有任何其他的框架/软件执行的exe文件。
    C是高度可移植的语言。这意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行而没有任何变化或做一个小的变化。
    6.C语言为许多其他目前已知的语言构建模块。
    C语言具有各种各样的数据类型和强大的操作符。由于这个原因,用C语言编写程序是高效,快速和易于理解。
    7.只有32 ANSI C关键字和它的长度依赖于它的的内置函数。
    有几个标准的函数可用于开发程序。
    8.C的另一个重要优势是它能够扩展自己。
    一个C程序基本上是那些由C库支持的功能集合,这让我们更容易对我们自己函数添加到C库中。
    由于大量功能的可用性,编程任务变得简单。
    9.C语言是一种结构化程序设计语言。
    这使得用户能够想到一个问题中的功能模块或块的条款。这些模块的集合可以编写一个完整的程序。这种模块化结构,使程序调试,测试和维护变得更加容易。


    C语言的缺点:


    1.面向对象编程功能(OOPs)
    面向对象编程的特点是C语言缺少的,你只能使用面向过程的语言来开发程序。C没有的OOPs概念,这就是为什么C ++被开发。
    2.运行时类型检查是不可用
    在C语言没有规定运行时类型检查,比如我传递浮点值,而接收参数为整数类型那么值将会被改变,它不会给任何类型的错误信息。
    3.命名空间功能
    C不提供的命名空间功能,让你是不能够在一个范围内再次使用相同的变量名。如果命名空间功能可用的话,那么你可以能够重复使用相同的变量名。
    4.构造函数和析构函数不可用:
    C不提供面向对象的特性,因此它不具有构造和析构功能。构造函数和析构函数用于构造对象和销毁对象。因此,在C语言中,你必须通过方法或者以其他方式来手动实现变量的析构和构造。


    参考文档:

    1. http://latest-technology-guide.blogspot.jp/2012/12/c-language-advantages-and-disadvantages.html

    2. http://www.thecrazyprogrammer.com/2013/07/what-are-advantages-and-disadvantages.html 

    展开全文
  • java游戏优点和缺点

    千次阅读 2010-10-05 11:47:00
    大家对java游戏后台有怎样的见解!一般的大型游戏都采用了c++这样的语言作为开发平台吗?

    大家对java做游戏后台有怎样的见解!一般的大型游戏都采用了c++这样的语言作为开发平台吗?

    展开全文
  • CopyOnWriteArrayList的优点和缺点

    千次阅读 2015-02-27 15:49:43
    CopyOnWriteArrayList的优点和缺点

      CopyOnWriteArrayList是ArrayList的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。

         这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法在创建迭代器时使用了对数组状态的引用。此数组在迭代器的生存期内不会更改,因此不可能发生冲突,并且迭代器保证不会抛出ConcurrentModificationException。创建迭代器以后,迭代器就不会反映列表的添加、移除或者更改。在迭代器上进行的元素更改操作(remove、set和add)不受支持。这些方法将抛出UnsupportedOperationException。

    允许使用所有元素,包括null。

        内存一致性效果:当存在其他并发 collection 时,将对象放入CopyOnWriteArrayList之前的线程中的操作 happen-before随后通过另一线程从CopyOnWriteArrayList中访问或移除该元素的操作。 

       这种情况一般在多线程操作时,一个线程对list进行修改。一个线程对list进行for时会出现java.util.ConcurrentModificationException错误。

       下面来看一个列子:两个线程一个线程for一个线程修改list的值。


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package com.lucky.concurrent.list;
     import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;
     public class CopyOnWriteArrayListDemo {
        /**
         * 读线程
         *
         *
         */
        private static class ReadTask implements Runnable {
            List<String> list;
      
            public ReadTask(List<String> list) {
                this.list = list;
            }
      
            public void run() {
                for (String str : list) {
                    System.out.println(str);
                }
            }
        }
        /**
         * 写线程
         *
         *
         */
        private static class WriteTask implements Runnable {
            List<String> list;
            int index;
      
            public WriteTask(List<String> list, int index) {
                this.list = list;
                this.index = index;
            }
      
            public void run() {
                list.remove(index);
                list.add(index, "write_" + index);
            }
        }
      
        public void run() {
            final int NUM = 10;
            List<String> list = new ArrayList<String>();
            for (int i = 0; i < NUM; i++) {
                list.add("main_" + i);
            }
            ExecutorService executorService = Executors.newFixedThreadPool(NUM);
            for (int i = 0; i < NUM; i++) {
                executorService.execute(new ReadTask(list));
                executorService.execute(new WriteTask(list, i));
            }
            executorService.shutdown();
        }
      
        public static void main(String[] args) {
            new CopyOnWriteArrayListDemo().run();
        }
    }
    运行结果:


    从结果中可以看出来。在多线程情况下报错。其原因就是多线程操作结果:那这个种方案不行我们就换个方案。用jdk自带的类CopyOnWriteArrayList来做容器。这个类和ArrayList最大的区别就是add(E) 的时候。容器会自动copy一份出来然后再尾部add(E)。看源码:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /**
        * Appends the specified element to the end of this list.
        *
        * @param e element to be appended to this list
        * @return <tt>true</tt> (as specified by {@link Collection#add})
        */
       public boolean add(E e) {
       final ReentrantLock lock = this.lock;
       lock.lock();
       try {
           Object[] elements = getArray();
           int len = elements.length;
           Object[] newElements = Arrays.copyOf(elements, len + 1);
           newElements[len] = e;
           setArray(newElements);
           return true;
       } finally {
           lock.unlock();
       }
       }

    用到了Arrays.copyOf 方法。这样导致每次操作的都不是同一个引用。也就不会出现java.util.ConcurrentModificationException错误。
    换了种方案看代码:


    1
    2
    //      List<String> list = new ArrayList<String>();      
      CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
    也就把容器list换成了 CopyOnWriteArrayList,其他的没变。线程里面的list不用改。因为 CopyOnWriteArrayList实现的也是list<E> 接口。看结果:

    其结果没报错。
    CopyOnWriteArrayList add(E
    ) 和remove(int index)都是对新的数组进行修改和新增。所以在多线程操作时不会出现java.util.ConcurrentModificationException错误。


    优点:

    CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,

    保证读的高性能,适用于以读为主的情况。


    缺点:

    CopyOnWriteArrayList采用“写入时复制”策略,对容器的写操作将导致的容器中基本数组的复制,性能开销较大。所以在有写操作的情况下,CopyOnWriteArrayList性能不佳,而且如果容器容量较大的话容易造成溢出。


    展开全文
  • Python的优点和缺点

    万次阅读 2017-10-16 14:07:16
    Python的优点和缺点 本节内容如下: Python的优点 Python的缺点 使用Python的知名网站 Python的优点 1. 简单 Python的语法非常优雅,甚至没有像其他语言的大括号,分号等特殊符号,代表了一种极简主义的设计...

    Python的优点和缺点

    本节内容如下:

    • Python的优点
    • Python的缺点
    • 使用Python的知名网站

    Python的优点

    1. 简单 Python的语法非常优雅,甚至没有像其他语言的大括号,分号等特殊符号,代表了一种极简主义的设计思想。阅读Python程序像是在读英语。

    2. 易学 Python入手非常快,学习曲线非常低,可以直接通过命令行交互环境来学习Python编程。

    3. 免费/开源 Python的所有内容都是免费开源的,这意味着你不需要花一分钱就可以免费使用Python,并且你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。

    4. 自动内存管理 如果你了解C语言、C++语言你就会知道内存管理给你带来很大麻烦,程序非常容易出现内存方面的漏洞。但是在Python中内存管理是自动完成的,你可以专注于程序本身。

    5. 可以移植 由于Python是开源的,它已经被移植到了大多数平台下面,例如:Windows、MacOS、Linux、Andorid、iOS等等。

    6. 解释性 大多数计算机编程语言都是编译型的,在运行之前需要将源码编译为操作系统可以执行的二进制格式(0110格式的),这样大型项目编译过程非常消耗时间,而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。

    7. 面向对象 Python既支持面向过程,又支持面向对象,这样编程就更加灵活。

    8. 可扩展 Python除了使用Python本身编写外,还可以混合使用像C语言、Java语言等编写。

    9. 丰富的第三方库 Python具有本身有丰富而且强大的库,而且由于Python的开源特性,第三方库也非常多,例如:在web开发、爬虫、科学计算等等

    Python的缺点

    Python虽然有很多优点,但是它也不是完美的,它也有自身的缺点。

    1. 速度慢 由于,Python是解释型语言,所有它的速度会比,C、C++慢一些,但是不影响使用。由于,现在的硬件配置都非常高,基本上没有影响,除非是一些实时性比较强的程序可能会受到一些影响,但是也有解决办法,可以嵌入C程序。

    2. 强制缩进 如果你有其他语言的编程经验,例如:C语言或者Java语言,那么Python的强制缩进一开始会让你很不习惯。但是如果你习惯了Python的缩进语法,你会觉得它非常优雅。

    3. 单行语句 由于Python可以在尾部不写分号,所以一行只能有一条语句,这可能也算是一个不足吧,不过这真的微不足道。

    使用Python的知名网站

    国内的:

    • 豆瓣
    • 果壳
    • 知乎
    • Sohu邮箱

    国外的:

    • youtube
    • Gmail邮箱
    • Dropbox

    等等等等

    展开全文
  • java优点和缺点

    万次阅读 2018-08-22 18:08:41
    Java:优点用几个词形容一下Java语言: 优美, 严谨, 健壮,不易出错.当然, 使用也非常的广泛: 常年盘踞编程人员数量排行榜第一名!各种库也灰常多: akullpp/awesome-java · GitHub同样的代码, 相比C++(甚至python), ...
  • derby的优点和缺点

    千次阅读 2017-02-09 14:08:52
    Derby优点和缺点 概述:  Derby是一个完全用java编写的数据库,非常小巧,核心部分derby.jar只有2M,所以既可以为单独的数据库服务器使用,也可以内嵌在应用程序中使用。 具体如下:  1、Derby定位是...
  • NI Vision 优点和缺点

    万次阅读 2018-04-02 11:34:51
    优点:LabVIEW平台入门相对简单;开发速度快。缺点:LabVIEW平台下的算法的效率不够;算法的准确性与稳定性依赖与更好的图像素质,与其它算法(如Halcon)还是有一定的差距。总结:NI LabVIEW配合NI Vision,适合于...
  • 程序员约会的优点和缺点

    千次阅读 2015-04-05 15:00:58
    程序员约会的优点和缺点 什么?你要程序员约会去了?!!咋一听到这个消息你会怎么想,是嗤之以鼻还是羡慕嫉妒恨? 下面且听我一一分析与程序员约会的优缺点吧。 优点:他们不会骗人;他们也没有时间去...
  • 决策树的优点和缺点

    千次阅读 2020-01-03 14:58:55
    决策树的优点和缺点 如前所述,控制决策树模型复杂度的参数是预剪枝参数,它在树完全展开之前停止树的构造。通常来说,选择一种预剪枝策略(设置 max_depth、 max_leaf_nodes 或 min_samples_ leaf)足以防止过拟合...
  • Spring的优点和缺点

    万次阅读 2015-04-12 21:13:38
    Spring是一个轻量级的DIAOP容器框架。 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的(所谓非侵入式就是远程调试 而不植入,spring不再用new的方式来...
  • 敏捷开发优点和缺点

    千次阅读 2019-10-15 13:16:25
    一、敏捷开发技术的几个特点优势: 1.个体交互胜过过程工具 2.可以工作的软件胜过面面俱到的文档 ...1.我们最优先要的是通过尽早的、持续的交付有价值的软件来使客户满意。 2.即使到了开发...
  • MVC的优点和缺点

    千次阅读 2013-05-18 11:07:48
    MVC的优点和缺点 MVC数据结构设计模式框架工作  MVC的优点及不足之处 1、 MVC的优点  (1) 可以为一个模型在运行时同时建立使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据...
  • lstm优点缺点 This post was last updated on August 19th 2020 此帖最后更新于2020年8月19日 An LSTM (or long-short term memory network) is a neural network that accounts for dependencies across ...
  • MVVM的优点和缺点

    万次阅读 2017-02-17 19:33:06
    苹果客户端开发的三种境界 1.无明显架构的无序开发. 2.MVC(Model View Controller, 数据-视图-控制器)架构. 3. MVVM( Model-View-...MVVM 就是将其中的View 的状态行为抽象化,让我们将视图 UI 业务逻辑分开。
  • Linux shell的优点和缺点

    千次阅读 2010-07-21 10:20:00
    Linux shell的优点和缺点的个人总结~
  • ColorOS的优点和缺点

    万次阅读 2014-03-01 12:56:39
    用了Oppo出的ColorOS有三个星期了,对它从“尝鲜就走”到“欲罢不能”,还是有些优点要点赞,有缺点要吐槽的。  优点:  用电量比米柚的好多了。一块满格的电池,睡觉待机用量5%,一上午待机用量5%。可以用一...
  • 浅学C#(3)——C#的优点和缺点

    千次阅读 2019-01-18 14:48:15
    C#的优势和缺点 转自 xuld https://www.cnblogs.com/xuld/p/3434659.html C#优点1: 相比java,有更先进的语法体系 由于C#是后生,所以其很多语法都是其它语言的改进。作为一个商业产品,C++用户是C#的首要目标,...
  • 众筹的优点和缺点

    千次阅读 2014-03-22 16:24:29
    优点  首先,创业门槛较低。现在许多的众筹网站主打的一个卖点都是“实现你的梦想”。这句话的潜台词是“之前创业门槛高,众筹帮你降低这个障碍”。从实际的案例来看,众筹平台确实帮助许多草根创业者融到资金,并...
  • yolov3算法优点缺点_优点缺点

    千次阅读 2020-08-11 15:09:31
    yolov3算法优点缺点Naive Bayes: A classification algorithm under a supervised learning group based on Probabilistic logic. This is one of the simplest machine learning algorithms of all. Logistic ...
  • spring IoC 优点和缺点

    千次阅读 2015-05-28 13:04:29
    Interface Driven Design接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执 行:AInterface a = new AInterfac
  • TI CC DEBUGGER优点和缺点分析及对策

    千次阅读 2015-05-05 14:50:54
    TI CC DEBUGGER的优点和缺点,及自由蜂的对策  相信大伙都使用过了it官方CC DEBUGGER以及其复制品,然而你是否知道其优点和缺点呢?笔者稍微了些分析,供大家参考  CC DEBUGGER相对于Smart
  • Python的特点(优点和缺点

    万次阅读 2019-07-02 15:07:11
    其实,这两个缺点并不是什么大问题,首先,由于目前计算机的硬件速度越来越快,软件工程往往更关注开发过程的效率可靠性,而不是软件的运行效率;至于第二个问题就更不是问题了,现在软件行业的大势本就是开源,...
  • 四元数的优点和缺点

    千次阅读 2011-03-19 20:06:00
    快速连接角位移求逆:四元数叉乘能将角位移序列转换为单个角位移,用矩阵同样的操作明显会慢一些。四元数共轭提供了一种有效计算反角位移的方法,通过转置矩阵也能达到同样的目的,但不如四元数来得容易。 ...
  • python语言的优点和缺点

    千次阅读 2018-01-26 09:37:43
    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路。 龟叔给Python的定位是“优雅”、“明确...python语言的优点  ⑴作为初学python的科班出身的小白,python非常简单,非常适
  • Redis是什么?什么作用?优点和缺点

    万次阅读 多人点赞 2018-08-03 08:36:05
    通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。...
  • java反射机制的优点和缺点

    千次阅读 2020-09-26 23:09:24
    一、反射机制的优点 首先,反射机制极大的提高了程序的灵活性扩展性,降低模块的耦合性,提高自身的适应能力。 其次,通过反射机制可以让程序创建控制任何类的对象,无需提前硬编码目标类。 再次,使用反射机制...
  • redis redis的优点和缺点

    千次阅读 2019-04-30 15:55:00
    1. redis的优点 速度快 (1) 因为数据存在内存中,类似于 HashMap ,HashMap 的优势就是查找操作的时间复杂度都是O (1) 。 (2) Redis 本质上是一个 Key-Value 类型的内存数据库,很像Memcached ,整个...
  • 客观评价C#的优点和缺点

    万次阅读 2018-06-15 16:28:12
    对于C#,coder中可以分为2类:一类是C#死忠,对它赞赏到极点;另一类刚好相反,对它极度排斥。本文将以全面、客观的方式评价这门语言,特别是语法方面。 其实很多人评价一门语言是带着一种感情色彩的。有些人支持C#...
  • 存储过程的优点和缺点

    千次阅读 2016-03-30 21:16:23
    优点 ①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。 ②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 438,814
精华内容 175,525
关键字:

对于优点和缺点应该怎么做