Java进阶之并发编程(一)synchronized关键字
并发编程基础篇一、基本概念
QPS(Queries Per Second):每秒查询率,指的是一个系统或服务在一秒内能够处理的查询次数。例如,如果一个网站每秒钟能够处理100个请求,那么它的QPS为100。
TPS(Transactions Per Second):每秒事务数,指的是一个系统或服务在一秒内能够完成的事务数。一个事务通常指的是一组相关的操作,例如在数据库中执行一次读写操作。TPS是一个系统的性能指标之一,可以用来衡量系统的稳定性和响应能力。
CPU(Central Processing Unit,中央处理器):CPU是计算机的核心部件,它负责执行计算机指令。在并发编程中,CPU的主要限制是它的计算能力,它能够处理的任务数量受到CPU核心数、频率和指令集等因素的影响。为了充分利用CPU的性能,可以采用多线程、异步编程等方式来并发执行任务。
内存(Memory):内存是计算机中用于存储数据和程序的临时存储器,它的容量和速度对并发编程也有很大的影响。如果程序需要频繁地读写内存,那么内存的带宽和延迟就会成为瓶颈。为了减少内存的使用,可以采用一些优化策略,如对象池、缓存等方式。
磁 ...
MyBatisPlus之条件构造器
一、引言
说明:
条件构造器构造条件时,一般支持两到三个入参,使用以下两个入参情况较多(R column, Object val);第一个参数是一个 boolean 类型,默认为 true,表示加入到最后构造的 sql 当中;因此在构造条件时,可以将判断加在外面,也可以写在第一个参数处
二、WrapperAbstractWrapper
说明:
QueryWrapper (LambdaQueryWrapper) 和 UpdateWrapper (LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件,entity 属性也用于生成 sql 的 where 条件注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为
作为父类,AbstractWrapper 包含了大量构造条件所用方法
常用方法不再赘述,具体参考 MyBatis-Plus 官网:条件构造器 - AbstractWrapper
需要稍微注意的是以下几个方法
inSql1inSql(R column, String inValue)
其中, ...
排序算法
下面是自己实现的不同排序算法,仅做随时复习观看用
一、排序算法比较
排序算法
时间复杂度(平均)
时间复杂度(最坏)
时间复杂度(最好)
空间复杂度
稳定性
复杂性
冒泡排序
O(N2)
O(N2)
O(N)
O(1)
稳定
简单
选择排序
O(N2)
O(N2)
O(N2)
O(1)
不稳定
简单
插入排序
O(N2)
O(N2)
O(N)
O(1)
稳定
简单
希尔排序
O(N1.3)
O(n(logN)^2)
O(N)
O(1)
不稳定
较复杂
归并排序
O(NlogN)
O(NlogN)
O(NlogN)
O(N)
稳定
较复杂
快速排序
O(NlogN)
O(N2)
O(NlogN)
O(logN)
不稳定
较复杂
堆排序
O(NlogN)
O(NlogN)
O(NlogN)
O(1)
不稳定
较复杂
二、算法实现1.前置方法,用于交换123456private static void swap(int[] arr, int j, int i) { if (i == j) return; int temp = arr ...
Java基础之认识NlogN的排序
一、基础 - 归并排序归并排序思想十分简单,但是利用归并排序的变形,可以解决一些看似较为复杂的问题
12345678910111213141516171819202122232425262728293031323334353637383940414243444546class Solution { //归并排序 public void mergeSort(int[] array) { if (array == null || array.length < 2) return ; mergeSort(array,0,array.length - 1); } public void mergeSort(int[] array,int left,int right){ if (right == left) return; int mid = left + ((right - left) >> 1); mergeSort(array,left,mid); ...
Java基础之时间复杂度
一、基础 - 简单排序算法选择排序123456789101112131415161718public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; //记录最小值位置 for (int j = i + 1; j < arr.length; j++) { minIndex = arr[j] < arr[minIndex] ? j : minIndex; //改变最小值位置 } swap(arr, i, minIndex); //交换最小值到前面 }}public static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j] ...
Java基础之集合源码分析
java集合源码分析一、java集合1.ArrayList源码前置声明12345678910// 默认数组长度private static final int DEFAULT_CAPACITY = 10;// 空数组private static final Object[] EMPTY_ELEMENTDATA = {};// 默认空数组private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};// 数组transient Object[] elementData; // non-private to simplify nested class access// 集合大小private int size;
初始化12345678910111213141516171819202122232425262728293031// 指定初始容量的构造public ArrayList(int initialCapacity) { if (initialCapaci ...









