![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 67
睿里睿气
全栈工程师
展开
-
Java连载157-try...with...resource
一、使用try…with…resourcepackage com.newJava;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class D157_tryWithResource { public static void main(String[] args) { String address = "E:\\d05_gitcode\\Java\\ne原创 2022-12-11 16:20:12 · 115 阅读 · 0 评论 -
Java连载156-IO总结(三)
一、管道流 final PipedOutputStream pps = new PipedOutputStream(); final PipedInputStream pis = new PipedInputStream(pps); new Thread(new Runnable() { public void run() { try { pps.write("厉害了".getBytes(StandardCharsets.UTF_8)); pps.close()原创 2021-12-27 00:12:47 · 221 阅读 · 0 评论 -
Java连载155-IO总结(二)
一、四种方式分别举例1.FileInputStream InputStream is = null; String address = "E:\\d05_gitcode\\Java\\newJava\\src\\com\\newJava\\newFile.txt"; int b; try { is = new FileInputStream(address); while ((b = is.read()) != -1) { // 可以看出是一个字节一个字节读取的 Sy原创 2021-12-23 00:43:52 · 355 阅读 · 0 评论 -
Java连载154-IO总结(一)
一、类图基本上IO可以分为字节流和字符流二、字符大小一般来说一个字母占用一个字节,一个汉字占用两个字节。具体还要看字符编码,比如说在 UTF-8 编码下,一个英文字母(不分大小写)为一个字节,一个中文汉字为三个字节;在 Unicode 编码中,一个英文字母为一个字节,一个中文汉字为两个字节。三、常用方法InputStreamint read() 读取数据int read(byte[] b, int off, int length) 从第off个字节开始读取长度为length的字节,原创 2021-12-22 00:36:23 · 455 阅读 · 0 评论 -
Java连载153-可变参数、多线程状态图
一、可变参数可变参数顾名思义就是,编写一个函数的时候,可以传入一个或者多个参数实际原理:根据传入的参数类型以及个数,创建一个数组,用于存储这些数据,在函数中调用的时候,也可以使用数组的形式调用,下面我们举个例子package com.newJava;public class D152_VariableParameters { public static void main(String[] args) { System.out.println("打印出了"); printString原创 2021-12-21 00:06:51 · 209 阅读 · 0 评论 -
Java连载152-HashMap中的hash函数有什么用
一、取模运算和取余运算取余运算,这个很好理解,我们经过多年的数学学习也知道,就是求余数,一个整数和另一个整数相除,得到它们的余数,就是我们说的取余取模运算,通俗的来讲大多运算在计算机领域,取模运算其实就是两个二进制数字之间做与运算,它们最后得到的数字就是取模我们举个简单的例子,有一个二进制数字0000 0001 1001 1101,1111 0101 1010 0011,这个两个数字做与运算,它们相同位置的数字,如果有一个数字出现1,那么计算后的数字的那个位置就是1,这两个数字与运算后的值为1111原创 2021-12-17 00:43:54 · 781 阅读 · 0 评论 -
Java连载151-JUnit简介以及HashMap初步分析
一、配置JUnit环境JUnit是一个集成测试单元框架,我们先下载软件包,来配置环境package com.bjpowernode.java_learning;public class D149_TestJunit { String message = "hello world"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { assertEqu原创 2021-12-16 00:45:00 · 1145 阅读 · 0 评论 -
Java连载150-NIO详解(一)
一、IO原理1.底层原理操作系统在进行IO的时候,实际上并不是即时操作,它们是通过缓冲区的,也就是说,我们读写文件都是通过一个中介来进行的。读系统就是把内核缓存区的内容复制到进程缓冲区;写系统就是把进程缓冲区的内容复制到内核缓存区。之所以这样做的原因是避免大量的IO操作,大量的IO操作效率是很低的。这个过程并不等价于数据在内核缓冲区和磁盘之间的交换。...原创 2021-12-13 00:13:10 · 430 阅读 · 0 评论 -
Java连载149-集合类小节
一、Collection和Collections之间的区别Collection是一个接口类,是Set和List接口的父接口Collections是一个工具类,是不应该初始化为一个对象,内部含有很多对集合操作的静态方法二、Set和List之间的区别Set和List都是接口,但是各有不同Set是一个无序集合,对于放入的元素是不能重复,可以用于进行去重List是一个有序集合,按照先进先放的原则三、ArrayList\LinkedList\Vector之间的区别ArrayList的底层是一原创 2021-12-01 00:21:29 · 1657 阅读 · 0 评论 -
Java连载147-对象存储的地方
异常处理:处理错误异常处理就像是与程序正常执行路径并行的,在错误发生的时候执行的另一条路径,因为它是另一条完全分离的执行路径,所以它不会干扰正常执行的代码客户端编程浏览器的提交动作通过所有的WEB服务器都提供的通用网关接口(common gateway interface,CGI)传递,提交的内容会告诉CGI应该如何处理它,最常见的动作就是运行一个在服务器中常被命名为“cgi-bin"的目录下的一个程序。一切都是对象Java是基于C++开发的对象可能会存储到什么地方寄存器:最快的原创 2021-08-16 00:17:46 · 86 阅读 · 0 评论 -
Java连载146-内存泄漏和容器
内存溢出和内存泄漏的区别内存溢出,就是我们在内存种分配了一块内存区域,但是当我添加了超出内存的数据的时候,就会导致溢出部分,覆盖了其他的内存,影响到了其他数据.内存溢出容易招致黑客攻击,修改未经分配给的内存.内存溢出在C++和C中存在,在Java中基本不存在,如果是堆栈会报OutOfMemory异常;对于数组就会报ArrayOutOfIndex异常.JVM有一系列机制来进行内存的检测等,出现异常会直接抛出内存泄漏是指分配了一段内存,当我们不在使用内存中存储的数据或者对象的时候,没有及时释放掉,导致这块原创 2021-08-08 23:44:40 · 101 阅读 · 0 评论 -
Java连载145-对象概论总结
一、对象概论总结抽象过程每一个对象看起来都有点像一个微型计算机–它具有状态,还具有操作,用户可以要求对象执行这些操作可以把消息想象为对某个特定对象的方法的调用请求“类”也就是“类型”的同义词对象具有状态、行为和标识每一个对象在内存中都有唯一的地址每个对象都有一个接口面向对象程序设计的挑战之一,就是问题空间的元素和解空间的对象之间创建一对一的映射被隐藏的具体实现public表示紧随其后的元素对任何人都是可用的private表示除了类型创建者和类型的内部方法之外的任何人都不能访问原创 2021-08-04 00:26:45 · 67 阅读 · 0 评论 -
Java高并发连载23-基于AQS实现自定义同步器
一、在如下代码中,当另外一个线程调用条件变量的signal方法的时候(必须先调用锁的lock方法获取锁),在内部会把条件队列里面队头的一个线程节点从条件队列里面移除并且放入AQS的阻塞队列里面,然后激活这个线程。public final void signal() { if(!isHeldExclusively()) { throw IllegalMonitorException(); } Node first = firstWaiter; if(first != null){ //原创 2021-02-26 00:26:33 · 98 阅读 · 1 评论 -
Java高并发5-守护线程、ThreadLocal和死锁四个必要条件
一、复习void interrupt()、boolean isInterrupted()、boolean interrupted()interrupt()方法只是为了做一个“中断”的标记,而不会真的停止该线程、isInterrupted是返回线程的中断状态、interrupted()方法也是一样的,但是这是一个static方法,可以直接调用而且根据源码,是所在的线程的中断状态,而且如果结果为true,它会立即消除“中断”状态。二、上下文切换定义:CPU会给各个线程分配时间片,当一个线程的时间片原创 2020-11-06 00:16:52 · 238 阅读 · 0 评论 -
Java连载144-反射和自定义注解
一、定义注解使用前提:使用@interface来进行声明,会自动继承java.lang.annotation.Annotation接口注解中的每一个方法实际上是声明了一个配置参数,方法的名称就是参数的名称,返回值的类型就是参数的类型,返回值只能是基本类型、Class、String、Enum,可以通过default关键字声明参数的默认值语法如下[public|final] @interface 注解名{ 注解元素}注意:(1)不可与i继承其他注解或者接口;(2)@interface只能原创 2020-10-12 00:13:36 · 188 阅读 · 0 评论 -
Java连载143-三种系统注解
一、注解功能用处:类、构造方法、成员方法、方法、参数等声明中特性:不影响程序的正常执行,但是会对编译器等辅助工具产生影响定义:添加到Java程序代码上,用来做一些说明和解释1.元数据定义:用于描述数据的一种数据可使用注解来描述元数据。2.注解又称为标注,属于程序的元数据,也是程序代码的标记。获得时间:编译、加载类和运行使用反射可以对程序代码进行分析使用系统定义的注意,可以在编译时对程序进行检查使用元注解,可以生成相应的文档用在的地点:包、类、字段、方法、局部变量、方法参数原创 2020-10-11 00:28:59 · 115 阅读 · 0 评论 -
Java连载142-使用数据库连接池批量查询数据
三、源码:ibankhttps://github.com/ruigege66/Java/tree/master/ibankCSDN:https://blog.csdn.net/weixin_44630050博客园:https://www.cnblogs.com/ruigege0000/欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流...原创 2020-10-03 20:57:18 · 284 阅读 · 0 评论 -
Java连载141-编辑实体类
一、安装mysql首先在windows上安装mysql,地址:https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/,找到最新版mysql-8.0.21-winx64.zip,点击下载解压到某一个目录,然后设置环境变量,并生成data文件后续操作请参考https://www.cnblogs.com/yunlongaimeng/p/12558638.html坑区:一定要使用管理打开的方式打开cmd再进行命令行操作,否则原创 2020-09-27 00:26:11 · 119 阅读 · 0 评论 -
Java连载140-安装tomcat并且启动项目ibank
一、在windows上安装tomcat这里推荐使用华为的开源镜像站https://mirrors.huaweicloud.com/搜索apache,进入之后搜索tomcat进行下载并安装。我解压到了一个目录E:\03.loaded software\tomcat\apache-tomcat-10.0.0-M8,然后设置好环境变量E:\03.loaded software\tomcat\apache-tomcat-10.0.0-M8\bin运行startup.bat,发现报错,然后按报错内容设置好原创 2020-09-23 00:29:16 · 125 阅读 · 0 评论 -
Java连载139-数据库编译预处理和事务回退
一、编译预处理我们直接举一个例子package com.bjpowernode.java_learning;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class D139_1_CompileProcess { public static void main(String[] a原创 2020-09-19 00:20:27 · 139 阅读 · 0 评论 -
Java连载138-数据库删除数据以及编译预处理
一、删除数据DELETE语句如下DELETE FROM <表名> WHERE <条件表达式>方法:(1)利用Statement实例执行静态DELETE语句完成;(2)利用PreparedStatement实例通过执行动态DELETE语句完成;(3)利用CallableStatement实例通过执行存储过程完成。第一种方式:String sql = "delete from tb_record where date<'2017-2-14'";statemen原创 2020-09-15 00:24:32 · 180 阅读 · 0 评论 -
Java连载137-更新数据和删除数据
一、数据更新语句的命令格式如下:UPDATE <table_name> SET column_name = 'xxx' WHERE <条件表达式>在更新数据的时候既可以使用Statement实例通过UPDATE语句完成,也可以利用PreparedStatement实例通过执行UPDATE语句来完成,还可以利用CallableStatement实例通过执行存储过程完成。(1)利用Statement实例通过执行静态UPDATE语句举例String sql = "update原创 2020-09-02 00:07:09 · 216 阅读 · 0 评论 -
Java连载136-两种方式插入数据
一、插入数据对于数据的增删改查都有两种可选的操作模式,一种是直接使用SQL语句进行增删改查,另一种是通过可更新的结果集对象间接增删改查。首先创建语句对象Statement stmt = con.creatStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CUNCUR_UPDATABEL);一下插入数据的两种方式:string sqlins = "INSERT INO students values(' " + name +" ','"原创 2020-08-27 00:17:54 · 832 阅读 · 0 评论 -
Java连载135-JDBC执行SQL操作
一、数据库的基本操作1.SQL语句四大类:(1)数据查询/操纵/定义/控制语言(DQL/DML/DDL/DCL)(2)增删改查CRUD2.查询数据利用Statement实例通过执行静态SELECT语句完成,也可以利用PreparedStatement实例通过执行SELECT语句进行完成,还可以利用CallableStatement实例通过执行存储过程来完成。(1)利用Statement实例通过执行静态SELECT语句查询的代码示例:String sql = "select * from原创 2020-08-19 00:15:15 · 134 阅读 · 0 评论 -
Java连载134-连接JDBC
一、使用JDBC连接数据库1.使用JDBC-ODBC桥驱动程序连接数据库基本步骤:(1)加载并注册数据库驱动(2)通过DriverManager获取数据库连接(3)通过Connection对象获取Statement对象(4)使用Statement接口执行SQL语句(5)操作ResultSet结果集(6)关闭连接,释放资源2.下面进行代码演示1.注册数据库驱动程序的语法格式如下:DriverManager.registerDriver(Driver driver)或者原创 2020-08-08 22:54:36 · 96 阅读 · 0 评论 -
Java连载133-ResultSet接口的其他方法
一、接着写ResultSet接口常用方法方法说明getRow()查看当前行的索引编号,索引编号是从1开始的,如果位于有效记录上则放回一个int型索引编号,否则为0findColumn()查看指定列名的索引编号,该方法有一个String参数,为要查看的列的名称。如果包含指定列,则返回int型索引编号,否则将抛出异常。isBeforeFirst()查看指针是否位于ResultSet实例的开头,即第一行之前,如果是则返回true,否则返回flaseisAfterLas原创 2020-08-08 00:55:22 · 149 阅读 · 0 评论 -
Java连载132-PreparedStatement、CallableStatement、ResultSet接
一、PreparedStatement接口1.java.sql.PraparedStatement接口继承并扩展了Statement接口,用于执行动态的SQL语句,即包含参数的SQL语句。PraparedStatement ps = connection.preparedStatement("select * from table_name where id>? and (name = ? or name = ?)");ps.setInt(1,6);ps.setString(2,"马先生")原创 2020-07-27 00:09:37 · 171 阅读 · 0 评论 -
Java连载131-Connection接口和Statement接口
一、Connection接口该接口代表Java程序和数据的连接,只有获取该连接对象,才能访问数据库来操作数据表常用方法:方法说明creatStatement()创建并返回一个Statement实例,通常在执行无参数SQL语句时创建该实例prepareStatement()创建并返回一个PreparesStatement实例,通常在执行包含参数的SQL语句中执行,并对SQL语句进行预编译处理prepareCall()创建并返回一个CallStatement实例,原创 2020-07-22 00:11:34 · 515 阅读 · 0 评论 -
Java连载130-JDBC编程初步
一、JDBC编程1.JDBC简介JDBC(Java Database Connectivity)是一套用于执行SQL语句的Java API。分为两层:(1)上层是JDBC API,负责在Java应用程序和JDBC驱动程序管理器之间进行通信,负责发送程序中的SQL语句;(2)下层是JDBC驱动程序的API,负责JDBC驱动程序管理器与实际连接的数据库的厂商驱动程序和第三方驱动程序之间进行通信,返回查询结果或者执行规定的操作。如下逻辑结构:解释上面的功能(1)Java应用程序:除了包含程序本原创 2020-07-17 00:03:58 · 128 阅读 · 0 评论 -
Java连载129-广播数据包、网络编程总结
一、广播数据包1.特性这种通信类似于广播,要想实现这个功能,需要使用特殊的IP地址,要想实现多播或者广播通信的主机必须加入一个D类地址,D类地址的十进制表示范围为224.0.0.0~239.255.255.255需要使用的类是`java.net.MulticastSocket.常用的构建方法(1)MulticastSocket(int port) throws IOException创建一个多播套接字,并将其绑定到端口上。(2)MuticastSocket(SocketAddress bin原创 2020-07-12 19:10:20 · 174 阅读 · 0 评论 -
Java连载128-UDP通信编程
一、UDP编程1.DatagramPacket特性以及构造方法UDP是一个面向无连接的协议,因此,在通信时发送端和接收端不用建立连接。Datagram类就相当于一个集装箱用于封装UDP通信中发送或者接收的数据。构造方法:(1)DatagramPacket(byte[] buf,int length)使用该构造方法在创建DatagramPacket对象的时候指定了封装对象的字节数组和数据大小,没有指定IP和端口号。这样的对象只能用于接收端而不能用于发送端。因为发送端一定要明确指出数据的目的地(I原创 2020-07-09 00:28:57 · 133 阅读 · 0 评论 -
Java连载127-多线程TCP网络编程
一、多线程的TCP网络编程如果需要进行多次数据交互,就可以在程序中设置一个循环,不断向对方发送请求,即可完成多次数据交互。同样,如果需要让服务器同时响应多个客户端的请求,可以使用多线程的方法,也就是服务器端没接收到一个新的连接请求,就启动一个专门的线程与客户端进行交互。本测试程序可以分为三类:客户端类、服务器类和逻辑线程类首先是客户端类package com.bjpowernode.java_learning;import java.io.DataInputStream;import原创 2020-07-05 13:03:56 · 245 阅读 · 0 评论 -
Java连载126-Socket详解
一、Socket1.Socket构造方法构造方法说明Socket()该创建的对象,没有指定IP地址和端口号,意味着只创建了客户端对象,并且没有连接任何服务器。通过该构造方法创建对象后还需要调用connect(SocketAddress endpoint)方法,才能完成与指定服务器端的连接,其中参数endpoint用于封装IP地址和端口号Socket(String host,int port)使用该构造方法在创建Socket对象时会根据参数去连接在指定地址和端口上运行的服务器原创 2020-07-01 00:32:33 · 118 阅读 · 0 评论 -
Java连载125-UDP、TCP概念以及ServerSocket示例
一、UDP和TCP1.UDP(user datagram protocol)用户数据报协议;TCP(transmission control protocol)传输控制协议。2.UDP特性:UDP是无连接通信协议,即在数据传输的时候,数据的发送端和接收端不建立逻辑连接 ,优点:消耗资源小,通信效率高,但是不建议传输重要数据,因为有可能会丢包,并且两端是没有反馈的,不知道是否已经接收到了数据。3.TCP特性:TCP是面向连接的通信协议,即在传输数据之前先在发送端和接收端建立逻辑连接,然后再进行传输数据原创 2020-06-27 00:34:44 · 245 阅读 · 0 评论 -
Java连载124-网络编程
一、计算机网络基础1.网络通信协议有很多种,目前应用最广泛的就是TCP/IP协议(Transmission Control Protocal/Internet Protocal,传输控制协议/英特网互联协议),UDP(User Datagram Protocal,用户数据报协议),ICMP(Internet Control Message Protocal,英特网络控制报文协议)和一些其他协议族。2.基于TCP/IP的模型分成四个层次:(1)应用层;如:HTTP\FTP\DNS(2)传输层;如:TC原创 2020-06-23 00:26:19 · 152 阅读 · 0 评论 -
Java连载123-网格布局包管理
一、网格包布局举例1.这里构造一个3*3的布局。package com.bjpowernode.java_learning;import java.awt.Frame;import java.awt.*;public class D123_1_GridLayout { public static void main(String[] args) { Frame f = new Frame("GridLayout"); //创建一个名为GridLayout的窗体 f原创 2020-06-19 00:34:35 · 219 阅读 · 0 评论 -
Java连载122-布局管理器、边界布局管理器
一、编写窗体1.左右边距、按钮package com.bjpowernode.java_learning;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;public class D122_1_Test { public static void main(String[] args) { final Frame f = new Frame("Flowlayout");//创建一个名为F原创 2020-06-15 00:18:37 · 180 阅读 · 0 评论 -
Java连载121-窗口程序设计GUI编程
一、GUI编程1.Java提供了java.awt和javax.swing包用于GUI编程,简称为AWT和Swing。2.AWT属于重量级组件,利用本地操作系统提供的图形库,不跨平台,它的组件种类有限,可以提供基本的GUI设计工具,但是无法实现目前GUI设计所需的所有功能。3.Swing由纯Java语言编写,属于轻量级组件,可跨平台,是对AWT的加强。4. AWT中组件可以分为两类:Component和MenuComponent;MenuCompent是所有与菜单相关组件的父类,Component则是原创 2020-06-11 00:19:28 · 258 阅读 · 0 评论 -
Java连载120-反射机制获取构造方法和父类、父接口
一、使用反射机制来(1)获取一个类;(2)获取类的构造函数(3)通过构造函数来获取一个对象package com.bjpowernode.java_learning;import java.lang.reflect.*;public class D120_1_ConstructerOfClass { public static void main(String[] args) throws Exception{ //1.获取类 Class c = Class.forName原创 2020-06-05 00:17:54 · 178 阅读 · 0 评论 -
Java连载119-反编译类的某个方法已经构造方法
一、获取某个特定的方法,通过反射机制。package com.bjpowernode.java_learning;import java.lang.reflect.*;public class D119_1_ReflectMethodOfSpecialClass { public static void main(String[] args) throws Exception{ /** * D118_CustomerService cs = new D118_CustomerS原创 2020-06-01 00:09:49 · 151 阅读 · 0 评论