摘要:
方法一: 阅读全文
摘要:
11.启动一个线程是用run()还是start()?run() :如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。start() :使该线程开始执行;Java 虚拟机调用该线程的 run 方法。答一:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。答二:之所以出现线程,就是为了更好的利用CPU,让她更加“精明”的干活。通过调用Thread类的start()方 阅读全文
摘要:
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。可以通过下面的测试代码来验证这一点: 1 public class test_1{ 2 3 public static String staticField = "静态变量"; 4 5 public String field = "变量"; 6 7 // 静态初始化块 8 static { 9 System.out.println(staticField);10 System.out.printl... 阅读全文
摘要:
异常的概念 任何的异常都是Throwable类(为何不是接口??),并且在它之下包含两个子类Error / Exception,而Error仅在当在Java虚拟机中发生动态连接失败或其它的定位失败的时候,Java虚拟机抛出一个Error对象。典型的简易程序不捕获或抛出Errors对象,你可能永远不会... 阅读全文
摘要:
1.hashmap 和 hashtable 的区别2.sheep()和wait() 区别sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁。wait 是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象的发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。创建新执行线程有两种方法。一种方法是将类声明为Thread的子类。该子类重写Thread的run方法。接下来可以分配并启动该子类 阅读全文
摘要:
java 多线程 目录:Java 多线程——基础知识Java 多线程 —— synchronized关键字java 多线程——一个定时调度的例子java 多线程——quartz 定时调度的例子java 多线程—— 线程等待与唤醒多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操... 阅读全文
摘要:
1 #include 2 3 //比较两个字符串大小 4 int strcmp(const char *str1,const char *str2) 5 { 6 assert((*str1!=NULL)&&(*str2!=NULL)); 7 while(*str1!='\0'&&*str2!='\0'&& *str1==*str2 ) 8 { 9 str1++;10 str2++;11 }12 int res=*str1-*str2;13 if(res==0)14 return 0; //st... 阅读全文
摘要:
将两个已经排好序的链表,比如从小到大,合并成一个有序的链表#include "stdafx.h"#include typedef struct node{ int data; struct node *next;}node, *linklist; void createlist(linklist &L,int n)//逆位序输入n个元素的值,建立带头结点的单链表L {//假设输入为9 7 5 3 1 ,则单链表存储依次为1 3 5 7 9 L=(linklist)malloc(sizeof(node)); L->next=NULL; for(int i=1;. 阅读全文
摘要:
维护k个元素的最大堆,即用容量为k的最大堆存储最小的k个数,k1设为大顶堆中最大元素。遍历一次数列,n,每次遍历一个元素x,与堆顶元素比 较,x 5 #define MAX 1000 6 7 void swap(int &a,int &b) 8 { 9 int c;10 c=a;11 a=b;12 b=c;13 }14 15 void max_heapity(int heap[],int i,int len)//保持最大堆性质16 {17 int left=2*i, right=2*i+1,largest=-1;18 if((leftheap[... 阅读全文
摘要:
1 // 堆排序.cpp : 定义控制台应用程序的入口点。 2 3 #include "stdafx.h" 4 #include 5 #define MAX 100 6 7 void swap(int &a,int &b) 8 { 9 int c;10 c=a;11 a=b;12 b=c;13 }14 15 void max_heapity(int heap[],int i,int len)//保持最大堆性质16 {17 int left=2*i, right=2*i+1,largest=-1;18 if((leftheap[i]))19... 阅读全文
摘要:
有一个单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列,根据出列的先后顺序重新组成单向循环链表。函数原型: void reorder(Node **head , int m)//没有将要出列的元素重新组织成循环列表,只将按顺序出列的元素依次打印出来,有待完善 1 // 单向循环链表队列 报数出列.cpp 2 //没有将要出列的元素重新组织成循环列表,只将按顺序出列的元素依次打印出来,有待完善 3 #include "stdafx.h" 4 #include 5 6 typedef struct node 7 { 8 int data; 9 struct no. 阅读全文
摘要:
迭代法: 1 // 反转单链表.cpp : 定义控制台应用程序的入口点。 2 3 #include "stdafx.h" 4 #include 5 6 typedef struct node 7 { 8 int data; 9 struct node *next;10 }linknode,*linklist;11 12 linknode *reverse(linknode *head)//带有头结点的单链表迭代反转,非递归方法13 //思路:将当前结点的next指向前驱;当前结点指向next14 {15 ... 阅读全文
摘要:
给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列;如果都是负数,则输出最大和是0。 1 // 连续元素相加和为最大的序列(有正有负).cpp : 定义控制台应用程序的入口点。 2 3 #include "stdafx.h" 4 5 int max(int a,int b,int c) 6 { 7 double max_v=a; 8 if(b>a) 9 max_v=b;10 if(c>max_v)11 max_v=c;12 return max_v;13 }14 15 int min(int a,i... 阅读全文
摘要:
给定一个浮点数的序列,F1,F2,F3,……,Fn(1a) 9 max_v=b;10 if(c>max_v)11 max_v=c;12 return max_v;13 }14 15 double min(double a,double b,double c)16 {17 double min_v=a;18 if(bmax_val)37 max_val=Max[i];38 }39 return max_val;40 delete [] Max;41 delete [] Min;... 阅读全文
摘要:
1 // 插入排序.cpp : 定义控制台应用程序的入口点。 2 3 #include "stdafx.h" 4 5 void insertsort(int a[],int n) 6 { 7 int i,key; 8 for(int j=1;j=0)&&(a[i]>key)) //交换a[i]和a[i+1]13 {14 int temp;15 temp=a[i];16 a[i]=a[i+1];17 a[i+1]=temp;18 i--;1... 阅读全文
摘要:
1 // 快速排序.cpp 2 3 #include "stdafx.h" 4 5 int partition(int a[],int p,int r) 6 { 7 int x,i,j,tmp; 8 x=a[r]; 9 i=p-1;10 for(j=p;j<=r-1;j++)11 {12 if(a[j]<=x) 13 {14 i++;15 tmp=a[i];//交换a[j]和a[i]16 a[i]=a[j];17 a[j... 阅读全文
摘要:
给出统计一个字节中被置1的位的个数的函数,要求效率尽可能高 1 // 一个字节中置1的位数.cpp 2 3 #include "stdafx.h" 4 5 int bit1count(char x) 6 { 7 int count=0; 8 while(x) 9 {10 x&=(x-1);//去掉最右边的111 count++;12 }13 return count;14 }15 16 void main()17 {18 int num=0;19 char ch;20 printf("inpu... 阅读全文
摘要:
有一由小到大排列的数组m[],数组大小为n,请用二分法查找算法找出与关键数key相等的元素,若查找成功返回元素在数组中的位置,没找到返回-1. 1 // 二分查找.cpp 2 3 #include "stdafx.h" 4 #include 5 6 int search(int m[],int key,int low,int high) 7 { 8 int mid=(low+high)/2; 9 if (low>high)10 return -1;11 if (key==m[mid])12 return mid;13 el... 阅读全文
摘要:
有N个大小不等的自然数(1,2,3,…..N)请将它们从小到大排列。算法要求:时间复杂度为O(n),空间复杂度为O(1)。请简要说明你采用的排序算法并写出c的伪代码。 1 // 计数排序.cpp : 定义控制台应用程序的入口点。 2 //有N个大小不等的自然数(1,2,3,…..N)请将它们从小到大排列。算法要求:时间复杂度为O(n),空间复杂度为O(1) 3 4 #include "stdafx.h" 5 #include 6 7 void counting_sort(int A[],int N) 8 { 9 int C[100],i,j;10 int B[100];1. 阅读全文
摘要:
请不用任何c runtime函数实现以下函数:Inter trim_str(char *pstr)函数功能如下:1)滤掉字符串头尾的空格、回车、tab2)输出字符串通过输入字符串指针返回3)如果成功则返回0否则返回非0 1 // 字符串过滤空格、回车、tab 2 3 #include "stdafx.h" 4 5 int trim_str(char *pstr) 6 { 7 char *p=pstr; 8 char *q; 9 while (*p!='\0')10 {11 if (*p==' '||*p=='\t'||*p== 阅读全文