自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(286)
  • 资源 (3)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Thymeleaf 一篇文章让你快速搞懂基本用法与功能

前言Thymeleaf介绍SpringBoot与Thymeleaf的集成Thymeleaf常用语法变量1.1、变量案例1.2、动静结合1.3、ognl表达式的语法糖1.4、自定义变量方法2.1、ognl表达式支持方法调用2.2、Thymeleaf内置对象2.3、字面值2.4、拼接运算循环逻辑判断分支控制switchJS模板前言因工作需要,闲来无事整理了一篇关于thymeleaf的快速入门教程,有些前端基础的童鞋应该一看就懂了,使用和Vue类似但是又有些许差别,不过话说回来语言都是相通的,以不变应万变。.

2020-12-27 22:57:22 62

原创 Java如何将指定字符串转化为指定日期格式

前言将传过来的日期字符串“形状”,重新设置输出日期字符串的形状,就可以得到想要日期格式的数据了。 public static void main(String[] args) { String s1 = "20151117190936"; String s2="20090915-17:20:12"; try { Date date1 = new SimpleDateFormat("yyyyMMddHHmmss").parse(s

2020-12-05 20:18:09 52

原创 JSONPath表达式

前言JSONPath是一种简单的方法来提取给定JSON文档的部分内容。JSONPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容。JSONPath表达式语法1、操作符?:问号,标记表达式的开头。使用的语法 [?(表达)]例如:[?(Expression)]@:在符号处表示正在处理的当前节点。语法使用$.books[?@.price>100]注意:使用JSONPath的[]操作符操作一个对象或者数组,索引是从0开始。

2020-10-30 15:17:12 80

原创 fastJSON应用:String,JSONObject,JSONArray相互转换

前言fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。下面对常用到的关于String,JSONObject,JSONArray的相互转换。package TEST;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.alibaba.fastjso

2020-10-24 12:11:59 101 1

转载 Mysql-5.6.35 win10x64安装步骤

添加环境变量(个人认为只需要添加到用户变量就好,系统变量尽量不要去修改)  变量名:MYSQL_HOME  变量值:D:\Program Files\MySQL  即为mysql的自定义解压目录。  再在Path中添加 %MYSQL_HOME%\bin  注册windows系统服务  将mysql注册为windows系统服务  操作如下:  1)鼠标右键开始菜单选择”命令提示符(管理员)”  2)输入服

2020-10-09 21:54:33 66

原创 中信银行在线笔试 mysql 把select结果update更新到表中,从查询结果中更新数据

准备条件dept 部门表:employee 员工表:需求需求1:从表中查出每个部门的员工人数 SELECT DISTINCT count(*) as num, d.`name` FROM `dept` d LEFT JOIN employee e ON d.d_id = e.d_id GROUP BY d.`name`需求2:更新部门表中每个部门的员工人数 UPDATE dept d INNER JOIN ( SELECT DISTINCT co

2020-09-20 22:20:50 183 1

原创 Linux中的grep和管道符

找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件,然后把他们重新生成一下。要求只能用一行命令。我对Linux 是个白痴,工作了之后才开始接触的,会用的命令只有那几个常用的。这个问题对我来说就有点难度,我只是大概知道查找文件用 grep ,其他的就不知道了。不过没关系,用Google ,查找到 grep 的完整用法:1、grep -l ‘boss’ * 显示所有包含boss的文件名。2、grep -n ‘boss’ file在匹配行之前加行号。3、grep -i ‘boss’ file显示匹

2020-09-15 21:33:46 157

原创 Mybatis的优缺点

优点1、简单易学mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个SQL映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。2、灵活mybatis不会对应用程序或者数据库的现有设计强加任何影响。SQL写在XML里,便于统一管理和优化。通过SQL基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。3、解除SQL与程序代码的耦合通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测

2020-09-15 21:12:50 75

转载 Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法

Spring 事务机制回顾   Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.  结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷。   其实这是不认识Spring事务传播机制而造成...

2020-09-13 21:13:58 854

原创 JVM调优

调优命令Sun JDK 监控和故障处理命令 jps jstat jmap jhat jstack jinfojps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程jstat:JVM statistic Monitoring 是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行数据jmap:JVM Memory Map命令用于生成 heap dump 文件jhat:JVM Heap Analysis

2020-09-03 13:14:49 84

原创 JAVA中的几种基本数据类型是什么,各自占用多少字节

测试代码: public static void main(String[] args) { System.out.println (new StringBuilder ().append ("Byte-->>").append ("字节数:").append (Byte.BYTES).append (";位数:"). append (Byte.SIZE).append ("; 最小值-->最大值:").append (Byte.MIN_.

2020-09-03 12:47:44 99

原创 Java中的 IO 流 你了解多少

前言IO(Input And Output)在编程中是一个很常见的需求,IO即意味着我们的Java程序需要和“外部”进行通信,这个“外部”可以是很多介质。1、本地磁盘文件,远程磁盘文件2、数据库连接3、TCP,UDP,HTTP 网络通信4、进程间通信5、硬件设备(键盘,串口等)Java中的流按照处理数据类型分类:1、字符流2、字节流程序中需要根据待传输数据的不同特性而使用不同的流。按照数据流向分类:1、输入流:对输入流只能进行读操作2、输出流:对输出流只能进行写操作推荐阅

2020-09-03 11:31:53 65

原创 Dubbo通信协议,序列化协议,Hessian数据结构以及PB效率为什么最高

前言关于Dubbo,你必须要掌握的有dubbo的工作原理,至少要知道dubbo分成哪些层,然后平时怎么发起RPC请求的,注册,发现,调用,这些都是基本的,接着还需要对底层有一定的了解,需要知道序列化协议有哪些,平时RPC是怎么走的,支持哪些通信协议,Hessian的数据结构,PB的了解,以及为什么PB的效率是最高的?下面我对上述这些问题逐个做了整理总结dubbo支持哪些通信协议1、dubbo协议默认就是走 dubbo 协议,单一长连接,进行的是 NIO 异步通信,基于 hessian 作为序列化协

2020-09-03 08:52:44 317

原创 Java创建线程的三种方式 以及区别

前言Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用三种方式来创建线程:1、继承Thread类创建线程2、实现Runnable接口创建线程3、使用Callable和Future创建线程1、继承Thread类创建线程通过继承Thread类来创建并启动多线程的一般步骤如下1、定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体2、创建Thread子类的实例,也就是创建了线

2020-09-02 11:27:38 112

原创 一篇文章帮你搞懂 Spring 事务的七种传播行为

前言什么叫事务传播行为?既然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(Propagation behavior)指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。例如:method A事务方法调用method B事务方法时,method B是继续在调用者method A的事务中运行呢,还是为自己开启一个新事务运行,这就是由method B 的事务传播行为决定的。事务传播行为Spring 定义了七种事务传播行为,可以分为三大类:(1)支持

2020-09-01 18:10:17 136

原创 CMS和G1的区别

CMSCMS:以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现(1)过程1、初始标记:独占CPU,仅标记GCRoots能直接关联的对象2、 并发标记:可以和用户线程并行执行,标记所有可达对象3、 重新标记:独占CPU(STW),对并发标记阶段用户线程运行产生的垃圾对象进行标记修正4、 并发清理:可以和用户线程并行执行,清理垃圾(2)优点并发,低停顿(3)缺点对CPU非常敏感:在并发阶段虽然不会导致用户线程停顿,但是会因为占用了一部分线程使应用程序变慢无法处理浮动垃圾:在

2020-08-31 11:47:48 78

原创 Spring MVC工作原理解析

SpringMVC工作原理客户端(浏览器)发送请求,直接请求到 DispatcherServletDispatcherServlet 根据请求信息调用 HandlerMapping ,解析请求对应的 Handler解析到对应的 Handler(也就是我们平常说的Controller控制器)后,开始由HandlerAdapter 适配器处理HandlerAdapter 会根据 Handler 来调用真正的处理器开始处理请求,并处理相应的业务逻辑。处理器处理完业务后,会返回一个ModelAndVi

2020-08-31 08:49:38 69

原创 单例模式的五种写法

前言设计模式(Design Pattern),提供了在软件开发过程中面临的一些问题的最佳解决方案,是Java开发者必修的一门课程。主要分创建型模式,结构型模式和行为型模式。接下来介绍的单例模式属于创建型模式。单例模式单例模式,也就是只有一个实例,并且是自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1、懒汉式懒汉式,就是实例在用到的时候才去创建,“比较懒”,用的时候才去检查有没有实例,如果有则返回,没有则新建。有线程安全和线程不安全两种写法,区

2020-08-30 14:20:44 149

原创 Tomcat调优技巧

前言Tomcat调优技巧可以从两方面考虑优化,一个是Tomcat的自身调优,另一个就是调优JVM内存。下面介绍调优手段,更多详细的原理和实现以后用到的时候再来补充记录。一、Tomcat的自身调优采用动静分离节约Tomcat的性能调整Tomcat的线程池调整Tomcat的连接器修改Tomcat的运行模式禁用AJP连接器二、 JVM调优调优JVM内存Tomcat自身调优1、采用动静分离静态资源如果让Tomcat处理的话,Tomcat的性能会被损耗很多,所以我们一般采用:Nginx

2020-08-30 09:43:50 83

原创 (5分钟速成)Centos7 搭建 MySQL 5.7 教程

亲测有效,五分钟搭建完毕,好文值得分享!!????转载 https://www.cnblogs.com/lzhdonald/p/12511998.html

2020-08-28 18:43:49 56

原创 快速搞懂Redis五种基本数据类型的内部编码

前言Redis最基本的五种数据类型有:String(字符串),Hash(哈希),List(列表),Set(集合),ZSet(有序集合)。还有一些高级数据类型有:HyperLogLog,bitMap,GeoHash,BloomFilter。type 命令可以查看当前键的数据结构类型。可以通过 object encoding 命令查询内部编码。实际上每种数据结构都有两种以上的内部编码实现,有些内部编码可以作为多种外部数据结构的内部实现,例如ziplist 就是hash,list和zset共有的内部编码。R

2020-08-27 22:30:52 78

原创 Java线程池如何合理配置核心线程数?

配置核心线程数Java线程池如何合理配置核心线程数?分下面两个步骤分析:第一步:先看下机器的CPU核数,然后再设定具体参数CPU核数=Runtime.getRuntime().availableProcessors()System.out.println(Runtime.getRuntime().availableProcessors());第二步:分析下线程池处理的程序是CPU密集型,还是IO密集型CPU 密集型:核心线程数 = CPU核数 + 1IO 密集型:核心线程数 = CPU核数

2020-08-26 10:46:52 642

原创 IDEA 启动控制台日志乱码—修改Tomcat编码(亲测有效)

问题描述在idea中启动项目后,控制台打印出来的日志全部乱码解决方案查了网上很多资料后,汇总如下几种解决方案:1、修改Tomcat configuration ,指定 vm.options 为 -Dfile.encoding=UTF-82、进入setting 设置 ,editor——>file Encodings,编码格式全部设置为 UTF-83、找到idea的安装路径,在bin文件下,修改 idea.exe.vmoptions和 idea64.exe.vmoptions 文件,加入

2020-08-25 09:55:51 143

原创 浅谈Redis中Hash的渐进式rehash策略

Hash(字典)Redis中字典相当于Java语言里面的HashMap,它是无序字典。内部实现结构上和Java的HashMap也是一致的,都是数组+链表。当Hash的数组位置碰撞时,就会将碰撞的元素使用链表串接起来。Redis中的Hash 和 Java 中的HashMap 区别在于,Redis中hash(字典)的值只能是字符串。另外它们的rehash的方式也不一样,因为Java的HashMap在字典很大时,rehash是个耗时的操作,需要一次性全部rehash。Redis为了高性能,不能堵塞服务,所以

2020-08-25 08:53:07 222

转载 MySQL存储引擎MyIsam和InnoDB底层索引结构

一、存储引擎作用于什么对象二、MyIsam和InnoDB对索引和数据的存储在磁盘上是如何体现的?三、MyIsam主键索引和辅助索引(非主键索引)的结构1、主键索引2、辅助索引(非主键)索引四、InnoDB主键索引与辅助索引的结构1、主键索引2、辅助(非主键)索引五、InnoDB索引结构需要注意的点一、存储引擎作用于什么对象存储引擎是作用在表上的,而不是数据库。二、MyIsam和InnoDB对索引和数据的存储在磁盘上是如何体现的?下面是创建好的两张表信息,role表使用的存储引擎是MyIsam,而U.

2020-08-24 11:52:32 102

原创 Redis五种基本数据类型的典型应用场景

字符串1、缓存功能2、计数3、共享Session4、限速哈希1、缓存用户信息列表1、消息队列2、文章列表集合1、标签(tag)有序集合字符串1、缓存功能Redis比较典型的是缓存使用场景,其中Redis作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高并发的特性,所以缓存通常能起到加速读写和降低后端压力的作用。使用Redis做缓存访问过程:伪代码展示代码访问流程:1)定义用于获取用户基础信息的函数UserInfo getUserInfo(l.

2020-08-23 11:01:27 128

原创 深入浅出MySQL底层索引结构

索引的特性索引的各种存储结构及优缺点(1)二叉树(2)红黑树(3)Hash(4)B-Tree(5)B+ Tree联合索引底层存储结构索引的特性索引是帮助MySQL高效获取数据的排好序的数据结构。而且索引存储在文件里。索引的各种存储结构及优缺点一般情况下,我们在做数据操作的时候,都会给数据加索引。那在数据库没有加索引的情况下,SQL中的where子句是如何查找目标记录的?举例例子:一张表里有两列数据Col1 和 Col2 ,如果对表格第二列Col2列的数据进行查找,如查找 where Col2=.

2020-08-21 21:44:49 171

原创 Centos7 安装部署RabbitMQ3.7.15 详细教程(附采坑解决方案)

Erlang 和 RabbitMQ 的对应关系安装地址0、准备条件yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel1、安装下载 Erlang下载 rpm 包wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-20.3-1.el7.centos.x86_64.rpm/do

2020-08-19 21:42:21 378

原创 Java终止线程的三种方式

前言停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作。1、使用标志位终止线程一般情况下,在run()方法执行完毕后,该线程就终止了。但是在某些特殊的情况下,run()方法会被一直执行,比如在服务端程序中可能会使用while(true){…}这样的循环结构来不断的接收来自客户端的请求。此时就可以用修改标志位的方式来结束run()方法。 //volatile 修饰符用来保证其他线程读取的总是该变量的最新的值 public volatile boolean

2020-08-19 11:10:13 203

原创 zookeeper 可视化界面(zkui)搭建与配置

准备环境zookeeper可视化WEB工具 zkui 依赖java环境,因此需要安装JDK,zkui 源码需要maven编译,需要安装Apache-maven。1、JDK 1.8 :JDK下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html或者安装openJDK ,命令如下: yum -y install java-1.8.0-openjdk java-1.8.0-open

2020-08-15 09:00:06 348

原创 Dubbo高可用及集群容错模式

什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设 系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,就是99.99%,也就是说,系统的年停机时间为8.76个小时。百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过baidu.com能不能访问来判断“网络的连

2020-08-14 20:22:04 73

原创 使用Dubbo-Monitor监控中心

官网GitHub下载代码:https://github.com/apache/dubbo-admin/tree/master打包(注意:下面的过程描述都在zookeeper启动之后操作的 zookeeper安装启动过程参见这篇文章:传送门)1、进入目录dubbo-admin-master\dubbo-monitor-simple ,打开powershell 窗口执行打包命令:mvn package2、打包成功后,进入目录dubbo-admin-master\dubbo-monitor-sim

2020-08-11 11:30:59 341

原创 新版 Dubbo Admin 2.7.8 管理控制台搭建教程

DubboApache Dubbo 是一款高性能,轻量级的开源java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。实现原理图:官网地址官网地址:https://github.com/apache/dubbo-admin中文文档说明:https://github.com/apache/dubbo-admin/blob/develop/README_ZH.mdDubbo服务swagger地址:http://localhost:8080/s

2020-08-10 17:53:35 2190 3

原创 Idea 快捷键大全(常用快捷键总结)

idea快捷键

2020-08-09 20:56:26 144 11

原创 Redis过期策略和内存淘汰机制

前言通过EXPIRE key seconds 命令来设置 数据的过期时间。返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间。在key上设置了过期时间后key将在指定的秒数后被自动删除。被指定了过期时间的key在Redis中被称为是不稳定的。虽然给key设置了过期时间,但是有些操作会导致过期时间被清除。具体有哪些操作给一个传送门:Redis键过期命令使用注意事项键过期删除策略Redis key 过期删除的策略有三种:被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,

2020-08-08 20:56:40 80

原创 Redis持久化之RDB和AOF区别对比

前言Redis支持RDB和AOF两种持久化机制,持久化功能有效的避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。一、触发机制1、手动触发手动触发分别对应save和 bgsave 命令。save命令阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。运行save命令对应的Redis日志如下:DB

2020-08-08 15:43:15 199

原创 SpringBoot集成swagger-bootstrap-ui

1、官网地址swagger-bootstrap-ui 官网:https://doc.xiaominfo.com/友情提示:多看官网,少走弯路2、导入pom依赖<!--swagger-api 依赖开始--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version&

2020-08-06 16:48:18 100

原创 Redis键过期命令使用注意事项

Redis键过期命令使用注意事项1、如果expire key 的键不存在,返回结果为0127.0.0.1:6379> expire not_exist_key 30 (integer) 02、如果过期时间为负值,键会立即被删除,犹如使用del命令一样127.0.0.1:6379>set hello world OK 127.0.0.1:6379>expire hello-2 (integer)1 127.0.0.1:6379>get hello (nil)3

2020-08-05 19:57:33 91

原创 【Redis】字符串之常用命令与应用

字符串字符串类型是redis最基础的数据结构。键都是字符串类型,字符串类型的值实际可以是字符串(简单的字符串,复杂的字符串如JSON,XML),数字(整数,浮点数),甚至是二进制(图片,音频,视频),但是值最大不能超过512MB。常用命令1、设置值set key value [ex seconds] [px milliseconds] [nx |xx]set命令有几个选项:ex seconds:为键设置秒级过期时间。px milliseconds:为键设置毫秒级过期时间。nx:键必须不

2020-08-05 10:47:12 67

原创 解决Redis错误MISCONF Redis is configured to save RDB snapshots

前言在redis中添加list,字符串类型的键值对之后,redisDeskManager上提示了一些错误信息:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the erro

2020-08-04 09:53:18 411

04741计算机网络原理.zip

该资料涵盖了自考中的计算机网络原理课程的往年真题试卷,供大家学习练习真题,该资料为博主自考时自用的资料,分享给大家希望能对大家有所帮助。

2020-03-19

RedisUtil.java

redisUtil工具类,对redis的常用方法做了封装,在项目的开发过程更加方便快捷,达到随用随拿的效果,减少了代码的重复性,提高开发效率。

2020-03-16

10-Redis高级功能.docx

关于redis事务,redis集群,高可用,高并发的详细学习教程,理论知识结合代码实践,通过代码实践进一步理解理论知识,对于redis高级功能的学习有非常大的帮助!

2020-03-16

Sophia6688的留言板

发表于 2020-01-02 最后回复 2020-04-23

空空如也

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

TA关注的人 TA的粉丝

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