自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 svg工具类

1

2022-08-24 09:44:23 182 1

原创 新建SpringMVC项目启动成功后访问404

问题描述新建SpringMVC项目启动成功了,但是访问接口时404。接口地址正确,控制台没有报异常问题排查查看.iml文件,不能自动生成对应关系。造成原因使用的是默认的maven设置解决办法方法一删掉.iml文件,在项目根目录下执行执行mvn idea:module方法二使用本地的maven设置...

2021-08-08 18:30:29 852

原创 synchronized原理学习

概念和加锁方式synchronized的内置锁是是一种对象锁,锁的是对象而不是引用。作用粒度是对象,可以用来实现对临界资源的同步互斥访问。是可重入的。加锁方式有三种(1)对于普通的同步方法,锁的是当前实例对象(2)对于静态同步方法,锁的是当前类对象(3)对于同步方法块:锁的是Synchronized括号里的对象原理synchronized是基于JVM的内置锁来实现的,通过进入和退出Monitor(监视器锁)对象实现方法和代码块同步。监视器锁的使用依赖底层操作系统的Mutex lock(互

2021-06-19 18:24:03 168

原创 JMM内存模型学习二

本文主要是volatile内存语义和锁的内存语义的学习

2021-06-16 14:48:07 133

原创 JMM内存模型学习一

本文包含内存模型,通信机制,原子性、有序性、可见性的三大概念,指令重排、happens-before

2021-06-14 19:40:31 1628 2

原创 JMM学习之可见性问题示例和解决办法

可见性问题代码public class Single { static boolean flag = false; public void load() { while (!this.flag) { } System.out.println("线程"+Thread.currentThread().getName()+"读到啦"); } public void save() { this.flag = tr

2021-06-14 13:27:30 224 1

原创 JMM学习之有序性示例-双重检测延迟加载单例模式最终版

1、问题展示代码public class OrderlyTest { private int x=0; private int y=0; private int a=0; private int b=0; private void threadA() { a = 1; x = b; } private void threadB() { b = 1; y = a; }

2021-06-12 22:24:26 106

原创 JMM学习之Java实现原子性操作

以计数器为例:1 、具有原子性安全问题的代码public class AtomicityJMM { private int i=0; private void increase() { try { //可以增加延迟,效果更明显 Thread.sleep(100); i++; } catch (InterruptedException e) { e.printSta

2021-06-12 17:19:52 1341 1

原创 开发规范和性能优化总结

一、代码规范1、禁止循环内查询数据库(mysql、mongo)循环内查库会极大影响程序的响应速度,即使 是mongo这种的2、强烈建议方法行数不要超过100行如果方法过大会极大降低可读性,不利于代码维护。不利于内存释放。建议合理封装代码3、禁止接口返回数据过大。接口返回数据要尽量简单,无用的数据不要返回,涉及安全的数据不要返回。页面上接收数据时也需要花费时间,接收的数据越大,页面响应越慢。4、禁止投机取巧乱用他人封装的方法在开发中不要偷懒,不能说现成的方法有你需要的数据就直接使用,需要考

2021-06-09 13:58:22 356 3

原创 性能优化-记录一次性能调优(dubbo,mongo,oom)

1、涉及技术该接口使用到了dubbo远程调用接口,从mongoDB获获取数据,后端拼接前端代码。2、压测环境提供两台服务,但是在同一台服务器上mongoDB和mysql在另一台服务器上mongoDB是单机集合点并发压测1,200,300,500页面有500人,每人13个字段。也就是表格大小,501行和13列。这些数据是从mysql和mongoDB中共同查出3 优化过程3.1 单次访问问题:接口单次访问需要3秒。...

2021-06-01 17:02:12 245

原创 redis持久化

一、前言redis持久化是高可用的重要的一个条件,它可以确保redis挂掉 重启后,数据可以还原。目前redis有三种持久化策略,分别为:RDB快照、AOF和混合持久化。不同的持久化策略有不同的有点和缺点。在项目开发中,需要根据它们的特性来决定使用哪种策略来进行持久化。二、RDB快照(snapshot)RDB快照是redis的默认持久化策略,默认情况下redis会将内存数据快照保存到dump.rdb二进制文件中。快照生成规则自动生成快照快照何时生成,是可以通过修改配置文件中save的配置来修改的

2021-05-20 22:19:59 241

原创 centos7 redis集群搭建

说明本次搭建是在单机版搭建基础上搭建的。阅读之时请参考下面两篇文章:redis单机版搭建在同一台机器上搭建的,所以是伪集群搭建。真正搭建应该是在不同的机器上。架构图搭建过程创建data的保存目录[root@huameng redis-5.0.12] mkdir -p data/cluster/8001[root@huameng redis-5.0.12] mkdir -p data/cluster/8002[root@huameng redis-5.0.12] mkdir -p data/

2021-05-17 22:11:26 318 2

原创 centos7 redis哨兵集群架构搭建

说明本次搭建是在单机版搭建和主从复制搭建的基础上搭建的。阅读之时请参考下面两篇文章:redis单机版搭建redis主从复制搭建搭建创建数据目录[root@huamengrensheng data]# mkdir 26379[root@huamengrensheng data]# mkdir 26380[root@huamengrensheng data]# mkdir 26381创建日志目录[root@huameng log]# mkdir 26379[root@huameng lo

2021-05-11 09:13:57 118 1

原创 Mysql高级

性能分析explain使用explain select * from a where id=1;列含义(1)id列id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按select出现的顺序增长的。id列值越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行。(2) select_type列select_type表示对应行是简单还是复杂的查询1) simple: 简单查询。查询不包含子查询和union2) primary: 复杂查询中最外层

2021-05-10 16:51:14 710

原创 centos7 redis主从复制搭建

安装说明6379端口为主节点,6380和6381为从结点创建conf文件夹进行配置管理[root@huameng redis-5.0.12]# mkdir conf创建data文件夹进行数据管理[root@huameng redis-5.0.12]# mkdir data[root@huameng data]# mkdir 6379[root@huameng data]# mkdir 6380[root@huameng data]# mkdir 6381将主目录下的dump.rdb和

2021-05-10 11:51:46 204

原创 centos7 activemq单机版安装

准备activemq是java开发的需要按照JDKJDK安装1、下载activemqhttps://activemq.apache.org/components/classic/download/2、上传压缩包到/usr/local目录下3、解压tar -zxvf apache-activemq-5.16.1-bin.tar.gz4、删除压缩包rm apache-activemq-5.16.1-bin.tar.gz5、修改 jetty.xml放开远程访问<!-- 放开远程访问

2021-05-07 18:33:07 147

原创 Centos7 JDK安装

1 下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html别人提供的oracle登录账号2 安装2.2 创建安装路径mkdir –p /usr/local/java2.2 上传2.3 解压tar -zxvf jdk-8u291-linux-x64.tar.gz 2.4 删除安装包 rm jdk-8u291-linux-x64.tar.gz

2021-05-07 18:28:25 92

原创 centos7 redis单机版安装

单机版下载安装包https://redis.io/download解压安装包上安装包上传到/usr/local目录下并解压tar xzf redis-5.0.12.tar.gz 删除安装包rm redis-5.0.12.tar.gz编译和安装进入解压好的redis目录下,执行下面代码make修改redis后台启动修改redis.conf中的daemonize为yesvim redis.conf启动./src/redis-server redis.conf关闭red

2021-04-27 18:17:52 153

原创 MySql查询缓存学习总结

本文是对高性能的Mysql查询缓存的学习总结。包含查询缓存的一些基础知识、概念理解和参数介绍和设置。

2021-04-10 11:35:38 447

原创 Zookeeper的监听机制和源码分析

本文是在zookeeper官方文档和从Paxos到Zookeeper 分布式一致性原理与实践 学习的基础进行的总结。涵盖了监听机制的基本概念和源码分析

2021-04-07 18:18:15 489

原创 Zookeeper源码服务端启动遇到的问题记录

1、org.apache.zookeeper.data报红2、org.apache.zookeeper.version报红

2021-04-02 18:41:19 862

原创 zookeeper集群搭建

一、集群搭建1、说明本次集群搭建是在同一台机器上部署,是属于伪集群,但是只是与不同机器上部署配置相差不大。同一台机器上部署只需要一个zookeeper安装夹,设置不同的data目录和不同的配置文件。本次案例部署三个的机器2、为什么要使用集群为了保证系统能够承受更多客户端的连接和能保证自身高可用的一套机制。读写分离:提高承载,为更多的客户端提供连接,并保障性能主从自主切换:提供服务的容错性高可用性,保障单点故障不影响整个服务集群3、步骤配置语法说明:server.=:<端口>:&

2021-04-01 18:28:28 153

原创 固定表头和固定列表格解决方案

框架Bootstrap4.1.3、jquery-1.11.0版本一使用layui的数据表格。优点:基本上可以完成项目开始要求,快速开发。可以满足拖动列缺点:(1)但随着客户提的页面功能越来,layui的数据表格不能满足,在回调中做了大量的处理,导致项目变得复杂(2)有些功能还存在bug(3)表格内特别是单元格内嵌套的元素太多,如果表格内的列太多的话,一页展示100条就出现卡顿了,客户体验很不好(4)必须是得分页,不能流加载。 客户要求必须一页全部展示处理,不想看到分页栏,说他们不习惯,然后老

2021-03-30 17:45:16 1184

原创 Innodb删除和更新带上索引(索引和锁)

为什么说InnoDB在删除和更新语句时要带上索引?本文将详细讲解带索引的好处

2021-03-25 21:25:23 332

原创 观察者模式

介绍观察者模式是发布/订阅(pub/sub)模式,是一种推模式。观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某个主题对象。主题对象一旦发生改变时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式也解除了代码的耦合,让耦合的双方都依赖于抽象,而不是直接依赖于具体,从而让各自的变化不会影响另一边的变化。结构图Subject类 : 主题对象/抽象通知者,一般用一个接口或者抽象类实现,它把所有的观察者保存到一个集合里,每个主题都可以有任何的数量的观察者。该类里规范了一些接口,比如添

2021-03-24 19:00:46 63

原创 Spring事件监听机制源码分析

引言Spring监听器的源码分析、使用场景和设计模式分析

2021-03-23 19:38:26 134 1

原创 Zookeeper使用场景2-数据的发布/订阅(Sentinel)

原理发布者将将数据发布到zk的一个或者一系列的节点上,供订阅者进行数据订阅,从而达到动态获取数据的目的。需要满足下面3个特性(1)数据量通常比较小—(因为数据是存储到内存中的)(2)数据内存在运行中需要动态变化(3)各机器中共享数据Sentinel中的使用sentinel中可以使用zk进行配置动态规则。总的来说是:将规则保存到zk中,供客户端实时读取。Sentinel提供的dashboard和客户端都注册到规定的节点上,然后可以动态的去读取、修改、删除节点的中规则数据。原理和场景比较

2021-03-14 14:08:59 169 3

原创 sentinel使用ZooKeeper配置动态降级规则

目前sentinel1.8.1中只有zk的流控动态规则,还是写在的测试中。因此研究了一下源码,加了一下zk为规则持久地的动态降级规则。。该种方式不能根据机器进行分类,如果需要跟机器进行分类的话也比较简单,看看源码就懂了。

2021-03-14 13:12:35 603

原创 Zookeeper使用场景1-监控机器在线情况

业务场景酒店自助入住机项目。要求写一个管理后台监控页面,可以看到所有入住机信息和在线情况。实现一:使用webSocket利用webSocket的心跳机制和双向通信。入住机和管理后台都是socket客户端,通过一个标识来判断是入住机还是管理后台。如果入住机上线,将该入住机的id和会话session注册一个全局变量中(比如redis中),并同时将所有在线的入住机id推送给管理后台。如果入住机下线将该入住机的id和session从入住机中移除。优点:可以利用socket心跳机制和双向通信功能,可以实时的监

2021-03-06 22:29:33 234

原创 可复制的LevelDB存储-翻译

原文地址http://activemq.apache.org/kahadb警告LevelDB存储已经被废弃了已经不支持或者是不推荐使用了。现在推荐使用的存储是KahaDB概要可复制的LevelDB存储使用Apache Zookeeper从一组broker结点挑选出一个主节点...

2021-02-25 19:01:43 217

原创 重试机制(Redelivery Policy)- 翻译

原文地址http://activemq.apache.org/redelivery-policy重新投递机制何时将消息重新投递到客户端的详细信息,请参考消息重新投递和死信队列处理的章节。你可以在你的 ActiveMQConnectionFactory或者ActiveMQConnection上配置RedeliveryPolicy 完全可以自定义实现你想重新投递的工作方式可用属性属性默认值描述backOffMultiplier5回退乘数collisionAvoidanc

2021-02-22 18:56:08 504

原创 消息重试和死信队列(Message Redelivery and DLQ Handling)-翻译

原文地址http://activemq.apache.org/message-redelivery-and-dlq-handling概述下面任何一种情况的发生,消息都将重新发送给客户端:1、使用事务会话情况下调用rollback()2、事务会话在commit()之前关闭3、当前会话使用了CLIENT_ACKNOWLEDGE 并且调用Session.recover()4、客户端连接超时(或许是代码执行的时间比配置的超时时间长)broker在它的BrokerInfo 命令包中更喜欢使用默认的传递

2021-02-22 18:55:04 381

原创 延迟和定时消息投递(Delay and Schedule Message Delivery)-翻译

原文地址http://activemq.apache.org/delay-and-schedule-message-deliveryActiveMQ从5.4版本开始支持一个可选择的持久化调度器(scheduler)在ActiveMQ的消息broker里。在XML Configuration中通过设置broker的schedulerSupport属性为true来开启此功能。一个ActiveMQ客户端能够利用延迟推送通过下面的消息属性:检查你的消息属性消息属性scheduledJobId被保留给工作调

2021-02-20 08:58:14 734

原创 异步投递(Async-sends)-翻译

原文地址http://activemq.apache.org/async-sends背景ActiveMQ支持发送消息到broker用同步或者异步的方式。所使用的模式对发送调用的延迟有很大的影响。因为延迟通常是生产者可以达到的吞吐量的一个巨大因素,所有异步发送乐意显著的提高你的系统的性能。好的消息是,activeMQ在一起情况下默认使用异步模式发送消息。只有JMS规范要求使用同步发送情况下,我们才默认进行同步发送。当持久化的消息在没有使用事务发送的情况下,我们会迫使使用同步模式发送。如果你没有使用

2021-02-19 13:34:36 435

原创 ActiveMQ实战(持续更新中)

环境java8、Spring/SpringBoot、activemq.5.16.0Spring集成xml形式配置1、说明springMVC和springboot都可以使用2、引入jar包 <!-- activemq连接池 --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool&

2021-02-06 09:47:07 568

原创 sentinel使用ZooKeeper配置动态规则

1、sentinel-dashbord修改基于1.8.1版本目前源码中只提供了流控规则的动态注册到zk中。其他的规则都不可以,得自己去实现首先将下载下源码,修改sentinel-dashbord模块(1)将test包下rule中的zookeeper包复制到项目的rule包下 (2)DashboardConfig文件中加入zk的连接地址的参数启动配置项 /** * Zookeeper address */ public stati...

2021-01-20 18:12:22 1226 1

原创 order by、group by优化和索引覆盖总结

索引覆盖:索引覆盖指的是查询的列全部在使用到的索引树上。查询的时候,如果可以索引覆盖就尽可能的使用order by和group by优化需要尽可能的不要出现filesort而去使用使用到索引排序。filesort需要获取排序的操作内存,优化器会预先分配固定数量的sort_buffer_size字节,如果没有超过max_length_for_sort_data,则会在sort_buffer中排序,超过后则会从临时文件中排序,这样效率更低。所以尽量使用索引排序。(1)order by的字段不在索引上

2020-12-03 20:06:18 951

原创 索引条件下推优化(ICP)

概念索引条件下推是对使用索引从表中检索行的一种优化。如果不使用icp,存储引擎先遍历索引然后去基表中去定位所需要的行,并将其返回给Mysql服务器,然后服务器进行where条件的过滤。使用到icp后,如果where的部分列可以仅使用索引中的列来过滤,则mysql服务器会将这部分条件下推到存储引擎,存储引擎使用索引条目来计算已推入的索引条件,只有满足这个条件,才从表中读取行。从而减少存储引擎访问表的次数和mysql服务器访问存储引擎的次数需要满足的条件1、当range、ref、eq_ref和ref

2020-12-02 20:18:39 826

原创 联合索引和最左前缀原则

联合索引:(1)也称多列索引、复合索引。(2)联合索引就是把多个列按照顺序放到一个索引树上。(3)一个索引上最多可以建16列。(4)联合索引可以看成排好序的数组。 排序规则是:先按照第一个列进行排序,第二列再按照第一列排好序的基础上再进行排序,依次类推(5)需要按照最左前缀原则才能生效 最左前缀原则:按照最左边的列开始的顺序并且不能跳过其中的列。 如:(name, age,posi...

2020-12-01 19:36:34 366

原创 索引合并优化

概念索引合并指的多个索引进行范围检索的合并它们的结果成为一个,成立条件必须是在同一个表中,不支持多表索引合并。结果合并时产生交集或并集。准备以下同个下面的表进行举例说明:索引索引合并产生交集select * from employees where name="花花" and position='manage';该sql可能会进行索引合并,并结果取交集可以通过explain查看一下执行计划可以看到type是index_merge和extra出现了Using i

2020-11-29 10:30:33 284

freeze-table.rar

表格固定头和列,允许修改列宽 具查看文章:https://blog.csdn.net/xshsjl/article/details/115294367

2021-06-21

空空如也

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

TA关注的人

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