自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 ServletContext应用

ServletContext应用获取初始化参数可以在web.xml下配置初始化参数使用context-param里边的param-name为键,param-value为值,public class ServletDemo04 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOE

2021-07-31 18:34:07 117

原创 Java多态自我理解

Java多态有多种表现形式普通类的多态抽象类的多态接口的多态但是必须要存在继承关系有自上而下转型或者自下而上转型,而自下而上转型是自动的比如我们创建一个父亲类然后两个子类,一个儿子类一个女儿类,儿子类和女儿类同时继承的父类的eat方法,而儿子类存在自己单独的跑步方法。package ManyT;public class Test { public static void main(String[] args) { Father father = ne

2021-07-22 16:52:43 100

原创 MySQL5.创建数据库表

目标创建一个school数据库创建学生表(列,字段)使用sql创建学生学号int主键,姓名,密码,性别,生日,地址,电子邮件注意点使用英文(),表的名称尽量使用``括起来auto_increment字符串的使用用’ '括起来所有的语句后面加,(英文),最后一个不加primary key 主键,一般一个表只有一个唯一主键create table student( `id` int(4) not null auto_increment comment '学号', `name` varc

2021-07-14 21:42:22 227

原创 MySQL4.数据库的字段属性(重点)

Unsigned无符号整数声明了该列不能为负数zerofill0填充的不足的位数,使用0来填充,int(3), 5–005自增通常理解为自增,自动在上一条记录的基础上+1(默认为1)通常用来设计唯一的主键 - index,必须是整数类型非空假设设置为not null,如果不给他赋值,就会报错null,如果不填写值默认就是null默认设置默认的值!sex,默认的值为 男 ,如果不设置该列的值,则会有默认的值...

2021-07-14 18:50:17 79

原创 MySQL3.列的数据类型

数值- tinyint 十分小的数据 1个字节- smallint 较小的数据 2个字节- mediumint 中等大小的数据 3个字节- int 标准的整数 4个字节- bigint 较大的数据 8个字节字符串char 固定大小的字符串 0-255varchar 可变长字符串 0-65535tinytext 微型文本 2^-1text 文本串 2^16-1时间日期data YYYY-MM-DD.

2021-07-13 21:42:55 48

原创 MySQL2.操作数据库语句(了解)

创建数据库create database [if not exists] weastos[ ]符号代表选写 exists意思为存在删除数据库drop database [if exists] weastos使用数据库use `school` ``这个符号如果你的表名或者字段名字是一个特殊字符就要加上查看数据库show database --查看所有数据库...

2021-07-13 19:21:28 57

原创 MySQL1.基本的命令行操作

mysql -u账号 -p密码 --连接数据库update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost'; --修改用户密码flush privileges --刷新权限--所有语句都要用;结尾 show databases; --查看所有数据库 use school; --切换数据库 use 数据库名字 show tables; --查看数

2021-07-13 16:24:11 48

原创 多线程详解p20、线程池

使用线程池背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具好处:- 提高响应速度(减少创建新线程的时间)- 降低资源消耗(重复利用线程池中线程,不需要每次都创建)- 便于线程管理(…)corePoolSize:线程池的大小maximumPoolSize:最大线程数keepAliveTime:线程没有任务时最多保持多长时间后会

2021-07-13 09:44:39 63

原创 多线程详解p19、生产者消费者问题

线程通信应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库.消费者将仓库中产品取走消费.如果仓库中没有产品,则生产者将产品放入仓库﹐否则停止生产并等待,直到仓库中的产品被消费者取走为止.如果仓库中放有产品﹐则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止.管程法package gaoji;//:生产者消费者模型--- --- 利用缓冲区解决:管程法//生产者,消费者,产品,缓冲区public class TestPC

2021-07-12 22:09:36 57

原创 多线程详解p18、Lock锁

Lock锁从JDK5.0开始,Java提供了更强大的线程同步机制—通过显式定义同步锁对象来实现同步,同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程共享资源进行访问的工具,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问空虚资源之前应先获得Lock对象ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock

2021-07-12 12:17:16 100

原创 多线程详解p17、死锁

package syn;public class DeadLoad { public static void main(String[] args) { MyGirl xx = new MyGirl(0, "xx"); MyGirl zz = new MyGirl(1, "ZZ"); zz.start(); xx.start(); }}class JZ{}class FD{}class MyGirl exte

2021-07-11 19:07:59 68

原创 多线程详解p16、不安全案例

不安全案例1三人同时抢10张火车票package syn;public class BuyTicket { public static void main(String[] args) { My my = new My(); new Thread(my,"aa").start(); new Thread(my,"ab").start(); new Thread(my,"ac").start(); }}class M

2021-07-11 08:38:52 63

原创 多线程详解p15、守护线程

守护线程(deamon)线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕如.后台记录操作日志,监控内存,垃圾回收等待…package Thread;public class TestDaemon { public static void main(String[] args) { YYou yYou = new YYou(); God god = new God(); Thread thread

2021-07-10 11:04:52 61

原创 多线程详解p14、线程的优先级

线程优先级线程优先级的设定并不是你给他设置越高他越先调度而是你给他设置越高他的权重越大,最后调度顺序还是看cpu心情,所以优先级低只是意味着获取调度的概率低,而不是优先级低就比优先级高的后调用,这个都是看cpu调度的只是改变一个权重而已package Thread;public class TestPriority implements Runnable{ @Override public void run() { System.out.println(Thread.

2021-07-10 09:02:59 78

原创 多线程详解p14、观测线程状态

线程状态观测线程状态。线程可以处于以下状态之一NEW尚未启动的线程处于此状态RUNNABLE在Java虚拟机中执行的线程处于次状态BLOCKED被阻塞等待监视器锁定的线程处于次状态WAITING正在等待另一个线程执行特定动作的线程处于次状态TIMED_WAITING正在等待另一个线程执行动作达到指定等待时间的线程处于此状态TERMINATED已退出的线程处于此状态一个线程可以在给定时间点处于一个状态,这些状态是不反应任何操作系统状态的虚拟机状态package Threa

2021-07-10 08:41:40 170

原创 多线程详解p13、join线程强制执行

Join其实很好理解就是线程没有执行这个方法是,子线程和主线程由cpu随机调度,但是一旦执行这个方法,就先将子线程执行完之后才能对主线程进行执行,如果此时主线程正在执行那么先停止主线程去执行子线程,子线程执行完之后主线程接着执行package Thread;public class TestJoin implements Runnable{ @Override public void run() { for (int i = 0; i < 200; i++) {

2021-07-06 21:10:08 52

原创 2021-07-06多线程详解p12、yield线程礼让

线程礼让线程礼让,让当前正在执行的线程暂停,但不阻塞将线程从运行状态转为就绪状态让cpu重新调度,礼让不一定成功!看cpu心情public class TestYield { public static void main(String[] args) { thread thread = new thread(); new Thread(thread,"xiaoming").start(); new Thread(thread,"xiaoh

2021-07-06 20:44:04 59

原创 2021-07-04多线程详解p11、sleep线程休眠

线程休眠sleep(时间)指定当前线程阻塞的毫秒数sleep存在异常InterruptedExceptionsleep时间达到后线程进入就绪状态sleep可以模拟网络延时,倒计时等每一个对象都有一个锁,sleep不会释放锁public class TestSleep { public static void main(String[] args) { timeDown(); } public static void timeDown(){

2021-07-05 20:49:42 82

原创 2021-07-04多线程详解p10、线程停止

线程停止线程状态Thread t = new Thread();线程对象一旦创建了就进入到了新生状态当调用start()方法,线程立即进入就绪状态蛋并不意味着立即调度执行(此时为就绪状态)就绪状态经过cpu的调度才能真正进入运行状态(运行状态才真正执行线程体的代码块)阻塞状态(当调用sleep,wait或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞事件解除后重新进入就绪状态,等待cpu调度执行)dead(线程中断或者结束,一旦进入死亡状态,就不能再次启动)线程停止实例

2021-07-04 22:12:19 80

原创 2021-07-03多线程详解p9、静态代理模式

静态代理所谓静态代理模式,简单来说就是一般你需要用你的王者号登陆打排位上分以及领奖励,但是静态代理就是,你把你的号给了一个代练,代练知道你的账号密码然后给你打排位领奖励就是这个意思写一个简单实例public class Staticwzry { public static void main(String[] args) { Boss you = new Boss(); //把真实对象传给代理 BlackSlaves blackSla

2021-07-03 23:09:44 72

原创 2021-07-03多线程详解p8、Lambda表达式

Lambda表达式λ希腊字母表排名第十一的字母英文名字为Lambda避免匿名内部类定义过多其实质属于函数式编程的概念– 理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在– 函数式接口的定义任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口对于一个函数式接口我们可以通过lambda表达式来创建该接口的对象...

2021-07-03 21:22:29 48

原创 2021-07-02多线程详解p7、龟兔赛跑

模拟龟兔赛跑思路首先需要知道跑道有多长使用for循环实现然后要有一个方法判断比赛是否结束,这里我们就用了一个gameOver方法,将兔子或者乌龟跑的步数传进该方法进行判断,为了严谨要先判断是否有胜者如果有的话退出该方法,没有接着判断判断步数是否大于100如果大于说明已经到终点了使用Thread.currentThread().getName()将线程名字给winner然后说明胜利者是谁for循环里边有一个布尔值接收gameOver函数返回值,判断是否比赛结束。public class Race

2021-07-02 22:21:35 65

原创 2021-07-02多线程详解p6初识并发问题

初识并发问题模拟抢票public class TestThread4 implements Runnable{ private int ticketNum = 100; @Override public void run() { while (true){ if(ticketNum<=0){ break; } System.out.println(Th

2021-07-02 21:34:48 71

原创 2021-07-02多线程详解p5、Runnable接口

Runnable首先定义一个类实现Runnable接口,实现run方法,编写线程执行体,创建对象,调用start()方法。一般由于Java单继承的局限性都是使用Runnable对象public class TestThred3 implements Runnable { @Override public void run() { for (int i = 0; i < 50; i++) { System.out.println("学习了"+i

2021-07-02 20:40:20 53

原创 2021-07-01多线程详解p4网图下载

首先导入commons io.jar包import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.URL;public class TestThread2 extends Thread{ //练习Thread,实现多线程同步下载图片 private String url;//网络图片地址 private String name

2021-07-01 21:42:56 63

原创 2021-07-01多线程详解p3继承Thread类

**结果会发现main函数和run,两条线程不是顺序执行的,是在很快的交替执行,并不是真正的并行**

2021-07-01 20:51:48 41

原创 2021-07-01多线程详解p2线程、进程、多线程

普通方法调用和多线程Process与Thread说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念而进程则是执行程序的一次执行过程,他是一个动态的概念,是系统资源分配的单位通常在一个进程中科院包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义,线程是CPU调度和执行的单位注意:很多多线程都是模拟出来的,真正的多线程是指拥有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一

2021-07-01 20:38:22 69

原创 动态SQL介绍以及环境搭建

动态SQL介绍动态SQL指的是根据不同的查询条件,生成不同的sql语句官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你 就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意 去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语 句中的强大的动态 SQL 语言

2020-08-19 22:46:33 147

原创 MyBatis多对一处理

按照查询嵌套处理前提:将Student,Teacher实体类根据数据库创建好,接口还有所对应的xml文件1、然后在StudentMapper接口增加方法//获取所有学生及对应老师的信息 public List<Student> getStudents();2、编写对应的Mapper文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DT

2020-08-19 15:00:10 84

原创 使用注解开发

1、面向接口编程之前学过面向对象编程,也学过接口,但是真正的开发中,很多时候我们会选择面向借口编程根本原因:解耦,可扩展,提高复用,分层开发中,上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性更好在一个面向对象的系统中,系统的各种功能是有许许多多的不同对象协作完成的,在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的谢钻关系则成为系统设计的关键。小到不同类之间的通信,大到模块之间的交互,在系统设计之初都是要着重考虑的,这样是系统设计的

2020-08-15 22:18:09 108

原创 分页的实现

1、日志工厂如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题。 对于以往的开发过程,我们会经常使用到debug模式来调节,跟踪我们的代码执行过程。但是现在使用 Mybatis是基于接口,配置文件的源代码执行过程。因此,我们必须选择日志工具来作为我们开发,调 节程序的工具。Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:SLF4JApache Commons LoggingLog4j2Log4jJDK logging具体选择哪个日志实现工

2020-08-15 19:48:48 114

原创 MyBatis ResultMap

ResultMap要解决的问题,属性名和字段名不一致1、查询为null的问题查看之前数据库的字段名Java中的实体类设计public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样! //构造 //set/get //toString() }接口//根据id查询用户 U

2020-08-15 11:43:02 177

原创 MyBatis配置解析

1、核心配置文件mybatis-config.xml 系统核心配置文件MyBatis 的配置文件包含了会深深影响 MyBatis行为的设置和属性信息。能配置的内容如下:configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件)

2020-08-12 22:50:21 84

原创 MyBatisCRUD操作

1、namespace将上边案例中的UserMapper接口改名为UserDao将UserMapper.xml中的namespace改为UserDao的路径再次测试结论:配置文件中的namespace中的名称为对应Mapper接口或者Dao接口的完整包,必须一致!2、selectselect标签是mybatis中最常用的标签之一select语言有很多属性可以详细适配每一条sql语句id命名空间中唯一的标识符,接口中的方法与映射文件中的sql语句id一一对应parameterTyp

2020-08-11 22:18:14 91

原创 MyBatis第一个程序

思路流程:搭建环境–>导入Mybatis–>编写代码–>测试1、搭建实验数据库CREATE DATABASE `mybatis`;USE `mybatis`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(20) NOT NULL,`name` varchar(30) DEFAULT NULL, `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) )

2020-08-11 17:36:53 85

原创 Mybatis框架

环境说明:jdk8+Mysql 5.7.19maven-3.6.0IDEA学习前需要掌握JDBCMySQLJava基础MavenJunitMybatis简介1. 1、什么是MybatisMybatis是一款优秀的持久层框架Mybatis避免了几乎所有的JDBC代码和手动蛇者参数以及获取结果集的过程Mybatis可以使用简单的xml或者注解来配置和映射原生信息,将接口和Java的实体类【Plain Old Java Object,普通的Java对象 】映射成数据库中的记录

2020-08-11 12:43:43 108

原创 SMBMS项目搭建

项目搭建搭建一个Mvaen web项目配置Tomcat测试项目是否能够跑起来导入项目中会遇到的jar包jsp,Servlet驱动,jstl,stand创建项目包结构编写实体类:ORM映射:表-类映射编写基础公共类:1. 数据库配置文件driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/smbms?useUnciode=true&characterEncoding=utf8 user

2020-08-08 12:47:46 316

原创 PreparedStatement对象

PreperedStatement是Statement的子类,它的实例对象可以通过调用 Connection.preparedStatement()方法获得,相对于Statement对象而言:PreperedStatement可以避 免SQL注入的问题。Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。并且PreperedStatement对于 sql中的参数,允许使用占位符的形式进行替换,简化sql语

2020-08-06 17:22:29 502

原创 statement对象

1、新建一个 lesson02 的包2、在src目录下创建一个db.properties文件3、在lesson02 下新建一个 utils 包,新建一个类 JdbcUtilspublic class JdbcUtils { private static String driver=null; private static String url=null; private static String user=null; private static String pa

2020-08-05 16:01:11 92

原创 JDBC对象说明

DriverManagerJDBC程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个api的常用方法:DriverManager.registerDriver(new Dirver())DriverManager.getConnection(url, user, password)注意在实际开发中不推荐采用registerDriver方法注册驱动,原因有二:查看Driver的源代码可以看到,如果采用此种方法,会导致驱动程序注册两次,也就是在内存中会有两个Driver对

2020-08-04 21:30:52 162

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除