![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 55
MrStevens
这个作者很懒,什么都没留下…
展开
-
表单的重复提交
表单的重复提交 同一个表单中的内容多次提交到服务器中。 第一种情况: 提交完表单以后,不做其他操作,直接刷新页面,表单会提交多次。 这种情况产生的根本原因是,Servlet处理完请求以后,直接转发到目标页面。 这样整一个业务,只发送了一次请求,那么当你在浏览器中点击刷新按钮或者狂按f5会一直都会刷新之前的请求 解决方案: 使用重定向跳转到目标页面 第二种情况: 在提交表单时,如果网原创 2017-08-15 20:23:31 · 1010 阅读 · 0 评论 -
解决IDEA编译项目报错 “xxx包不存在“
解决IDEA编译项目报错 “xxx包不存在“转载 2022-06-06 16:04:46 · 759 阅读 · 0 评论 -
JVM中的直接引用和符号引用
在JVM中,类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。而解析阶段即是虚拟机将常量池内的符号引用替换为直接引用的过程。 1.符号引用(Symbolic References):符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够无歧义的定位到目标即可。例如,在Class文件中它以CONSTAN原创 2017-09-10 20:02:19 · 397 阅读 · 0 评论 -
java hash hashMap详解
Hash 一般也可叫做散列,你可以把 Hash 简单的理解为将一个对象通过 hashCode() 方法映射为一个 int 类型的值,其中 hashCode() 是定义在 Object 中的,而 java 中所有的类都继承自 Object。 所以所有的类都有默认的 hashCode() 方法,你可以根据自己的需要去进行重写。以你说的 HashMap 为例:HashMap 在 JDK 默认的实现是 数原创 2017-09-09 19:47:29 · 285 阅读 · 0 评论 -
java局部变量、类变量、实例变量有什么区别
1、在Java中,变量大体分为以下4类:类变量、常量、实例变量、局部变量public class Test { public static int classVar;// 类变量,即静态变量,关键词static public static final int constant = 10;// 常量,关键词static,final,是一种特殊的类变量,一定要在声明时赋值原创 2017-09-09 18:38:32 · 464 阅读 · 0 评论 -
Java中,&&与&,||与|的区别
在java的逻辑运算符中,有这么四类:&&(短路与),&,|,||(短路或)。&&和&都是表示与,区别是&&只要第一个条件不满足,后面条件就不再判断。而&要对所有的条件都进行判断。 看下面的程序:public static void main(String[] args) { // TODO Auto-generated method stub if((23原创 2017-09-09 17:13:12 · 320 阅读 · 0 评论 -
Java之Math类使用小结
Java的Math类封装了很多与数学有关的属性和方法,大致如下:public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Math.E);//比任何其他值都更接近 e(即自然对数的原创 2017-09-09 15:38:25 · 486 阅读 · 0 评论 -
Java迭代器
迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部. 1.Iterator Java提供一个专门的迭代器<>Iterator,我们可以对某个序列实现该interface,来提供标准的Java迭代器。Iterator接口实现后的功能是“使用”一个迭代器.原创 2017-09-07 23:35:40 · 185 阅读 · 0 评论 -
ArrayList和LinkedList的区别
转自:http://www.cnblogs.com/sierrajuan/p/3639353.html ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了转载 2017-09-05 10:41:49 · 152 阅读 · 0 评论 -
应用服务器的调优
转自:http://blog.sina.com.cn/s/blog_67219a720101bh49.html 留以后学习使用。 应用服务器通俗点就是后台程序 ,但是也不只是后台程序,也可能是其他的程序,在这里我主要讲后台程序的调优。也是建立在weblogic和oracle数据库之上的, 如果不会weblogic,请大家去网上看看,我个人认为weblogic简直是神器。1 jvm调优任何java转载 2017-09-07 20:15:53 · 282 阅读 · 0 评论 -
java基本调优
一、基本代码的调优。老生常谈,没什么可说的,减少没必要的的代码,注重注释,命名规范等。二、减小没有必要的操作 对像的创建是一个很消耗内存的,所以我们应该尽量减少对象的创建,在需要的时候才创建,做到一次初始化到处使用的原则,在用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式【如果不了解的可以看看java的设计模式,貌似有26种】,将减少类的创建,每次都是通过clone(原创 2017-09-07 18:59:32 · 211 阅读 · 0 评论 -
Java Web项目开发流程
1.Web项目开发流程图解 2.Web项目开发的细节(转载)任何一个项目或者系统开发之前都需要定制一个开发约定和规则,这样有利于项目的整体风格统一、代码维护和扩展。由于Web项目开发的分散性、独立性、整合的交互性等,所以定制一套完整的约定和规则显得尤为重要。本文档将定制一系列约定和规则,他们分别包括组件团队、文件夹命名规则、文件名命名规则、程序代码编程风格、数据库设计约定。这些规则和约定需要与转载 2017-09-07 16:49:01 · 2415 阅读 · 0 评论 -
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到SpringMybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理. 例如<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <prope转载 2017-09-07 15:47:11 · 501 阅读 · 0 评论 -
Mybatis框架学习—查询缓存与spring的整合开发
1 项目整体目录2 查询缓存2.1 缓存的意义将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。 2.1mybatis持久层缓存mybatis提供一级缓存和二级缓存mybatis一级缓存是一个SqlSession级别,sqlsession只能访问自己的一级缓存的数据,二级缓存是跨sqlS转载 2017-09-07 15:41:45 · 328 阅读 · 0 评论 -
spring持久类po或者javabean为什么常常实现序列化?
无论用hibernate或者mybatis结合spring做开发还是其他,系统里持久类往往要实现序列化, implements Serializable。我还是比较好奇,为什么要这样做呢?一直只知道个大概,学习hibernate和mybatis时,一些书中有几个字的介绍,有的书中举得例子或者和spring整合时举得例子也没实现序列化,有时可能在你项目上,如果不是实现serializable接口,可能转载 2017-09-07 14:39:24 · 264 阅读 · 0 评论 -
Java String 声明、引用、内存分配深度剖析
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再原创 2017-09-09 23:55:53 · 363 阅读 · 0 评论 -
递归引发的jvm栈溢出的理解--堆和栈的概念整理
最近一段时间,在登月项目中接触到一个涉及数据对比的工具,需要对hdfs(Hadoop分布式文件系统)上的一些原始数据进行按行解析,并重新保存成可被hive(基于Hadoop的一个数据仓库工具)识别的数据文件。作为一个复杂度不高的应用MR并行计算框架的工具,设计制作过程还是很顺利的,两三天的功夫编码完成,自测也通过了,然而上线使用后,却发生了一个意想不到的bug。 1、程序说明: 事 情是这样的,转载 2017-09-10 18:43:59 · 1252 阅读 · 0 评论 -
理解 Thread.Sleep 函数
我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒? 某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既转载 2017-11-22 15:58:01 · 199 阅读 · 0 评论 -
Java时间日期格式转换
Java时间日期格式转换突然忘记了时间格式怎么转换,特此做个记录Java时间格式转换大全import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */ public stati转载 2017-11-22 09:34:46 · 1848 阅读 · 0 评论 -
java 多线程 避免死锁 哲学家就餐问题
源代码如下:public class Concurrence implements Runnable{ private chick pre; private chick last; private int index; public Concurrence(chick pre, chick last, int index) { this.pre = pr原创 2017-11-30 09:30:13 · 556 阅读 · 0 评论 -
java模拟两个线程锁死
class A{ public synchronized void foo(B b) { String name = Thread.currentThread().getName(); System.out.println(name + "entered A.foo()"); try { Thread.sleep(100原创 2017-11-29 10:08:30 · 347 阅读 · 0 评论 -
多线程生产者与消费者简单模拟
生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键原创 2017-11-29 09:57:48 · 412 阅读 · 0 评论 -
一道经典的Java多线程编程题
问题描述 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75. 程序的输出结果应该为:线程1: 1 线程1: 2 线程1: 3 线程1: 4 线程1: 5线程2: 6 线程2: 7 线程2: 8 线程2: 9原创 2017-11-28 15:10:54 · 5688 阅读 · 5 评论 -
Java常量池详解之Integer缓存
一个Java question,求输出结果public class IntegerTest { public static void main(String[] args) { objPoolTest(); } public static void objPoolTest() { Integer i1 = 40; Integer原创 2017-09-11 08:30:07 · 505 阅读 · 0 评论 -
Java虚拟机运行时数据区域
Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,及创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁。Java虚拟机所管理的内存包括以下几个运行时数据区域,如图(图片引自网络): 1.1 程序计数器(Program Counter Register)程序计数器是一块较小的内存空间,它原创 2017-09-10 17:32:25 · 186 阅读 · 0 评论 -
深入理解Java虚拟机到底是什么
转自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解转载 2017-09-10 21:44:30 · 323 阅读 · 0 评论 -
java中移位运算符<< >>
转自:http://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html java中有三种移位运算符<< : 左移运算符,num << 1,是在转换成二进制运算中向左位移,相当于num乘以2>> : 右移运算符,num >> 1,是在转换成二进制运算中向右位移,相当于num除以2>>> :转载 2017-09-01 15:29:34 · 224 阅读 · 0 评论 -
细说虚拟机栈
引文对JVM不了解的请先访问文章《Java虚拟机运行时数据区》,相信会让你大致了解各个内存区域的对应功能。接着,我们开始细说虚拟机栈 前文中说到:“虚拟机栈是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法就会为每个方法生成一个栈帧(Stack Frame),用来存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方原创 2017-09-10 20:09:34 · 247 阅读 · 0 评论 -
JAVA深复制(深克隆)与浅复制(浅克隆)
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对转载 2017-09-15 11:18:39 · 749 阅读 · 0 评论 -
spring中context:property-placeholder/元素
.有些参数在某些阶段中是常量 比如 :a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等 b、分布式应用中client端访问server端所用的server地址,port,service等 c、配置文件的位置 2.而这些参数在不同阶段之间又往往需要改变转载 2017-09-05 18:18:27 · 322 阅读 · 0 评论 -
SpringMVC处理POST请求乱码问题
在springmvc.xml中添加以下过滤器:<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-para原创 2017-08-23 20:19:40 · 743 阅读 · 0 评论 -
EL表达式
1.EL表达式 [1] 简介 JSP表达式 <%= %> 用于向页面中输出一个对象。 到JSP2.0时,在我们的页面中不允许出现 JSP表达式和 脚本片段。 使用EL表达式来代替JSP表达式 ,使用JSTL标签来代替JSP脚本片段。 > EL表达式用来向页面输出内容 getAttribute();//四个域对象都可以使用//作用不是接收请求参数,在使用getA原创 2017-08-13 18:52:13 · 183 阅读 · 0 评论 -
jsp入门
1.JSP [1] 简介 HTML - HTML擅长显示一个静态的网页,但是不能调用Java程序。 Servlet - Servlet擅长调用Java程序和后台进行交互,但是它不擅长显示一个完整的HTML页面。 我们希望创建一个新的技术 HTML + Servlet 强强联合 JSP全称Java Server原创 2017-08-13 18:50:13 · 143 阅读 · 0 评论 -
java JDBC连接过程与简单数据库操作
1.JDBC 1)JDBC简介 - JDBC就是Java中连接数据库方式 - 我们可以通过JDBC来执行SQL语句。2)获取数据库连接 - java.sql.Connection 数据库连接 - 我们队数据库的一切操作都是从获取Connection开始 - 获取数据库连接的四个参数: 1.数据库的地址 url原创 2017-08-13 18:48:18 · 240 阅读 · 0 评论 -
servlet详解
Servlet简介 Servlet是服务器端的重要组件,直译为服务端的小程序,它属于动态资源,用来处理请求,服务器接收到请求后会调用Servlet来处理请求。 Servlet的主要作用 接收请求 处理请求 完成响应 例如: 当我们要完成一个登录功能时,用户会将输入的用户名和密码以POST请求的形式发送到服务器,但是服务器本身并不具有能力来读取用户发送的用户名和密码,也就不可能对用户名和原创 2017-08-13 17:50:34 · 207 阅读 · 0 评论 -
路径问题
这里讲的是javaWeb项目开发路径原创 2017-08-13 18:40:23 · 245 阅读 · 0 评论 -
转发与重定向详解
转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。 1、转发: 当浏览器向服务器发送请求的时候,服务器自己不处理,而是调用其它的web资源进行处理! 有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的原创 2017-08-13 18:36:51 · 818 阅读 · 0 评论 -
请求报文、相应报文
HTTP: 通信双方如果想要通信就必须遵循一定的规则,我们把这个规则称之为HTTP协议!报文: HTTP协议通信的内容我们称之为:报文 报文格式: 报文首部 空行 报文主体请求报文: 请求首部:请求首行和请求头部 空行 请求主体 响应报文: 响应首部 空行 响应主体报文分类: 请求报原创 2017-08-13 18:13:58 · 324 阅读 · 0 评论 -
servlet进阶
问题1:Servlet的构造器调用了几次? 这个问题实际上很容易测试,只需要在Servlet的中写一个无参构造器,在方法中写一个打印语句,然后向该Servlet发送请求,会发现打印语句仅仅输出了一次,由此证明构造器只调用了一次。上边我们也说过,Servlet是单实例的,而调用构造器就是用来创建实例的。所以构造器只会被调用一次。 问题2:Servlet是线程安全的吗? 由于Servlet是单实例原创 2017-08-13 17:59:17 · 243 阅读 · 0 评论 -
servlet编码问题
1. 为什么要使用编码 因为我们之前写的是纯Java语音,java中他默认的全都是utf-8,这当然不会出错。但是现在呢,javaee涉及到了3部分东西:java、浏览器、tomcat。而除了java外他们默认的都是iso885i9-1,假定我们不用中文,那当然没问题,就用他默认的就行。现在我们就是要改变他设置的编码格式,让他能够显示中文,而且不乱码,重点是这个。怎么防止乱码呢,只要抓住一点:用什原创 2017-08-13 18:07:53 · 922 阅读 · 0 评论