一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数

一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数package com.harrison.Class01;public class Code07_OneNumOddTimes { public static void printOddTimesNum(int[] arr) { int eor=0; for(int i=0; i<arr.length; i++) { eor^=arr[i]; } System.out.println(eor);
分类: 其他 发布时间: 11-27 08:18 阅读次数: 0

一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数

一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数package com.harrison.Class01;public class Code08_TwoNumOddTimes { public static void printOddTimesNum(int[] arr) { int eor=0; for(int i=0; i<arr.length; i++) { eor^=arr[i]; } //eor==a^b && eor
分类: 其他 发布时间: 11-27 08:18 阅读次数: 0

一个数的二进制形式中有多少个1

package com.harrison.Class01;public class Code09_BitOneCounts { public static int bit1Counts(int n) { int count=0; while(n!=0) { int rightOne=n&((~n)+1); count++; n^=rightOne; } return count; } public static void main(String[] a
分类: 其他 发布时间: 11-27 08:17 阅读次数: 0

反转双链表

package com.harrison.class02;import java.util.ArrayList;import java.util.List;public class Code02_ReverseDoubleList { public static class DoubleNode{ public int value; public DoubleNode last; public DoubleNode next; public DoubleNode(int v
分类: 其他 发布时间: 11-27 08:17 阅读次数: 0

单链表删除给定值

package com.harrison.class02;public class Code03_DeleteGivenValue { public static class Node{ public int value; public Node next; public Node(int v) { this.value=v; } } public static Node deleteGivenValue(Node head,int num) { while(h
分类: 其他 发布时间: 11-27 08:17 阅读次数: 0

如何用栈结构实现队列结构

如何用栈结构实现队列结构:用两个栈拼队列结构package com.harrison.class02;import java.util.Stack;public class Code07_TwoStacksImplementQueue { public static class TwoStacksToQueue{ public Stack<Integer> pushStack; public Stack<Integer> popStack; public
分类: 其他 发布时间: 11-27 08:16 阅读次数: 0

如何用队列结构实现栈结构

如何用队列结构实现栈结构(用两个队列)package com.harrison.class02;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class Code08_TwoQueuesImplementStack { public static class TwoQueueToStack<T> { public Queue<T> queue;
分类: 其他 发布时间: 11-27 08:15 阅读次数: 0

设计模式的理解: 访问器模式 Visitor

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。在软件构建过程中,由于需求的改变,某些类层次结构中需要增加新的行为,如果这些操作在基类中进行更改,那么派生类也要做出响应的变更,给变更工作带来繁重的负担。访问器模式,就是把原来基类和派生类的实现放在访问器类中,各个派生类访问这些访问器的操作方
分类: 其他 发布时间: 11-27 08:15 阅读次数: 0

设计模式的理解:解释器模式 Interpreter

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。这种模式的难点主要是文法解析算法的设计,需要了解些编译原理的知识。所谓终结符,就是文法中不可再细分的字符,例如关键字,变量,运算符,结束符,常量等。 非终结符就是还可以再划分的东西,例如 条件表达式,算术表达式,代码块等编译的步骤分为四大步骤:1)词法分析 : 把输入的字符串拆分.
分类: 其他 发布时间: 11-27 08:15 阅读次数: 0

设计模式的理解:对23个设计模式的总结

设计模式名 ,链接可用 设计模式 意图 适用的场景 关键实现过程 优点 缺点 备注 1 模板模式 通常定义出一个稳定的骨架,特定的内容的实现延迟至子类中去实现 易变,容易根据实际需求改动的代码块,对此代码块进行延迟到子类中实现 不变的算法在基类中保留,易变的算法变成虚函数由子类实现 把不确定部分剥离开来,实现确定的部分。让将来的调用者简单实现不确定的方法就可以达到想要的效果 对调用者屏蔽了稳定的代码,使调用者虽了解使用..
分类: 其他 发布时间: 11-27 08:15 阅读次数: 0

操作系统原理: 操作系统概述

操作系统(OS)是一个系统软件,它处于硬件之上,应用软件之下。其层次架构在硬件和应用软件之间。操作系统完成对硬件的访问和控制,它有外壳(shell)对外部提供服务,和内核(Kernel)对硬件和硬件资源管理提供服务。硬件管理主要包括:CPU,进程,线程,物理内存,虚拟内存,文件系统管理、设备驱动和中断处理 等。OS的Kernel特征:1)并发:一段时间内可以存在多个运行的程序2)共享:可以给多个程序访问,并行互斥处理规则。3)虚拟:让每个用户觉得有一个计算机专门为它服务。4)异步
分类: 其他 发布时间: 11-27 08:14 阅读次数: 0

操作系统原理:操作系统的启动 中断/异常/系统调用

操作系统的存储刚开始并不是内存里,而是先放在硬盘DIsk上 。由BIOS(基本输入输出系统)提供支持。开机时,BIOS首先检查外设,检查完没问题。再加载相应的软件。Bootloader: 这个程序的作用就是将 操作系统从硬盘加载到内存中。 BIOS 预先占用了系统内存从640kb开始到1M 。内存地址可以表示成 CS:IP 其中CS 是段寄存器,IP是指令寄存器 ,这两个寄存器的组合就可以指定成具体的内存地址。以X86 为例,BIOS启动的开始地址为 CS:IP =0xf000:fff...
分类: 其他 发布时间: 11-27 08:14 阅读次数: 0

Linux C :Linux 下第一个C程序

我首先用QQ管家下载VMware Workstation中的虚拟机,然后下载Ubuntu64的映像,开启了Linux之路。 搞了些设置后,成功启动Linux ,添加自身Window 和 虚拟机上Linux的共享目录方便传文件。再添加些软链接(快捷方式)来方便访问文件夹。 一般刚开始用VIM 编辑本文,操作起来比较不方便。所以一般现在Window上编辑好,然后将文本复制到Linux中。 首先创建 .c的文件在此下编辑 ,我的时helloworld.c...
分类: 其他 发布时间: 11-27 08:14 阅读次数: 0

操作系统原理:中断,异常,系统调用

系统调用(system call):为应用程序请求操作提供服务。可异步和同步,对于返回值,同步会等待值返回再执行下一步,异步发出系统调用请求后,紧接着就会执行下一步操作。异常 (Exception): 应用程序产生的,在执行过程中发生非法的指令,破坏其他程序的处理状态。异常是同步的中断 (interrupt;): 来源于外设,是异步的,外设不清楚什么时候中断会发生。中断时持续的。当发生中断时,硬件和软件需要分别做一些事情对于硬件来讲,发生中断时要设置中断标记,当CPU知道了外设产..
分类: 其他 发布时间: 11-27 08:14 阅读次数: 0

操作系统原理: 计算机的体系结构、内存的层次结构 、地址的生成

操作系统需要完成抽象逻辑地址空间,保护独立地址空间,提供可以访问共享的内存空间,还需要根据程序运行场景虚拟出更多的地址空间这4步。在操作系统中管理内存的方法包括:程序重定位、分段、分页、虚拟内存、按需分页虚拟内存等。一、地址空间 和地址的生成地址空间分为两种,一种是物理地址空间,它的地址空间和内存条代表的主存,硬盘代表的外村是直接映射的关系。第二种是逻辑地址空间,指的是应用程序所能看到的地址空间,它是一维的,由十六位数字表示。所有逻辑地址空间都会落实在一个物理地址空间上,这个...
分类: 其他 发布时间: 11-27 08:13 阅读次数: 0

操作系统原理:连续的内存分配

一、由于内存释放导致的内存碎片的问题空闲内存碎片化可能导致很多的内存不会被利用。内存碎片包含两种,一种时内部碎片,一种时外部碎片,所谓的内部碎片,就是分配给应用程序使用但是实际却无法被利用的碎片,而外部碎片是在分配单元里的未使用内存。当程序从硬盘加载到内存中的时候就需要一串比较长的连续内存空间。因此,操作系统需要管理内存空间二、分区的动态分配假如由三块可用的内存空间,1K ,2K ,500B。假如需要分配一个400B内存空间给程序1)内存空间的分配策略——首次适配所谓的首次适配,..
分类: 其他 发布时间: 11-27 08:13 阅读次数: 0

操作系统原理 : 非连续的内存分配,分段,页表

非连续的内存分配通常,分段和分页两种方式由于连续的内存分配方式存在碎片问题。非连续的内存分配就可以充分利用内存碎片,主要存在的问题就是开销,如果碎片多寻址效率会比较慢。目录一、分段二、分页机制三、页表四、二级页表和多级页表五、反向页表一、分段1)分段地址空间数据是由段存储,根据应用执行的特点可以将段进行分类:例如文件头,代码段、数据段、符号表、堆、栈等。采用分段管理方式,就是将段进行分类区分管理。2)分段寻址方法分段寻址方法即根据逻辑地址空间映..
分类: 其他 发布时间: 11-27 08:13 阅读次数: 0

Linux C :C的汇编码生成

想知道一段C语言写的代码对应生成的汇编语言代码是什么?1)一些基本的编码过程原理2)需要了解常用的寄存器有哪些,专门来做哪些事3)C语言对应的代码堆栈情况C的汇编代码是一个或多个cpp文件通过编译器处理而成的,而一个编译器通常要通过词法分析,语法分析,语义分析才能够生成汇编代码。以gcc为例,一个cpp文件同通过编译器生成汇编代码(*.s)文件,再通过汇编器生成出机器能够识别的指令代码(*.o)文件,最后同通过链接器,将多个指令文件合成一个大指令文件(*.out) 供机器去执行。...
分类: 其他 发布时间: 11-27 08:13 阅读次数: 0

操作系统原理:覆盖技术、交换技术、虚拟内存概要

随着时间的推移,程序不断地更新,规模不断增长,运行的时候可能会发现内存会越来越不够用。所以希望一个容量大,更快,更便宜,数据不易丢失的
分类: 其他 发布时间: 11-27 08:12 阅读次数: 0

操作系统原理:页置换算法,FIFO,LRU,Clock,LFU,二次机会法

在虚存管理中。当发生缺页中断时,进行页面的换入操作。对于一些不能够被换出的内存,通常采用页面锁定的方式,在页表中添加锁定标志位(lock bit)以区分该页是否是常驻内存。当内存满需要换出时,为了减少缺页频率通常由几种页面置换算法。例如、最优页面置换算法、先进先出算法、最近最久未使用算法、时钟页面置换算法、二次机会法等。目录一、最优页面置换算法二、先进先出算法(FIFO)三、最近最久未使用方法(LRU)四、时钟页面置换算法。(Clock)五、二次机会法六、最不常用法(...
分类: 其他 发布时间: 11-27 08:12 阅读次数: 0