自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大王的博客

java路上跑丢的程序猿

  • 博客(103)
  • 收藏
  • 关注

原创 ObjectMapper使用详细介绍

目录简介1、ObjectMapper的常用配置2、ObjectMapper的常用方法1)json字符串转对象2)数组和对象之间转换3)集合和json字符串之间转换4)map和json字符串之间转换5)日期转json字符串6)readTree()方法简介ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是Jackson的主要类,它可以帮助我们快速的进行各个类型和Json类型的相互转换。1、Ob

2021-09-16 15:19:24 13969 2

转载 什么是面向切面编程(aop)

面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都...

2021-08-26 18:13:55 1738

转载 Maven常用命令大全与pom文件讲解

一、Maven常用命令 1.1、Maven 参数-D 传入属性参数-P 使用pom中指定的配置-e 显示maven运行出错的信息-o 离线执行命令,即不去远程仓库更新包-X 显示maven允许的debug信息-U 强制去远程参考更新snapshot包例如 mvn install -Dmaven.test.skip=true -Poracle其他参数可以通过mvn help 获取 1.2、maven常用命令1、mvn clean说明: 清理项目生产的临时文件...

2021-08-20 09:59:18 2434

原创 HttpServletRequest获取请求得URL信息

request对象中包含的是请求信息,当我们在浏览器地址栏上输入:http://localhost:8080/Example/AServlet?username=zhangsan,这段地址也会作为请求信息封装在request对象中,request对象必然会提供相关的方法来获取这些请求信息,这些信息其实就是请求路径信息。request对象通过以下方法来获取请求路径,如下所示:String getServerName():获取服务器名,localhost;String getServerPort():获取

2021-08-18 17:17:12 799

原创 nacos源码编译打包

最近公司使用的nacos(1.4.0)被查出存在未授权访问漏洞,通过查看资料了解到,nacos的版本小于等于2.0.0的都有这个问题,所以打算把nacos升级到2.0.2,到官网上下载发现网速太慢,简直忍受不了,于是决定下载源码,自己打包1. 从github下载nacos的源码 https://github.com/alibaba/nacos.git2. 在命令行执行 :如果是windows不要在power shell上执行mvn -Prelease-nacos -Dmaven.test..

2021-08-03 18:05:00 1484

原创 MongoDB 备份与还原 mongodump、mongorestore

一、 MongoDB 备份1、mongodumpmongodump 是 MongoDB 官方提供的备份工具,它可以从 MongoDB 数据库读取数据,并生成 BSON 文件,mongodump 适合用于备份和恢复数据量较小的 MongoDB 数据库,不适用于大数据量备份。​ 默认情况下 mongodump 不获取 local 数据库里面的内容。​ mongodump 仅备份数据库中的文档,不备份索引,所以我们还原后,需要重新生成索引。​ mongodump 备份过程中会对 mongod

2021-07-23 15:36:17 6009 3

原创 rabbitmq之配置文件详解

设置配置文件rabbitmq的系统配置文件一般是rabbitmq.conf,可以登录后台查看它的路径,如果你是源码安装,最初这个文件是没有的,需要手动创建;如果是apt安装他的位置在/etc/rabbitmq/目录下,它规定了rabbitmq的众多参数设定;# 进入指定目录touch /usr/local/rabbitmq_server/etc/rabbitmq/rabbitmq.conf配置文件的语法继承于erlang语言,有点类似json[%% this is rabbitmq

2021-07-05 18:53:57 5393 1

原创 MongoDB 分片片键如何选择

片键的选择决定了三个重要的方面1、读写的分布其中最重要的一点是读和写的分布。如果你总是朝一台机器写,那么这台机器将会成为写瓶颈,则你的集群的写性能将会降低。这无关乎你的集群有多少个节点,因为所有的写操作都只在一个地方进行。因此,你不应该使用单调递增的_id或时间戳作为片键,这样将会导致你一直往最后一个副本集中添加数据。相类似的是如果你的读操作一直都在同一个副本集上,那么你最好祈求你的任务能在机器内存所能承受的范围之内。通过副本集将读请求划分开能够使你的工作数据集大小随着分片数线性扩展。这样的话你

2021-07-01 16:16:55 659

原创 mongoDB之主分片

我们再使用mongoBD的分片功能时,使用分片的集合数据可以很好的分布在几个shard上(一主n副),但是没有进行分片的集合保存在什么地方,这个mongoBD的主分片了。分片群集中的每个数据库都有一个主分片,其中包含该数据库的所有非分片集合。 每个数据库都有自己的主分片。 主分片与副本集中的主无关。 mongos当创建新数据库时,通过在数据量最少的集群中选择分片,该选择器将选择主分片。 mongos使用命令totalSize返回的字段 listDataba...

2021-07-01 14:28:57 1248

原创 MongoDB基于windows的搭建复制集(最详细教程)

第一步:从MongoDB官网下载MongoDB到本地并解压我是解压到c盘根目录。解压完到本地的目录如下,其中data文件是自己新建的,在data文件夹下再新建conf、db、log三个文件夹,conf文件夹是编写mongodb的配置,db是保存的数据,log是日志。在conf文件夹下新建rs1.conf、rs2.conf、rs3.conf三个配置文件;在db文件夹下新建rs1、rs2、rs3三个文件夹第二步:现在进行复制集节点的配置。mongod有几种启动方式,在这里只是用了配置文件的启动方..

2021-06-25 18:52:43 744 1

原创 使用一个节点在 MongoDB 中启用副本集

对于生产负载,建议至少使用三个无副本集。但是可以在 MongoDB 中创建单节点副本集。在像开发这样的时候,您可能想要测试一些副本集功能。以下是在 MongoDB 中创建单节点副本集的步骤。1.找到mongod.conf文件并添加副本集详细信息将以下副本集详细信息添加到mongod.conf文件中replication: replSetName: ""例子:replication: replSetName: "rs0"注意:在 brew 安装的 MongoDB 中的

2021-06-25 18:50:53 1793

转载 从RefreshScope实现原理看刷新配置失效问题

前言在SpringIOC中,我们熟知的BeanScope有单例(singleton)、原型(prototype), Bean的Scope影响了Bean的创建方式,例如创建Scope=singleton的Bean时,IOC会保存实例在一个Map中,保证这个Bean在一个IOC上下文有且仅有一个实例。SpringCloud新增了一个refresh范围的scope,同样用了一种独特的方式改变了Bean的创建方式,使得其可以通过外部化配置(.properties)的刷新,在应用不需要重启的情况下热加载新的外部化

2021-06-08 17:15:22 3652

原创 @RefreshScope 和 @Scheduled

最近在运维项目的时候,出现了一个问题,在一个定时处理数据的类(TaskSchedule)里面,有用到配置文件(bootstrap.properties)中的信息,所以使用@Value()

2021-06-08 11:26:51 1405 3

原创 SQL SERVER 收缩日志

正文  事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息。  收缩日志的原因有很多种,有些是考虑空间不足,有些则是应用程序限制导致的。  下面介绍的是在简单模式下,进行收缩操作#方法一:通过图形界面逐步操作1、打开数据库属性窗口2、更改数据库恢复模式,“完整”改成“简单”3、收缩数据库日志,“任务”->“收缩”4、收缩完,将数据库的恢复模式修改为“完整”#方法二:使用命令AL.

2021-05-26 10:00:36 5755

原创 对synchronized(this)的理解

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所

2021-04-26 11:41:31 1178

原创 MongoDB索引详情

索引概述我们常常会看到一些乱七八糟的索引,所以我们用索引的真正目的是什么呢? 终极目的:借助索引快速搜索,有效减少了扫描的行数 精髓:不止要有索引,索引的过滤性还要好,区分度要足够高,这才是好的设计索引的类型和属性唯一索引唯一索引是索引具有的一种属性,让索引具备唯一性,确保这张表中,该条索引数据不会重复出现。在每一次insert和update操作时,都会进行索引的唯一性校验,保证该索引的字段组合在表中唯一。db.containers.createIndex({name: 1},{u.

2021-04-23 13:50:47 494

原创 sql server 系统表sysobjects、sysindexes、syscolumns以及常用方法

sql server数据库中三张重要的系统表sysobjects:在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。 sysindexes:数据库中的每个索引和表在表中各占一行。 syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。这三张表用ID(表ID)字段关联,共用一个ID,具体的字段含义这里就不一一列举了,接下来给大家分享我们可以用这个几张表干什么,以及常用的方法SQL SERVER 中的 OBJECT /OBJECT.

2021-04-23 10:55:13 4012

原创 sqlserver 单表 分组 不同查询条件 统计 数据 优化

背景:最近单位在进行接口优化,本人负责的一个接口查询时间需要30s,这与接口要求5s内严重不符,所以就开始优化sql语句,表数据大概3千万吧,数据库是SQLServer过程:1、查看表是否有索引 查看表,里面确实有索引2、确认查询语句是否命中索引查询语句SELECT * FROM (SELECT a.loop_id as eval_id, a.loop_id, a.loop_pid, sum(a.[pulse_res_...

2021-04-22 19:26:12 993

原创 MongoDB分页查询动态添加查询条件

一、使用QueryByExampleExecutor1. 继承MongoRepositorypublic interface StudentRepository extends MongoRepository<Student, String> { }2. 代码实现使用ExampleMatcher匹配器-----只支持字符串的模糊查询,其他类型是完全匹配 Example封装实体类和匹配器 使用QueryByExampleExecutor接口中的findAll方法

2021-04-21 09:45:18 1186

原创 Java中Calendar类的常用方法

Calendar 类常用方法的记录:获取时间 // 使用默认时区和语言环境获得一个日历 Calendar cal = Calendar.getInstance(); // 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1 System.out.println("年:" + cal.get(Calendar.YEAR)); Sy...

2020-12-24 14:56:46 565

原创 Collections用法整理

Collections(java.util.Collections) 工具类包含了很多有关集合操作的静态方法,使用这些方法能帮我们简化代码。本文将整理Collections工具类的一些基本方法。1. 获取List中的最小值Java代码List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99); // 6...

2020-12-24 14:00:23 643

原创 SpringBoot的@Conditional派生注解详解

一.派生注解的类型和作用必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效@Conditional | 作用(判断是否满足当前指定条件) @ConditionalOnJava | 系统的java版本是否符合要求 @ConditionalOnBean ...

2020-12-09 12:01:07 1576

原创 cap原则为什么只能满足两个

官方说法CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数

2020-11-27 19:29:36 2983 3

转载 RabbitMQ

RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置RabbitMQ使用教程(三)如何保证消息99.99%被发送成功?RabbitMQ使用教程(四)如何通过持久化保证消息99.99%不丢失?RabbitMQ使用教程(五)如何保证队列里的消息99.99%被消费?...

2020-10-12 18:50:49 58

原创 Java中使用double转BigDecimal的问题

先上结论:不要直接用double变量作为构造BigDecimal的参数。线上有这么一段Java代码逻辑:1,接口传来一个JSON串,里面有个数字:57.3。2,解析JSON并把这个数字保存在一个float变量。3,把这个float变量赋值给一个 BigDecimal对象,用的是BigDecimal的double参数的构造: new BigDecimal(double val)4,把这个BigDecimal保存到MySQL数据库,字段类型是decimal(15,2)。...

2020-09-15 10:14:05 1029

原创 mongodb查询方法

集合简单查询方法mongodb语法:db.collection.find() //collection就是集合的名称,这个可以自己进行创建。对比sql语句:select * from collection;查询集合中所有的文档,即关系型数据库中的查询表中的所有数据。返回制定的键值mongodb语法:db.collection.find({},{"userid":1})对比sql语句:select userid fromcollection;条件过滤mongod...

2020-08-28 17:05:15 495

原创 RabbitMQ四种交换机类型介绍

Direct Exchange处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “abc”,则只有被标记为“abc”的消息才被转发,不会转发abc.def,也不会转发dog.ghi,只会转发abc。Fanout Exchange不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。F.

2020-08-25 18:07:04 638

转载 从远程仓库拉取最新代码合并到本地分支

这里共展示两类三种方式。1.git pull:获取最新代码到本地,并自动合并到当前分支命令展示//查询当前远程分支$ git remote -v//直接拉取并合并最新代码$ git pull origin master [示例1:拉取远端origin/master分支合并到本地当前分支]$ git pull origin dev [示例2:拉取远端origin/dev分支合并到本地当前分支]分析:不推荐这种方式,因为是直接合并的,无法提前处理冲突。2.git fetch + m

2020-07-23 17:37:05 9763 1

原创 java8 stream多字段排序

List<类> list; 代表某集合 //返回 对象集合以类属性一升序排序 list.stream().sorted(Comparator.comparing(类::属性一)); //返回 对象集合以类属性一降序排序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序 list.stream().sorted(Comparator.comparin.

2020-07-16 23:07:53 3396

原创 什么是哈希算法?

工作的时间长了,经常用到的东西很熟悉,但不怎么用的东西就忘的很多,所以,重新总结很重要;哈希算法的基本含义 哈希是密码学的基础,理解哈希是理解数字签名和加密通信等技术的必要前提。 哈希,英文是 hash ,本来意思是”切碎并搅拌“,有一种食物就叫 Hash ,就是把食材切碎并搅拌一下做成的。哈希函数的运算结果就是哈希值,通常简称为哈希。哈希函数有时候也翻译做散列函数。 根据维基百科的定义,哈希函数要做的事情是给一个任意大小的数据生成出一个固定长度的数据,作为...

2020-07-14 22:58:07 556

原创 Java1.8-Comparator和Comparable的使用和源码解析

概述  Comparator和Comparable两者都属于集合框架的一部分,都是用来在对象之间进行比较的,但两者又有些许的不同,我们先通过一个例子来看一下他们的区别,然后再分别学习下它们的源码。先来看一下Comparable的例子,定义实体类Student,实现Comparable,重写compareTo方法:public class Student implements Comparable<Student> { private String name; pri

2020-05-13 23:00:35 671

原创 sqlserver中的日期类型的区别

在数据库时错误很多,昨天在日期上也出现了一个小小的错误,这可能就会涉及到输入日期的数值类型了。SQL Server中有四个日期类型:date,datetime,datetimeoffset和datetime2(7)。那么这几个又有什么区别呢 查资料得知: date存入的数据格式为:yyyy-mm-dd datetime存入的数据格式为:yyyy-mm-dd hh:mm:ss.fff(精确到1毫秒) datetime2(7)存入的数据格式为:yyyy...

2020-05-11 23:00:44 2431

原创 java8的新特性

1.速度更快2.代码更少(增加了新的语法lambda表达式)3.强大的Stream API4.便于并行5.最大化减少空指针异常 Optional1.lambda表达式java8以后 hashmap 数组-链表-红黑树(总元素大于64,每个哈希值大于8个以上) concurrentHashMap(CAS算法) 同上,效率也提高了 java8以前 数组-链表 ...

2020-04-26 23:12:20 98

原创 正则表达式

1、正则表达式的语法2、正则表达式常用例子[正则表达式]文本框输入内容控制整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:"^\d{n,}$"。只能输入m~n位的数字:。"^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1...

2020-04-25 23:28:05 323

原创 Java正则表达式中的Pattern类与Matcher类

在JDK 1.4中,Java增加了对正则表达式的支持。java与正则相关的工具主要在java.util.regex包中;此包中主要有两个类:Pattern、Matcher。Pattern类声明:public final classPatternimplementsjava.io.SerializablePattern类有final 修饰,可知他不能被子类继承。含义:模式...

2020-04-20 22:04:56 247

原创 BigDecimal的使用

一、BigDecimal概述​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和F...

2020-04-15 22:52:01 169

原创 BigDecimal.setScale(int newScale, int roundingMode);的使用

newScale: 保留newScale位小数roundingMode: 舍去规则(0 <= roundingMode <= 7)分别有8个常量ROUND_UP(0):第newScale位小数进1,后面舍去 BigDecimal b1 = new BigDecimal(3.1415926); BigDecimal b2 = b1.setS...

2020-04-14 17:09:31 998

转载 一个小时学会Git

https://www.cnblogs.com/best/p/7474442.html

2020-04-13 22:22:50 134

原创 时间复杂度和空间负责度

先简要介绍一下:算法复杂度分为时间复杂度和空间复杂度。其作用:时间复杂度是指执行这个算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。时间和空间(即寄存器)都是计算机资源的重要体现,而算法的复杂性就是体现在运行该算法时的计算机所需的资源多少。时间复杂度:1:算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好地反映出算法的优劣与否;2:算法执...

2020-04-13 00:13:53 488

原创 java中list集合对sort的使用方法

List集合的排序:java提供了两种排序方式,分别是Collections.sort(List)和Collections.sort(List,Commparator),下面就这两种方法的使用做详细的说明:方法一:Collections.sort(List)这个方法有分两种情况:1、比较的是基础数据 2、比较的是引用数据 1、基础数据的比较呢,一般都是直接比较,因为基础数据都...

2020-04-12 18:42:38 16470

空空如也

空空如也

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

TA关注的人

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