众所周知 如果一个对象需要进行网络传输,那么该对象就需要实现Serializable接口,为了防止反序列失败,该对象需提供一个默认的serialVersionUID(该值在反序列化的时候会进行校验校验失败并抛出InvalidClassException异常). 提出疑问 现在需要将一个对象返回给前端,那么该对象是否需要实现 Serializable接口,并提供一个默认的serialVersionUID?如果不实现会有什么影响? 探索 我们现在想一个问题,现在一般前后端进行数据交互一般都是json…
为什么很多类甚者底层源码要implements Serializable ? 在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的javabean一般也要实现Serializable,不明白为什么?做个小总结如下: public class Throwable implements Serializable { /** use serialVersionUID from JDK 1.0.2 for interoperability…
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务必一致 建议4: 避免带有变长参数的方法重载 建议5: 别让null值和空值威胁到变长方法 建议6:覆写变长方法也循规蹈矩 建议7:警惕自增的陷阱 建议8:不要让旧语法困扰你 建议9:少用静态导入 建议10:不要在本类中覆盖静态导入的变量和方法 建议11:养成良好习惯,显示声明UID 建议12:避免…
阅读目录 建议1:不要在常量和变量中出现易混淆的字母 建议2:莫让常量蜕变成变量 建议3:三元操作符的类型务必一致 建议4:避免带有变长参数的方法重载 建议5:别让null值和空值威胁到变长方法 建议1:不要在常量和变量中出现易混淆的字母 包名全小写,类名首字母全大写,常量全部大写并用下划线分隔,变量采用驼峰命名法(Camel Case)命名等,这些都是最基本的Java编码规范,是每个javaer都应熟知的规则,但是在变量的声明中要注意不要引入容易混淆的字母.尝试阅读如下代码,思考打印结果的i是…
产生文件 File file = new File("abc.txt"); if(!file.exists()){ System.out.println(file.exists()); file.createNewFile(); } System.out.println(file.getAbsolutePath()); 关于临时文件 1).放在指定目录,此时已项目为默认目录 File file = File.createTempFile("defaultTmp",&…
在进入今天的主题之前,我们先理解一下什么是泛型: 泛型是java中一种类型,泛型是被参数化的类型. 类型-->class 参数化-->class类型可以是任意参数 泛型存在的意义:泛型可以在编译的时候,告诉class传递的参数是什么类型,如果类型发送错误,在编译的时候,就会报错. 泛型所表现的形式: 1.java的list,set等集合所表现的. //这里面的E表示的就是泛型, List<E> list = new ArrayList<E>(); //下面传入泛型的具体…
hibernate 一. hibernate介绍 hibernate事实上就是ormapping框架,此框架的作用就是简单话数据库的操作. hibernate就是将用户提交的代码.參照持久化类配置文件,转换成sql语句. 1. JDBC的优/缺点: 1. 缺点: 1. 查询代码特别繁琐. 2. 反复性代码多.频繁的try,catch. 3. 没有对数据的缓存(就是将先将数据放入内存中,当dao层再向数据库要数据时.直接到内存中去取.速度会快非常多,也避免了频繁的和数据库交互). 4. 对sql代…
有很多应用场景,用到了接口动态实现,下面举几个典型的应用: 1.mybatis / jpa 等orm框架,可以在接口上加注解进行开发,不需要编写实现类,运行时动态产生实现. 2.dubbo等分布式服务框架,消费者只需要引入接口就可以调用远程的实现,分析源代码,其实在消费端产生了接口的代理实现,再由代理调用远程接口. 3.spring aop 这是最典型的动态代理了. 创建接口的动态实现,有二种最常用的方式:JDK动态代理和CGLIB动态代理. 代理模式是一种常用的设计模式,其目的就是为其他对象提…
最详细搭建SSH框架环境 本博文主要是讲解如何搭建一个比较规范的SSH开发环境,以及对它测试[在前面的搭建中,只是整合了SSH框架,能够使用SSH实现功能],而这次是相对规范的. 导入开发包 在Struts配置文件中添加常量 <!-- 禁用动态方法访问 --> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <!-- 配置成开发模式 --&g…
JavaWeb学习笔记--监听器详解 知识概要: 1.监听器下例子举例 2.Servlet规范中的监听器 3. 4. 1. 监听器下例子举例说明: /* Frame:事件源.发生事件的对象 WindowListener:监听器.(对应着事件源的某些内容) WindowEvent:事件对象.封装事件源 */ public class FrameDemo { public static void main(String[] args) { Frame f = new Frame("我的小窗"…
前言 本文中提到的解决方案,源码地址在:perfect-ssm,希望可以帮你解决问题. 问题描述 在Spring与Redis整合过程中,出现了如下报错: org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedExcept…
内存计算平台spark在今年6月份的时候正式发布了spark2.0,相比上一版本的spark1.6版本,在内存优化,数据组织,流计算等方面都做出了较大的改变,同时更加注重基于DataFrame数据组织的MLlib,更加注重机器学习整个过程的管道化. 当然,作为使用者,特别是需要运用到线上的系统,大部分厂家还是会继续选择已经稳定的spark1.6版本,并且在spark2.0逐渐成熟之后才会开始考虑系统组件的升级.作为开发者,还是有必要先行一步,去了解spark2.0的一些特性和使用,及思考/借鉴一…
Servlet 标签 : Java与Web Listener-监听器 Listener为在Java Web中进行事件驱动编程提供了一整套事件类和监听器接口.Listener监听的事件源分为ServletContext/HttpSession/ServletRequest三个级别: ServletContext级别 Listener 场景 ServletContextListener 响应ServletContext生命周期事件(创建/销毁),在ServletContext创建/销毁时分别调用其相…
获取项目的根路径:this.getservletcontext().getRealPath() 下载:不正规做法:test/html!!!! 正规做法:1,在响应头设置:res.addHeader("Context-disposition",attachment;filename=xxx.jpg"); 上传:request.getImageStream():web.xml中设置<enctype>multipart/form-dota</> 浏览器状态的…
一 Java Web开发模式的变迁 1 最初的Java web服务器端编程技术是Servlet,利用Servlet就可以开发出一个Web应用程序. 2 为了解决Servlet缺陷,SUN推出了JSP技术.但是开发人员又走向了另一个极端就是完全放弃了Servlet. 在JSP页面混合使用HTML标记和java代码编写的脚本元素标记来开发Web程序.采用这种方法虽然可以编写JSP页面变得简单,直观,然而,他只适合于业务流程简单,系统规模较小的应用系统. 如果系统较大的话,就会出现两个严重的缺点: 1…
什么是spring-data-redis spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,使用java操作redis最常用的是使用jedis,但并不是只有jedis可以使用,像jdbc-redis,jredis也都属于redis的java客户端,他们之间是无法兼容的,如果你在一个项目中使用了jedis,然后后来决定弃用掉改用jdbc-redis就比较麻烦了,spring-data-redis提供了redis的java客…
答辩每个人的总分为1.5分.每个人主要问3个问题. 开发流程===>系统架构====>项目模块+功能===>项目得失重定向与转发:?九个隐式对象?get与post的区辨:?jsp有静态包含,动态包含,两者的区辨:?什么是MVC:?web系统架构:? java web项目答辩总结试题 注释:用楷体写的就是用自己组织的话来回答老师的问题. 1 http协议全名和特点 (答辩老师:你对HTTP的是怎么理解的: 答辩同学:首先HTTP是一种超文本传输协议,也是一种无状态的协议. 浏览器通过HTT…
0.前言 本文主要对几种常见Java序列化方式进行实现.包括Java原生以流的方法进行的序列化.Json序列化.FastJson序列化.Protobuff序列化. 1.Java原生序列化 Java原生序列化方法即通过Java原生流(InputStream和OutputStream之间的转化)的方式进行转化.需要注意的是JavaBean实体类必须实现Serializable接口,否则无法序列化.Java原生序列化代码示例如下所示: package serialize; import java.io…
Web开发模式的变迁 了解了Servlet和JSP,知道利用Servlet就可以开发一个Web应用程序,但是Servlet的缺陷使Web应用程序开发变得非常繁琐且不利于分工协作.使用JSP(表达式.声明.scriplet)来开发Web应用程序 Java Web开发变得轻松,但是这样使得页面严重缺乏可读性,并且没有将页面表现和业务逻辑实现分开,维护难度增加. 在JSP中使用JavaBean JavaBean本质上就是一个普通的Java类,不过这个类需要遵循一定的编码规范 .标准的JavaBean组…
1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满屏的,但也可以是一个小的位于其它Activity之上的浮动窗口.一个Android工程至少有一个Activity,Activity上面可布有多个view实例,如文本框.进度条.复选框.按钮等等.多个Activity之间通过Intent来实现跳转. [1]新建一个activity (1)要继承(ext…
servlet:void init(ServletConfig cfg):// 读取servlet的配置参数void service(ServletRequest request, ServletResponse response);// 服务方法,用户每次访问都会被执行void destroy();// 销毁方法filter:void init(FilterConfig cfg);// 读取filter的配置参数void doFilter(ServletRequest request, Ser…
Netty是基于JDK NIO的网络框架 简化了NIO编程, 不用程序自己维护selector, 将网络通信和数据处理的部分做了分离 多用于做底层的数据通信, 心跳检测(keepalived) 1. 数据通信 1.1 Hello World public class Server { public static void main(String[] args) throws Exception { // 1 创建线两个事件循环组 // 一个是用于处理服务器端接收客户端连接的 // 一个是进行网络…
http://blog.csdn.net/ducklikejava/article/details/51559244 Android Studio中写的一个AIDL的小DEMO. 步骤很繁琐,本来不准备写的.但是写一下是为了记录,这一下午终于跑通了这玩意. 首先,你要有3个 Module,至少两个,但是最好是3个  一个是你的AIDL文件与它的Service所在的Module 一个是你的客户端Module,也就是你真正调用AIDL的Module 最后一个是你的AIDL需要使用的Parcelabl…
Netty是基于JDK NIO的网络框架 简化了NIO编程, 不用程序自己维护selector, 将网络通信和数据处理的部分做了分离 多用于做底层的数据通信, 心跳检测(keepalived) 1. 数据通信 1.1 Hello World public class Server { public static void main(String[] args) throws Exception { // 1 创建线两个事件循环组 // 一个是用于处理服务器端接收客户端连接的 // 一个是进行网络…
一.BeanUtils 概述     BeanUtils 是阿帕奇提供的一套专门用于将一些数据封装到java对象中的工具类;          名词:javaBean:特定格式的java类称为javaBean;          要求:         1:javaBean这个类要实现Serializable接口;(在实际开发中,通常省略了)         2:javaBean必须有public权限的空参数的构造方法;         3:javaBean必须有属性对应的getXxx与sett…
0.前言 本文主要对几种常见Java序列化方式进行实现.包括Java原生以流的方法进行的序列化.Json序列化.FastJson序列化.Protobuff序列化. 1.Java原生序列化 Java原生序列化方法即通过Java原生流(InputStream和OutputStream之间的转化)的方式进行转化.需要注意的是JavaBean实体类必须实现Serializable接口,否则无法序列化.Java原生序列化代码示例如下所示: package serialize; import java.io…
0.前言 本文主要对几种常见Java序列化方式进行实现.包括Java原生以流的方法进行的序列化.Json序列化.FastJson序列化.Protobuff序列化. 1.Java原生序列化 Java原生序列化方法即通过Java原生流(InputStream和OutputStream之间的转化)的方式进行转化.需要注意的是JavaBean实体类必须实现Serializable接口,否则无法序列化.Java原生序列化代码示例如下所示: package serialize; import java.io…
Java监听器listener的介绍 listener 能做什么 当web中某些动作发生之后,服务器就调用listener中对应的方法. 内部机制 接口回调 Web监听器 步骤 创建需要的监听器类,实现接口 注册|配置(有些不需要注册)监听器. servlet4.0可以用反射实现@WebListener() servlet2.5是需要在web.xml中配置 <listener> <listener-class>com.itheima.listener.MyRequestListen…
request常用方法 //常用方法 //得到的是:协议+服务器地址+端口号+工程名称+资源地址+参数 String url = request.getRequestURL(); //得到的是:工程名称+资源地址 String uri = request.getRequestURI(); //得到的是:工程名称 String contextpath = request.getContextPath(); //得到的是:服务器的IP地址 String encoding = request.getC…
Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了.这一点甚至在跨网络的环境下也是如此,这就意味着序列化机制能自动补偿操作系统方面的差异.也就是说,你可以在Windows机器上创键一个对象,序列化之后,再通过网络传到Unix机器上,然后在那里进行重建.你不用担心在不同的平台上数据是怎样表示的,byte顺序怎样,或者别的什么细节. 对象序列化本身就非常有趣,因…