自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 问答 (1)
  • 收藏
  • 关注

原创 Zookeeper分布式锁

Zookeeper分布式锁基于Curator实现

2022-04-05 17:59:55 1884

原创 @Import注解与@ImportResource注解

@Import@Import({XXXX.class,YYYY.class})给容器中自动创建出两个类型的组件,可以从容器中直接提取@ImportResource首先需要说明为什么需要导入xml文件。因为。。。。别人就是这么开发的。神特么的现在还用xml。我最近搞公司的项目。我擦,气死。一堆xml文件。还有就是比较老的项目会使用xml文件,此时如果需要导入到容器中就需要该注解了、@ImportResource("classpath:beans.xml")导入Spring的配置文件...

2021-12-31 00:00:00 281

原创 单元测试Junit5

单元测试注解,嵌套注解,前置条件。。。。

2021-12-27 23:35:20 213

转载 maven项目parent标签的使用

使用maven是为了更好的帮项目管理包依赖,maven的核心就是pom.xml。当我们需要引入一个jar包时,在pom文件中加上就可以从仓库中依赖到相应的jar包。现在有这样一个场景:有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。这时候就需要用到parent标签, 我们创建一

2021-10-16 21:19:09 7602 1

转载 ThreadLocal内存泄露分析:弱引用?非也

有些程序员在使用ThreadLocal的过程中会发现有内存泄漏的情况发生,就猜测这个内存泄漏跟Entry中使用了弱引用的key有关系。这个理解其实是不对的。如果key使用的是强引用:假设在业务代码中使用完ThreadLocal ,threadLocal Ref被回收了。但是因为threadLocalMap的Entry强引用了threadLocal,造成threadLocal无法被回收。在没有手动删除这个Entry以及CurrentThread依然运行的前提下,始终有强引用链 threadRef-&

2021-09-18 11:48:11 370

转载 Java权限修饰符

转载自:郭小白一、Java的修饰符的分类:权限修饰符:public、默认(包访问权限)、protected、private其他修饰符:abstract、static、fianl、transient、volatile、native、synchronized、strictrp二、权限修饰符:修饰类:对于非内部类而言,类的访问权限仅有public和包访问权限两种(内部类可以是private或protected)修饰成员:对于一个类,其成员能否被其他类访问,取决于该成员的权限修饰符。在Java中,

2021-09-03 14:53:09 5835

转载 Group by的理解

转载自:知乎我们可以将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)

2021-09-02 13:55:24 125

原创 线程状态与中断-代码实例演示

文章目录前言线程状态线程中断前言想要看线程的状态以及中断的实例代码吗?提示:以下是本篇文章正文内容,下面案例可供参考线程状态初始化运行(Java线程将OS的就绪和运行合并为运行状态)阻塞等待超时等待终止 public static void main(String[] args) { Thread t1 = new Thread(new TimeWaiting(),"TimeWaitingThread"); t1.start();

2021-09-01 15:10:47 116

原创 经典垃圾收集器

Serial收集器最基础的,最古老的收集器。该收集器是单线程工作的(强调在GC的时候,强制停止其他工作线程,直到GC结束)直到这里你是否认为,Serial收集器是最早出现的,但是现在看来已经老而无用,食之无味的鸡肋?但事实却是:是HotSpot运行在客户端模式下默认的新生代收集器。优点:简单+高效ParNew收集器实质上是Serial收集器的多线程并行版本。其他的参数(收集算法,Stop The World,对象分配规则,回收策略)和Serial基本一致。值得一说:除了Serial收集器外.

2021-09-01 11:03:51 71

原创 JVM垃圾收集算法与引用

如何判定对象已死?引用计数法可达性分析引用计数法在对象中加一个计数器,如果该对象被引用:计数器加一;如果引用失效:计数器减一。那么在任何时刻如果计数器等于0的时候,说明该对象已经死亡。虽然占用了一点空间,但是原理简单,判定效率高,在大多数情况下是一个很好算法。但是循环引用是个例外。即我引用了你,你引用了我。除了你我之外的引用都没有了。但是此时计数器并不等于0。导致无法回收。可达性分析通过使用根对象为初始结点集。从这些结点出发,向下搜索,搜索过程中走过的路径称之为引用链。在引用链之外的

2021-08-31 22:21:52 55

原创 JVM运行时数据区域

程序计数器因为在线程是通过时间片的方式轮流使用CPU资源。这就导致线程有可能在一次时间片内无法完成任务。需要将当前任务的进度(状态)进行保存,以便于后面再次得到CPU使用权的时候继续工作。那么如何保存当前状态呢?JVM通过使用程序计数器来达到目的。程序计数器指向了线程的指令。从而保存了线程的状态。值得一提的是:它也是唯一一个不会OOM的JVM内存区域。虚拟机栈每一次调用方法都会形成一个栈帧,栈帧存放与虚拟机栈中。一个方法的开始执行与结束对应栈帧的入栈与出栈。栈帧中存储有局部变量表操作数栈.

2021-08-31 15:22:32 64

原创 Redis远程服务器安装

因为Redis底层是C++编写的,需要有C++的环境[root@VM-0-5-centos home]# yum install gcc-c++查看是否安装成功[root@VM-0-5-centos home]# whereis gcc下载Redis[root@VM-0-5-centos home]# wget https://download.redis.io/releases/redis-6.2.4.tar.gz解压Redis压缩包[root@VM-0-5-centos home]#

2021-06-28 14:24:43 148

原创 IDEA创建spring boot项目报错:Cannot download ‘https://start.spring.io‘

报错信息报错信息:Initialization failed for ‘https://start.spring.io’Please check URL, network and proxy settings.Error message:Cannot download ‘https://start.spring.io’: Read timed out, response: 200 null解决方案直接通过Spring的官网提供的网页创建项目。然后下载解压即可放心食用。地址...

2021-06-24 10:34:34 118

原创 中科院自动化研究所面试

本人面试的是中科院自动化研究所自我介绍说了基本信息 项目简介有意思的经历(因为以前在网上看到,说一下可以勾起面试官的兴趣)。但是显然不适合我们这行业。面试官:那你这个经历跟我们计算机有什么联系吗?我:呜呜。。。没有使用过Spring Cloud吗?Spring Boot相关Spring Boot测试单元Spring Boot如何打包跨域问题,如何解决MySql三种级别锁行锁锁的是什么行锁实现有哪几种算法MySQL死锁怎么排查Redi

2021-05-19 11:36:21 951 2

原创 海康的笔经

写一个单例模式(没说懒汉还是饿汉)class Singleton{ //为什么volatile修饰? //保证了各线程对singleton修改的可见性 private volatile static Singleton singleton; private Singleton(){} public static Singleton getSingleton(){ //创建完了,你还凑什么热闹 if (singleton == nul

2021-05-15 16:59:54 56

原创 逆波兰表达式求值

原本以为这道题分分钟就能做完,谁能想到,我特喵做了1个半小时。小丑竟是我自己!!!原题很显然直接使用栈来解决就可以的题目。先说一下思路哈开始循环vector。每一次都是一个独立的string字符串。每一次遇见字符串的时候,请辨认一下,是否是操作符还是数字。如果是数字,转化成int类型放进栈中,(为什么转化成int,方便后期直接拿来计算呀)如果是操作符。从栈中提取两个最顶层的两个数字来进行运算。(这个时候还需要注意两个数字的顺序哈。否则又是GAMEOVER)在这里说一下,需要知道的基础

2021-03-20 10:04:18 83

原创 反转链表-进阶

思路:可以将链表划分为三个部分,第一部分要反转的左侧,需要一个指针指向该部分的最后一个结点(需要考虑,直接从头开始反转的情况)中间部分需要用到两个指针抓住他们(或者你说定位也行)左侧部分需要用到一个指针指向最前面的一个结点反转中间部分最后,将三个部分连起来/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode()

2021-03-18 19:51:02 153

原创 链表有环(包含进阶)

解法1:需要用到额外的空间,使用set从第一个节点开始,看该节点是否存在于set中。如果存在那么就是第一个入环节点,如果不存在,将该节点放进set中,指向下一个结点重复以上过程,直到找到入环节点,或者指针到达null处,说明没有入环节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val

2021-03-18 11:33:21 136

原创 链表复制(包含进阶) C++

解法1:使用额外空间使用哈希表,其key和value都是Node。key放原来链表的结点 X ,value放复制之后的结点 X’ 。遍历哈希表,或者原来的链表。找到 X 结点的next结点 Y ,再通过map找到复制之后的结点 Y‘ 。将 X’ 的next指针指向 Y‘ 。rand指针也一样操作。重复以上过程,直到全部遍历完毕。我其实在哈希表中存储的不是结点,而是结点的地址,但是也不差。照样可以。当然你想要使用结点也可以。自己试试吧。//链表复制 #include <bit.

2021-03-18 08:35:14 1337

原创 链表划分-进阶

做到时间复杂度O(N),空间负载度O(1),并保持其稳定性。即,改变之后的链表其相对顺序是不变的。需要使用到六个变量思路:将主链表拆分成三个小链表,分别为小于部分,等于部分,大于部分。最后将三个链表串联起来。SH指向小于部分的头结点,ST指向尾结点。EH指向等于部分的头结点,ET指向尾结点。BH指向大于部分的头结点,BT指向尾结点。上代码://链表划分-进阶 //做到时间复杂度O(N),空间负载度O(1),并保持其稳定性。即,改变之后的链表其相对顺序是不变的。 #i.

2021-03-17 12:55:24 87

原创 链表的划分

创建一条单链表,并输入一个分界的数字,使得该数字对应的结点左边都是小于该数字的结点,右边的是大于该数字的结点。不必有序。创建一个int类型的数组(也可以是Node),将所有的结点放进该数组中,然后开始partition.当做是荷兰国旗问题就可以解决了.//链表划分#include <bits/stdc++.h>using namespace std;struct Node{ int val; Node* next;}; class Solution {public: N

2021-03-17 10:58:23 152

转载 威佐夫博弈算法C++

在看本文章之前给大家说几句如果你是先看了百度上的解释或者是其他文章,觉得很是繁琐,无法理解。那么恭喜你,看本文会轻松很多。这里没有讲解原理之类的,只是结果。当你理解了之后,有兴趣的话就可以继续去钻研原理了。到时候会很轻松的。当然我说的本文会轻松,但并不是说,跟1+1一样那么简单。还是需要你坚持一会。一会就可以明白的。加油威佐夫博弈(Wythoff’s game)是指的这样一个问题:有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最

2021-03-15 10:22:26 534

原创 巴什博弈

在看本文章之前,请先看一下,我在B站找到的巴什博弈的视频。巴什博弈巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样

2021-03-15 09:16:40 408

转载 完全二叉树和满二叉树区别

二叉树分类很多,其中满二叉树和完全二叉树比较特殊,因为这两种二叉树效率很高,这里记录几条相关性质。首先是满二叉树:从形象上来说满二叉树是一个绝对的三角形,也就是说它的最后一层全部是叶子节点,其余各层全部是非叶子节点,如果用数学公式表示那么其节点数n=2^k-1(2的k次方减一)其中k表示深度,也就是层数。也就是说满二叉树的节点数是一系列固定的数,比如说,1,3,7,15…如果节点数不是这个序列中的数,那么他肯定不是满二叉树,当然了,反之,是不成立的。由于它的节点数和形状固定,我们可以发现很多其数学公式性

2021-03-14 09:13:12 2460

原创 逆序数算法

原题在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。输入第1行:N,N为序列的长度(n <= 50000)第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9)输出输出逆序数输入样例42431输出样例4开始分析不知道大家有没有写过二

2021-03-09 11:06:59 6882

原创 最长公共子序列算法

视频解说请大家先点击视频解说,看一下,然后再过来继续观看。甚至你可能不需要再看本文了。最长公共子序列的长度直接就是二维数组的最后一个数字。直接提取就可以。但是难就难在回溯的问题上。输出一个最长公共子序列并不难(网上很多相关代码),难点在于输出所有的最长公共子序列,因为 LCS 通常不唯一。总之,我们需要在动态规划表上进行回溯 —— 从table[m][n],即右下角的格子,开始进行判断:如果格子table[i][j]对应的X[i-1] == Y[j-1],则把这个字符放入 LCS 中,并跳入ta

2021-03-08 15:42:49 2843

原创 基于质数分布的质数检测原理

首先看一个关于质数分布的规律:大于等于5的质数一定和6的倍数相邻。例如5和7,11和13,17和19等等;当然你是不想反驳一下?反驳就对了。这里先说一下:是说有可能是两边的都是质数。并不是两边的绝对就是质数。什么意思?即如果你是6的倍数的两边的数字,那我们可以考虑可能你就是质数,但是你却不是6的倍数的两边数字,那你绝对不是质数。越讲越糊涂?那咋们先看证明证明过程如下:令x≥1,将大于等于5的自然数表示如下: ······6x-1,6x,6x+1,6x+2,6x+3,6x+4······(相

2021-03-06 18:02:39 289

原创 解决win10 cmd下运行python弹出windows应用商店问题

直接上图:就一句有用!!!!从评论里面看到的。自古评论出高人。

2020-12-23 16:47:28 1008 4

原创 内连接与外连接的区别如同相亲

我们假设现在有一个相亲大会。但是这个大会呢有个规则。相同年龄的才可以相亲,否则不可以相亲。男方这里我们假设有:23,26,34,40岁的男性女方这里我们假设有:23 26,33,41岁的女性那么我们使用内连接的话:可以去相亲的只有23岁的一对男女和26岁一对的男女。其余的男生女生连大会的门都不许进(没有配对成功的结果不显示,显示到的只有配对成功的数据)。如果使用外连接:所有的男生女生都可以去大会的地方,但是能配对的一起相亲,不能配对的只能干等,啥都不许干(即所有结果都会显示,但如果没能配对成功,只显

2020-12-15 17:14:44 112

原创 spring boot put方法有参数时如何编写与访问

先说明自己遇到的问题:后台编写put方法接收参数。 @RequestMapping(value = "/updataName/{id}/",method = RequestMethod.PUT) public Object updataName(@PathVariable("id") Integer id){ System.out.println("现在开始接受参数"); System.out.println(id);// System.out.p

2020-12-08 11:04:51 330

原创 git如何查看和切换账号和邮箱

1. 查看当前登录账号:git config user.name2. 查看当前登录邮箱:git config user.email3. 修改用户名和邮箱:git config --global user.name "Your_username"git config --global user.email "Your_email"

2020-11-28 16:18:42 890

转载 长按事件bindlongtap与点击事件bindtap的冲突 两种方案

第一种 计算时间当我们在一个标签上同时设置bindtap和bindlongtap时, 会发现长按时先出现bindlongtap的事件,然后紧接着也会触发点击事件。显然,大部分时候,这并不是我们想要的事件执行结果。我们知道,微信小程序中事件执行的顺序是点击:touchstart → touchend → tap长按 touchstart → longtap → touchend → tap解决方法:通过点击事件来判定是点击还是长按。bindTouchStart: function(e) {

2020-11-25 11:35:56 919 1

原创 微信小程序 post请求出现400,500等

微信小程序端使用post提交数据显示500先给大家看一下我微信端提交的方式(请看我代码区的注释)formsubmit:function(event){ //获取响应的数据 var stu = event.detail.value; var that = this; wx.request({ url: 'http://localhost:8888/students/insert', method:'POST', //我先用这个方式给大家访问一下

2020-11-24 14:33:16 3397

转载 微信小程序如何刷新当前界面

在微信小程序开发的过程中,在一个页面中对数据操作之后我们大多数时间都需要刷新一下当前界面以把操作之后的结果显示出来,但是如何在执行操作后进行本页面的刷新就成了一个问题很大但是很需要的操作。下面介绍一下微信小程序刷新当前界面的几种方法。方法一:this.onLoad()使用方法:在操作函数中调用this.onLoad()或that.onLoad()(有时候this的作用域不够的时候需要定义that = this)。适用场景:本次操作对页面onLoad函数所携带的各种参数没有影响。这时候我们在页面第一次执

2020-11-18 12:03:37 8558 1

转载 Navicat无法连接MySQL8.0的解决办法

转载

2020-11-17 19:31:19 753

原创 学习StringBuffer

StringBuffer类String类是final类型的,所以使用string定义的字符串是一个常量。因此它一旦创建,其内容和长度是不可改变的。如果你对String进行了修改。那么他创建了一个新的String,而不是原来的String。实践代码: String str = "abcd"; String str2 = new String("dcba"); System.out.println(str.toUpperCase() == str); System.out.println

2020-07-23 21:12:55 137

原创 居然变量名可以用汉字表示

Java语言中,变量名可以用汉字表示。public class Example01 { static int 哦 = 90; public static void main(String[] args) { System.out.println(哦); }}

2020-07-14 10:32:42 2284

原创 JAVA GUI 设置自定义背景颜色(想要什么颜色,就什么颜色,不单调)

JAVA GUI设置背景,但是背景颜色太单调怎么办?在网页上取色然后将这种颜色设置为背景颜色步骤找到自己想要颜色的网站按下F12键点击查看器,有一个吸管一样的东西 点击想要的颜色,即可复制2.然后使用函数对象.setBackground(Color.decode("复制的字符串"));即可设置你的背景。简单的小 tips希望有帮到你...

2020-07-09 21:05:40 2693

原创 ORA-00933: SQL 命令未正确结束

java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束在数据库中语句运行完全没问题,但是在编程的时候却报这样的错误控制台看似报一大堆异常原因可能是:1、你没逗号可能没写够,仔细检查SQL语句2、在写jdbc操作时,在进行多表关联查询时,我们通常采用分行的写法,但是需要注意在每行sql语句结束后与冒号之间加个空格。如图ps:你们可能不知道为了解决这个bug我花了多么少的时间,这多么不痛的领悟!!!嘿嘿...

2020-07-09 09:34:43 1188

原创 setResizable(boolean resizable)什么意思

public void setResizable(boolean resizable)设置此窗体是否可由用户调整大小。参数为boolean类型:resizeable值为true时,表示生成的窗体可以自由改变大小;resizeable值为false时,表示生成的窗体大小是由程序员决定的,用户不可以自由改变该窗体的大小。...

2020-07-08 08:55:37 507

空空如也

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

TA关注的人

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