关于Java序列化的10个面试问题

大多数商业项目使用数据库或内存映射文件或只是普通文件,来满足持久性要求,只有很少的项目依赖于Java中的序列化过程。无论如何,这篇文章不是Java序列化教程或如何序列化在Java的对象,但有关序列化机制和序列化API的面试问题,这是值得去任何Java面试前先看看以免让一些未知的内容惊到自己。对于那些不熟悉Java序列化的人,Java序列化是用来通过将对象的状态存储到带有.ser扩展名的文件来序列化Java中的对象的过程,并且可以通过这个文件恢复重建Java对象状态,这个逆过程称为deserialization。序列化是把对象改成可以存到磁盘或通过网络发送到其他运行中的Java虚拟机的二进制格式的过程,并可以通过反序列化恢复对象状态.Java序列化API给开发人员提供了一个标准机制,通过java.io.Serializable和java.io.Externalizable接口,ObjectInputStream及ObjectOutputStream处理对象序列化.Java程序员可自由选择基于类结构的标准序列化或是他们自定义的二进制格式,通常认为后者才是最佳实践,因为序列化的二进制文件格式...

10 个最难回答的 Java 问题

一个棘手的Java问题,如果Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手的Java核心方面的面试问题。为什么wait,notify和notifyAll是在Object类中定义的而不是在Thread类中定义这是有名的Java面试问题,招2~4年经验的到高级Java开发人员面试都可能碰到。这个问题的好在它能反映了面试者对等待通知机制的了解,以及他对此主题的理解是否明确。就像为什么Java中不支持多继承或者为什么String在Java中是final的问题一样,这个问题也可能有多个答案。为什么在Object类中定义wait和notify方法,每个人都能说出一些理由。从我的面试经验来看,wait和nofity仍然是大多数Java程序员最困惑的,特别是2到3年的开发人员,如果他们要求使用wait和notify,他们会很困惑。因此,如果你去参加Java面试,请确保对wait和notify机制有充分的了解,并且可以轻松地使用wait来编写代码,并通过生产者-消费者问题或实现阻塞队列等了解通知的机制。为什么等待和通知需要从同步块或方法中调用,以及J...
开发笔记 开发笔记·2020-03-18

java实现全局键盘监听

Java本身是无法对桌面进行全局键盘监听的,无法设置全局快捷键,当焦点从java程序面板失去时,自带的监听器就无法监听了,但是比如一些用java写的截图程序是需要全局快捷键操作的,这里可以使用第三方包JIntellitype来实现全局快捷键注册。本质上还是调用了dll动态链接库,网上下载jintellitype-1.3.9.jar,JIntellitype.dll,JIntellitype64.dll三个文件,或者文末github自行下载。接下来演示下如何使用此jar,首先使用eclipse创建一个java项目,目录结构如下创建一个包名com.melloware.jintellitype,存放两个dll文件,jar包会自行到这里加载dll,创建一个demo类主要使用方法只有三步:一,注册快捷键//第一步:注册热键,热键标识,组合键(shift),主要热键DJIntellitype.getInstance().registerHotKey(GLOBAL_HOT_KEY_1,0,(int)'D');JIntellitype.getInstance().registerHotKey(GLOB...

微信公众平台服务器配置接入JAVA实现

当点击提交的时候,微信服务器会向你填写的url地址发送一个GET请求,请求会携带下面的参数其中的signature是微信服务器根据timestamp、nonce、echostr和你上面填写的token生成的,算法是SHA-1。这样的话,你自己的服务器接到这几个参数,用timestamp、nonce、echostr和你服务器上定义的token变量生成签名,因为timestamp、nonce、echostr这三个参数都是微信服务器发给你的,你和微信生成的签名唯一的变量就是token,只要你服务器的token和微信公众号配置的token相等,那生成的签名肯定也是相等的。验证相等就将微信服务器请示过来的echostr返回给微信服务器,这样微信就知道,这台服务器是你的了。上面提交的动作就算验证完了,页面会显示提交成功。1.写一个servlet接收微信确认请求 packagecom.lee.weixin;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet...

Java中Math.pow()的用法

1.问题描述  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。publicclassMain{staticinta,b,c;publicstaticvoidfunction(){for(inti=100;i<1000;i++){a=i/100;b=i%10;c=(i/10)%10;if(Math.pow(a,3)+(Math.pow(b,3))+(Math.pow(c,3))==(i)){System.out.println(i);}/*if(a*a*a+b*b*b+c*c*c==i){//System.out.println(abc);System.out.println(i);*/}}publicstaticvoidmain(String[]args){function();}}(1)直接使用Math.pow(a,3)即可,即等于求a的3次方。Math方法直接是在Java.lang包下的。...
开发笔记 开发笔记·2020-02-28

java请求超时处理

packagecom.it;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.HttpURLConnection;importjava.net.URL;publicclassHttpConnProcessThreadimplementsRunnable{publicbooleanisStop=false;publicbooleanreadOK=false;privatestaticHttpURLConnectionreqConnection=null;publicThreadreadingThread;privateintreadLen;privateStringmsg=null;privateStringreqMethod;privatebyte[]data;/***ReadThreadconstructorcomment.*/publicHttpConnProcessThre...
开发笔记 开发笔记·2020-02-26
首页上一页...566567568569570下一页尾页