自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 java:网络编程(服务器发送,客户端读取)

public class WriteServer { public static void main(String[] args) throws IOException { Selector selector = Selector.open(); ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.configureBlocking(false); ssc.registe.

2022-03-07 15:25:50 453 1

原创 java:网络编程(客户端发送,服务器读取)

public class Client { public static void main(String[] args) throws IOException { SocketChannel sc = SocketChannel.open(); // 客户端主动连接服务器(成功连接为0, 失败为-1) sc.connect(new InetSocketAddress("localhost", 8080)); SocketAddres.

2022-03-07 12:43:26 648

原创 javase:构造器引用

/** * 1. 构造器引用 * 和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致 * 抽象方法的返回值类型即为构造器所属的类的类型 * * 2. 数组引用 * 数组是一个特殊的类,写法与构造器引用一致 */public class ConstructorRefTest { /** * 构造器引用 * Supplier中的 T get() * Employee的 空参构造器:Employee() .

2022-02-18 19:35:03 196

原创 javase:方法引用

/** * 方法引用 * 1. 使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! * * 2. 方法引用本质上是Lambda表达式 * 方法引用是函数式接口的实例。 * * 3. 使用格式: 类(或对象) :: 方法名 * * 4. 具体分为如下的三种情况: * 情况1 对象 :: 非静态方法(实例方法) * 情况2 类 :: 静态方法 * 情况3 类 :: 非静态方法(实例方法) * * 5. 方法引用使用的要求:.

2022-02-18 19:34:26 86

原创 javase:函数式接口

/** * 只声明了一个抽象方法的接口为函数式接口 * * 可以在接口上使用@FunctionalInterface注解,检查是否是一个函数式接口 * * java.util.function包下的基本函数式接口: * 消费型接口:Consumer<T> 对类型T的对象应用操作,方法为 void accept(T t) * 供给型接口:Supplier<T> 返回类型为T的对象,方法为 T get() * 函数型接口:Function<T,R> 对T类型.

2022-02-18 19:32:44 104

原创 javase:Lambda

/** * Lambda表达式创建函数式接口的实例对象 * * 举例:(o1, o2) -> Integer.compare(o1, o2) * 格式: * -> Lambda操作符或箭头操作符 * ->左边 Lambda形参列表(接口中抽象方法的形参列表) * ->右边 Lambda体(重写的抽象方法的方法体) * */public class LambdaTest { /** * 格式1:无参,无返回值 实现类 .

2022-02-18 19:31:12 92

原创 javase:动态代理

import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class ProxyTest { public static void main(String[] args) { // 创建被代理类对象 SuperMan superMan = new SuperMan(); // .

2022-02-17 12:05:35 66

原创 新版Idea中部署javaweb配置Tomcat

1.Idea中新建Project,新建Module(这里是01-javaweb-begin)点击Next-->NextFile-Project Structure-Modules,点击01-javaweb-begin,选择Paths勾选Use module compile output path取消勾选Exclude output paths2. 创建Web ApplicationF...

2022-02-05 11:57:52 862 1

原创 algorithm:斐波那契查找

import java.util.Arrays;public class FibonacciSearch { public static void main(String[] args) { int[] arr = {1, 2, 4, 9, 19, 34}; int index = fibSearch(arr, 1); if (index == -1) { System.out.println("该数未找到!"); .

2022-01-18 07:23:15 54

原创 algorithm:插值查找

public class InsertValueSearch { public static void main(String[] args) { // 生成一个-10-89的数组 int[] arr = new int[100]; for (int i = 0; i < 100; i++) { arr[i] = i - 10; } int index = insValSear(arr, .

2022-01-18 07:21:00 45

原创 algorithm:二分查找

import java.util.ArrayList;import java.util.List;public class BinarySearch { public static void main(String[] args) { int[] arr1 = {-1, -1, 1, 4, 9, 19, 19, 19, 34}; List<Integer> index1 = binarySearch(arr1, 0, arr1.length -1,.

2022-01-18 07:19:13 92

原创 algorithm:堆排序

import java.text.SimpleDateFormat;import java.util.Date;public class HeapSort { public static void main(String[] args) {// int[] arr = {4, 34, 19, 1, 9 ,-1};// heapSort(arr);// System.out.println(Arrays.toString(arr)); .

2022-01-18 07:18:19 38

原创 algorithm:基数排序

import java.util.Arrays;public class RadixSort { public static void main(String[] args) { int[] arr = {4, 34, 19, 1, 9, -1}; System.out.println("排序前为:" + Arrays.toString(arr)); radixSort(arr); System.out.println("排序后为.

2022-01-18 07:17:05 41

原创 algorithm:归并排序

import java.util.Arrays;public class MergeSort { public static void main(String[] args) { int[] arr = {4, 34, 19, 1, 9, -1}; System.out.println("排序前为:" + Arrays.toString(arr)); mergeSort(arr, 0, arr.length - 1); Syste.

2022-01-18 07:15:11 75

原创 algorithm:快速排序

import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int[] arr = {4, 34, 19, 1, 9 ,-1}; System.out.println("排序前为:" + Arrays.toString(arr)); quickSort(arr, 0 ,arr.length - 1); Syste.

2022-01-18 07:14:08 227

原创 algorithm:希尔排序

import java.util.Arrays;public class ShellSort { public static void main(String[] args) { int[] arr = {4, 34, 19, 1, 9 ,-1}; System.out.println("排序前为:" + Arrays.toString(arr)); shellSort(arr); System.out.println("排序后为.

2022-01-18 07:13:22 132

原创 algorithm:插入排序

import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int[] arr = {4, 34, 19, 1, 9 ,-1}; System.out.println("排序前为:" + Arrays.toString(arr)); insertSort(arr); System.out.println("排序.

2022-01-18 07:12:31 156

原创 algorithm:选择排序

import java.util.Arrays;public class SelectSort { public static void main(String[] args) { int[] arr = {4, 34, 19, 1, 9 ,-1}; System.out.println("排序前为:" + Arrays.toString(arr)); selectSort(arr); System.out.println("排序.

2022-01-18 07:11:30 134

原创 algorithm:冒泡排序

import java.text.SimpleDateFormat;import java.util.Date;public class BubbleSort { // 冒泡排序的时间复杂度是:O(n^2) public static void main(String[] args) {// int[] arr = {4, 34, 19, 1, 9 ,-1}; // 创建一个含1000000个随机数的数组 int[] arr = ne.

2022-01-17 20:42:55 56

原创 datastructure:平衡二叉树

public class AVLTreeTest { public static void main(String[] args) { int[] arr = {10, 11, 7, 6, 8, 9}; AVLTree avlTree = new AVLTree(); for (int i : arr) { avlTree.add(new Node(i)); } System.out.print.

2022-01-17 20:41:11 185

原创 datastructure:二叉排序树

public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr = {7, 3, 10, 12, 5, 1, 9, 2}; BinarySortTree binarySortTree = new BinarySortTree(); for (int i : arr) { binarySortTree.add(new Nod.

2022-01-17 20:40:07 39

原创 datastructure:霍夫曼编码

import java.io.*;import java.util.*;public class HuffmanCode { public static void main(String[] args) { String content = "i like like like java do you like a java"; byte[] contentBytes = content.getBytes(); System.out.printl.

2022-01-17 20:39:01 169

原创 datastructure:霍夫曼树

树的带权路径长度:所有叶子结点的带权路径长度之和,记为WPL(weighted path length)权值越大的结点离根结点越近的二叉树才是最优二叉树WPL最小的是哈夫曼树import java.util.ArrayList;import java.util.Collections;import java.util.List;public class HuffmanTree { public static void main(String[] args) { i.

2022-01-17 20:38:02 239

原创 datastructure:线索化二叉树

n个结点的二叉链表中含有 n+1 ( 2n - (n-1) )个空指针域其中空指针域存放该结点的前驱结点和后继结点的指针,称为“线索”线索化二叉树后,Node结点的属性:left指向左子树或前驱结点;right指向右子树或后继结点线索化二叉树后,可以通过线性方式遍历,无需使用递归方式,提高了便利的效率public class ThreadedBinaryTreeTest { public static void main(String[] args) { Threa.

2022-01-17 20:36:47 47

原创 datastructure:二叉树

public class BinaryTreeTest { public static void main(String[] args) { // 创建二叉树对象 BinaryTree binaryTree = new BinaryTree(); // 创建结点 HeroNode node1 = new HeroNode(1, "宋江"); HeroNode node3 = new HeroNode(3, "吴用").

2022-01-17 20:34:02 48

原创 datastructure:哈希表

import java.util.Scanner;public class HashTableTest { public static void main(String[] args) { // 创建哈希表 HashTab hashTab = new HashTab(7); String key = ""; // 控制是否退出菜单 boolean loop = true; Scanner scan.

2022-01-17 20:31:08 123

原创 datastructure:八皇后问题

public class Queen { // 实例变量,通过实例对象调用 // max表示一共有多少个皇后 int max = 8; // array用来保存放置的皇后位置 int[] array = new int[max]; // 类变量(静态变量),可被同一类中的任何实例方法调用 static int count = 0; public static void main(String[] args) { Queen.

2022-01-17 20:30:06 65

原创 datastructure:迷宫回溯问题

public class Maze { public static void main(String[] args) { // 创建一个二维数组,模拟8行7列的迷宫 int[][] map = new int[8][7]; // 1代表迷宫的墙 for (int i = 0; i < 7; i++) { map[0][i] = 1; map[7][i] = 1; }.

2022-01-17 20:29:21 46

原创 datastructure:逆波兰计算器

中缀表达式转换为后缀表达式思路:1.初始化两个栈:运算符栈s1和储存中间结果的栈s2;2.从左至右扫描中缀表达式;3.遇到操作数时,将其压s2;4.遇到运算符时,比较其与s1栈顶运算符的优先级: 4.1 如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈s1; 4.2 如果优先级比栈顶运算符的高,也将运算符压入s1; 4.3 否则,将s1栈顶的运算符弹出并压入到s2中,再次转到(4.1)与s1中新的栈顶运算符相比较; 4.4 遇到括号时:(1) 如果是左.

2022-01-08 00:34:26 45

原创 datastructure:栈实现计算器

使用栈完成表达式的计算思路 1. 通过一个 index 值(索引),遍历表达式 2. 如果是一个数字, 直接入数栈 3. 如果是一个符号, 分如下情况 3.1 如果当前的符号栈为空,直接入栈 3.2 如果符号栈有操作符,进行比较: 3.2.1 如果当前的操作符的优先级小于或者等于栈中的操作符,从数栈中pop出两个数,符号栈中pop出一个符号,进行运算, 将得到的结果,入数栈,然后将当前的操作.

2022-01-08 00:33:05 220

原创 datastructure:链表模拟栈

import java.util.Scanner;public class LinkedStackTest { public static void main(String[] args) { LinkedStack linkedStack = new LinkedStack(4); String key = ""; boolean loop = true; Scanner scanner = new Scanner(System.

2022-01-08 00:32:04 342

原创 datastructure:数组模拟栈

数组模栈的思路分析 1. 定义一个 top 来表示栈顶,初始化 为 -1 2. 入栈的操作,当有数据加入到栈时, top++; stack[top] = data; 3. 出栈的操作, int value = stack[top]; top--, return valueimport java.util.Scanner;public class ArrayStackTest { public static void main(String[] args) {.

2022-01-08 00:31:22 42

原创 datastructure:约瑟夫问题

构建一个单向的环形链表: 1. 先创建第一个结点, 让 first 指向该结点,并形成环形 2. 后面当我们每创建一个新的结点,就把该结点,加入到已有的环形链表中即可.遍历环形链表: 1. 先让一个辅助指针(变量) temp,指向first结点 2. 然后通过一个while循环遍历 该环形链表即可 temp.getNext() == first 结束小孩出圈: 1. 创建一个辅助指针(变量) temp, 事先应该指向环形链表的最后这个结点 .

2022-01-08 00:29:19 129

原创 datastructure:双向链表

分析双向链表的遍历,添加,修改,删除的操作思路遍历: 和单链表一样,只是可以向前,也可以向后查找添加 (默认添加到双向链表的最后): (1) 先找到双向链表的最后这个结点 (2) temp.next = newHeroNode (3) newHeroNode.pre = temp;修改: 思路和原来的单向链表一样.删除: (1) 因为是双向链表,因此,我们可以实现自我删除某个结点 (2) 直接找到要删除的这个结点,比如temp (.

2022-01-08 00:26:36 153

原创 datastructure:单链表

小结:1、链表是以结点的方式来存储,是链式存储。2、每个结点包含 data 域, next 域:指向下一个结点。3、链表的结点不一定是连续存储。3、链表分 带头结点的链表 和 没有头结点的链表,根据实际的需求来确定。头指针、头结点、首结点(元结点)的区别头指针:指向链表中第一个结点(头结点或首结点)。头结点:链表中首结点之前附加的一个结点,其数据域一般无意义,不存放有效数据。首结点:链表中存储第一个元素的结点,是头结点后边第一个结点。带头结点与不带头结点的区别: 带头结.

2022-01-08 00:23:48 184

原创 datastructure:环形数组实现队列

front指向队列的第一个元素, arr[front] 就是队列的第一个元素。front的初始值 = 0rear指向队列的最后一个元素的后一个位置。空出最后一个空间做为约定。rear的初始值 = 0front = 0, rear = 1 表示此时只有1个数据。front指的这个数据的位置,rear指的这个数据的后一个位置。当队列满时,条件是 (rear + 1) % maxSize == front 【满】队列为空的条件,rear == front当我们这样分析, 队列中有效的数据的.

2022-01-08 00:21:55 336

原创 datastructure:稀疏数组存盘

import java.io.*;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class SparseArray { public static void main(String[] args) { // 保存的磁盘文件目录。 String fileName = "D:\\sparseArray.txt"; //创建大小1.

2022-01-08 00:16:08 207

原创 datastructure:二维数组转换稀疏数组

public class SparseArrayTest { public static void main(String[] args) { // 创建原的二维数组11*11。 // 0表示没有棋子,1表示黑色棋子,2表示白色棋子。 int[][] chessArr = new int[11][11]; chessArr[1][2] = 1; chessArr[2][3] = 2; // 输出原的二.

2022-01-08 00:06:51 33

原创 javase:反射注解

import java.lang.reflect.Method;public class ReflectAnnotation { public static void main(String[] args) throws Exception { // 获取这个类 Class c = Class.forName("com.MyAnnotationTest"); // 判断类上面是否有@MyAnnotation。 System.ou.

2022-01-07 07:07:11 62

原创 javase:注解

import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/*如果只有一个注解,且属性的名字是value,在使用的时候,属性名可以省略。数组中只有1个元素,大括号可以省略。 */// 允许该注解可以标注类和方法。@Target({El.

2022-01-07 07:07:00 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除