精华内容
下载资源
问答
  • 网络开发为什么要用C#和JAVA 网络一般不都是要求性能很高,并发量很量的吗?像C#和JAVA这样的语言执行的那么慢,有那么多人访问的时候还不卡死,可为什么有些大型网站还是用这样的语言? ...

    网络开发为什么要用C#和JAVA

    网络一般不都是要求性能很高,并发量很量的吗?像C#和JAVA这样的语言执行的那么慢,有那么多人访问的时候还不卡死,可为什么有些大型网站还是用这样的语言?
    
    
    这里我得提醒你个认识上的误区,首先网络开发,什么是网络开发,这个说法有点面太广了,web开发合适点吧。其次,web应用的开发不一定就是网站,web应用的范围很大,网站只是其中的很小的一部分而已。最后,网站的开发一般选择php或者c#,这样访问速度要比java做出来的网站要快点。但是其他的大型web应用,如果用php做,有时候就会力不从心。也就是说白了,做网站,推荐使用php,做其他web应用,根据不同的需要可以选择C#或者java。
    至于你说的并发访问,这个不存在问题,java和C#做的项目慢是因为他们编译解释的过程要用一部分时间,和并发访问没有太直接的关系。
    并发访问,影响最大的就是连接池中可用连接的数量的,一般连接池中配置可用连接200的话,就可以支持5000人同时访问web应用了。你想想看,有什么样的web应用同时有那么多人访问呢。就算是同时有10000人访问,也不会卡死,因为,你打开一个页面的时候有加载的进度的,其实这个加载的进度就是你获取和服务器连接的过程,要是长时间加载不上,服务器会提示你服务器忙。
    
    最后在给你说下为什么选择这两种语言。
    我很想知道,如果是你,你会选择什么语言做呢,如果是网站你会选择什么语言,如果是大型的web应用呢?
    像google和百度这样的应用,它不是网站,每天用google和百度的人不计其数,因为他们在开发这个web应用的时候把并发访问处理的很好,所以,没有卡死。这个和选择什么样的语言关系不是很大。

    java游戏开发和web软件开发有什么不同?

    web开发更注重web技术,比如服务器、页面展现、高并发等等,数据使用数据库进行存储。
    游戏开发更注重媒体方面(声音、图像)以及数据结构、IO存储等等

    java web开发网站采用框架的问题?

    第一个问题:如果访问量很大,那么框架是不是越简单才能运行越快?
    第二个问题:框架越复杂有什么好处?比如SSH+各种技术
    如果开发一下这类网站,才用什么框架或者技术比较合适:
    第一类:访问人数很多 但不庞大  比如 投票评选之类  比如  在线考试之类
    第二类:访问人数多 并且 也比较庞大的管理系统  比如 全市教师系统(录入量大,统计条目多)

    回答一:
    框架是简单和复杂没有什么明确的界定,主流框架就那几个。
    一,不是越简单就越快,在复杂的业务需求下,要保证并发性能需要很多的处理,甚至要增加更多的框架和其他技术。就像汽车难道是设计得越简单就会开得越快吗?
    二,框架复杂一般意味着能满足更多的功能和需求,更灵活的使用方式。
    这两类网站没什么区别struts/springmvc hibernate/mybatis  spring
    可以任意组合,关键是用得熟,一知半解去用就不会有好效果

    回答二:
    简单的来说 框架不存在复不复杂这种说法  框架的出现就为了能够在程序设计的时候能够更轻松快捷  对于一个项目而言 如果是一次性开发的那实在是没有使用框架的必要  如果项目需要一个持久的更新维护  那采用合适的框架式非常必要   SSH框架是发展非常成熟的三大开源框架  包含了从数据库的持久化设计到JSP页面显示等等 比较符合团队开发的需要及再次开发     针对于你设置的问题的访问量大的话必须要考虑并发  这个最好在数据库设计的时候采用连接池技术  而且框架对于这个也有很好的解决方案

    WebService是怎样处理并发用户访问的?

    这个问题不是几句话能完全说清楚的,个人看法是涉及到进程,线程,以及锁,活跃度,性能,容器,阻塞等等相关的概念。
    
    简单说一下。
    
    首先看看程序的并发运行
    
    系统中各个部分不再以单纯的串行方式工作。换言之,在任一时刻系统中不再只有一个活动,而是存在着许多并行的活动。从硬件方面看,处理机、各种外设、存储部件常常并行地进行着工作。从程序方面看,则可能有若干个作业程序或者同时、或者互相穿插在系统中并行运行。这时,机器不再是简单地顺序执行一道程序。也就是说,一道程序的前一动作结束后,系统不一定立即执行其后续操作,而可能转而执行其它程序的某一操作。对于程序中可以执行的操作也可能不需要等待另一操作结束,系统就开始执行它们。这样也就打破了程序执行的顺序性。同时,多个程序活动可能是在不同的数据集上执行同一个程序,所以程序以及机器执行程序的活动不再有严格的一一对应关系。
    
    其次是进程的引入
    
    在多道程序工作环境下,一个程序活动不再能独占系统资源,因此也就不再能单独决定这些资源的状态;程序和机器执行程序的活动之间也不再有一一对应关系。总之,程序活动不再处于一个封闭的系统中,而是和其它程序活动之间存在着相互依赖和制约的关系,因而呈现出并发、动态以及相互制约这些新的特征。在这种情况下,程序这个静态的概念已经不能如实地反映程序活动的这些特征。为此,六十年代中期MULTICS操作系统的设计者和E.W.Dijkstra为首的T.H.E操作系统的设计者开始广泛应用进程(process)这一新的概念来描述系统和用户的程序活动。
    “进程”是操作系统的最基本的,也是最重要的概念之一。这个概念对于操作系统的理解、描述和设计都具有极其重要的意义。但是迄今为止对这一概念还没有一个确切统一的描述。有人称进程是可以并行运动的计算部分(S.E.Madnick,J.J.Donovan);有人称进程是一个程序与其数据一道在计算机上顺序执行时所产生的活动(A.C.Shaw);有人从调度组织角度出
    发,称进程是一个独立的可以调度的活动(Ellis.Cohen,DavidJofferson);有人则从资源共享和竞争方面观察,认为进程是一个抽象的实体,当它执行一个任务时将要求分配和释放各种资源(Peterdenning)。这些描述都注意到了进程的动态性质,但侧重面不同。为了突出进程和程序两个概念的区别和联系,我们对进程作如下描述:进程是一种活动,它是由一个动作系列组成,每个动作是在某个数据集上执行一段程序,整个活动的结果是提供一种系统或用户功能。 
    
    然后是线程
    
    进程具备并发性的特点,这种并发性是不同的进程之间反映出来的,不同的进程有不同进程空间,进程之间的切换消耗比较大。那么就考虑到引入线程的概念,在进程的内部引入并发性,一个进程可以创建多个线程,线程之间具备并发性。不同的线程之间可以共享进程的地址空间和数据。
    一般的讲,线程是一个程序,或者进程内部的一个顺序控制流。线程本身不能独立运行,必须在进程中执行,使用进程的地址空间。每个线程有自己单独的程序计数器。
    一个进程内部包含多个顺序控制流,或者并发执行多种运算,就是多线程。

    java web 开发 j2ee 会用多线程,套接字的知识吗?

    做java web方面的开发会用到 多线程,socket的知识吗?希望能有人给我说个方向。例子:下载文件的时候会用到io流的知识。

    回答一:
    会用到的,多线程知识用的比较多;Socket的知识不会直接用到,但是会帮助对web应用有很深的理解。
    回答二:
    对于一般的web应用来说,都是多线程处理的,但这个多线程是由容器或者说是服务器控制的,对于web开发者来说是不用也不应该控制的,只是写可能被多线程用到的类,比如用struts时的action类,考虑一下线程安全的问题就行了。一般没用。
    回答三:
    Javaweb本身就是多线程,至于socket,那就看你应用后台,要不要call其他应用了。。理论上socket用于两个应用之间的通信,如果系统很大的话,可能会用到。


    
    
    展开全文
  • 【导读】之前我们给同学们推荐了很多关于 Python 的面试资源,大家都表示很有用。这次营长表示要翻 Java 的牌子啦~ 应大家的强烈反馈,我们找了一套 Java 语言的算法和编程的面试题数组数组,将元素存储到内存的连续...

    【导读】之前我们给同学们推荐了很多关于 Python 的面试资源,大家都表示很有用。这次营长表示要翻 Java 的牌子啦~ 应大家的强烈反馈,我们找了一套 Java 语言的算法和编程的面试题数组数组,将元素存储到内存的连续位置中,是最基本的数据结构。在任何和编程相关的面试中,都会被问到和数组相关的问题,可以说是非常热门的考题之一。比如:将数组反转、对数组进行排序、搜索数组中的元素等。

    数组

    数据结构的主要优点是如果知道索引就可以通过 O(l) 进行快速搜索,但是在数组中添加和删除元素的速度会很慢,因为数组一旦被创建,就无法更改其大小。如果需要创建更长或更短的数组,得先创建一个新数组,再把原数组中的所有元素复制到新创建的数组中。解决数组相关问题的关键是要熟悉数组的数据结构和基本的构造,如循环、递归等等;下面给出了 10 道热门面试题帮助大家掌握知识并进行练习。

    ▌1.给定一个 1-100 的整数数组,请找到其中缺少的数字。解决方法与代码:https://javarevisited.blogspot.com/2014/11/how-to-find-missing-number-on-integer-array-java.html

    ▌2.请在给出的整数数组中找到重复的数字。解决方法与代码:http://javarevisited.blogspot.com/2014/01/how-to-remove-duplicates-from-array-java-without-collection-API.html

    ▌3.如何在未排序的整数数组中找到最大值与最小值?解决方法与代码:http://java67.blogspot.com/2014/02/how-to-find-largest-and-smallest-number-array-in-java.html

    ▌4.在给定的成对整数数组中,请找出所有总和等于给定数字的组合。解决方法与代码:http://javarevisited.blogspot.com/2014/08/how-to-find-all-pairs-in-array-of-integers-whose-sum-equal-given-number-java.html

    ▌5.如果数组中有多个重复项,如何找到重复的数字?解决方法与代码:http://javarevisited.blogspot.com/2014/03/3-ways-to-find-first-non-repeated-character-String-programming-problem.html

    ▌6.用 Java 语言实现,在给出的数组中,删除重复项。解决方法与代码:http://javarevisited.blogspot.com/2014/01/how-to-remove-duplicates-from-array-java-without-collection-API.html

    ▌7.用 quicksort 算法实现对整数数组的排序。解决方法和代码:http://javarevisited.blogspot.com/2014/08/quicksort-sorting-algorithm-in-java-in-place-example.html

    ▌8.如何删除现有数组中的重复项?解决方法和代码:http://javarevisited.blogspot.com/2014/01/how-to-remove-duplicates-from-array-java-without-collection-API.html

    ▌9.用 Java 语言把数组进行反转。解决方法和代码:http://javarevisited.blogspot.com/2013/03/how-to-reverse-array-in-java-int-String-array-example.html

    ▌10.如何在不调用库的情况下删除数组中的重复项?解决方法和代码:http://javarevisited.blogspot.sg/2014/01/how-to-remove-duplicates-from-array-java-without-collection-API.html十个问题太少?

    更多复杂问题,可访问:http://javarevisited.blogspot.sg/2015/06/top-20-array-interview-questions-and-answers.html

    链表

    链表是另一种常见的数据结构,和数组相似,链表也是线性的数据结构并且以线性方式存储元素。而与数组不同的是,链表不是将元素存储在连续的位置中,而是可以存储在任意位置,彼此之间通过节点相互连接。链表也可以说就是一个节点列表,每个节点中包含存储的值和下一个节点的地址。也正是因为这种结构,在链表里添加和删除元素很容易,你只需要更改链接而不用创建新的数组。但是搜索会很困难,并且在单链表中找到一个元素就需要 O(n)个时间。链表有多种形式,如:单链表,允许你在一个方向上进行遍历;双链表,可以在两个方向上进行遍历;循环链表,最后节点的指针指向第一个节点从而形成一个环形的链;因为链表是一种递归数据结构,所以在解决链表问题时,熟练掌握递归算法就显得更加重要了。

    下面是关于链表的一些最常见、热门的面试问题,大家可以着重练习:

    ▌1.如何在一次递归后找到单链表的中间元素?

    解决方法和代码:http://javarevisited.blogspot.sg/2012/12/how-to-find-middle-element-of-linked-list-one-pass.html

     

    ▌2.检查给定的链表中是否包含循环链表,并找出循环链表的起始节点。

    解决方法和代码:http://javarevisited.blogspot.sg/2013/05/find-if-linked-list-contains-loops-cycle-cyclic-circular-check.html

     

    ▌3.如何将列表反转(倒置)?

    解决方法和代码:http://www.java67.com/2016/07/how-to-reverse-singly-linked-list-in-java-example.html

     

    ▌4.如何在没有递归的情况下反转单链表?

    解决方法和代码:http://javarevisited.blogspot.sg/2017/03/how-to-reverse-linked-list-in-java-using-iteration-and-recursion.html

     

    ▌5.删除未经过排序的链表中重复的节点。

    解决方法和代码:https://www.geeksforgeeks.org/remove-duplicates-from-an-unsorted-linked-list/

     

    ▌6.计算单链表的长度。

    解决方法和代码:http://javarevisited.blogspot.sg/2016/05/how-do-you-find-length-of-singly-linked.html

     

    ▌7.找出单链表中倒数第三个节点。

    解决方法和代码:http://javarevisited.blogspot.sg/2016/07/how-to-find-3rd-element-from-end-in-linked-list-java.html

     

    ▌8.如何使用 Stack 查找两个链表的和?

    解决方法和代码:https://www.geeksforgeeks.org/sum-of-two-linked-lists/

     

    这些问题可以帮你提升解决问题的能力,加深对链表数据结构的了解。

    关于数组和链表间的区别,可详细阅读:http://javarevisited.blogspot.sg/2013/07/difference-between-array-and-linked-list-java.html

    更多复杂问题,可访问:http://javarevisited.blogspot.sg/2017/07/top-10-linked-list-coding-questions-and.html

    字符串

    除了数组和链表数据结构,字符串是应聘过程中编程面试的另一个热门问题。在我参加过的编程面试中,每一个都涉及了有关字符串的问题。值得庆幸的是,如果你了解数组,你可以很容易解决关于字符串的问题,因为字符串本身就是一个由字符组成的数组。因此,你学过的所有用来解决数组编程问题的知识,也可以用来解决字符串的编程问题。

    以下是一些在编程面试中高频出现的字符串问题:

    ▌1.如何输出字符串中重复的字符?

    解决方法与代码:http://java67.blogspot.sg/2014/03/how-to-find-duplicate-characters-in-String-Java-program.html

     

    ▌2.如何判断两个字符串是否互为回文?

    解决方法与代码:http://javarevisited.blogspot.sg/2013/03/Anagram-how-to-check-if-two-string-are-anagrams-example-tutorial.html

     

    ▌3.如何找出字符串首个非重复的字符?

    解决方法与代码:https://javarevisited.blogspot.com/2014/03/3-ways-to-find-first-non-repeated-character-String-programming-problem.html

     

    ▌4.如何用递归的方法将字符串进行反转?

    解决方法与代码:https://javarevisited.blogspot.com/2012/01/how-to-reverse-string-in-java-using.html

     

    ▌5.如何判断一个字符串是否只包含数字?

    解决方法与代码:http://javarevisited.blogspot.sg/2012/10/regular-expression-example-in-java-to-check-String-number.html

     

    ▌6.如何找到字符串中重复的字符?

    解决方法与代码:http://java67.blogspot.sg/2014/03/how-to-find-duplicate-characters-in-String-Java-program.html

     

    ▌7.如何计算一个字符串中元音字母和辅音字母的个数?

    解决方法与代码:http://java67.blogspot.sg/2013/11/how-to-count-vowels-and-consonants-in-Java-String-word.html

     

    ▌8.如何计算一个给定字符在字符串中出现的次数?

    解决方法与代码:https://javarevisited.blogspot.com/2012/12/how-to-count-occurrence-of-character-in-String.html

     

    ▌9.如何找出一个字符串的所有排列组合?

    解决方法与代码:http://javarevisited.blogspot.com/2015/08/how-to-find-all-permutations-of-string-java-example.html

     

    ▌10.在不使用任何方法库的情况下,如何将一句话中的单词进行反转?

    解决方法与代码:http://www.java67.com/2015/06/how-to-reverse-words-in-string-java.html

     

    ▌11.如何判断一个字符串是否为另一个字符串循环移动的结果?

    解决方法与代码:http://www.java67.com/2017/07/string-rotation-in-java-write-program.html

     

    ▌12.如何判断一个字符串是否为回文?

    解决方法与代码:http://java67.blogspot.com/2015/06/how-to-check-is-string-is-palindrome-in.html

     

    这些问题有助于提高你对字符串数据结构的理解。如果你在没有外界帮助的情况下,可以解决所有这些字符串问题,那么你的水平已经很棒了。若想了解更多复杂的问题,建议学习一下《Algorithm Design Manual by Steven Skiena》这本书中的问题,里面大都是难度很高的算法问题。

    如果你需要更多的练习,可以参考这一组问题,包含20个字符串编程问题。问题链接:https://javarevisited.blogspot.com/2015/01/top-20-string-coding-interview-question-programming-interview.html

    这些问题有助于提高你对字符串数据结构的理解。如果你在没有外界帮助的情况下,可以解决所有这些字符串问题,那么你的水平已经很棒了。

    若想了解更多复杂的问题,建议学习一下《Algorithm Design Manual by Steven Skiena》这本书中的问题,里面大都是难度很高的算法问题。如果你需要更多的练习,可以参考这一组问题,包含20个字符串编程问题。

    问题链接:https://javarevisited.blogspot.com/2015/01/top-20-string-coding-interview-question-programming-interview.html

    二叉树

    到目前为止,我们只涉及了线性数据结构,但现实世界的所有信息都不是以线性的形式展现的,因此出现了树结构。树结构是一种将数据进行分层存储的数据结构。根据数据存储方式的不同,存在不同类型的树,比如二叉树,其中每个节点至多有两个子节点。和二叉查找树一样,它们都是最流行的树形式的数据结构。因此,你会发现很多问题基于它们的问题,如计算节点数,如何进行遍历,计算深度,判断它们是否平衡。解决二叉树问题的关键是要有扎实的知识理论,如什么是二叉树的大小或深度,什么是叶,以及什么是节点。还有对当前流行的遍历算法的理解,如前序遍历、后序遍历和中序遍历。

    下面是一系列常在软件开发面试中出现的二叉树热门问题:

    ▌1.如何部署使用二叉查找树?

    解决方法与代码:http://javarevisited.blogspot.sg/2015/10/how-to-implement-binary-search-tree-in-java-example.html#axzz4wnEtnNB3

     

    ▌2.给定一个二叉树,如何进行前序遍历?

    解决方法与代码:http://javarevisited.blogspot.sg/2016/07/binary-tree-preorder-traversal-in-java-using-recursion-iteration-example.html#axzz5ArdIFI7y

     

    ▌3.在不使用递归的情况下,如何对给定二叉树进行前序遍历?

    解决方法与代码:http://www.java67.com/2016/07/binary-tree-preorder-traversal-in-java-without-recursion.html

     

    ▌4.给定一个二叉树,如何进行中序遍历?

    解决方法与代码:http://www.java67.com/2016/08/binary-tree-inorder-traversal-in-java.html

     

    ▌5.在不使用递归的情况下,如何使用中序遍历输出给定二叉树的所有节点?

    解决方法与代码:http://www.java67.com/2016/08/binary-tree-inorder-traversal-in-java.html

     

    ▌6.如何实现后序遍历算法?

    解决方法与代码:http://www.java67.com/2016/10/binary-tree-post-order-traversal-in.html

     

    ▌7.在不使用递归的情况下,如何对二叉树进行后序遍历?

    解决方法与代码:http://www.java67.com/2017/05/binary-tree-post-order-traversal-in-java-without-recursion.html

     

    ▌8.如何输出一个二叉查找树的所有叶子?

    解决方法与代码:http://www.java67.com/2016/09/how-to-print-all-leaf-nodes-of-binary-tree-in-java.html

     

    ▌9.如何计算一个给定二叉树的叶子节点数目?

    解决方法与代码:http://javarevisited.blogspot.sg/2016/12/how-to-count-number-of-leaf-nodes-in-java-recursive-iterative-algorithm.html

     

    ▌10.给定一个数组,如何对其进行二叉搜索?

    解决方法与代码:http://javarevisited.blogspot.sg/2015/10/how-to-implement-binary-search-tree-in-java-example.html#axzz4wnEtnNB3

     

    如果你觉得自己对二叉树编程的理解还不够,无法独自解决这些问题,

    我列出了我使用过的书籍:http://javarevisited.blogspot.sg/2015/07/5-data-structure-and-algorithm-books-best-must-read.htmlhttp://javarevisited.blogspot.sg/2018/01/top-5-free-data-structure-and-algorithm-courses-java--c-programmers.html      

    其它算法编程问题除了数据结构问题,大多数编程面试也会问有关算法、设计、位操作和一般的逻辑问题,在这部分中我会介绍这些问题。在实际问题中应用这些概念是十分重要的,因为在面试中它们往往都比较难对付。多加练习不仅可以让你对这些概念更熟悉,也会让你在面试过程中更有信心。

    ▌1.如何实现冒泡排序算法?

    解决方法与代码:http://javarevisited.blogspot.sg/2014/08/bubble-sort-algorithm-in-java-with.html#axzz5ArdIFI7y

     

    ▌2.如何用迭代实现快速排序算法?

    解决方法与代码:http://javarevisited.blogspot.sg/2016/09/iterative-quicksort-example-in-java-without-recursion.html#axzz5ArdIFI7y

     

    ▌3.如何实现插入排序算法?

    解决方法与代码:http://www.java67.com/2014/09/insertion-sort-in-java-with-example.html

     

    ▌4.如何实现归并排序算法?

    解决方法与代码:http://www.java67.com/2018/03/mergesort-in-java-algorithm-example-and.html

     

    ▌5.如何实现桶排序算法?

    解决方法与代码:https://javarevisited.blogspot.com/2017/01/bucket-sort-in-java-with-example.html

     

    ▌6.如何实现计数排序算法?

    解决方法与代码:http://www.java67.com/2017/06/counting-sort-in-java-example.html

     

    ▌7.如何实现基数排序算法?

    解决方法与代码:http://www.java67.com/2018/03/how-to-implement-radix-sort-in-java.html

     

    ▌8.在不使用第三个变量的情况下,如何交换两个数字的值?

    解决方法与代码:http://www.java67.com/2015/08/how-to-swap-two-integers-without-using.html

     

    ▌9.如何判断两个矩形是否有重叠?

    解决方法与代码:http://javarevisited.blogspot.sg/2016/10/how-to-check-if-two-rectangle-overlap-in-java-algorithm.html

     

    ▌10.如何设计一个自动贩售机?

    解决方法与代码:https://javarevisited.blogspot.com/2016/06/design-vending-machine-in-java.html

     

    推荐阅读:《Cracking The Code Interview》书中介绍了189个编程问题及解决方法50个电面

    编程问题:http://javarevisited.blogspot.sg/2015/02/50-programmer-phone-interview-questions-answers.html

    有关书籍:https://javarevisited.blogspot.com/2016/06/top-5-books-for-programming-coding-interviews-best.html      

    练习解决的实际问题越多,准备就越充分。希望这份面试资源对大家有帮忙,面试顺利,都能获得好结果!

    原文链接:https://hackernoon.com/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0

    展开全文
  • 并发编程

    2016-09-09 17:32:00
    一开始看到“并发”这个词,我会想到多线程,当上网搜索“并发编程”时,百度百科给我的答案是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。想要系统的了解...

        一开始看到“并发”这个词,我会想到多线程,当上网搜索“并发编程”时,百度百科给我的答案是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。 想要系统的了解关于并发、异步,然而找不到详细资料,然后向前辈请教,他给我一本书参考《C#并发编程经典实例》。这本书解开了我对并发编程、并行编程、多线程、异步的误解。

    误解一: 并发就是多线程

    我:在没搞懂并发时自认为是一回事。

    作者强调:多线程只是并发编程的一种形式,在C#中海油很多并发编程技术,包括异步编程、并行编程、TPL数据流、响应式编程等。

    误解二:只有大型服务器程序才需要考虑并发

    我:并发不就应该处理大数据,多任务时采用的么...

    作者强调:不仅服务器端的大型程序,而且桌面程序、手机、平板等移动端都需要考虑并发,因为它们是直接面向用户的,而现在用户对使用体验的要求越来越高。程序必须能随时响应用户的操作,尤其是在后台处理时(读写数据,与服务器通信等),这正是并发编程的目的之一。

    误解三:并发编程很复杂,必须掌握很多底层技术

    我:我一直是这么认为的,只有掌握底层技术的前提下,才能使用好并发。

    作者强调:C#和.NET提供了很多程序库,并发编程已经变得简单多了。尤其是.NET4.5退出了全新的async和await关键字,使并发编程的代码减少到了最低限度。并行处理和异步开发已经不再是高手们的专利,只要使用本书的方法,每个开发人员都能写出交互性良好、高效、可靠的并发程序。

    1.1 并发编程简介

    • 并发

        同时做多件事情。   这表明了并发的作用。只要你希望程序同时做多件事情,就需要并发。(例: 服务器应用利用并发,在处理第一个请求的同时响应第二个请求。)

    • 多线程

        并发的一种形式,它采用多个线程来执行程序。从字面上看,多线程就是使用多个线程。多线程是并发的一种形式,但不是唯一的形式。

    • 并行处理(并行编程)

        把正在执行的大量的任务分割成小块,分配给多个同时运行的线程

        为了让处理器的利用效率最大化,并行处理采用多线程。

        并行处理是多线程的一种,而多线程是并发的一种。

    • 异步编程

        并发的一种形式,它采用future模式或回调机制,以避免产生不必要的线程。一个future类型代表一些即将完成的操作。在.NET中,新版future类型有Task和Task<TResult>。

        异步编程的核心理念是异步操作:启动了的操作将会在一段时间后完成。这个操作正在执行时,不会阻塞原来的线程。VS2012支持async和await。

    • 响应式编程

        一种声明式的编程模式,程序在该模式中对事件做出响应

    假设把一个程序看做一个大型的状态机,则该程序的行为便可视为它对一系列事件作出响应,即每换一个事件,它就更新一次自己的状态。响应式编程不一定是并发的,但他与并发编程联系紧密。

     

        通常,一个并发程序要使用多种技术。大多数至少使用了多线程(通过线程池)和异步编程。以上均参考《C#并发线程经典实例》。

    1.2 异步编程

    请参考http://www.cnblogs.com/tdws/p/5617242.html,博客园 蜗牛 2016年6月26日。

    转载于:https://www.cnblogs.com/xiaoqingshe/p/5857475.html

    展开全文
  • 面向对象编程题总结

    2019-02-14 21:04:40
    初谈自己对java面向对象的理解,大...在底部还有一些关于面向对象的一些相关的题目和答案,相关代码我已经上传到git上如果有兴趣的话可以看一下。所有面向对象编程题都是网上搜索,如果侵权请联系本人。 参考资料: ...

    初谈自己对java面向对象的理解,大牛勿喷。在底部还有一些关于面向对象的一些相关的题目和答案,相关代码我已经上传到git上如果有兴趣的话可以看一下。所有面向对象编程题都是网上搜索,如果侵权请联系本人。

    参考资料:

    https://www.cnblogs.com/dolphin0520/p/3799052.html

    https://www.cnblogs.com/xiaoxi/p/6392154.html

    抽象:抽象就是抽取共同性。

    基类:在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“基类”。不是抽象类的基类不是好基类

    我们来直接说面向对象的三大特征

    继承:类的继承实际上就是类的衍生关系,我们上面说的Michael是猫,但具体来说,它是英国短毛猫。英国短毛猫当然也是猫,但是除了猫的基本特征,英国短毛猫有许多属于自己的特点,比如毛短而密,头大脸圆。

    封装:封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

    多态:某种意义上而言,多态是基于封装和继承上建立起的重要概念。如果要详细了解多态的话就需要知道多态的三大特性。

    (1)向上转型:抽象类中的方法没有定义行为,以该类作为父类,子类重写方法,便可以实现向上转型实现多态。比如你是一    个酒神,对酒情有独钟。某日回家发现桌上有几个杯子里面都装了白酒,从外面看我们是不可能知道这是些什么酒,只有喝了之后才能够猜出来是何种酒。你一喝,这是剑南春、再喝这是五粮液、再喝这是酒鬼酒….在这里我们可以描述成如下:

          酒 a = 剑南春

          酒 b = 五粮液

          酒 c = 酒鬼酒

          …

          这里所表现的的就是多态。剑南春、五粮液、酒鬼酒都是酒的子类,酒是父类,我们只是通过酒这一个父类就能够引用不同的子类,这就是多态——我们只有在运行的时候才会知道引用变量所指向的具体实例对象。

    (2)继承:子类继承父类

    (3)重写:子类继承父类,并重写父类方法。

    类和对象:类是对于一类对象共有特性得描述,而对象是符合类得一个具体实例。对象得特征符合类中规定得特性,而类描述得方法和实力变量分别可以被对象表达出来,方法和实例变量分别描述了对象得行为和属性。简单来说每个对象都是某个类(class)的一个实例,而你实例出来的就相当于是一个对象(Person chen = new Person ())chen就是对象。比如人作为一个类,共通性就是有年龄,身高,体重,这些可以人的属性。人要睡觉,要吃饭,可以作为方法。而你作为人类中的一员,你就是一个属于人类的对象,也就是实体,真实存在的,有名有姓的

    方法重载:就是一个类中,一系列方法的名字相同,但是参数列表不同,我们对于不同的数据类型都可以使用同一个方法,对于不同参数数的情况也可以使用同一个方法,这就大大提高我们对对象的描述能力。简单来说就是方法名字相同,但是方法参数不同。

    方法重写:就是在子类里对父类某个方法进行覆盖,当调用时子类对象只会调用子类方法而不会调用父类方法。

    static:静态特性:只会在类加载的时候执行一次。静态方法只能调用静态方法

    (1)静态变量:static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

    (2)静态方法:static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

      但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

    (3)静态代码块:static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

    final:常量

    (1)修饰类:当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。

    (2)修饰方法:即父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样的方法的。final方法不能被重写但是可以被重载。此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。(注:类的private方法会隐式地被指定为final方法。)

    (3)修饰变量: final成员变量表示常量,只能被赋值一次,赋值后值不再改变。当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化。如果final修饰一个引用类型(除了基本的变量类型之外的所有类型,比如数组)时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。本质上是一回事,因为引用的值是一个地址,final要求值,即地址的值不发生变化。当函数的参数类型声明为final时,说明该参数是只读型的。即你可以读取使用该参数,但是无法改变该参数的值。

    接口回调:接口回调其实和向上转型是一样的,所谓回调,就是a调b,b也会调a。比如微信授权登录,我们点击确认之后,显示调微信那边接口,验证通过了,微信那边再调我们的接口,然后我们系统打开登陆后的界面。其中微信调我们的接口也叫回调

    git路径http://gitlab.geenk.cn/chenjinming/oop.git

    以上就是我在做完面向对象编程题以后遇到的一些问题,根据自己的理解写出来让大家观看,若有不正之处,希望谅解并欢迎批评指正。新建了一个java得交流群,有兴趣得也可以进群交流。434138992

    如果大家有其他疑问,可在文章下留言。

    展开全文
  • 题目:有3只狼和3只羊要过河,只有一条船,一次最多只能坐两只动物并且每次必须有动物开船,如果某一边的...关于编程思路,参考:Java编程能力强化(2)——搜索解决方案类问题的通用解法 参考答案: package ch
  • 题目:有3只狼和3只羊要过河,只有一条船... 关于编程思路,参考:Java编程能力强化(2)——搜索解决方案类问题的通用解法 参考答案: package ch1; public class LangAndYang { public static void main(String[] a...
  • 编程新手入门的几点意见

    千次阅读 2006-03-17 11:23:00
    1.最好的网站有些人会叫我介绍一些编程的好网站,我会毫不犹豫地回答GOOGLE,在那里你可以得到你所需要的,当然需要一些搜索的技巧...关于看书遇到太多新手,关于编程的第一步他们都会选择看书.对于这个我并不反对,但是个人
  • 问题通过搜索引擎得到答案,你的问题肯定是可以通过自己努力得到解答的,可遵循以下思路来尝试着寻找答案: 一、正确识别并搜索问题 尝试使用搜索引擎来搜索自己的报错,刚开始往往并不简单,
  • 今天第一天发帖,求支持求鼓励~今天看到有人问ExtJs有没有智能联想的功能答案是肯定,怎么实现呢?利用Ext里面的Ext.form.field.ComboBoxView控件,是的,是一个下拉菜单一样的东西。那么我们要实现智能联想的功能,...
  • 作者Robert Sedgewick 斯坦福大学博士,本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4 版具体给出了每位程序员应知应会的50 个算法...
  • 第1篇技能学习篇,主要包括asp.net技术基础、c#语言基础、流程语句控制和数组、面向对象编程、常用服务器控件、内置对象、验证控件、ado.net数据库开发技术、数据控件的应用、web用户控件、asp.net缓存技术、ajax无...
  •  如何将站点发布到Internet中,如何为站点找到访问者,以及如何让搜索引擎识别站点 本书读者对象  本书适用于想学习如何创建Web页面的读者,也适用于想提高Web设计技能水平的读者。本书的读者不需要具有编程或者...
  • 从一大群人中搜索答案可以使我们得到关于群主的统计结论:组中的个体成员将会被忽视。 从独立的数据提供者那里得到新的结论,是集体智慧所真正关注的。 2.什么是机器学习 机器学习是人工智能领域中与算法相关的一...
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
    Oracle专家高级编程 基本信息 原书名: expert one-on-one Oracle 原出版社: Wrox Press 作者: (美)Thomas Kyte 译者: 袁勤勇 张玉魁等 丛书名: 清华版WROX公司.NET和Oracle编程经典系列 出版社:...
  • 第1篇技能学习篇,主要包括asp.net技术基础、c#语言基础、流程语句控制和数组、面向对象编程、常用服务器控件、内置对象、验证控件、ado.net数据库开发技术、数据控件的应用、web用户控件、asp.net缓存技术、ajax无...
  • 数据结构与算法精选面试50题(附答案

    万次阅读 多人点赞 2019-07-03 21:41:52
    这也是面试官们热衷的话题之一,在任何一次编程面试中,你都会听到很多关于数组的问题,比如将数组中元素位置颠倒,对数组进行排序,或者搜索数组上的元素。 数组数据结构的主要优点是,如果知道索引,它可以提供...
  • 电脑小白,从未学过关于编程的任何知识,用词可能有些不准确,请谅解。 事件起源于当初轻信他人,一些事情从未做过备份。所以现在要取证电脑上的历史聊天记录,否则一言难尽。自己上网搜了很多资料和教程,磕磕碰...
  • 最近查了一下百度关于机械方面的设计软件的搜索指数数据,根据百度在我国搜索引擎的霸主地位来看,结果应该还是比较真实客观的,各位看官认为呢? 推荐一个大数据学习群 119599574晚上20:10都有一节【免费的】...
  • 该资料是《Visual C++ 2005入门经典》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者: (美)Ivor Horton...
  • 如何将站点发布到internet中,如何为站点找到访问者,以及如何让搜索引擎识别站点 本书读者对象 本书适用于想学习如何创建web页面的读者,也适用于想提高web设计技能水平的读者。本书的读者不需要具有编程或者web...
  • 该资料是《Visual C++ 2010入门经典(第5版)》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2010入门经典(第5版) 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2010 原出版社: Wrox 作者: ...
  • 写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 ...1.11.2 客户端编程 1.11.3 服务器端编程 ...附录E 关于垃圾收集的一些话 附录F 推荐读物
  • 搜索了一下,但没有找到一个好答案。我仍然对这些概念感到困惑。我找到了一个Internet接口示例,如下所示。代码在没有具有相同输出的接口的情况下工作。那么它的目的是什么呢?或者它不是接口的真正实现?.I需要从...
  • 该资料是《C语言入门经典(第4版)》的源代码及课后练习答案 对应的书籍资料见: C语言入门经典(第4版) 基本信息 原书名: Beginning C: From Novice to Professional, Fourth Edition 原出版社: Apress 作者: ...
  • 值得庆幸的是问题总算解决了,不过对于国内编程技术和百度搜索技术很是担忧。为什么在我们中国人的地盘上找不到答案或相关的资料呢,为什么百度搜不出与问题相关的英文资料呢?坛里满满的都提问,唉! (工程环境...
  • 我决心学习并擅长编程,但这并非来自其他人的工作。为我指出正确的方向,将不胜感激!请知道,我已经在互联网上搜索了一种解决方案,但没有找到适合我需求的解决方案。我无法使用任何高级方法。该程序允许用户输入...
  • 关于找不到stdafx.h头文件问题(pass)

    千次阅读 2018-06-12 21:56:09
    网上各种搜索,知道了解决办法。就是注释掉这一行,因为这个头文件主要作用就是较快速度之类的。注释掉对主程序影响不大。但是我想知道为什么 我的会报错。//自己找到问题的答案了,给遇到同样问题的同学分享一下。/...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

关于编程搜索答案