摘要:
C++复习15.指针知识4.指针知识在Tencent笔试和面试中都考到了C/C++中的指针知识,因为自己很不喜欢使用指针,所以才开始学习Java的,但是现在看来还是躲不掉的,所以这里总结一下指针的知识。指针涉及到了数组的问题,一个很容易混淆的知识就是“指针数组”和“数组指针”。指针数组,顾名思义,他本身就是一个数组,什么的数组呢?存放的是指针的数组。相对的数据指针,落脚点在指针上,它是一个指向数组的指针。举个例子说明一下:int * p[2];声明了一个数组,数组的类型是int类型的指针,也就是说这个数组里面存放的是int型的指针。表示为int* p[]是一个更好地理解方式。相对应的int ( 阅读全文
摘要:
操作系统复习1.并发和死锁20131019前言:在TP面试的时候问到了操作系统中的死锁问题,还有就是在YY遇到的进程同步问题,这些是在操作系统的两部分内容,之前没有复习,吃点亏,现在补回来。1.死锁的原因一组互相竞争系统资源或者是进行通信的进程间的永久阻塞。当进程都在等待某一个事件(典型的是等待所请求资源的释放),而只有在这组进程中其他也被阻塞的进程才可以触发该事件,这组进程发生了死锁。进程竞争的资源分为两种一种是可以重用性的资源,一种是可消耗的资源。可以重用的资源一次只能够提供给一个进程使用,而且不会因为使用而耗尽资源,进程使用完资源的时候,释放资源,其他的进程可以再次使用,比如CPU处理器 阅读全文
摘要:
网络编程1.套接字编程基本知识1.首先网络编程使用C++,要引入一些库 #include 并且需要使用静态链接库,这里使用的是编译语句#pragma comment(lib,"ws2_32.lib")相当于将ws2_32.lib静态链接库加入到项目中,效果和添加引用是一样的。 ws2_32.lib对应的是ws2_32.dll,提供对于常见网络编程的API接口支持,使用其中的网络接口就需要将ws2_32.dll添加到工程,否则需要动态的加载ws2_32.dll。2. WSAStartup函数的介绍 WSAStartup是Windows SockNDs Asynchronous 阅读全文
摘要:
1.OSI(Open System Interconnect Protocol)开放互联协议,这是一个七层的计算机网络协议,包括:物理层、数据链路层、网络层、传输层、回话层、表示层、应用层。TCP/IP(Transmission Control Protocol/ Internet Protocol):传输控制协议/因特网互联协议,这是一个四层的计算机网络模型,分别是:网络接口层、网络层、传输层和应用层。结合OSI和TCP/IP产生了一个五层结构:物理层、数据链路层、网络层、传输层、和应用层。当前使用的就是TCP/IP协议的Internet2.集线器是工作在物理层,网卡工作在OSI的物理层,交 阅读全文
摘要:
C++各种 排序操作5.排序操作5.1基础知识对于排序操作,介绍过很多的算法,在笔记中有关于排序算法的简单总结,但是对于每一个配需算法没有详细的深入,知识对于排序的稳定性做了一下了解。下面深入的分析一下排序算法,并且使用C++语言实现。首先介绍上一次在笔记中整理稳定排序和不稳定排序的知识:选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。同时我们在分析一下关于排序算法的一些知识。对于排序,需要序列和关键字。关键字可能重复出现,这样排序的结果会因为排序算法的不同而产生不同的排序结果,这就是所谓的稳定排序和不稳定排序。当数据量比较小的 阅读全文
摘要:
数据结构、算法及应用张宪超主编科学出版社1.数据结构的基本概念知识数据结构的逻辑结构由数据节点和连接两个节点的边组成。数据节点的数据类型:整型,实数型,布尔型,字符型,指针数据类型结构的分类:讨论逻辑结构(K,R)一般以关系集R为主:线性结构,属性结构,图结构。数据的存储结构:顺序存储,连接方法,索引方法,散列方法,分析一下这些不同的数据存储方式:顺序存储就是把一组节点放在一片地址相邻得存储单元,节点中的逻辑关系用存储单元之间的自然关系来表达。顺序存储是为使用整数编码访问数据节点提供了便利。链接方法是在节点的存储结构中附加指针域来存储节点的逻辑关系。链接方法中的数据节点有两部分组成:数据域存放 阅读全文
该文被密码保护。 阅读全文
该文被密码保护。 阅读全文
该文被密码保护。 阅读全文
该文被密码保护。 阅读全文
摘要:
子数组求和最大问题20131011问题描述一个数组中,有整数也有复数,求这个数组的所有子数组中,求和最大的值。这是一个动态规划问题,乍看上去没有什么简单的方法,把所有的情况列出来就可以了,但是时间复杂度太高了,不是一个很好的算法,必须改变方法。我们分解问题,就是b[i]表示以a[i]结尾的子数组最大的和,那么我们可以动态规划,也可以叫做贪心算法。对于b[i] = max( b[i-1] + a[i], a[i]);因为对于a[i]结尾的子数组,最大的和有两种情况,一个是他自己,一个是把之前的b[i-1]也加上去。如果b[i-1] > 0则是选择b[i-1]+a[i],反之选择a[i].代 阅读全文
摘要:
Java复习11. 单例编程1.最简单的写法,那个方式是线程不安全的publicclassSingleton {privatestaticSingletoninstance;privateSingleton(){}publicstaticSingleton getInstance(){if(instance==null){instance=newSingleton();}returninstance;}}2.因为上面的是线程不安全的,所以我们确保线程安全的方式使用synchronized修饰getInstance方法,这样的话确保了线程的安全,但是有问题,效率很低,大多数情况下此方法不需要同步 阅读全文
摘要:
Java进阶7并发优化5并发控制板方法20131114前言:Java中多线程并发程序中存在线程安全的问题,之前学习Java的同步机制,掌握的同步方法只有一种就是使用synchronized关键字,解决线程之间的同步问题。同时在操作系统C++多线程中也了解到其他的多线程同步机制:比如信号量、临界区、互斥锁等等在这里系统的整理一下在Java中实现线程同步的机制:内部锁,重入锁,读写锁,信号量等等。volatile关键字,保证读写的共享对象时在共享内存中的,而不是线程中的副本,但是不保证线程安全。Synchronized关键字,可以锁住当前对象,或者是类的对象,同时还有代码块等等,用法之前介绍过,同 阅读全文
摘要:
Java进阶7并发优化4——JDK并发数据结构20131114由于并发程序和串行程序的不同特点,在串行程序中使用的数据结构可能无法在并行程序中直接的正常使用,因为这些数据结构可能不是线程安全的,所以这一次并发程序的优化介绍的是并发程序中的数据结构,比如并发List,并发Set,并发Map等。1.并发List Vector实现的List接口,CopyOnWriteArrayList也是实现的List接口,这两个List的实现是线程安全的,但是对于ArrayList不是线程安全的,所以在多线程中尽量避免使用ArrayList,如果因为某些原因必须使用的话,需呀使用同步机制: Collection. 阅读全文
摘要:
Java进阶7并行优化JDK多任务执行框架技术20131114Java语言本身就是支持多线程机制的,他提供了Thread类Runnable接口等简单的多线程支持工具,同时为了进一步改善并发程序的性能,在JDK中还提供了用于多线程管理的线程池概念。并行优化中,一个重要的知识点就是线程池技术。ExecutorService exe = Executors.newCachedThreadPool();1.无限制线程的缺陷多线程设计的软件方法确实可以最大限度的发挥现代多核处理器的计算能力,提高生产系统的吞吐量和性能。但是如果不加控制的随意的使用多线程技术,对于系统性能反而会产生不利的影响,线程的创建, 阅读全文
摘要:
Java进阶7并发优化2并行程序设计模式201311141.Master-worker模式前面讲解了Future模式,并且使用了简单的FutureTask来实现并发中的Future模式。下面介绍的是Master-Worker模式。这个模式也是经常使用的并发模式之一,核心思想就是系统有两类线程协同工作:Master线程和Worker线程。Master线程负责接收和分配任务,Worker线程负责处理这些子任务。当每一个worker线程处理完成之后,将结果返回给Master线程,有Master线程负责整合结果。他的好处在于能够将一个大的任务拆分成为若干个小任务,并且能够并行执行,从而提高系统的吞吐量 阅读全文
摘要:
Java进阶7并发优化1并行程序的设计模式20131114本章重点介绍的是基于Java并行程序开发以及优化的方法,对于多核的CPU,传统的串行程序已经很好的发回了CPU性能,此时如果想进一步提高程序的性能,就应该使用多线程并行的方式挖掘CPU的潜能。本章知识点:常用的多线程设计模式,比如Future模式,Master-Worker模式,Guarded Suspeionsion模式、不变模式、生产者消费者模式等等。JDK内置的多线程框架和各种线程池技术;JDK内置的并发数据结构;JDK并发控制方式,比如内部锁,重入锁,读写锁,ThreadLocal变量,信号量等等有关锁的一些优化方法;使用无锁的 阅读全文
摘要:
Java进阶6异常处理的陷阱20131113异常处理机制是Java语言的特色之一,尤其是Java的Checked异常,更是体现了Java语言的严谨性:没有完善的错误的代码根本就不会被执行。对于Checked异常,Java程序要么声明抛出,要不使用try .. catch捕获程序运行过程中抛出的异常,进行处理。Java开发程序员都是无法回避异常处理的情况,Java异常处理同样存在着一些迷惑的地方。例如在finally代码块执行的规则是怎样的?程序中遇到return语句之后还会执行finally代码块吗?程序遇到System.exit()的时候还会执行finally代码块吗?1.正确关闭资源的方式 阅读全文