05 2021 档案
摘要:事务 事务特性: 要么都成功,要么都失败 ACID原则 事务的状态 开启事务 事务提交 commit() 事务回滚 rollback() 关闭事务 junit单元测试 只要在方法上加上@Test就可以运行,不需要新建main方法 import org.junit.Test; public cla
阅读全文
摘要:JDBC JDBC :Java 连接数据库的缩写 需要jar包支持: java.sql javax.sql mysql-conneter-java…(连接驱动) 导入数据库依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-conne
阅读全文
摘要:监听器、过滤器的常见应用 用户登录后才能进入主页,注销后不能进入。 1.用户登录之后,向Session中放入用户的数据 2.进入主页的时候判断用户是否已登录;【在过滤器中实现】 其中的Constant.USER_SESSION是将字符串”user_session”变成一个静态常量,方便修改及复用 p
阅读全文
摘要:监听器 Listener :监听器,用于监听用户的操作 监测网站在线人数(基于session) 1、编写一个监听器,实现HttpSessionListener public class ListenerDemo implements HttpSessionListener { /** * 监听ses
阅读全文
摘要:Filter Filter:过滤器,用来过滤网站的数据 用来处理 中文乱码 登录验证等等 Filter开发步骤: 导包 import javax.servlet.*; 重写对应方法 public class CharacterEncodingFilter implements Filter { /*
阅读全文
摘要:MVC三层架构 什么是MVC:Model view Controller 模型 视图 控制器 两层架构: 用户直接访问控制层,控制层就可以直接操作数据库 servlet--CRUD-->数据库 弊端:程序十分臃肿,不利于维护 Servlet的代码中;处理请求、响应、视图跳转、处理JDBC、处理业务代
阅读全文
摘要:JavaBean 实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化 必须有对应的get/set方法 一般用来和数据库的字段做映射【ORM】 ORM:对象关系映射 表——>类 字段——>属性 行记录——>对象 class People{ private int id; pr
阅读全文
摘要:jsp 什么是JSP Java Server Pages :Java服务器端页面,也和Servlet一样,用于动态Web技术。 特点: 和HTML很类似 区别 HTML只给用户提供静态的数据 JSP页面中可嵌入JAVA代码,为用户提供动态数据 JSP原理 思路:JSP如何执行的? 代码层面没有任何问
阅读全文
摘要:JSP中out.println报错 手动加入两个包并右键,Add as Library。 Close Project,再重新打开该项目。
阅读全文
摘要:Cookie、Session 会话 会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话; 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话; 保存会话的两种技术 Cookie 客户端技术(响应、请求) Sess
阅读全文
摘要:HTTPServletRequest HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息; 获取参数,请求转发 获取参数
阅读全文
摘要:HttpServletResponse web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse; 如果要获取客户端请求过来的参数:找HttpServletRequest 如果要给客户端
阅读全文
摘要:ServletContext web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用 共享数据:在Servlet-1中设置保存的数据,可以在Servlet-02中拿到 用于设置参数的Servlet类-HelloServlet @WebS
阅读全文
摘要:Servlet原理 Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会: Mapping问题 一个Servlet可以指定一个映射路径 <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello
阅读全文
摘要:Servlet Servlet简介 Servlet就是sun公司开发动态web的一门技术 Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个类,实现Servlet接口 把开发好的Java类部署到web服务器中。 把实现了Serv
阅读全文
摘要:在idea使用maven 启动idea 创建一个maven项目 等待项目初始化完毕 maven仓库多了什么东西 idea中maven设置 注意:IDEA创建成功后看一眼maven的配置, maven在IDEA的配置和使用就ok了 创建一个普通的maven项目 在idea配置tomcat 解决警告问题
阅读全文
摘要:Maven 在javaweb开发中,需要使用大量的jar包,我们需要去手动去导入jar包 如何能够让一个东西自动帮我们导入和配置这些jar包??? 由此,Maven诞生了! Maven项目架构管理工具 我们目前用它来方便导入jar包 Maven核心思想:约定大于配置 有约束,不要去违反 Maven会
阅读全文
摘要:Http 什么是http Http 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似M
阅读全文
摘要:Tomcat 安装Tomcat Tomcat启动和配置 启动和关闭Tomcat 访问测试 访问测试url: http://localhost:8080/ 可能遇到的问题: 1.java环境变量没有配置 2.闪退问题,需要配置兼容性 3.乱码问题要去配置文件设置 可以配置启动的端口号 tomcat的默
阅读全文
摘要:web服务器 作用:接收用户的请求给予相应的响应,是一种被动操作,用来处理用户请求给用户返回响应信息 ASP: 在Html中嵌入了VB的脚本,ASP+COM; 在ASP开发中,基本一个页面几千行代码,页面混乱 维护成本高! C# PHP: PHP开发速度很快,功能很强大,跨平台,代码很简单(70%,
阅读全文
摘要:JavaWeb基本概念 前言 静态Web html,htm ,服务器会直接读取HTML的数据; 缺点:网页内容无法更新,通过协议写单的手段可以让它动起来,如JavaScript,VBScript等 动态Web 主要特征:可以从服务端获取数据,Web界面因人而变 优点: 可以实现真正用户交互 可以从服
阅读全文
摘要:数据库连接池 数据库连接 —- 执行完毕 —- 释放 连接 — 释放 十分浪费系统资源 池化技术: 准备一些预先的资源,过来就连接预先准备好的 ——— 开门 —- 业务员: 等待 — 服务 — 常用连接数:10个 最小连接数:5个 最大连接数:15 业务最高承载上限 超过等待排队 等待超时:100m
阅读全文
摘要:JDBC操作事务 要么都成功要么都失败 ACID原则 原子性:要么全部完成,要么都不完成 一致性:总数不变 持久性:一旦提交不可逆,持久化到数据库了 隔离性:多个进程互不干扰 隔离性的问题 脏读:一个事务读取另一个没有提交的事务 不可重复读:在同一个事务内,重复读取表中的数据,表数据发生了变化 虚读
阅读全文
摘要:在IDEA上链接数据库 找到 database 新建 连接成功后,选择数据库 修改完数据点提交 编写SQL代码
阅读全文
摘要:PreparedStatement对象 使用preparedStatement对象,可以有效的防止SQL注入,并且效率更高 新增 import java.sql.Connection; import java.sql.PreparedStatement; import java.util.Date;
阅读全文
摘要:SQL注入问题 SQL存在漏洞,会被攻击导致数据泄露。SQL会被拼接 or 下方代码可以查询全部数据库内容: import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import
阅读全文
摘要:JDBC(重点) 数据库驱动 驱动 : 声卡、显卡、数据库 JDBC SUN公司为了简化开发人员的(对数据库的统一)操作,提高了一个(java操作数据库的)规范,俗称 JDBC 这些规范的具体实现由具体的厂商去做。 对于开发人员来说,只需要掌握JDBC接口的操作即可 java.sql jav
阅读全文
摘要:规范数据库设计 为什么需要设计 当数据库比较复杂的时候,我们需要设计了 糟糕的数据库设计: 数据冗余,浪费空间 数据库插入和删除都会很麻烦、异常【屏蔽使用物理外键】 程序的性能差 良好的数据库设计: 节省内存空间 保证数据库的完整性 方便我们开发系统 三大范式 为什么需要数据规范化 信息重复 更新异
阅读全文
摘要:权限管理和备份 用户管理 SQL 命令操作 用户表:mysql.user 本质:读这张表进行增删改查 -- 权限管理 -- 创建用户 CREATE USER saxon IDENTIFIED BY '123456'; -- 修改密码 (修改当前密码) SET PASSWORD = PASSWORD(
阅读全文
摘要:索引 索引(Index) 是帮助MySQL高效获取数据的数据结构。 索引的分类 主键索引:PRIMARY KEY 唯一标识 不可重复,只能有一个列作为主键 唯一索引: UNIQUE KEY 避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引 常规索引: KEY/INDEX 默认的,ind
阅读全文
摘要:事务 什么是事务? 要么都成功,要么都失败 事务原则: ACID原则性 一致性,隔离性,持久性 (脏读,幻读) 原子性(Atomicity) 要么都成功,要么都失败 一致性(Consistency) 事务前后数据的完整性必须保持一致。 持久性(Durability) —- 事务提交 事务一旦提交则不
阅读全文
摘要:DQL查询数据(最重点) DQL (Data Query LANGUAGE:数据查询语言) 所有的查询操作都用它 Select 简单的查询,复杂的查询它都能做~ 数据库中最核心的语言,最重要的语句 使用频率最高的语句 SELECT语法 SELECT [ALL | DISTINCT] {* | tab
阅读全文
摘要:MySQL数据管理 外键(了解) 方式一、在创建表的时候,增加约束 (麻烦,比较复杂) CREATE TABLE `grade`( `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id', `greadename` VARCHAR(50) N
阅读全文
摘要:修改删除表 修改 -- 修改表名 alter table test rename as tttt -- 怎加表的字段 alter table tttt add age int(11) -- 修改表的字段(重命名,修改约束) alter table tttt modify age varchar(11
阅读全文
摘要:数据表的类型 -- 关于数据库引擎 /* INNODB 默认使用~ MYISAM 早些年使用 */ MYISAM INNODB 事务 不支持 支持 数据行锁定 不支持 支持 外键约束 不支持 支持 全文索引 支持 不支持 表空间的大小 较小 较大,约为2倍 常规使用操作: MYISAM 节约空间,速
阅读全文
摘要:创建数据库表 -- 目标:创建一个school数据库 -- 创建学生表(列,字段) 使用SQL创建 -- 学号int 登陆密码varchar(20) 姓名,性别varchar(2),出生日期(datetime),家庭住址,email -- 注意点,使用英文(),表的名称和字段尽量使用''括起来 --
阅读全文
摘要:操作数据库 操作数据库>操作数据库中的表>操作数据库中表的数据 创建数据库 CREATE DATABASE IF NOT EXISTS school; 删除数据库 drop database if exists school; 使用数据库 -- tab键上面的` 如果你的表名或者字段名是一个特殊字符
阅读全文
摘要:数据库基本命令行 mysql -uroot -p123456 -- 连接数据库 update mysql .user set authentication_string=password('123456')where user='root' and Host = 'localhost'; -- 修改
阅读全文
摘要:初识Mysql JavaEE:企业级Java开发 web 前端(页面:展示,数据!) 后台(连接点:连接数据库JDBC,连接前端(控制,控制视图跳转,和给前端传递数据)) 数据库(存数据,Txt,Excel,world) 学好数据库 操作系统,数据结构与算法! 离散数学,数字电路,体系结构,编译原理
阅读全文
摘要:jQuery jQuery,是JavaScript世界中使用最广泛的一个库。jQuery是一个 jquery-xxx.js 文件。 官网:https://jquery.com/ 使用jQuery只需要在页面的 head 引入jQuery文件即可 或者引入CDN jQuery : https://ww
阅读全文
摘要:操作表单 用JavaScript操作表单和操作DOM是类似的,因为表单本身也是DOM树 // <input type="text" id="email"> //这种方式可以应用于 text 、 password 、 hidden 以及 select var input = document.getE
阅读全文
摘要:操作DOM对象(重点) 由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。 获得DOM 第一种方法 // 返回ID为'test'的节点: var test = document.getElementById('test'); // 先定
阅读全文
摘要:操作BOM对象 BOM:浏览器对象模型 window对象不但充当全局作用域,而且表示浏览器窗口。 //window 对象有 innerWidth 和 innerHeight 属性,可以获取浏览器窗口的内部宽度和高度 console.log('window inner size: ' + window
阅读全文
摘要:原型(prototype) 在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。 JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。 var student = { name:'lisi', age:18, ru
阅读全文
摘要:内部对象 标准对象:number(数值,NaN),string(字符串),boolean(布尔值),object( Date var now = new Date(); //中国标准时间 console.log(now); now.getFullYear();//年 now.getMonth();/
阅读全文
摘要:方法 方法就是把函数放在对象里面,对象只有两个东西:属性和方法 var test = { name:'lisi', birth:2020, age:function(){ var now = new Date().getFullYear(); return now - this.birth; } }
阅读全文
摘要:函数 定义方式,以绝对值函数为例 一旦执行到return,代表函数结束,返回结果;如果没有执行return,函数执行完也会返回结果undefined //第一种 function abs(x){ if(x>=0){ return x; }else{ return -x; } } //第二种,匿名函数
阅读全文
摘要:Map和Set JavaScript的对象有个问题,键key必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。 为了解决这个问题,最新的ES6规范引入了新的数据类型 Map。 //如果用 Array 实现,需要两个 Array //给定一个名字,要查找对应的成绩,就先要在nam
阅读全文
摘要:流程控制 if判断 for循环 for…in var o = { name: 'Jack', age: 20, city: 'Beijing' }; //把一个对象的所有属性依次循环出来 for (var key in o) { if (o.hasOwnProperty(key)) { consol
阅读全文
摘要:对象 javascript 的键都是字符串,值可以是任意类型。 定义与获取属性 //定义一个对象 var 对象名 = { key: 'value', key: 'value', key: 'value' } //获取对象的属性 对象名.key 动态的添加和删除属性 //可通过直接赋值增加一个新的属性
阅读全文
摘要:数组 要取得 Array 的长度,直接访问 length 属性 var arr = [1, 2, 3.14, 'Hello', null, true]; console.log(arr.length); 直接给 Array 的 length 赋一个新的值会导致 Array 大小的变化 var arr
阅读全文
摘要:字符串 正常字符串用单引号或者双引号包裹 多行字符串 //最新的ES6标准新增了一种多行字符串的表示方法 //tab键上面那个、 var blm = ` hello world! ` 模板字符串 //要把多个字符串连接起来,可以用 + 号连接: let name = '小明'; let age =
阅读全文
摘要:strict模式 如果一个变量没有通过 var 申明就被使用,那么该变量就自动被申明为全局变量 使用 var 申明的变量则不是全局变量,,同名变量在不同的函数体内互不冲突。 在strict模式强制通过 var 申明变量,否则将导致运行错误 //严格检查模式 //启用strict模式的方法是在Java
阅读全文
摘要:基本语法 JavaScript的语法和Java语言类似,每个语句以 ; 结束,语句块用 {…} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text
阅读全文
摘要:什么是JavaScript? JavaScript 是 web 开发人员必须学习的 3 门语言中的一门: HTML 定义了网页的内容 CSS 描述了网页的布局 JavaScript 网页的行为 JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器
阅读全文
摘要:display和浮动 块级元素:独占一行 h1~h6 p div 列表 行内元素:不独占一行 span a img strong ... 行内元素 可以被包括在 块级元素中,反之,则不可以 block元素特点: 总是在新行上开始 高度、行高以及外边距和内边距都可以控制 宽度缺省是它的容器的100%,
阅读全文
摘要:盒子模型 什么是盒子模型 margin: 外边距; padding: 内边距; border: 边框 边框 边框的样式 边框的粗细 边框的颜色 <style> body{ /*body总有一个默认的外边距*/ margin:0px; } /*border: 粗细 样式 颜色*/ #d1{ width
阅读全文
摘要:美化网页元素 为什么要美化网页? 有效的传递页面信息 美化网页,才能吸引用户 凸显页面的主题 提高用户体验 span标签: 重点要突出的字,使用span套起来 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>
阅读全文
摘要:属性选择器(常用) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--内部样式--> <style> .demo a { float: left; display: bloc
阅读全文
摘要:结构伪类选择器 伪类:条件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--内部样式--> <!--避免使用,class,id选择器--> <style> /*ul的第一个
阅读全文
摘要:层次选择器 后代选择器:在某个元素后面 /*后代选择器*/ body p{ color: aqua; } 子选择器 body>h1{ color:chocolate; } 相邻兄弟选择器 /*相邻兄弟选择器:只有一个,相邻(向下)*/ .active + h2{ background: #c4fff
阅读全文
摘要:基本选择器 1、标签选择器:选择一类标签 标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--内部样式--> <style> /*标签选择器,会选择到页面上所有的这个标签
阅读全文
摘要:CSS的3种导入方式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--内部样式--> <style> h1 { color: aqua; } </style> <!--外部
阅读全文
摘要:CSS快速入门 第一种方式:直接在head部分的style标签内写css代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--规范,<style>可以编写css的代码,每一
阅读全文
摘要:CSS简单介绍 什么是CSS Cascading Style Sheet 层叠级联样式表 CSS:表现(美化网页) 字体,颜色,边距,高度,宽度, 背景图片,网页定位,网页浮动…. 发展史 CSS 1.0 CSS2.0 DIV(块) + CSS, HTML与CSS结构分离的思想,网页变得简单,SEO
阅读全文
摘要:表单 初识表单post和get提交 <form method="post" action="test01.html"> <!-- 表单提交的地址:网站或者请求处理的地址--> <p> <input type="text" name="username"/> <br> <input type="p
阅读全文
摘要:页面结构 <header>头部</header> <section>主体</section> <footer>底部</footer> iframe内联框架 <!-- name 与 target 相对应,就可以跳转--> <iframe src="" name="mainFrame" width="6
阅读全文
摘要:行内元素和块元素 块元素 无论内容多少,该元素独占一行 P、h1——h6、div…. 行内元素 内容撑开宽度,左右都是行内元素的可以排在一行 a、strong、em… 列表标签 有序列表 <!--有序列表(order list) 应用范围:试卷、问答--> <ol> <li>Java</li> <l
阅读全文
摘要:图像标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图像标签</title> </head> <body> <!-- <img 学习 src:图片地址 相对地址(推荐使用) ,绝对地址 ../ 代表上一
阅读全文
摘要:网页基本信息 <!--DOCTYPE:告诉浏览器,我们要使用什么规范--> <!DOCTYPE html> <!--head代表网页的头部--> <html lang="en"> <head> <!--meta描述型标签,它用来描述我们网站的一些信息--> <!--meta一般用来做SEO--> <
阅读全文
摘要:初识HTML HTML Hyper Text Markup Language(超文本标记语言) 何谓超文本:文字、图片、音频、视频、动画等 发展史:HTML 5 + CSS 3 HTML 5 优势: 世界知名浏览器都对其支持 市场的需求 跨平台 W3C标准 World Wide Web Consor
阅读全文
摘要:死锁 死锁测试,怎么排除死锁: public class Test01 { public static void main(String[] args) { String lockA = "lockA"; String lockB = "lockB"; new Thread(new MyThread
阅读全文
摘要:自旋锁 spinlock 自定义一个锁测试 public class SpinLockDemo { AtomicReference<Thread> atomicReference = new AtomicReference(); //加锁 public void myLock() { Thread
阅读全文
摘要:各种锁的理解 公平锁、非公平锁 公平锁: 非常公平, 不能够插队,必须先来后到! 非公平锁:非常不公平,可以插队 (默认都是非公平) public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean f
阅读全文
摘要:深入理解CAS 什么是 CAS 大厂你必须要深入研究底层!有所突破! public class Test01 { // CAS compareAndSet : 比较并交换! public static void main(String[] args) { AtomicInteger atomicIn
阅读全文
摘要:彻底玩转单例模式 饿汉式 public class Hungry { private byte[] data1 = new byte[1024*1024]; private byte[] data2 = new byte[1024*1024]; private byte[] data3 = new
阅读全文
摘要:指令重排 什么是 指令重排: 你写的程序,计算机并不是按照你写的那样去执行的。 源代码—>编译器优化的重排—> 指令并行也可能会重排—> 内存系统也会重排—-> 执行 处理器在进行指令重排的时候,考虑:数据之间的依赖性! int x = 1; // 1 int y = 2; // 2 x = x +
阅读全文
摘要:Volatile 保证可见性 public class Test01 { // 不加 volatile 程序就会死循环! // 加 volatile 可以保证可见性 private volatile static int num = 0; public static void main(String
阅读全文
摘要:JMM 请你谈谈你对 Volatile 的理解 Volatile 是 Java 虚拟机提供轻量级的同步机制 1、保证可见性 2、不保证原子性 3、禁止指令重排 什么是JMM JMM : Java内存模型,不存在的东西,概念!约定! 关于JMM的一些同步的约定: 1、线程解锁前,必须把共享变量立刻刷回
阅读全文
摘要:异步回调 Future 设计的初衷: 对将来的某个事件的结果进行建模 /** * 异步调用: CompletableFuture * 异步执行 * 成功回调 * 失败回调 */ public class Test01 { public static void main(String[] args)
阅读全文
摘要:ForkJoin 什么是 ForkJoin ForkJoin 在 JDK 1.7 , 并行执行任务!提高效率。大数据量! 大数据:Map Reduce (把大任务拆分为小任务) ForkJoin 特点:工作窃取 这个里面维护的都是双端队列,一端队列执行完可以窃取另一端队列的任务来帮忙执行 F
阅读全文
摘要:Stream流计算 什么是Stream流式计算 大数据:存储 + 计算 集合、MySQL 本质就是存储东西的; 计算都应该交给流来操作! /** * 题目要求:一分钟内完成此题,只能用一行代码实现! * 现在有5个用户!筛选: * 1、ID 必须是偶数 * 2、年龄必须大于23岁 * 3、用户名
阅读全文
摘要:四大函数式接口(必需掌握) lambda表达式、链式编程、函数式接口、Stream流式计算 很重要 函数式接口: 只有一个方法的接口 @FunctionalInterface public interface Runnable { public abstract void run(); } // 泛
阅读全文
摘要:线程池 线程池:三大方法、7大参数、4种拒绝策略 池化技术 程序的运行,本质:占用系统的资源! 优化资源的使用!=>池化技术 线程池、连接池、内存池、对象池///….. 创建、销毁。十分浪费资源 池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。 线程池的好处: 1、降低资源的消
阅读全文
摘要:SynchronousQueue 同步队列 没有容量, 进去一个元素,必须等待取出来之后,才能再往里面放一个元素! put、take public class Test01 { /** * 同步队列 * 和其他的BlockingQueue 不一样, SynchronousQueue 不存储元素 *
阅读全文
摘要:BlockingQueue的四组API 会抛出异常 public class Test01 { public static void main(String[] args) { test(); } public static void test() { //队列的大小:3 ArrayBlocking
阅读全文
摘要:阻塞队列 什么情况下我们会使用 阻塞队列:多线程并发处理,线程池! 四组API |方式 |抛出异常 | 有返回值,不抛出异常 | 阻塞 等待 | 超时等待
阅读全文
摘要:ReadWriteLock /** * 独占锁(写锁) * 一次只能被一个线程占有 * 共享锁(读锁) 多个线程可以同时占有 * * ReadWriteLock * 读-读 可以共存! * 读-写 不能共存! * 写-写 不能共存! */ public class Test04 { public s
阅读全文
摘要:常用的辅助类(必会) CountDownLatch 代码实现 public class Test04 { public static void main(String[] args) throws InterruptedException { // 总数是8,必须要执行任务的时候,再使用! Coun
阅读全文
摘要:Callable 1、可以有返回值 2、可以抛出异常 3、方法不同,run() / call() 代码测试 public class CallableTest { public static void main(String[] args) throws ExecutionException
阅读全文
摘要:ConcurrentHashMap Map不安全 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * The maximum capacity, used if a higher value is implicitl
阅读全文
摘要:CopyOnWriteArraySet Set不安全 多条线程执行set添加方法 //java.util.ConcurrentModificationException 并发修改异常 public class Test04 { public static void main(String[] arg
阅读全文
摘要:CopyOnWriteArrayList List 不安全 并发下的List //java.util.ConcurrentModificationException 并发修改异常 public class Test03 { public static void main(String[] args)
阅读全文
摘要:锁是什么?如何判断锁? 关于锁的8个问题 /* 1、标准情况下,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话 2、sendSms延迟4秒,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话 // synchronized 锁的对象是方法的调用者! // 两个方法用的是同一个
阅读全文
摘要:生产者和消费者问题 面试:单例模式,排序算法,生产者和消费者,死锁 Synchronized版 Synchronized 加锁 ; wait 等待; notify 唤醒; /** * 线程之间的週信题:生产者和消赏者问题!等待唤,知唤 * 线程交替执行 A B操作问一个变量num=0 * A 生产n
阅读全文
摘要:Lock锁 公平锁:十分公平:可以先来后到 非公平锁:十分不公平:可以插队 (默认) public class Test02 { public static void main(String[] args) { //并发;多线程操作同一个资源类,把资源类丢入线程 Ticket1 ticket = n
阅读全文
摘要:Synchronized public class Test01 { /*真正的多线程开发,公司中的开发。 线程就是一个单独的资源类,没有任何附属的操作! */ public static void main(String[] args) { //并发;多线程操作同一个资源类,把资源类丢入线程 Ti
阅读全文
摘要:JUC概述 java.util.concurrent 简称juc 线程和进程 进程:一个程序 在操作系统中运行的程序就是进程,比如你的QQ,微信,游戏,ide等等… 一个进程可以包含多个线程,至少包含一个 Java默认有几个线程? 2个, main线程,GC线程(垃圾回收) 线程: 一个进程可以有多
阅读全文
摘要:JMM(Java Memory Model)内存模型 JMM定义了线程工作内存和主内存之间的抽象关系,即Java内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存(可以与前面讲的处理器的高速缓存类比),线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作
阅读全文
摘要:GC介绍 JVM在进行GC时,并不是对这三个区域进行统一回收,大部分时候都是在新生区 新生区 幸存区:【from和to】 老年区 GC两种类:轻GC(普通垃圾回收)、重GC(全局垃圾回收) GC主要存在于方法区和堆中 面试题目 JVM的内存模型和分区【详细到每个区放什么】 堆里面的分区有哪些?新生区
阅读全文
摘要:JProfile工具分析OOM 项目中出现OOM故障,该如何排除? 找出第几行代码出错:内存快照分析工具: Eclipse : MAT JProfile MAT、JProfile的作用: 分析Dump内存文件,快速定位内存泄露。 获得堆中的数据。 获得大的对象 ..... 首先在IDEA安装插件JP
阅读全文

浙公网安备 33010602011771号