Java编程基础 一、前言 什么是编程?编程就是计算机程序告诉计算机应该做些什么,通过编程执行操作。 我们所学习到的Java编程语言是如今Internet上受欢迎的开发与编程语言。 JSE为标准版,主要用于桌面应用软件的编程,其余的以后另讲,如今小白学习的使用就是标准版。 2.java.applet包 java.applet包用来实现运行Java Applet的工具类库。 3.java.awt包 java.awt包是Java抽象窗口工具包。 异常处理 Java的异常处理机制 try { //需要监视异常的代码块 } catch (ExceptionType1 e) { //处理第一种异常 } catch (ExceptionType2 填空题 ①Java分为三个版本,简称为 J2EE 、 J2SE 、 J2ME 。 ② Java编译器将用Java语言编写的源程序编译成 字节码文件 。
1.什么是编程? 就是通过一些人为的编写一串指令(代码)让计算机去解决每一个问题。实现我们想要的结果,达到最终的目的。 2.数据类型和变量 2.1.什么是数据类型? 也就是对数据的分类。 而Java的数据类型有: 整数类型 byte/short/int/long 小数类型 float/double 字符类型 char 真假类型 boolean 这些也都是Java的基本数据类型(八种基本的数据类型 ),Java也存在引用数据类型。 这样也包含了整个开发过程种所需要的各种数据类型,可以是Java本身的数据类型买,也可以是我们自己所编写的数据类型。 运算符 2.1 算术运算符 2.1.1 运算符和表达式 运算符:对常量或者变量进行操作的符号 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
100 64 144 0x64 0144 floats: 3.14 +3e+00 3.141500E+00 A string 类型转换 隐式类型转换 级别 数据类型 1 long double 2
a + 1 b = b + 1 fmt.Println(a, b) c := int16(a) + b fmt.Println(c) } 127 128 -128 128 -127 129 2
burp collaborator client hashmap的put函数 调用hash方法 调用hashCode方法 java反射 Student student = new Student extends Shape { void draw() { System.out.println("Triangle.draw()"); } } jdk和jre的区别 jdk:java 开放工具包 java development kit 提供java的开放环境 和 运行环境 jre :java 运行环境 java runtime environment 提供java运行所需的环境 jdk包括了jre ,如果只运行java程序 安装jre即可 ,如果要编写 java程序 需要安装 jdk java访问修饰符 default 默认访问修饰符 在同一包内 可见 private
Table of Content 计算机基础 java的原子性操作 java的线程通信 java锁机制 reference 计算机基础 Bus 总线的概念 image.png 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线 也就是在任意的时间点, 最多只能有一个处理器可以访问内存, 这个特性确保总线事务之中的内存读写操作具有原子性 java不对long和double类型数据保持原子性, 是因为他们都是8个字节, 64位 , 对32位机器可能会把64拆成两个32, 从而进入不同的事务里,因此很难保证原子性操作 java的原子性操作 java的原子性操作是靠锁和循环的CAS来实现的 java的线程通信 java的线程通信是靠 共享内存 和 消息通信 来是实现的 java锁机制 java的轻量级锁 volatile: 使用了锁的happen-before 原则 锁的happen-before原则保证释放锁和获取锁的两个线程之间的内存可见性 插入内存屏障的目的就是禁止编译器和处理器的重排序 reference java并发编程的艺术
https://louluan.blog.csdn.net/article/details/19974999 1.简述: Java Socket编程时对于TCP/IP 协议层的通信进行封装 //待续 2.Socket 通信时序图 ? 3.Socket 数据流的交互 ? [] args) throws IOException { //1.创建一个Server Socket ServerSocket server = new ServerSocket(); // 2. { //1.创建一个Server Socket ServerSocket server = new ServerSocket(); // 2.绑定监听指定的端口 InetSocketAddress 截图2: ?
网络硬件:计算机 外部设备 通信线路 (连接) 网络软件:网络操作系统 网络管理软件 网络通信协议 (管理和协调) 计算机网络分类1(按照规模) 局域网LAN 城域网MAN 广域网WAN 计算机网络分类2( InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080); InetSocketAddress socketAddress2 localhost”,9000); System.out.println(socketAddress.getHostName()); System.out.println(socketAddress2. Socket实际是网络传输层供给应用层的编程接口。传输层则在网络层的基础上提供进 程到进程问的逻辑通道,而应用层的进程则利用传输层向另一台主机的某一进程通 信。 Socket就是应用层与传输层之间的桥梁 使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通讯 TCP编程 需求:完成网络登录功能:
转载请以链接形式标明出处: 本文出自:103style的博客 Java并发编程的艺术笔记 并发编程的挑战 Java并发机制的底层实现原理 Java内存模型 Java并发编程基础 Java中的锁的使用和实现介绍 Java并发容器和框架 Java中的12个原子操作类介绍 Java中的并发工具类 Java中的线程池 Executor框架 ---- 目录 线程的简介 启动和终止线程 线程间通信 小结 ---- 线程的简介 为什么要使用多线程 目前的处理器核心越来越多,使用多线程能有更快的响应时间,并能有更好的编程模型。 线程 并启动 t1.setDaemon(true); t2.setDaemon(true); t1.start(); t2.start(); //让t1 t2 : time = 1560134045, t1.isInterrupted() = false time = 1560134045, t2.isInterrupted() = true java.lang.InterruptedException
Java 网络编程 基于套接字的通信可以使程序通过指定的套接字进行通信。 套接字是两个主机之间逻辑链接的端点,可以用于发送和接收数据,Java对套接字的处理非常类似于对输入输出操作的处理,因此,程序从socket中读写就像从文件中读写一样容易 Java支持流套接字和数据报套接字 socket.getInputStream(); OutputStream output=socket.getOutputStream(); InputStream流和OutputStream流涌来读取或写入字节 2、 数据报套接字是用用户数据报协议(UDP) Java.net.package包包含两个类DatagramPacket和DatagramSocket类,利用它们可以编写使用数据报在网络上发送和接收分组的程序 需要创建一个空的分组,并在DatagramSocket对象上调用接受分组的receive(packet)方法 5.3、数据报程序设计 数据报没有服务器套接字的概念,从某种意义上说,数据报程序设计不同于流套接字编程
Java并发编程基础 强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 Java语音从开始就内置了对多线程的支持,线程是操作系统的最小单元,多个线程同时执行可以明显提升程序性能。 例如:启动一个Java程序,系统会创建一个Java进程。上文提到操作系统的最小调度单元是线程,线程也被称为***轻量级进程***,一个进程可以创建多个线程。 举个例子吧,一个Java程序,从最开始的mian()方法开始执行,然后按照既定的逻辑执行,看似没有其它的线程参与,但是吧,Java程序本身就是一个多线程的程序。所以。。。 使用多线程的原因,有以下几点 更多的处理器核心 更快的响应时间 更好的编程模型 作者:https://gper.club/articles/7e7e7f7ff7g5agc8g6d
数组在内存中是顺序存储的,所以数组的大小必须是确定的方便分配存储空间 数组属于引用类型,使用默认的的赋值运算符在两个变量之间赋值只是复制了一个引用两个变量共享同一份数据,则改变一个另一个也会相应的改变; 常规PS数组 基础示例 元素2 元素3 元素4 2.数组访问 PS > $arr[0] #元素都是从0下标开始索引的 1 PS > $arr[($arr.Count-1)] #输出最后一个元素 8 PS > $arr [0,1,3,5] ##一次输出多个元素 (值得学习) 1 2 5 7 PS > $arr[($arr.Count)..0] #将数组逆序输出 (值得学习) 8 7 6 5 3 2 1 PS () #一个新的数组不是两个变量指向同一个数组 PS > $arr2.Equals($arr) #这里是为False False PS > $arr2[0]=1024 PS > $arr2 1024 基础示例: PS > [int[]] $num = @() PS > $num += 1024 PS > $num += 3.1415926 #这里由于强制类型的作用(会直接忽略小数点后的数字) PS
1.认识流式编程 1.1流式编程的概念和作用 Java 流(Stream)是一连串的元素序列,可以进行各种操作以实现数据的转换和处理。 流式编程的概念基于函数式编程的思想,旨在简化代码,提高可读性和可维护性。 1.2流式编程可以提高代码可读性和简洁性 声明式编程风格:流式编程采用了一种声明式的编程风格,你只需描述你想要对数据执行的操作,而不需要显式地编写迭代和控制流语句。 2.流的基础示例 2.1 环境搭建 我们首先创建一个演员类。 toList()) // 输入 .forEach(System.out::println); } 结果同样符合我们的预期 3.Stream流的基础知识
for (Type type : types) { for (Type t : types2) { if (some condition) { Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使 用,使程序简洁易读;尽管如此后来的c#还是支持goto语句的,goto语句一个好处就是可以保证程序存在唯一的出口,避免了过于庞大的 可以考虑使用goto的情形:1.从多重循环中直接跳出 ;2. 出错时清除资源; 3.可增加程序的清晰度的情况。 anything to handle the exception. } try { foo = Integer.parseInt(StringThatCouldBeANumberOrNot2) 9.在java中如何对比(compare)string ==对应的是指针相等,也就是他们是否为同一个对象 .equals()对应的是值相等,也就是逻辑相等 因此,如果你想检查两个字符串是否为相同值,那么应该用
【原创】Java并发编程系列2:线程概念与基础操作 伟大的理想只有经过忘我的斗争和牺牲才能胜利实现。 本篇为【Dali王的技术博客】Java并发编程系列第二篇,讲讲有关线程的那些事儿。 主要内容是如下这些: 线程概念 线程基础操作 线程概念 进程代表了运行中的程序,一个运行的Java程序就是一个进程。 线程基础操作 线程创建与运行 Java中有三种线程创建方式,分别为:继承Thread类并重写run方法,实现Runnable接口的run方法,使用FutureTask方式。 使用继承方式,好处在于通过this就可以获取当前线程,缺点在于Java不支持多继承,如果继承了Thread类,那么就不能再继承其他类。 Java并发编程大纲 继续附上Java编程的系统学习大纲以供参考: Java并发编程.png ? 【参考资料】 《Java并发编程之美》
Java网络编程是现代软件开发中不可或缺的一部分,因为它允许不同计算机之间的数据传输和通信。 Java提供了许多网络编程工具和库,用于创建套接字连接、处理数据传输和管理连接。 3. 实现文件共享协议 为了使不同客户端之间能够理解和共享文件,我们需要定义一个文件共享协议。 示例:基于Java的P2P文件共享 让我们通过一个基于Java的简单P2P文件共享示例来更好地理解上述步骤。在这个示例中,我们将使用Java Socket编程来实现P2P文件共享。 1. 2. 构建网络通信 使用Java Socket编程,我们可以轻松地创建客户端和服务器之间的套接字连接。客户端将发送搜索请求和下载请求,服务器将接受这些请求并相应地处理它们。 3. 通过使用Java网络编程,我们可以实现P2P文件共享,让不同的客户端之间可以方便地共享文件。
理论上同时可以有2个线程是并行执行的. : sleep interrupted at java.lang.Thread.sleep(Native Method) at com.xc.day1.Test2.lambda$main$0(Test2 .java:8) at java.lang.Thread.run(Thread.java:748) Process finished with exit code 0 3.8、终止模式之两阶段终止模式 在一个线程T1中如何优雅终止线程T2? at com.xc.day1.Monitor.lambda$start$0(Test2.java:32) at java.lang.Thread.run(Thread.java:748) 处理后续任务
大纲1.网络编程简介2.BIO网络编程3.AIO网络编程4.NIO网络编程之Buffer5.NIO网络编程之实战6.NIO网络编程之Reactor模式1.网络编程简介既然是通信,那么肯定会有两个对端。 2.BIO网络编程(1)BIO即阻塞IO模型(2)BIO编程介绍(3)BIO模型的问题与改进(4)BIO编程的标准模式(5)BIO编程的例子(1)BIO即阻塞IO模型(2)BIO编程介绍服务端提供IP和端口 (1)AIO即异步IO模型(2)AIO编程介绍(3)客户端AsynchronousSocketChannel(4)服务端AsynchronousServerSocketChannel(5)AIO、BIO ; //after get(dst, 0, 2):java.nio.HeapByteBuffer[pos=3 lim=6 cap=32] System.out.println (byte) 'c')不改变position的位置 bb.put(2, (byte) 'c'); //after put(2,(byte) 'c'):java.nio.HeapByteBuffer
Java 开发环境搭建JDK (Java Development Kit):Java 开发的核心工具包,包含编译器 (javac) 和运行环境 (JRE)配置环境变量:设置 JAVA_HOME、PATH 等,确保能在命令行使用 Java 命令IDE 选择:推荐使用 IntelliJ IDEA 或 Eclipse,提供代码提示和调试功能第一个 Java 程序public class HelloWorld ; }}编译运行步骤:int age = 25; // 整数double salary = 5000.50; // 浮点数String name = "Java"
, 6,1.3)//对应arr下标表示第几行,即第几个皇后,arr[i]= val , val表示第i+1个皇后,放在第i+1行的第val+1列 方法重载(OverLoad) 基本介绍 java 中允许同一个类中 基本概念 java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。 public void f3(int... nums1, double... nums2) (X错误) 作用域 基本使用 1.在java编程中,主要的变量就是属性(成员变量) 和 局部变量。 3.java中作用域的分类 全局变量:也就是属性,作用域为整个类体 (Cat类:cry eat等方法使用属性) 局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中! ("this.hashCode=" + this.hashCode()); System.out.println(name + "\t" + age + "\t"); } } java