/*** An object that maps keys to values. A map cannot contain duplicate keys;* each key can map to at most one value.** <p>This interface takes the place of the <tt>Dictionary</tt> class, which* was a totally abstract class rather than an interface.** <p>The <tt>Map</tt> interface provides three <i>collection views</i>, which* allow a map‘s contents to be viewed as a set of keys, collection of v...
一个简单的MVC实例利用jsp+javabean+Servlet模拟一个用户登陆,实现对数据库的增删改查。1,创建数据库我使用的数据库是MySQL,创建一个Iuser表,具体如下 2,创建一个javabean类,对表中的3个属性进行封装User.Java package cn.jw.vo; public class User {private String username;private String userspass;private String userid;public User(){ }public String getUsername() {return username;}public void setUsername(Strin...
Vector源码分析每个Java程序员应该的特性可变长数组(grow or shrink)能够使用索引获取值(accessed using an integer index)多线程环境下线程安全类图package java.util;import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;/*
vector 通过capacity(容量)和capacityIncrement(增量)两个属性来最化管理存储, capacity 一般都比 size 大。
当知道需要插入大...
思维导图案例1:过滤器及拦截器相关区别解释过滤器&拦截器区别:Filter是基于函数回调的,而Interceptor这是基于Java反射的。Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。最重要的要记住他们的执行顺序:先Filter后Interceptor,另外在不同框架中有的是自带,有的是需要自写...
权重下随机,就是给定各个值不同的权重,再根据权重的比例随机选出一个值 1/** 2 * Created by Jungle on 2020/2/23.3 *4 * @author JungleZhang5 * @version 1.0.06 * @Description 权重下随机的算法7*/ 8publicclass WeightRandom<K, V extends Number> {9private TreeMap<Double, K> weightMap = new TreeMap<>();
1011public WeightRandom(@NotNull List<Pair<K, V>> list) {
12// 先排除权重为0的项13 Iterator<Pair<...
ReentrantLock是一个较为常用的锁对象。在上次分析的uil开源项目中也多次被用到,下面谈谈其概念和基本使用。概念一个可重入的互斥锁定 Lock,它具有与使用 synchronized 相同的一些基本行为和语义,但功能更强大。名词解释:互斥表示同一时刻,多个线程中,只能有一个线程能获得该锁。但是多个线程都可以调用lock方法,只有一个会成功,其他的线程会被阻塞,直到该锁被释放可重入模仿synchronized 的语义;如果线程进入由线程已经...
在百度百科上找了一段定义ORM的话:对象关系映射(英语:ObjectRelational Mapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。那么ORM Framework就是提供对象到数据库关系映射的一套编程模型。现在流行的MyBaits、Hibernate都是这种框架。本章开始我们就来分析下这两种框架源码的分析,...
1.本文分析一下request对象中getParameter方法及getAttribute的差异及使用场景。这个关系到servlet的生命周期 很简单的一个例子,上代码 页面1 :request1.jsp 1<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 2<% 3String path = request.getContextPath();4String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";5%> 6<html> 7<head> 8 9<title>...
There is no getter for property named ‘*‘ in ‘class java.lang.String‘,此错误之所以出现,是因为mybatis在对parameterType="String"的sql语句做了限制,假如你使用<when test="username != null">这样的条件判断时,就会出现该错误,不过今天我们来刨根问底一下。一、错误再现想要追本溯源,就需要错误再现,那么假设我们有这样一个sql查询:<selectid="getRiskMember"resultMap="BaseResultMap"parameterType="String"><...
目录 一、入门示例 二、异常场景1 三、异常场景2 四、解决方法 之前在使用线程池的时候,出现了 java.util.concurrent.RejectedExecutionException ,原因是线程池配置不合理,导致提交的任务来不及处理。接下来用一个简单的例子来复现异常。Exception in thread "main" java.util.concurrent.RejectedExecutionException: Task org.cellphone.common.pool.Worker@f6f4d33 rejected from java.util.concurrent.ThreadP...
String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初...
我们常说的Java内存主要分为四大块(寄存器不在考虑之内,我们无法用代码来操控它):stack(栈)、heap(堆)、data segment(数据区)、code segment(代码区)。它们的主要用途如下图所示:而在上面四个当中,我们经常谈论的是右边那两个家伙——stack和heap。今天我们就来聊聊Java代码在运行的过程中,在stack和heap中到底是什么样子的吧。我们先看下面一段代码: public static void main(String[] args) {TestReference test...
程序的执行过程 要在Java中分析内存,我们先来了解一下程序的执行过程: 正如上图所示,大致分为3个步骤: 1、最开始,我们的程序是存在于硬盘中的,当启动运行时,程序会被加载(load)到内存中去,这里的内存可以看做我们的内存条; 2、此时,内存中除了存在刚加载的程序的代码,还存在操作系统本身的代码(好吧,此句可以当做废话→_→),操作系统会找到程序中的Main方法开始执行程序;...
本文的目录结构如下:一、LinkedHashSet 的 Javadoc 文档注释和简要说明二、LinkedHashSet 的内部实现:构造函数三、LinkedHashSet 的 add 操作和 remove 操作一、LinkedHashSet 的 Javadoc 文档注释和简要说明 还是以官方 javadoc 作为参考进行说明:LinkedHashSet 是 Set 接口的 hash table 和 linked list 实现,而且迭代顺序可预测(按照元素的插入顺序),实际上 LinkedHashSet 继承了 HashSet,内部使用了 LinkedHashMap ...
在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,可能会将链表转换为红黑树,这样大大减少了查找时间。简单说下HashMap的实现原理:首先存在一个table数组,里面每个元素都是一个node链表,当添加一个元...