java
文章平均质量分 83
欠扁的小篮子
天南地北双飞客,老翅几回寒暑。
展开
-
dom4j 使用总结
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件 dom4j的使用方法简单总结来说如下:①可以创建一个新的xml文件②利用SAXReader和File对象创建一个已存在的xml文件的一个Document对象③利用Document对象的getRootElement()方法获取根节点,返回值类型为Element④利用根节点,可原创 2015-06-06 20:01:42 · 594 阅读 · 0 评论 -
处理机进程调度模拟
一、进程调度 无论是在批处理还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。进程调度属于处理机调度。 处理机调度分为三个层次:高级调度:(High-Level Scheduling)又称为长程调度、作业调原创 2015-12-27 13:53:02 · 1956 阅读 · 0 评论 -
探究JVM——运行时数据区
最近在读《深入理解Java虚拟机》,收获颇丰,记录一下,部分内容摘自原书。 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示:原创 2016-04-30 11:51:23 · 1208 阅读 · 0 评论 -
探究JVM——垃圾回收
垃圾回收主要考虑三件事情:哪些内存需要回收?什么时候回收?如何回收? 一、哪些内存需要回收? 堆内存:对于JVM 来说,垃圾回收主要是针对堆内存中的对象实例。方法区:垃圾收集行为在方法区是比较少出现的,一般来说,这个区域的回收“成绩”比较难以令人满意,尤其是类型的卸载,条件相当苛刻,但是这部分区域的回收确实是必要的。 二、什么时候回原创 2016-05-01 20:58:21 · 3710 阅读 · 0 评论 -
浅谈对Spring Framework的认识
Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of dep原创 2016-09-17 16:22:27 · 628 阅读 · 0 评论 -
Tomcat启动过程源码解读
根据Tomcat源码来看一下Tomcat启动过程都做了什么部分代码为主要流程代码,删去了try-catch以及一些校验逻辑,方便理解主流程先来一张启动过程时序图,了解一下启动顺序Tomcat启动的入口类:org.apache.catalina.startup.Bootstrap#mainmain方法是整个tomcat启动时的入口。在main方法中,使用bootstrap.init()来初始化类加载...原创 2018-03-07 19:37:56 · 451 阅读 · 0 评论 -
读取含有BOM头的文件遇到的问题
需求是读取一个csv文件,然后解析成对应的数据结构。csv必须包含指定的某些列,通过列名header来进行校验。 解析配置文件的方法。public List<QuestionData> buildConfigData(final MultipartFile file) { CsvReader csvReader = null; List<QuestionData...原创 2018-03-13 10:22:21 · 2665 阅读 · 1 评论 -
Java线程的几种状态
java.lang.Thread.State中定义的集中Java线程的状态:/** * A thread state. A thread can be in one of the following states: * <ul> * <li>{@link #NEW}<br> * A thread that has not yet started...原创 2018-03-20 17:31:20 · 203 阅读 · 0 评论 -
Java NIO
了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。BIO常见使用方式传统的BIO是同步阻塞的方式,因此,在服务器中常见的使用方式是:来一个请求创建一个线程,阻塞的等待网络IO的数据。使用一个线程池,来一个请求就从线程池里取出来一个线程,阻塞的等待网络IO...原创 2018-03-28 14:22:48 · 659 阅读 · 0 评论 -
Tomcat NIO
说起Tomcat的NIO,不得不提的就是Connector这个Tomcat组件。Connector是Tomcat的连接器,其主要任务是负责处理收到的请求,并创建一个Request和Response的对象,然后用一个线程用于处理请求,Connector会把Request和Response对象传递给该线程,该线程的具体的处理过程就是Container容器的事了。在tomcat启动过程中,会初始化Con...原创 2018-04-11 15:00:23 · 3089 阅读 · 2 评论 -
Mysql 时间类型精度截取的bug
mysql-connector-java版本升级出现的一次问题。涉及到了时间精度的截取和四舍五入。首先了解一点,timestamp,datetime如果不指定精度,默认的精度是秒。当mysql-connector-java版本<=5.1.22时,db的客户端会将Datetime,Timestamp秒以下的精度丢弃。版本>5.1.22后,秒以下的值将不会截断db的server端会对超出精...原创 2018-06-23 18:05:07 · 751 阅读 · 0 评论 -
大数据量下的集合过滤—Bloom Filter
算法背景如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。在响应时间要求比较严格的情况下,如果我们存在内里,那么随着集合中元素的增加,我们需要的存储空间越来越大,以及检索的时间越来越长,导致内存开销...原创 2018-06-23 18:27:41 · 3734 阅读 · 0 评论 -
Mybatis插入数据后返回主键id
有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。单条记录插入并返回First, if your database supports auto-generated key fields (e.g. MySQL and SQL Server), then you can simply set useGenerated...原创 2018-06-25 11:00:19 · 1903 阅读 · 0 评论 -
GET、POST编码问题
GET请求、POST经常会出现中文乱码的问题,最好约定前后端的编码,一般为UTF-8。但是这里面也是有坑的。后端设置编码为UTF-8的推荐方式:SpringMVC配置过滤器:<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.spr...原创 2018-06-25 11:11:09 · 357 阅读 · 0 评论 -
BigDecimal精度与相等比较的坑
先想一下,创建BigDecimal对象的时候一般是怎么创建的?new一个,传进去值BigDecimal.valueOf方法,传进去值 作为一个数字类型,经常有的操作是比较大小,有一种情况是比较是否相等。用equal方法还是compareTo方法?这里就是一个大坑//new 传进去一个doubleBigDecimal newZero = new BigDecimal(0.0);...原创 2018-09-13 11:41:33 · 2892 阅读 · 0 评论 -
页面调度算法模拟
模拟实现的算法:FIFO,Optimal(最佳置换),LRU,Clock,改进的Clock算法 一、先入先出(FIFO): 最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内原创 2016-01-23 23:18:50 · 1612 阅读 · 0 评论 -
jdbc基础 (一) MySQL的简单使用
前段时间学习了jdbc,正好利用这几篇文章总结一下。JDBC 可做三件事:与数据库建立连接、发送操作数据库的语句并处理结果。而程序首先要做的就是加载数据库驱动,这里我使用的是mysql:String driverName=new String("com.mysql.jdbc.Driver");Class.forName(driverName);然后再获取数据库连接对象原创 2015-05-12 16:07:19 · 663 阅读 · 0 评论 -
jdbc基础 (二) 通过properties配置文件连接数据库
上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用。因为jdbc对数据库的驱动加载、连接获取、释放资源的代码都是相同的,为了提高代码的复用性,我们可以写一个工具类,将数据库驱动加载、获取连接、资源释放的代码封装起来。同时,为了提高工具类的灵活性,可以将数据库的驱动、url、用户名、密码等信息以键值对的形式存放在properties文件中,工具类初始化时从配置文件中原创 2015-05-13 14:08:54 · 11196 阅读 · 0 评论 -
mysql使用基础 sql语句(一)
命令行输入mysql -u root -p,回车再输入密码,进入mysql。终端命令以分号作为一条语句的结束,可分为多行输入,只需在最后加上分号即可。如下图:一、DDL:数据定义语言 Data Definition Language 作用:定义数据库或者表结构的。 操作的对象:数据库或表的结构的。 关原创 2015-05-24 20:46:20 · 1035 阅读 · 0 评论 -
mysql使用基础 sql语句与数据完整性(二)
二、DML:Data Manipulation Language 数据操作语言 作用:操作表中的数据的。 关键:INSERT UPDATE DELETE 注意:日期或字符串、字符要使用单引号引起来。 假设已经存在表user :mysql>CREATE TABLE uesr( id int, username varchar(20原创 2015-06-05 17:52:54 · 951 阅读 · 0 评论 -
Jsp内置对象及EL表达式的使用
一、JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型request HttpServletRequestresponse HttpServletResponsesession HttpSession(有开关的:page指令的session属性的取值)application原创 2015-08-28 00:11:34 · 2423 阅读 · 1 评论 -
Jsp语法、指令及动作元素
一、JSP的语法 1、JSP的模板元素:(先写HTML) 就是JSP中的那些HTML标记 作用:页面布局和美化 2、JSP的Java脚本表达式: 作用:输出数据到页面上 语法:(实际上就是调用输出流打印到页面上) 3、JSP中的Java脚本片段:(实际开发中,应做到JSP中不能出现一行Java脚本片段原创 2015-08-27 23:09:43 · 1567 阅读 · 0 评论 -
EL函数以及自定义标签的应用
一、EL函数(调用普通类的静态方法)编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤): ①编写一个普通的java类,提供一个静态方法,功能自定,例如下:package cn.wzbrilliant.el;public class ElFunction { public static String toUpperCase(String str){原创 2015-08-28 20:23:09 · 1827 阅读 · 0 评论 -
数据的分页处理
当页面中要显示的内容过多需要分多页显示、或是数据量过大内存吃不消时,需要分页处理。原理:每次从数据库中取出一定量的数据,通过jsp页面显示实现:①写一个类封装分页的页面②从数据库中取出一个页面的数据,将信息封装到分页页面对象中③根据情况,将分页的页面对象设置到request对象、session对象或servletContext对象属性中,供jsp页面调用原创 2015-08-29 12:19:25 · 2285 阅读 · 0 评论 -
Servlet响应的中文字符集问题
在Servlet中利用response向客户端浏览器输出中文时有时会遇到乱码问题,总结如下:response输出流有两种,一是以字节流输出,一是以字符流输出。 一、以字节流输出: 1.默认编码输出木有乱码 2.通过response的setHeader方法设置编码utf-8,无乱码 3.通过response的setContentType方法设置编码utf-8,无乱码原创 2015-08-05 12:44:22 · 1571 阅读 · 0 评论 -
java之Cookie详解
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入JSESSIONID用于标记一个会话(session),这样服务器可以知道该用户是否合法用户原创 2015-08-19 14:52:49 · 623 阅读 · 0 评论 -
servlet请求转发、包含以及重定向
请求转发:方式一: ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response); 目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)方式二: request.getRequestDisp原创 2015-08-19 11:27:36 · 633 阅读 · 0 评论 -
servlet设置缓存时间以及文件的下载
缓存时间的设置:public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8");原创 2015-08-19 11:01:13 · 826 阅读 · 0 评论 -
jdbc基础 (五) 连接池与数据源:DBCP以及C3P0的使用
一、连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最原创 2015-06-28 19:36:21 · 1460 阅读 · 0 评论 -
jdbc基础 (四) 批处理
批处理,就是字面上的意思,一次性处理一批sql语句。直接看例子吧: package com.cream.ice.jdbc;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import org.原创 2015-06-04 20:32:43 · 540 阅读 · 0 评论 -
数据结构之链表、栈和队列 java代码实现
定义抽象节点类Node:package cn.wzbrilliant.datastructure;/** * 节点 * @author ice * */public abstract class Node { private Node next; public Node(){ next=null; } public void setNext(Node next原创 2015-08-03 23:30:21 · 681 阅读 · 0 评论 -
jdbc基础 (三) 大文本、二进制数据处理
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据CLOB:用于存储大文本BLOB:用于存储二进制数据,例如图像、声音、二进制文在mysql中,只有BLOB,没有CLOB,mysql存储大文本用TEXT TEXT 分为:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXTBLOB 分为:T原创 2015-05-28 18:29:58 · 818 阅读 · 0 评论 -
Java8 Collectors.toMap的坑
按照常规思维,往一个map里put一个已经存在的key,会把原有的key对应的value值覆盖,然而通过一次线上问题,发现Java8中的Collectors.toMap反其道而行之,它默认给抛异常,抛异常... 线上业务代码出现Duplicate Key的异常,影响了业务逻辑,查看抛出异常部分的代码,类似以下写法:Map<Integer, String> map = li...原创 2018-09-13 12:10:55 · 81165 阅读 · 12 评论