![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javaweb学习笔记
文章平均质量分 83
SerenoShen
不断提升自己!加油!加油!!
展开
-
javaweb深入学习001--Web请求过程
Web请求过程原创 2014-09-29 17:13:00 · 2349 阅读 · 0 评论 -
MyBatis--SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession作用域和生命周期
Scope and LifecycleIt’s very important to understand the various scopes and lifecycles classes we’ve discussed so far. Using them incorrectly can cause severe concurrency problems.NOTE Object lifecycle翻译 2015-11-24 13:19:58 · 3902 阅读 · 0 评论 -
ThreadLocal类详解与源码分析
概述我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。 我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。 虽然模板类通过资源池获取数据连接或会话,但资源池本身解决的是数据连接或会原创 2015-11-26 19:48:54 · 4688 阅读 · 4 评论 -
CentOS-7 安装 Tomcat8.X
安装说明安装环境:CentOS7 安装方式:源码安装 软件:apache-tomcat-8.0.30.tar.gz 下载地址:http://tomcat.apache.org/download-80.cgi安装前提系统必须已经安装配置了JDK6+。(并且配置好环境变量)安装tomcat将apache-tomcat-8.0.30.tar.gz文件移动到/usr/local中执行以下操作:[ro原创 2015-12-28 20:07:00 · 3354 阅读 · 0 评论 -
如何学习掌握一个分布式系统-What We Talk About When We Talk About Distributed
长期以来学习掌握分布式系统的知识非常庞杂混乱,本文将分布式算法归纳为几种: 计时模型timing model 进程间通讯interprocess communication 失败模型failure model计时模型timing model计时模型分同步 异步和部分同步三种,这几种模型都有时间计时这个共同特点。同步模型是直接调用执行,组件之间同时按步骤执行,这个模型的问题是无法反映现实情况,翻译 2015-12-29 14:38:40 · 733 阅读 · 0 评论 -
Java线程堆栈信息查看
Linux 下Java程序的线程堆栈查看方法:第一步:在终端运行Java程序第二步:通过命令 pidof java 找到已经启动的java进程的ID,选择需要查看的java程序的进程ID第三步:使用命令 kill -3 打印出java程序的线程堆栈信息第四步:通常情况下运行的项目可能会比较大,那么这个时候打印的堆栈信息可能会有几千到几万行,为了方便查看,我们往往需要将输出内容进行原创 2015-12-15 09:55:58 · 14466 阅读 · 0 评论 -
epoll模型和使用详解(精髓)epoll - I/O event notification facility
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2016-01-26 14:06:28 · 9869 阅读 · 0 评论 -
Maven 标准目录结构
Maven 标准目录结构好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:src/main/javaApplication/Library sourcessrc/main/resourcesAppli转载 2016-01-28 13:56:49 · 640 阅读 · 0 评论 -
轻松使用Nginx搭建web服务器
轻松使用Nginx搭建web服务器转载 2016-03-25 23:35:42 · 2533 阅读 · 0 评论 -
Mac下配置Java环境变量
Mac下配置Java环境变量下面的操作均在终端窗口完成。通过如下命令找到JDK的安装路径/usr/libexec/java_home -v 1.8打开系统环境变量配置文件sudo vim etc/profile在文件尾部,添加java路径JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home"CLASS_原创 2017-03-17 16:59:30 · 3633 阅读 · 0 评论 -
Mysql数据库表查询中 inner join,left join,right join 详解
首先借用官方的解释下: inner join(等值连接、内连接):只返回两个表中联结字段相等的行; left join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录; right join(右联接):返回包括右表中的所有记录和左表中联结字段相等的记录。 比如我们有xs、cj两个表 |–xs表 |————— id name 1 张三 2 李原创 2017-05-25 21:31:50 · 1381 阅读 · 0 评论 -
UML中时序图/用例图/状态图/协作图间的区别
UML中时序图/用例图/状态图/协作图间的区别时序图时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件. 在 UML 中, 时序图表示为一个二维的关系图, 其中, 纵轴是时间轴, 时间延竖线向下延伸. 横轴代表在协作中各个独立的对象. 当对象存在时, 生命线用一条虚线表示, 消息用从一个对象的生命线到另一个原创 2017-07-24 09:06:43 · 11178 阅读 · 0 评论 -
Git中fetch和pull命令的区别
两者具体的区别fetch Git中的fetch命令是将远程分支的最新内容拉到了本地,但不立即将远程分支的变更合并到本地分支上。当我们执行完fetch命令后,在执行git branch命令会发现此时后本地多了一个FETCH_HEAD的分支。我们可以checkout到该分支查看远程分支的最新内容。以便于我们有机会查看远程分支都做了什么改动。 当我们检查完成后在checkout回本地分支执行merg原创 2017-08-04 19:46:00 · 3637 阅读 · 0 评论 -
Java的类路径讲解以及参数-cp的用法
ClassPathjava 是通过 java虚拟机来解释运行的, 也就是通过 java 命令。 javac 编译生成的 .class文件就是虚拟机要执行的代码,,称之为字节码(bytecode), 虚拟机通过 classloader来装载这些字节码, 也就是通常意义上的类. 这里就有一个问题, classloader 从哪里知道 java 本身的类库及用户自己的类在什么地方呢? 或者有着缺省值(当原创 2017-11-09 17:20:06 · 3101 阅读 · 0 评论 -
MyBatis--typeHandlers与Handling Enums
typeHandlersWhenever MyBatis sets a parameter on a PreparedStatement or retrieves a value from a ResultSet, a TypeHandler is used to retrieve the value in a means appropriate to the Java type. The foll转载 2015-11-24 13:36:18 · 2268 阅读 · 0 评论 -
Java应用类加载器原理与应用
Java类加载器架构在典型的Java SE应用程序中,Java SE平台中java.*包下的类都将被加载到特定的根类加载器中,并且不能被覆盖。 这时Java的一种安全机制,这种机制能够有效的阻止恶意代码的执行。例如:替换String类,或是重定义Boolean.TRUE和Boolean.FALSE。Java SE中的类加载机制在Java SE中,根类加载器的之后是扩展类加载器,它主要用于加载JRE原创 2015-11-17 18:47:48 · 1031 阅读 · 0 评论 -
session的详细解释
一、术语session session:中文经常翻译为 ‘会话’,其本来的含义是指有始有终的一系列动作/消息,比如:打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个session。在阅读技术书籍时我们可能会看到这样的话“在一个浏览器会话期间…”,这里的会话一词用的就是其本义,是指从一个浏览器窗口从打开到关闭的这一整个期间①。最混乱的是“用户(客户端)在一次会话期间”这样一句话,他可能原创 2015-10-30 13:42:16 · 14637 阅读 · 5 评论 -
Spring MVC 使用陷阱
1. 固定特殊bean的idSpring MVC上传文件时, 我们都需要配置一个MultipartResolver的实现, 常用的是Apache提供的CommonsMultipartResolver类, 配置如下:[html] view plaincopyprint? bean id="multipartResolver" cl转载 2015-05-31 20:49:47 · 600 阅读 · 0 评论 -
Spring MVC的@ResponseBody返回JSON串时Content-Type编码问题
Xml代码 需要以下两个jar包: Xml代码 default" /> default" /> default" /> default" /> Java代码 @Requ转载 2015-06-01 19:44:54 · 7576 阅读 · 0 评论 -
Spring MVC之@RequestBody, @ResponseBody 详解
引言:接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody、@ResponseBody的具体用法和使用时机;简介:@RequestBody作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后转载 2015-06-03 23:08:01 · 432 阅读 · 0 评论 -
freemarker全解教程
copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,F原创 2015-08-27 10:35:09 · 759 阅读 · 0 评论 -
jvm内存参数设置
1. Heap设定与垃圾回收Java 内存分为3个区,Young,Old和Permanent。Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。通常把前两个区域叫做堆区(Heap),Permanent区则负责保存反射对象,Class的meta信息等.堆区发生内存溢出的异常为:java.lang.OutOfMemoryError: Java heap space,转载 2015-09-07 18:09:29 · 537 阅读 · 0 评论 -
Cookie/Session机制详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cookie机制转载 2015-09-08 14:45:12 · 428 阅读 · 0 评论 -
JVM内存模型以及垃圾回收
以hotspot虚拟机为例JAVA堆的结构可以用下图来描述:内存由 Perm 和 Heap 组成. 其中 Heap = {Old + NEW = { Eden , from, to } }JVM内存模型中分两大块,一块是 NEW Generation, 另一块是Old Generation.在New Generation中,有一个叫Eden的空间,主要是用来存放新生的对原创 2015-09-07 18:12:58 · 473 阅读 · 0 评论 -
对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
对象拷贝的应用现状简介:业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的对象拷贝工具类将是很好的选择。目前流行的较为公用认可的工具类:Apache的两个版本:(反射机制)org.apache.commons.beanutils.Propert转载 2015-11-04 23:11:47 · 2116 阅读 · 0 评论 -
I/O模型:同步I/O和异步I/O,阻塞I/O和非阻塞I/O
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,在大部分的博文中(包括WIKI在内),我们很可能看见这样的回答:同步I/O等价于阻塞I/O,异步I/O等价于非阻塞I/O。产生这样的答案主要是因为环境下有着不同的知识背景,导原创 2015-10-21 16:04:55 · 2500 阅读 · 1 评论 -
JavaEE 学习整理笔记: Servlet 介绍
Servlet是一种托管于Servlet容器的Web组件,可以动态生成内容。Web客户端使用请求/响应模式与Servlet交互。 Servlet容器负责Servlet的声明周期,接受请求与发送响应,并执行这一过程中所需要的编码/解码。 响应处理的过程是由Servlet完成的,Servlet容器只是负责发送Servlet处理后的响应。 WebServlet原创 2015-11-10 11:16:12 · 751 阅读 · 0 评论 -
优秀程序员的18大法则 -- The Principles of Good Programming
经过多年的积累,我发现,下面这些基本的指导法则,可以帮助我成为一个更加高效的程序员。 程序设计法则,与设计和工程的原理密切相关。下面这些编程法则帮助我让我获益匪浅,所以我想分享给大家,希望也能帮助大家更高效,生产出的代码更容易维护,并且 bug 和缺陷更少。 DRY 原则 不要重复(Don’t repeat yourself)——程序设计中一个最根本的原则翻译 2015-10-14 08:46:33 · 525 阅读 · 0 评论 -
MyBatis3搭配MySQL数据库开发时中文乱码问题解决
MyBatis3搭配MySQL数据库开发时中文乱码问题解决在采用MyBatis+MySQL数据库进行开发是,对于中文字符的乱码问题,主要有下面两种情况: 1. * mysql数据库自身编码问题(建库时设定,因为MySQL默认的编码并不是UTF-8,即使我们在my.ini文件中配置过也没用)*。 2. 连接mysql数据库时设置的url编码设置问题。对于第一种情况,最为有效的办法是通过重新建库解原创 2015-11-13 23:29:45 · 1700 阅读 · 0 评论 -
web应用性能优化--采用gzip静态压缩+动态压缩方式压缩js、css文件
web应用性能优化–采用gzip静态压缩+动态压缩方式压缩js、css文件Web应用中通常都会有大量的javascript和css文件,如开源的javascript框架jquery、extjs-core等等,这些js框架,动辄上百K,这些框架大多数时候能提升我们的开发效率,但是使用中稍不留神很容易导致系统响应缓慢。为了提高js、css文件的下载速度,在网络传输层面提高页面的响应速度,减小文件的大小才原创 2015-11-16 15:30:49 · 10353 阅读 · 0 评论 -
Java 8 默认方法和多继承
Java 8 默认方法和多继承以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题。 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implements)多个接口,但是接口中只有抽象方法,方法体是空的,没有具体的方法实现,不会有方法冲突的问题。这些都是久远的说法了,自从今年Java 8发布后, 接口中也可以定义方法了(default method)。 之所以转载 2017-10-16 17:30:40 · 460 阅读 · 0 评论