自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小的博客

专注技术、重视前沿

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

原创 idea中创建多module的maven工程

以前自学Java web的时候,我们都是创建一个web工程,该工程下面再创建dao、service、controller等包。自从工作以后,我们会发现现在的web项目包含多个module,controller和service都是分开在不同的module。个人认为,这样做的好处在于解耦,同时服务的重用。我们可以吧service的module打成jar包,提供给其他项目使用。 对于刚刚接触多modul

2017-09-27 10:04:38 45916 7

原创 kafka关于ERROR Uncaught exception in scheduled task ‘kafka-log-retention‘问题解决

[2021-09-07 10:27:07,763] WARN [ReplicaManager broker=0] Stopping serving replicas in dir /tmp/kafka-logs (kafka.server.ReplicaManager)[2021-09-07 10:27:07,764] ERROR Uncaught exception in scheduled task ‘kafka-log-retention’ (kafka.utils.KafkaScheduler)

2021-09-07 15:30:33 1747

原创 用js写谷歌浏览器插件

需求在工作中,如果我们需要修改别人网页的内容,因为我们没有别人的代码,所以我们不能靠修改源代码的方式解决。但是谷歌浏览器提供了插件功能,我们可以自己编写插件实现浏览指定网页,修改网页的内容。步骤在桌面创建一个文件夹,命名demo在demo文件夹下创建一个文件夹,命名content然后再content文件夹下创建一个js文件夹和一个manifest.json文件。最后在js文件夹下创建一个index.js文件,最终目录格式如下示例举例修改百度首页中,“百度热榜”四个字的颜色,如下m

2021-04-28 16:34:23 3508 1

原创 (二)activiti之IDEA安装bpmn插件actiBPM

activiti学习笔记:activiti快速入门生成25张表如果我们需要学习activiti流程,那么我们需要先设计bpmn流程文件。后面通过activiti接口加载bpmn文件,就可以创建流程了。设计bpmn文件的软件有很多,包括eclipse和IDEA都有对应的插件。因为我用的是IDEA开发编辑器,所以这里介绍下IDEA如果安装bpmn插件actiBPM。1、打开IDEA2、找到file->settings3、找到settings->plugins4、找到右边最下方的br

2021-03-21 19:58:33 2972 1

原创 activiti快速入门生成25张表

1、引入maven依赖<dependencies><!-- 日志依赖--><!-- 日志接口api--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.8.0-beta0</version> </dependenc

2021-03-20 17:16:34 922 1

原创 Java基础篇之可能会忽略的整型变量细节知识

在整型变量的字面量赋值中,有一些细节在此记录下。1、byte byte b1 = 2; byte b2 = 128; byte b3 = (2147483648);上面三个赋值语句,第一个不会有编译错误,第二个赋值128已经超过了byte的最大值,所以需要强制类型转换,第三种赋值超过了int的最大值,强制转换也会编译错误。2、short short s1 = 2; short s2 = 32768; sh

2020-08-29 08:32:49 167

原创 java基础篇之synchronized锁状态变化过程

在多线程环境下,synchronized是经常用到的加锁方式,锁的状态有无锁、偏向锁、轻量级锁和重量级锁。下面就阐述下,这些状态是如何变化的。一、升级1、无锁状态在锁对象刚刚new出来的时候,是无锁状态,比如Object o = new Object();2、偏向锁在锁对象o被使用后,即synchronized(o),状态会变成偏向锁,对象o的对象头中记录了线程的ID。如下图所示,锁o上标记了线程A才会执行代码块。3、轻量级锁状态当在偏向锁时,另外一个线程也来竞争的时候,就会升级为轻量级

2020-08-29 08:05:40 877

原创 数据结构排序算法的java实现

一、冒泡排序public static void bubbleSort(int[] datas) { int length = datas.length; boolean sortFlag = true; for (int index = 0; index < length && sortFlag; index++) { ...

2019-05-21 09:46:32 408

原创 The bean 'redisTemplate' could not be injected as a 'org.springframework.data.redis.core.RedisTempla

使用springboot集成redis的时候,启动项目报错:The bean 'redisTemplate' could not be injected as a 'org.springframework.data.redis.core.RedisTemplate' because it is a JDK dynamic proxy that implements: org.springfra...

2019-03-09 13:37:23 1350

原创 SpringBoot之@ComponentScan和@SpringBootApplication扫描覆盖问题

@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan,其中扫描包的范围为启动类所在包和子包,不包括第三方的jar包。如果我们需要扫描通过maven依赖添加的jar,我们就要单独使用@ComponentScan注解扫描第三方包。但是,如果@SpringBootApplication和@Compon...

2019-02-26 15:27:50 24327 5

原创 记mybatis查询null字段导致的NPE

背景:我们在写sql语句时,不推荐使用select *的,所以我们只需要查询出我们需要的字段值就可以了。但是,如果查询的某几个字段值都是null,我们使用list接收的话,那么list中的对象就是null,引起NPE问题。分析:查看mybatis处理查询结果的源码,主要是将结果封装成对象getRowValue就是把每行的结果封装成对象返回。其中有一个方法是applyAutomaticM...

2019-01-30 15:30:36 1754

原创 Nginx负载均衡

上一篇我们介绍了nginx的反向代理,本文主要介绍在反向代理基础上的负载均衡。背景:随着服务器访问量的不断增大,导致单台机器服务延时不断增大,对服务器的压力也越来越大,为了解决这一问题,我们可以部署多个服务节点,然后使用某种算法是的访问分散到各个节点,大大降低的服务器的压力。实践:本文主要介绍nginx的负载均衡及各种算法,不会对代理配置有过多的讲解,不熟悉的可以阅读上一篇文章Nginx反...

2018-12-29 19:16:25 216

原创 Nginx反向代理配置解释

背景:如果没有代理服务器,客户端请求直接发送到后台服务器,直接就暴露了真实服务器的信息,不够安全。加上代理服务器后,客户端发请求首先到代理服务器,然后由代理服务器将请求发送到真实服务器。代理服务器也会将响应缓存到硬盘中,返回到客户端。加上代理服务器后,系统图如下:实践:本文nginx部署在192.168.121.140服务器上,监听端口8088。springboot项目部署在192.16...

2018-12-28 22:04:36 737

原创 Nginx搭建静态资源服务配置详解

第一种:单个server,root配置根目录nginx配置文件中,server模块默认配置了location,如下:server { listen 8088;//server的监听端口 server_name localhost,192.168.121.140;//server的ip地址 location / {...

2018-12-28 17:16:35 1861

转载 Zookeeper的Leader选举机制

一、前言前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举。二、Leader选举2.1 Leader选举概述Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。(1) 服务器初始化启动。(2) 服务器运行期间无法和...

2018-12-25 15:00:06 772

原创 redis之集群模式

本文主要介绍搭建redis的集群架构,其中会记录搭建遇到的坑。在之前的哨兵模式下,我们做到了高可用阶段,哨兵模式同样也存在一些不足之处,比如写数据在固定的master节点,就算有多个master节点,master之间也要有通信来同步数据,这些都给master增加一定的压力。redis的集群模式思想之给每个master节点分配一定数量的slot(共16384个),set数据的时候,根据CRC16(...

2018-12-09 10:50:53 1370

转载 redis之哨兵模式

一、为什么有哨兵模式?在前面的主从模式下,当master节点挂了之后,slave节点的role还是slave,这就导致不能够写数据,系统不能用了。为了提高可用性,当master节点挂了之后,我们可以手动在任意slave节点执行下面命令使其成为masterslaveof no one使得slave不再是slave节点,变成master节点。然后我们在其他slave节点执行slaveof 新m...

2018-12-08 09:46:51 436

原创 redis之去中心化主从复制模式

在上一篇redis简单搭建主从复制中,我们介绍了如何搭建redis的一主二从复制模式,基本结构图如上图中的slave节点可以有很多个,这样就会一个master挂了很多slave,导致master的压力很大。为了解决这个问题,我们以缓解master的压力为目的,使用去中心化(不是所有slave都和master有直接关系)主从复制模式,基本结构图如下:上图中,将原本一个master的3个sla...

2018-12-07 19:22:00 1595

原创 redis简单搭建主从复制

本次主要搭建redis复制模式,这里共两台虚拟机,搭建一主二从复制模式。上一篇已经介绍过redis如何安装的,这里不再赘述。注意:本文并没有加入哨兵节点安排:(1)master1:192.168.121.140:6381(2)master2:192.168.121.140:6382(备用)(2)slave1:192.168.121.139:6379(3)slave2:192.168.12...

2018-12-04 21:19:30 1215

原创 redis在CentOS安装

1.通过命令wget下载redis4.0.11版本 wget http://download.redis.io/releases/redis-4.0.11.tar.gz tar xzf redis-4.0.11.tar.gz cd redis-4.0.11 make下载结束后,解压,进入解压后的文件夹,执行make编译。上述步骤可能遇到的问题:(1)提示wget...

2018-12-01 10:37:30 185

原创 springboot之前后端传参类型比较

在实际的项目开发中,后台controller方法可能有各种数据类型的参数接收前端传递的值,比如8种基本数据类型、对象、集合等。有的时候,前端不知道使用什么形式的传参,比如key-value或raw(json或数组)。为了系统的学习和运用,本文对各种类型的情况作了实验,记录各种结果。本文并不会介绍原理,只为记录实验结果。...

2018-11-30 16:25:04 1528

原创 如何写一个方法交换两个Integer类型的值?

刚看到这个问题的时候,可能会觉得很简单,但是真正实现出来就会遇到一些奇怪的现象。下面我先我第一感觉的解决方法。1.错误的版本(也是第一感觉)/** * @author */public class ObjectShallowSize { /** 第一步 * 交换两个integer类型的变量 */ public static void swap...

2018-11-06 17:07:29 2546

原创 ffmpeg转码视频格式

1.本文介绍通过ffmpeg将视频转码为flv格式,前端就可以使用各种播放插件播放flv视频了。 首先,演示的环境是centos7. 下载yasm-1.3.0.tar.gzwget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar xzvf yasm-1.3.0.tar.gzcd yasm-1.3....

2018-03-13 16:12:48 2526

原创 java之BigDecimal的加减乘除

在小数之间加减乘除的时候,由于二进制不能精确表示小数,从而导致精度丢失。在实际开发中,这种情况是很糟糕的。为了解决这一情况,我们可以利用BgiDecimal。但是这中间还有些问题需要注意的。1、加减乘首先,我们来看一个实例BigDecimal num1 = new BigDecimal(3.0);BigDecimal num2 = new BigDecimal(2.1);System.out....

2017-12-07 15:59:01 14994

原创 java之foreach,你判null了吗?

从jdk1.5之后,Java提供了foreach用于遍历集合、数组等。但是我在工作中,经常发现大家在使用foreach时,经常会忘记判断集合是否为null。下面我们举个简单的例子://常见的从数据库查询到的数据集合List dataList = .......;//紧接着用foreach遍历for(String s : dataList){ System.out.p

2017-11-03 13:44:13 18618 2

原创 你用过java.text.DecimalFormat吗?

在java项目开发中,我们经常会对数字操作,尤其是对小数的操作很频繁。如果是对小数保留一定的小数位,或者以百分比显示,那么我们自己也许能够实现这些功能。但是自己实现的性能和健壮性就需要考量,其实jdk已经给我们提供了很多完成这些需求的方法。下面我们就来简单介绍下java.text包下的DecimalFormat类。由jdk1.7 参考手册知,DecimalFormat类是NumberForma

2017-10-21 10:46:28 6530

原创 Java.io流的基本常用类

Java.io包下面的类主要是对文件的操作,也是我们经常会用到的类,尤其是实现文件上传和下载的功能。本文主要介绍该包下常用的类,包括File,inputStream,OutputStream,Reader和Writer。io流的操作依赖于File类,所以本文首先会介绍File的相关知识。1.FileFile对象代表一个文件实体,其有以下三个常用的构造函数:String parentPa

2017-09-30 14:02:46 4909

原创 MessageFormat之拒绝字符串拼接

在开发项目过程中,经常会碰到拼接字符串的场景。尤其是上传文件时,文件保存的路径都是要自动生成的,这样就会拼接路径。 1.普通解决方法 假设文件路径为d:/files/doc/learn,对于该路径的拼接,我们经常有以下两种拼接方式:第二种就是通过StringBuilder对象方法: 以上两种方法都是很麻烦的,代码也不少,有的时候还容易拼错。下面我们介绍一种便捷的方法,利用java.text包下

2017-09-24 11:08:54 1321

原创 Java之split的坑

String的split方法经常被用来分割字符串,获得字符串数组。比如String str = "9 - 34 -23";String[] res = str.split("-");str=["9 "," 34","23"];上面是正常的使用,不会出现什么问题。但是,下面的就会出现问题:String str = "9 - 34 -";String[] res = str.split("-");

2017-09-14 21:01:05 644

原创 Idea之debug中F7与Drop Frame的那点事

在idea的debug中,有很多调试的快捷键,比如F5进入到方法内、F6跳过方法往下执行、F8执行到下一个断点(如果没有下一个断点,则执行到结束)。本文主要介绍F7和Drop Frame的使用,以及它们之间的区别。 1、F7 首先,我们写一段测试代码:1 public class Main {2 public static void main(String[] args) {3

2017-09-14 20:49:22 11291 3

原创 js之原型链与继承

js中的原型链是比较难理解的一部分知识,而继承又是依赖于原型链,所以原型链是我们必须去掌握的。在学习原型链之前,我们需要去介绍一下原型。建议这部分重在理解,不推荐死记硬背。1、原型js中只有函数对象才有原型,原型也是个对象。例如,我们创建一个save函数,通过typeof来查看其类型,返回值是”object”,说明其实一个对象。

2017-09-09 10:15:36 1641

转载 MySql解析顺序

步步深入:MySQL架构总览->查询执行流程->SQL解析顺序前言:  一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。  本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识。 一、MySQL架构总览:  架构最好看图,再配上必要的说明文

2017-09-08 11:29:39 585

翻译 Spring Test之文件上传篇

本文主要介绍Spring Test关于文件上传的一些方法,其提供了很多可供我们选择的类及方法。我们不用编写前端页面代码,就可以实现文件上传,大大提高了我们的开发效率。本文测试环境框架是springMVC4.3+,因为本例没有涉及到数据库查询,所以没有集成mybatis。另外,本文没有关于post、get等其他测试的介绍,以后补上。

2017-09-06 14:30:39 1556

node-v14.16.0-linux-x64.tar.xz

node-v14.16.0-linux-x64.tar.xz

2021-03-10

空空如也

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

TA关注的人

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