自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程中并发安全问题(Sychronized关键字的底层原理)

​ Java中的Sychronized分为偏向锁轻量级锁和重量级锁三种形式,分别对应着锁只被一个线程持有不同线程交替持有多线程竞争锁。重量级锁:底层使用Monitor实现,里面设计了用户态和内核态的切换,上下文切换,成本高性能低。轻量级锁:线程的加锁时间是分开的,也就是没有竞争,可以使用轻量级锁来优化,轻量级锁修改对象头的锁标志,相对重量级锁性能提升,每次修改都是CAS保证原子性。偏向锁:一段时间内都是同一个线程持有锁,可以使用偏向锁,

2023-07-15 20:58:50 225

原创 一篇文章了解Redis分布式锁

Redis分布式锁时如何实现的?在Redis中,可以使用SET命令结合NX(SET IF NOT EXISTS)选项来实现分布式锁。以下是基本的实现步骤:获取锁:当一个进程需要获取锁时,它会向Redis发送一个SET命令,设置一个特定的键作为锁的标识,并设置过期时间。锁的键名:通常是一个唯一的标识符,用于标识该锁。锁的值:可以是一个随机生成的唯一值,用于区分不同的进程。过期时间:确保即使锁没有显式释放,也会在一定时间后自动过期,避免死锁的发生。#添加锁 NX是互斥 EX是设置超时时间。

2023-07-13 18:03:50 249

原创 Redis数据持久化

RDB和AOF两种数据持久化操作的区别有哪些?​ rdb时一个快照文件,它是将redis的数据都存储在硬盘中,当redis故障宕机后,方便从快照文件中恢复数据。​ aof时一个追加文件(类似于一个日志文件),他是用来记录对数据的写命令操作,当redis宕机时,会重修执行一遍这个文件,从而恢复数据。这两种持久化操作哪个的恢复速度比较快呢?​ 引文RDB是一个二进制文件,在保存的时候体积比较小,所以他若是用它进行数据恢复,数据恢复速度很快,但是他数据的完整性不高,在快照期间会数据丢失。

2023-07-12 20:48:28 11488 4

原创 索引重难点部分

聚簇索引(聚集索引):索引结构和数据一起存放的索引,InnoDB 中的主键索引就属于聚簇索引。非聚簇索引(非聚集索引):索引结构和数据分开存放的索引,二级索引(辅助索引)就属于非聚簇索引。MySQL 的 MyISAM 引擎,不管主键还是非主键,使用的都是非聚簇索引。主键索引:加速查询 + 列值唯一(不可以有 NULL)+ 表中只有一个。普通索引:仅加速查询。唯一索引:加速查询 + 列值唯一(可以有 NULL)。覆盖索引:一个索引包含(或者说覆盖)所有需要查询的字段的值。

2023-07-07 13:47:25 134

原创 SQL优化

​ **explain:**可以模拟优化器执行sql查询语句,从而知晓sql是如何处理你的sql语句的,分析你的查询语句或是表结构的性能瓶颈。**explain使用:**在select之前加explain,返回执行计划的信息,而不是执行SQL;对查询进行优化,应该避免全表扫描,在where以及order by涉及的列建立索引。sql查询语句尽不使用select * ,而是具体的字段。提高group by效率,----先过滤,在分组。避免在索引列使用内置函数,会导致索引失效。尽量使用数值代替字符串类型。

2023-03-05 22:45:41 163

原创 MySql高级

当对表中的数据执行 INSERT、UPDATE 或 DELETE 操作时,如果对表上的这 个特定操作定义了触发器,该触发器自动执行,这是不可撤销的。:是为了方便复杂的查询语句,基本思路就是将复杂的查询语句定义在视图的内部,然后对视图进行查询,从而简化复杂的查询语句。**什么是触发器:**触发器是一种特殊的存储过程,其特殊性就在于,它不需要用户去直接调用,**什么是存储过程:**将逻辑处理的代码事先存储在数据库中,然后在使用时直接调用即可。**为什么使用存储过程:**可以减少应用程序与数据库的交互次数。

2023-02-27 17:35:38 244

原创 DFS与BFS

*BFS基本思想:**BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。**DFS基本思想:**DFS是从一个点出发,走到分支的更深处,再回溯搜索下一种可能路径。**DFS应用的范围:**树形问题(包含可转化为树形的问题),全排列问题,组合问题,部分搜索问题(深搜)。**解决DFS问题用到的结构容器:**可以根据return的类型来选择不同方式:一般使用栈来解决,也可以用Deque((双端队列),或是StringBuffer(解决字符串拼接问题效率较快)来解决。

2022-12-22 11:14:15 622 2

原创 数据结构之数组

数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。:零个或者多个元素构成的有限序列。每个线性表的数据只存在于前后两个方向。除数组外还有链表,栈,队列都是线性表结构。说到数组是利用连续的存储空间,这个性质既有优势也有劣势。

2022-11-19 09:01:40 533

原创 反射机制 概述

正射:知道某个类,类的地址,通过new关键字创建出对象,而后使用对象。但是对于框架来说,处理哪些类并不知道,只结合它类的地址,他就能够获取类的信息,创建对象,动态调用对象的属性和方法,(通过反射机制通过类的地址加载出任何类的信息)这种使用类的方式称为反向使用类,这种机制就叫做反射。之前也接触过这样的反射机制xml配置中的通过访问地址来获取类对象resultType="com.****.***.***.类名"jdbc中的类名。...

2022-08-08 21:21:26 65

原创 Maven

Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作,maven标准化了项目的构建过程,有利于团队之间的协作。此外,maven还提供了一个免费的中央仓库,几乎可以找到任何开源类库。...

2022-08-08 21:21:07 81

原创 Mybatis详解

Mybatis原本是apache的一个开源项目(当时叫iBatis), 2010年6月这个项目由ApacheSoftware Foundation 迁移到了 Google Code,随着开发团队转投GoogleCode 旗下, iBatis3.x正式更名为MyBatis。Mybatis是一款优秀的持久性框架。Mybatis几乎避免了所有的手动jdbc设置以及手动获得结果集的操作。它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性。...

2022-08-08 21:20:27 205

原创 GUI 基础应用

GUI

2022-07-13 17:44:15 1016

原创 Java IO流

IO

2022-07-13 17:35:56 74

转载 Lambda&Stream

Lambda&Stream

2022-07-13 17:33:18 61

原创 Java 异常及异常处理

Java 异常及处理

2022-07-12 23:12:48 152

原创 Java 常用API

Java 常用API

2022-07-12 23:11:38 730

原创 Java 简述三大特征

Java三大特征

2022-07-12 23:09:48 676

原创 Java数组 定义及使用

Java 数组

2022-07-12 23:06:37 407

原创 JavaSE基础 语言特点 语法概述

JavaSE:Java Standard Edition(标准版 java基础) 核心类库, 基础语法 数据库连接,IO,网络编程,线程…JavaEE :Java Enterprise Edition(企业版), 包含JavaSE 添加Servlet 涉及到服务器JavaME :Java Micro Edition(微缩版) java微缩版 被安卓替代开发一个源代码(XXX.java) -----编译?----> 字节码文件(.class) ----JVM(虚拟机) 翻译----> 操作系统...

2022-07-12 23:04:22 98

原创 Collections(集合处理的工具类)

Collections(集合处理的工具类)1.什么是Collections?此类仅由静态方法组合或返回集合。 它包含对集合进行操作的多态算法,“包装器”,返回由指定集合支持的新集合。2.其主要方法如下:addAll(Collection<? super T> c, T… elements) 将所有指定的元素添加到指定的集合。binarySearch(List<? extends Comparable<? super T>> list, T key) 使用二叉

2022-01-08 04:50:42 135

原创 字符串缓冲类StringBuffer&StringBuilder

StringBuffer类与StringBuilder类1.为什么我们会在string类的基础上引入StringBuffer类与StringBuilder类?字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串 需要注意是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间,而StringBuffer与StringBuilder就可以解决这个问题 。2

2022-01-08 04:47:01 191

原创 网络编程基础1

网络编程1网络编程概述1.1什么是计算机网络?​ 把分布在不同地理区域的具有独立功能的计算机(各种设备)通过通信设备与线路连接起来,由功能完善的软件实现资源共享,信息传递。​ 把在不同地方的计算机,通过通信线路连接起来,资源共享信息传递;1.2网络编程?我们写的程序可以支持网络通信,实现程序与程序之间的互联互通;Java是支持网络通信;网络成就了Java语言霸业1.3网络编程要素:如何找到对方主机:IP( ip(找主机)+端口号(找程序));如何高效的进行数

2022-01-08 03:55:37 51 1

原创 Math&Random&System类

Math&Random&System类System类System 类包含一些有用的类字段和方法。它不能被实例化。Math类java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。Random类此类用于产生随机数package systemDemo;import java.util.Arrays;import java.util.Random;public class SystemDemo { pu

2021-12-02 23:40:33 187

原创 String类

String类1.概念:由多个字符组成的一串数据,值一旦创建就不改变,一旦改变就会创建一个新的对象;2.String对象的创建方法● 第一种:String s = “abc”;先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.● 第二种:一概在堆中创建新对象,值存储在堆内存的对象中。String s = new Str

2021-12-02 23:30:19 259

原创 设计模式之单例模式

设计模式1.设计模式:解决某一类问题的解决方案(模式)2.单例模式让一个类在一个程序只能创建一个对象实现方法:将构造方法私有化;实例如下package DanLi;public class Window { private static Window window = null; // public static Window getWindow(){// if(window==null)// window=new Window

2021-12-02 23:29:00 367

原创 多态与接口

多态与接口多态1.概念多态:同一种事物在不同时刻表现不同的状态;2.存在的必要条件要有继承(包括接口的实现)(前提条件);必须要有重写;父类引用指向子类对象;3.多态中成员的特点1.多态成员变量:编译运行看左边 Fu f=new Zi(); System.out.println(f.num);//f是Fu中的值,只能取到父中的值 2.多态成员方法:编译看左边,运行看右边 Fu f1=new Zi(); System.out.println

2021-11-13 17:31:36 350

原创 super关键字及方法重写

super关键字及方法重写1.super关键字调用父类 (Superclass) 的属性成员或者方法(super.属性名)(super.方法名());调用父类的构造方法super();误区:super表示父类对象,这个说法相当于说super关键字会在子对象里创建一个父对象。这是错误的。因为在创建子类对象时不会创建父类对象;只会将父类信息加载到子类对象中存储;super(实参)的作用是:初始化当前对象的父类型特征;并不是创建新对象。实际上对象只创建了1个。下面用以前的代码来

2021-11-07 23:58:50 2097

原创 Java继承

继承1.继承的概念1.继承是所Java 语言不可缺少的组成部分。2.继承是 Java 面对对象编程技术的一块基石,是面对对象的三大特征之一,也是实现软件复用的重要手段,继承可以理解为一个对象从另一个对象获取属性的过程。3.如果类 A 是类 B 的父类,而类 B 是类 C 的父类,我们也称类 C 是 A 的子类,类 C 是从类 A 继承而来的。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。4.继承中最常使用的两个关键字是 extends 和 implements ,这两

2021-11-07 23:55:10 74

原创 Java类与对象

类与对象1.类与对象的概念·对象是对现实世界中事物的抽象,是Java程序的基本封装单位,是类的实例;·类是对象的抽象,是数据和操作的封装体;·属性是事物静态的抽象,在程序中用数据成员加以描述;·操作是事物动态特征的抽象,在程序中用成员方法来实现;2类与对象的区别1、类是对某一类事物的描述,是抽象的;而对象是一个实实在在的个体,是类的一个实例。比如:“人”是一个类,而“教师”则是“人”的一个实例。2、对象是函数、变量的集合体;而类是一组函数和变量的集合体,即类是一组具有相同属性的对象集

2021-11-07 23:54:37 274

原创 详解static关键字+(部分代码块)

详解static关键字+(部分代码块)1.static存在的意义;以一段代码引入public class Demo1 { static{ System.out.println("你猜猜能不能输出???"); } static{ System.out.println("我猜你猜不到的。。。。"); } public static void main(String[] args) { }}输出结果你猜猜能不能输

2021-11-06 00:09:37 103

原创 Java类与对象

类与对象1.类与对象的概念·对象是对现实世界中事物的抽象,是Java程序的基本封装单位,是类的实例;·类是对象的抽象,是数据和操作的封装体;·属性是事物静态的抽象,在程序中用数据成员加以描述;·操作是事物动态特征的抽象,在程序中用成员方法来实现;2类与对象的区别1、类是对某一类事物的描述,是抽象的;而对象是一个实实在在的个体,是类的一个实例。比如:“人”是一个类,而“教师”则是“人”的一个实例。2、对象是函数、变量的集合体;而类是一组函数和变量的集合体,即类是一组具有相同属性的对象集

2021-11-03 21:13:56 783

原创 五子棋案例

五子棋案例1.完成棋盘的基本布局需要利用到二维数组的知识,二维数组的命名,初始化,赋值输出等;2.对五子棋的各个功能进行设计需要利用for,while循环等循环控制语句的知识,还有方法的设计,组合3.设计过程(主要为判断某一方胜利的方法设计)五子棋规则:黑子或白字中同色的五枚棋子连成一条线(可以为行列或斜线)两种思路:1.遍历棋盘的每个位置,判断每个位置上是否有满足一方胜利的条件(黑子或白字中同色的五枚棋子连成一条线(可以为行列或斜线),并利用计数器累计某位置上行列斜线连线棋子的个数;2.

2021-10-31 01:29:28 338

原创 Java Array学习笔记

Java Array学习笔记1.Array[]数组1、概述数组(Array), 是多个相同类型数据按一定顺序排列的集合, 并使用一个名字命名, 并通过编号的方式对这些数据进行统一管理。2、注意点数组本身是引用数据类型, 而数组中的元素可以是任何数据类型, 包括基本数据类型和引用数据类型。创建数组对象会在内存中开辟一整块连续的空间, 而数组名中引用的是这块连续空间的首地址。数组的长度一旦确定, 就不能修改。 数组一旦初始化,其长度是不可变的 。我们可以直接通过下标(或索引)的方式调用指定位置的

2021-10-27 22:59:28 87

原创 实验三(四则运算系统)四(图形面积系统)

1.根据需求,用面向对象的方式定义一个计算器类(Calculator);2.由于计算器能对两个数字进行各种运算,所以定义两个成员变量表示两个运算数;3.编写4个成员方法,分别实现加(add)、减(minus)、乘(multiple)、除(divide)四类运算。4.定义构造函数对成员变量赋初值;import java.util.Scanner;public class CalculatorDemo { public static double a; public static d

2021-10-27 22:55:28 311

原创 家庭收支记账软件Java

家庭收支记账软件利用基础语法无调用方法版import java.util.Scanner; public class HomeWork01{ private static int sum=10000; private static String info=""; private static boolean flag=true; public static void main(String[] args) {

2021-10-27 02:08:49 220

原创 差分(前缀和)

例题798. 差分矩阵题目提交记录讨论题解视频讲解输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含 5 个整数 x1,y1,x2,y2,c,表示一个

2021-07-30 14:19:12 56

原创 高精度乘除法

*** ##高精度乘除法 ***例题1793. 高精度乘法给定两个正整数 A 和 B,请你计算 A×B 的值。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共一行,包含 A×B 的值。数据范围1≤A的长度≤100000,0≤B≤10000输入样例:23输出样例:6#include<bits/stdc++.h>using namespace std;vector<int>mul(vector<int>&a,int

2021-07-26 13:02:19 185

原创 整数二分法

整数二分法求解整数二分法的两种模板图示模板bool check(int x) {/* ... */} //检查x是否满足某种性质 // 区间[left, right]被划分成[left, mid]和[mid + 1, right]时使用:int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid;//左边

2021-07-20 22:44:52 92

原创 2021-07-15

逆序对的个数无返回值型#include<bits/stdc++.h>using namespace std;const int N=1000010;long long int result=0;//注意会不会爆int;int q[N],t[N];void msort(int l,int r){ if(l>=r) return; int mid=l+r>>1; msort(l,mid),msort(mid+1,r);//归并; in

2021-07-15 05:33:15 111

原创 快排及归并

归并排序#include<bits/stdc++.h>using namespace std;const int N=10000010;int n;int q[N],tmp[N];void msort(int q[],int l,int r){ if(l>=r) return; int mid=l + r >> 1; msort(q,l,mid),msort(q,mid+1,r); int k=0,i=l,j=mid+1;//k记录

2021-07-12 04:21:10 73

空空如也

空空如也

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

TA关注的人

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