Java
文章平均质量分 60
zhangjinpeng66
这个作者很懒,什么都没留下…
展开
-
访问github加速
https://github.com/terrymanu/miracle-framework/tree/master/miracle-framework-remote/miracle-framework-remote-netty原创 2021-11-05 12:26:06 · 553 阅读 · 0 评论 -
浅谈Catalina架构
Catalina是一个非常复杂的、设计优雅的、模块化的Servlet容器内核。基于上文中Servlet容器是如何工作的,可以将Catalina看成是有两个主要模块所组成的:连接器(connector)和容器(container)。当然两个大模块中还有更多的小组件,在之后的文章中将会详细介绍。下面将介绍连接器和容器是如何相互配合工作的。原创 2013-11-02 15:46:21 · 1227 阅读 · 0 评论 -
Servlet容器是如何工作的
servlet容器是一个复杂的系统。不过,一个servlet容器要为一个servlet的请求提供服务,基本上有三件事要做:原创 2013-11-02 15:26:17 · 1160 阅读 · 0 评论 -
Servlet线程安全问题
上文已经阐述Servlet生命周期是由Servlet容器负责。当浏览器端向服务器端发送第一次请求时,Servlet容器会根据web.xml配置文件里的参数实例化浏览器端请求所对应的类。当浏览器端再次请求该类时,Servlet一般不会再次实例化一个对象,即多个线程访问同一对象。当并发用户上升到一定值时,Servlet实例中的数据可能会变得不一致。原创 2013-08-27 21:19:36 · 1056 阅读 · 0 评论 -
简易版基于Java的Servlet容器实现
如上文简易版基于Java的Web服务器实现中该服务器可以处理静态页面,在上文基础上实现既可以处理静态页面和Servlet的简易服务器。原创 2013-11-03 15:50:06 · 2005 阅读 · 2 评论 -
Catalina中连接器的简易实现一
在前面的文章中提到,Catalina中有两个模块:连接器和容器。下面将实现一个创建更好的请求和相应对象的连接器,用来改进上文简易版基于Java的Servlet容器实现。原创 2013-11-03 17:59:37 · 943 阅读 · 0 评论 -
简易版基于Java的处理静态资源服务器实现
一个基于java的web服务器使用这两个重要的类:java.net.Socket和java.net.ServerSocket,并通过HTTP消息进行通信。在实现Web服务器之前有必要简要说明一下超文本传输协议(HTTP)。超文本传输协议(HTTP)http是一种无状态的请求和相应协议,请大家暂时记住无状态这一概念,在后续介绍session时将会向大家阐述有状态和无状态的区别。原创 2013-11-03 14:01:53 · 3565 阅读 · 1 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2013-11-17 16:06:57 · 603 阅读 · 0 评论 -
高扩展的基于NIO的服务器架构
当你考虑写一个扩展性良好的基于Java的服务器时,相信你会毫不犹豫地使用Java的NIO包。为了确保你的服务器能够健壮、稳定地运行,你可能会花大量的时间阅读博客和教程来了解线程同步的NIO selector 类和处理常见的陷阱上。本篇文章介绍了一个基本的、面向连接的基于NIO的服务器架构。在介绍之前,让我们先来看一下该它首选的线程模型和它的基本组件。线程架构模型最先想到的实现多线程服务器程翻译 2013-11-17 18:34:58 · 1648 阅读 · 0 评论 -
高扩展的基于NIO的服务器架构(二)
Reactor模式如下图所示,将不同事件的检测分离开,当一种事件发生时一个事件处理器EventHandler将通知与该事件处理相对应的专用工作线程采用这种架构,连接的通道不得不注册在一个Selector上。这样才能通过调用register方法使通道有效。...SocketChannel channel = serverChannel.accept();channel.con翻译 2013-11-17 19:59:15 · 1124 阅读 · 0 评论 -
Paxos理解之我见(二)
Paxos如何提高集群的并行计算能力。已经在Paxos理解之我见讲述了Paxos的思路。下面讲一下我对Paxos关键条件的理解和总结。Paxos集群的前提条件:一、多数派:大于集群的半数以上。二、集群中的服务器指决议编号比它之前处理的大的,大于则通过。小于反对不通过。三、提议:向集群其他服务器发送本服务器的数据变更。多数派通过后(多数派将接收的数据再通过的同时,将数据也进行了变原创 2015-07-26 18:18:38 · 622 阅读 · 0 评论 -
高并发访问时如何确保服务器端session过多而造成内存溢出致使服务器宕机的方法之一
用户登录后所在登录页面中设置一个隐藏的iframe标签。该子页面会每隔10s中向报告一次在线消息。代码如下: ……divclass="response"> iframesrc="response.html">iframe> div> …… response.html代码实现如下: DOC原创 2013-08-28 15:26:09 · 5900 阅读 · 0 评论 -
iBATIS实战—第一部分介绍
本书从对iBATIS的高级介绍开始。接下来的两章将讨论iBATIS的理念,正是这种理念的不同使得iBATIS有别于其他的持久化方案。对Java来说,有许多种可选的持久化方案,到底在何时使用哪一种方案,可能是一个非常值得探讨的问题。通过阅读本部分的内容,你应该能够明白iBATIS背后的理念和它的价值,当然你也就知道应该在何时何地使用它了。第一章iBATIS的理念iBATIS并不试图隐藏SQL转载 2013-10-26 17:18:31 · 786 阅读 · 0 评论 -
iBATIS实战-导读
本书第一部分为iBATIS高级介绍部分,分别介绍了iBATIS的设计理念和iBATIS的内涵。这两章为哪些对iBATIS的基础感兴趣的人提供了相关的背景知识。如果你想获得有关iBATIS的比较实际的应用,并且立即开始使用它,可以直接跳到本书的第二部分。第3章-第7章组成了本书的第二部分,该部分主要介绍了基本的iBATIS应用。如果你打算利用iBATIS进行开发,该部分便是必读内容。第三章介绍如转载 2013-10-26 16:38:44 · 647 阅读 · 0 评论 -
单例模式下的可伸缩的数据库连接池的实现
使用数据库连接池的原因及优势 JDBC做为一种数据库访问技术,具有简单易用的优点。但在程序开发时,不使用数据库连接池的情况下,系统会存在诸多问题如:每一次Web请求都要建立依次数据库连接,改过程相当耗时,在开发模式下使用MyEclipse开发工具2G内存的情况下建立一次数据库连接的时间为1.5s左右。高并发访问时,如此频繁耗时的数据库连接操作势必占用很多的系统资源,造成网站响原创 2013-08-27 21:34:14 · 3331 阅读 · 0 评论 -
3分钟左右的时间如何向MySQL数据库中插入100万条数据
一、编写测试案例向MySQL数据库中插入百万条数据。测试数据表建表脚本如下:use db_xk;droptableifexists tb_test2;createtable tb_test2 ( id intprimarykey auto_increment, subject varchar(50)not原创 2013-08-27 21:10:10 · 4141 阅读 · 0 评论 -
HttpSession会话状态的生命周期
HttpSession会话状态的生命周期浏览器访问服务器时,服务器会创建一个session对象(有一个sessionId)。服务器在默认的情况下,会将sessionId以cookie的机制发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId就可以找到对应的session对象。服务器以此方式管理用户的状态。 获取se原创 2013-08-28 15:22:40 · 11610 阅读 · 0 评论 -
MyEclipse下实现邮箱收发功能可能遇到的问题及解决办法
MyEclipse下实现邮箱收发功能注意问题:找到上图蓝色显示的文件路径用rar形式打开后将将activation和mail包删除(上图已删除)。将activation.jar和mail.jar引入。否则编译通过但运行时出现ClassNotFoundException(类为找到异常)。原创 2013-08-28 15:37:21 · 821 阅读 · 0 评论 -
李刚老师著疯狂Java部分章节-Java类加载和类反射
本文将会深入介绍Java类的加载、连接和初始化的深入知识,并重点介绍Java反射相关的内容。读者在阅读本章的类加载、连接及初始化知识时,可能会感觉这些知识比较底层,但掌握这些底层的运行原理会让读者对Java程序的运行有更好的把我。而且Java类加载器除了根类加载器之外,其他类加载器都是使用Java语言编写的,所以程序员完全可以开发自己的类加载器,通过使用自定义类加载器,可以完成一些特定的功能。转载 2013-08-29 20:37:03 · 1529 阅读 · 0 评论 -
MyEclipse序列号自动生成点击生成即可生成序列号
package test;import java.io.*;public class MyEclipseGen { private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Mi转载 2013-08-30 21:48:40 · 831 阅读 · 0 评论 -
Quartz框架框架介绍
Quartz时OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或EJBs。Quartz的最新版本为Quartz2.10.调度简单Quartz是一个完全由Java编写得开源作业调度转载 2013-10-06 18:47:08 · 1750 阅读 · 0 评论 -
Java回调函数
public interface CallBackInterface { public void doSome(); public void executeMethod(); }public class MethodB { public double getTime(CallBackInterface原创 2013-10-01 19:28:12 · 603 阅读 · 0 评论 -
邮箱发送功能的轻量级实现
邮箱发送实现代码实现 邮箱发送实现代码: MailSenderInfo类 package util.email; import java.util.Properties; publicclass MailSenderInfo { private StringmailServerHost;原创 2013-08-28 15:28:58 · 923 阅读 · 0 评论 -
iBATIS实战-读者须知
本书假定读者已具备了一些相关知识。假设你已经了解Java,因此书中对Java不会着墨过多。在阅读本书之前,你应该已经感受过使用JDBC所带来的痛苦,甚至可能体验过某些O/RM(对象关系映射)框架的缺陷。同时我们还加定了你了解SQL。iBATIS是一个以SQL为中心的框架。iBATIS并不试图隐藏SQL,SQL语句在iBATIS框架中并被自动生成,而是完全在你自己的控制之下,因此你最好具备一些S转载 2013-10-26 16:23:03 · 667 阅读 · 0 评论 -
Servlet运行原理
当用户向浏览器地址栏输入http://ip:port/项目名称/url,浏览器端与服务器端交互过程如下:一、浏览器使用ip:port(端口号)连接服务器,Tomcat默认端口为8080。二、.浏览器将请求数据按照http协议打成一个请求数据包发送给服务器,请求数据包的内容包含了请求资源路径(/url),另外,在请求数据包当中,还会包含浏览器自动生成的一些信息。三、服务器(S原创 2013-08-27 21:16:00 · 743 阅读 · 0 评论