自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yooppa的博客

喜欢deca joins 的浴室

  • 博客(31)
  • 收藏
  • 关注

原创 反射机制创建对象及访问属性

创建对象://在这之前的实例化对象 players p2=new players(); try{ //一下使用反射机制来创建,利用相应构造器 Class p1=new players().getClass(); Constructor co=p1.getConstructor(); players P=(players) co.newInstance();

2021-12-31 13:20:40 66

原创 编码验证——类方法前,加上修饰符 synchronized,同步对象是当前类对象

代码示例:public class Hreflect { public static void main(String[] args) { try {test t=new test(); }catch (InterruptedException e) { e.printStackTrace(); } }}class test{ public test() throws Interrup

2021-12-30 21:24:51 423

原创 java反射机制——获取类对象

类对象概念:所有的类,都存在一个类对象,这个类对象用于提供类本身的信息,比如有几种构造方法, 有多少属性,有哪些普通方法。即——就是用于描述这种类,都有什么属性,什么方法的获取类对象有3种方式Class pc1=Class.forName(classname);Class pc2=players.class;Class pc3=new players().getClass();代码示例: String classname="allman.players"; try{

2021-12-29 18:10:30 1659

原创 多线程图形界面聊天

把收发线程独立出去——单独写成一个类 ,只创立server一个图形界面 用于个体的可视化操作 配合swing可以极大模仿聊天个人界面sendThread:import java.io.DataOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;import java.util.Scanner;public class sendThread extends Thre

2021-12-28 15:15:05 385

原创 socket (套接字) 连接数据库 模仿机器人客服聊天

这只是一次非常简陋的小项目 鉴于时间有限就没有在数据库中录入更多的数据依然是昨天的博客 里的代码修改一下得来的server:import allman.JDBCPOOL;import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;import java.sql.*;public class Server { public static void m

2021-12-27 14:22:44 514

原创 socket 服务端和客户端聊天(自娱自乐)

服务端建立server socket 设定端口号客户端socket连接 添加指定端口号进行连接获取输入输出流 getInputstream getoutputstream建议 Datainputstream 和 DataOutputstream 封装 这样聊天效果更好配合线程 一个端同时进行接收发信息 配和while循环 条件语句break以下代码示例:服务端:import java.io.*;import java.net.ServerSocket;import java.net.Soc

2021-12-26 14:56:38 250

原创 Java —— Socket 建立连接发送

使用 Socket(套接字)可以进行不同的程序之间的通信一、建立连接服务端开启8888端口,并监听着,时刻等待着客户端的连接请求客户端知道服务端的ip地址和监听端口号,发出请求到服务端客户端的端口地址是系统分配的,通常都会大于1024一旦建立了连接,服务端会得到一个新的Socket对象,该对象负责与客户端进行通信。注意: 在开发调试的过程中,如果修改过了服务器Server代码,要关闭启动的Server,否则新的Server不能启动,因为8888端口被占用了一旦建立了连接,服务端和客户端就可

2021-12-25 20:57:23 2307

原创 Java 测试可用IP(示例)

依据之前的博客 在知道如何利用Java得出本机IP地址及使用ping判断一个地址是否能够到达以下是结合两者对判断本网段有多少可用的ip地址1到255代码示例:import java.net.InetAddress;import java.net.UnknownHostException;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.u

2021-12-24 20:19:26 952

原创 Java 网络编程——IP地址与端口概念

IP地址:在网络中每台计算机都必须有一个的IP地址;32位/64位,4个字节,常用点分十进制的格式表示,例如:192.168.1.100127.0.0.1 是固定ip地址,代表当前计算机,相当于面向对象里的 “this”端口两台计算机进行连接,总有一台服务器,一台客户端。服务器和客户端之间的通信通过端口进行。比如:ip地址是 192.168.1.100的服务器通过端口 8080与ip地址是192.168.1.189的客户端 的1087端口通信端口的概念如同之前的JDBC操作相似 也需要一个

2021-12-23 22:46:03 465

原创 swing中的线程(一)

在对其Swing程序的开发中,需要建立3种线程的概念:1. 初始化线程初始化线程用于创建各种容器,组件并显示他们,一旦创建并显示,初始化线程的任务就结束了。这里的组件及其各种容器的设计可以在测试类的JFrame里的无参构造方法里就设定好 之后的setvisible可以放在主方法 也就是创建和显示分开2. 事件调度线程通过事件监听的学习,我们了解到Swing是一个事件驱动的模型,所有和事件相关的操作都放是放在事件调度线程 (Event Dispatch)中进行的。比如点击一个按钮,对应的Actio

2021-12-22 17:31:24 485

原创 GUI——日期控件

swing没有自带的日期控件,需要第三方的类——可以自行找资源下载导入IDEA主要使用的是两个类——DatePicker和JXDatePickerDatePicker:datepicker.jar 包,有一个缺点,不能设置时间,只能在创建控件的时候传入指定日期。import java.util.Date;//获取当前时间import java.util.Locale;//当前时区(地点)import com.eltima.components.ui.DatePicker;//导入jar包 f

2021-12-21 14:45:21 647

原创 GUI——JTable实现用户对于数据库表格中的数据可交互——CRUD

一、基本表格显示一个Table需要两组数据一维数组: String[]columnNames 表示表格的标题二维数组: String[][] heros 表格中的内容默认情况下,表格的标题是不会显示出来了,除非使用了JScrollPane JTable t = new JTable(heros, columnNames);heros, columnNames分别为一维字符串数组和二维字符串数组JScrollPane是为了显示表格每一列标题——JScrollPane: 带滚动条的Panel

2021-12-20 19:48:24 917

原创 GUI——调用jar包美化总体设计模板

只需要提供一句代码javax.swing.UIManager.setLookAndFeel(“com.birosoft.liquid.LiquidLookAndFeel”);就可以把所有的组件切换成不同的风格。注: 这句话需要加在最前面,如果已经创建了界面,再加这个有时候不能正常起作用。但是需要对应的jar包的下载 //设置皮肤 try { javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.L

2021-12-19 21:53:43 380

原创 GUI——菜单 和 工具栏

主要为菜单栏和菜单 菜单栏包括菜单 所以菜单栏实例化对象得加入菜单实例化对象才有相应效果以及菜单理由菜单项层层涵盖// 菜单栏 JMenuBar //菜单 JMenu// 把菜单加入到菜单栏 JMenuBar.add(new JMenu());// 把菜单栏加入到frame,这里用的是set而非add f.setJMenuBar(mb);//菜单项JMenuItem JMenu.add(new JMenuItem()); //

2021-12-18 16:12:21 498

原创 模仿英雄选择界面 setvisible的作用不仅仅是JFrame调用

两个面板一个放按钮且其中每个按钮都配合事件监听——点击就切换图片另一面板 放图片三个容器存放面板和标签(用于显示图片)还有按钮import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.ArrayList;import java.util.Scanner;public class HelloSwing { public static void main(String[] args) {

2021-12-17 18:06:19 231

原创 GUI——面板(panel)种类

1、基本面板 这个基本面板是你在此上设计的基础JPanel即为基本面板面板和JFrame一样都是容器,不过面板一般用来充当中间容器,把组件放在面板上,然后再把面板放在窗体上。特点:一旦移动一个面板,其上面的组件,就会全部统一跟着移动,采用这种方式,便于进行整体界面的设计JPanel p1 = new JPanel(); // 设置面板大小 p1.setBounds(50, 50, 300, 60); // 设置面板背景颜色 p1.se

2021-12-16 17:18:09 1645

原创 关于GUI的两道练习题及其注意事项

1、设计模态框 及其 控制大小变化(当按钮解锁大小即可改变大小 点击之后变为锁定大小)采用的是按钮事件监听嵌套——一个事件嵌套一个代码示例: JFrame jf=new JFrame("example"); JButton jb1=new JButton("打开一个模态窗口"); jf.setLayout(null); jb1.setLayout(null); jf.setBounds(200,200,300,300); jb1.setBounds(20,20,200,20

2021-12-15 20:22:38 247

原创 GUI——容器和布局器

写在之前:注意:1、setSize()和setLocation()、setBounds()的关系查看源码 发现 setSize()和setLocation()其实都调用了setBounds()方法 所以只需要setBounds就可以同时设置大小及其坐标位置了 setSize()和setLocation()是单独对其大小或者坐标位置设定时才调用ImageIcon放入Jlabel配合Jbutton 来按钮点击循环显示图片和隐藏图片 jb.addActionListener(new ActionL

2021-12-14 15:49:12 1232

原创 GUI——事件监听的几种类型

1、按钮监听利用匿名类 实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用匿名类使用起来很简便 按照一般 还得写一个类实现接口方法再在测试类实例化对象 放入很麻烦 JButton b = new JButton("hide joji"); b.setBounds(150, 200, 100, 30); // 给按钮 增加 监听 b.addActionListener(new Actio

2021-12-13 15:39:45 964

原创 GUI——ImageIcon 的细节部分(为什么图片不能显示)

以下代码属于示例——涉及事件监听import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.ImageIcon;import javax.swing.JLabel;public class HelloSwing { public static void main(S

2021-12-12 22:35:11 703

原创 GUI——Swing 初识

GUI——Graphic User Interface 图形用户界面计算机总有大量的专有名字有缩写 如同之前学的ORM、DAO和JDBC 等等都需要有一定的记忆——全称正文:图形用户界面 也就是运行之后会弹出一个界面和用户交互 可以拿C语言的运行黑框理解 GUI 所呈现的效果有点像之前C语言的贪吃蛇工程实践——导入的是easyX的头文件来呈现 具体可以看看往期博客这次大体了解了GUI这部分才感觉确实Java相对于更便捷比起C语言 但是能用C语言来呈现,其编程能力是很不错的swing里有很多类可供

2021-12-11 20:33:25 136

原创 JDBC(The end)—— 数据库连接池示例 (与线程池梦幻联动)

写在之前:不管以后对于那种类型的池 都需要List接口利用多态的写法来对一系列集合框架类进行实例化对象 以此该对象调用add方法 来装多个此种类型的实例化对象。数据库连接池的设计思路比线程池简单易懂以下是示例:和之前线程池的设计思想相同之处是(也不是说和线程池设计思路一致 放在其他的类的池设计 也是如此)都是在其无参构造或者有参构造法里初始化一些数据 比如具体池的大小 以具体大小来实例化该类对象的个数配合示例代码——线程池和数据库连接池在构造方法里的不同点:1、线程池 在构造方法里的实例化对象

2021-12-10 18:20:45 764

原创 JDBC——数据库连接池(理论设计介绍)

在之前的ORM和DAO中发现 方法里都会有连接数据库的代码块也就是在数据访问对象 当对象调用方法时 每一次调用都会与数据库创建连接 假设同时调用多个方法 那么创建的连接就非常多 和线程池设计的最初缘由一样——创建连接和关闭连接的过程也是比较消耗时间的,当多线程并发的时候,系统就会变得很卡顿。同时,一个数据库同时支持的连接总数也是有限的,如果多线程并发量很大,那么数据库连接的总数就会被消耗光,后续线程发起的数据库连接就会失败。线程池考虑的时CPU的资源占用 而这个是考虑数据库本身支持的连接量但是,数

2021-12-09 22:57:55 755

原创 JDBC——事务 ORM(对象关系数据库映射) DAO(数据访问对象)

事务(Transaction)在SQL server和Mysql 里都存在的指的是完成一个应用处理的最小单元,由一个或多个对数据库操作的语句组成。 全部执行成功才提交 一个失败则取消全部操作并恢复到之前状态。1、不使用事务的情况比如 :对一个字段进行相反的操作——加减, 一个sql语句为加 另一个为减 本是两者一起运行维持平衡 但是其中一个sql语句出错(单词拼错) 导致不能执行但是没有出错的依然在执行 则造成的预期相反的后果 此时用事务 将两者放在一起 都成功才执行 一个失败就取消能很好的解决问

2021-12-08 17:40:35 950

原创 JDBC——execute 和 executeUpdate 及一些特殊操作(元数据)

execute和executeUpdate的相同点:execute与executeUpdate的相同点:都可以执行增加,删除,修改不同点不同1:execute可以执行查询语句然后通过getResultSet,把结果集取出来executeUpdate不能执行查询语句不同2:execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等 所以一般会加if语句进行判断为true才会进行结果集返回 因其返回数据是布尔类型数据。

2021-12-07 14:48:48 1221

原创 JDBC——预编译(PreparedStatemen与Statement)性能比较 及防止sql注入式攻击

写在之前:PreparedStatement和 Statement一样,PreparedStatement也是用来执行sql语句的与创建Statement不同的是,需要根据sql语句创建PreparedStatement除此之外,还能够通过设置参数,指定相应的值,而不是Statement那样使用字符串拼接——这样使得使用起来不是很方便 需要进行分别归类 比如查询 和 插入等等这些操作 因为它是根据sql语句内容来的不是直接拼接进去以下示例代码具体感受以下:import java.sql.Conne

2021-12-06 20:49:34 2145

原创 JDBC:MySQL——CRUD and select

以下也就是在Java中连接数据库对其进行操作:CRUD是最常见的数据库操作,即增删改查C 增加(Create)R 读取查询(Retrieve)U 更新(Update)D 删除(Delete)四者都挺相似的 只是传递不同的sql语句select查询语句和CRUD不一样 需要返回数据 较为复杂CRUD的操作都可以在MySQL中进行刷新以此验证以下在Java中均是字符串的形式:1、增加:insert into 表名 values();2、删除delete from hero where

2021-12-05 15:30:13 860

原创 JDBC 针对于MySQL的基本操作以及部分个人发现的细节

JDBC——Java database connection;通过Java对其数据库进行操作 会比自带的sql编辑器更为高效每次在对数据库进行操作的时候都会有的相应操作前提,就如同用eclipse或者idea 创建新的工程要做的前提工作, 换成是其他种类数据库也应如此以下示例是以MySQL作为举例:1、为项目导入mysql-jdbc的jar包访问MySQL数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做Jar的文件里。为了代码能够使用第三方的类,需要为项目导入mysql的专用Jar包

2021-12-04 18:15:45 416

原创 基于学习了SQL server 之后对MySQL的速成的一些注意内容

开源数据库具有免费使用、配置简单、稳定性好、性能优良等特点,而 MySQL 数据库正是开源数据库中的杰出代表。MySQL 具有跨平台性这也是为什么极力推崇学习Linux的缘故Mysql 和 SQL 的语法大致上相同除开部分细微差别:1、SQL的top子句和MySQL的limit和offset 不一样mysql 的limit示例:select * from 表名 limit 0,5SQL的top子句直接跟在其后要显示的前几个2、MySQL相对于SQL也有索引、事务 但是有部分要单独提出:

2021-12-03 21:13:11 614

原创 Linux文件系统的层次结构需要注意的几点

细节:与Windows操作系统不一样的是——在 Linux 操作系统中,所有的文件和目录都被组织成以一个根节点“/”开始的倒置的树状结构Windows操作系统是 ’ \ ’注意:目录名或文件名都是区分大小写的,如 dog、DOG 和 Dog 为 3 个不同的目录或文件。完整的目录或文件路径是由一连串的目录名所组成的,其中每一个目录由“/”来分隔。如 cat 的完整路径是 /home/cat。在文件系统中,有两个特殊的目录,一个是用户所在的工作目录,即当前目录,可用一个点“.”表示;另一个是当前目录

2021-12-02 22:59:43 733

原创 synchronized 细节之处

昨天的博客的遗漏之处——关于线程池有一个LinkedList 的集合用于存储任务线程类为此特别给ThreadPool 类写了一个加线程的方法 使用Synchronized关键字public void add(Runnable r) { synchronized(tasks) { tasks.addFirst(r); tasks.notifyAll(); } }注意:这里不能this.notifyAll(); 因为synchronized()里放着tasks的同步对象所以

2021-12-01 17:16:30 81

空空如也

空空如也

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

TA关注的人

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