自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @DateTimeFormat不生效的解决方法(之一)

         在做项目的时候需要将前端字符串类型的时间传递到后端,自动映射到Date类型的属性上:前端时间格式:后端时间类型:@DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")//主要是限制前台的时间格式 @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8")//主要是控制后台到前台的时间格式

2022-04-12 16:20:39 10835 2

原创 java String字符串拼接原理

java中的字符串的拼接可以分为下面三种情况: 1. 字符串常量与字符串常量的拼接String s1 = "a"+"b"+"c"; 2. 字符串常量与变量的拼接String s1 = "a";String s2 = s1+"b"; 3. 变量与变量的拼接String s1 = "a";String s2 = "b";String s4 = s1+s2;(1)常量与常量的拼接原理:        

2021-09-14 12:32:27 7756

原创 反编译.class字节码文件的方法

最近在学习JVM,经常会对字节码文件进行反编译查看字节码文件的细节内容。以下是常见的两种反编译字节码文件的方法:方式一:         (1)创建字节码文件:对于.java源文件可以直接运行或者编译生成.class字节码文件         (2)在项目中找到out文件夹,该文件夹中存放在编译生成的字节码文件:   

2021-09-09 12:36:57 3537

原创 JVM类加载的过程

说明:本博客以HotSpot虚拟机为例类加载的全过程:类的生命周期:类加载过程详解:(1)加载(Loading)阶段         “加载”(Loading)阶段是整个“类加载”(Class Loading)过程中的一个阶段。在加载阶段,Java虚拟机需要完成以下三件事情:通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表

2021-09-08 09:15:03 380

原创 Redis持久化之AOF

什么是AOFAOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。RDB 持久化方式就是将 str1,str2,str3 这三个键值对保存到 RDB文件中,而 AOF 持久化则是将执行的 set,sadd,lpush 三个命令保存到 AOF 文

2021-07-28 20:58:15 2467

原创 redis持久化之RDB

为什么持久化? 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是数据保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。 为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种

2021-07-28 20:15:11 273

原创 SpringBoot启动类.java文件变为灰色无法启动、执行的解决策略

今天在查看springboot项目的时候发现自己的项目变成了这个样子:java文件变为了灰色,甚至启动类的启动标志都消失了首先想到的是右键我们的java文件夹标记为sources root目录可以看到文件恢复成为了正常的颜色,但是仍然在报错:无法识别注解等等错误彻底的解决方法(上述操作可以忽略):选择我们项目的pom文件,选中右键选择 Add as Maven Project 选项,将其作为Maven项目添加解决效果:java文件正常,启动类也有了启动按钮成功启动项目

2021-07-27 16:29:17 10501 14

原创 [08001] Could not create connection to database server.Attempted reconnect 3 times.Giving up.

在IDEA中连接数据库时出现了这个错误。错误原因:当前的数据库版本过低,是5.0版本的MySQL,而默认的数据库驱动是8.0的解决方法:更改驱动器:连接成功:

2021-07-24 08:11:17 370

原创 java线程池之四种拒绝策略

什么时候执行拒绝策略:1、ThreadPoolExecutor.AbortPolicy()默认的拒绝策略,当任务数大于线程池最大容量+阻塞队列时,丢弃任务并抛出RejectedExecutionException异常。2、ThreadPoolExecutor.DiscardPolicy丢弃任务,但是不抛出异常3、ThreadPoolExecutor.DiscardOldestPolicy()该策略下,抛弃进入队列最早的那个任务,然后尝试把这次拒绝的任务放入队列。丢弃队列最前面的任务,然

2021-07-19 20:13:05 335

原创 Java线程池之七大参数

在自定义线程池或者使用Executors创建线程池时,都会使用到ThreadPoolExecutor这个类的构造方法进行线程池的创建,而这个类的构造方法中就包含著名的七大参数(1)corePoolSize:核心池的大小。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建c

2021-07-19 16:46:52 354

原创 Java 线程通信中的if和while的理解与使用

多个线程之间的共享资源:Money多个线程使用Money这个资源结果分析:将逻辑判断if改为while循环,为if时,被阻塞的线程重新获得CPU的执行器执行时直接从阻塞的点向后执行;为while时,被阻塞的线程执行时同样也是直接从阻塞的点向后执行,但是它为while循环体,不会立刻跳出循环体,还是会先判断,若满足条件还是会执行while循环,然后被堵塞。说明:java的多线程执行默认是抢占式的,这也是为什么会出现输出线程名字(如:大儿子)而(大儿子线程)未执行消费操作,被二儿子线程抢占了CP

2021-07-17 12:09:43 351 2

原创 Java中HashMap默认的加载因子为什么是0.75

加载因子的作用:Hashmap的底层使用的是hash表进行数据的存储,随着表中的元素不断增加,当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行扩容、rehash操作(即重建内部数据结构)。即加载因子是哈希表在其容量自动扩容之前可以达到多满的一种度量,其大小决定了HashMap的数据密度。加载因子为什么是为什么是0.75?首先明白什么是hash冲突:假设哈希表的地址集为[0,n),冲突是指由关键字得到的哈希地址为j(0<=j<=n-1)的位置上已经有记录。在关键字得到

2021-07-17 10:20:41 865

原创 Java 多线程同步中while(true)位置的理解

在学习多线程同步问题的时候,经常使用多窗口同时买票的例子进行理解学习当while(true)不在同步函数内部时:3个窗口交替卖票while(true)不在同步代码块中:当窗口一获取到CPU执行权后,进入while(true)语句,执行同步方法,然后执行sleep方法,进程堵塞,假设此时窗口3进程获取到CPU执行权,进入while(true)语句,执行ticket.sale()同步方法,但是由于未获取到同步锁(窗口一线程执行的是sleep方法,不会释放锁对象)只能进入堵塞状态,当窗口1自动苏醒后继续执

2021-07-16 12:04:14 2289

原创 Java通过反射获取注解以及注解中的信息

首先自定义两个注解:1、用于描述表名,只能用在类、接口、枚举上@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface TableName { String value();}2、用于描述列的信息,列名、数据类型、长度@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Colum

2021-07-15 17:04:04 5728

原创 Java中获取Class对象的四种方法

什么是Class对象Class类位于java核心包lang包中,它是反射的源头。Class对象用于记录每个类的运行时数据结构,或者说是在内存中访问类的静态数据的接口,每个类都有一个唯一的Class对象。Class对象不能直接通过new来获取,因为其构造器是私有的,下面是Class类的源码:private Class(ClassLoader loader) { // Initialize final field for classLoader. The initialization va

2021-07-15 16:51:33 3772

原创 设计模式6大原则

设计模式的目的设计模式是为了让程序(软件),具有更好的:1)代码可重用性(即:相同功能的代码,不用多次编写)2)可读性(即:编程规范性,便于其他程序员的阅读和理解)3)可扩展性(即:当需要增加新的功能时,非常的方便,称为可维4)可靠性(即:当我们增加新的功能后,对原来的功能没有影响)5)使程序呈现高内聚,低耦合的特性(1)单一职责原则(Single Responsibility Principle)对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求

2021-07-09 09:41:20 6084 1

原创 开启MySQL远程访问权限

(1)登录mysql,在mysql程序中切换到mysql系统数据库:use mysql;(2)授权:grant all privileges on *.* to 'root' @'%' identified by '1234';赋予任何主机访问数据的权限,且设置远程连接的密码为:1234(3)刷新权限 :flush privileges;修改连接密码:更新密码: update user set password=password('123456') where user=’.

2021-07-03 20:15:22 146

原创 Linux环境下MySql的安装

和法国

2021-07-03 19:59:37 158

原创 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the requested

Access to XMLHttpRequest at ‘http://localhost:8080/pics/lb’ from origin ‘http://127.0.0.1:8020’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.在进行跨域请求时通常会报上述的错误。通过输出台报的错误可以看出:我们页面发出的请求因为同源策略

2021-07-02 20:39:01 2182

原创 Unknown character set: ‘utf8mb4‘

今天使用Mysql数据库运行SQL文件时遇到了这个错误:Unknown character set: ‘utf8mb4’错误原因:我的Mysql是5.0版本的,版本比较低,而这个sql文件是在5.7版本的数据库中转储的,但是 MySQL 原字符集为utf8,从5.5开始采用的是utf8mb4。导致在我的数据库中无法识别这个字符集解决方法:使用记事本打开sql文件找到:set names utf8mb4这一行将utf8mb4改为utf8即可成功运行sql文件:还是建议将mysql版本

2021-06-22 11:45:36 6916

原创 Java实现堆排序

算法介绍1)堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。2)堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆,注意︰没有要求结点的左孩子的值和右孩子的值的大小关系。3)每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆4)一般升序采用大顶堆,降序采用小顶堆基本思想(升序排列)1)将待排序序列构造成一个大顶堆2)此时,整个序列的最大值就是堆顶的根节点。3)将其

2021-06-16 18:37:23 344

原创 Java实现基数排序(桶排序)

算法介绍1)基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法3)基数排序(Radix Sort)是桶排序的扩展4) 基数排序是1887年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。5)基数排序是典型的

2021-06-15 16:54:41 3217 1

原创 Java实现归并排序

算法介绍  归并排序是稳定排序,它也是一种十分高效的排序,能利用完全二叉树特性的排序一般性能都不会太差。java中Arrays.sort()采用了一种名为TimSort的排序算法,就是归并排序的优化版本。从上文的图中可看出,每次合并操作的平均时间复杂度为O(n),而完全二叉树的深度为|log2n|。总的平均时间复杂度为O(nlogn)。而且,归并排序的最好,最坏,平均时间复杂度均为O(nlogn)。基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divid

2021-06-15 16:21:00 2688 1

原创 Java实现快速排序

算法简介快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列基本思想1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。代码是以中间值为基值进行快速排序: /**

2021-06-15 16:01:33 184

原创 Java实现希尔排序

算法简介希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。  简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3

2021-06-15 15:34:24 188

原创 Java实现直接插入排序

排序思想插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表(有序子数组)和一个无序表(无序子数组),开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。算法实现核心聚焦于找到要插入的位置以及怎样实现插入这个动作代码实现:public class InsertionSort { public static

2021-06-12 10:30:08 390

原创 Java实现简单选择排序

基本介绍选择式排序属于内部排序法(在内存中完成排序),是从待排序的数据中,按指定的规则选出某一元素(一般选择无序子数组的首元素),再依规定(从大到小还是从小到大)交换位置后达到排序的目的。排序思想第一次从arr[0]arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[l]arr[n-1]中选取最小值,与 arr[1]交换,第三次从arr[2]–arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]–arr[n-1]中选取最小值,与arrli-1]交换,…,第n-1

2021-06-12 10:02:06 184

原创 Java实现冒泡算法及优化冒泡算法

基本思想冒泡排序(Bubble Sort)通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序(前后大小与要求的顺序不一致)则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。代码实现public class BubbleSort { /** * 按照从小到达的顺序进行排序 * @param array 要进行排序的数组 */ public static void bubbleSort(int[] ar

2021-06-12 09:38:51 2090

原创 Failed to import bean definitions from URL location [classpath:spring-dao.xml]

在整合SSM的适合遇到了上述的错误Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [spring-dao.xml]; nested exception is com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceExc

2021-05-15 16:24:10 3197 4

原创 Linux系统通过RPM安装JDK

在Linux系统中安装程序常见的三种方式:(1)rpm(2)解压缩(3)yum在线安装JDK的安装本人使用的是第一种安装方式:rpm安装什么是rpmrpm(英文全拼:redhat package manager) RPM Package Manager (RPM) 是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广

2021-05-04 11:18:29 1135 1

原创 在IDEA中向纯java项目导入测试类jar包

在学java基础时我们要想测试一些结果,大多数情况下都是在main方法中进行。但一个类中只能有一个main方法,这样会浪费时间和空间。这时我们可利用单元测试进行结果的测试。public class TestD { public static void main(String[] args) { } @Test public void test(){ System.out.println("测试jar包导入"); } @Test p

2021-04-19 09:20:00 1085

原创 SpringBoot静态资源映射剖析

首先要知道SpringBoot在哪个地方(哪个自动配置类中)设置了静态资源映射规则。在SpringMVC中可以利用.xml配置文件在其中添加mvc标签进行设置设置静态资源映射,如下: <mvc:resources mapping="/css/**" location="/WEB-INF/templates/css/"/> <mvc:resources mapping="/fonts/**" location="/WEB-INF/templates/fonts/"/> &l

2021-04-10 22:25:27 387

原创 在VS中添加音乐播放器(Media Player)的方法

1、打开工具箱(可使用快捷键:ctr+alt+x)2、在工具箱中右键,选择“选择项”3、选择第二个com组件,点击Windows Media Player组件,点击确定即可。

2020-09-20 17:06:20 5182 1

原创 C#实现图片动态的左右横移

本次项目聚焦于模仿QQ登录界面。我们知道在QQ登录界面,点击QQ头像会在右侧横移出现一个添加账号的加号按钮。本文将简单地实现鼠标移动到QQ头像,右侧会横移出现一个添加账号的按钮;鼠标移开,该按钮再滑到头像下面。需要的控件:2个picturebox、2个timer控件***(一个用于向右横移、一个用于向左横移)。***将这个加号图片隐藏在QQ头像下面:将这个加号图片隐藏在QQ头像下面的方法:右键点击这个加号picturebox,选择“置于底层”选项。这样就能将这个图片隐藏起来。描述一下整个动作的逻

2020-09-14 19:40:05 2438 1

原创 微信小程序开发:实现聊天内容根据是自己还是他人的消息进行左右呈现

在进行微信小程序的开发过程中,细节的处理非常重要。今天就来介绍一下如何实现聊天内容根据是自己还是他人发送的来进行左右呈现。展示一下实现效果:实现该效果,需要利用if else语句来实现。关键是在数据层绑定一个标志信息,用于结构层判断是否为自己发送的信息。数据的绑定在js层的“data”这个对象中完成js层代码:// pages/wxChat/wxChat.jsconst app = getApp();Page({ /** * 页面的初始数据 */ data: {

2020-07-28 20:12:37 827

原创 C#窗体应用利用文本框对数据库一行多个数据进行增、删、该、查相关语句代码

先简单介绍一下我创建的窗体一些控件:还在功能实现阶段,界面还没有美化,所以界面比较丑,原谅一下。为了编码、便于记忆的方便,逐个将文本框的名字进行了修改。(1)对数据库中表的内容进行查找:代码如下: private void button1_Click(object sender, EventArgs e) { string connStr = @"Server=.; Initial Catalog=E-Genealogy; In

2020-06-26 16:57:43 1428 1

原创 在VS中生成汇编语言程序(.asm文件)的方法

**在VS2019中生成汇编语言程序(.asm文件)的方法**这样就生成了汇编语言程序。不过这应该是反汇编文件。.asm文件内容部分截图:

2020-06-15 10:41:53 4576 1

原创 C++浮点数控制输出格式的方法

控制浮点数输出格式需要包含iomanip头文件,所以在源代码中加上头文件#include<iomanip>NOTE:1、C++中的cout默认的输出格式为%g即简略模式,如double型变量a、b的10.000、12.25000输出分别为为10、12.25;若用cout<<fixed<<a<<b,则按C语言风格%f %lf隐含输出6位小数输出,即...

2020-03-19 17:07:07 8464

原创 如何实现C++分离式编译与选择排序

碰到一个编辑题如下:该题就是对选择排序、函数重载的简单应用。由于实在无聊便将简单问题复杂化,采用了才学习的C++中的分离式编译进行编写程序,有以下几点值得注意:1、对于函数的声明应该位于.h的头文件中2、对于函数的定义应该位于.cc或.cpp的文件中3、在定义函数和使用函数的文件中应该加上头文件#include" .h",其后不用加分号“;”创建头文件的方法:源文件类似代码...

2020-03-16 20:18:45 191

原创 C++容器作为函数形参进行使用

C++容器作为函数形参进行使用如这个编程题:该题是对容器的简单应用,由于数组在定义的时候要么用列表初始化间接告诉编译器数组的大小,要么在定义的时候直接定义它的大小如:int arry[100],不仅浪费空间,还让人感到特别的死板。而容器在这方面做到了动态存储的感觉。vectorivec直接可用其成员函数ivec.push_back(i)来输入元素而不需要下标访问的形势来存储元素。我的代码如...

2020-02-27 17:25:09 1658

空空如也

空空如也

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

TA关注的人

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