java 面向对象——抽象类与接口
抽象类
抽象类只是比普通类多了一些抽象方法而已,抽象方法没有方法体。
抽象类只是比普通类多了一些抽象方法而已,抽象方法没有方法体。
ThreadLocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单:在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。
AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woody.test"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly | preferExternal"] >
</manifest>
Huffman编码是一种无损压缩编码方案。
思想:根据源字符出现的概率对字符编码,概率高的字符使用较短的编码,概率低的使用较长的编码,从而使得编码后的字符串长度期望最小。
Huffman编码是一种贪心算法:每次总选择两个最小概率的字符节点合并
时间复杂度O(n),空间复杂度O(1)
#include <iostream>
#include <stdio.h>
using namespace std;
void RemoveBlank(char* pString){
int j = 0;
for(int i= 0;pString[i]!='\0';i++){
if(pString[i] != ' '){
if(i != j){
pString[j] = pString[i];
}
j++;
}
}
pString[j] = 0;
}
int main(){
char str [] = "I have Dream o";
RemoveBlank(str);
cout<<str<<endl;
return 0;
}
#include <iostream>
#include <stdio.h>
using namespace std;
void FindMax(const int* a, int size,int& nMax,int& nSecondMax){
for(int i = 0;i<size;i++){
if(nMax < a[i]){
nSecondMax = nMax;
nMax = a[i];
}else if(nSecondMax < a[i]){
nSecondMax = a[i];
}
}
}
int main(){
int a [] = {1,5,4,8,3,2,9,14};
int nMax=0;
int nSecondMax = 0;
FindMax(a,sizeof(a)/sizeof(int),nMax,nSecondMax);
printf("max=%d,secondMax = %d\n",nMax,nSecondMax);
return 0;
}
前序遍历:根左右 中序遍历:左根右 后序遍历:左右根
这篇笔记整理常见查找与排序算法的核心实现,便于快速回顾和对照。
| 字符 | Java类型 | C类型 |
|---|---|---|
| V | void | void |
| Z | jboolean | boolean |
| I | jint | int |
| J | jlong | long |
| D | jdouble | double |
| F | jfloat | float |
| B | jbyte | byte |
| C | jchar | char |
| S | jshort | short |
| 数组则以"["开始,用两个字符表示 | ||
| [I | jintArray | int[] |
| [F | jfloatArray | float[] |
| [B | jbyteArray | byte[] |
| [C | jcharArray | char[] |
| [S | jshortArray | short[] |
| [D | jdoubleArray | double[] |
| [J | jlongArray | long[] |
| [Z | jbooleanArray | boolean[] |
当java调用,
static {
System.loadLibrary("hello");
}
jni会尝试去寻找JNI_OnLoad方法,所以一些初始化的东西就可以在这里面实现。