- 博客(83)
- 收藏
- 关注
原创 RocketMQ(3)
mq怎么存消息:mq高可靠性能的要求,所以要存在磁盘中1、mq收到消息,返回ack响应给生产者,并且存储消息到硬盘中。2、mq发送消息给消费者,消费者响应ack给mq,mq标记消息已消费,如果没有得到响应,mq会不断的把消息推送给消费者;3、mq会定期删除过期的消息。消息存储介质索引的建立和维护要有一定的开销,mq放弃这种方式,采用直接存储文件的方式来保存消息直接写速度为什么不慢?顺序写:提前在磁盘申请空间,写消息时一个一个的往下写,固态硬盘很快。(正常的写是随机写,每次写都要在磁盘中随机开
2022-05-05 22:38:15 532
原创 redis锁,Map
redis数据类型:String:jedis.set(key,“value”);List:jedis.lpush(“listkey01”,“张三”,“李四”,“王五”);redis锁:StringRedisTemplate工具类opsForValue().setIfAbsent方法中设置key,value,超时时间,并且返回值,如果key中有值那么返回false,如果key在redis中没有值那么返回true;在finally中删除:异常时未被删除;超时时间:宕机时未被删除;设置唯一valu
2021-07-12 22:42:15 265
原创 Redis基础
redis持久化RDB快照,在某个时刻触发,触发后存储这个时刻所有的数据;优点:相较于aof恢复数据速度快,储存的体积小缺点:宕机时,最后一个触发点到之后所有的数据都丢失了;AOF:每个指令都存储起来,或者每1秒储存一次指令(这个用的多)优点:数据不会丢失,有也是丢失一秒缺点:体积庞大,恢复慢AOF重写:当AOF文件的大小达到一定程度的时候,将自动开启AOF重写将垃圾命令去掉,留下有效指令;redis 4.0混合持久化取RDB和AOF共同的优点,根为AOF持久化,但是每做AOF重写的时候,
2021-07-10 22:22:06 147
原创 Mybatis(一)
一、传统JDBC弊端1、没有连接池、操作数据库需要频繁创建连接,消耗很大。2、写原生的jdbc代码在java中,一旦我们需要修改sql的话,java需要整体编译,不利于系统维护3、使用PreparedStatement预编译的话对变量进行设置流程:打开数据库,使用PreparedStatement方法,执行sql,关闭我们的数据库。String sql=“insert into xxxx”User c=赋值;Conection conn=DbUtil.open();PreparedState
2021-06-28 22:39:30 118
原创 并发整理
JMM内存模型:JMM是抽象出来形容线程运行时的状态的。主线程,子线程运行时内存之间的交互。其中的八大原子操作:锁定;解锁;工作内存从主内存中读取;将从主内存读取到的数据载入工作内存中;把工作内存中的数据交给执行引擎;执行引擎执行完毕的数据返回给工作内存中;把工作内存的数据存到主内存中;把从工作内存到主内存的数据写道主内存的变量中;volatile:保证可见性:多线程运行时,工作内存修改主内存传过来的变量后,其他工作内存见不到这个操作,当加了volatile关键字后,变得可见。防止指令重排(vo
2021-05-19 22:30:34 112
原创 vue第一课
安装node.js下载安装12版本之上安装vuecmd,以管理员身份打开命令行运行:npm install -g @vue/cli 直接安装;安装visual studio code进入界面按快捷键Ctrl+Shift+X,输入Language Packs,选择中文选项,然后重启软件即可。启动第一个vue项目;随意创建文件夹F:\nodejs\nodejs代码\first;将文件夹拖动至visual studio code然后再first下创建第一个01vuecli文件夹,右键文件夹打
2021-04-20 23:10:43 150
原创 SpringCloud基础三
Feign作用:使得消费者代码更加简单步骤:1、导入启动器依赖;2、开启Feign功能;3、编写Feign客户端;4、编写一个处理器Controller,注入Feign客户端并使用;
2021-03-23 22:21:26 147
原创 SpringCloud基础二
1、Eureka注册中心Eureka的主要功能是进行服务管理把,定期检查服务状态。服务提供者:客户端消费者:注册中心:1、服务提供者将服务注册到Eureka2、Eureka记录服务提供者的服务3、从Eureka获取服务列表到客户端4、客户端基于负载均衡从地址列表选择一个服务地址调用服务。服务提供者定期发送心跳到Eureka注册中心,告诉注册中心该提供者可用;若没有向注册中心发送心跳,在一定时间内将服务提供者中剔除,这样发送地址列表给客户端的时候就不会发送剔除掉的那个了。搭建Eureka-
2021-03-21 22:08:33 118
原创 springCloud概念基础
为什么要学习springCloud在项目开发种随着业务开发越来越多,导致功能之间耦合度高,开发效率低,系统运行缓慢,难以维护及不稳定,微服务架构可以解决或避免这些问题。springcloud正是微服务架构的实现。系统架构的演变集中式架构(单一应用)流量少时,将所有功能部署在一起,以减少部署节点和成本;所有业务模块部署在一起,放在一台服务器上。优点:系统开发速度快,开发,测试,调试比较方便维护成本低,缺点:1、因为集成度高,一个系统种需要处理各类业务,并发量不能支撑很大。2、代码耦合度高,维护
2021-03-20 20:23:35 168
原创 SpringBoot基础知识一
springboot简介springboot基于spring开发,其目的是用来简化spring的初始化搭建及开发过程,通过提供默认的配置让我们使用更加方便。在springboot中约定大于配置,采用大量的默认配置,继承了很多第三方库配置,比如redis,MongoDB,kafka等等,少量的配置就能直接使用。优点1、快速构建spring应用2、内嵌tomcat,无需部署war文件,打成jar包就能上线。3、提供pom的maven配置,减少依赖与依赖之间版本冲突问题4、第三方库默认配置5、无需x
2021-03-17 22:32:53 253 1
原创 springMvc一些面试题
springMvc大致流程1、客户端发送消息→前端控制器(DispatcherServlet)→2、→通过处理器映射器(HandlerMapping)查找处理器→返回处理器执行链和拦截器→前端控制器→3、→调用处理器适配器(HandlerAdapter),真正意义上帮我们调用处理器的→调用处理器(Handler)并执行controller方法。→返回modelAndView对象到处理器适配器→再从处理器适配器继续返回到→前端控制器4、→调用视图解析器(ViewResolver)→返回View对象,包
2021-03-15 21:58:16 143
原创 Spring经典面试题
1、为什么spring在java中那么重要;在java中一切都是对象,java工程中有很多很多的对象。而spring就是用来管理这些对象的创建和管理对象之间的依赖关系;所以spring在java中非常的重要。2、Bean和对象的区别所有的bean都是对象,spring将由@Autowired修饰的属性注入到bean中,Spring帮我们完成自动注入,填充属性,而对象中这个属性的值为null;3、获取Bean的name实现BeanNameAware调用接口中的setBeanName就可以获取当前be
2021-03-13 22:42:51 223
原创 spring生命周期
spring的生命周期@Componentpublic class UserService implements InitializingBean {@Autowiredprivate OrderService orderService;private User defaultUser;public void test(){System.out.println(“xxxx”);}@Overridepublic void afterPropertiesSet() throws Excep
2021-03-10 22:18:56 327
原创 Linux三剑客命令
find:文件搜索命令find p8* /home在home文件夹中搜索p8开头的文件tar:打包-c:打包-v:显示进度-f:指定压缩文件-z:打包的同时进行压缩-x:解压whoami当前的用户是谁who -u 已经登录的用户vi环境下编辑常用命令命令模式下常用的/:向上搜索?:向下搜索普通模式下搜索后(/,?)N:下一个n:上一个普通情况下u:撤销操作.:重复操作G:移动到最后一行gg:移动到首行ctrl+f:下翻页ctrl+b:上翻页**Linux
2021-03-08 21:24:57 179
原创 Dubbo的基本应用与高级应用
基础dubbo调用提供者接口(DemoService 接口中有sayHello方法)public interface DemoService {String sayHello(String name);}提供者实现(version,版本号,用于区分 )@Service(version = “default”)public class DefaultDemoService implements DemoService {@Overridepublic String sayHello(Stri
2021-03-05 22:38:57 371 2
原创 Dubbo框架介绍与手写模拟Dubbo
dubbo:被称作开源 Java RPC框架RPC:对于java程序员而言,RPC就是远程的方法调用;远程方法调用:我们经常使用的是本地方法调用,相对的远程方法调用性质上差不多,也是方法调用。但是是通过网络去连接,两个不同线程之间的调用。往泛了说像http网络协议传输数据,TCP协议输出数据都算的上是RPC。Dubbo:1、dubbo协议 数据格式 netty2、http协议 数据格式 tomcat,jetty...
2021-03-03 22:44:38 339
原创 MySQL生产环境高可用架构详解
GTID同步集群mysql内部提供的同步机制,基于一个全局的事务id来标识同步进度,保证同步不会因为偏移量的的问题造成数据不一致的情况;也是生产中比较常用的方式;主节点上配置:gtid_mode=onenforce_gtid_consistency=onlog_bin=onserver_id=单独设置一个binlog_format=row从节点上配置gtid_mode=onenforce_gtid_consistency=onlog_slave_updates=1server_id=
2021-03-01 22:12:00 351
原创 mysql单机及主从架构
搭建mysql8.0vi /etc/hosts 修改主机名在hosts文件结尾加上192.169.88.3(本主机IP) itpuxdb02(ping一下 itpuxdb02是否畅通)检查本机是否有遗留的mysql痕迹;rpm -qa | grep mysqlrpm -qa |grep mariadbrpm -e --nodeps 加上我们查到的数据就是卸载遗留的东西我的mysql版本(mysql-8.0.20-el7-x86_64.tar.gz )tar xvf mysq
2021-02-27 20:29:43 453 2
原创 MongoDB集群
MongoDB复制集概念及作用:实现高可用类似redis的哨兵模式,①数据写入主节点,复制到从节点②主节点发生故障自动选举一个新的替代节点除了高可用外还有作用:数据分发(从节点放在另一个区域,另一个区域读取数据的效率高),读写分离,异地容灾:数据中心出现故障后,可以转移到其他地方去结构三个或者三个以上的节点组成,一个主节点,其他都是从节点;过程当插入,更新,删除到达主节点时,他对数据的操作被记录下来。存储为oplog,从节点不断获取oplog,并回放,保持跟主节点数据一致;故障恢复各个节点
2021-02-25 22:29:51 279
原创 MongoDB索引
B+树索引概念:平衡版本的多叉树,并且节点中不存储数据,只存储序号。因为节点中存储数据,所以每个节点可以存储大量元素,使得树的结构更矮。经过更少次数的磁盘IO就能找到想找到的数据,效率高。单键索引:基于主键ID进行的B+树结构;复合索引:与mysql的复合索引几乎一致,只能按顺序查找。默认的id索引:即使由两个客户端创建也能有效的防止id的重复。创建索引db.collection.createIndex(keys, options)创建单键索引:db.lyd.createIndex({nam
2021-02-23 22:20:58 220
原创 MongoDB实战操作
$exists:匹配包含查询字段的文档db.lyd.find({weg:{$exists:true}})为true的时候包含weg字段的,false就是不包含该字段;文档游标.count 计算总数db.lyd.count();注意:count的数量不一定准确,尤其是在分布式的时候,数据随时都在进去的时候进出,还没提交完成也是很有可能的。只能作为一个预估值计算当前总共的条数;skip :跳过多少条;limit:限制显示多少条;限制显示一条db.lyd.find().limit(
2021-02-21 21:28:36 359
原创 MongoDB基础
概念非关系型数据库(无sql语句),用于存储海量的数据。在非关系型数据库中排名第一。MDB记录一个文档(mysql中的表概念),是由字段和值对组成的数据结构,类似JSON对象,字段的值可以包括其他文档。其数据模型在内存中的表现形式和对象一样。同一个集合的字段可能不同,线上修改数据模型,修改时应用与数据库都无须下线。安装1、下载并解压MongoDBwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.2.tgz
2021-02-19 22:23:29 151
原创 kafka java端详解
生产者api创建生产者:Properties props = new Properties();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, “192.168.65.60:9092,192.168.65.60:9093,192.168.65.60:9094”);分区发送消息指定分区ProducerRecord<String, String> producerRecord = new ProducerRecord<Strin
2021-02-07 21:54:43 375
原创 kafka搭建与使用
使用场景日志收集:收集各种服务的log,通过kafka以统一的接口服务的方式开放给消费者;消息系统:解耦,缓存消息等;用户活动跟踪:记录用户浏览网页,搜索,点击等操作;运营指标:记录运营监控的数据,生产各种操作的反馈,比如报警和报告;基本概念Broker:一个kafka就一个Broker,多个Broker组成集群;Topic:(可以叫主题),kafaka根据主题对消息进行龟裂,发布到kafka集群的每条消息都需要指定一个主题;Producer:生产者Consumer:消费者Consume
2021-02-04 22:22:05 221
原创 RocketMQ应用
springCloudStream整合rocketMQspringCloudStream:统一的中间件框架,以一套代码实现mq产品方法的封装;RabbitMQ,kafka都是由spring维护;rocketMQ是由阿里巴巴产生自己维护;跟springboot三板斧一样,依赖配置,启动类,还有配置文件。pom依赖,核心依赖: com.alibaba.cloudspring-cloud-starter-stream-rocketmq2.2.3.RELEASEorg.apache.rock
2021-02-01 22:39:03 186
原创 RocketMQ高级原理详解
事务消息事务消息与消费者关系不大;代码实现TransactionListener transactionListener = new TransactionListenerImpl(); TransactionMQProducer producer = new TransactionMQProducer("please_rename_unique_group_name");// producer.setNamesrvAddr("127.0.0.1:9876");
2021-01-28 22:22:10 920
原创 RocketMq入门
RabbitMQ:小规模场景,吞吐量低,性能高,功能全面,erlang语言不好控制;kafka:吞吐量大,会丢失数据,日志分析,大数据采集;RocketMQ:兼具了上面两种的优点;RocketMQ集群:(安装不用了解太多)在Broker Cluster中会有多组主从RabbitMQ,主节点负责数据交互,从节点负责数据备份,生产者与消费者不与集群直接交互,而是通过NameServer Cluster作为管理者进行交互。有点类似微服务架构;RocketMQ并没有提供RabbitMQ一样的图形化界面;但是有
2021-01-25 22:49:31 213
原创 Rabbitmq高级特性及集群
死信队列 : DLX(死信交换机)当消息变成死亡消息后,重新发送到另一个交换机(死信交换机,是正常的交换机)上,这个就是死信队列;生产者往交换机A带上一个路由key中发消息,发到A队列(带着路由key)上,A队列上的这个A消息(带着路由key)过了一定时间还没有被消费掉,那么将消息(带着路由key)发送到B交换机上,B交换机将消息发到B队列上;再写个C监听器去监听B队列上的消息延迟队列:(生产者)1. 定义正常交换机(order_exchange)和队列(order_queue)2. 定义死信交
2021-01-21 22:58:39 118
原创 RabbmitMQ的spring整合和可靠性传递
Spring整合发布者依赖:org.springframework.amqpspring-rabbit2.1.8.RELEASE配置文件配置rabbitmq.host=192.168.88.3rabbitmq.port=5672rabbitmq.username=lydrabbitmq.password=lydrabbitmq.virtual-host=/ydXML配置加载配置文件<context:property-placeholder location="class
2021-01-18 21:19:10 178
原创 rabbitMQ入门2
3、Pub/Sub 订阅模式交换机需要与队列进行绑定,绑定之后。一个消息同时被多个消费者收到。消费者收到的都是一样的消息;代码实现;队列能自动创建,交换机不能,必须提前创建,否则会报错;交换机可以用程序来创建,后面有;交换机类型:Fanout 广播:讲消息交给所有绑定的交换机队列;我们目前要使用这种交换机;发布者代码第一个参数交换机名字 其他参数和之前的一样channel.basicPublish(“jiaohuanjiName”,"" , null , input.getBytes()
2021-01-16 16:47:15 181
原创 Rabbitmq入门篇
在消息传输的过程中保存消息的容器,多用于分布式系统之间进行通信;优势:应用解耦:系统有系统与系统之间并不会直接交互,而是与MQ交互,如果某个系统宕机了,也并不会影响其他系统;因为是与MQ交互,如果新增一个系统,直接与MQ交互即可,不需要去改原有系统的代码;异步提速:mq的效率非常高,性能非常优越,系统与系统之间的交互速度远不如mq与系统之间交互的速度。如订单系统,库存系统,支付系统,物流系统。在使用MQ之前,需要这四个系统共同配合才能使用,而用了MQ之后,支付系统只需要和MQ交互即可完成,步骤少了,而
2021-01-13 22:16:43 117
原创 zookeeper典型使用场景
zk分布式锁非公平锁:创建节点,因为节点有唯一性;创建成功的,相当于获取锁;创建失败的则没有获取锁;当获得锁成功后,创建对锁的监听,当锁使用完毕后,删除锁,并通知在等待的线程;等待的线程再次创建锁,成功的获得,失败的继续等待;严重缺点:性能下降严重,所有连接都对同一节点进行监听,当监听到删除事件时,又要通知所有连接,并且去竞争锁。这就产生了严重的羊群效应,对性能影响严重;所以一般没有用。公平锁:使用该锁,而放弃上面那种对性能影响严重的锁;1.请求进来时,直接在一个目录下创建一个临时顺序节点,2.判
2021-01-10 21:28:10 153
原创 mysql实战及锁,事务隔离级别
联合索引联合索引按顺序abc1、select * from table where a<xxx and b=xxx and c=xxx;一般情况下不走索引,当联合索引第一个就按范围查找,mysql的算法会认为其寻找范围很大,其效率还不如全表扫描直接不走索引转而走全表扫描;2、select * from table for index(联合索引名) where a<xxx and b=xxx and c=xxx;这种加了for index会强制走索引,但一般不用。mysql底层算法一般比
2021-01-08 22:33:23 151
原创 Zookeeper客户端的使用与集群特性
Zookeeper建立连接:需要注意的是,zk在main方法中运行的时候,因为zk的连接的异步进行的,是一个守护线程,如果我们主线程停止,守护线程也会跟着停止,会导致我们根本感应不到zk连接建立main方法就结束了。这里 使用countDownLatch来等待连接建立完成后再继续往下走;查看到我们zk的状态为SyncConnected:代表连接建立好了type:None;‘通过这些事件感知到连接已经建立好了;代码实现如下:private static ZooKeeper zooKeeper=
2021-01-05 22:16:44 195
原创 Zookeeper的特性和节点数据类型
暂时理解概念:存储少量数据的基于内存的数据库;文件系统数据结构+监听通知机制;四种类型的znode(节点);1、PERSISTENT(persistent)持久化目录节点;即使客户端与zk断开连接,该节点依然存在,只要不手动删除该节点,他将永远存在;2、PERSISTENT_SEQUENTIAL(persistent_sequential)持久化顺序编号目录节点;在持久化目录节点基础上,zk给该节点名称进行顺序编号;3、EPHEMERAL(ephemeral)临时目录节点;客户端与zk断开连接
2020-12-28 21:42:38 972
原创 redis生产环境实践优化
缓存穿透:根本不在的数据不断访问,因为redis不存在这些数据,他会不断的去数据库查找;1、2、使用布隆函数解决;原理:一个10亿还是百亿大小的数组(依照我们自己的数据而定),将有效key经过运算得到一串数字存入其中,当请求来临,将请求key经过固定的hash运算在这数组中他的二进制1是否全部都找得到对应的上的。如果全部找到的话可以证明其可能存在,如果没有就时肯定不在。RBloomFilter bloomFilter = redisson.getBloomFilter(“nameList”);//
2020-12-27 10:43:55 199
原创 redis集群
哨兵:性能和高可用不如集群,并且在主节点宕机的时候会出现访问瞬断的情况;集群:由多个主从节点构成;不需要sentinel哨兵也能完成节点移除和故障转移的功能;不存在中心节点一说;原理:将数据划分成16384个槽位(逻辑分片均匀分片给每个节点),每个节点负责一部分的槽位,比如三个节点的话,每个节点或者三分之一的槽位;根据hash运算各自有各自的槽位,不会出现重复的情况;0-16383,定位到某个节点;搭建大致:需要至少三台机器;搭建三个主节点和三个从节点;细节略过,需要复制redis.conf并且配置
2020-12-25 22:31:34 140
原创 Redis持久化主从及哨兵
redis为什么可以做持久化;大型公司对redis有重度依赖的,先到redis再到数据库层,很多东西都放在缓存层;数据化抗并发的能力远不如redis,会挂掉,RDB快照持久化
2020-12-23 20:12:16 159
原创 Spring IOC(7) CGLib
@Bean可以控制对象的产生过程;如果是@Component给了spring那么spring直接就自己就实例化了;@Configuration@ComponentScan(“sum”)public class JavaConfig {@Beanpublic E e(){System.out.println(“E方法”);return new E();}@Beanpublic F f(){e();System.out.println(“F方法”);return new F();
2020-11-02 22:02:23 318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人