- 博客(70)
- 收藏
- 关注
原创 Java中的多线程
多运行几遍,就会发现count的值不一定是20000,就是因为多线程的情况下,可能会同时取数,同时+1。以继承Thread为例,实现并验证多线程。
2024-08-08 21:58:44
204
1
原创 SQL中的去重
DISTINCT 关键字用于返回唯一不同的值,一般放在查询语句中的第一个字段前使用。DISTINCT会将NULL值也看做成一个不同的值。DISTINCT去重假如有一张员工表:需要获取所有不重复的员工薪资和年龄的组合,如下编写SQL即可。
2024-08-02 21:18:55
779
1
原创 SQL中CASE WHEN的用法
使用CASE WHEN我们可以将范围的数据转换成特定的值来表达;:有一个员工表Employee(employee_id,department_id.salary,name,age);:需要根据薪资情况来评定等级:5K-6K为C,6K-7K为B,7K以上为A。
2024-07-29 22:43:43
594
原创 CAS算法
CAS叫做CompareAndSwap,比较并交换,主要是通过处理器的指令来保证操作的原子性。:CAS操作是原子的,这意味着它要么完全执行成功,要么完全不执行。这意味着在CAS操作过程中,其他线程不能干扰这个操作。在硬件级别,这是通过CPU的特殊指令实现的,比如在Intel x86架构中使用的CMPXCHG(compare and exchange)指令。(来自网络):在Java中,CAS操作是通过Unsafe类提供的本机方法实现的,这些方法允许直接访问底层内存。(来自网络)
2024-07-26 23:47:34
618
原创 Java中堆和栈的区别
Java中堆和栈的区别说明栈:是运行时单位,代表着逻辑,内含基本数据类型和堆中对象引用,所在区域连续,没有碎片;堆:是存储单位,代表着数据,可被多个栈共享(包括成员中基本数据类型、引用和引用对象),所在区域不连续,会有碎片。不同功能不同栈内存用来存储局部变量和方法调用,而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。共享性不同栈内存是线程私有的。 堆内存是所有线程共有的。异常错误不同如果栈内存或者堆内存不足都会抛出异常
2024-07-25 22:44:39
259
原创 SQL窗口函数
窗口函数用于对数据进行复杂的分析和聚合,窗口函数可以在一组行(通常是基于某种排序的行集)上执行计算,并返回每个行的结果。:窗口函数的语法通常包含一个OVER子句,用来定义窗口的范围。
2024-07-24 22:59:29
521
原创 Java中的异常捕获
自定义异常的使用在开发过程中会使用到自定义异常。因为异常的类名通常也包含了该异常的有用信息,所以在选择抛出异常的时候,应该选择合适的异常类,从而可以明确地描述该异常情况,所以这时候往往都是自定义异常。自定义异常通常是通过继承 java.lang.Exception 类,如果想自定义 Runtime 异常的话,可以继承java.lang.RuntimeException 类,实现一个无参构造和一个带字符串参数的有参构造方法。// 构造函数,仅带消息// 构造函数,带消息和原因。
2024-07-22 21:40:41
1121
原创 SpringMVC的执行流程
SpringMVC的执行流程执行流程文字描述用户发送请求至前端控制器。DispatcherServlet收到请求后调用HandlerMapping处理器映射器。HandlerMapping找到具体的控制器,生成处理器拦截器(有则生成)返回给DispatcherServlet。DispatcherServlet调用HandlerAdapter处理器适配器。HandlerAdapter记过适配,调用具体的Controller控制器。Controller执行完成后返回ModelAndView
2024-07-20 20:36:55
453
原创 Java中的Lambda表达式
Java中的Lambda表达式是Java 8引入的一个重要特性,它提供了一种清晰、简洁的方式来表示只有一个抽象方法的接口(即函数式接口)的实例。
2024-07-18 23:06:29
652
原创 Java中创建对象的几种方式
这是最直接、最常见的创建对象的方式。通过new关键字,Java会调用类的构造函数(Constructor)来初始化新创建的对象。
2024-07-17 20:08:39
377
原创 SQL多表查询
联合查询:将两个查询结果字段直接合并在一个表中,要求列数必须保持一致,字段类型也需要保持一致。行/表子查询:当子查询为单条数据时用’=‘ 否则用in即可,列子查询:in,not in,any,some,all。表量子查询:=,>,=,
2024-07-13 23:10:57
338
原创 MySQL和SQlServer的区别
在一些常用的SQL语句中,MySQL和SQLServer存在有一些区别,后续我也会将我遇到的不同点持续更新在这篇博客中。
2024-07-12 17:23:38
305
1
原创 MySQL相关函数
常用:AVG()、SUM()、MAX()、MIN()、COUNT()。定义:聚合函数作用与一组数据,并对一组数据返回一个值。说明:聚合函数不能嵌套使用。
2024-07-10 22:37:04
423
原创 SQL语句分类
字符集说明:mysql中不建议使用utf8字符集,utf8字符集默认占3个字节,而有些特殊字符占四个字节,故建议使用呢。一般建表会在后面加ENGINE=InnoDB default charset=utf8mb4;多个权限使用,分割,*可以表示所有数据库和所有表。DDL——数据定义语言。DML——数据操作语言。DQL——数据查询语言。DCL——数据控制语言。
2024-07-09 23:58:12
539
原创 数据库常见问题(持续更新)
InnoDB 为Mysql数据库的默认引擎,InnoDB通过。where 字段名 like 表达式。limit 初始位置,记录数。
2024-07-08 22:04:21
588
原创 UNION、UNION ALL、INTERSECT、MINUS
4) UNION、UNION ALL、INTERSECT、MINUS?说明UNION:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;IUNION ALL:对两个结果集进行并集操作,包括重复行,不进行排序;INTERSECT:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;MINUS:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。适用性UNION 和 UNION ALL: 这两个在大多数现代的关系型数据库管理系统中都是通用的,包括
2024-07-07 21:16:53
352
原创 乐观锁与悲观锁
数据库中除了数据还会有一个version字段,当线程读取数据后记录当前的version,当需要更新数据的时候再次读取version,如果和开始读取的version相同则可以更新数据并更新version,否则更新失败。:ABA问题:当读取内存值V的时候时A,有一个线程将A改为B,后有改为A,CAS会误认为内存值V没有改变。但是在更新数据的时候,需要判断该数据是否被别人修改过,如果数据被其他线程修改过,则不进行数据更新。每次获取数据的时候,都会担心数据会被修改,所以每次获取数据的时候都会进行加锁,
2024-07-06 21:17:58
259
原创 ACID及事务隔离级别
是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,这些操作。MySQL中的事务默认自动提交,我们可以改成手动。解释:从上到下安全性由低到高,性能由高到低。ACID四大特性解释。
2024-07-05 21:06:03
226
原创 并发事务的问题
时间戳机制:每个事务开始时都会被分配一个时间戳。当事务尝试读取或写入数据时,会检查数据上的时间戳并确定是否发生冲突。如果时间戳较新,则事务可以继续;否则,事务可能需要回滚或重试。锁可以分为排他锁(X锁)和共享锁(S锁)。X锁不允许其他任何事务读或写数据,而S锁允许其他事务读数据但不能写。OCC假设冲突较少,允许事务在没有锁的情况下运行,直到事务提交时才检查是否有冲突。如果检测到冲突,事务将被回滚并重新开始。多版本并发控制法(multi-version concurrency control,MVCC)
2024-07-04 22:25:22
392
原创 Java环境变量的设置
这样的 CLASSPATH 设置表示 Java 运行时将首先在当前目录下查找类文件,然后在 %JAVA_HOME%\lib\dt.jar 和 %JAVA_HOME%\lib\tools.jar 这两个 JAR 文件中查找。在JDK 1.5及以上版本中,通常不需要显式设置CLASSPATH,因为JRE会自动查找标准类库。但是,如果你需要添加额外的库文件,可以设置CLASSPATH。:在Java中设置环境变量主要是为了能够让Java运行时能够找到Java开发工具包(JDK)的安装位置以及相关的库文件。
2024-07-03 23:07:00
3606
2
原创 Java正则表达式
正则表达式导包:java.util.regex1、匹配规则使用string类的matches方法返回值为boolean 代表是否能匹配成功public class ReTest { // 电话号码的规范 // 起始位为1 第二位为3,4,5,6,7,8,9 public static boolean isRealPhone(String phone){ boolean flag = phone.matches("1[-9]\\d{9}");
2022-05-29 22:06:15
481
原创 MySQL(持续更新)
MySQL学习(问题&解决方法)说明:今天用MySQL写sql语句的时候遇到了一些问题,写篇博客记录一下(大佬勿喷)问题1:字符串拼接问题今天使用Mybatis的时候,用到了模糊查询,需要字符串的拼接,具体情境如下:数据大约是这么个数据,然后要实现传入年和月,查出这一年这一个月的所有的数据和突然发现sql中不能直接用“+”拼接字符串,这里插一个MySQL中的模糊查询模糊查询关键字:like通配符:%:匹配任意长度的字符串_:匹配任意单个字符escape:转义上面两个字符
2022-04-21 20:48:05
646
原创 Git的使用(持续更新)
Git基础工作区域使用流程工作区域GIt在使用的时候一般会用到以下四个区域工作目录工作目录就是本地的一个目录,可以将本地的代码文件复制到该目录,以便进行后续操作。使用git init 命令新建一个工作目录暂存区git提供的一个用于临时存放你工作目录中的改动使用==git add .==命令将工作目录中的改动提交至暂存区本地仓库安全存放数据的地方,提交到所有版本的数据,其中head指向最新放入仓库的版本使用git commit命令将暂存区中的文件提交至本地仓库远程仓库托管代码的服务
2022-04-16 11:32:07
426
1
原创 Java-Web中数据库连接池DBCP数据源和C3P0数据源时区报错的问题
关于解决数据库连接池DBCP数据源和C3P0数据源时区报错的问题问题描述在使用eclipse编写数据库连接池与DBUtils工具的代码时遇到了奇怪的报错,具体报错见下图根据错误信息有time_zone的字样,也就是数据库时区的问题下面提供两种解决方案1、在Java代码中直接设置serverTimezone=UTC在代码中是这样的如果是用C3P0的话同理在配置文件c3p0-config.xml中的数据库后面加上serverTimezone=UTC就行了2、设置数据库的时区打开终端,进入m
2021-05-24 17:26:30
557
1
原创 Linux shell编程之判断闰年(双中括号[[]]的使用)
题目今天做linux作业 碰到了一个判断闰年的题目首先了解一下什么是闰年闰年:年份所代表的的数字,能被4整除但是不能被100整除,或者能被400整除的称为闰年。用c++写的话就是int year; cin>>year; if((year%4==0&&year%100!=0)||(year%400==0)) cout<<"闰年"<<endl; else cout<<"非闰年"<<en
2021-04-12 20:30:07
4778
原创 关于Linux(以fedora为例)实现局域网内SSH远程登录+SCP文件传输
SSH远程登陆1.SSH安装进入终端后在root用户下安装SSH,使用yum install openssh-server命令如果安装失败,很有可能是系统中有ssh,此时你可以查看/etc中有没有ssh这个目录,如果有的话说明安装成功。这种情况就是已经安装的情况2.SSH启动然后使用systemctl start sshd.service命令启动SSH要确保你和你的小伙伴都要启动SSH3.SSH远程登陆确保你和你的小伙伴在同一个网络下(也就是局域网),如果你是虚拟机的话你首先要设置桥
2021-04-06 23:28:14
927
原创 B. M-arrays
B. M-arrays-708div2-B题目题意&&思路代码题目B. M-arraystime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array a1,a2,…,anconsisting of n positive integers and a positive integer m
2021-03-18 08:27:11
1527
6
原创 L1-009 N个数求和 (20 分)
题目L1-009 N个数求和 (20 分)本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部
2021-03-13 08:36:11
185
原创 B - Eastern Exhibition(思维)
B - Eastern Exhibition 题目题解题意思路代码题目题解题意首先在二维平面给你n个点,让你在整数坐标建一个距离这n个点最近的位置,求有多少个这样的位置。思路把二维平面投射到一维的x,y轴上,然后取中位数做垂线,垂线相交的点即为所求的点。浅蓝点为所给点,深蓝点为投影,绿线就是中位数点所做出的垂线,红点即为所求点。代码 #include <bits/stdc++.h> #define ll long long using namespa
2021-02-19 08:58:55
1686
5
原创 C. Sum of Cubes(map打表)
Sum of Cubes题目描述样例思路题意代码题目Codeforces Round #702 (Div. 3)描述样例思路题意这个题目的意思是给你一个数c,能不能找到两个整数a,b使得a^3 + b^3=c。用map从1到1e4打表,然后for循环判断即可。代码#include <bits/stdc++.h>#define ll long longusing namespace std;map<ll,ll>mp;int main(){ for
2021-02-18 10:24:28
927
1
原创 C - Save the Queen!(思维)
C - Save the Queen! 题目题意题解思路AC代码题目题意给你n个敌人和k个士兵,一个士兵同时只能对抗一个敌人,每个士兵的抵抗时间有限且已给出,问你如何安排才能拖延最长的时间。题解思路(1)首先如果只有n个敌人,取最小的那个即为最长时间。(2)先选出n个时间最长的n个士兵,再用剩余士兵的时间从最小的那个开始分配时间看最终能分配到哪里,哪里就可以算出最长时间。(3)若能分配到选出来的所有士兵,则直接算出所有士兵的平均值即可。AC代码#include <bits/st
2021-02-01 21:27:25
149
原创 蛇形矩阵(模拟)
蛇形矩阵题目AC代码题目输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5AC代码#include <bits/stdc++.h>using namespace std;#define ll long
2021-01-28 10:47:54
325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人