随笔分类 - Java
摘要:本文总结了Java集合容器的经典面试题,所有题目我都给出了自己思考,适合面试前复习扫盲使用。我不能保证里面包含了所有集合面试题,但只要认真深挖好每一道题,做到触类旁通,就能以不变应万变。 大纲: 概述型面试题 List Map 小结 概述类面试题 1. 请说一下Java容器集合的分类,各自的继承结构
阅读全文
摘要:RPC远程过程调用可以说是分布式系统的基础,本文将通过Java演示一次普通的rpc调用到底发生了什么。 我曾经在网上看到有人提问,为什么RPC要叫作远程过程调用,而不叫作RMC远程方法调用。个人认为RPC的叫法才是合理的,远程调用的是某个过程,不一定是一个具体的方法。(你只要看过后面第一个版本的代码
阅读全文
摘要:本文将通过模拟Mybatis动态代理生成Mapper代理类,讲解Mybatis原理 1.平常我们是如何使用Mapper的 先写一个简单的UserMapper,它包含一个全表查询的方法,代码如下 public interface UserMapper { @Select("select * from
阅读全文
摘要:前言 学习如何使用Spring,SpringMVC是很快的,但是在往后使用的过程中难免会想探究一下框架背后的原理是什么,本文将通过讲解如何手写一个简单版的springMVC框架,直接从代码上看框架中请求分发,控制反转和依赖注入是如何实现的。 建议配合示例源码阅读,github地址如下: https:
阅读全文
摘要:在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知识点都放到同一篇文章中, 我将把Tomcat系列文章分为Tomcat的启动, Tomcat中各模块的
阅读全文
摘要:字符串常量池详解 在深入学习字符串类之前, 我们先搞懂JVM是怎样处理新生字符串的. 当你知道字符串的初始化细节后, 再去写String s = "hello"或String s = new String("hello")等代码时, 就能做到心中有数. 首先得搞懂字符串常量池的概念. 常量池是Jav
阅读全文
摘要:一.基础:hashCode() 和 equals() 简介 在学习 hashCode() 和 equals() 之间的关系之前, 我们有必要先单独地了解他俩的特点. equals() equals() 方法用于比较两个对象是否相等,它与 == 相等比较符有着本质的不同。 在万物皆对象的 Java 体
阅读全文
摘要:final关键字的字面意思是最终的, 不可修改的. 这似乎是一个看见名字就大概能知道怎么用的语法, 但你是否有深究过final在各个场景中的具体使用方法, 注意事项, 以及背后涉及的Java设计思想呢? 一. final修饰变量 1. 基础: final修饰基本数据类型变量和引用数据类型变量. 相信
阅读全文
摘要:“判断两个事物是否相等”,是编程中最常见的操作之一,在Java中,判断是否相等有两种方法,一种是使用“==”判断符,另一种是使用“equals()”方法,你是否曾因混用二者导致不可思议的bug?本篇文章将带你深入二者背后的判断原理。 相等判断符"==" "=="相等判断符用于比较基本数据类型和引用类
阅读全文
摘要:创建ashop-sso-web单点登陆系统 先创建好模块, 然后配置pom.xml文件 加入spring的配置文件 然后配置web.xml文件, 并把静态资源放到webapp目录下. 打包部署模块测试, 能看到如下效果则项目搭建成功. 用户名唯一性验证 请求方法 GET URL http://sso
阅读全文
摘要:项目的Github地址 需求介绍 为了缩短用户看到首页信息的时间, 我们把首页显示的类目信息, 广告等数据放到Redis缓存中, 这样就不用通过耗时的数据库操作获取数据, 而是直接从Redis缓存中获取. 在开始之前先记录一个坑: 重启虚拟机后nginx服务器关闭了, 导致nginx上的图片无法访问
阅读全文
摘要:实现加载内容分类树功能 注: 往后将不在说编写远程服务方法和编写web模块等重复语句, 直接用"远程服务: " 和 "web模块: " 替代. 对应的数据库表如下: 远程服务: web模块 实现内容分类动态添加 目前的需求是, 对着内容单击右键可以进行内容分类的添加 远程服务: "web模块" 删除
阅读全文
摘要:到Github获取源码请点击此处 一. 商品类目查询 功能分析: 在后天管理页面可以添加商品, 添加商品时首先需要选择类目. 在本项目中, 商品的类目选择使用的是异步加载, 当我们点击选择类目时会弹出一级类目, 进一步选择时会弹出二级类目. 这里涉及到tb_item_cat表. 下面进行编码实现 首
阅读全文
摘要:到Github获取源码请点击此处 一. 数据库还原 新建Mysql数据库, 你可以使用自己熟悉的Mysql图形界面操作工具快速建库. 在新创建的ashop数据库中执行脚本文件ashop.sql. 该脚本存放在创建数据库的sql脚本目录下. 成功导入后, 数据库将拥有11张表 二. Mybatis逆向
阅读全文
摘要:本文将通过具体的远程服务发布与消费案例展示4种RPC远程调用方法. 一. 通过rmi实现远程服务的生产与消费 Java自身提供了java.rmi包, 方便开发者进行远程服务的部署与消费, 下面将通过具体案例进行讲解. 远程服务提供者实现. 创建rmi-provider项目(Maven) 创建User
阅读全文
摘要:介绍 正则表达式一般用于字符串匹配, 字符串查找和字符串替换. 别小看它的作用, 在工作学习中灵活运用正则表达式处理字符串能够大幅度提高效率, 编程的快乐来得就是这么简单. 一下子给出一堆匹配的规则可能会让人恐惧, 下面将由浅入深讲解正则表达式的使用. 从简单例子认识正则表达式匹配 先上代码 pub
阅读全文
摘要:介绍 初学Java虚拟机几天, 被方法区, 永久代这些混杂的概念搞混了. 我觉得学习这部分知识应该把官方定义的虚拟机运行时数据区域和虚拟机内存结构分开叙述, 要不然容易误导. 本文先介绍官方文档规定的运行时数据区域, 然后以JDK1.8的HotSpot虚拟机为例, 介绍虚拟机的内存结构. 官方文档规
阅读全文
摘要:本文按以下顺序叙述: HashMap的感性认识. 官方文档中对HashMap介绍的解读. 到源码中看看HashMap这些特性到底是如何实现的. 把源码啃下来有一种很爽的感觉, 相信你读完后也能体会到~ 如发现有误, 欢迎指出. 在开始之前, 先通过图例对HashMap建立感性认识 - 如果不清楚哈希
阅读全文