Java编程基础 一、前言 什么是编程?编程就是计算机程序告诉计算机应该做些什么,通过编程执行操作。 我们所学习到的Java编程语言是如今Internet上受欢迎的开发与编程语言。 JSE为标准版,主要用于桌面应用软件的编程,其余的以后另讲,如今小白学习的使用就是标准版。 引用数据类型包括3种:类(class)、接口(interface)、数组(array)。 java.lang包:核心语言包;java.awt包:抽象窗口工具集包;java.io包:输入/输出包;java.util包:使用工具包。 程序的流程 共3种:顺序结构,选择结构和循环结构。 2.java.applet包 java.applet包用来实现运行Java Applet的工具类库。 3.java.awt包 java.awt包是Java抽象窗口工具包。
1.什么是编程? 就是通过一些人为的编写一串指令(代码)让计算机去解决每一个问题。实现我们想要的结果,达到最终的目的。 2.数据类型和变量 2.1.什么是数据类型? 也就是对数据的分类。 而Java的数据类型有: 整数类型 byte/short/int/long 小数类型 float/double 字符类型 char 真假类型 boolean 这些也都是Java的基本数据类型(八种基本的数据类型 ),Java也存在引用数据类型。 这样也包含了整个开发过程种所需要的各种数据类型,可以是Java本身的数据类型买,也可以是我们自己所编写的数据类型。 3. 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。
运算符 算数运算符 运算符 作用 = 赋值 + 加法或正号 - 减法或负号 * 乘法 / 除法 % 取余 ++ 自加 -- 自减 关系运算符 运算符 作用 == 相等 > 大于 < 小于 != 不等于 >= 大于等于 <= 小于等于 逻辑运算符 运算符 作用 && 逻辑与 || 逻辑或 ! 逻辑非 位运算符 运算符 作用 & 位与 | 位或 ^ 位异或 ~ 位非 << 位左移 >> 位右移 复合赋值运算符 运算符 作用 += 加法后赋值 -= 减法后赋值 *= 乘法后赋值 /= 除法后赋值 %=
单常量定义 package main import ( "fmt" ) const c1 string = "2020-3-8" const c2 = "2020-3-8" func main( ) { fmt.Println(c1) fmt.Println(c2) } 2020-3-8 2020-3-8 多常量定义 package main import ( "fmt" ) const c1, c2 = "2020-3-8", "2020-3-9" func main() { fmt.Println(c1) fmt.Println(c2) } 2020-3-8 2020-3-9 特殊方式 package main import ( "fmt" ) const ( c1 = "2020-3-8" c2 = "2020-3-9" ) func main() { fmt.Println (c1) fmt.Println(c2) } 2020-3-8 2020-3-9
转自:java并发编程实战 5.3阻塞队列和生产者-消费者模式 BlockingQueue阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法。 /** * java并发编程实战 * 5.3.1桌面搜索 * 爬虫查找所有文件并放入队列 * Created by mrf on 2016/3/7. */ public class FileCrawler /** * java 并发编程实战 * 5-14使用Semaphore做容器设置边界 * 信号量 * Created by mrf on 2016/3/8. */ public class BoundedHashSet 并发编程实战 * 5-16使用HashMap和不同机制来初始化缓存 * 实现将曾经计算过的命令缓存起来,方便相同的计算直接出结果而不用重复计算 * Created by mrf on 2016/3 不可变对象能极大地降低并发编程的复杂性。他们更为简单而且可以任意共享而无须使用加锁或保护性复制等机制。 封装有助于管理复杂性。
) (3)Java EE:Java的企业级应用平台 2、跨平台特性——得益于java虚拟机的设计(可以运行在不同操作系统上,避免了java程序与操作系统直接接触,可以说是透明的) 可以看上图,非常清晰明了 ,java程序通过Java虚拟机在不同操作系统中运行,可以说java虚拟机是java语言得以大力发展的一大主要诱因,具体java虚拟机的原理,可以参考一位大神写的博客:深入理解Java虚拟机到底是什么 Java虚拟机——Java Virtual Machine,JVM 3、Java应用程序 (1)Application:能够独立运行的应用程序,有控制台和图形用户界面两种运行方式 (2)Applet:是可以嵌入 System.out.println("one"); case 10: System.out.println("ten"); case 5: System.out.println("five"); case 3: : System.out.println("ten"); break; case 5: System.out.println("five"); break; case 3:
转载请以链接形式标明出处: 本文出自:103style的博客 Java并发编程的艺术笔记 并发编程的挑战 Java并发机制的底层实现原理 Java内存模型 Java并发编程基础 Java中的锁的使用和实现介绍 Java并发容器和框架 Java中的12个原子操作类介绍 Java中的并发工具类 Java中的线程池 Executor框架 ---- 目录 线程的简介 启动和终止线程 线程间通信 小结 ---- 线程的简介 为什么要使用多线程 目前的处理器核心越来越多,使用多线程能有更快的响应时间,并能有更好的编程模型。 TimeUnit.SECONDS.sleep(3); //中断线程 t1.interrupt(); t2.interrupt(); //获取中断状态 3.notify()或notifyAll()方法调用后,等待线程依旧不会从wait()返回,需要调用notify()或notifAll()的线程释放锁之后,等待线程才有机会从wait()返回。
网络管理软件 网络通信协议 (管理和协调) 计算机网络分类1(按照规模) 局域网LAN 城域网MAN 广域网WAN 计算机网络分类2(传输介质) 同轴电缆网络 双绞线网络 光纤网络 卫星网络 计算机网络分类3( IP地址分类 IPV4:32位地址,以点分十进制表示,如192.168.0.1 IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,数 之间用冒号(:)分开,如:3ffe Socket实际是网络传输层供给应用层的编程接口。传输层则在网络层的基础上提供进 程到进程问的逻辑通道,而应用层的进程则利用传输层向另一台主机的某一进程通 信。 Socket就是应用层与传输层之间的桥梁 使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通讯 TCP编程 需求:完成网络登录功能: 用户输入用户名密码,服务器给出登录成功或失败的提示 分析 使用基于TCP协议的Socket网络编程实现 TCP协议基于请求-响应模式 在网络通讯中,第一次主动发起通讯的程序被称 作客户端(Client
https://louluan.blog.csdn.net/article/details/19974999 1.简述: Java Socket编程时对于TCP/IP 协议层的通信进行封装 3.Socket 数据流的交互 ? 绑定监听指定的端口 InetSocketAddress address = new InetSocketAddress("localhost",18824); server.bind(address); // 3. InetSocketAddress address = new InetSocketAddress("localhost",18824); socket.connect(address); // 3. send.addActionListener(updater); container.add(send, BorderLayout.SOUTH); setDefaultCloseOperation(3)
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并发编程的艺术
Java 网络编程 基于套接字的通信可以使程序通过指定的套接字进行通信。 套接字是两个主机之间逻辑链接的端点,可以用于发送和接收数据,Java对套接字的处理非常类似于对输入输出操作的处理,因此,程序从socket中读写就像从文件中读写一样容易 Java支持流套接字和数据报套接字 还可以使用静态方法getByName通过主机名或IP地址创建InetAddress的一个实例: InetAddress address=InetAddress.getByName(“www.bit.edu.cn”) 3、 数据报套接字是用用户数据报协议(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
1.认识流式编程 1.1流式编程的概念和作用 Java 流(Stream)是一连串的元素序列,可以进行各种操作以实现数据的转换和处理。 1.2流式编程可以提高代码可读性和简洁性 声明式编程风格:流式编程采用了一种声明式的编程风格,你只需描述你想要对数据执行的操作,而不需要显式地编写迭代和控制流语句。 2.流的基础示例 2.1 环境搭建 我们首先创建一个演员类。 Stream流的基础知识 3.1 什么是 Stream Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。 例如: Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);java Stream<Integer> skippedStream = stream.skip
(Arrays.toString(c)); } } 输出 [1, 2, 3, 3, 4, 5] 献上Apache Commons Lang的API文档地址http://commons.apache.org 13.Java是否支持默认的参数值? =false); 那在 java 中,是否也支持这样的定义方式? 类 随机是java提供的一个伪随机数生成器。 (我的理解:JavaBean是一个特殊的Java类,1.类是public类型的。2.属性都是private类型的。3.有一个无参的public构造方法。
= cv2.imread('dog.jpeg', flags=cv2.IMREAD_GRAYSCALE) cv2.imshow('dog', image) cv2.waitKey(0) 运行结果: 3、 下面来举个例子,代码如下, import cv2 import numpy as np from scipy import ndimage kernel_3x3 = np.array([ [- = ndimage.convolve(img, kernel_3x3) k5 = ndimage.convolve(img, kernel_5x5) GBlur = cv2.GaussianBlur( img, (11, 11), 0) g_hpf = img - GBlur cv2.imshow('img', img) cv2.imshow('3x3', k3) cv2.imshow('5x5', drawContours(img, contours, -1, (255, 0, 0), 1) cv2.imshow("contours", img) cv2.waitKey(0) 运行结果: 总结: 基础知识先学这么多
一、前言 网络通讯在系统交互中是必不可少的一部分,无论是面试还是工作中都是绕不过去的一部分,本节我们来谈谈Java网络编程中的一些知识,本chat内容如下: 网络通讯基础知识,剖析网络通讯的本质和需要注意的点 使用Java BIO阻塞套接字 实现简单TCP网络通讯 使用Java NIO 非阻塞套接字实现简单非阻塞TCP网络通讯 JavaIO模型与Java NIO中ByteBuffer 二、 网络通讯基础知识 五、 Java IO模型与Java NIO中ByteBuffer 5.1 Java IO模型 [image.png] 如上图当网络应用进程向socket写入数据时候,首先需要在应用程序内申请一个写buffer address = base + ps - (base & (ps - 1)); } else { address = base; } //3. 六、更多 更多参考 Java 网络编程基础篇 Java NIO 框架 Netty 之美:基础篇之一 ](https://gitbook.cn/gitchat/activity/5b01714ca0810c23901c55ac
基本概念 java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。 {//3个数的和 // return n1 + n2 + n3; // } // public int sum(int n1, int n2, int n3, int 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
关闭连接池 service.shutdown(); } } 3、线程运行原理 3.1、虚拟机栈与栈帧 虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧 当Java中使用多线程时,每个线程都会维护它自己的栈帧! .java:8) at java.lang.Thread.run(Thread.java:748) Process finished with exit code 0 3.8、终止模式之两阶段终止模式 监控器运行中... java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at com.xc.day1.Monitor.lambda$start$0(Test2.java:32) at java.lang.Thread.run(Thread.java:748) 处理后续任务
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"
在学习Java网络编程之前,先来了解一下涉及到的基础概念。 对于32位操作系统,它的寻址空间(虚拟存储空间)为4G(2的32次方),linux操作系统中将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)供内核使用,称为内核空间,而将较低的3G (3)把数据从内核空间拷贝到用户空间。 (4)内核返回结果,用户进程解除阻塞。 非阻塞IO (1、3)用户进程发起read,进行recvfrom系统调用,如果数据还没准备好就直接返回。 (3)当任何一个socket中的数据准备好了,select就会返回。 (4)这个时候用户进程调用read操作。 (5)将数据从内核拷贝到用户空间缓存,在此期间用户进程会被阻塞。 ---- 转载请注明出处——胡玉洋 《Java网络编程——基础概念》