架构设计
文章平均质量分 64
LifeBackwards
专注计算机视觉、深度学习
展开
-
SpringBoot发送http请求
此外,需要定义一个RestTemplate配置类。HttpUtils工具类如下。原创 2023-05-26 17:47:54 · 2306 阅读 · 0 评论 -
Spring Boot核心配置文件详解
文章目录bootstrap/ application 的区别 bootstrap/ application 的应用场景用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .properties) 为什么会有这两种配置文件呢...转载 2019-04-13 10:07:25 · 129 阅读 · 0 评论 -
MyBatis初始化原理
目录MyBatis初始化原理MyBatis的初始化做了什么MyBatis基于XML配置文件创建Configuration对象的过程手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象涉及到的设计模式MyBatis初始化原理MyBatis的初始化做了什么任何框架的初始化,无非是加载自己运行时所需要的配置信...转载 2019-04-13 09:55:42 · 146 阅读 · 0 评论 -
Springboot-异常处理
通常一个web框架中,有大量需要处理的异常。比如业务异常,权限不足等等。前端通过弹出提示信息的方式告诉用户出了什么错误。 通常情况下我们用try.....catch....对异常进行捕捉处理,但是在实际项目中对业务模块进行异常捕捉,会造成代码重复和繁杂, 我们希望代码中只有业务相关的操作,所有的异常我们单独设立一个类来处理它。全局异常就是对框架所有异常进行统一管理。 我们在可能发生异常的方法里throw抛给控制器。然后由全局异常处理器对异常进行统一处理。 如此,我们的Controller中的方法就可以很简洁原创 2021-03-03 10:33:49 · 85 阅读 · 0 评论 -
Java分布式技术汇总
Java分布式技术汇总目录 博客链接 Dubbo面试题及答案 https://blog.csdn.net/daodaipsrensheng/article/details/89292786转载 2019-04-14 09:09:46 · 3157 阅读 · 0 评论 -
Spring Boot面试题整理
目录什么是Spring Boot为什么要用 Spring BootSpring Boot 的核心配置文件有哪几个?它们的区别是什么?Spring Boot 的配置文件有哪几种格式?它们有什么区别?Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?开启 Spring Boot 特性有哪几种方式?Spring Boot 需要独立的容器运行吗?运行 Sp...转载 2019-04-13 10:32:14 · 245 阅读 · 0 评论 -
Springboot-权限管理
权限设计具体来说可以分为功能权限和数据权限。功能权限就是角色能操作哪些接口,而数据权限就是角色能够获取到的哪些数据。形象点来说,如果现在有一个公司,公司上下有很多部门,部门里有很多员工,而数据权限就是为了让某个部门的人只能获取到自己部门或着是指定部门的员工信息。二、新建如下表分别是岗位表,部门表,用户岗位关联表和角色部门关联表my_user表中添加dept_id字段。my_role表中添加data_scpoe字段。前一个很好理解,就是部门的id,后一个代表的就是角色的数据权限范围这篇文转载 2021-03-03 14:33:22 · 4314 阅读 · 2 评论 -
Spring IOC的原理及详解
目录IOC简介IOC的初始化1 准备2 读取3 解析注册注入依赖IOC简介为了解决对象之间的耦合度过高的问题,软件专家Michael Mattson提出了IOC理论,用来实现对象之间的“解耦” 软件系统在没有引入IOC容器之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建...转载 2019-04-12 14:31:06 · 204 阅读 · 0 评论 -
Spring AOP入门
Spring AOP入门目录什么是AOP?AOP的基本概念Spring中对AOP的支持AOP代码实现示例什么是AOP?AOP(Aspect Oriented Programming,面向切面编程) AOP简单说就是在目标方法执行前后自定义一些操作,一般都是基于代理模式来实现的,Spring支持两种代理模式,JDK原生代理和CGLib代理。AOP给程序带来良好的...转载 2019-04-12 14:21:45 · 252 阅读 · 0 评论 -
Springboot-事务管理
新建的Spring Boot项目中,一般都会引用spring-boot-starter或者spring-boot-starter-web,而这两个起步依赖中都已经包含了对于spring-boot-starter-jdbc或spring-boot-starter-data-jpa的依赖。 当我们使用了这两个依赖的时候,框架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager。 所以我们不需要任何额外配置就可以用@Transactional注解进原创 2021-03-03 09:28:03 · 118 阅读 · 0 评论 -
Java框架问题整理
目录动态代理( cglib 与 JDK)如何强制使用CGLIB实现AOP?JDK动态代理和CGLIB字节码生成的区别?Spring MVC 运行流程Spring 框架中用到了哪些设计模式Netty-为什么选择 Netty动态代理( cglib 与 JDK)java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandl...转载 2019-04-13 10:36:25 · 161 阅读 · 0 评论 -
Spring Boot开启的2种方式
文章目录Spring Boot依赖 1. 继承spring-boot-starter-parent项目 2. 导入spring-boot-dependencies项目依赖 Spring Boot依赖注意点 1. 属性覆盖只对继承有效 2. 资源文件过滤问题 Spring Boot依赖使用Spring Boot很简单,先添加基础依赖包,有以下两种方式1. 继...转载 2019-04-13 10:19:52 · 103 阅读 · 0 评论 -
Springboot-权限注解
权限注解作用在Controller的方法上,作用是调用者是否有权限调用该接口。(本文代码参考若依项目)1.权限示例1.数据权限示例// 符合system:user:list权限要求@PreAuthorize(hasPermi = "system:user:list")@GetMapping("/list")public TableDataInfo list(SysUser user){ startPage(); List<SysUser> list原创 2021-03-03 15:30:08 · 3451 阅读 · 5 评论 -
SpringMVC的执行过程
目录SpringMVC执行流程SpringMVC核心组件1、DispatcherServlet2、HandlerMapping3、HandlerAdapter4、ViewResolverSpringMVC执行流程下图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现.1、Dispatc...转载 2019-04-12 14:39:08 · 151 阅读 · 0 评论 -
Springboot-参数验证
spring boot中可以用@Validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。1、基础使用 因为spring boot已经引入了基础包,所以直接使用就可以了。首先在controller上声明@Validated需要对数据进行校验。public AjaxResult add(@Validated @RequestBody SysUser user){ .....}2、然后在对应字段Get方法加上参数校验注解,如果不符合验证要求,则会以messag原创 2021-03-03 10:36:12 · 587 阅读 · 0 评论 -
分布式ID生成算法-雪花算法
算法原理SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:1. 1bit,不用,因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用整数,所以最高位固定为0。2. 41bit-时间戳,用来记录时间戳,毫秒级。- 41位可以表示2^41 - 1个数字,- 如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0 至 2^41 - 1,减1是因为可表示的数值范围是从0开始算的,而不是1。- 也就是说41位可以表示..原创 2021-10-16 15:41:43 · 644 阅读 · 0 评论 -
springcloud nacos集群搭建
Nacos集群架构图根据架构图所示,搭建nacos集群最少需要启动了三个节点的Nacos集群。此外,我们还需要提供一个统一的入口给Spring Cloud应用访问,也即是需要为上面启动的的3个Nacos集群做一个负载均衡的访问层,这里我们可以通过nginx来实现。8.1 Nacos配置1 编辑nacos集群配置文件cluster.conf,添加集群IP2 启动nacos(集群模式) sh startup.sh 8.2 Nginx配置1 配置ngin...原创 2021-06-11 11:10:07 · 593 阅读 · 1 评论 -
SpringCloud整合Sentinel实现接口限流
本文代码参考若依项目http://doc.ruoyi.vip/ruoyi/涉及三个服务:网关模块ruoyi-gateway、业务模块ruoyi-system、代码生成模块ruoyi-gen,需要把服务注册到Nacos上。一.实现Sentinel限流Sentinel 支持对 Spring Cloud Gateway、Netflix Zuul 等主流的 API Gateway 进行限流。1、添加依赖<!-- SpringCloud Ailibaba Sentinel -->&l原创 2021-03-04 11:21:09 · 994 阅读 · 3 评论 -
Springboot 整合Rabbit MQ
该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct、Topic、Fanout的使用,消息回调、手动确认等。 (但是关于rabbitMq的安装,就不介绍了)在安装完rabbitMq后,输入http://ip:15672/,是可以看到一个简单后台管理界面的。在这个界面里面我们可以做些什么?可以手动创建虚拟host,创建用户,分配权限,创建交换机,创建队列等等,还有查看队列消息,消费效率,推送效率等等。以上..原创 2021-04-30 15:39:38 · 151 阅读 · 1 评论 -
为什么微服务一定要有网关
- 什么是服务网关 -服务网关 = 路由转发 + 过滤器。1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。- 为什么需要服务网关 -上述所说的横切功能(以权限校验为例)可以写在三个位置: 每个服务自己实现一遍; 写到一个公共的服务中,然后...转载 2021-04-08 10:18:36 · 92 阅读 · 0 评论 -
Redis与Memcached的区别
传统MySQL+ Memcached架构遇到的问题 实际mysql是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。 2.M转载 2017-08-16 17:26:11 · 274 阅读 · 0 评论 -
memcached全面剖析–5. memcached的应用和兼容程序
发表日:2008/7/30 作者:长野雅广(Masahiro Nagano) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0005我是Mixi的长野。memcached的连载终于要结束了。 到上次为止, 我们介绍了与memcached直接相关的话题,本次介绍一些mixi的案例和 实际应用上的话题,并介绍一些与memcached兼容的程转载 2017-08-16 15:52:17 · 209 阅读 · 0 评论 -
memcached全面剖析–4. memcached的分布式算法
发表日:2008/7/23 作者:长野雅广(Masahiro Nagano) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0004我是Mixi的长野。 第2次、 第3次 由前坂介绍了memcached的内部情况。本次不再介绍memcached的内部结构, 开始介绍memcached的分布式。memcached的分布式转载 2017-08-16 15:51:08 · 188 阅读 · 0 评论 -
memcached全面剖析–3. memcached的删除机制和发展方向
下面是《memcached全面剖析》的第三部分。发表日:2008/7/16 作者:前坂徹(Toru Maesaka) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0003memcached是缓存,所以数据不会永久保存在服务器上,这是向系统中引入memcached的前提。 本次介绍memcached的数据删除机制,以及memca转载 2017-08-16 15:49:51 · 213 阅读 · 0 评论 -
memcached全面剖析–2. 理解memcached的内存存储
下面是《memcached全面剖析》的第二部分。发表日:2008/7/9 作者:前坂徹(Toru Maesaka) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0002我是mixi株式会社研究开发组的前坂徹。 上次的文章介绍了memcached是分布式的高速缓存服务器。 本次将介绍memcached的内部构造的实现方式,以转载 2017-08-16 15:48:42 · 162 阅读 · 0 评论 -
memcached完全剖析–1. memcached的基础
翻译一篇技术评论社的文章,是讲memcached的连载。fcicq同学说这个东西很有用,希望大家喜欢。发表日:2008/7/2 作者:长野雅广(Masahiro Nagano) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0001我是mixi株式会社开发部系统运营组的长野。 日常负责程序的运营。从今天开始,将分几次针对最近在W转载 2017-08-16 15:46:44 · 213 阅读 · 0 评论 -
hdfs分布式搭建
所需环境四台主机,一台NameNode,三台DataNode NameNodeSecondaryNameNodeDataNodenode11 node2 11node3 1node4 1搭建NameNode主机流程,其余主机配置保持一致即原创 2017-05-14 17:42:30 · 258 阅读 · 0 评论 -
使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务
在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。Feign简介Feign是...转载 2018-10-27 17:10:29 · 551 阅读 · 0 评论 -
eureka服务发现
1.eureka服务端服务端代码@SpringBootApplication@EnableEurekaServerpublic class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true)...转载 2018-10-24 11:30:12 · 302 阅读 · 0 评论 -
分布式锁用 Redis 还是 Zookeeper
为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还转载 2020-07-16 10:03:59 · 124 阅读 · 0 评论 -
30道Redis面试题
1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅...转载 2019-04-08 14:51:09 · 121 阅读 · 0 评论 -
Memcached分布式缓存入门
本文转自点击打开链接关于Memcached的博文太多了,以下是个人学习的收集整理。本节讨论问题:简单介绍与应用下载安装注意事项简单测试Memcached分布式原理一、介绍与应用 在常规的WEB开发下,基本都会利用到缓存用以降低对数据库的压力,提高访问速度。有时候缓存的数据多了,并且其它站点也想获取这些缓存数据时就出现在了问题。通常IIS站点都是以应用转载 2018-01-17 15:49:55 · 266 阅读 · 0 评论 -
centos安装redis
wget http://download.redis.io/redis-stable.tar.gztar xvzf redis-stable.tar.gzcd redis-stablemake 前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。异常一:make[2]: cc: Command not found异常原因:没有安装gcc解决方案:y转载 2017-08-02 18:04:53 · 191 阅读 · 0 评论 -
Ibatis动态查询-and和or
我们在做sql语句查询时会遇到如下情况select id,name,sex,year from tb_people where sex="girl" and id="110" or name="marry"我们知道,该语句查询的结果是满足以下任意一个条件的数据: 1)id="110" 并且 sex="girl"; 2)name="marry"显然,and和or的查询产生了冗余原创 2018-03-08 17:38:37 · 1408 阅读 · 0 评论 -
iBaits中SqlMapClientTemplate的使用
详解iBaits中SqlMapClientTemplate的使用Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库的操作拥有更加灵活的控制,对于那些经常需要调用本地数据库函数自定义SQL语句,或是喜欢自己优化SQL执行效率的开发者来说,i转载 2017-08-10 14:10:49 · 262 阅读 · 0 评论 -
Hibernate的getHibernateTemplate()的使用
getHibernateTemplate().load(Orgnization.class,parentId)第一个参数是要查询的数据,第二个查询的条件,就是根据这个id,拿出orgnization 说白了,它是spring结合hibernate一起时出现的,它相当于hibernate中的sessionspring 中获得由spring所配置的hibernate的操作对转载 2017-08-21 18:04:44 · 542 阅读 · 0 评论 -
hibernate注解
声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } } @E转载 2017-08-09 11:09:21 · 245 阅读 · 0 评论 -
Eclipse juno 中安装 JBoss Tools,集成Hibernate
在Eclipse中集成Hibernate工具可以帮助开发者根据数据库生成映射文件、注释代码以及反向工程。Hibernate Tools作为JBoss Tools的核心组件,已经被捆绑在JBoss Tools中,安装完JBoss Tools的同时,Hibernate Tools也相应的被安装。一.Help->Install New Software中安装首先要找到跟Ecl转载 2017-07-13 18:25:50 · 329 阅读 · 0 评论 -
Maven3路程(五)用Maven创建Hibernate项目
本文将用Maven3、Hibernate3.6、Oracle10g整合,作为例子。环境清单:1.Maven3.0.52.Hibernate3.6.5 Final3.JDK1.7.0.114.Oracle10g一.首先创建表BDUSERcreate table DBUSER( user_id NUMBER(5) not nu转载 2017-07-12 09:22:39 · 313 阅读 · 0 评论 -
Maven3路程(六)用Maven创建Spring3 MVC项目
Maven3路程(六)用Maven创建Spring3 MVC项目一、 环境spring-framework-3.2.4.RELEASEjdk1.7.0_11Maven3.0.5eclipse-jee-juno-SR2-win32二、 创建Web项目Eclipse中创建Web项目,见前边日志《Maven3路程(三)用Mave转载 2017-07-12 09:18:15 · 240 阅读 · 0 评论