网络编程 网络编程在Java中,提供了两个类用于实现TCP通信程序: 客户端:java.net.Socket类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。 服务端:java.net.ServerSocket类表示。创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。 Socket类该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。 构 2023-06-26 Java > JavaIO #Java
字符流 字符流,Writer,Reader当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。 字符流,只能操作文本文件,不能操作图片,视频等非文本文件 Reader:字符输入流是字符输入流的最顶层的父类,定义了一些共性的成员方法,是一个抽象类 共性的 2023-06-26 Java > JavaIO #Java
序列化 序列化 将数据结构或对象转换成二进制字节流的过程 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程 对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。 下面是序列化和反序列化常见应用场景: 对 2023-06-26 Java > JavaIO #Java
快速求幂 快速求幂快速幂和快速乘法都是利用了二进制的思想,时间复杂度为O(logN)级别的算法。 算法有两大优点:①便于取模操作(避免溢出) ②时间复杂度较低 123456789101112131415161718public class Main { public static void main(String[] args) { System.out.printl 2023-06-23 算法 > 数学相关 #算法
只出现一次的数字Ⅱ 137. 只出现一次的数字 II给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1: 12输入:nums = [2,2,3,2]输出:3 示例 2: 12输入:nums = [0,1,0,1,0,1,99]输出:99 提示: 1 <= 2023-06-22 算法 > 数学相关 #算法
数字范围按位与 201. 数字范围按位与给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。 示例 1: 12输入:left = 5, right = 7输出:4 示例 2: 12输入:left = 0, right = 0输出:0 示例 3: 12输入:left = 1, right = 2147483 2023-06-22 算法 > 数学相关 #算法
只出现一次的数字 136. 只出现一次的数字给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 12输入:nums = [2,2,1]输出:1 示例 2 : 12输入:nums = [4,1,2,1,2]输出:4 示例 3 : 12输入:nums = 2023-06-20 算法 > 数学相关 #算法
摩尔计数法 169. 多数元素给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 12输入:nums = [3,2,3]输出:3 示例 2: 12输入:nums = [2,2,1,1,1,2,2]输出:2 提示: n == nums.length 1 <= n 2023-06-20 算法 > 数学相关 #算法
位1的个数 191. 位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记 2023-06-18 算法 > 数学相关 #算法
颠倒二进制位 190. 颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有 2023-06-15 算法 > 数学相关 #算法