|
|
|
|
|
03 2023 档案
起别名的使用
摘要:mybatis对常见的数据类型起了别名:
阅读全文
properties标签的使用
摘要:jdbc.properties文件:
阅读全文
增删改查功能
摘要:注意:如果openSession()没有指定开启自动事务,那么增删改功能需要手动提交事务,如果openSession(true),则不需要再手动commit()
阅读全文
基本介绍-入门程序
摘要:student表 public class Student { private int id; private String name; private int age; public Student() { } public int getId() { return id; } public vo
阅读全文
使用Druid编写一个连接池工具类
摘要:/** * DataSource工具类 */ public class DataSourceUtils { //1、构造方法私有化 private DataSourceUtils() { } //2、声明所需的配置变量 private static DataSource dataSource; //
阅读全文
Druid连接池快速入门
摘要:import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java
阅读全文
归还连接——动态代理
摘要:存在问题:自己写的连接池技术不够完善,功能不够强大,只是做为一个理解原理的代码,实际开发项目时会使用第三方的工具。 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; im
阅读全文
什么是动态代理
摘要:import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Test { public static void ma
阅读全文
归还连接——适配器设计模式
摘要:import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DataSourceDemo {
阅读全文
归还连接——装饰设计模式
摘要:* 步骤* 1、实现Connection接口* 2、定义连接池对象和连接对象* 3、定义有参构造方法为连接池对象和连接对象赋值* 4、重写close方法,将连接对象归还到连接池中* 5、其他方法还是调用原来的方法* 缺点:实现Connection接口后需要实现的接口非常多,不够简洁 import j
阅读全文
自定义连接池及测试
摘要:public class DataSourceDemo { public static void main(String[] args) throws SQLException { //1、创建连接池对象 JdbcDemo jd = new JdbcDemo(); System.out.printl
阅读全文
悲观锁和乐观锁
摘要:乐观锁实现方式:加一个标记,执行更新操作时比较标记是否相同,不相同重新读取标记然后再次更新比较或者放弃这次更新。 乐观锁用到的地方不多,了解即可。
阅读全文
InnoDB排他锁
摘要:1、排他锁不能被其他事务加锁查询 测试:打开两个测试窗口(这里用的是Navicat工具),窗口1和窗口2开启事务,普通查询是可以的,但是排他锁和共享锁不兼容,排他锁和排他锁也不兼容 -- 第1步、窗口1开启事物 START TRANSACTION; -- 第2步、窗口2开启事物 START TRAN
阅读全文
InnoDB共享锁
摘要:1、 共享锁和共享数是相互兼容可以共存的,但是共享锁只能查询,不能修改,只有事物提交后才可以修改数据; 测试:打开两个测试窗口(这里用的是Navicat工具),窗口1和窗口2开启事务,此时两个窗口查询表数据都是可以成功的 -- 第1步、窗口1开启事物 START TRANSACTION; -- 第2
阅读全文
事务四大特征(ACID)
摘要:Atomicity:阿特米斯提 Consistency:肯se斯特嗯se Isolation:i斯哦雷新 Duration:第瑞信
阅读全文
事务的提交方式
摘要:分类: 1、自动提交(MySQL默认); 2、手动提交; 查看事务提交方式:0表示手动添加,1表示自动提交 SELECT @@AUTOCOMMIT; 修改事务提交方式: SET @@AUTOCOMMIT = 数字;
阅读全文
介绍
摘要:使用场景:记录表数据的增删改信息等,如下:
阅读全文
函数
摘要:注意:存储过程的语法在函数中使用方法是一样的。
阅读全文
存储过程语法--变量
摘要:-- 定义存储过程 DELIMITER $ CREATE PROCEDURE test1() BEGIN DECLARE num INT DEFAULT(10); -- 定义变量 SELECT num; -- 使用变量 END$ DELIMITER -- 调用存储过程 CALL test1(); -
阅读全文
存储过程的创建和调用
摘要:创建存储过程: 调用存储过程: 注意: SQL中,delimiter命令的作用是定义sql语句的分隔符 sql中默认的语句分隔符是分号(分号后面的当成下一条语句) 写存储过程或函数等语句块时,中间会包含分号,所以语句块不能成为一个整体,执行的时候就会报错 所以,执行这样的语句块时,先用delimit
阅读全文
内连接—inner join
摘要:SET FOREIGN_KEY_CHECKS=0; -- -- Table structure for categroy -- DROP TABLE IF EXISTS categroy; CREATE TABLE categroy ( id int(11) NOT NULL AUTO_INCREM
阅读全文
外键约束
摘要:CREATE TABLE USER ( id INT PRIMARY KEY AUTO_INCREMENT, -- id name VARCHAR(20) -- 姓名 ); INSERT INTO USER VALUES (NULL,'张三'),(NULL,'李四'); CREATE TABLE o
阅读全文
监听器的使用
摘要:使用方式: 1、类上添加注解 2、在xml文件中配置
阅读全文
Servlet规范中8个监听器的介绍
摘要:一、对象监听器: 1、ServletContextListener:用于监听ServletContext对象的创建和销毁 2、HttpSessionListener:用于监听HttpSession对象的创建和销毁 3、ServletRequestListener:用于监听ServletRequest
阅读全文
五种拦截行为
摘要:<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s
阅读全文
FIlterConfig
摘要:@Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("对象初始化。。。"); String filterName = filterConfig.getFi
阅读全文
基本使用
摘要://@WebFilter("/*") *表示拦截所有请求 @WebFilter("/servletDemo1") public class FilterDemo implements Filter { @Override public void init(FilterConfig filterCon
阅读全文
EL表达式获取数据及细节
摘要:EL表达式没有空指针异常、索引越界异常; EL表达式没有字符串的拼接; <%@ page import="www.hw.demo.Student" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashM
阅读全文
语法
摘要:<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>jsp</title> </head> <body> <%-- 这是注释 --%> <%-- Java代码块 --%> <%
阅读全文
定时刷新
摘要:参数:3秒后自动跳转到login.html
阅读全文
响应数据
摘要:响应字符数据: @WebServlet("/servletDemo3") public class HttpServletDemo3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpSe
阅读全文
请求域、请求转发、请求包含
摘要:public class HttpServletDemo1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletExc
阅读全文
利用反射将获取的数据封装成对象
摘要:public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
阅读全文
请求对象HttpServletRequest——获取请求参数信息
摘要:@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(req.getPara
阅读全文
请求对象HttpServletRequest——获取请求头信息的方法
摘要:@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String connection = req.getHea
阅读全文
请求对象HttpServletRequest——获取各种路径的方法
摘要:@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(req.getCont
阅读全文
自动注解@WebServlet详细说明
摘要:/* * @WebServlet自动注解:相当于在web.xml文件中配置了servlet */ @WebServlet("/servletDemo1") public class ServletDemo1 extends HttpServlet { @Override protected void
阅读全文
ServletContext常用方法2-共享数据
摘要:public class MyServlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException
阅读全文
ServletContext常用方法1-获取全局参数和虚拟目录路径以及绝对路径
摘要:public class ServletContextDemo extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletE
阅读全文
ServletConfig配置
摘要:<!-- 配置ServletContext --> <context-param> <param-name>globaEncoding</param-name> <param-value>UTF-8</param-value> </context-param>
阅读全文
常用方法
摘要:public class MyServlet extends HttpServlet { private ServletConfig config; // 定义一个config成员变量,利用servlet的初始化方法,对config赋值 @Override public void init(Serv
阅读全文
Servlet多路径映射使用场景
摘要:<servlet> <servlet-name>ServletDemo</servlet-name> <servlet-class>www.hw.web.ServletDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>Se
阅读全文
Servlet映射方式
摘要:<!-- servlet映射方式1 --> <servlet> <servlet-name>myServlet1</servlet-name> <servlet-class>www.hw.web.MyServlet1</servlet-class> </servlet> <servlet-mappi
阅读全文
Servlet——加载动态资源
摘要:执行流程: 1、浏览器访问 http://localhost:8080/webdemo/myServlet 2、通过浏览器访问的路径找到映射的servlet <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w
阅读全文
HTTP请求
摘要:1、请求的组成部分: a、请求行 b、请求头 c、请求空行 d、请求体 2、请求方式: a、get请求 b、post请求 注意:只有post请求方式才有请求体
阅读全文
tomcat配置虚拟主机
摘要:虚拟主机的作用:可以指定访问路径的名称 1、编辑tomcat目录下的conf目录下的server.xml,找到<Engine>标签 2、加入以下内容: <Host appBase="webapps" autoDeploy="true" name="www.webdemo.com" unpackWAR
阅读全文
配置tomcat虚拟目录
摘要:虚拟目录的作用:可以发布任意目录下的项目 1、编辑tomcat目录下的conf目录下的server.xml,找到<Host>标签 2、加入以下内容: <Context path="/webdemo" docBase="D:/myweb" /> path属性:访问资源的虚拟目录名称,地址栏访问的路径
阅读全文
作用及组成部分
摘要:作用: •用于设置和布局网页的一种计算机语音,告知浏览器如何渲染解析页面元素 组成: •选择器:选择HTML元素的方式,可以使用标签名、class属性值、id值等多种方式; •样式声明:用于给HTML的元素设置具体样式。格式:属性名:属性值;
阅读全文
元注解
摘要:* 元注解:注解类上的注解 * @Retention(RetentionPolicy.RUNTIME):Annotation这个注解的存活时间,不写默认是源码阶段,RUNTIME是运行时阶段,就是Class字节码文件 * @Target:表示该注解可以定义在成员变量、类、方法上 * @Inherit
阅读全文
自定义注解和使用
摘要:格式: public @interface 注解名 { public 属性类型 属性名 () default 默认值; //如果不想给默认值,default可以省略 } package anno; // 在使用注解的时候,如果注解里面的属性没有默认值,那么使用它的时候需要设置属性值,如果注解中只有v
阅读全文
枚举的常用方法
摘要:public class EnumDemo { public static void main(String[] args) { // 1、String name():获取枚举项名称 String name = Season.SPRING.name(); System.out.println(nam
阅读全文
定义格式和特点
摘要:定义格式:类名前加enum关键字 public enum Season { 枚举项1,枚举项2,枚举项3; } 枚举类特点 1、所有枚举类都是Enum的子类 2、枚举也是一个类,也可以定义成员变量 3、枚举类的第一行必须是枚举项 4、枚举类也可以有抽象方法,但是枚举项必须重写该方法 5、可以通过"枚
阅读全文
xml中引入schema
摘要:person.xml引入person.xsd示例: <?xml version="1.0" encoding="UTF-8" ?> <!-- xmlns:xsl末尾的-instance表示是被别的文件约束的 --> <!-- :xsl是为了区分本文件和约束文件的 --> <!-- xsi:schem
阅读全文
schema入门
摘要:定义一个schema的步骤: 1、创建一个文件,后缀名为 .xsd 2、定义文档声明 (因为schema文件也是一个xml文件,所以它的文档声明和xml一样:<?xml version="1.0" encoding="UTF-8" ?>) 3、定义根标签必须是<schema></schema> 4、
阅读全文
DTD语法规则
摘要:元素的定义: 属性的定义: <?xml version="1.0" encoding="UTF-8" ?> <!-- 第三种引入约束的方式就是用网络中的dtd文件引入约束 --> <!DOCTYPE students PUBLIC "dtd文件的名称" "dtd文档的URL"> <students>
阅读全文
xml的约束——dtd入门
摘要:1、在xml文件中引入DTD约束<!DOCTYPE ROOT[]> 2、DTD文件中添加元素定义 <!ELEMENT element-name EMPTY> (空元素) <!ELEMENT element-name (#PCDATA)> (文本元素) <!ELEMENT element-name (
阅读全文
DOM4J解析xml代码实现
摘要:1、DOM4J是第三方提供的工具类,使用前需要导入DOM4J的jar包 下载地址:https://dom4j.github.io public class Dom4jDemo { public static void main(String[] args) throws DocumentExcept
阅读全文
xml的解析——DOM解析
摘要:xml解析:就是从xml获取数据 DOM(Document Object Model)文档对象模型:就是把文档的各个组成部分看做对应的对象。 解析时会把整个xml文件加载到内存,在内存中形成一个树形结构,再获取对应的值。 常见的解析工具:JAXP、JDOM、DOM4J、pull(主要应用安卓手机端)
阅读全文
xml语法规则
摘要:<?xml version="1.0" encoding="UTF-8" ?> <!-- 这里写的是注释的内容 --> <students> <student id="1"> <name>zhangsan</name> <age>23</age> <info>学生信息<![CDATA[这里的都是普通
阅读全文
利用类加载器和反射动态的获取信息以及动态的调用方法
摘要:/* * 利用类加载器和反射动态的获取信息以及动态的调用方法 */ public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityEx
阅读全文
运行反射获取的method方法
摘要:public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalAr
阅读全文
反射获取成员方法method
摘要:public class MethodDemo { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, Instantiatio
阅读全文
用反射获取的Field对象赋值或取值
摘要:public class FieldDemo { public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, NoSuchMethodEx
阅读全文
反射获取成员变量Field
摘要:/* * 反射获取成员变量 */ public class FieldDemo { public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityExceptio
阅读全文
利用反射获取的constructor对象创建对应的类的对象
摘要:public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessE
阅读全文
反射获取构造方法constructor
摘要:public class ConstructorDemo { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException { // 获取C
阅读全文
获取Class对象
摘要:public class ReflectDemo { public static void main(String[] args) throws ClassNotFoundException { // 获取Class对象的三种方式 // 1、当类文件没有加载到内存中,还是源代码阶段时,可以用Clas
阅读全文
类加载器常用方法
摘要:public class ClassLoaderDemo { public static void main(String[] args) throws IOException { // static getSystemClassLoader():获取系统类加载器 ClassLoader syste
阅读全文
类加载器分类
摘要:注意:加载器Java已经帮我们实现了,不需要写额外的代码去实现。我们写的类大部分都是通过系统类加载器加载的。
阅读全文
类加载的过程
摘要:1、加载 •通过一个类的全限定名来获取定义此类的二进制字节流 >通过包名+类名,获取这个类,准备用流进行传输 •将这个字节流所代表的静态存储结构转化为运行时数据结构 >将这个类加载到内存中 •在内存中生成一个代表这个类的java.lang.Class对象 >加载完毕创建一个class对象 2、链接
阅读全文
类加载的时机
摘要:1、创建类的实例(对象) 2、调用类的静态方法 3、访问类或者接口的静态变量,或者为该静态变量赋值 4、使用反射强制创建一个类或接口对于的java.lang.Class对象 5、初始化某个类的子类 6、直接使用Java.exe命令运行某个类 总结:用到就加载,不用不加载
阅读全文
实现客户端上传文件,服务器接收并永久化存储
摘要:public class ClientDemo { public static void main(String[] args) throws IOException { // 客户端将本地文件上传到服务器,并接收服务器的反馈 Socket sc = new Socket("127.0.0.1",
阅读全文
TCP_客户端与服务器的连接代码实现
摘要:注意细节: 1、accept()方法是阻塞的,它的作用是等待客户端连接,如果连接成功会返回一个socket对象 2、客户端创建对象并连接服务器,此时是通过三次握手协议保证跟服务器之间的连接 3、对于客户端,它是往外写数据,所以是输出流 4、read()方法也是阻塞的 5、在关流的时候,会有一个往服务
阅读全文
UDP协议类_DatagramSocket——广播代码实现
摘要:广播地址:255.255.255.255 public class ClientDemo { public static void main(String[] args) throws IOException { // 广播 DatagramSocket客户端发送数据的步骤 // 1:创建Datag
阅读全文
UDP协议类_DatagramSocket——组播代码实现
摘要:组播地址:224.0.0.0--239.225.225.225,其中224.0.0.0--224.0.0.225为预留的组播地址,我们一般使用224.0.1.0及其之后的地址 public class ClientDemo { public static void main(String[] arg
阅读全文
UDP三种通讯方式
摘要:单播:在局域网中,一个发送端通过路由器将数据发送给局域网中一个接收端 组播:在局域网中,一个发送端通过路由器将数据发送给局域网中一组接收端 广播:在局域网中,一个发送端通过路由器将数据发送给局域网中所有接收端
阅读全文
UDP协议类_DatagramSocket——单播代码实现
摘要:public class ClientDemo { public static void main(String[] args) throws IOException { // DatagramSocket客户端发送数据的步骤 // 1:创建DatagramSocket客户端对象 DatagramS
阅读全文
协议
摘要:协议:计算机网络中,连接和通信的规则被称为网络通信协议。 UDP协议: 用户数据报协议(User Datagram Protocol) UDP是面向无连接通信协议。速度快,有大小限制,一次最多64Kb,数据不安全,易丢失。一般会在传输音视频、普通数据时使用。 面向无连接:发送数据的时候不管连接是否建
阅读全文
InetAddress
摘要:为了方便我们对Ip地址的获取和操作,Java提供了InetAddress供我们使用。 InetAddress:此类表示Internet协议(ip)地址。 public static void main(String[] args) throws UnknownHostException { // g
阅读全文
端口
摘要:端口:应用程序在设备中的唯一标识; 端口号:用两个字节表示的整数,它的取值范围是0-65535。其中,0-1023之间的端口用于一些知名的网络服务或者应用,我们自己使用1024以上端口。 注意:一个端口号只能被一个应用程序使用。
阅读全文
IP地址
摘要:IP:全称“互联网协议地址”,也称IP地址。是分配给上网设备的数字标签。常见的IP分类为:ipv4和ipv6。 常用命令: ipconfig(查看本机IP地址) ping IP地址(检查网络是否通畅) ipv4: ipv6:由于互联网极速发展,IP地址需求越来越大,而Ipv4模式下的地址值是有限的(
阅读全文
网络编程三要素
摘要:网络编程:就是让两台计算机进行数据交互 IP地址 •设备在网络中的地址,是唯一的标识 端口 •应用程序在设备中唯一的标识 协议 •数据在网络中传输的规则,常见协议有UDP和TCP协议
阅读全文
Semaphore__控制访问特定资源的线程数量
摘要:使用场景:可以控制访问特定资源的线程数量。 示例:有一条窄道,一次只能允许通行两辆车,通行前由管理员发通行证,通行后归还通行证。 public class SemaphoreDemo { public static void main(String[] args) { MyRunnable mr =
阅读全文
CountDownLatch__让某一条线程等待其它线程执行完毕后再执行
摘要:使用场景:让某一条线程等待其它线程执行完毕后再执行。 CountDownLatch cdl = new CountDownLatch(3):参数是等待线程的数量,并定义了一个计时器; await():让线程等待,当计时器为0时,唤醒线程; countDown():线程执行完毕时调用,计时器会减1;
阅读全文
HashMap、Hashtable、ConcurrentHashMap线程安全问题
摘要:public class HashMapDemo { public static void main(String[] args) throws InterruptedException { // HashMap是线程不安全的 // Hashtable是线程安全的,采用悲观锁synchronized
阅读全文
|
|