自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java中class的getSimpleName(),getName(),getCanonicalName区别

getSimpleName()getName()getCanonicalName这三个Class方法总是分不清代码如下@Slf4jpublic class ClassNameDemo { class ClassInner { } static class ClassStaticInner{ } public static void main(String[] args) { final Class<ClassNam.

2021-10-08 10:45:10 831

原创 SpringBoot跨域问题

遇到跨域问题:Nginx挂代理代码解决@Configurationpublic class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { //添加映射路径 registry.addMapping("/**") //是否发送Cookie

2021-09-26 13:41:00 711

原创 Java中字符串压缩成zip文件

/** * 压缩多个字符串 * @param contentMap key是目录+文件名,value是内容 * @return 压缩后的字节数组 * @throws IOException 异常 */ public static byte[] compress(Map<String,String> contentMap)throws IOException{ byte[] arrayOfByte; tr

2021-09-17 16:34:14 1639

原创 Java中byte[]字节数据与String16进制字符串相互转换

public class ByteUtils { private static final char[] HEX_CHAR_ARR = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; private static final String HEX_STR = "0123456789ABCDEF"; /** * 字节数组字符串 * @param btArr 字节数组

2021-09-17 11:01:44 323

原创 Unrecognized option: --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED 解决办法

升级到IDEA 2021.2后启动原有项目不能启动,报错如下:Unrecognized option: --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED查了一下解决办法如下:到 File > "Project Structure". 找到 "Project Settings" > Project 找到Project language level; 16->8...

2021-08-10 10:06:51 7019 1

原创 Arthas热更新日志Log级别

更换全局log级别# 查看classLoader的hash值logger |grep classLoaderHash # 更换全局日志级别 记得把"4ea25faa" 换成上面的输出结果logger -c 4ea25faa --name ROOT --level trace | debug | info | warn | error更换某个类的log级别# 查看对应类的classLoader的hash值logger --name com.xxx.xxx.xxx# 更换对应的

2021-06-30 11:04:42 396

原创 使用Arthas实现在线更新代码

前提很多时候本地调试没啥问题,发到线上就出现问题,本地修改了代码要发布到线上比较费时。那有没有什么方式直接更新上线代码? 有了Arthas,一切皆有可能。安装Arthas就不在这里赘述了,官方链接写的很清楚也很简单官方地址上代码# 反编译代码 把 下面的xxxxx 换成你自己的类, ">" 后面是你指定的路径jad --source-only com.xxx.xxxx.Abc.java > /tmp/Abc.java# 获取xxxx的ClassLoader的Hash值sc

2021-05-31 10:54:07 379

转载 Java SPI META-INF/services 详解

1.什么是SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。SPI的作用就是为这些被扩展的API寻找服务实现。2.SPI和API的使用场景 API (Application Programming Interface)在大多数情况下,都是实现方制定接口并完成对接口的实现,调用方仅仅依赖接口调用,且无权选择不同实现。从使用人员上来说,API 直接被应用开发人员使用。 ...

2021-05-28 17:33:17 12715 3

转载 @Pointcut 的常用方式:execution,within,this,target,args,@within,@target,@args,@annotation等介绍

@Pointcut 的常用方式先了解几个概念文中会涉及几个概念,先了解一下。target用来表示目标对象,即需要通过aop来增强的对象。proxy代理对象,target通过aop增强之后生成的代理对象。AspectJAspectJ是什么?AspectJ是一个面向切面的框架,是目前最好用,最方便的AOP框架,和spring中的aop可以集成在一起使用,通过Aspectj提供的一些功能实现aop代理变得非常方便。AspectJ使用步骤创建一个类,使用@Aspect标注@Aspect标注

2021-05-14 16:31:00 5862 4

原创 解决IDEA启动项目 Commandline is too long 问题

解决IDEA启动项目 Commandline is too long 问题下载新项目并IDEA运行时,爆出如下错误Command line is too long解决办法如下:PropertiesComponent 节点下加入<property name="dynamic.classpath" value="true" /><component name="PropertiesComponent"> <property name="Git.Branch.

2021-05-10 16:15:36 629 1

原创 Java提交到线程池(ExecutorService)中的代码出现异常了怎么操作

Java提交到线程池(ExecutorService)中的代码出现异常了怎么操作先看看execute到线程池的问题 public static ThreadFactory spring() { return new CustomizableThreadFactory("spring-prefix-"); } /** * 创建只有1个线程的线程池 */ public static ExecutorService create(ThreadFactory t

2021-04-30 13:59:45 748 1

原创 创建ThreadFactory的集中常见方法

创建ThreadFactory的集中常见方法现在大部分都是手动创建线程池,在线程池初始化参数中有个ThreadFactory参数。使用这个参数的目的是创建一系列有规律名字的Thread。这样在查找Bug、跟踪调用栈等等的时候方便些。如果手动自己实现一个ThreadFactory接口的实现类那就有点重复造轮子了。今天咱们就说说常见的创造ThreadFactory的方法。SpringGuavacommons-lang3Spring public static ThreadFactory

2021-04-30 11:26:28 1272

原创 Map的实现类HashMap,HashTable,TreeMap,ConcurrentHashMap的Key和Value到底能不能放null?

Map的实现类HashMap,HashTable,TreeMap,ConcurrentHashMap的Key和Value到底能不能放null?HashMap,HashTable,TreeMap,ConcurrentHashMap这几个Map总是记不住key,value能不能存null。今天就拿代码说话,talk is cheap,show me your code先下结论KEYVALUEHashMap可以可以HashTable不可以不可以TreeMap可以

2021-04-29 19:34:40 532

原创 MySQL创建一个100万数据量的表

MySQL创建一个100万数据量的表创建表CREATE TABLE `person` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `score` int(11) NOT NULL, `create_time` timestamp NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;创建存储过程

2021-04-28 15:27:28 778

原创 一文搞懂java中getClass(),instanceof,isAssignableFrom()区别

java----getClass(),instanceof,isAssignableFrom()区别结论getClass()instanceofisAssignableFrom()获取类判断是否实例判断是否可转化相同的类返回true相同的类,子类,实现类都可以返回true父类.isAssignableFrom(子类)返回true上代码public interface SomeInterface {}public class Father implemen

2021-04-27 20:02:33 319 1

原创 用Arthas解决线上问题之获取请求(HttpServletRequest)

用Arthas解决线上问题之获取请求(HttpServletRequest)写在前面:写此篇文章意在用Arthas的ognl,所以不是最优的解决办法,故希望各位大神不要喷我。前几天遇到这么一个问题:正式环境上一个接口请求,返回结果不是预期。简化方法如下: @RequestMapping("/test") @ResponseBody public String test() { //获取cookie里的某个值,方法省略 String cookie = xxxx

2021-04-26 16:00:55 3655 1

原创 Springboot项目开启Tomcat的AccessLog,并打印指定的Header内容

Springboot项目开启Tomcat的AccessLog,并打印指定的Header内容SpringBoot项目开启Tomcat的AccessLogserver.tomcat.basedir=my-tomcatserver.tomcat.accesslog.enabled=true指定打印Headerserver.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms) %{xxx}i%{xxx}i 就是打印指定Header的写法,其中xxx 就是h

2021-04-23 15:51:14 2713

原创 Spring事务的坑你遇到过几个?

Spring事务的坑你遇到过几个有的小伙伴在开发过程中在Service方法上面加了一个@Transactional注解,就认为事务已经启动了,是真的吗?下面列出代码片段,所有的坑事务都不好使,不信你试试。完整代码获取gitee坑一:调用私有方法 /** * 调用私有方法,事务不好使 */ public void saveUserCallPrivate() { saveUserPrivate(); } @Transactional(

2021-04-23 10:14:59 154

原创 IDEA 在DEBUG模式下,调试动态代理(JDK Proxy,CGlib),每一步都会调用toString()方法

IDEA 在DEBUG模式下,调试JDK动态代理(Proxy),每一步都会调用toString()方法代码如下public interface TestService { String test();}public class TestServiceImpl implements TestService{ @Override public String test() { return "test result"; } @Overrid

2021-04-21 10:36:56 2349

原创 Date与LocalDateTime,LocalDate,LocalTime相互转换

废话不多说直接上代码方法注释没有写,方法名已经比较明确了,在写注释有点画蛇添足的感觉import java.time.*;import java.util.Date;/** * {@link Date} 与 {@link LocalDate},{@link LocalDateTime} 相互转换工具类 * * @author :liylw * @date :Created in 2021/4/9 9:48 */public class LocalDateUtil { pub

2021-04-09 10:22:47 888 1

原创 Java中分布式锁的不同实现,以及优缺点对比

Java中分布式锁的应用本文只做引导,具体实现可能需要另行搜索SQL | Redis | Zookeeper | Curator | Redisson 对比数据库层级建立两个数据库,一个是业务库,一个是锁库正常些Service代码在锁库创建表, 字段是锁的名字利用怕他锁 select * from 表 where 锁的字段= 锁的名字 for update正常写代码Redispublic class RedisLock implements AutoCloseable {

2020-12-16 23:14:47 333 1

原创 VMWare上指定CentOS的IP, CentOS静态IP设置

虚拟机上操作如下图记住话红框的三个值,一会用的到连接虚拟机# 查看ip 和网卡ip a #我的是ens33,查看自己的网卡ls /etc/sysconfig/network-scripts编辑网卡信息vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV

2020-12-16 13:28:17 205

原创 CentOS下安装Rabbit镜像集群-实操步骤

安装依赖yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xzyum install wget 下载安装包wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpmwget http://repo.iotti

2020-12-11 10:12:23 1140 3

原创 CentOS7安装RabbitMQ-实操步骤真实可用

1. yum下来一些基础的软件包yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel yum install wget2. 下载RabbitMQ所需软件包(这里使用的是 RabbitMQ3.6.5 稳定版本)wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64

2020-12-09 11:07:05 187

原创 用Logstash把MySQL数据导入ElasticSearch

下载安装省略了,注意Logstash要跟ES版本一样主要是配置文件input { jdbc { # 设置 MySql/MariaDB 数据库url以及数据库名称 jdbc_connection_string => "jdbc:mysql://ip:prot/database?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true" # 用户名和密

2020-12-07 16:17:44 213

原创 如何进行 MySQL慢查询 操作

慢查询日志会把查询耗时超过规定时间的SQL语句记录下来,利用慢查询日志,定位分析性能的瓶颈。slow_query_log 可以设置慢查询日志的开闭状态long_query_time 可以规定查询超时的时间,单位是秒# 查看慢查询相关配置SHOW VARIABLES like 'slow_query%';# 配置slow_query_log = ONlong_query_time = 1set global slow_query_log =[on/off]# 最好能与 data分开

2020-12-05 09:54:33 201

原创 Elasticsearch安装及配置CentOS7版本

下载及解压# 华为镜像下载https://mirrors.huaweicloud.com/elasticsearch # 官网https://www.elastic.co/cn/downloads/elasticsearchtar -zxvf xxx.tar.gz移动到相应文件夹(自由定义)vm xxx /usr/local/修改配置文件cd configelasticsearch.ymlvim elasticsearch.yml# 集群名字cluster.nam

2020-12-03 09:54:34 163

原创 Redis集群模式以及SpringBoot集成Redis集群

为什么要用Redis的集群模式主从模式master容量有限主从模式数据同步延迟Redis集群模式特点每个节点知道彼此之间的关系,也会知道自己的角色,当然他们也会知道自己存在与一个集群环境中,他们彼此之间可以交互和通信,ping pong。那么这些关系都会保存到某个配置文件中,每个节点都有,这个我们在搭建的时候会做配置的。客户端要和集群建立连接的话,只需要和其中一个建立关系就行。某个节点挂了,也是通过超过半数的节点来进行的检测,客观下线后主从切换,和我们之前在哨兵模式中提到的是一个道理。R

2020-12-02 12:24:11 721

原创 Redis哨兵模式 以及SpringBoot集成Redis哨兵

Redis哨兵模式Redis主从模式会出现master挂了就不能用了的状态什么是哨兵Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是Redis高可用解决方案之一.哨兵可以监控一个或多个master服务.当某个master服务挂了之后,会把slave升级为master.配置哨兵配置sentinel.conf步骤在解压包里找到sentinel.conf复制这个配置文件到指定的目录下(我的是:/usr/local/redis)修改配置文件修改配置文件sentin

2020-12-02 11:22:35 341

原创 Redis主从配置

修改从文件配置# 设置 master 主机的ip 和端口replicaof 192.168.31.xx 6379# 设置 master 的密码masterauth xxx保存重启Redis# 进入Redis-cli 输入指令查看主从信息info replication# 主节点信息 如下# Replicationrole:masterconnected_slaves:2slave0:ip=192.168.31.35,port=6379,state=online,offset

2020-12-01 23:33:05 94

原创 Redis 缓存过期处理与内存淘汰机制

Redis 缓存过期处理与内存淘汰机制设置了TTL过期策略的缓存设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略主动删除定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置)被动删除当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一个nil。这种策略友好,不会有太多的损耗,但是内存占用会比较高。所以,虽然key过期了,但是只要没有被

2020-12-01 23:27:25 132

原创 LVS与Keepalived结合实现LVS+Keepalived+Nginx

LVS的负载均衡算法静态算法静态:根据LVS本身自由的固定的算法分发用户请求。轮询(Round Robin 简写’rr’):轮询算法假设所有的服务器处理请求的能力都一样的,调度器会把所有的请求平均分配给每个真实服务器。(同Nginx的轮询)加权轮询(Weight Round Robin 简写’wrr’):安装权重比例分配用户请求。权重越高,被分配到处理的请求越多。(同Nginx的权重)源地址散列(Source Hash 简写’sh’):同一个用户ip的请求,会由同一个RS来处理。(同Nginx的

2020-11-26 22:30:14 242 2

原创 Keepalived配置Nginx自动重启

增加启动脚本vim /etc/keepalived/check_nginx_alive_or_not.sh编辑脚本#!/bin/bash A=`ps -C nginx --no-header |wc -l` # 判断nginx是否宕机,如果宕机了,尝试重启 if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机 sl

2020-11-25 22:15:16 99

原创 CentOS 源码安装Keepalived以及配置

下载Keepalived的源码https://www.keepalived.org/download.html解压tar -zxvf xxx.tar.gz使用configure命令配置cd cd keepalived-xxx./configure --prefix=/usr/local/keepalived --sysconf=/etc# perfix: keepalived安装的位置# sysconf: keepalived核心配置文件位置, 固定的不能变可能遇到的问题*** W

2020-11-25 21:41:11 636

原创 Nginx日志分割crontab版本

创建分割脚本(路径换成自己的)#!/bin/bash LOG_PATH="/var/log/nginx/" RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) PID=/var/run/nginx/nginx.pid mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_

2020-11-25 11:02:55 165

原创 Nginx在CentOS 7 安装及配置 yum安装和源码安装

安装依赖安装gcc环境yum install gcc-c++安装PCRE库,用于解析正则表达式yum install -y pcre pcre-develzlib压缩和解压缩依赖,yum install -y zlib zlib-develSSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是httpsyum install -y openssl openssl-devel源码安装官网下载地址http://nginx.org/en/download.

2020-11-24 16:39:29 146

原创 CentOS 7 安装MySQL 以及遇到的坑及解决办法

下载mysqlyum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm安装yum install mysql-community-server -y启动MySQLservice mysqld start查看临时密码grep 'temporary password' /var/log/mysqld.log修改密码alter user user() identified by

2020-11-24 15:01:09 573

原创 MySQL基本操作

显示数据库SHOW DATABASES显示数据表SHOW TABLES;显示数据表结构SHOW COLUMNS FROM table_name;显示数据表索引信息SHOW INDEX FROM table_name;创建数据表CREATE TABLE table_name (column_name column_type);例子:CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` ...

2020-11-24 09:17:39 72

原创 MySQL数据类型

类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) ...

2020-11-23 10:10:33 58

转载 @Validated和@Valid区别

Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@ValidatedSpring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。其中对于字段的特定验证注解比如@NotNull等网上到处都有,这里不详述在检验Controller的入参是否符

2020-11-23 09:56:26 242

tableview实现2列效果

tableview实现2列效果 http://blog.csdn.net/cocoa_geforce/article/details/6710020

2011-08-22

空空如也

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

TA关注的人

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