04 2022 档案
摘要:移除元素 27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 思路 数组中的
阅读全文
摘要:数组理论 数组是存放在连续内存空间上的相同类型数据的集合 数组下标都是从0开始的 数组内存空间的地址是连续的 在删除或者增添元素的时候,难免要移动其他元素的地址 数组的元素是不能删的,只能覆盖。 java中二维数组在内存空间的地址每行没有规则,C++中连续 二分法 前提: 有序数组 无重复元素 边界
阅读全文
摘要:反射的应用 后续使用代码使用User类 class User{ private String name; private int id; private int age; public User(){} public User(String name, int id, int age) { this
阅读全文
摘要:类的加载 内存分析 Java内存 堆: 存放new的对象和数组 可以被所有线程共享,不会存放别的对象引用 栈: 存在基本变量类型(包含具体数字) 引用对象的变量(存放引用在堆里的具体地址) 方法区 包含所有的class和static变量 可以被所有线程共享 类的加载过程 类的加载(Load):将cl
阅读全文
摘要:Git 版本控制 版本迭代,新版本,版本管理器,多人开发必须使用版本控制 版本控制(Revision Control)是一种在开发过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便回复以前的版本的软件工程技术 实现跨区域多人协同开发 追踪和记载一个文件或多个文件的历
阅读全文
摘要:注解Annotation 注解的概念 JDK5.0 中引入 Annotation的作用: 不是程序本身,可以对程序做出解释(与注释comment相似) 可以被其他程序(如编译器)读取 Annotation的格式: @注释名,还可以添加一些参数值,如@SuppressWarnings(value="u
阅读全文
摘要:反射 反射机制令Java拥有动态语言的特性 静态语言和动态语言 动态语言 在运行时能改变结构的语言:如新的函数、对象、代码可以被引进,已有的函数可以被删除或是其他结构上的变化。(在运行时代码可以根据某些条件改变自身结构) 主要动态语言:Object-C、C#、JavaScript、PHP、Pytho
阅读全文
摘要:线程简介 多任务 看似同时进行了多个任务,实际上同一时间只做了一件事 普通方法和调用多线程 普通方法:执行完run再返回主线程 多线程:run和主线程同时执行 程序、进程Process、线程Thread 程序:指令和数据的有序集合,本身没用运行的含义,是静态的概念 进程:在操作系统中运行的程序,程序
阅读全文
摘要:集合 集合只能存放对象,如int型数据被转换为Integer类后放入集合中 集合存放的是多个对象的引用,对象本身在堆中 集合可以存放不同类型,不限数量的数据类型 JDK5增加了泛型,Java集合可以记住容器中对象的数据类型 Java集合分为: Set:无序、不可重复的集合 List:有序,可重复的集
阅读全文
摘要:网络编程 TCP,UDP 1.1 概述 计算机网络: 将地理位置不同给的具有独立功能的多台计算机及其外部设备,通过通信路线连接起来,在网络操作系统,网络管理软件机器网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程的目的: 数据交换,通信 如何实现: 如何准确的定位网络
阅读全文
摘要:线程协作 线程通信 应用场景:生产者和消费者问题,生产者生产商品,消费者购买商品,没有商品时等待生产商生产放入商品 分析 线程同步问题。生产者和消费者共享同一资源,相互依赖,互为条件: 生产者没有生产产品前,需要通知消费者等待,生产后要通知消费者消费 消费者在消费后要通知生产者结束消费,生产新的产品
阅读全文
摘要:线程同步 多个线程操作同一个资源 并发 并发:同一个对象被多个线程同时操作 线程同步是一种等待机制,选多个需要同时访问的此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一线程再使用 队列和锁 同一进程的多个线程共享同一块存储空间,在带来方便的同时,也存在访问冲突问题,为了保证数据在
阅读全文
摘要:线程状态 创建状态 就绪状态 运行状态 阻塞状态 死亡状态,一旦结束无法再启动 线程方法 线程停止 不推荐使用JDK提供的stop(),destory()方法停止线程,推荐线程自己停止下来 建议使用一个标志位进行中止变量,当flag = false,中止线程运行 建议线程正常停止,利用次数,不进行死
阅读全文
摘要:Lambda表达式 λ是希腊字母表中第11位字母 实质属于函数式编程 作用: 避免匿名内部类定义过多 使代码看起来更加简介 删去无意义代码,留下核心逻辑 函数式接口Functional Interface 函数是接口是Lambda表达式的基础 函数式接口的定义: 只包含唯一一个抽象方法的接口 pub
阅读全文
摘要:静态代理 真实对象和代理对象都要实现同一个接口 代理对象要代理真实角 优点: 代理对象可以做真实对象做不了的事 真实对象专注做自己的事 Runnable实现创建多线程的方法使用了静态代理,Runnable是函数式接口 public class StaticProxy { public static
阅读全文
摘要:线程创建 线程有三种创建方法:继承Thread类,实现Runnable接口,实现Callable类 继承Thread类 线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动 线程的交替执行 线程开启不一定立即执行,由CPU调度执行 //创建方式1 p
阅读全文