05 2019 档案

摘要:1、使用TCP连接服务器和客户端。 2、结合反射的知识、创建JDBC和连接池。 3、客户端输入信息并保存到一个对象中,发送到服务器。 4、服务器接收对象,通过JDBC存储进数据库中。 5、把服务器放到线程中,保持启动状态。 6、客户端读取数据库的数据信息,放到集合中。 7、遍历集合,输出数据库的数据 阅读全文
posted @ 2019-05-29 23:25 luojack 阅读(303) 评论(0) 推荐(0)
摘要:第一个包:java.lang包。 该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握,因为它们应用很广。 第二个包:java.ut 阅读全文
posted @ 2019-05-25 10:04 luojack 阅读(5378) 评论(0) 推荐(1)
摘要:什么是反射? 答:在JVM运行阶段,能够动态地获取信息(字节码实例、构造器、方法、字段),动态地进行对象的创建,方法执行,字段操作。 反射常用的类: (1)Class:所有类的字节码实例描述 (2)Constructor:构造器 (3)Method:方法 (4)field:字段 阅读全文
posted @ 2019-05-21 10:18 luojack 阅读(168) 评论(0) 推荐(0)
摘要:什么是事务? 答:指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务的基本操作有哪些? 答:1、先定义开始一个事务,然后对数据作修改操作,这时如果提交(commit) 2、这些修改就永久地保存下来,如果回退(rollback)数据库管理系统将放弃您所作的所有修改而回到开始事务时的状态。 事 阅读全文
posted @ 2019-05-20 19:48 luojack 阅读(210) 评论(0) 推荐(0)
摘要:首先要导入连接池的架包: 1.通过Druid工厂创建连接池对象,并且把properties对象放到连接池中 DataSourse dataSourse=DruidDataSourseFactory.createDataSourse(properties)对象; 2.然后连接数据库的connectio 阅读全文
posted @ 2019-05-19 12:11 luojack 阅读(1037) 评论(0) 推荐(0)
摘要:1.把创建Connection数据库连接对象的代码,抽取到Util工具类中,并提供方法getConn用于向调用者返回Connection对象即可。 2.把Class.forName("com.mysql.jdbc.Driver")加载注册驱动,抽到Util工具类,并且放到静态代码块中,每次类加载而执 阅读全文
posted @ 2019-05-19 11:45 luojack 阅读(452) 评论(0) 推荐(0)
摘要:项目搭建的包命名和类命名: 首先导入数据库的驱动架包,并添加依赖 1.Dao层是专门负责和数据库交互,数据处理的代码层 2.Dao是接口,DaoImpl是Dao接口的实现类 3.Java代码连接数据库的步骤:“贾琏欲执事”口诀 (1)贾:加载数据库注册驱动,将数据库驱动注册到DriverManage 阅读全文
posted @ 2019-05-19 10:14 luojack 阅读(9063) 评论(0) 推荐(0)
摘要:/*1、使用基本查询语句. (1)查询DEPT表显示所有部门名称. (2)查询EMP表显示所有雇员名及其全年收入(月收入=工资+补助),处理NULL行,并指定列别名为"年收入"。(NVL(comm,0) comm取空值时用0替代) (3)查询显示不存在雇员的所有部门号。2、限制查询数据 (1)查询E 阅读全文
posted @ 2019-05-13 23:24 luojack 阅读(714) 评论(0) 推荐(0)
摘要:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND(请求连接)状态,等待服务器确认; SYN:表示请求连接的报文。客户端把SYN报文打包后,发往服务器。 第二次握手:服务器收到syn 阅读全文
posted @ 2019-05-12 09:42 luojack 阅读(200) 评论(0) 推荐(0)
摘要:UDP编程中,如果要完成通信,通信双方必须要创建DatagramSocket,通过DatagramSocket完成通信。 数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器 UDP步骤: [1] 创建一个DatagramSocket用于表示发送端,通过send 阅读全文
posted @ 2019-05-11 23:25 luojack 阅读(247) 评论(0) 推荐(0)
摘要:需求1:请上传张图片到服务器。 客户端: 服务器: 需求2:在控制台输入用户名和密码,如果输入正确提示登录成功,否则登录失败。 User表: 注意:服务器和客户端是分别运行在两个Eclipse上的。那么,表的工作路径,即第一行的包名,在服务器端和客户端两边的包名都要一致。否则当一边序列化对象后,另一 阅读全文
posted @ 2019-05-10 23:22 luojack 阅读(404) 评论(0) 推荐(0)
摘要:线程在执行过程中,通过cpu的调度,执行轨迹不确定,对共享资源的访问很容易造成数据的错误。我们称这个错乱称为线程安全问题。 同步概念 原子性操作:一个操作要么一次性做完,要么根本不开始,不存在中间状态。 同步就是让操作保持原子性,java提供了两种方式实现同步。即同步代码块和同步方法。 同步代码块 阅读全文
posted @ 2019-05-10 21:09 luojack 阅读(201) 评论(0) 推荐(0)
摘要:TCP编程中,如果要完成通信,通信双方必须要创建socket,通过socket完成通信。 TCP通信步骤 1、服务器启动ServerSocket作为通信的Server端,等待客户端链入。 2、 客户端创建Socket作为通信的Client端 3、Client端链入Server端后建立可靠的、双向的、 阅读全文
posted @ 2019-05-10 20:56 luojack 阅读(392) 评论(0) 推荐(0)
摘要:把多台计算机通过物理线路连接起来,就形成了网络。目的在于交换数据和共享信息。 网络通信的三要素 【1】IP地址:唯一标识网络上的每一台计算机。两台计算机之间通信的必备有素 【2】端口号:计算机中应用的标号(代表一个应用程序) 0-1024系统使用或保留端口 常见端口:http:80 stmp: 25 阅读全文
posted @ 2019-05-10 19:39 luojack 阅读(175) 评论(0) 推荐(0)
摘要:线程的常用方法: Thread.currentThead():获取当前线程对象 getPriority():获取当前线程的优先级 setPriority():设置当前线程的优先级 注意:线程优先级高,被CPU调度的概率大,但不代表一定会运行,还有小概率运行优先级低的线程。 isAlive():判断线 阅读全文
posted @ 2019-05-09 21:16 luojack 阅读(3056) 评论(0) 推荐(0)
摘要:说一下线程的生命周期? 答:1.新建状态 2.就绪状态 3.运行状态 4.阻塞状态 5.死亡状态 具体描述一下每一个状态? 答: 1.新建状态: 用new关键字建立一个线程后,该线程对象就处于新建状态。处于新生状态的线程有自己的内存空间,通过调用start()方法进入就绪状态。 2.就绪状态: 处于 阅读全文
posted @ 2019-05-09 19:56 luojack 阅读(5368) 评论(0) 推荐(0)
摘要:public class Demo5 { public static void main(String[] args) { int a[]={10,20,88,9,30,50,31,19}; /*Demo5.sort2(a);*/ for (int i : a) { System.out.print(i+","); } System.out.println()... 阅读全文
posted @ 2019-05-08 20:42 luojack 阅读(152) 评论(0) 推荐(0)
摘要:线程的实现方法有两种: 1.是继承Thread类,重写run方法。 2.是实现Runnable接口,实现run方法。 继承Thread: 实现Runnable接口: 阅读全文
posted @ 2019-05-07 21:16 luojack 阅读(125) 评论(0) 推荐(0)
摘要:什么是程序? 答:程序是一堆静态的代码,存在硬盘内存中,本质上是一个文件。 什么是进程? 答:每当程序运行一次,就会产生一个进程,直到程序结束,或者说进程结束。 什么是线程? 答:也称为轻量进程,是指运行中的程序的调度单位。一个进程可以有多个线程。 进程与线程的区别: 什么是多线程? 答:多线程就是 阅读全文
posted @ 2019-05-07 21:02 luojack 阅读(111) 评论(0) 推荐(0)
摘要:DataInputStream继承于InputStream,允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。 提供了 readXXX():读取各种类型的数据 DataOutputStream继承于OutputStream,专门用于把基本java数据类型的数据写入输出流中。 提供了 阅读全文
posted @ 2019-05-07 20:46 luojack 阅读(316) 评论(0) 推荐(0)
摘要:把内存中的对象永久保存到硬盘的过程称为对象序列化,也叫做持久化。 把硬盘持久化的内存恢复的内存的过程称为对象反序列化。 Serializable 对象序列化(持久化),一定要在对象类中实现Serializable接口,不需要实现方法。注意:未实现该接口,则对象将无法序列化或反序列化,并且抛出异常。 阅读全文
posted @ 2019-05-07 20:28 luojack 阅读(348) 评论(0) 推荐(0)
摘要:源数据源是标准输入设备(键盘、鼠标、触摸屏)等输入设备。在java中用System.in 得到一个InputStream字节输入流。 标准输入流:System.in 返回类型为InputStream字节输入流 从控制台输入一串字符,并写入文件中。 标准输出流:System.out 返回类型为prin 阅读全文
posted @ 2019-05-07 19:33 luojack 阅读(2350) 评论(0) 推荐(0)
摘要:BufferedReader/BufferedWriter 作用:调用read()读写一行文本。 BufferedReader BufferedReader继承于Reader,提供了 read():读取一个字符 read(char[] cbuf): 读取多个字符。 readLine():读取一行文本 阅读全文
posted @ 2019-05-07 09:05 luojack 阅读(266) 评论(0) 推荐(0)
摘要:InputStreamReader 继承于Reader,是字节流通向字符流的桥梁,可以把字节流按照指定编码 解码 成字符流。 OutputStreamWriter 继承于Writer,是字符流通向字节流的桥梁,可以把字符流按照指定的编码 编码 成字节流。 转换流的工作原理: 写入UTF-8文件: 读 阅读全文
posted @ 2019-05-07 08:28 luojack 阅读(1014) 评论(0) 推荐(0)
摘要:流的分类 按照流向分为:输入流和输出流。 按照处理单位分为:字节流和字符流 按照功能为:节点流和转换流。 InputStream(字节输入流) / OutputStream(字节输出流) InputStream是所有字节输入流的抽象父类,提供了 read():从数据源中读取一个字节 (返回值为读取的 阅读全文
posted @ 2019-05-06 23:12 luojack 阅读(141) 评论(0) 推荐(0)
摘要:给定路径创建File对象: File file=new File("d:\\sxt2019\\a.txt"); File常用的方法: exists() :查询文件是否存在 createNewFile(): 创建新的文件 delete(): 删除文件 getAbsolutePath(): 获取文件的绝 阅读全文
posted @ 2019-05-06 21:00 luojack 阅读(215) 评论(0) 推荐(0)
摘要:TreeMap是Map接口的实现类,key以TreeSet方式存储。 注意:TreeMap为二叉树存储,所以要在key中实现比较策略。 阅读全文
posted @ 2019-05-06 19:26 luojack 阅读(251) 评论(0) 推荐(0)
摘要:LinkedHashMap是Map接口的实现类,key以LinkedHashSet存储。 哈希表散列Key,链表维持Key的添加顺序。 LinkedHashMap的添加和遍历: 阅读全文
posted @ 2019-05-06 15:06 luojack 阅读(524) 评论(0) 推荐(0)
摘要:HashMap是Map接口的实现类,Key以HashSet存储。 HashMap初始化对象:HashMap<Student,Object> map=new HashMaP<String,Object>(); (HashMap类型为一个实体类和一个Object) 注意: 1、HashMap也用到哈希表 阅读全文
posted @ 2019-05-06 08:35 luojack 阅读(178) 评论(0) 推荐(0)
摘要:Map接口 Map是通过键值对(key-value)来存储元素。 Map容器接口中提供了增删改查的方式对集合进行操作。 Map的常用方法: 增:put / putAll 删:clear / remove 改:put 查:get / containskey / containsValue 其他:isE 阅读全文
posted @ 2019-05-06 00:47 luojack 阅读(327) 评论(0) 推荐(0)
摘要:TreeSet是Set接口的实现类,底层数据结构是二叉树。 TreeSet的存储方式按照一定的规则。存储规则让数据表现出自然顺序。 TreeSet(二叉树)工作原理 添加一个新元素t的存储步骤: [1] 如果集合无元素,t直接加入;如果集合有元素,t和根节点比较; [2] 如果t小于根节点;把t放到 阅读全文
posted @ 2019-05-05 23:57 luojack 阅读(220) 评论(0) 推荐(0)
摘要:LinkedHashSet是Set接口的实现类,底层数据结构为哈希表+链表。 哈希表用于散列元素,链表用于维持添加顺序。 如果要添加自定义对象,也需要重写hashCode方法和equals方法。 阅读全文
posted @ 2019-05-05 21:54 luojack 阅读(237) 评论(0) 推荐(0)
摘要:HashSet是Set接口的实现类,其底层数据结构为哈希表。 HashSet是线程不安全的(不保证同步)。 HashSet优点:添加、删除、查询效率高。 缺点:无序 哈希表的工作原理: 首先,拿到元素,计算元素的HashCode值,使用根据y=K(x)的哈希函数计算出元素的存储位置,如果该位置没有元 阅读全文
posted @ 2019-05-05 21:41 luojack 阅读(181) 评论(0) 推荐(0)
摘要:LinkedList也是List接口的实现类,底层数据结构为链表。 常用方法和遍历方法参照List。 LinkedList是线程不安全的。 LinkedList除了实现List接口,还是实现了栈接口。 实现了队列(queue)接口 add/remove/element() 可能会出现NoSuchEl 阅读全文
posted @ 2019-05-05 21:10 luojack 阅读(159) 评论(0) 推荐(0)
摘要:ArrayList: ArrayList是List接口的实现类,其底层数据结构为数组,实现大小可变的数组。 ArrayList 是 线程不安全的 ,jdk1.2。 ArrayList 底层数据结构是数组,默认数组大小是10,如果添加的元素个数超过容量的话,ArrayList会自动扩容。 扩容的规则为 阅读全文
posted @ 2019-05-05 21:02 luojack 阅读(328) 评论(0) 推荐(0)
摘要:Collection 为顶层集合接口,其下面分有List和Set接口。 List集合的特点:元素有序、可重复。可以通过索引index来增加、删除元素。 List常用的方法: 增:add / addAll / add(index,某元素)/ add(index,某集合) 删:clear / remov 阅读全文
posted @ 2019-05-05 20:45 luojack 阅读(242) 评论(0) 推荐(0)
摘要:Collection是java集合框架中的顶层接口。 Collection初始化对象:Collection c=new ArrayList<>(); Collection常用的方法: 增:add(添加单个元素) / addAll(追加一个集合) 删:clear(清空所有元素) / remove(删除 阅读全文
posted @ 2019-05-05 20:25 luojack 阅读(125) 评论(0) 推荐(0)