目录一、软件资源二、放置settings.xml文件三、创建项目四、引入依赖 五、创建目录 六、编写代码 写在前面:☞WhatisServlet? Servlet其实是一种实现动态页面的技术。是一组由Tomcat提供给程序员的API(应用程序编程接口),帮助程序员高效开发一个webapp。 静态页面:也就是内容始终固定的页面。即使用户不同、时间不同、输入的参数不同,页面内容也不会发生变化。 动态页面指:的就是用户不同、时间不同、输入的参数不同,页面内容会发生变化。 构建动态页面的技术有很多,每种语言都有一些相关的库或者框架。Serv
目录一、文件概念 (1)文件定义与组成(2)文件的树形结构组织和目录(3)文件路径(4)文件分类(5)文件操作二、文件操作File类(1)File类中的属性(2)File类的构造方法(3)File类的方法1.get系列用法代码实例2.普通文件的创建3.普通文件的删除4.deleteOnExit的现象5.目录的创建6.文件重命名三、文件操作InputStream(1)InputStream概述(2)FileInputStream概述1.FileInputStream构造方法2.利用Scanner进行读取四、文件操作OutputStream (1)OutputStream概述(2)FileOutp
目录一、文件概念 (1)文件定义与组成(2)文件的树形结构组织和目录(3)文件路径(4)文件分类(5)文件操作二、文件操作File类(1)File类中的属性(2)File类的构造方法(3)File类的方法1.get系列用法代码实例2.普通文件的创建3.普通文件的删除4.deleteOnExit的现象5.目录的创建6.文件重命名三、文件操作InputStream(1)InputStream概述(2)FileInputStream概述1.FileInputStream构造方法2.利用Scanner进行读取四、文件操作OutputStream (1)OutputStream概述(2)FileOutp
目录 一、synchronized的特性(1)互斥(2)刷新内存(3)可重入二、synchronized的使用(1)修饰普通方法(2)修饰静态方法(3)修饰代码块三、synchronized的锁机制(1)基本特点(2)加锁工作过程1.偏向锁2.轻量级锁3.重量级锁(3)优化操作1.锁消除2.锁粗化四、synchronized和volatile的区别 一、synchronized的特性(1)互斥 synchronized通过互斥达到原子性(线程安全的四大特性之一) synchronized会起到互斥效果,某个线程执行到某个对象的synchronized中时,其他线程如果也
目录 一、synchronized的特性(1)互斥(2)刷新内存(3)可重入二、synchronized的使用(1)修饰普通方法(2)修饰静态方法(3)修饰代码块三、synchronized的锁机制(1)基本特点(2)加锁工作过程1.偏向锁2.轻量级锁3.重量级锁(3)优化操作1.锁消除2.锁粗化四、synchronized和volatile的区别 一、synchronized的特性(1)互斥 synchronized通过互斥达到原子性(线程安全的四大特性之一) synchronized会起到互斥效果,某个线程执行到某个对象的synchronized中时,其他线程如果也
目录🍊一.观察多线程下n++和n--操作🍉二.线程安全概念的引入🫐三.线程不安全的原因🌴1.原子性🌾2.可见性🌵3.有序性4.线程不安全的原因总结 🍒四.解决线程不安全问题🌿1.synchronized关键字🍂1.1语法格式🍂1.2sychronized的作用🍂1.3对n++,n--代码进行修改 🌴2.volatile关键字🌳3.Lock(Javaapi提供的一个锁,后续在锁策略中介绍) 🍊一.观察多线程下n++和n--操作我们目前所知当一个变量n==0,n++了1000次并且 n--了1000次,我们的预期结果为0,但是当两个线程分别执行++和--操作时最后的结果是否为0呢?看这样一段代码:
目录🍊一.观察多线程下n++和n--操作🍉二.线程安全概念的引入🫐三.线程不安全的原因🌴1.原子性🌾2.可见性🌵3.有序性4.线程不安全的原因总结 🍒四.解决线程不安全问题🌿1.synchronized关键字🍂1.1语法格式🍂1.2sychronized的作用🍂1.3对n++,n--代码进行修改 🌴2.volatile关键字🌳3.Lock(Javaapi提供的一个锁,后续在锁策略中介绍) 🍊一.观察多线程下n++和n--操作我们目前所知当一个变量n==0,n++了1000次并且 n--了1000次,我们的预期结果为0,但是当两个线程分别执行++和--操作时最后的结果是否为0呢?看这样一段代码:
1.线程安全的概念如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的.为啥会出现线程安全问题?本质原因:线程在系统中的调度是无序的/随机的(抢占式执行).2.开始说明先看个线程不安全的例子://线程不安全classCounter{privateintcount=100000;privateObjectlocker=newObject();publicvoidadd(){synchronized(locker){count++;}}publicvoidsub(){count--;}publicintget(){returncount;}}publi
1.线程安全的概念如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的.为啥会出现线程安全问题?本质原因:线程在系统中的调度是无序的/随机的(抢占式执行).2.开始说明先看个线程不安全的例子://线程不安全classCounter{privateintcount=100000;privateObjectlocker=newObject();publicvoidadd(){synchronized(locker){count++;}}publicvoidsub(){count--;}publicintget(){returncount;}}publi
目录1.题目 2.文件目录 3.引入依赖——pom.xml4.配置文件——myBatis-config.xml5.映射文件——EmployeeMapper.xml6.java类——Employee.java7.接口类——EmployeeMapper.java8.测试类——MyBatisTest.java(1)根据id查询员工信息(2)新增员工信息(3)根据id更新员工信息(4)根据id删除员工信息9.数据库运行截图(1)根据id查询员工信息(2)新增员工信息(3)根据id更新员工信息(4)根据id删除员工信息1.题目 在数据库创建一个employee表,在MyBatis环境下完成一个员工管理系