java基础学习笔记7

Java学习笔记 Java学习笔记 1、连接数据库步骤 2、不同数据库的驱动程序和连接字符串 3、连接数据库常见问题 4、B/S结构和C/S结构的区别 5、如何处理中文乱码问题 6、使用JavaMail发送注册验证邮件 7、不安全的用户名密码验证 8、用Session保存登录信息 9、面向对象分析通常分为三个步骤 10、使用DataSource接口连接数据源 11、避免表单重复提交的技术 12、表单的GET和POST方法的区别 13、使用HttpServletRequest对象获得更多客户端信息 14、JSP实现多数据分页 立即下载

java基础学习笔记7

网络

Ip地址

四个字节 每个字节最大到255

提供独一无二的IP地址

TCP

可靠,传输慢

UDP

不可靠,传输慢。QQ聊天

Socket

网络编程也叫Socket编程

端口号

计算机每个进程都有一个或多个端口

TCP Socket模型

image-20201002135458506

代码实现:

半双工聊天:

talkserver

package com.ufo.nine;

import java.io.*;
import java.net.*;
import java.applet.Applet;
public class talkserver
{
	public static void main(String args[])
	{
		try
		{
			ServerSocket server = null;
			try
			{
				server = new ServerSocket(4700);
			}catch(Exception e)
			{
				System.out.println("can not listen to:" + e);
			}
			Socket socket = null;
			try
			{
				socket = server.accept();
			}catch(Exception e)
			{
				System.out.println("Error:" + e);
			}
			String line;
			BufferedReader is = new BufferedReader(new InputStreamReader(
				socket.getInputStream()));
			PrintWriter os = new PrintWriter(socket.getOutputStream());
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("Client:" + is.readLine());
			line = sin.readLine();
			while (!line.equals("bye"))
			{
				os.println(line);
				os.flush();
				System.out.println("Server:" + line);
				System.out.println("Client:" + is.readLine());
				line = sin.readLine();
			}

			is.close();
			os.close();
			socket.close();
			server.close();
		}catch(Exception e)
		{
			System.out.println("Error" + e);
		}
	}
}

talkclient

package com.ufo.nine;

import java.io.*;
import java.net.*;
public class talkclient
{
	public static void main(String args[])
	{
		try
		{
			Socket socket = new Socket("127.0.0.1",4700);
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
			PrintWriter os = new PrintWriter(socket.getOutputStream());
			BufferedReader is = new BufferedReader(new InputStreamReader(
				socket.getInputStream()));
			String readline;
			readline = sin.readLine();
			while (!readline.equals("bye"))
			{
				os.println(readline);
				os.flush();
				System.out.println("Client:" + readline);
				System.out.println("Server:" + is.readLine());
				readline = sin.readLine();
			}
			os.close();
			is.close();
			socket.close();
		}catch(Exception e)
		{
			System.out.println("Error" + e);
		}
	}
}

全双工聊天:参考https://blog.youkuaiyun.com/jiahao1186/article/details/82715859

亲测可用!

单工、半双工、全双工定义

单工:
在单一的通路上端与端进行信息交流,若规定A为数据发送方,则B为数据接收方;
数据的传输是单向的,只能沿着一个方向。

半双工:
在单一的通路上端与端进行信息交流,规定在同一时间段只能一方发送一方接收,
例如:A方发送数据时,B方只能接收数据;或者B方发送数据时A方只能接收数据;
双方不能同时发送数据。
数据可以双向传递,但是同一个时段只能进行一个方向的传递。

双工:
在A方发送数据时,B方可以同时发送数据,一般需要两条通道。
通信的双方可以同时发送和接收数据。

UDP socket

关键:用DatagramPacket这个类打包数据

用DatagramSocket传输数据

TestUDPClient

package com.ufo.nine.testudp;

import java.net.*;
import java.io.*;

public class TestUDPClient {
    public static void main(String args[]) throws Exception {
        long n = 10000L;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        dos.writeLong(n);   //把需要发送的数据转成基本数据流

        byte[] buf = baos.toByteArray();   //字节数组流转为字节数组
        System.out.println(buf.length);    //打印一下长度

        DatagramPacket dp = new DatagramPacket(buf, buf.length,
                new InetSocketAddress("127.0.0.1", 5678)
        );//通过DatagramPacket,把需要发送的数据,InetSocketAddress目标地址和端口号,装进去)
        DatagramSocket ds = new DatagramSocket(9999); //DatagramSocket设定自己的端口号
        ds.send(dp);
        ds.close();

    }
}

TestUDPServer

package com.ufo.nine.testudp;

import java.net.*;
import java.io.*;

public class TestUDPServer
{
	public static void main(String args[]) throws Exception
	{
		byte buf[] = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf, buf.length); //通过DatagramPacket初始化接受对象
		DatagramSocket ds = new DatagramSocket(5678);   //设定自己的端口号
		while(true)
		{
			ds.receive(dp);    //一直接受
			ByteArrayInputStream bais = new ByteArrayInputStream(buf);//各种转换
			DataInputStream dis = new DataInputStream(bais);//各种转换
			System.out.println(dis.readLong());//打印内容
		}
	}
}

没多大用处。

全双工udp聊天:https://blog.youkuaiyun.com/qq_35341203/article/details/90115898

亲测可用!

GUI

Awt在不同机器上展示效果不同

Swing相同

核心:

image-20201002142648861

container比较特殊,container里面还可以放component,也可也放container。

Frame就是窗口,可直接展示出来。

Penle需要加入在Frame重才能展示出来。

image-20201002143520800

布局管理器:

Awt提供了5种布局管理器类:
FlowLayagt,BorderLayout,GridLayou,CardLayout,GridBagLayout


FlowLayagt

package com.ufo.nine.gui;

import java.awt.*;

public class test2 {

    public static void main(String[] args) {
        Frame f=new Frame("此处是标题");
        Button b1=new Button("这个是button的lable");
        Button b2=new Button("这个是button的lable");
        Button b3=new Button("这个是button的lable");
        f.setLayout(new FlowLayout());
        f.add(b1);
        f.add(b2);
        f.add(b3);
        f.setSize(100,100);
        f.setVisible(true);
    }
}

image-20201002143955830

BorderLayout

image-20201002144324945

GridLayout

GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区
域大小相等。组件被添加到每个单元格中,先从左到右添满一行后换
行,再从上到下。
在GridLayout构造方法中指定分割的行数和列数:GridLayout(4,4)

image-20201002144436803

Panel默认布局FloatLayout

Frame默认布局BordertLayout

事件模型

重点:实现Actionlistener接口,重写actionPerformed方法.

把这个类的对象放到button.addActionListener这个函数里面。

在重写的actionPerformed方法里面,会自动传入当前对象的相关信息。

ActionEvent e就是自动传入的,可以通过这个e来区分不同的元件。

例子1:基础点击事件,点击一下,打印台打印一下

package com.ufo.nine.gui;

import java.awt.*;
import java.awt.event.*;

public class TestActionEvent {
    public static void main(String args[]) {
			Frame f = new Frame("Test");
			Button b = new Button("Press Me!");
			Monitor bh = new Monitor();
			b.addActionListener(bh);
			f.add(b,BorderLayout.CENTER);
			f.pack();
			f.setVisible(true);
    }
}

class Monitor implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        System.out.println("a button has been pressed");    
    }
}

例子2:弄一个输入框,输入什么东西,回车,打印什么东西出来

package com.ufo.nine.gui;

import java.awt.*;
import java.awt.event.*;

public class TFActionEvent {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new TFFrame();
	}

}

class TFFrame extends Frame
{
	TFFrame()
	{
		TextField tf = new TextField();
		add(tf);
		tf.addActionListener(new TFActionListener());
		pack();
		setVisible(true);
	}
}

class TFActionListener implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{
		TextField tf = (TextField)e.getSource();
		System.out.println(tf.getText());
		tf.setText("");
	}
}

TextFiled可以通过setEchoChar("*")设置回显字符,把密码变成✳展示出来。

问题:如果点击其中一个按钮,需要取获取别的元件的相关信息,怎么办?

使用内部类。内部类可以访问包装他的那个类的成员。

内部类编译后产生的class文件由包装类名$内部类名构成。

例子3:模拟计算机的加法:使用内部类。

package com.ufo.nine.gui2;

import java.awt.*;
import java.awt.event.*;

public class TFMath {
    public static void main(String[] args) {
        new TFFrame().launchFrame();
    }
}

class TFFrame extends Frame {
    TextField num1, num2, num3;

    public void launchFrame() {
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(15);
        Label lblPlus = new Label("+");
        Button btnEqual = new Button("=");
        btnEqual.addActionListener(new MyMonitor());
        setLayout(new FlowLayout());
        add(num1);
        add(lblPlus);
        add(num2);
        add(btnEqual);
        add(num3);
        pack();
        setVisible(true);
    }

    private class MyMonitor implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int n1 = Integer.parseInt(num1.getText());
            int n2 = Integer.parseInt(num2.getText());
            num3.setText("" + (n1 + n2));
        }
    }

}

image-20201002145814955

Graphics画图

关键:定义一直只Graphics画笔对象,然后调用它的函数。具体用法参考api文档。

    pack();
    setVisible(true);
}

private class MyMonitor implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        int n1 = Integer.parseInt(num1.getText());
        int n2 = Integer.parseInt(num2.getText());
        num3.setText("" + (n1 + n2));
    }
}

}

Graphics画图

关键:定义一直只Graphics画笔对象,然后调用它的函数。具体用法参考api文档。

image-20201002150116073

FAST-LIO2实战:如何在无人机上部署并实现厘米级定位(附ROS配置全流程) 本文详细介绍了如何在无人机上部署FAST-LIO2激光雷达惯性里程计系统,以实现厘米级精确定位。内容涵盖从硬件选型(如激光雷达与机载计算机)、软件环境配置(ROS Noetic)、传感器标定,到FAST-LIO2参数调优、与PX4飞控集成以及实际飞行测试的全流程。重点解决了实时定位中的外参标定、数据同步等关键问题,为无人机在无GPS或复杂光照环境下提供稳定可靠的定位解决方案。 阅读详情

相关推荐

VirtualBox 7.0.8 + Android-x86 9.0 保姆级安装教程(附图形界面卡顿解决方案)

本文提供VirtualBox 7.0.8与Android-x86 9.0的详细安装教程及性能优化方案,帮助开发者解决图形界面卡顿问题。从环境准备到高级配置,涵盖硬件要求、安装步骤、显存优化及ADB调试等实用技巧,显著提升虚拟机流畅度,适用于应用测试和开发调试。

weixin_29224309的博客 528

Java基础知识笔记整理(零基础学Java)

文章目录前言java语言特性java的编译与运行JDK、JRE、JVM字符编码数据类型标识符命名方法Java小知识数组一维数组二维数组逻辑运算符 前言 以下是一名java初学者在自学过程中所整理的笔记,欢迎大家浏览并留言,若有错误的地方请大家指正。 java语言特性 简单性:相对于其他编程语言而言,java较为简单,例如:java不再支持多继承,C++是支持多继承的,多继承比较复杂,C++中有指针,java中屏蔽了指针的概念等,这里说明一下,java语言低层是用C++实现的,并不是C语言。 面向对象:ja

风小风的博客 2万+

Ubuntu22.04下,用Fast-LIVO2+3DGS重建桌面小物件:从点云到高清模型的保姆级避坑实录

本文详细介绍了在Ubuntu22.04环境下,使用Fast-LIVO2与3DGS技术进行桌面小物件三维重建的完整流程。从环境配置、数据采集到点云-图像对齐和3DGS训练,提供了针对小物件优化的参数设置和避坑指南,帮助用户实现媲美商业扫描仪的高清模型重建效果。

weixin_30897233的博客 399

《Java jdk7学习笔记》PDF版

《Java jdk7学习笔记》PDF版

清图出版 284

从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路

本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。

mqtt6iot的博客 717

e-puck场景搭建

可以注意到一个黑色的小窗口出现在三维视图的左上角。它显示了电子吸盘机器人的摄像头拍摄的图像。该图像将保持黑色,直到机器人的控制器明确启用相机。最后,单击右上角的“x”可以关闭它。在对话框中,选择PROTO节点(Webots项目)/robots/gctronic/e-puck/e-puck(Robot)。一个电子吸盘机器人应该出现在竞技场的中央。通过按Alt+左键单击+拖动,对机器人施加力。无法对WoodenBox节点施加力,因为默认情况下,它们没有质量,并且被视为粘在地板上。将新控制器与机器人链接。

weixin_66540163的博客 769

java jdk 7学习笔记 林信良_Java JDK 7学习笔记(林信良) PDF_IT教程网

资源名称:Java JDK 7学习笔记(林信良) PDF《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之...

weixin_34093899的博客 409

STM32新手必看:3分钟搞定ST官网资料下载(附F0系列手册+外设库下载技巧)

本文为STM32开发新手提供高效获取ST官网技术资料的完整指南,重点介绍如何快速下载STM32F0系列数据手册和外设库。通过系统性的资源分类解析和实用下载技巧,帮助开发者快速定位所需文档,建立本地知识库,提升开发效率。

ujm5678901的博客 270

java jdk 7学习笔记 林信良_《Java JDK 7学习笔记》 林信良, 编著 【正版电子纸书阅读_PDF下载】- 书问...

目录Chapter 1 Java平台概论1.1 Java不只是语言1.1.1 前世今生1.1.2 三大平台1.1.3 JCP与JSR1.1.4 建议的学习路径1.2 JVM/JRE/JDK1.2.1 什么是JVM1.2.2 区分JRE与JDK1.2.3 下载、安装JDK1.2.4 认识JDK安装内容1.3 重点复习1.4 课后练习Chapter 2 从JDK至IDE2.1 从Hello World...

weixin_35779506的博客 332

IDCNBSAIS-财务报表功能范围取值管理费用、销售费用、研发费用排除指定科目的实现

研究了很多方法,没有办法实现,只在营业费用增加一个冲抵项解决,也咨询了外部顾问说要建立自建表。限于需要马上修正后面只能用了最最low的办法处理了一下。公司遇到的一个问题,目前报表有些项目是按照功能范围取值的,发现取多了。IDCNBSAIS-财务报表功能范围取值管理费用、销售费用、研发费用排除指定科目的实现。最后结果是正确的,但是总觉得有更好的办法,不知道有没有高人可以指点一下?建立一个调整项的目录,在每个节点做了调整。除了研发费用做了冲抵在以下每个节点都做了冲抵。为财务报表定义表格结构。

nopicture的博客 1494

SerDes电路的PCB仿真设计规则及策略

SerDes的PCB设计中,重点工作是使用3D 电磁 (EM) 场求解器,进行过孔结构优化,包括 BGA的扇入和扇出区域以及布线的过孔区域,并且,利用连接器供应商提供加密的 3D 模型,进行连接器和 PCB 的级联仿真,最终获取系统级的通道性能参数,如插入损耗、回波损耗、串扰和模式转换、阻抗曲线等,如果发现任何缺陷,再进行进一步优化,这一过程中,推荐进行拆分仿真,以提高设计效率。

一只豌豆象的博客 2193

Java jdk7学习笔记

l  Jworld@TW技术论坛版主,Java权威技术顾问与专业讲师,Java畅销书作者——林信良全新力作。 l  国内第一本Java 7,前期版本累计销量5万册。 l  《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。 l  《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇

清图出版 7347

【WRF理论】配置诊断变量 &diags

【WRF理论】配置诊断变量 &diags

WW、forever的博客 137

Java入门学习笔记 -- Day7

本篇文章主要介绍了Java面向对象编程中的三个高级特性: final关键字 final可以修饰类、方法和变量 修饰类表示不可继承,修饰方法表示不可重写,修饰变量表示只能赋值一次 特别介绍了static final常量的使用场景和优势 单例设计模式 讲解了单例模式的作用和两种实现方式 饿汉式:类加载时就创建唯一实例 懒汉式:首次调用时才创建实例 枚举类 枚举类的特性和语法规则 枚举常量本质上是枚举类的实例对象 枚举类构造器默认私有,不能外部实例化 文章通过代码示例详细演示了各特性的具体实现方式和使用场景,帮助

qq_51915532的博客 417

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java存入光盘_java 这是 学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手 的好 Develop 238万源代码下载- www.pudn.com...

文件名称: java下载 收藏√ [5 4 3 2 1]开发工具: Java文件大小: 1272 KB上传时间: 2013-04-01下载次数: 18提 供 者: 孙鹏启详细说明:这是java学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手学习的好资料-This book java study notes (jdk7) CD source, I do not k...

weixin_27791839的博客 131

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java学习笔记7

代码化块,属于类中的成员[是类的一部分],类似于方法,将逻辑语句封装在方法体中。用{}括起来。Tips:类的成员:成员变量,成员方法,构造方法,内部类,代码块。代码块和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不通过对象或类显式调用,而是加载类时,或创建对象时隐式调用。为什么有抽象类?当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。所谓抽象方法就是没有实现的方法,没有方法体。类的内部又定义了一个类,这个类称为内部类。

Wi11iam_Lee的博客 1575

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java学习笔记7

参考资料:【【零基础 快速学Java】韩顺平 零基础30天学会Java】BV1fh411y7R8。

kwert666的博客 866

java 7 学习笔记_Java学习笔记7

JDBCJDBC的全称为:Java Database Connectivity,即java数据库连接。 使用JDBC开发程序,不仅可以跨数据库,而且还是跨平台的,也就是说使用JDBC开发的程序可以在windows和unix上使用,同时可以针对mysql和oracle等其他数据库,而程序不需要做任何的修改。mysql的连接命令如下:mysql -p 密码 -u 用户名 -h 主机名这也可以连接远程主...

weixin_34917128的博客 97

JAVA基础7-Stream基础学习笔记

Stream学习笔记Stream概念来源概念特点特性Stream创建方法通过Stream静态方法通过collection方法通过Arrays静态方法Stream通用语法Stream的常用方法中间操作(转换)无状态操作有状态操作最终操作(归纳(reduce))非短路操作短路操作ComparatorCollectors并行操作底层原理其他说明Optional操作 Stream概念 来源 Java 8 ......

代码让AI扣 6988
上一篇: java基础学习笔记6
下一篇: springboot狂神版
UFOO2
博客等级 码龄6年 7粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值