- 博客(200)
- 收藏
- 关注
原创 刷题算法框架
1 动态规划框架(1)定义变量(一直变化的值,无限一定不是变量)(2)写状态转移方程(3)求最优值(4)确定边界1.1 子序列(1)最大子序和(2)最长上升子序列(3)最大回文子序列(4)最长公共子序列(5)二维上升子序列(6)编辑距离int n = array.length;int[] dp = new int[n];for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { dp
2022-02-27 23:26:10
650
原创 通过一张图讨论JAVA入门应掌握什么
1 NGINX需掌握:反向代理地址重写按目录划分项目支持HTTPS对称加密虽然性能好但有密钥泄漏的风险,非对称加密(2组公钥+2私钥双向传输)安全但性能低下,因此考虑用非对称加密来传输对称加密所需的密钥,然后进行对称加密,但是为了防止非对称过程产生的中间人攻击,需要对服务器公钥和服务器身份进行配对的数字认证,然后引入了CA数字签名+数字证书验证的方式,客户端从认证机构拿到证书私钥,通过证书私钥拿到非对称加密公钥。解决跨域问题CORS全称Cross-Origin Resourc.
2021-12-25 19:43:11
2079
2
原创 通过一张图详解微服务各个组件
在这里插入图片描述SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态等。作为开发人员,我们只负责写业务代码即可。从上图分析出,SpringCloud为我们提供的轮子如下:Spring Cloud Consul、Eureka服务治理组件,包括服务端的注册中心和客户端的服务发现机制。Spring Cloud Config集中配置管理工具,分布式系统中统一的外部配置管理,.
2021-12-18 20:11:00
9005
原创 从代码层面来讲,何时使用设计模式
1 工厂模式想通过名称获取对象2 抽象工厂模式单个工厂不满足对象的生产3 单例模式全局只有一个对象4 建造者模式通过构造函数创建对象不方便,例如,构造函数参数太多5 原型模式重复创建相同的对象6 适配器模式将一个类的接口转换成客户希望的另外一个接口7 桥接模式对象存在两个维度的变化,例如,商品品质不同,其销售渠道不同。品质1-线下,品质2-线上,品质3-直播带货。不能给每种品质商品都创建类,这时候我们可以把销售渠道给抽象出来。8 组合模式对象数量很多,但是可以组合成树形结构。例
2021-12-13 00:16:17
758
2
原创 分布式、高性能和高可用解决方案 (分布式)
1 分布式分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作。切记,分布式一定是存在网络分区的。1 CAP和BASE原则1.1 理解CAPCAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。下面通过数据库读写分离来解释CAPC - Consistency:一致性是指写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上,从任意结点读取
2021-12-05 12:37:51
3304
原创 2021-09-16
HashMap和HashSetHashSet是在HashMap上套了一层,只设置key,val设为默认值LinkedHashMap和HashMap通过双向链表维护了节点之间的顺序,不仅要维护map还要维护节点之间的双向链表LinkedHashSet和LinkedHashMap的区别同HashSet和HashMap的区别...
2021-09-16 23:46:46
235
原创 OAuth2接入第三方认证平台实战(登录,注销,当前用户,自定义异常,白名单)
1 演示先演示一波(1)不携带token访问资源(2)登录(3)携带token访问资源(4)注销(5)注销后访问资源(6)登录后再次访问资源演示完毕,开始讲解2 授权模式选择本项目选择密码模式,原因如下, 同一个企业内部的不同产品要使用本企业的 oAuth2.0 体系。在有些情况下,产品希望能够定制化授权页面。由于是同个企业,不需要向用户展示“xxx将获取以下权限”等字样并询问用户的授权意向,而只需进行用户的身份认证即可。这个时候,由具体的产品团队开发定制化的授权界面,接收用
2021-03-14 18:09:52
8155
1
原创 按照执行时间轮询任务(串行或并行)
按照执行时间轮询任务,不在执行时间内直接跳过。@Componentpublic class RoundRobinTask { //预案管理 private static ConcurrentHashMap<String, ConcurrentLinkedQueue<CruiseRoi>> taskRoiMap = new ConcurrentHashMap(); private static ConcurrentHashMap<String, De
2021-02-20 18:41:47
2044
8
原创 谷粒商城常用技术
1 RabbitMQ2 ES3 SpringCache4 CompletableFuture5 Seata6 Redisson7 Canal8 SpringSession
2021-02-17 21:21:56
899
原创 mybatis-plus使用指南
1 查询1 根据id查询Employee employee = emplopyeeDao.selectById(1);2 根据条件查询一条数据Employee employeeCondition = new Employee();employeeCondition.setId(1);employeeCondition.setLastName("更新测试");//若是数据库中符合传入的条件的记录有多条,那就不能用这个方法,会报错Employee employee = emplopyeeDao
2021-01-23 20:40:14
541
原创 网关登录授权实战
1 用户名和密码登录获取token1.1 获取验证码(1)生成图形验证码,将图形验证码保存到redis(key,value)public CloudwalkResult<AcCaptchaOutDTO> generateCaptcha() throws ServiceException { try { AcCaptchaDTO acCaptchaDTO = this.acCaptchaProcessor.generate(); ByteArrayOu
2021-01-14 20:42:47
1633
原创 常用技术004(Spring Security Oauth2 JWT)
1 认证原理(密码模式)(1)用户输入用户名和密码,验证后会获取token。同时,这个token被保存到redis或者mysql中。(2)用户携带token访问资源,网关会将用户携带的token与已保存的token进行比较,通过认证的用户可以访问资源。2 认证实现2.1 基于 JDBC 存储令牌(1)配置认证服务器配置数据源:DataSource配置令牌存储方式:TokenStore -> JdbcTokenStore配置客户端读取方式:ClientDetailsServi
2021-01-11 15:46:58
471
原创 常用技术003(canal实现数据同步)
1. canal1.1 canal简介canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zfhq9yie-1610342569485)(images/1559118194213.png)]原理相对比较简单
2021-01-11 13:23:08
489
原创 常用技术002(ES索引)
1 Index、Type、Document1、Indexindex:索引是文档(Document)的容器,是一类文档的集合。2、TypeType 可以理解成关系数据库中Table,在7.0开始,一个索引只能建一个Type为_doc3、DocumentDocument Index 里面单条的记录称为Document(文档),等同于关系型数据库表中的行。2 ES创建索引库和搜索2.1 创建索引库结构在changgou_service_api项目下创建changgou_service_sear
2021-01-11 11:51:43
419
原创 常用技术001(nginx+lua实现二级缓存和限流)
网站首页高可用nginx+lua学习目标了解Lua语言的基本语法使用nginx+Lua+redis实现广告缓存掌握nginx限流的基本使用方法1 Lua介绍1.1 lua是什么 Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研
2021-01-11 11:01:53
1169
原创 登录和授权实战
1 准备工作1.1 发送短信服务1.1.1 接入阿里云短信服务阿里云短信接入1.1.2 短信发送工具类@Componentpublic class SmsUtils { private static final Logger LOGGER = LoggerFactory.getLogger(SmsUtils.class); @Autowired private AcSmsProperties acSmsProperties; @Autowired p
2021-01-10 16:31:07
718
原创 JWT+SpringSecurity进行网关安全认证
1 SpringSecuritySpringSecurity进行网关安全认证的过程很简单,认证的过程就好比一个员工通过人脸,指纹或工牌等凭证进入公司。这里人脸,指纹,工牌就相当于一个凭证,其中任一凭证经过认证后都可以进入公司。经过以上分析不难猜出SpringSecurity主要包括三个组件:Authentication(认证/身份验证)类比 人脸AuthenticationProvider(认证提供者)类比 人脸识别应用AuthenticationManager(认证管理者)类比 门禁系统(包含多
2020-12-19 17:51:23
1077
1
原创 mysql子查询(嵌套子查询和相关子查询的区别)
1 子查询分类子查询可以分为 嵌套子查询和 相关子查询 两类1.1 嵌套子查询1.1.1 执行顺序(由内至外)(1)执行子查询道,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用。(2)执行外部查询,并显示整个结果。1.1.2 实例说明查询商品id为TNT2的订单号。SELECT order_numFROM ordersWHERE order_...
2020-04-21 14:23:00
2763
1
原创 分布式事务(阿里巴巴RocketMQ实现分布式事务)
1 RocketMQ解决分布式事务1、A系统发送一个prepared消息到MQ,如果这个prepared消息发送失败那么就直接取消操作别执行了。2、如果这个消息发送成功了、就接着执行本地事务(executeLocalTransaction),如果成功就告诉MQ发送确认消息,如果失败,就告诉MQ发送回滚消息。3、如果发送了确认消息、那么B系统会接收到确认消息,然后执行本地事务。4、上...
2020-04-18 14:00:08
1645
原创 Docker安装RocketMQ(坑有点多)
1 docker安装与测试代码安装流程#拉取镜像docker pull foxiswho/rocketmq:server-4.3.2docker pull foxiswho/rocketmq:broker-4.3.2#创建nameserver容器docker create -p 9876:9876 --name rmqserver \-e "JAVA_OPT_EXT=-serv...
2020-04-16 23:04:26
3254
1
原创 01 React开发(环境搭建,最详细教程)
ReactJS把复杂的页面,拆分成一个个的组件,将这些组件一个个的拼装起来,就会呈现多样的页面。ReactJS可以用于 MVC 架构,也可以用于 MVVM 架构,或者别的架构。1 搭建环境1.1 创建项目我们选择使用UmiJS作为构建工具。创建工程:输入命令,进行初始化:tyarn init -y在命令输入如下命令:tyarn add umi ...
2020-04-10 15:23:04
641
原创 12从零开始学习微服务之分布式事务实战(基础版)
1 案例订单支付后自动添加选课记录1 订单服务定时发送消息1、每隔1分钟扫描一次任务表。1、定时任务扫描task表,一次取出多个任务,取出超过1分钟未处理的任务2、考虑订单服务可能集群部署,为避免重复发送任务使用乐观锁的方式每次从任务列表取出要处理的任务3、任务发送完毕更新任务发送时间...
2020-04-06 16:09:33
450
原创 11支付功能≠支付系统:微信&支付宝通用支付系统开发实战
微信支付1 下单2 生成二维码二维码可以利用下图的请求参数生成(下图没有截全,详系参数可以查看https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1)。利用参数生成二维码的算法已经有人做好了。可以借助best-pay-sdk(https://github.com/Pay-Group/best-pay-sdk)将参数转...
2020-04-06 10:53:31
2731
原创 09分布式事务
1 分布式事务了解分布式事务之前,应该先了解分布式系统,事务,本地事务等基本概念。1.1 分布式系统部署在不同结点上的系统通过网络交互来完成协同工作的系统。1.2 事务事务是指由一组操作组成的一个工作单元,这个工作单元具有原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。原子性:执行单元中的操作要么全...
2020-04-05 11:50:33
698
原创 07从零开始学习微服务之RabbitMQ(事件驱动架构学前准备)
何为RabbitMQ?AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个开源的AMQP实现,服务器端用Er...
2020-04-04 01:17:28
599
原创 05从零开始学习微服务之服务路由
1 建立一个Zuul Spring Boot 项目Zuul 的所有路由映射都是通过在application.yml 文件中定义路由来完成的。但是,Zuul 可以根据其服务ID自动路由请求,而不需要配置。如果没有指定任何路由,Zuul 将自动使用正在调用的服务的Eureka 服务ID,并将其映射到下游服务实例。1.1 pom依赖在Maven 中建立Zuul 只帘要很少的步骤,只需要在p...
2020-04-02 15:38:44
1140
原创 03从零开始学习微服务之服务发现
1 服务发现架构为了开始讨论服务发现架构,我们需要了解4 个概念。这些一般概念在所有服务发现实现中是共通的。服务注册:服务如何使用服务发现代理进行注册? 服务地址的客户端查找:服务客户端查找服务信息的方法是什么? 信息共享:如何跨节点共享服务信息? 健康监测:服务如何将它的健康信息传回给服务发现代理?图4-2 展示了这4 个概念的流程,以及在服务发现模式实现中通常发生的情况。...
2020-04-01 15:56:02
519
原创 01从零开始学习微服务之springBoot构建微服务
@SpringBootApplication@RestController@RequestMapping(value="hello")public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args);...
2020-03-31 13:21:41
469
原创 1 Gitlab和Git安装
1 安装Dockeryum -y install docker-io Docker 仓库分为公开仓库(Public)和私有仓库(Private)两种形式,我们使用阿里云的公开仓库。2 在Docker下安装GitLab拉取gitlab、redis、postgresql,gitlab依赖redis和postgresql:docker pull sameersb...
2020-03-30 19:17:50
645
原创 云服务到底是什么?
1 虚拟化技术想要了解云计算,首先需要知道什么是虚拟化技术。1.1 纯低层硬件资源的虚拟化1.1.1 宿主架构在宿主架构中,由主机OS 管理硬件资源,而VMM(虚拟机监控器)是通过调用主机OS 上的某些服务来获得资源,提供实际的虚拟化功能。该架构主要应用于高端服务器或生产集群,采用该架构的技术有:VMware Workstation、VMware Server(GSX)、Vi...
2020-03-29 14:01:03
4263
3
原创 springMVC对RESTful的支持
4 基于Rest的Controller(控制器)我们的 REST API :GET 方式请求 /api/user/ 返回用户列表 GET 方式请求 /api/user/1返回id为1的用户 POST 方式请求 /api/user/ 通过user对象的JSON 参数创建新的user对象 PUT 方式请求 /api/user/3 更新id为3的发送json格式的用户对象 DELETE ...
2020-03-27 15:07:16
706
原创 原型工具开发:基于代码变更的过时需求识别
jdiff工具下载重构检测工具下载:1 捕获代码变更Jdiff可以捕获代码中新增或删除的代码元素,旧版本中的一个代码元素在新版本中没有同名元素则被认为是删除的元素,同理可得新增的元素。...
2020-02-29 23:18:37
444
原创 原型工具开发:基于主动学习的可追踪性自动化生成
数据集的下载地址:https://download.csdn.net/download/A1342772/12200967源代码下载地址:https://download.csdn.net/download/A1342772/12201064weka输入数据的样式下载地址:1 构建数据集下面介绍如何构建这些数据集。对于给定项目中的源制品集S1和目标制品集S2 ,可追踪性生成通常...
2020-02-29 17:25:02
989
原创 7 页面静态化
为什么页面要静态化,可自行百度,本文只介绍如何实现页面静态化。1页面静态化流程业务流程如下: 获取模型数据 制作模板 存储和下载模板 对页面进行静态化 将静态化生成的html页面存放文件系统中 将存放在文件系统的html文件发布到服务器2 分步骤实现页面静态化2.1 获取模型数据CMS管理了各种页面,CMS对页面进行静态化时需要数据模型,但是CMS并不知道每个...
2020-02-28 16:36:38
597
源代码:基于主动学习的可追踪性自动化生成
2020-02-29
spring_security_management.zip
2020-02-03
newInstance()后,class对象实例化之后存放在虚拟内存哪个区域?
2019-06-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人