自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 Mysql高级知识体系梳理

mysql高级知识脉络

2023-02-27 16:58:14 181 1

原创 生产环境sql优化记录:大表join性能优化

sql优化

2023-02-14 17:56:58 250

原创 mysql时间段统计,没有数据的时间补0

mysql统计

2023-01-09 18:20:56 914

原创 mongodb常用命令

查看WiredTiger内部缓存到底占用了多少内存的方式是,在mongo shell中之行以下命令db.runCommand( { serverStatus: 1 } ).wiredTiger.cache["bytes currently in the cache"]运行时修改mongodb可缓存数据db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "cache_size=2G"})...

2022-04-14 09:42:04 448

原创 检测到弱密码套件:不支持完全前向保密

服务器支持以下较弱的密码套件:ID 名称 SSL 版本47 TLS_RSA_WITH_AES_128_CBC_SHA TLS 1.253 TLS_RSA_WITH_AES_256_CBC_SHA TLS 1.260 TLS_RSA_WITH_AES_128_CBC_SHA256 TLS 1.261 TLS_RSA_WITH_AES_256_CBC_SHA256 TLS 1.2156 TLS_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2157 TLS_RSA_WITH_

2022-03-31 11:24:14 4674

原创 MySQL从节点同步失败问题记录

1、原因:记录一次线上运行过程中,发现从节点同步失败问题。2、问题排查show slave status发现同步失败的原因是主库创建账号,故停止同步,并且跳过执行的错误sql,继续从下一条SQL开始同步3、解决:跳过错误SQL并恢复同步mysql> stop slave;mysql> set global sql_slave_skip_counter = 1;mysql> start slave;mysql> show slave status \G...

2022-03-19 15:32:22 836

原创 MySQL定时执行存储过程

1、创建存储过程CREATE DEFINER=`root`@`%` PROCEDURE `synData`()BEGIN drop table if exists user; create table user select * from rych.user;END2、创建定时任务事件CREATE DEFINER=`root`@`localhost` EVENT `loop_syn` ON SCHEDULE EVERY 20 MINUTE STARTS '2022-03-18 03:0

2022-03-18 23:59:17 3740

原创 永久修改Linux最大打开文件数

tips: 使用root用户修改linux的软硬件限制文件/etc/security/limits.conf.在文件尾部添加如下代码:* soft nofile 65536* hard nofile 65536

2022-03-10 12:57:07 466

原创 Linux创建超级用户,禁止root远程登录

1、创建用户adduser maintain2、修改密码passwd maintain3、加到root用户组usermod -g root maintain4、添加到suduers1)修改权限chmod u+w /etc/sudoers2)编辑3)vim /etc/sudoers 添加和root一样的权限root ALL=(ALL) ALLmaintain ALL=(ALL) ALL4)撤销权限chmod u-w /etc/sudoers

2022-01-07 10:08:23 2754

原创 nginx配置前缀后前端404问题解决

配置1、publicPath: “./”2、nginx配置/aaa前缀location /aaa { root /opt/zhjg/page; index index.html;} /op

2022-01-04 21:26:36 2238

原创 docker registry查看镜像和版本

查看镜像列表http://ip:5000/v2/_catalog查看镜像所有tag版本http://ip:5000/v2/zhjg/镜像名/tags/list

2021-12-22 11:34:02 2796

原创 app内嵌h5缓存导致更新不及时问题

解决: location / { root /home/ywtg/page/h5/dist; index index.html index.htm; add_header Cache-Control "no-store,max-age=0";}

2021-12-20 19:55:24 1968

原创 打包报错:Unable to find a single main class from the following candidates

报错:Unable to find a single main class from the following candidates原因:团队中有人在类中写一个一个main函数测试,导致springboot启动时的main函数有冲突,有两个main函数解决:删掉测试的main函数即可

2021-12-15 20:36:11 734

原创 Linux磁盘相关命令以及磁盘分区和挂载

常用命令1、查看磁盘容量df -h2、查看磁盘并显示文件系统类型df -hT3、显示出所有挂载和未挂载的分区,但不显示文件系统类型fdisk -l4、查看未挂载的文件系统类型,以及哪些分区尚未格式化parted -l5、列出所有可用块设备的信息,但是不会列出RAM盘的信息,能查看未挂载的文件系统类型lsblk -f磁盘分区流程:开始分区fdisk /dev/sda接下来输入命令完成分区磁盘挂载流程:1)查看未挂载磁盘fdisk -l2)格式化磁盘先查看需要要挂载目录的文

2021-11-23 16:12:48 2130

原创 MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.Runtime

1、错误日志org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.RuntimeException: java.nio.file.NoSuchFileException: /tmp/undertow.8081.6091954911906268442/undertow2435234810596519507upl

2021-11-08 23:05:14 5534

原创 hash冲突解决方案

1、链地址法HashMap中发生hash碰撞时使用的就是这种方法,会以链表方式存储hash冲突的元素。当链表过长的时候必须要扩容,否则查找性能随着链表的长度增长而下降。2、开放定址法当哈希碰撞时,按照算法的特定方式去往下寻找到下一个空的散列桶。如图77跟48碰撞,按照规定的算法往下查找到槽位为20是空的,所以77会放到20的槽位上。同理,插入78时,跟77发生哈希冲突,因为77移位占了他的位置,所以78也会往后找到空的槽位,因此放到了21槽。这种方式会可能会导致哈希聚集在一起,从而导致后续更频繁

2021-09-18 10:21:14 704

原创 springkafka集成后给kafka集群发送失败(cluster authorization failed)

1、kafka集群使用的是SASL/SCRAM-SHA-256认证sasl-mechanism: SCRAM-SHA-256security-protocol: SASL_PLAINTEXTsasl-jaas-config: org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="Wisebrain@20210621";解决方案:https://stackoverflo

2021-09-16 21:51:03 2928

原创 pdf预览下载

1、有word模板可以先转成PDF,或者直接PDF模板下面是word转pdf在线网站http://www.pdfdo.com/doc-to-pdf.aspx2、下载Adobe Acrobat编辑pdf表单(aaa.pdf)可以在PDF里面添加文字域,图片域,后续可以根据域的名称来填充对应的内容1)注意用Acrobat打开PDF后,需要编辑表单(准备表单)形式,然后可以输入文字域等2)域的名称就是后续代码封装的map中的key,3)可以双击编辑域的文字大小,位置对齐,自动换行(选项卡选中多行)

2021-09-16 11:24:22 769

原创 java实现pdf预览和下载

1、引入依赖<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.2</version> </dependency> <dependency>

2021-08-19 18:08:25 3646

原创 ffmpeg常用命令

1、视频转码将dav转化为mp4格式ffmpeg -i 2021-08-10.dav -codec copy 11.mp42、视频截取ffmpeg -ss 00:00:10 -i 11.mp4 -t 10 -c copy 22.mp4

2021-08-11 15:05:54 1043

原创 Synchronized底层原理

一、线程安全问题缘起:count++是一个线程不安全操作,想要保证该操作线程安全,必须使用加锁机制,那么可以使用Synchronized关键字来实现加锁。1)synchronized修饰同步方法/** * 线程不安全的数值序列生成器 * @author whf * @create 2021/5/30 */public class UnsafeSequence { private int count; public synchronized void addCount()

2021-06-27 22:42:01 223

原创 volatile底层原理

1、测试代码public class VolatileDemo { public static void main(String[] args) { FlagThread flagThread = new FlagThread(); new Thread(flagThread).start(); for (; ; ) { if (flagThread.isFlag()) { System.ou

2021-06-27 22:18:37 283 1

原创 转载:kafka通过外网映射无法访问

百度结果:https://www.orchome.com/1903https://www.pianshen.com/article/81081973468/https://segmentfault.com/a/1190000020715650

2021-06-22 22:21:01 651 4

原创 线程池源码解析

1、通过Executors创建线程池的四种方式1)创建单个线程的线程池该线程池使用单个线程在无界工作队列中执行任务,如果此单个线程在执行过程中由于故障而终止,则会分配一个新的线程来执行后续的任务。工作列队中的任务保证按顺序执行,并且保证在任意时刻都不会有多个任务处于活动状态。与newFixedThreadPool(1)返回的执行器不同,newSingleThreadExecutor()不允许重新配置线程数以使用多个线程。public static ExecutorService newSingleTh

2021-06-21 00:32:11 128 1

原创 mongodb常用命令

1、查看WiredTiger内部缓存占用db.runCommand( { serverStatus: 1 } ).wiredTiger.cache["bytes currently in the cache"]2、运行时修改mongodb可缓存数据db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "cache_size=2G"})3、查看存储引擎db.serverStatus();4、查看数据库show d

2021-06-03 01:18:57 483

原创 Docker中文乱码和时间不一致问题

1、问题描述docker运行微服务,当访问服务接口插入中文数据时,数据库中显示乱码,考虑可能是docker容器编码问题,需要修改dockerfile文件在运行时默认或者指定字符编码2、dockerfile加入 ENV LANG C.UTF-8FROM livingobjects/jre8VOLUME /logsEXPOSE 8100ENV LANG C.UTF-8 PROFILE=test XMS=512M XMX=512MARG JAR_FILEADD ${JAR_FIL

2021-05-10 13:16:01 321

原创 IDEA上传项目到内部gitlab

1、gitlab上创建项目,选好项目所属的group2、复制clone的http地址3、到idea创建git仓库选择项目的目录4、 初始化git仓库之后都是红色,即还没add状态,执行add和commit操作5、选择push时,定义远程仓库,填入gitlab的clone http地址后,直接push即可...

2021-04-29 15:11:53 144

原创 策略模式+工厂模式优化if-elseif结构

以监听zookeeper watacher为例,可以看出监听不同事件触发处理逻辑中有很多if-elseif结构public class ZkDemo implements Watcher { private static final String connectString = "localhost:2181"; private static Stat stat = new Stat(); private static CountDownLatch countDownLatc

2021-04-20 18:26:36 312

原创 nginx获取代理后的真实ip并拦截访问

1、缘起有些系统用户访问nginx之前会有CDN或WAF代理,此时nginx使用deny命令拒绝ip是行不通的。deny 218.17.124.213以waf为例,直接访问nginx的ip是waf的地址,通过nginx获取到的$remote_addr是waf的ip,所以我们无法获取到客户端的一个真实ip来使用deny命令。2、解决方案1)如何获取客户端真实ip?一般客户端发起请求,经过代理后,它在访问nginx时会以格式(客户端ip,代理ip1,代理ip2)被封装为一个$pro

2021-03-28 01:27:09 1782 2

原创 Spring源码解析之事务管理

一、环境准备基本步骤1)引入mysql驱动,Druid连接池,jdbc依赖2)配置类TxConfig, 注册JdbcTemplate, DruidDataSource3)编写业务类,使用原生jdbc操作数据库4)加入事务管理 @EnableTransactionManagement @Transactional 注册事务管理器TransactionManager5)调试实现回滚,int tem = 10 / 0; 当数据回滚时候,数据库自增主键会继续增长,即回滚

2021-02-05 01:12:17 372

原创 Spring源码解析之AOP

1、开启AOP注解1)@EnableAspectJAutoProxy 通过Import引入AspectJAutoProxyRegistrar @Import(AspectJAutoProxyRegistrar.class)2)实现ImportBeanDefinitionRegistrar接口,给容器注册bean定义AspectJAutoProxyRegistrar implements ImportBeanDefinitionRegistrar3)注册一个BeanPostProces

2021-02-05 01:02:36 279 1

原创 Spring源码解析之IOC(二)refresh方法

1、prepareRefresh();上下文refresh之前准备操作1)设置当前系统时间2)设置上下文关闭 / 活跃 标志3)获取Envirenment(没有就创建StandartEnvirenment),验证所有按要求标记的属性是否可解析4)创建用于存储refresh之前ApplicationListener和ApplicationEvent的容器2、obtainFreshBeanFactory()获取beanFactoryAbstractApplicationConte

2021-02-05 00:53:36 322

原创 Spring源码解析之IOC(一)

测试类入口public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserService userService = context.getBean(UserService.class); userService.call();}构造器初始化操作

2021-02-05 00:31:56 99

原创 SpringMVC源码解析

1、servlet3 规范servlet3规范servlet容器会自动在每个jar包扫描下面路径找到对应的java类进行web容器初始化。/META-INF/services/javax.servlet.ServletContainerInitializer注:(tomcat7以上版本才是使用servlet3)以spring mvc为例1)在spring web中/META-INF/services/javax.servlet.ServletContainerInitializer下找

2021-02-05 00:25:35 171

原创 mybatis源码解析(四)调用mapper代理方法执行sql

之前分析了SqlSessionFactory初始化,通过SqlSession获取UserMapper代理对象debug打上断点在List<User> users = mapper.selectAll();看下执行如何执行代理对象的方法public class MybatisDemo { public static void main(String[] args) throws IOException { String resource = "mybatis

2021-02-05 00:13:58 925

原创 mybatis源码解析(三)SqlSession获取Mapper代理对象

1、SqlSession session = sqlSessionFactory.openSession(); // 获取SqlSession 对象1)configuration.getDefaultExecutorType()获取默认的执行器类型,一共有三种,默认是SIMPLEpublic enum ExecutorType { SIMPLE, // 简单类型 REUSE, // 重用类型 BATCH // 批量处理类型}2)openSessionFromDataSo

2021-02-05 00:04:21 1043

原创 mybatis源码解析(二)初始化SqlSessionFactory对象

上篇我们准备好了debug环境,这篇我们具体深入分析下SqlSessionFactory 的创建SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);1、SqlSessionFactoryBuilder创建SqlSessionFactory对象调用重载方法public SqlSessionFactory build(InputStream inputStream) {

2021-02-04 23:53:20 219

原创 mybatis源码解析(一)环境准备和测试

1、准备环境项目结构maven依赖<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version> </dependency> <de.

2021-02-04 23:41:16 139

原创 java中的深拷贝和浅拷贝

1、浅拷贝对源对象克隆到一个新的对象,源对象的引用类型按值副本传递,引用类型属性仍然引用之前的地址副本,所以对新对象修改引用类型属性时,源对象也会被修改。实现步骤: 1)实现cloneable接口 2)重写Object的clone方法2、深拷贝对源对象克隆到一个新的对象,新对象的基本类型和引用类型都会完整克隆一份新的,对新对象的引用类型修改不会影响到源对象。实现方式: 1)被克隆类和属性引用类型都实现cloneable接口并且重写Object的clone方法 2)被...

2021-02-03 11:46:47 313 1

原创 方法重载和方法重写

方法重写:子类重写父类方法(两同两小一大)1、两同(方法签名相同) 1)方法名相同 2)参数列表相同2、两小 1)子类方法返回值类型跟父类返回值类型相同或者父类返回值子类型 2)子类方法抛出异常类型跟父类抛出异常类型相同或者父类异常子类型3、一大 1)子类方法访问修饰符跟父类方法访问修饰符相同或者比父类方法更大权限访问修饰符方法重载:同一类中方法名相同,方法参数里列表不同(参数个数,参数类型,参数顺序)1、构造器重载2、方法重载方法重载只限定方.

2021-02-03 09:42:14 202 1

空空如也

空空如也

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

TA关注的人

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