
定义与实践
明眸.gr
这个作者很懒,什么都没留下…
展开
-
酒旅项目总结
1.架构图流程梳理1. 用户发起请求进行DNS解析,首先经过WAF 、CDN 、防火墙。1.DNS1.网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,但IP地址是一串32位的数 字,DNS可以帮助我们解析DNS就是域名系统,是用于实现域名和IP地址相互映射的一 个分布式数据库。2. WAF1.WAF的全称是(Web Application Firewall)即Web应用防火墙,简称WAF。2.国际上公认的一种说法是:Web应用防火墙是通过执行一系列针对HTTP/原创 2022-05-03 17:07:48 · 1912 阅读 · 0 评论 -
Apache Dubbo
一、简介Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC框架,可以和Spring框架无缝集成,2018年阿里巴巴把这个框架捐献给了apache基金会。RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。需要原创 2021-12-20 14:54:46 · 173 阅读 · 0 评论 -
JDBC-多表关系之多对一
bean包Student类package bean;//多方public class Student { private int stuId; private String stuName; private int teacherId; //多对一:是在多方创建一个存储一方数据的对象 private Teacher teacher; public Teacher getTeacher() { return teacher;原创 2021-05-19 13:28:20 · 92 阅读 · 0 评论 -
JDBC-多表操作之一对多
bean包一方:Teacher类package bean;import java.util.List;//一方public class Teacher { private int tid; private String tname; //在一方创建存储多方数据的集合 private List<Student> studentList; public int getTid() { return tid; }原创 2021-05-19 00:24:13 · 276 阅读 · 1 评论 -
SQL注入--(错误的关键词也能执行成功) --(预处理 PreparedStatement 修正)--02 --ResultSet日常需求
/**对比statement和PreparedStatement;(1)statement属于状态通道,PreparedStatement属于预状态通道(2)预状态通道会先编译sql语句,再去执行,比statement执行效率高(3)预状态通道支持占位符?,给占位符赋值的时候,位置从1开始(4)预状态通道可以防止sql注入,原因:预状态通道在处理值的时候以字符串的方式处理*/import java.sql.*;public class Demo1 { public static原创 2021-05-17 22:57:24 · 148 阅读 · 0 评论 -
SQL注入--(错误的关键词也能执行成功)--01
import java.sql.*;public class Demo1 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { //1.加载驱动 Class.forNa原创 2021-05-17 22:35:26 · 105 阅读 · 0 评论 -
JDBC操作步骤2 -Update(改)、delete(删除)
相比于1,删除了①ResultSet resultSet = null;②变动区域③if(resultSet !=null){ resultSet.close(); }import java.sql.*;public class Demo1 { public static void main(String[] args) { Connection connection = null; Statement statement = null;原创 2021-05-17 18:30:39 · 310 阅读 · 0 评论 -
JDBC操作步骤1 -查询
mysqladvanced为数据库,salary为表名import java.sql.*;public class Demo1 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { //1.原创 2021-05-17 18:11:37 · 115 阅读 · 0 评论 -
核心类库03-多线程05-创建多线程的方式二:实现Runnable接口
/***创建多线程的方式二:实现Runnable接口1.创建一个实现了Runnable接口的类2.实现类去实现Runnable中的抽象方法:run()3.创建实现类的对象4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象5.通过Thread类的对象调用start()比较创建线程的两种方式:开发中:优先选择:实现Runnable接口的方式原因:1.实现的方式没有类的单继承性的局限性 2.实现的方式更适合来处理多个线程有共享数据的情况联系:pu原创 2021-04-26 16:50:04 · 204 阅读 · 0 评论 -
核心类库03-多线程05-多线程的创建-方式一:继承于Thread类
/**多线程的创建,方式一:继承于Thread类1.创建一个继承于Thread类的子类2.重写Thread类的run() -->将此线程执行的操作声明在run()中3.创建Thread类的子类的对象4.通过此对象调用start()例子:遍历100以内的所有偶数*///1.创建一个继承于Thread类的子类class MyThread extends Thread{//2.重写Thread类的run()@Overridepublic void run(){f转载 2021-04-26 16:48:11 · 90 阅读 · 0 评论 -
核心类库03-多线程05-Thread
/**测试Thread中的常用方法:1.start():启动当前线程;调用当前线程的run()2.run():通常需要重写Thread雷钟德此方法,将创建的线程要执行的操作声明再次方法3.currentThread():静态方法,返回执行当前代码的线程4.getName():获取当前线程的名字5.setName():设置当前线程的名字6.yield():释放当前cpu的执行权7.join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全执行完以后,线程a才结原创 2021-04-26 16:46:31 · 246 阅读 · 0 评论 -
核心类库-IO-Serializable接口实现序列化和反序列化
Student类import java.io.Serializable;import java.util.List;public class Student implements Serializable {private String stuNum;private String stuName;private List teacherList;public Student(){}public Student(String stuNum, String stuName, List<原创 2021-04-25 00:36:18 · 133 阅读 · 0 评论 -
核心类库-集合-Collections工具类常用方法的测试
import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.junit.Test;/*reverse(List):反转 List 种元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元原创 2021-04-22 17:27:01 · 215 阅读 · 0 评论 -
核心类库-集合-TreeMap-两种添加方式的使用
import java.util.Comparator;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;import org.junit.Test;public class TreeMapTest {//向TreeMap中添加key-value,要求key必须是由同一个类创建的对象//因为要按照key进行排序:自然排序、定制排序//自然排序@Test转载 2021-04-22 16:38:01 · 176 阅读 · 0 评论 -
核心类库-集合-Map接口
import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;import org.junit.Test;/*一、Map的实现类的结构:|—Map:双列数据,存储key-value对的数据 —类似于高中的函数:y=f(x)|—HashMap:作为M原创 2021-04-22 16:36:08 · 69 阅读 · 0 评论 -
核心类库-集合-Set接口2-TreeSet
import java.util.Comparator;import java.util.Iterator;import java.util.TreeSet;import org.junit.Test;public class TreeSetTest {/* 1.向TreeSet中添加的数据,要求是相同类的对象 2.两种排序方式:自然排序(实现Comparable) 和 定制排序 3.自然排序中,比较两个对象是否相同的标准为:compareTo()返回0,不再是equals(). 4.转载 2021-04-21 17:23:22 · 76 阅读 · 0 评论 -
核心类库-集合-Set接口1-HashSet、LinkedHashSet
import java.util.HashSet;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.Set;import org.junit.Test;import com.atbe.collection.Person;/*|—Collection接口:单列集合,用来存储一个一个的对象|—Set接口:存储无序的、不可重复的数据 -->高中讲的“集合”|—HashSet:作为Set接口原创 2021-04-21 17:21:15 · 94 阅读 · 0 评论 -
核心类库-集合-Collection子接口-List接口
import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;import org.junit.Test;import com.atbe.collection.Person;/*|—Collection接口:单列集合,用来存储一个一个的对象 |---List接口:存储有序的、可重复的数据。 --->“动态”数组,替换原有的数组 |---原创 2021-04-20 18:04:12 · 119 阅读 · 0 评论 -
核心类库-集合-Collection2-Iterator
import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import org.junit.Test;/*集合元素的遍历操作,使用Iterator接口1.内部的方法:hasNext()和next()2.集合对象每次调用iterator()方法都得到一个全新的迭代器对象, 默认右边都在集合的第一个元素之前。3.内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不原创 2021-04-20 16:05:16 · 68 阅读 · 0 评论 -
核心类库-集合-Collection1
import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.List;import org.junit.Test;/*集合框架|—Collection接口:单列集合,用来存储一个一个的对象|---List接口:存储有序的、可重复的数据。 -->"动态"数组|---Set接口:存储无序的、不可重复的数据 -->高中讲的“集合”原创 2021-04-20 16:03:49 · 122 阅读 · 0 评论