自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

master_hxh

不忘初心

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 日常笔记记录

2021-8-17在git命令状态下 mvn clean install --settings D:\work_app\apache-maven-3.8.1\conf\settings-gennlife.xml -U -X依赖拉不下来的解决方式。-U 强制去远程更新snapshot(快照)的插件或依赖,默认每天只更新一次。X 显示maven允许的debug信息2021-8-18git常用命令:2021-8-19linux 装Dgraph的版本号 docker pull dgraph/dg

2021-08-27 10:58:52 161

原创 开发的日常踩坑记录

开发踩坑记录,不定时更新—2021.4.14—使用easypoi poi报错cn.afterturn.easypoi.exception.excel.ExcelExportException: Excel导出错误Caused by: java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.CellStyle.setAlignment(S)Vjava.lang.reflect.InvocationTargetException: null

2021-05-10 10:23:03 977

原创 【微信小程序】在手机上显示,多个数组循环。第二个数组的图片高度不同于第一个数组的图片高度

然后,在onImageLoad方法中,获取到每个图片元素的高度,并将其赋值给相应的swiperHeight属性。可以通过wx.createSelectorQuery方法选择对应的图片元素,并使用boundingClientRect方法获取元素的几何属性,包括高度。其中,多个图片来自一个数组,每个图片都有不同的高度。rHeight数组的值。如果你想要第二个数组的图片高度与第一个数组的图片高度不同,可以尝试在onImageLoad方法中对图片高度进行动态设置。第二个数组的图片高度不同于第一个数组的图片高度。

2023-07-13 18:11:38 233

转载 HashMap的负载因子为何默认是0.75

一、负载因子的作用HashMap负载因子,与扩容机制有关;即若当前容器的容量,达到设定最大值,就需要要执行扩容操作。举个例子:当前的容器容量是16,负载因子是0.75;16*0.75=12,也就是说,当容量达到了12的时就会执行扩容操作。作用很简单,相当于是一个扩容机制的阈值。当超过了这个阈值,就会触发扩容机制。HashMap源码已经为我们默认指定了负载因子是0.75。截取部分源码,从这里可以看出,系统默认的负载因子值就是0.75,而且我们还可以在构造方法中去指定。下面我们就正式来分析一下为什么是默

2022-04-27 09:50:15 513

原创 Spring AOP 中@Pointcut的用法

格式:execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?) 括号中各个pattern分别表示:修饰符匹配(modifier-pattern?)返回值匹配(ret-type-pattern)可以为*表示任何返回值,全路径的类名等类路径匹配(declaring-type-pattern?)方法名匹配(name-pattern

2022-04-27 09:31:25 481

原创 List 去重的 6 种方法

方法1:contains判断去重(有序)public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>() {{ add(1); add(3); add(5); add(2); add(1); add(3);

2022-03-21 15:15:53 7096

转载 Mysql-面试

1、Mysql索引在什么情况下会失效查询条件包含or,可能导致索引失效如何字段类型是字符串,where时一定用引号括起来,否则索引失效 like通配符可能导致索引失效。联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。在索引列上使用mysql的内置函数,索引失效。对索引列运算(如,+、-、*、/),索引失效。索引字段上使用(!= 或者 < >,not in)时,可能会导致索引失效。索引字段上使用is null, is not null,可能导致索引失效。左连接查询或者

2022-03-15 15:50:14 62

原创 toString()、String.valueOf、(String)强转,有啥区别?

一、基本类型(1)基本类型没有**toString()**方法推荐使用 String.valueof()(2)无法强转(String)(String)是标准的类型转换,将Object类型转为String类型,使用(String)强转时,最好使用instanceof做一个类型检查,以判断是否可以进行强转,否则容易抛出ClassCastException异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎的使用。二、封装类型可以使用 toString三、总结1、to

2022-03-14 11:18:51 115

原创 java并发编程-线程池 ThreadPoolExecutor参数详解

ThreadPoolExecutor主要参数public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)1、int corePoolSize 核心线程数2、int maximumPoolSiz

2022-02-16 22:33:17 748

原创 深究Spring中Bean的生命周期

Bean 的完整生命周期在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了。一旦bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring管理Bean的生命周期就复杂多了,正确理解Bean 的生命周期非常重要,因为Spring对Bean的管理可扩展性非常强,下面展示了一个Bean的构造过程Bean 的生命周期如上图所示,Bean 的生命周期还是比较复杂的,下面来对上图每一个步骤做文字描述:1、Sprin

2021-10-11 11:36:51 97

转载 Gateway网关简介及使用

API 网关的定义网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。API 网关的职能API 网关的分类与功能Gateway最重要的几个概念Gateway怎么

2021-10-08 11:34:09 1198

原创 MongoDB数据库

-基本概念数据库 (database)集合 (conllection)文档 (document) - 在mongoDB中,数据库和集合都不需要手动创建, 当我们创建文档时,如果文档所在的集合或数据库不存在会手动创建数 据库和集合-基本指令:show dbsshow databases-显示当前的所有数据库use 数据库名-进入到指定的数据库中db -db表示的是当前所处的数据库show collections-显示数据库中所有的集合-数据库的CRUD(增

2021-09-13 22:56:03 155

原创 Spring注解 AOP@Aspect的详细介绍

前言:在spring AOP中业务逻辑仅仅只关注业务本身,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。相关注解介绍:@Aspect:作用是把当前类标识为一个切面供容器读取 @Pointcut:Pointcut是植入Advice的触发条件。每个Pointcut的定义包括2部分,一是表达式,二是方法签名。方法签名必须是 public及void型。可以将P

2021-09-02 11:39:57 611

原创 解析xml文件

解析xml文件的方法:DOM、(DOM4J、SAX用的多)## 1.DOM4J常用的对象: SAXReader:读取xml文件到Document树结构文件对象 Document:是一个xml文档对象树,类比Html文档对象 Element:元素节点。通过Document对象可以查找单个元素2.DOM4J解析步骤:## 标题 1.创建解析器 SAXReader reader = new SAXReader(); 2.Document对象:通过解析器read方法获取 document d

2021-06-21 22:37:37 364

原创 日期的处理

jdk8中 LocalDateTime 的使用时间初始化//获取当前时间 LocalDateTime nowTime= LocalDateTime.now(); System.out.println("现在时间"+nowTime); //自定义时间 of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond) Local

2021-05-11 12:26:54 442

原创 Clickhouse 时间日期函数

Clickhouse 时间日期函数Clickhouse 时间日期函数 注:所有的时间日期函数都可以在第二个可选参数中接受时区参数。示例:Asia / Yekaterinburg。在这种情况下,它们使用指定的时区而不是本地(默认)时区。 SELECT toDateTime('2016-06-15 23:00:00') AS time, toDate(time) AS date_local, toDate(time, 'Asia/Yekate

2021-05-11 10:50:56 4411

转载 JAVA中关于获取时间(日期)的总结大全

转载:https://blog.csdn.net/weixin_37539378/article/details/78889992Java中获取时间(日期)的总结大全在开发过程中,少不了与时间打交道,比如根据两个日期得出相差的时分秒,时间加减,时间累加,前5分钟,前一个月,前一年,等等…而我最近开发和时间操作的比较频繁,所以记录下,和时间操作有关的代码。在JAVA中有六个与时间有关的类:java.util.Date java.sql.Date java.sql.Time jav

2021-05-10 12:57:49 135

原创 从数据库表里获取时间字段,对时间字段进行切割

直接通过格式转换的形式即可。举例:String str0 = "2015-07-05日"; // 这里可以改写为 从数据库中获取值Date d1 = new SimpleDateFormat("yyyy-MM-dd日").parse(str0);//定义起始日期// 对 年 月 日 进行切割SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy");SimpleDateFormat sdf1 = new SimpleDateFormat("MM")

2021-04-30 15:22:41 340 1

原创 HTTP 轻量级请求库-----Unirest

Unirest 是一个轻量级的 HTTP 请求库,可发起 GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 请求。支持 Node、Ruby、Java、PHP、Python、Objective-C、.NET 等多种语言。底层是基于httpclient,所以使用Unirest之前先要引入httpclient相关的依赖。Maven项目可以直接在pom.xml文件中引入Unirest 的依赖 <dependency> &lt

2021-04-13 15:09:23 2431

原创 JMS VS AMQP

4.1 JMS4.1.1 JMS 简介JMS(JAVA Message Service,java消息服务)是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS(JAVA Message Service,Java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。ActiveMQ 就是基于 JMS 规范实现的。4.1.2 JMS两种消息模型①点到点(P2

2021-04-01 10:25:16 201

原创 i++ 是线程安全的吗?

简介:volatile关键字保证了在多线程环境下,被修饰的变量在别修改后会马上同步到主存,这样该线程对这个变量的修改就是对所有其他线程可见的,其他线程能够马上读到这个修改后值.Thread的本地内存1.每个Thread都拥有自己的线程存储空间2.Thread何时同步本地存储空间的数据到主存是不确定的借用Google JEREMY MANSON 的解释,上图表示两个线程并发执行,而且代码顺序上为Thread1->Thread21、不用 volatile假如ready字段不使用volati

2021-03-29 18:33:55 57

原创 Spring 中 事务 @Transactional的使用

1.Spring事务的原理Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。使用@Transactional的相比传统的我们需要手动开启事务,然后提交事务来说。它提供如下方便根据你的配置,设置是否自动开启事务自动提交

2021-03-17 09:53:42 185

原创 多线程之线程的生命周期

说一下线程的生命周期?答:1.新建状态2.就绪状态3.运行状态4.阻塞状态5.死亡状态具体描述一下每一个状态?答:1.新建状态:用new关键字建立一个线程后,该线程对象就处于新建状态。处于新生状态的线程有自己的内存空间,通过调用start()方法进入就绪状态。2.就绪状态:处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪队列,等待系统为其分配CPU。当系统选定一个等待执行的线程后,它就会从就绪状态进入运行状态,该动作称为“CPU调度”。3.运行状态在运行状态的线程执

2021-02-21 12:09:52 207

原创 线程的生命周期

线程的生命周期一共分为五个部分分别是:新建,就绪,运行,阻塞以及死亡。由于cpu需要在多条线程中切换因此线程状态也会在多次运行和阻塞之间切换.当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。尤其是当线程启动以后,它不能一直“霸占”着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。生命周

2021-02-21 12:03:46 224

原创 Redis 缓存穿透问题及解决方案

缓存穿透问题缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑,如果从存储层查不到数据则不写入缓存层。一般对于未命中的数据我们是按照如下方式进行处理的:1.缓存层不命中。2.存储层不命中,不将空结果写回缓存。3.返回空结果。缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并发性,甚至可能造成后端存储宕掉。方案一:缓存空对象缓存空对象会有一个必须考虑的问题:空

2021-01-10 22:04:49 174

原创 数据库select查询语句进阶

昨日回顾:一. 数据库的介绍管理数据的软件二. 数据库的 分类:a.关系型数据库有约束b.非关系型数据库没有约束三. MySQl 的安装:a. exe msi文件 点击下一步下一步b. 压缩包binmysqld : 启动mysql服务的mysql : 连接mysql环境变量四. 数据库(文件夹)数据表 (文件)数据行(文件行)五. 数据库:增:create database 数据库名;删: drop database 数据库名;查:show databases

2021-01-08 16:35:41 312

转载 将数据从前台传到后台方法总结

目录一、通过ajax二、在action中请求后台的方法三、通过dom获取标签,触发标签的submit方法,直接提交数据到后台四、最简单的标签五、用的最多的表单六、目前最流行的ajax异步请求1、第一步:首先构造需要发送给后台的json格式数据2、第二步:使用jquery的ajax、load、get、post、getJSON、getScript、getHTML等方法。七、对于构造json格式对象的数据,有以下几种方法一、通过ajax传给后台的数据通过json封装起来,再用ajax将jso

2021-01-07 20:44:40 4476

原创 B树 B+树 红黑树

B-Tree(B树)具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。而事实上是,B-tree就是指的B树。特此说明。m阶B树的M阶指的是所有结点中的子结点个数的最大值。一个m阶B树是一棵空树,或者是满足以下条件的树:(1)结点最多有m个分支。(2)根结点最少有两个分支,非根非叶结点至少有ceil(m/2)个分支。(3)

2021-01-07 09:53:27 2205

原创 Dubbo的底层实现原理和机制

一.Dubbo :是一个RPC框架,SOA框架:Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。作为RPC:支持各种传输协议,如dubbo,hession,json,fastjson,底层采用mina,netty长连接进行传输!典型的provider和cusomer模式!作为SOA:具有服务治理功能,提供服务的注册和发现!用zookeeper实现注册中心!启动时候服务端会把所有接口注册到注册中心,并且订阅configu

2021-01-06 16:43:49 698

转载 SpringCloud网上商城系统(仿京东商城)

SpringCloud网上商城系统(仿京东商城)简介设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存等,使用SpringCloud框架,基于Java开发。该项目可部署到服务器上,不断完善中!预览功能说明用户微服务用户登录用户注册用户登出用户名可用性校验用户登录状态获取商品微服务分页查询单个商品查询商品新增商品修改公共资源微服务公共资源微服务同时也是SpringCloud的Eureka模块提供了常用的JavaBean, ViewObject, 工具类.

2021-01-06 16:38:52 243

转载 JSON Web Token设计单点登录系统

用户认证八步走所谓用户认证(Authentication),就是让用户登录,并且在接下来的一段时间内让用户访问网站时可以使用其账户,而不需要再次登录的机制。小知识:可别把用户认证和用户授权(Authorization)搞混了。用户授权指的是规定并允许用户使用自己的权限,例如发布帖子、管理站点等。首先,服务器应用(下面简称“应用”)让用户通过Web表单将自己的用户名和密码发送到服务器的接口。这一过程一般是一个HTTP POST请求。建议的方式是通过SSL加密的传输(https协议),从而避免敏感信息被嗅

2021-01-06 15:13:32 69

原创 面试题---框架篇

1.对于spring的理解1.Spring是实现了工厂模式的工厂类,类名为BeanFactory,子类为ApplicationContext。Spring相当于一个大的工厂类,在配置文件中使用bean元素配置文件创建实例化对象;2.Spring提供了对象IOCd支持,利用IOC可以很好的实现模块之间的解耦;3.Spring提供了对AOP的封装,成为面向切面编程,系统中有很多不相干的方法,在这些方法中想要加入某种系统功能的代码,这种功能称为AOP;实现AOP采用了代理技术,客户端之间调用代理类,对外具有

2021-01-06 14:57:53 123

原创 面试题---多线程

1.多线程有几种实现方案,分别是哪几种两种继承Thread类实现Runnable接口拓展一种:实现Callable接口,需要和线程池结合使用2.同步有几种方式,分别是什么两种同步代码块:synchronized(this){}同步方法:public synchronized void method(){}3.sleep()和wait()方法的区别sleep():必须指时间,不释放锁wait():可以不指定时间,也可以指定时间,释放锁4.启动一个线程是run()还是start(),他们

2021-01-06 14:54:05 106

原创 面试题---数据库

1.什么是事务什么是锁事务:被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败,那么整个操作就会失败,会返回到操作之前的状态。为了保证要么执行要么不执行,就可以通过事务来实现锁:在所有的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性合并发行,与现实生活中锁一样,它可以使某些数据的拥有者在某个时间段内不能使用某些数据或数据结构2.事务的特征及含义1.原子性:整个事务的操作要么一起完成要么一起失败回滚,不可以停滞在中间某个环节2.一致性:在事务开始前和结束后,数据库的完

2021-01-06 14:52:44 86

原创 面试题---集合框架篇

1.ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap的区别Collection中包含了List和SetList:分为ArrayList、Vector、LinkedList,是有序可重复的集合ArrayList:数组,查询快,增删慢,线程不安全,效率高,扩容增长为原来的1.5倍Vector:数组,查询快,增删慢,线程安全,效率低,扩容为原来的2倍LinkedList:链表,查询慢,增删快,线程不安全,效率高Set:HashSet

2021-01-06 14:51:35 1815 5

原创 面试题---基础篇

1…java源文件中是否可以包括多个类,有什么限制可以包括多个类但是只能有一个public修饰的类,且类名需和文件名相同2.java中有没有goto有,是java中的保留字,未使用3.&和&&的区别都是逻辑与,前后逻辑均为true才为true,一个为false就为false单个&需要将两个逻辑都运行完成才会给出结果,可能会导致null指针异常&&是短路与,只要第一个逻辑是false就结束整个逻辑的判断并返回结果4.在java中如何跳出多重循环

2021-01-06 14:48:52 203 1

原创 Redis面试话术

一.Redis基本数据类型1.Stringset getmset mgetdelincr incrbydecr decrbystrlen append2.hash键不可重复 值可重复hset hget hmset hmgethsetnx (如果字段以存在则不执行任何指令)hgetallhdel (删除1个或多个字段)hincrby 增加指定整数hexists 是否存在指定的数据hlen hash中 数据个数hkeys

2021-01-06 14:34:13 259 1

原创 Get与Post请求的区别

1、参数传递方式Get:通过Url传递参数,Url与参数之间用?隔开,多个参数之间用&隔开,也是表单的默认提交方式。Post:所有操作对用户来说都是不可见的,相对于get方式更安全。2、传送数据量大小不同Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。3、信息缓存Get提交的信息能被缓存,请求保留在浏览器历史记录中;Post提交的数据一般不能被缓存,请求不会保留在浏览器历史记录中。4、编码方式与乱码处理问题Get:默认编码编码

2021-01-06 14:09:35 146

原创 SpringBoot-Security

什么是SecuritySecurity应用场景SpringBoot整合SecurityMaven依赖信息 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent&

2021-01-03 01:02:51 318

Mybatis自动生成代码.txt

Mybatis自动生成代码.txt

2021-05-29

空空如也

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

TA关注的人

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