- 浏览: 29085 次
最新评论
-
leozam:
酷的飞上天空 写道也可以直接拼接var v = '<a ...
js中单引号双引号的使用 -
酷的飞上天空:
也可以直接拼接var v = '<a href=&quo ...
js中单引号双引号的使用 -
white_crucifix:
毕竟是对象
关于JAVA中StringBuffer和String值的比较
文章列表
jdk1.8在线源码
- 博客分类:
- Java工具
想要看JDK源码,可以用IDE+源码JAR的方式查看。
以下介绍个更方便地查看JDK源码的方式。
直接上URL
https://code.csdn.net/hty1053240123/jdk-source/tree/master
这样只要有网络,就可以随时随地查看JDK源码了。
(注:源码为JDK1.8源码)
引用:http://blog.csdn.net/hty1053240123/article/details/52858123
Java类加载器 & Java垃圾回收方式
- 博客分类:
- Java基础
1.Java类加载器
按加载的顺序分为
A 引导类加载器 Boostrap Classloader
加载jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类
B 扩展类加载器 Extension Classloader
加载jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包
C 系统加载器 System(App) Classloader
加载classpath中指定的jar包及目录中class
D 自定义加载器 Customer Classloader
应用程序根据自身需要自定义的ClassLoader,如tomcat会 ...
Java基础知识杂锦(四)
- 博客分类:
- Java基础
1.常见的哈希冲突解决方法:
A.开放地址法
B.链地址法(java8以前HashMap使用此法,java8中HashMap引入了平衡树法)
C.再散列(二次哈希)
D.建立一个公共溢出区
2.Integer中的equals方法
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false ;
}
故 new Integer(1 ...
大家都知道final是java中的修饰符之一。
用来修饰类,方法或变量。
本文不讨论以上用法,至少讨论啥呢,请看以下代码:
public class Main{
static void normalAdd(){
byte b1=1,b2=1,b3;
// b3=b1+b2;//这样写会导致编译无法通过,因为b1+b2会自动升格成int型,int必须被强转才能赋值给byte
b3=(byte) (b1+b2);//这样写是正确的
}
static void finalAdd(){
final byte b1=1,b2=1,b3;
b3=b1+b2;//看 ...
Java基础知识杂锦(三)
- 博客分类:
- Java基础
1.外部类,内部类,局部内部类
外部类:只能用public,default修饰符
内部类:可以用所有修饰符,此时内部类相当于外部类的一个成员变量
局部内部类:即方法中定义的类,只能用abstract,final,default修饰符,相当于一个局部变量。
代码示例:
public class Main
{
int MainInt;
public static void main(String[] args) {
int localInnerInt=0;
//局部内部类,与局部变量localInnerInt地位相同
final class FinalLocalInner ...
Java父类子类 类加载顺序
- 博客分类:
- Java基础
首先看代码,猜猜结果
public class Base
{
private String baseName = "base";
public Base()
{
callName();
}
public void callName()
{
System. out. println(baseName);
}
static class Sub extends Base
{
private String baseName ...
CopyOnWriteArrayList
原理:当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器
特点:读写分离。读的时候不需要加锁,写的时候需要加锁。适用于读多写少的场景
不足:内存占用过大(写操作时将对对象进行复制);只能保证数据最终一致性,而非实时一致性
参考:http://www.cnblogs.com/dolphin0520/p/3938914.html
ReadWriteLock
特点:对读写状态进行互斥区分,有互斥时才加锁。写与写之间互斥,读与写之 ...
null对象调用static方法
- 博客分类:
- Java基础
先给代码,猜猜结果
public class TestClass {
private static void staticMethod(){
System.out.println("static");
}
void normalMethod(){
System.out.println("normal");
}
public static void main(String[] args) {
TestClass testClass=((TestClass)null);
testClass.staticMetho ...
Java基础知识杂锦(二)
- 博客分类:
- Java基础
1.Socket:
服务端通过new ServerSocket()创建ServerSocekt对象,当客户端连接时才创建Socket对象。
Socket s=new ServerSocetk().accept();
2.volatile
volatile禁止指令重排序,限定变量只能从内在中读取。
但其不能保证原子性,不能保证线程安全。
3.AWT&Swing
AWT 是基于本地方法,其运行速度比较快;
Swing基于AWT的Java程序,其运行速度比较慢。
4.HashMap
hashTable中使用synchronized关键字来实现安全机制;
concurrentHashMap ...
Java基础知识杂锦(一)
- 博客分类:
- Java基础
1.JVM 方法区和堆 都是线程共享的
2.Propagation-Required 支持事务,没有就新建 (最常见的选择)
3.CGI不可移植,为某一特定平台编写的CGI应用只能运行在这一环境中
4.doGet/doPost是在javax.servlet.http.HttpServlet中实现的
5.创建Servlet实例由Servlet容器完成,创建实例在init()方法之前
6.Servlet在多线程下不是线程安全的
7.Struts1 单例 Struts2 非单例
8.JSP 静态include不允许变量同名
9.JVM
-Xmx 最大堆大小(max)
-Xms 初始 ...
Eclipse突然无法编辑解决办法
- 博客分类:
- Java工具
Eclipse工作区突然无法编辑代码,触发原因未知
按 Ctrl+Alt+S 即可恢复正常,原因未知...
查询Eclipse各快捷键的说明(Window->Preferences->General->Keys)
找到了 Ctrl+Alt+S 组合的说明:
Command:Stop
Binding:Ctrl+Alt+S
When:In Server View
Category:Server
大意是,该快捷键的命令是停止的意思,至于为何工作器突然无法编辑代码,还是不太确定,有哪位大大知道的话敬请指教
先记下来,以后再碰到类似情况就不方了
斐波那契数列
1 1 2 3 5 8 13 21...
即每一项都是前两项之和的数列
经典解法是使用递归
不过递归的效率太低,推荐如下代码,只需2个变量存值,效率高
int fibonacci(int n){
int a=1,b=1;
for(int i=2;i<n;i++){
//交换a和b,更新a的值
a=a^b;
b=a^b;
a=a^b;
//更新b的值
b=a+b;
}
return b;
}
(假设n>0,故没有对n<=0的情况做处理)
Java中wait()及notify()小记
- 博客分类:
- Java基础
有代码如下,猜猜输出结果:
public class WaitAndNotify {
void method1(Object lock) throws Exception{
synchronized (lock) {
lock.wait();
System.out.println("m1");
}
}
void method2(Object lock) throws Exception{
synchronized (lock) {
lock.notify();
Thread.sleep(2000);
...
利用JDK自带工具解析WDSL
- 博客分类:
- Java工具
近日因工作需求,需要调用远程服务器的接口
因以前未深入接触WS,SOAP
所以一开始采用引入AXIS包,从头开始JAVA编码的方式来实行
代码形如:
Service service=new Service();
Call call=(Call)service.createCall();
一碰到复杂的接口,就OMG了。
后查阅多方文档,发现JDK自带WSIMPORT工具可以解析WSDL为JAVA代码(神器 )
WINDOWS环境下,直接CMD,然后 WSIMPORT -S JAVA代码存放目录 WSDL地址
(WSIMPORT各参数具体意义可直接百度或GOOGLE,网上讲的 ...
Java解析.properties注意事项
- 博客分类:
- Java工具
项目中有功能需要读取.properties配置文件中的信息
.properties中有一属性形如下:
prop=abc\abc
重点就是上面的反斜杠“\”了
我用的java.net.URLEncoder来encode字符串
结果encode之后变成了 abcabc
反斜杠被忽略掉了...
联想到JAVA里面反斜杠是特殊字符,需要转义
遂将上面的属性改为
pro=abc\\abc
再次encode,得到结果 abc%5Cabc
encode成功
TIPS:
要养成良好的编码习惯,一个空格,一个标点都不能轻视