数组 原理java 03
使用数组实现一个小顶堆
堆也叫优先队列,可以在\(\mathcal{O(1)}\)时间里得到堆中的最小/大元素。堆在各种编程语言中都有实现,c++STL里面有priority_queue,java中是Priority_Queue,python里提供了heapp模块实现对堆的各种操作。 堆可以分为小顶堆和大顶堆,顾名思义,小 ......
Java基础 当某一个线程执行代码时发现锁已经被锁住了,该线程会怎么样?
当一个线程尝试获取一个已经被其他线程锁住的锁时,它的行为取决于所使用的编程语言和锁的类型。一般情况下,有以下几种可能的行为: 1.阻塞等待:线程会被阻塞,直到锁变为可用。这是最常见的情况,通常用于互斥锁。在Java中,可以使用synchronized关键字或ReentrantLock类来实现这种行为 ......
微机原理与接口技术-第八章常用接口技术
目录定时控制接口8253/8254定时器定时器的应用并行接口并行接口电路8255内部引脚工作方式工作方式0:基本输入输出方式工作方式1:选通输入输出方式编程并行接口的应用用8255方式0与打印机接口数码管及其接口数码管的工作原理单个数码管的显示多个数码管的显示异步串行通讯接口模拟接口模拟输入输出系统 ......
Java中的Set集合
Set集合的特点:不能存储相同元素。 Set接口两大实现(常用):HashSet TreeSet Set是一个抽象接口,不能对Set进行实例化。 (Set set = new Set(); )错误 该接口主要继承于Collection接口,所以具有Collection的一些常见的方法。 1.add( ......
你知道Java21中的顺序集合吗?
在Java 21中,处理集合的方式得到了改进,因为三个新的接口已经融入了现有的类型层次结构。这些顺序集合为我们提供了一个统一的API来访问第一个和最后一个元素,并以相反的顺序处理集合。 为了更好地理解顺序集合是什么,让我们回顾一下集合之前的样子。 Java集合框架在Java 1.2中引入的Colle ......
手撕Vuex-Vuex实现原理分析
本章节主要围绕着手撕 Vuex,那么在手撕之前,先来回顾一下 Vuex 的基本使用。 创建一个 Vuex 项目,我这里采用 vue-cli 创建一个项目,然后安装 Vuex。 vue create vuex-demo 选择 Manually select features。 这里只需要,Babel ......
PAT_B1008 数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的 ......
C#读取记事本,里面有600万条数据,放入数组时:System.OutOfMemoryException
原因:使用文件流,然后读取文件内容,再解析的时候,会报内存溢出 处理办法:使用/n分隔 /// <summary> /// 通过记事本,获取CRM所有客户的某个字段 /// </summary> /// <returns></returns> public static List<string> G ......
Log4J2漏洞(CVE-2021-44228)原理
Log4J2漏洞(CVE-2021-44228)原理 一、漏洞简介 Apache Log4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发 者可以利用该工具将程序的输入输出信息进行日志记录。 2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4 ......
Java 垃圾回收机制
目录垃圾回收的基础知识堆空间的基本结构内存分配和回收原则对象优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代GC 分类对象是否可被回收引用计数算法可达性分析算法引用类型强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference ......
java redis 短信业务应用
java redis 短信业务应用 短信业务场景:根据实际业务来通知客户,在短信的MQ中新增字段:是否需要发送短信的标识,短信微服务可以接收到MQ后根据该字段来判断是否发送。 如果发送端MQ的事件的操作是分开的,比如步骤1:修改订单, 步骤2:产生修改后的费用去支付,在支付成功之后才发送该MQ消息。 ......
越狱版和免越狱版iphone手机imessages群发,imessages短信,imessages推信,苹果imessage群发实现原理 - 手机端
Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与Apple ID 绑定,同时也与使用这Apple ID的手机号码绑定,这样的漏洞自然给无孔不入的群发垃圾信息商们提供 ......
PTA数组及排序查找题解与解题思路
PTA数组及排序查找题解与解题思路 函数题目 函数题目为平台提供的裁判程序调用所完成的函数进行判题,题目规定语言为C语言 6-1 求出二维数组的最大元素及其所在的坐标 本题较为简单,考察的是如何遍历一个二维数组,只需要两个循环依次遍历其每个维度和元素即可 如何寻找最大值?只需要在遍历每个元素的过程中 ......
Java提升技术,进阶为高级开发和架构师的路线
原文网址:Java提升技术,进阶为高级开发和架构师的路线-CSDN博客 简介 Java怎样提升技术?怎样进阶为高级开发和架构师?本文介绍靠谱的成长路线。 首先点明,只写业务代码是无法成长技术的。提升技术的两个方法是: 有技术大佬带 有技术大佬的资料 本文介绍靠谱的技术进阶资料,让你比其他人更有竞 ......
JAVA - Obejects api
package com.demo2; import com.demo.Demo1; import java.util.Objects; public class Test { public static void main(String[] args) { String name = null; S ......
Java拾贝第十二天——IO流之对象序列化与对象流
把一个对象转换为二进制流就是对象的序列化。(对象👉二进制流) 二进制流转换为一个对象就是对象的反序列化。(二进制流👉对象) 二进制流也就是byte[]数组 如果一个类的对象想要被序列化,则这个类必须要实现java.io.Serializable接口。 该接口定义如下: public interf ......
广义表的原理(没有代码实现)
广义表是线性表的推广,又称列表。线性表的元素只限于原子项,即每个数据元素只能是一个数或一个记录,如果放松对线性表元素的这种限制,允许他们自身具有结构,那么就产生了广义表。广义表是一种多层次的线性结构,像是一颗倒扣的树,实际上,这也算是一种树形结构。广义表不仅是线性表的推广,也算是树结构的推广。 广义 ......
Java基础 Lock 锁
代码示例: package pojo;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Ticket extends Thread{ public s ......
设计模式03:原型模式、适配器模式、桥接模式、组合模式
1.Prototype原型模式 代码示例: package Prototype05; /** * 原型模式: * 意图:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象 * 适用于: * 当一个系统应该独立于它的产品创建、构成和表示时 * 当要实例化的类是在运行时刻指定时例如通过动态装 ......
Java基础 同步方法
同步代码块 就是 把一段代码给锁起来,这样就可以解决多线程操作共享数据时带来的数据安全问题 但是如果我们想要把一个方法里面所有的代码全都锁起来,就没有必要用同步代码块了,我们可以直接把 synchronized 加在方法上,这个方法就叫做同步方法 同步方法的格式: 修饰符 synchronized ......
C++数组
C++数组 声明数组 在C++中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: type arrayName [arraySize]; 这叫做一维数组。arraySize必须是一个大于零的整数常量,type可以为任意有效的C++数据类型。例如:double valance[10]; 初始 ......
03. TCP的3次握手4次挥手
一、三次握手 TCP 是稳定的传输方式,在接收、发送之前,双发需要建立一个虚拟的通道,这个过程称为 3 次握手。3 次握手的流程如下: 客户端调用 connect() 时发送一个带有标记的数据包,我们把建立连接时的第 1 次数据叫做 SYN,其中由 1 个数字; 服务器接收到这个 SYN 数据包,提 ......
学习如何新建java项目
java的程序的运行机制 编译型:全局翻译 解释型:实时更新 在idea写下hello,world [破解激活码] IDEA 2023.2.3 最新激活码,注册码(亲测好用) - 异常教程 (exception.site) 新建一个文件夹 在文件夹新建一个class Java语法 创建一个新项目(重 ......
Java基础 同步代码块
同步代码块: 利用同步代码块把操作共享数据的代码给锁起来,让同步代码块里面的代码是轮流去执行的 格式: synchronized (锁对象) { 操作共享数据的代码 } 细节: 1. 在最初,锁的状态是默认打开的,如果有一个线程进去了,锁就会自动关闭 2. 当锁里面全部代码都执行完毕了,线程出来了, ......
aardio调用java语言
一、引入java 默认只要在 aardio 中调用 import java; 就会自动搜索系统可用的 JRE,如果没有找到 JRE,会自动导入 java.jre.v8 扩展库,并自动安装 OpenJDK JRE v8 。 注:如果系统已经安装了java6,就会用系统自带的java6,而不会自动安装O ......
Java基础 线程的生命周期
1. 当创建线程对象的时候,是新建状态 2. 新建完之后 调用 start()方法 就变成了就绪状态(是在调用完了 start() 方法之后才变成了就绪状态)。在就绪状态下,线程开始抢夺 CPU 的执行权。注意是正在抢,还没有抢到,没抢到就无法执行代码。所以就绪状态 有执行资格,但没有执行权(有执行 ......
day 2 数组 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵 Ⅱ
977.有序数组的平方 题目链接:977.有序数组的平方 视频教程 文章教程 思路 最直观的解法: 暴力解题,每个数先平方,然后再快速排序,时间复杂度为 O(n + nlog n) 规律: 该数组本身是非递减顺序,在平方后其实依然有顺序,左右两边大中间小。 双指针 利用观察到的规律,可以利用双指针在 ......
26. 删除有序数组中的重复项
1.题目介绍 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: ......