基础算法
快速排序图解分析: 模板:12345678910111213141516171819202122//核心思想:分而治之//函数参数:(需要处理的数组, 数组的左边界, 数组的右边界)//函数:使得左边小于x, 右边大于x void quick_sort(int q[], int l, int r){ //递归出口 if (l >= r) return; //运用双指针,左指针指向的数小于x, 右指针指向的数大于x int x = (q[l] + q[r]) / 2; int i = l - 1, j = r + 1; while (i < j) { do i ++; while(q[i] < x); do j --; while(q[j] > x); if (i < j) swap(q[i], q[j]); } //递归处理左右子区间 quick_sort(q, l, j); ...
Java并发编程4(JUC篇)
本篇文章重点介绍JUC(java.util.concurrent) JUC是”java.util.concurrent”包的简称,它是Java提供的一个并发工具包,旨在简化多线程编程,提供了丰富的类和接口来帮助开发者更高效、更安全地编写并发程序。JUC包增强了Java对并发的支持,解决了传统多线程编程中的一些难题,如死锁、竞争条件和资源管理等。 原子变量 基本类型原子变量 AtomicInteger 提供对整型值的原子操作,如加法、减法等。 方法示例:incrementAndGet(), decrementAndGet(), addAndGet(int delta), compareAndSet(int expect, int update)。 AtomicLong 类似于AtomicInteger,但是针对长整型(long)值。 方法与AtomicInteger相似,适用于需要处理较大数值的情况。 AtomicBoolean 支持布尔类型的原子操作。 方法示例:get(), set(boolean newValue),...
Java并发编程3(CAS)
Java内存模型(JMM)概念百度百科:java内存模型_百度百科 Java内存模型(Java Memory Model,...
Java并发编程2(锁-Sychronized)
认识Java对象头 32位虚拟机对象头: 64位虚拟机对象头: 1.Mark Word(标记字): Mark Word是对象头的一部分,用于存储对象自身的哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID(或偏向时间戳)、偏向模式以及锁的状态等信息。 标记字的大小和具体内容可能因JVM实现的不同而有所变化。例如,在64位JVM上,默认情况下Mark Word占用64位(8字节),而在32位JVM上则是32位(4字节)。 2.Class Pointer(类指针): 这是指向该对象对应类(Class)的指针,通过这个指针可以访问到对象所属类的元数据(如方法表、字段描述等)。类指针的大小依赖于JVM的具体实现及其是否开启了压缩指针(Compressed Oop)选项。 在某些情况下,比如当使用了-XX:+UseCompressedClassPointers选项时,类指针会被压缩以节省内存。 3.Array...
JUC并发编程1(初识进程和线程)
初识进程和线程初识进程:定义: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。(百度百科) 进程由程序、数据和进程控制块三部分组成。 什么是进程? 狭义定义:进程是正在运行的程序的实例。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 eg:进程可以看做是程序的实例,你可以打开多个程序,每一个程序就是一个进程(比如你重复打开QQ登录不同的用户,每一个用户登录的那个程序就是一个进程)。 如果你关闭一个窗口,那么这个进程也就结束了 概念:1.进程是一个实体。 ...
Oracle基本语法
前言: 1.使用的数据库不同,所使用的语法也略有不同 2.SQL对大小写不敏感 3.Oracle中对引号里面的内容大小写敏感 3.表空间名、文件路径……等需要用单引号将其包含 4.一般引号里面的内容需要大写 准备工作:安装tips:PLSQL、Oracle以及客户端远程连接服务器笔记(仅供参考)-CSDN博客 (1).Win+R打开services.msc (2)启动一些服务: (qwq我不知道哪些有用,哪些没用,所以我都把打开了,不知道有没有负面影响,大家参考一下别的博客吧) 登录:1.打开SQL Plus命令行工具第一种方式: 第二种方式: (1)win+R 打开cmd (2)输入sqlplus 2.以不同用户登录 注意: 1.使用用户口令这种形式登录的时候,是不显示密码的,口令输入的时候是不显示的,直接输就好 2.若是想以显示密码的形式输入,直接在用户名那一块输入:用户名/密码 3.超级管理员(sys)输入时需要注意指定 as sysdba SYSTEM(普通管理员):...
MySQL基础篇
数据库基本操作启动与停止1.第一种方式:1>以管理员身份运行cmd 2>在命令行窗口中输入: 123启动:net start mysql80停止:net stop mysql80 2.第二种方式:1>Win+R快捷方式打开如下: 输入:services.msc 2>找到MySQL80 3>双击: 4>这里我选择的是开机自启动 客户端连接1.第一种方式:通过MySQL提供的客户端命令行工具 2.第二种方式:通过命令行工具执行命令1mysql [-h 127.0.0.1] [-P 3306] -u 用户 -p 注意: 1.[]中可省略 2.使用这种方式时,需要配置PATH环境变量 SQL 1.DDL(数据定义语言)数据库操作查询所有数据库:1show databases; 查询当前数据库:1select database(); 创建数据库:1create database [if not exists] 数据库名 [default charset 字符集] [collate...
Java面向对象编程
什么是面向对象编程(OOP)? 它将数据和相关操作封装在对象中,通过对象之间的交互来解决问题。 简单来说,就是世界上所有的物品,都可以是一个对象,对象是一种特殊的数据结构,里面存储物品的相关属性信息,类似于一张表结构。 类就相当于对象的一个模版,结构相同的对象可以使用同一个类来构造 JVM虚拟机JVM是什么? JVM(Java虚拟机)并不是直接安装在操作系统上的一个单独的实体或文件夹,而是一种抽象的计算模型,它通常是由一个程序或者软件包的一部分来实现的。当你在计算机上安装Java运行环境(例如,Java Development Kit, JDK 或者 Java Runtime Environment, JRE)时,实际上就包含了JVM的实现 当你运行一个Java程序时,比如通过命令行输入java...