spring配置文件

2022-07-18

spring配置文件 一. mysql配置 yml spring: datasource: url: jdbc:mysql://mahaonan.com:3306/caike?characterEncoding=utf8&useUnicode=true&verifyServerCertificate=false&useSSL=false&requireSSL=false username: root password: mhn939510 driver-class-name: com.mysql.cj.jdbc.Driver tomcat: max-active: 100 max-idle: 200 initial-size: 20 properties spring.datasource.url=jdbc:mysql://mahaonan.com:3306/test?characterEncoding=utf8&useUnicode=true&verifyServerCertificate=false&useSSL=f....

springboot3-log日志

2022-07-18

springboot3-log日志 系统日志设置 只需在application-properties中添加如下配置信息 system.root.path=F: server.tomcat.basedir=${system.root.path}/log/tomcat_log server.tomcat.accesslog.enabled=true server.tomcat.accesslog.pattern=%t %a "%r" %s %S (%D ms) 自定义日志设置

springboot7-事务

2022-07-18

springboot7-事务 事务 一. 基本理解 ACID四大特性 原子性(Atomicity) :语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的;实现主要基于undo log日志实现的。 持久性(Durability :保证事务提交后不会因为宕机等原因导致数据丢失;实现主要基于redo log日志。 隔离性(Isolation) :保证事务执行尽可能不受其他事务影响;InnoDB默认的隔离级别是RR,RR的实现主要基于锁机制、数据的隐藏列、undo log和类next-key lock机制。 一致性(Consistency) :事务追求的最终目标,一致性的实现既需要数据库层面的保障,也需要应用层面的保障。 二. 使用中的细节 1. 最核心的概念----原子性 在一个被外部类调用方法上加了@Transactional, 那么这个方法中任何异常抛出,都会导致这个方法内数据库操作回滚 2. 事务空间 开启一个事务就形成了一个独立的事务空间。可以这么理解: 在这个事务空间内,数据库的操作是独立的,所有的curd操作都是这个事务空间所专属的,对数据库不....

springboot-缓存

2022-07-18

springboot-缓存 springboot缓存 一. 核心概念 二. 注解使用 2.1 @EnableCaching ​ 开启缓存 2.2 @Cacheable cacheNames/value 指定缓存组件的名字;将方法的返回结果放在哪个缓存中,是数组的方式,可以指定多个缓存; key 缓存数据使用的key;可以用它来指定。默认是使用方法参数的值 1-方法的返回值 编写SpEL; #i# d;参数id的值 #a0# #p0# #root.args[0]# keyGenerator key的生成器;可以自己指定key的生成器的组件id key/keyGenerator:二选一使用 cacheManager 指定缓存管理器;或者cacheResolver指定获取解析器 condition 指定符合条件的情况下才缓存 condition = "#id>0",condition = "#a0>1":第一个参数的值》1的时候才进行缓存 unless 否定缓存;当unless指定的条件为true,方法的返回值就不会被缓存;可以获取到结果进行判断 unle....

springboot6-零碎小知识

2022-07-18

springboot6-零碎小知识 零碎小知识 1. @PathVariable 这个注解用来接收路径中的参数 @RequestMapping("index/{name}/{age}") public String index(@PathVariable String name, @PathVariable int age) throws Exception{ } 会自动接受路径中对应名字的参数,省却问号的写法,路径直接用/就好 2. JPA主键生成策略 JPA提供四种主键生成器策略 GenerationType.IDENTITY 多数数据库支持IDENTITY列,数据库会在新行插入时自动给ID赋值,这也叫做ID自增长列 GenerationType.Auto 把主键生成策略交给JPA厂商(Persistence Provider),由它根据具体的数据库选择合适的策略,可以是Table/Sequence/Identity中的一种。假如数据库是Oracle,则选择Sequence GenerationType.TABLE 有时候为了不依赖于数据库的具体实现,在不同数据库之间更好....

kafka

2022-07-18

kafka 网络笔记[^1] 个人笔记[^7] [^1]: # 网络笔记 1. Kafka的简介 [^2] 2. Kafka的架构 [^3] 3. Kafka的高可用 [^4] 4. Kafka的安装[^5] 5. Kafka在zookeeper中的存储 [^6] [^2]: # 1. Kafka的简介  --- Kafka学习之路 (一) ## 一、简介 ### 1.1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应用场景是:日志收集系统和消息系统。 Kafka主要设计目标如下: * 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问....

Zookeeper Curator 事件监听

2022-07-18

Zookeeper Curator 事件监听 疯狂创客圈 Java 分布式聊天室【 亿级流量】实战系列之 -25【 博客园 总入口 】 1.1. Curator 事件监听 Curator 事件有两种模式,一种是标准的观察模式,一种是缓存监听模式。标准的监听模式是使用 Watcher 监听器。第二种缓存监听模式引入了一种本地缓存视图的 Cache 机制,来实现对 Zookeeper 服务端事件监听。 Cache 事件监听可以理解为一个本地缓存视图与远程 Zookeeper 视图的对比过程。Cache 提供了反复注册的功能。Cache 是一种缓存机制,可以借助 Cache 实现监听。简单来说,Cache 在客户端缓存了 znode 的各种状态,当感知到 zk 集群的 znode 状态变化,会触发 event 事件,注册的监听器会处理这些事件。 Watcher 监听器比较简单,只有一种。Cache 事件监听的种类有 3 种 Path Cache,Node Cache,Tree Cache。 1.1.1. Watcher 标准的事件处理器 在 ZooKeeper 中,接口类 Watcher ....

zookeeper-intro

2022-07-18

zookeeper-intro 1. 前言 2. ZooKeeper 介绍 2.1. ZooKeeper 由来 2.2. ZooKeeper 概览 2.3. ZooKeeper 特点 2.4. ZooKeeper 典型应用场景 2.5. 有哪些著名的开源项目用到了 ZooKeeper? 3. ZooKeeper 重要概念解读 3.1. Data model(数据模型) 3.2. znode(数据节点) 3.2.1. znode 4 种类型 3.2.2. znode 数据结构 3.3. 版本(version) 3.4. ACL(权限控制) 3.5. Watcher(事件监听器) 3.6. 会话(Session) 4. ZooKeeper 集群 4.1. ZooKeeper 集群角色 4.2. ZooKeeper 集群中的服务器状态 4.3. ZooKeeper 集群为啥最好奇数台? 5. ZAB 协议和 Paxos 算法 5.1. ZAB 协议介绍 5.2. ZAB 协议两种基本的模式:崩溃恢复和消息广播 6. 总结 7. 参考 前言 ....

ZooKeeper客户端Curator使用

2022-07-18

ZooKeeper客户端Curator使用 Curator 是 Netflix 公司开源的一套 zookeeper 客户端框架.解决了很多 Zookeeper 客户端非常底层的细节开发工作,包括连接重连、反复注册 Watcher 和 NodeExistsException 异常等等。Curator 被看做是 zookeeper 客户端框里面的瑞士军刀(牛逼了)。Curator 使得我们开发 zookeeper 客户端程序变的很容易。 Curator 框架包含三个主要的包: curator-framework:对 zookeeper 的底层 api 的一些封装。 curator-client:提供一些客户端的操作,例如重试策略等。 curator-recipes:封装了一些高级特性,例如 Cache 事件监听、选举、分布式锁、分布式计数器、分布式 Barrier 等。 Curator 的引入(pom 方式,版本可能有变化)。 <!-- zookeeper --> <!-- 对zookeeper的底层api的一些封装 --> <depen....

zookeeper-plus

2022-07-18

zookeeper-plus FrancisQ 投稿。 1. 好久不见 2. 什么是 ZooKeeper 3. 一致性问题 4. 一致性协议和算法 4.1. 2PC(两阶段提交) 4.2. 3PC(三阶段提交) 4.3. Paxos 算法 4.3.1. prepare 阶段 4.3.2. accept 阶段 4.3.3. paxos 算法的死循环问题 5. 引出 ZAB 5.1. Zookeeper 架构 5.2. ZAB 中的三个角色 5.3. 消息广播模式 5.4. 崩溃恢复模式 6. Zookeeper 的几个理论知识 6.1. 数据模型 6.2. 会话 6.3. ACL 6.4. Watcher 机制 7. Zookeeper 的几个典型应用场景 7.1. 选主 7.2. 分布式锁 7.3. 命名服务 7.4. 集群管理和注册中心 8. 总结 好久不见 离上一篇文章的发布也快一个月了,想想已经快一个月没写东西了,其中可能有期末考试、课程设计和驾照考试,但这都不是借口! 一到冬天就懒的不行,望广大掘友督促我 🙄🙄✍️✍....

zookeeper-in-action

2022-07-18

zookeeper-in-action 1. 前言 2. ZooKeeper 安装和使用 2.1. 使用 Docker 安装 zookeeper 2.2. 连接 ZooKeeper 服务 2.3. 常用命令演示 2.3.1. 查看常用命令(help 命令) 2.3.2. 创建节点(create 命令) 2.3.3. 更新节点数据内容(set 命令) 2.3.4. 获取节点的数据(get 命令) 2.3.5. 查看某个目录下的子节点(ls 命令) 2.3.6. 查看节点状态(stat 命令) 2.3.7. 查看节点信息和状态(ls2 命令) 2.3.8. 删除节点(delete 命令) 3. ZooKeeper Java 客户端 Curator 简单使用 3.1. 连接 ZooKeeper 客户端 3.2. 数据节点的增删改查 3.2.1. 创建节点 3.2.2. 删除节点 3.2.3. 获取/更新节点数据内容 3.2.4. 获取某个节点的所有子节点路径 前言 这篇文章简单给演示一下 ZooKeeper 常见命令的使用以及 ZooKeeper Java 客户....

01-shiro

2022-07-18

01-shiro shiro shiro认证流程 获取当前Subject SecurityUtils.getSubject(); 测试当前的用户是否被认证,即是否已经登录 调用Subject的isAuthenticated() 若没有被认证,则把用户名和密码封装为UsernamePasswordToken对象 创建一个表单页面 把请求提交到SpringMvc的Controller 获取用户名和密码 执行登录 调用Subject的login(AuthenticationToken)方法 自定义Realm的方法,从数据库中获取对应的记录,返回给shiro 实际上需要继承org.apache.shiro.realm.AuthenticatingRealm类 实现doGetAuthenticationInfo(AuthenticationToken token)方法 由shiro完成对密码的比对 密码的比对通过AuthenticatingRealm类的credentialsMatcher属性来比对 代码如下 ShiroController ....

02-shiro拓展

2022-07-18

02-shiro拓展 shiro拓展 一. shiro默认拦截器的实现 1. authc 是FormAuthenticationFilter的实例

00-springSecurity理论(一)

2022-07-18

00-springSecurity理论(一) 一. 概述 Spring Security本质上就是一个Filter Chain,通过多个Filter完成相应的认证,鉴权功能 二. Filter介绍 可以看到spring security创建了很多个Filter,下面分析几个重要的Filter 2.1 SecurityContextPersistenceFilter 这个Filter主要完成两个任务 请求开始时从对应的SecurityContextRepository获取securityContext存入SecurityContextHolder中 请求结束时清除SecurityContextHolder中的securityContext,将本次请求执行后新的SecurityContext存入到对应的SecurityContextRepository中 存储和加载securityContext都是通过SecurityContextRepository来完成的 HttpRequestResponseHolder holder = new HttpRequestResponseHold....

01-springSecurity理论(二)

2022-07-18

01-springSecurity理论(二) 一. 流量控制 SpringSecurity还提供了控制单用户同时在线的客户端数目,下面看看这一功能背后是怎么实现的。 1.1 SessionAuthenticationStrategy session认证策略,我们在之前AbstractAuthenticationProcessingFilter的分析中,有如下的代码 try { authResult = attemptAuthentication(request, response); if (authResult == null) { // return immediately as subclass has indicated that it hasn't completed // authentication return; } sessionStrategy.onAuthentication(authResult, request, response); } 关键在于sessionStrategy.onAuthentication(authResult, request, re....

02-springSecurity之表单登录

2022-07-18

02-springSecurity之表单登录 一. 表单登录初体验 spring security结合springboot自动配置,为我们做了大量自动配置,因此实现一个简单的表单登录很简单。 1.1 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 1.2 操作类 下面是一个基本的表单登录的配置类 @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter{ private DbUserDetailsService dbUserDetailsService; @Autowired public void setDbUserDetailsService(DbUserDetailsService d....

03-springSecurity之鉴权

2022-07-18

03-springSecurity之鉴权 一. 配置鉴权 spring Security提供了在配置类中设定权限的方式,快速方便 /** * anyRequest | 匹配所有请求路径 * access | SpringEl表达式结果为true时可以访问 * anonymous | 匿名可以访问 * denyAll | 用户不能访问 * fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录) * hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问 * hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问 * hasAuthority | 如果有参数,参数表示权限,则其权限可以访问 * hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问 * hasRole | 如果有参数,参数表示角色,则其角色可以访问 * permitAll | 用户可以任意访问 * rememberMe | 允许通过remember-me登录的用户访问 * auth....

个人笔记

2022-07-18

个人笔记 kafka运维监控[^1] kafka细节知识[^2] kafka的使用[^3] [^1]: # 1. kafka运维监控 ### 1.1 gui工具 Offset Explorer (kafkatool.com) ### 1.2 web工具 akhq,官网 java编写的web监控工具 1. 首先编写application-dev.yml配置文件 ```yaml micronaut: server: cors: enabled: true configurations: all: allowedOrigins: - http://localhost:3000 akhq: connections: local: properties: boot....

网络笔记

2022-07-18

网络笔记 Kafka的简介[^1] Kafka的架构[^2] Kafka的高可用[^3] Kafka的安装[^4] Kafka在zookeeper中的存储[^5] [^1]: # 1. Kafka的简介  --- Kafka学习之路 (一) ## 一、简介 ### 1.1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应用场景是:日志收集系统和消息系统。 Kafka主要设计目标如下: * 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 * 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 * 支持Kafka Server....