数组 #include <stdio.h> int main() { int a[] = {1, 2, 3, 4, 5}; for (int i = 0; i < 5; i++) { printf("a[%d] = %d\n", i, a[i]); } return 0; } a[0] = 1 a[1] = 2 a[2] = 3 a[3] = 4 a[4] = 5 多维数组 #include <stdio.h> int main() { short
可以一次返回多个返回值,Go 语言中如果是单返回值,可以直接在函数声明的括号后面增加数据类型。
Java编程基础 一、前言 什么是编程?编程就是计算机程序告诉计算机应该做些什么,通过编程执行操作。 我们所学习到的Java编程语言是如今Internet上受欢迎的开发与编程语言。 JSE为标准版,主要用于桌面应用软件的编程,其余的以后另讲,如今小白学习的使用就是标准版。 2.java.applet包 java.applet包用来实现运行Java Applet的工具类库。 3.java.awt包 java.awt包是Java抽象窗口工具包。 4.java.io包 java.io包是Java语言的标准输入/输出类库。 5.java.net包 java.net包是Java网络包,主要实现网络功能。 知识准备 面向过程和面向对象 面向过程是以过程为中心的编程方法 面向对象是以对象为中心的编程方法 静态成员 静态成员用static关键字进行修饰,表示静态的意思,可以用来修饰成员变量和成员方法,也可以形成静态代码块
1.什么是编程? 就是通过一些人为的编写一串指令(代码)让计算机去解决每一个问题。实现我们想要的结果,达到最终的目的。 2.数据类型和变量 2.1.什么是数据类型? 也就是对数据的分类。 而Java的数据类型有: 整数类型 byte/short/int/long 小数类型 float/double 字符类型 char 真假类型 boolean 这些也都是Java的基本数据类型(八种基本的数据类型 ),Java也存在引用数据类型。 这样也包含了整个开发过程种所需要的各种数据类型,可以是Java本身的数据类型买,也可以是我们自己所编写的数据类型。 数据类型 关键字 内存占用 取值范围 整数 byte 1 负的2的7次方 ~ 2的7次方-1(-128~127) short 2 负的2的15次方 ~ 2的15次方-1(-32768~32767)
2)八进制:0 - 7,满 8 进 1,以数字0开头。 3)十进制:0 - 9,满 10 进 1。 演示: 0237 => 0 3(011) 3(011) 7(111) => 0b11011111 // 八进制转二进制 0x23b => 0x 3(0011) 3(0011) b(1011) = 0b001100111011
字符串类: String类、StringBuffer类和StringBuilder类 String类和StringBuffer类都在Java的lang包中,并被定义为最终(final) 类,不能再派生子类 String类 String类被Java的开发者构造得非常接近基本数据类型,换句话说,在很多时候可以象用基本数据类型一样来使用tring类 构造方法: String s; //声明了一一个空字符串sString 判断一一个字符串是否包含指定的字符子串或指定的字符 ●两个字符串对象恒等比较 ●两个字符串对象大小比较 ●字符串连结,字符替换和字符串大小写转换 ●字符串截取 ●把基本数据类型转换为字符串 ●把字符串转换为字节数组或字符数组 ●Java 中可以使用关系运算符“==”判定两个字符串是否相等 ●与equals(方法不同的是,“==”判定两字符串对象是否是同一实例,即它们在内存中的存储空间是否相同 1、Java中可以使用关系运算符“==”判定两个字符串是否相等 JAVA基础 | java基础6(IO) 2. JAVA基础 | java基础5(异常介绍) ?
status状态有6种:new, runnable, blocked, waiting, time waiting, terminated
一、概述 1、三大平台 (1)java ME:嵌入式应用(小型设备,比如移动通信,智能卡,电视机顶盒等) (2)Java SE:桌面级应用(也就是Eclipse一类的应用,Java SE SDK也简称JDK ) (3)Java EE:Java的企业级应用平台 2、跨平台特性——得益于java虚拟机的设计(可以运行在不同操作系统上,避免了java程序与操作系统直接接触,可以说是透明的) 可以看上图,非常清晰明了 ,java程序通过Java虚拟机在不同操作系统中运行,可以说java虚拟机是java语言得以大力发展的一大主要诱因,具体java虚拟机的原理,可以参考一位大神写的博客:深入理解Java虚拟机到底是什么 ,其中java.exe就代表了java虚拟机 4、Java API的常用包 5、关键字和标识符(以前总是搞混,复习的时候,记录一下) (1)关键字(keywords)——java语言定义的,具有特定含义的词 ,如果是多个单词,第二个单词首字母可以大写,比如setPeople (4)常量:一般全部要大写(定义就是添加一个final关键字即可),如下面所示 final int MY_SCORE = 100; 7、
转载请以链接形式标明出处: 本文出自:103style的博客 Java并发编程的艺术笔记 并发编程的挑战 Java并发机制的底层实现原理 Java内存模型 Java并发编程基础 Java中的锁的使用和实现介绍 Java并发容器和框架 Java中的12个原子操作类介绍 Java中的并发工具类 Java中的线程池 Executor框架 ---- 目录 线程的简介 启动和终止线程 线程间通信 小结 ---- 线程的简介 为什么要使用多线程 目前的处理器核心越来越多,使用多线程能有更快的响应时间,并能有更好的编程模型。 这意味着,当一个Java虚拟机中不存在非Daemon线程的时候,Java虚拟机将会退出(Daemon线程不一定会执行完)。 : sleep interrupted at java.lang.Thread.sleep(Native Method) at java.lang.Thread.sleep(Thread.java:
Socket实际是网络传输层供给应用层的编程接口。传输层则在网络层的基础上提供进 程到进程问的逻辑通道,而应用层的进程则利用传输层向另一台主机的某一进程通 信。 Socket就是应用层与传输层之间的桥梁 使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通讯 TCP编程 需求:完成网络登录功能: 用户输入用户名密码,服务器给出登录成功或失败的提示 分析 使用基于TCP协议的Socket网络编程实现 TCP协议基于请求-响应模式 在网络通讯中,第一次主动发起通讯的程序被称 作客户端(Client ObjectOutputStream,与平台无关,输入流相应使 用DataIntputStream和ObjectInputStream 如果是字符串通信也可以使用BufferedReader和PrintWriter,简单方便 UDP编程 需求:完成在线咨询功能: 客户和咨询师在线交流 分析 使用基于UDP协议的Socket网络编程实现 不需要利用IO流实现数据的传输 每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中
https://louluan.blog.csdn.net/article/details/19974999 1.简述: Java Socket编程时对于TCP/IP 协议层的通信进行封装 ; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetSocketAddress ; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket ; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List ; import java.io.PrintWriter; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date
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支持流套接字和数据报套接字 服务器套接字可以有多个连接,while循环的每次迭代创建一个新的连接,无论何时,只要建立一个新的连接,就创建一个新线程来处理服务器与新客户之间的通信,这样,就可以有多个连接同时运行 4、从Web服务器上读取文件 Java 数据报套接字是用用户数据报协议(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 环境搭建 我们首先创建一个演员类。 toList()) // 输入 .forEach(System.out::println); } 结果同样符合我们的预期 3.Stream流的基础知识
7. 线程安全 7.1 线程安全的定义 如果多线程下使用这个类,不过多线程如何使用和调度这个类,这个类总是表示出正确的行为,这个类就是线程安全的。 如果是开发自己的管理工具,需要用更加程序化的方式扫描服务进程、定位死锁,可以考虑使用 Java 提供的标准管理 API,ThreadMXBean,其直接就提供 findDeadlockedThreads 在现代 Java 中,内存排序模型(JMM)已经非常完善,通过 volatile 的 write 或者 read,能保证所谓的 happen-before,也就是避免常被提到的指令重排。
当声明一个方法或变量为使用static关键字时,就意味这这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域
一、前言 网络通讯在系统交互中是必不可少的一部分,无论是面试还是工作中都是绕不过去的一部分,本节我们来谈谈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 六、更多 更多参考 Java 网络编程基础篇 Java NIO 框架 Netty 之美:基础篇之一 ](https://gitbook.cn/gitchat/activity/5b01714ca0810c23901c55ac ) Java NIO 框架 Netty 之美:粘包与半包问题
然后回头继续第一个皇后放第二列,后面继续循环执行1,2,3.4的步骤 说明:理论上应该创建一个二维数组来表示棋盘,但是实际上可以通过算法,用一个一维数组即可解决问题. arr[8]={0,4,7,5.2 public void f3(int... nums1, double... nums2) (X错误) 作用域 基本使用 1.在java编程中,主要的变量就是属性(成员变量) 和 局部变量。 3.java中作用域的分类 全局变量:也就是属性,作用域为整个类体 (Cat类:cry eat等方法使用属性) 局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中! 比如Dog(){}, 使用javap指令反编译看看 可以使用javap Dog.class 查看 7.一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无 参构造器,除非显式的定义一下 ("this.hashCode=" + this.hashCode()); System.out.println(name + "\t" + age + "\t"); } } 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进程才会结束 但当非守护线程全部执行完毕后,守护线程无论是否执行完毕,也会一同结束。