摘要: Redis 6 Redis 是典型的 NoSQL 数据库,支持多种数据结构类型。设计思想是:单线程+多路IO复用技术 上图的例子说明:内存中只有一个单线程,无需进行线程切换等操作,保证了redis在内存处理中的效率,同时使用多个socket链接复用,一旦需要哪个链接的数据准备就绪之后,就将这个线程与这个链接进行IO 阅读全文
posted @ 2022-03-13 16:58 随遇而安== 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 16.全文代码开始 在创建 MyBatis 项目之前,首先创建 website 数据表,SQL 语句如下。 DROP TABLE IF EXISTS `website`; CREATE TABLE `website` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varc 阅读全文
posted @ 2022-03-13 14:07 随遇而安== 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 15.逆向工程 Mybatis 提供了一个逆向工程工具,该工具可以根据数据表自动生成针对单表的 po 类、mapper 映射文件和 mapper 接口。大大缩减了开发时间,可以让开发人员将更多的精力放在繁杂的业务逻辑上。之所以强调单表两个字,是因为 MyBatis 逆向工程生成的 Mapper 中的操作都是针对单表 阅读全文
posted @ 2022-03-13 14:03 随遇而安== 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 14.缓存(一级缓存和二级缓存) 缓存可以将数据保存在内存中,是互联网系统常常用到的。目前流行的缓存服务器有 MongoDB、Redis、Ehcache 等。缓存是在计算机内存上保存的数据,读取时无需再从磁盘读入,因此具备快速读取和使用的特点。和大多数持久化框架一样,MyBatis 提供了一级缓存和二级缓存的支持。默认情况下,MyB 阅读全文
posted @ 2022-03-13 14:00 随遇而安== 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 13.分页功能 MyBatis 的分页功能是基于内存的分页,即先查询出所有记录,再按起始位置和页面容量取出结果。本节我们为查询网站记录增加分页功能,要求结果列表按照 id 升序排列。WebsiteMapper 中方法如下。 /** * * @param site * @param currentPageNo 起始位 阅读全文
posted @ 2022-03-13 13:59 随遇而安== 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 12.动态SQL 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态 SQL 恰好解决了这一问题,可以根据场景动 阅读全文
posted @ 2022-03-13 13:57 随遇而安== 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 11.关联(级联)查询 一、MyBatis一对一关联查询 一对一级联关系在现实生活中是十分常见的,例如一个大学生只有一个学号,一个学号只属于一个学生。同样,人与身份证也是一对一的级联关系。在 MyBatis 中,通过 <resultMap> 元素的子元素 <association> 处理一对一级联关系。示例代码如下。 <a 阅读全文
posted @ 2022-03-13 13:44 随遇而安== 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 10.注解 为了简化 XML 的配置,MyBatis 提供了注解。我们可以通过 MyBatis 的 jar 包查看注解,如下图所示。 以上注解主要分为三大类,即 SQL 语句映射、结果集映射和关系映射。下面分别进行讲解。 1. SQL 语句映射 1)@Insert:实现新增功能 @Insert("insert 阅读全文
posted @ 2022-03-13 13:33 随遇而安== 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 9.resultMap元素 resultMap 是 MyBatis 中最复杂的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象。下面我们先从最简单的功能开始介绍。 现有的 MyBatis 版本只支持 resultMap 查询,不支持更新或者保存,更不必说级联的更新、删除和修改。 1.r 阅读全文
posted @ 2022-03-13 13:30 随遇而安== 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 8.delete标签 MyBatis delete 标签用于定义 delete 语句,执行删除操作。当 MyBatis 执行完一条更新语句后,会返回一个整数,表示受影响的数据库记录的行数。下面我们通过一个示例演示 delete 标签的用法。1. 在 WebsiteMapper.xml 中使用 delete 标签添加一条 阅读全文
posted @ 2022-03-13 13:27 随遇而安== 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 7. update标签 MyBatis update 标签用于定义更新语句,执行更新操作。当 MyBatis 执行完一条更新语句后,会返回一个整数,表示受影响的数据库记录的行数。下面我们通过一个示例演示 update 标签的用法。1. 在 WebsiteMapper.xml 中添加以下更新语句,代码如下。 <!--upda 阅读全文
posted @ 2022-03-13 13:22 随遇而安== 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 19.容器交付介绍 如何在k8s集群中部署Java项目 1.容器交付流程 开发代码阶段 编写代码 编写Dockerfile【打镜像做准备】 持续交付/集成 代码编译打包 制作镜像 上传镜像仓库 应用部署 环境准备 Pod Service Ingress 运维 监控 故障排查 应用升级 2.k8s部署Java项目流程 制 阅读全文
posted @ 2022-03-13 10:57 随遇而安== 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 18.搭建高可用集群 1.前言 之前我们搭建的集群,只有一个master节点,当master节点宕机的时候,通过node将无法继续访问,而master主要是管理作用,所以整个集群将无法提供服务 2.高可用集群 下面我们就需要搭建一个多master节点的高可用集群,不会存在单点故障问题 但是在node 和 master节点 阅读全文
posted @ 2022-03-13 10:51 随遇而安== 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 17.集群资源监控 1.概述 1.1 监控指标 一个好的系统,主要监控以下内容 集群监控 节点资源利用率 节点数 运行Pods Pod监控 容器指标 应用程序【程序占用多少CPU、内存】 1.2 监控平台 使用普罗米修斯【prometheus】 + Grafana 搭建监控平台 prometheus【定时搜索被监控服务 阅读全文
posted @ 2022-03-13 10:46 随遇而安== 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 16.持久化存储 1.前言 之前我们有提到数据卷:emptydir ,是本地存储,pod重启,数据就不存在了,需要对数据持久化存储 对于数据持久化存储【pod重启,数据还存在】,有两种方式 nfs:网络存储【通过一台服务器来存储】 2.步骤 2.1 持久化服务器上操作 找一台新的服务器nfs服务端,安装nfs 设置挂 阅读全文
posted @ 2022-03-13 10:39 随遇而安== 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 15.Helm Helm就是一个包管理工具【类似于npm】 1.为什么引入Helm 首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个service.yaml,一个Ingress.yaml还可能存 阅读全文
posted @ 2022-03-13 10:34 随遇而安== 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 13.Kubernetes集群安全机制 1.概述 当我们访问K8S集群时,需要经过三个步骤完成具体操作 认证 鉴权【授权】 准入控制 进行访问的时候,都需要经过 apiserver, apiserver做统一协调,比如门卫 访问过程中,需要证书、token、或者用户名和密码 如果访问pod需要serviceAccount 1.1 认证 对 阅读全文
posted @ 2022-03-13 10:13 随遇而安== 阅读(51) 评论(1) 推荐(0) 编辑
摘要: 12.Kubernetes配置管理 1.Secret Secret的主要作用就是加密数据,然后存在etcd里面,让Pod容器以挂载Volume方式进行访问 场景:用户名 和 密码进行加密 一般场景的是对某个字符串进行base64编码 进行加密 echo -n 'admin' | base64 变量形式挂载到Pod 创建secret加密 阅读全文
posted @ 2022-03-13 09:45 随遇而安== 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 11.Kubernetes如何部署有状态、无状态应用和定时任务 1.删除svc 和 statefulset 使用下面命令,可以删除我们添加的svc 和 statefulset kubectl delete svc web kubectl delete statefulset --all 2.statefulset statefulset主要是用来部署有状态应用 阅读全文
posted @ 2022-03-13 09:37 随遇而安== 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 10.Controller详解 1.Statefulset Statefulset主要是用来部署有状态应用 对于StatefulSet中的Pod,每个Pod挂载自己独立的存储,如果一个Pod出现故障,从其他节点启动一个同样名字的Pod,要挂载上原来Pod的存储继续以它的状态提供服务。 1.1 无状态应用 我们原来使用 deploy 阅读全文
posted @ 2022-03-13 09:30 随遇而安== 阅读(124) 评论(0) 推荐(0) 编辑