- 浏览: 349036 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
u012049463:
有所帮助,谢谢
FindBugs插件的安装与使用 -
lijunwyf41:
如果是windows系统应该怎么修改?
java.lang.ClassFormatError: Illegal class name "[L[Ljava/lang/String;;" in clas -
riverphoenix:
不错,写的很详尽
FindBugs插件的安装与使用 -
hw1287789687:
ClientAbortException: java.net ...
Connection reset by peer: socket write error -
ssy341:
谢谢分享,顺便问下,如果是web项目,那个服务怎么启动呢?有什 ...
oracle调用java 使用socket监听端口测试
1.如何用鼠标双击就可以运行的JAR文件?
MF文件是一个清单文件。里面记录的是版本信息,和主入口类信息等。
2.x+=y 和 x=x+y?
int a = 10;
a+=1;
与a = a+1;这里没什么区别。
但是
shot a = 10;
a+=1;
和a=a+1;这就有问题了 a+=这种方式 不但实现了功能,而且还进行一次数据类型的强制转换。
3.在实现x递增加1的时候,X++ 与++X有什么区别?
int i = 10;
// i++;
++i;
System.out.println("i\t"+i);
// 上述代码中i++ 与++i是作为单独语句进行执行的,所以等价。
// 如若i++ 与 ++i作为程序的某一部分是使用 就会存在差异
int a = 10;
int b = 10;
int j = 10+(a++);//a 变量值先参与表达式运算,然后在加1运算 所以a=10不变
int z = 10+(++b);//a 变量值先运算自加1 所以b=11 在参与表达式运算
System.out.println("j\t"+j);
System.out.println("z\t"+z);
4."+"操作符号在Java内部是如何实现字符串连接的。
String a = "a";
String b = "b";
//两个String类型和一个数值类型连接
String c = a + b;
//一个String类型和一个数值类型进行连接
String d = c + 1;
System.out.println("c\t"+c);
System.out.println("d\t"+d);
//上述代码进行编译之后 我们可以看到.
/* public static void main(String args[])
{
String a = "a";
String b = "b";
String c = (new StringBuilder(String.valueOf(a))).append(b).toString();
String d = (new StringBuilder(String.valueOf(c))).append(1).toString();
System.out.println((new StringBuilder("c\t")).append(c).toString());
System.out.println((new StringBuilder("d\t")).append(d).toString());
}*/
//由编译结果可以看出,"+"在实际字符串连接过程中,实际上借助了StringBuilder类以及append方法
//String 类代表大小已经固定的字符串 一旦被声明之后,内容和大小都没法改变,
//String类中提供的所有字符串操作方法,所返回的结果都是创建了一个新的String对象并返回。
//为了考虑效率问题 在底层Java采用了StringBuilder类,利用他的insert() append();在原字符基础上修改。
5.== 和 equals比较相等的区别?
int a = 10;
int b = 10;
String c = new String("tom");
String d = new String("tom");
//==用于判断两个简单变量的值是否相等。 或者两个引用变量的引用地址是否相等.
//equals用于判断两个引用地址指向的存储内容是否相等。
System.out.println(a==b);
System.out.println(c==d);
System.out.println(c.equals(d));
6.String s ="abc"与String s = new String("abc"); 有什么区别?
String a ="tom";
String b = "tom";
//字符串是程序中使用频率比较高的一种数据类型,
//Java为了加强程序的运行速度,因此在设计上使用了两种
//不同的方法来生成字符窜对象。
//一种是调用String类的构造方法
//另一种是使用双引号"";
//这两种方法生成的字符串对象,在内存中存取机制是不同的
//Java为String类型提供了缓冲池机制,当使用双引号定义对象时,
//Java环境首先去字符串缓冲池中寻找相同内容的字符串,如果存在
//则直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中.
//所以上述String a,String b;使用的是缓冲区中同一个存储对象.
String c = new String("tom");
String d = new String("tom");
//而String c,String d,则在对内存中开辟了两块内存空间,
//两个不同的引用只是内容相同而已.
7.break 与 continue
for(int i = 1;i<=10;i++)
{
if(i == 7){
break;
}
System.out.println("i \t"+i);
}
System.out.println("i = 7; break ;Game Over");
for(int j = 1;j<=10;j++)
{
if(j == 7){
continue;
}
System.out.println("j \t"+j);
}
System.out.println("j = 7; continue ;Game Over");
/*运行结果
*i 1
i 2
i 3
i 4
i 5
i 6
i = 7; break ;Game Over
j 1
j 2
j 3
j 4
j 5
j 6
j 8
j 9
j 10
j = 7; continue ;Game Over
*/
//continue 跳出本次循环 继续下一次循环 所以j=7后跳出 ,执行下面的j=8 j =9 j=10
//break 跳出本次循环 不在进行下次循环 意思就是i = 7 后面的就不执行了。
8.如何实现数组的copy
//static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length){};
//src 源数组
//srcPos 源数组中的起始位置
//dest 目标数组
//destPos 目标数据中的起始位置
//length 要复制元素的数量
int[] a = {10,20,30,40,50};
int[] b = {1,2,3,4,5,6,7,8,9};
System.arraycopy(a, 0, b, 2, 5);
for(int element : b){
System.out.println("element in b\t"+element);
}
//运行结果
/*element in b 1
element in b 2
element in b 10
element in b 20
element in b 30
element in b 40
element in b 50
element in b 8
element in b 9*/
9.几种排序方式
package com.dk.q08;
public class q08 {
/**
* @param args
*/
public static void main(String[] args) {
int[] testArray = {110,10,220,2,1,4,500,6,41,21,4};
//数组排序算法
//System.out.println("1.选择排序\n");
//q08.xuanze(testArray);
//System.out.println("2.冒泡排序\n");
//q08.maopao(testArray);
//System.out.println("3.插入排序\n");
//q08.charu(testArray);
System.out.println("4.快速排序\n");
q08.kuaisu(testArray);
}
//1.选择排序法
/*思路清理:
*
* 将要排序的数组分成两部分,
* 一部分是从小到达已经排好序的,一部分是无序的。
* 从无序的部分取出最小值放到已经排好的部分的最后。
*/
public static int[] xuanze(int[] testArray){
int t;
for(int i = 0 ; i < testArray.length ; i ++)
{
int m = i;
for(int j = i+1;j< testArray.length ; j ++)
{
//如果j元素比m元素小,将j赋值给m
if( testArray[j] < testArray[m] )
{
m = j;
}
}
//交换m和i两元素的位置
if(i != m)
{
t = testArray[i];
testArray[i] = testArray[m];
testArray[m] = t;
}
}
printlnArray(testArray);
return testArray;
}
//2.冒泡排序法
/*思路清理:
*
* 从数组开始扫描待排序的元素,在扫描的过程中依次对相邻元素进行比较,
* 将数值较大的元素往后移,每经过一次一趟排序之后,数值最大的元素
* 将移到末尾,此时记下该元素的位置,下一趟排序只需要比较到此位置
* 为止,直到所有元素都已有序排列.
*
*/
public static int[] maopao(int[] testArray){
int t;
for(int i = 0 ; i < testArray.length ; i ++)
{
//循环比较相邻两个元素大小
for(int j = 0 ; j < testArray.length-1 ; j ++)
{
//比较相邻元素大小,小的前移,大的后移。
if(testArray[j] > testArray[j+1])
{
t = testArray[j];
testArray[j] = testArray[j+1];
testArray[j+1]=t;
}
}
}
printlnArray(testArray);
return testArray;
}
//3.插入排序法
/*思路清理:
*
* 要将排序的数组分为两部分,每次从后面的数组部分中取出索引
* 最小的数组元素,插入到前面数组部分的适当位置中。通常在开始排序
* 时,将数组的第一个元素作为一组,后面的元素被当初另外一组.
*
*/
public static int[] charu(int[] testArray){
//把第一个元素看作一部分,第二个元素看作另一部分
//从第二部分中依次取元素插入到第一部分中。
for(int i = 1 ; i < testArray.length ; i ++)
{
int temp = testArray[i];
int j = i - 1;
//依次和i前面元素比较,寻找合适插入位置
while(temp < testArray[j]){
testArray[j+1] = testArray[j];
j--;
if(j == -1){
break;
}
}
//将插入元素插入到合适位置
testArray[j+1] = temp;
}
printlnArray(testArray);
return testArray;
}
//4.快速排序法
/*思路清理:
*
* 快速排序被认为最好的排序算法之一,他主要是将一个大的数组排序问题,
* 分解成2个小的数组的排序,而每个小的数组的排序又可以继续分解成更小的2个数组
* 在这样一直递归分解下去,直到数组的最小最后为2.
*
*
*/
public static int[] kuaisu(int[] testArray){
return quicksort(testArray,0,testArray.length-1);
}
public static int[] quicksort(int[] testArray,int left,int right){
//递归分组排序
int t ;
if( left < right )
{
int s = testArray[left];
int i = left;
int j = right+1;
while(true)
{
//向右找大于s的数的索引
while( i+1<testArray.length && testArray[++i]<s );
//向左找小于s的数的索引
while(j-1 >-1 && testArray[--j]>s);
//如果i>=j ,退出循环
if(i >= j)
{
break;
}
else
{
//交换i和j的位置的元素
t = testArray[i];
testArray[i]=testArray[j];
testArray[j]=t;
}
}
testArray[left] = testArray[j];
testArray[j]=s;
//对左边进行递归
quicksort(testArray,left,j-1);
//对右边进行递归
quicksort(testArray,j+1,right);
}
printlnArray(testArray);
return testArray;
}
public static void printlnArray(int[] testArray){
for(int element : testArray)
{
System.out.println("element in testArray \t"+element);
}
}
}
10.JDBC-API
DriverMnageer:管理一组JDBC驱动程序的基本服务
Connection:Java程序与特定数据库的连接
Statement: 用于执行静态SQL语句并返回它所生成的结果对象。
PreparedStatement:表示预编译SQL语句对象
CallableSatement:用于执行SQL存储过程的接口
ResultSet:表示数据库查询的结果集.
11. Statement 和 PrepareStetment
Statement 用于执行静态SQL语句并返回它所结果对象。Statement在执行sql之前必须指定一个事先准备好的sql语句。
而使用PrepareStetment对象执行SQL命令时,SQL命令被数据库进行解释并编译,然后被放到命令缓冲区。然后当执行同一个PrepareStetment对象的时候,他就会被在解析一次,但不会
被再次编译。在缓冲区中可以发现预编译命令,并且可以重新使用。PrepareStetment对象带来的编译次数的减少能提高数据库的总体性能。
12调用存储过程。
CallableStatement cs = conn.prepareCall("{call MyProcedure1()}"); 调用无参存储过程。
CallableStatement cs = conn.prepareCall("{call MyProcedure1(?,?)}"); 调用有参存储过程。
13 oracle 连接数据库 thin 和oci 方式有什么不一样么?
jdbc:oracle:thin@127.0.0.1:1521:test
jdbc:oracle:oci@test @<本地服务>
thin 属于 Direct-to-Datebase Pure Java Driver 类型 只要有数据库驱动jar包就可以直接通过网络端口访问数据库
oci 属于 Native-API partly-java driver类型 需要在客户端安装oracle的客户端安装软件.并注册本地服务名.理论上oci的性能要好于thin
14JDBC中的批处理
Statement 和 PrepareStetment都支持批处理功能,可以使用addBacth()方法追加sql操作语句 使用executeBatch();
Statement st = conn.createStatement();
st.addBacth("select * from a");
st.addBacth("update a set name='aa' where id=1");
st.addBacth("delete from a where id = 2");
st.executeBatch();
15提升sql语句的性能查询性能。
1.数据库设计与规划
1.1pramary key 字段长度尽量小,能用small integer就不要使用integer
1.2字符长度如果固定 请不要用varchar或nvarchar 比如电话号码,身份证号码
1.3如果长度不固定应该是用varchar 或nvarchar 除了可以节省存储空间外,存储硬盘时,也会较有效率。
1.4设计字段时,如果其值可有可无最好给一个默认值,并设置成不允许null,因为有些数据库在存放和查询有null的数据表时,会花费额外的运算动作。
2.适当的创建索引
2.1 primary key 字段可以自动创建索引
3.使用索引功能
4.避免在where子句中对字段使用函数.
5.and 与 or的使用
在and运算中,只要有一个条件使用到索引,即可大幅度提升查询速度,但在or运算中则要所有的条件都有索引才能提升查询效率。
6.Join与子查询
多数情况下join比子查询的效率要高,join语法也更容易理解。
7.其他查询技巧
比如order by ,distint 等会让数据库做额外的计算.如果没有要过滤重复数据的需要使用unionall union 因为后者加入了distinct算法。
8.尽可能的使用存储过程
存储过程是实现编译好,性能较好,也可减少sql语句在网络中的传递。方便商业逻辑的重复使用。
9.尽可能在数据源过滤数据
发表评论
-
JDK8
2017-06-08 16:32 0配置Eclipse支持JDK8 2014- ... -
缓存命中率统计-解决方案
2016-05-30 15:43 0public abstract class Abstrac ... -
Cannot convert value of type [com.sun.proxy.$Proxy64 implementing
2016-03-24 17:57 0问题描述: 想配置一个代理,并拦截ibatis的s ... -
泛型理解一
2016-03-23 21:26 0public <T> T getObjec ... -
真假ArrayList
2016-03-02 21:36 0先看一段代码 String[] arr = new St ... -
代码重构一 缓存接入
2016-02-19 13:57 0场景: 以前有一个LoadingLocalCache对 ... -
通用缓存设计一
2016-02-16 14:28 01. 什么是缓存? 缓存就是在内存中开辟一块空间 ... -
Java类设计一-工厂类,Executors
2016-02-15 10:28 0public class Executors 1.是一 ... -
谈谈线程池原理二
2016-02-14 17:17 0private ExecutorService th ... -
谈谈线程池原理-监控-解决方案
2016-02-14 14:14 0public class ExecutorMo ... -
谈谈线程池原理一
2016-02-14 14:05 01. ThreadPoolExecutor pub ... -
Disruptor PK BlockingQueue
2015-09-10 21:03 1552package com.disruptor.test3 ... -
sonar 简单安装,配置,以及使用
2015-09-07 14:36 1558服务端启动配置 1.下载sonarqube-5.1.z ... -
Spring 如何注入enum class?
2015-08-13 14:47 1367@Deprecated public enum BizU ... -
DelayQueue simple
2015-08-13 11:42 1009import java.util.concurrent.D ... -
XXX could not be redeployed because it could not be completely removed in the un
2013-05-14 15:29 1578解决办法: 把项目中引用的jar文件重新加一遍就行了,基本原 ... -
hadoop伪分布式配置
2016-02-15 10:24 496core-site.xml<?xml version ... -
Oracle 9i (版本: 9.0.1.0.1)精简客户端 绿色版
2013-03-08 15:45 0111 -
ERROR: Cannot load this JVM TI agent twice, check your java command line for dup
2016-02-15 10:24 3095ERROR: Cannot load this JVM T ... -
java.lang.ClassFormatError: Illegal class name "[L[Ljava/lang/String;;" in class
2013-01-30 20:02 7JAVA_OPTS="$JAVA_OPTS -ser ...
相关推荐
在Java的基础教程中,通常会包含以下几个核心知识点: 1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是...
### Java基础教学知识点 #### 一、Java的基本语法规则 **1.1 基本数据类型** Java中提供了多种基本数据类型,包括整数类型(`byte`, `short`, `int`, `long`)、浮点数类型(`float`, `double`)、字符类型(`...
下面,我们将深入探讨几个对初学者乃至专业人士都非常有益的Java学习网站,这些网站提供了丰富的教程、实战项目、社区支持以及最新的技术资讯,帮助你全面掌握Java语言。 1. **Oracle官方文档**: Oracle官方网站...
### JAVA基础入门知识点详解 #### 一、Java基础概述 - **标题**: "JAVA基础入门PPT" - **描述**: "JAVA初学者可以下载这个PPT,简单、实用,非常易于学习" 本PPT旨在为Java初学者提供一个简单易懂的学习材料,...
首先,Java的基础部分通常涵盖以下几个核心概念: 1. **Java环境设置**:学习Java的第一步是安装JDK(Java Development Kit)并配置环境变量,包括JAVA_HOME、PATH和CLASSPATH,以便在命令行中执行Java程序。 2. *...
下面将详细介绍Java基础中的几个核心概念。 首先,我们来看看Java标识符。标识符是程序中用于变量、类、方法等命名的符号。在Java中,创建标识符需要遵循几个规则:标识符可以包含字母、数字、下划线和美元符,但不...
Java 基础面试考察点是 Java 开发人员必须掌握的知识点,涵盖了 Java 基础知识、多线程、JVM 相关知识点等几个方面。 Java 基础知识点 1. Java 内部集合类:ArrayList 和 LinkedList 的区别,数据结构实现,扩容...
Java的基础部分主要包括以下几个方面: 1. **语法基础**:Java的语法与C++类似,但更简洁。它包括变量声明、数据类型(如整型、浮点型、字符型、布尔型等)、运算符(算术、关系、逻辑、位等)、流程控制(如if语句...
在接下来的几年里,多家公司如Netscape、Oracle、Borland、SGI、Adobe、IBM、AT&T、Intel等都获得了Java的许可证,推动了Java技术的发展和普及。 1996年,Sun公司成立了JavaSoft部门,负责开发、销售和支持基于Java...
这本书“Java基础知识电子书”是为初学者准备的,旨在帮助他们理解和掌握Java编程的基本概念和语法。 Java的基础知识主要包括以下几个方面: 1. **Java环境配置**:在开始编程之前,需要安装Java Development Kit ...
java的优势? 1:跨平台(平台:指的是操作系统) ... 1:在设置环境变量的时候 最少需要设置几个环境变量? 0个 2:在设置环境变量的时候 通常需要设置几个环境变量? 1个 -》 PATH -> jdk/bin
这份“JAVA基础入门 ppt”是为初学者或非计算机专业人员设计的,旨在提供一个简洁明了的学习路径,帮助他们快速掌握Java编程的基础知识。 首先,我们需要理解Java的基本概念。Java是由Sun Microsystems(现为Oracle...
在本段内容中,我们可以看到几个关于Java基础培训的主要知识点,这些知识点涵盖了从Java开发环境搭建到Java编程基础知识,再到图形用户界面(GUI)编程,最后到Java各种功能包的讲解。接下来,我会逐个知识点详细展开...
Java程序设计基础涵盖了以下几个核心知识点: 1. Java语言介绍:介绍了Java的历史背景和发展,以及它的设计理念和应用领域。 2. 简单的Java程序:如何编写和运行一个基本的Java程序。 3. Java中的变量与数据类型:...
【Java基础重点整理】 在Java编程语言中,有几个核心概念和特性是学习者必须掌握的基础知识。这些概念包括面向对象的编程原则、类的访问修饰符、以及Java语言的特性和开发环境。 1. **面向对象的概念** - **变量*...
这份教程可能包含了以下几个关键的知识点: 1. **认识Java**:这部分通常会介绍Java的历史,由Sun Microsystems(现为Oracle)开发,以及Java为何在软件开发领域占据重要地位。还会解释Java的“一次编写,到处运行...
"黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...
在Java的学习过程中,你会遇到以下几个核心概念: 1. **环境搭建**:安装Java Development Kit (JDK),设置环境变量,包括JAVA_HOME、PATH和CLASSPATH,这是运行和编译Java程序的前提。 2. ** HelloWorld 程序**:...
Java作为一种广泛使用的面向对象编程语言,其基础知识包括但不限于以下几个方面: 1. **Java环境搭建**:首先,学习Java需要安装Java Development Kit (JDK),配置好环境变量,了解如何使用Java编译器javac和运行时...
Java基础入门学习资料通常涵盖以下几个关键知识点: 1. **Java环境搭建**:首先,你需要安装Java Development Kit(JDK),这是编写、编译和运行Java程序所需的基础工具。在Windows、Mac或Linux系统上,都可以找到...