第三章:运行时数据区概述及线程
第三章:运行时数据区概述及线程运行时数据区java程序执行流程
JVM系统概述
运行时数据区内存划分
线程间共享
线程线程概述
JVM系统线程
第四章:程序计数器
第四章:程序计数器程序计数器(PC寄存器)的介绍
对于运行时数据区里的每一个内存结构,需要重点关注以下两个部分:GC(垃圾回收)和OOM(OutOfMemoryError)
实例
PC寄存器面试常见问题问题一:
使用PC寄存器存储字节码指令地址有什么用?
为什么使用PC寄存器记录当前线程的执行地址呢?
Ans:
问题二:
PC寄存器为什么会被设定为线程私有?
Ans:
补充:CPU时间片宏观并行,微观并发
四、用户密码修改功能的实现
密码修改需要用户提交原始密码和新密码,再根据当前登录用户进行信息的修改操作
持久层规划需要执行的SQL语句根据用户uid修改用户的password值
1update t_user set password=?,modified_user=?,modified_time=? where uid=?;
根据uid查询用户数据,在修改密码之前,要保证当前用户数据存在,检测当前用户是否被标记删除,检测用户输入的原始密码是否正确
1select * from t_user where uid=?;
设计接口和抽象方法在接口UserMapper中定义对应的抽象方法
12345678910111213141516/** * 根据uid更改用户密码字段 * @param uid 用户uid * @param password 更改的新密码 * @param modifiedUser 更改者用户名 * @param modifiedDate 更改操作时间 * @return 受影响的行数,用于后续判断是否更新成功 */Integer updatePasswordByUid(Integer uid, S ...
第一章:JVM与Java体系结构
第一章:JVM与Java体系结构虚拟机与Java虚拟机介绍虚拟机虚拟机就是一台虚拟的计算机,本质是一款软件,用来执行一系列虚拟计算机指令。虚拟机可以分为系统虚拟机和程序虚拟机
系统虚拟机
系统虚拟机完全是对物理计算机的仿真,提供一个可运行完整操作系统的软件平台,比如Visual Box,VMware就属于系统虚拟机
程序虚拟机
程序虚拟机专门为执行单个计算机程序而设计,比较典型的就是Java虚拟机,在Java虚拟机中执行的指令我们称之为Java字节码指令
无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中
Java虚拟机Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细的定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里
特点:
一次编译,到处运行
自动内存管理
自动垃圾回收功能
JVM的位置JVM运行在操作系统基础之上,与硬件之间没有直接的交互
JDK、JRE、JVM三者之间的关系
JVM的整体结构HotSpot VM是目 ...
第二章:类加载子系统
第二章:类加载子系统类加载器与类的加载过程JVM的内存结构
类加载器子系统作用
类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识
ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定
加载的类信息存放于一块称为方法区的内存空间。除了类信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分信息是Class文件中常量池部分的内存映射)
类加载器中ClassLoader的角色
类的加载过程
整个类的加载过程主要包括:
加载
链接
初始化
加载
通过一个类的全限定名获取定义此类的二进制字节流
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
在内存中生成一个代表这个类的的java.lang.Class对象,作为方法区这个类的各种数据的访问入口
链接
实例.class文件查看,所需软件:Binary Viewer和jclasslib bytecode viewer
所需软件下载地址
12链接:https://pan.baidu.com/s ...
二、用户注册功能实现
用户注册创建数据库用户表
创建用户的实体类实体类的包名规定:com.bang.store.pojo
数据表公共字段抽取数据库设计过程中,多个业务数据表均存在以下公共字段,则可以将公共字段抽象成一个新的基类com.bang.store.BasePojo,供各个数据库表使用
1234created_user VARCHAR(20) COMMENT '日志-创建人',created_time DATETIME COMMENT '日志-创建时间',modified_user VARCHAR(20) COMMENT '日志-最后修改执行人',modified_time DATETIME COMMENT '日志-最后修改时间',
java基类123456789101112131415161718192021222324252627282930313233package com.bang.store.pojo;import lombok.AllArgsConstructor;import lombok.Data;impo ...
三、用户登录功能的实现
用户登录功能分析用户进入登陆页面,输入用户名和密码,点击登录按钮,向后台程序发送请求,后台根据用户信息在数据库中进行查找,如果用户名和密码均正确,则会跳转到对应的主页面,即index.html
持久层规划要执行的SQL语句分析:一般逻辑是根据用户名查询数据库返回用户记录给业务层,由于密码存储一般是经过加密后的数据,数据库中与用户输入一般不一致,所以密码等其他信息的校验一般放在业务层去进行
1select * from t_user where username=?;
相关持久层的功能在用户注册模块已经实现
业务层规划异常密码错误异常用户名正确,密码错误引发的异常,PasswordNotMatchException
123456789101112131415161718192021222324package com.bang.store.service.ex;public class PasswordNotMatchException extends ServiceException{ public PasswordNotMatchException() { ...
一、项目环境搭建
项目分析项目功能项目 功能包括:登录、注册、热销产品、用户管理(密码、个人信息、头像、收货地址)、购物车(商品展示、增加、删除)、订单模块
开发顺序注册、登录、用户管理、购物车、商品、订单模块
某个模块的开发顺序
持久层开发
依据前端页面的设置规划相应的SQL语句,以及进行配置
业务层开发
核心功能控制、业务操作以及异常的处理
控制层开发
接收请求、处理相应
前端开发
简单JS、JQuery、AJAX的代码编写
项目搭建的工具和环境
JDK:1.8及其以上的版本
maven:配置到IDEA,要求3.6.1及其以上版本
数据库: Mysql,5.1及其以上版本
开发平台:IDEA
代码规范
项目名称:store,表示商城
主包名:com.bang.store
资源文件:统一放置在resources文件夹下
单元测试:test.com.bang.store
准备工作
导入设计对应的数据库
1create database store charcater set utf8;
项目的application.yml文件配置数据库相关信息
1234567spring: ...
基本概念
计算机网络基本概念1 因特网1 网络、互联网和因特网
网络
若干个节点和连接这些节点的链路组成的即称为网络
互联网
多个网络通过路由器互联起来,构成一个覆盖范围更大的网络,即称为互联网
互联网—-网络的网络
因特网
一个专有名词,专指世界上最大的互联网
2 ISP因特网服务提供者(Internet Service Provider)
电信、移动、联通等运营商即可称之为ISP
3 因特网的组成边缘部分(网络边缘)由所有连接在因特网上的主机组成。用户直接使用,用来进行数据通信和资源共享的设备
核心部分(网络核心)由大量网络和连接这些网络的的路由器组成。网络核心为网络边缘提供服务(连通性和数据交换)
2 数据交换方式电路交换以前的电话机通过连接电话线的方式即为电路交换
电路交换常见的三个步骤
建立连接(分配通信资源)
通话(在此期间,独占通信资源)
释放连接(归还通信资源)
分组交换现存的计算机网络体系使用的数据交换方式
发送方构造分组,发送分组
分组交换机(路由器等设备)缓存转发分组
接收方接受分许,还原报文
报文交换与分组交换类似,只是其传输单位为整个报文,分 ...
目录结构测试
摘要ghhjjjkjk
背景hjjkjkkjS
相关工作x_2+y_2=32matrix = x^2+y^2=z^2发广告哼哼唧唧
方法GHhjiig
实验
总结参考文献