- 博客(116)
- 资源 (1)
- 收藏
- 关注
原创 paascloud学习系列五:用户激活并登录
文章目录前言一、二、使用步骤1.引入库2.读入数据总结前言上篇注册完成后,但是仍未激活。需要前往邮箱进行激活查看RocketMq中的消息:注册register()方法调用完成之后,只是往rocketMq发送了邮件消息体等内容。并没有真正消费消息,往目标邮箱发送邮件。一、示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimpor
2021-12-01 17:13:53
1203
原创 paascloud学习系列四:用户注册
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2021-11-30 16:30:49
1148
原创 paascloud学习系列三:部署paascloud-master后端项目
文章目录前言一、解决前端页面无法获取验证码1、vue代码分析2、vue代码修改ajax访问主机和ip二、idea部署paascloud-master1、修改paascloud-discovery模块下bootstrap.yml2、安装第三方软件3、依次启动paascloud-eureka、paascloud-discovery、paascloud-provider-uac、paascloud-provider-tpc、paascloud-gateway前言上篇文章简单使用vs code部署paascl
2021-11-25 16:31:07
906
原创 paascloud学习系列二:部署前端项目(login、admin、mall)
文章目录一、使用vs code部署vue项目1.部署paascloud-login-web1.修改index.js文件2.运行npm install下载依赖3.运行npm run dev2.同理可部署admin 和 mall一、使用vs code部署vue项目1.部署paascloud-login-web1.修改index.js文件由于没有配置hosts文件,就在本地测试,改成localhost。(如果刚开始下来全把127.0.0.1映射成代码中的xxx.paascloud.net后面就不
2021-11-25 15:34:30
666
原创 paascloud学习系列一:下载paascloud源代码
文章目录一、源代码下载链接二、源码总目录1.paascloud-master2.elastic-job-lite-starter-master3.passcloud-login-web4.paascloud-mall-web5.paascloud-admin-web三、下载私有包和数据库脚本一、源代码下载链接GitHub代码链接:https://github.com/paascloudGitee(码云)代码链接:https://gitee.com/paascloud/建议使用github下载
2021-11-25 15:13:03
1089
原创 订单服务篇-本地事务与分布式事务
文章目录一、本地事务1.事务的基本性质2.事务的隔离级别3.事务的传播行为二、分布式事务1.为什么会有分布式事务2.分布式事务基础1、CAP理论2、BASE理论3.分布式事务集中解决方案1、2PC模式(二阶提交)2、TCC补偿式事务-柔性事务3、可靠消息+最终一致性一、本地事务1.事务的基本性质数据库事务的几个特性:原子性(Atomicity)、一致性(Consistency)、隔离性/独立性(Isolation)和持久性(Durability),简称ACID原子性:一系列的操作整体不可拆分,要么
2021-07-22 14:41:17
529
原创 订单服务篇-使用Token机制解决接口幂等性
文章目录一、在何处使用二、怎么使用1.生成Token2.验证Token一、在何处使用二、怎么使用1.生成Token//防重复令牌String token = UUID.randomUUID().toString().replace("-", "");orderConfirmVo.setOrderToken(token);//保存到redis redisTemplate.opsForValue().set(OrderConstant.USER_ORDER_TOKEN_PREFIX+
2021-07-21 10:43:49
1157
2
原创 订单服务篇-接口幂等性
文章目录一、什么是幂等性二、哪些情况需要防止三、什么情况下需要幂等四、幂等解决方案1、Token机制(1) 步骤(2) 危险性1.先删除Token还是先后删除Token2.Token获取、比较和删除必须是原子性2、各种锁机制1.数据库悲观锁2.数据库乐观锁3.业务层分布式锁3、各种唯一约束1.数据库唯一约束2.redis set防重4、防重表5、全局请求唯一id一、什么是幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。比如支付场景,用户购买
2021-07-19 15:26:49
2057
原创 订单服务篇-Feign远程调用丢失请求头和异步编排下丢失上下文
文章目录一、从购物车模块跳转订单模块二、跳转到结算页面需要先验证用户是否登录1.LoginUserInterceptor2.OrderWebConfiguration三、跳转到toTrade方法逻辑1.远程调用memberFeignService会员服务获取地址1.远程调用cartFeignService购物车服务获取购物项1.拦截器通过session获取不到用户2.追踪Feign远程调用源码1.丢失请求头2.原因3.解决方法一、从购物车模块跳转订单模块点击去结算会跳转到order模块中的/toTr
2021-06-24 14:31:34
913
1
原创 消息队列篇-可靠消息投递
文章目录一、生产者确认1、publisher-confirm-type2、publisher-returns3、测试发送消息1.正常发送2.测试到达交换机,没有到达队列二、消费者确认1.AUTO 自动确认2.NONE 不确认模式3.MANUAL 手动确认一、生产者确认在yml文件中配置:spring: rabbitmq: publisher-confirm-type: CORRELATED publisher-returns: truepublisher-confirm-type:
2021-06-22 18:09:50
992
原创 消息队列篇-简单使用
文章目录一、引入springboot-amqp启动器二、查看配置类RabbitAutoConfiguration三、AmqpAdmin1.配置gulimall-order模块的yml文件2.在启动类添加@EnableRabbit注解3.使用AmqpAdmin创建Exchange交换器4.使用AmqpAdmin创建Queue队列5.使用AmqpAdmin创建Binding绑定四、RabbitTemplate1.发送字符串纯文本消息2.发送对象消息1.默认序列化机制是jdk字节流2.修改RabbitMQ序列化机
2021-06-22 14:16:38
777
原创 消息队列篇-RabbitMQ四种交换器模式(Direct、Fanout、Topic、Header)
文章目录一、Direct模式1、创建四个不同名称的Queue2、创建direct类型的交换器exchange.direct3、将exchange.direct与四个Queue绑定4、给exchange.direct交换机发送消息5、接收到消息的队列simon.emps消费消息6、总结二、Fanout模式1.创建fanout类型的交换机exchange.fanout2.将exchange.fanout与四个Queue绑定3.给exchange.fanout发送消息4.队列列表查看消息5.总结三、Topic模式
2021-06-21 18:24:53
2598
原创 消息队列篇-消息队列简介与RabbitMQ安装
文章目录一、MQ简介1.消息队列架构2.消息队列特性3.AMQP和JMS4.常见的MQ产品二、RabbitMQ1.安装Erlang2.安装RabbitMQ2.读入数据总结一、MQ简介消息队列,即MQ,Message Queue。1.消息队列架构Producer:消息生产者,负责生产和发送消息到Broker;Broker:消息处理中心,负责消息存储、确认、重试等;Consumer:消息消费中心,负责从Broker中获取消息并处理。2.消息队列特性异步性:将耗时的同步任务通过发送消息的
2021-06-21 15:23:46
717
原创 注册登录篇-使用SpringSession进行分布式缓存
文章目录一、分布式session1.session原理2.分布式下session共享出现的问题3.分布式下session共享出现的问题1.session复制2.客户端存储3. Hash一致性4. Redis统一存储(最终选择)二、使用SpringSession整合Redis1.引入springsession和redis整合的依赖2.添加yml配置文件3.启动类添加@EnableRedisHttpSession注解4.登录后出现的问题1. gulimall.com没有Cookie2. auth.gulimal
2021-06-15 16:36:04
917
原创 注册登录篇-注册
文章目录一、新建gulimall-auth-sever服务二、新建视图跳转配置二、注册逻辑实现1.注册页面2.封装注册Vo3.JSR303校验后台传入数据4.发送短信验证码1.购买阿里云短信服务2.查看购买的短信服务接口文档3.编写发送验证码代码1.根据接口文档中java代码示例编写Component2.编写发送验证码Controller3.验证gulimall-third-party中短信是否能发送成功4.在gulimall-auth-server中编写短信发送代码5.编写远程调用的openFeign接口
2021-06-08 12:13:51
1864
2
原创 异步与线程池
文章目录一、初始化线程的4种方式二、new ThreadPoolExecutor()七大参数三、线程池运行任务的流程1.流程2.面试题四、常见的4种线程池五、CompletableFuture异步编排1.CompletableFuture创建异步对象2.计算完成时回调方法(whenComplete、exceptionally)3.handle方法4.线程串行化方法5.两任务组合(都要完成)一、初始化线程的4种方式继承Thread类实现Runnable接口实现Callable接口+FutureTa
2021-06-03 16:04:24
483
原创 缓存篇-SpringCache
文章目录一、SpringCache是什么?二、SpringCache简单使用(整合redis)1.引入依赖2.自动配置缓存源代码1.CacheAutoConfiguration2.自动配置RedisCacheConfiguration3.自定义配置缓存1.定义配置类,重新注入RedisCacheConfiguration2.改造三级分类缓存代码3.测试缓存是否起作用4.springCache注解的使用1.@Cacheable2.@CacheEvict4.springCache解决缓存失效问题1.缓存穿透2.
2021-05-28 16:53:56
569
原创 缓存篇-Redisson的使用
文章目录前言一、Redisson是什么?二、使用Redisson进行分布式锁改造1.引入pom依赖2.配置注入对象总结前言使用redisson进行redis客户端操作一、Redisson是什么?Redisson是一个在Redis的基础上实现的Java驻内存数据网络(In-Memory Data Grid)。不仅提供了一些列的分布式java常用对象,还提供了许多分布式服务。Redission提供了Redis最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离,集中精力在
2021-05-27 16:34:39
3371
原创 缓存篇-使用Redis进行分布式锁应用
文章目录前言一、redis分布式锁的原理二、使用redis进行分布式锁改造1.第一阶段1.使用setnx进行加锁2.出现的问题(死锁)2.第二阶段(解决第一阶段死锁问题)1.设置过期时间2.出现问题(设置key和过期时间不是原子性)3.解决key和过期时间不是原子性3.第三阶段(出现删锁问题)1.解决删掉其他线程锁的问题(指定值为uuid)2.出现问题(依然不是原子性删除)4.第四阶段(原子操作解决删锁问题)总结前言本地缓存的问题:每个微服务都得要有自己的缓存服务,数据更新时只能更新本服务的缓存 造成
2021-05-26 17:17:12
522
原创 缓存篇-Redis缓存失效以及解决方案
文章目录前言一、缓存穿透1.原因2.解决方案二、缓存雪崩1.原因2.解决方案三、缓存击穿1.缓存击穿和缓存雪崩的区别2.解决方案1.加synchronized(this)锁的问题2.加synchronized(this)锁的解决方案前言提示:redis改造商品服务一、缓存穿透1.原因缓存穿透是指缓存和数据库中都没有数据,用户不断发起请求,比如id卫负数或者id值特别大不存在的值,这时请求越过redis直接访问数据库,造成数据库压力过大。2.解决方案缓存空对象布隆过滤器mvc拦截二
2021-05-26 15:18:29
3206
原创 Nginx篇-Nginx配置动静分离
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、要干什么?二、怎么干1.在nginx中新建文件夹,上传到新建目2.修改nginx配置3.删除product代码模块下的静态资源4.修改product代码中html静态引入5.启动gateway,nginx,product进行测试一、要干什么?将商品模块的静态资源放入nginx中直接访问。二、怎么干1.在nginx中新建文件夹,上传到新建目在nginx安装目录下的html文件中新建static/index文件将pr
2021-05-25 18:11:53
343
原创 Nginx篇-springCloud配置Gateway+Nginx进行反向代理和负载均衡
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、要做什么?二、怎么做?1.安装并启动nginx1.安装nginx2.启动nginx3.解决80端口被占用4.再次启动nginx2.配置nginx做反向代理一、要干什么一、怎么干1.使用域名进行nginx访问2.使用域名访问2.配置nginx反向代理,将请求转发到商品服务3.重启nginx4.启动商品服务5.验证域名访问3.配置nginx+Gateway做反向代理和负载均衡一、要干什么二、怎么干1.在nginx.conf文件中
2021-05-25 12:01:43
7908
8
原创 Linux下安装Python环境并部署NLP项目
一、版本介绍依赖的第三方包主要是tensorflow和keras,而在windows下开发的项目采用tensorflow2,与tensorflow1不兼容,tensorflow+keras+python的各个版本之间的兼容关系至关重要。参考:https://docs.floydhub.com/guides/environments/本次主要是采用tensorflow2.2.0+keras2.3.1+python3.8.3。二、安装anaconda鉴于之前使用原生的python下载依赖(重...
2020-10-20 11:40:22
528
原创 利用NLP进行情感分析,建立模型并使用Java调用
最近项目中要使用NLP进行情感分析,作为一个Java程序员,对于NLP是一窍不通,就连python语言也是没入门。这可难坏了。通过各种百度找资料,发现了这个帖子(链接如下:https://www.cnblogs.com/jclian91/p/10886031.html),参考这个帖子写了一个NLP的demo案例。其中参考的源代码和部分数据:https://github.com/renjunxiang/Text-Classification/blob/master/TextClassification/d
2020-10-15 11:56:34
2534
1
原创 Java类加载器与双亲委派模型
虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现。实现这个动作的代码模块称为类加载器。 类加载器虽然用于实现类的加载动作,但它在java程序中起到的作用却远远不限于类加载阶段。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在java虚拟机中的唯一性。比较两个类是否相等,只有在这两个类...
2020-04-16 14:00:11
205
原创 Java虚拟机的7中垃圾收集器---Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1
如果说收集算法(标记-清除,复制,标记-整理、分代收集算法)是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。目前HotSpot虚拟机所包含的所有收集器如下图。上面7种作用不同分代的收集器,如果两个收集器之间存在连线,就说明他们可以搭配使用。虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器。HotSpot实现如此多的垃圾收集器,就是因为目前没有完美的收集器出...
2020-04-11 23:27:43
750
2
原创 JAVA垃圾回收算法——标记-清除算法、复制算法、标记-整理算法、分代收集算法
由于Java虚拟机规范并没有对如何实现垃圾收集器做出明确的规定,因此各个厂商的虚拟机可以采用不同的方式来实现垃圾收集器,所以在此只讨论几种常见的垃圾收集算法的核心思想。一、标记-清除算法(Mark-Sweep) 标记-清除算法是最基础的算法。首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。后面三种算法都是基于标记-清除这种思路并对其缺点改进而得。...
2020-04-10 22:43:56
885
原创 JAVA垃圾回收--判断对象是否存活算法(引用计数法和可达性分析法)
JVM中的堆和方法区主要用来存放对象(方法区中也储存了一些静态变量和全局变量等信息),那么我们要使用GC算法对其进行回收时首先要考虑的就是该对象是否应该被回收。即判断该对象是否还有其他的引用或者关联使得该对象处于存活状态,我们需要将不在存活状态的对象标记出,以便GC回收。一、引用计数法(reference-counting) 引用计数法在对象头处维护一个cou...
2020-04-10 20:22:27
949
原创 MyBastis执行动态SQL,并传入动态参数。
一、使用场景。 数据生成后,需要进行SQL校验。SQL校验有固定的模板,在传入动态参数,提高到模板的复用性。其中数据库有两张表audit_check表,里面存入的是sql模板。另一张是audit_check_result表,存入的是sql执行结果表。 使用mybatis将audit_check表中sql模板全部查出后,再将每条SQL传入动态参数,挨个执行。二、SQ...
2019-12-03 10:04:25
1211
原创 整理一下面试笔记(所问到的问题)
1.redis穿透雪崩2.redis内存优化3.redis磁盘优化,AOF和RDB区别和调优4.redis集群部署的几种模式5.redis哪几种数据类型6.redis的hash数据类型的底层实现7.redis哨兵模式的工作机制8.分布式场景下实现唯一订单号9.分布式锁的理解和运用10.zookeeper调优11.zookeeper和eureka的区别12.zokeeper如何...
2019-09-26 17:26:11
255
原创 MybatisGenerator以及Mybatis配置和抽取反射进行分页查询并批量写入磁盘文件
由于业务需要,需要运用java来抽取数据库中的几十张表的全表信息,之后进行特定分隔并写入以表名为文件名的文本文件。1.使用MybatisGenerator进行表和mapper的映射。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//myba...
2019-09-11 10:22:21
480
原创 Redis4.0.10伪分布式集群搭建-详细步骤(Centos7)
一: 准备工作Centos最好能正常使用yum操作。 下载redis4.0.10 http://download.redis.io/releases/redis-4.0.10.tar.gz 上传,解压:tar -zxvf redis-4.0.10.tar.gz 编译:make install PREFIX="/a...
2019-06-19 12:25:11
571
原创 Zookeeper源码编译(Zookeeper 3.4.11)并IDEA启动
一: 准备工作 1.下载Ant并安装 由于Zookeeper是由Ant编译,需下载Ant并安装配置 下载地址:https://ant.apache.org/bindownload.cgi2.安装Ant: 解压:配置环境变量:ANT_HOME D:\devople\apache-ant-1.10.6Path ...
2019-06-13 14:46:28
3298
1
原创 Hive on Tez
Hive2.3.4 on Tez0.8.4 (Hadoop 2.7.7)一.软件版本选择 Hive on Tez 和Hive on Spark 对各自的版本匹配非常严格。本次选定Hadoop版本为2.7.7、Hive版本为2.3.4。查看Hive源码:https://github.com/apache/hive/blob/rel/release-2.3.4/pom.xml下的p...
2019-03-25 12:49:26
1402
原创 Kafka源码编译(kafka0.8.2.2)并用IDEA(2018.3)运行
一: 准备工作 安装JDK(1.8或以上)、Scala(2.11.x)、Gradle 可以参考博客 https://blog.youkuaiyun.com/u013256816/article/details/78533725 本机安装如下:二:下载kafka源码解压三:在解压目录下执行gradle idea四:编译成功 产生如下...
2018-12-14 20:57:49
1268
原创 storm使用zookeeper造成事务日志过大的解决方案
storm配置参数:https://blog.youkuaiyun.com/Simon_09010817/article/details/81236544其中:supervisor.heartbeat.frequency.secs supervisor心跳发送频率(多久发送一次) 默认为5sworker.heartbeat.frequency.secs worker的心跳...
2018-12-14 18:20:20
2337
原创 storm在zookeeper中心跳流程
storm和zookeeper的数据交互总结:Nimnus和Supervisor之间通过/storm/supervisor/topology-id对应的数据进行心跳保持。Supervisor在创建这个路径时采用的是临时节点模式,只要Supervisor死掉这个节点就会被删除,Nimbus就会将分配给这个Supervisor的任务重新进行分配 Worker和Supervisor之间/s...
2018-12-14 15:42:36
1245
1
原创 storm在zookeeper中的目录存储信息
storm在zk中的目录图:/-{storm-zk-root} -- storm在zookeeper上的根目录(默认为/storm) | |-/assignments -- topology的任务分配信息 | | | |-/{topology-id} -- 这个下面保存的是每个topology的assignments信息包括:...
2018-12-14 13:38:04
1269
原创 Zookeeper事务日志
1.事务日志和快照 ZooKeeper集群中的每个服务器节点每次接收到写操作请求时,都会先将这次请求发送给leader,leader将这次写操作转换为带有状态的事务,然后leader会对这次写操作广播出去以便进行协调。当协调通过(大多数节点允许这次写)后,leader通知所有的服务器节点,让它们将这次写操作应用到内存数据库中,并将其记录到事务日志中。当事务日志记录的次数达到一定...
2018-12-14 13:09:21
970
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人