前言

MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO (Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,做到可以在不修改程序代码的情况下,直接在配置文件中修改SQL。

在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力。

Redis主从复制

概念

Redis的主从复制概念和MySQL的主从复制大概类似。一台主机master,一台从机slaver。master主机数据更新后根据配置和策略,自动同步到slaver从机,Master以写为主,Slave以读为主

主要用途

  • 读写分离:适用于读多写少的应用,增加多个从机,提高读的速度,提高程序并发

  • 数据容灾恢复:从机复制主机的数据,相当于数据备份,如果主机数据丢失,那么可以通过从机存储的数据进行恢复。

  • 高并发、高可用集群实现的基础:在高并发的场景下,就算主机挂了,从机可以进行主从切换,从机自动成为主机对外提供服务。

一主多从配置

环境准备

老哥太穷了,就用一台机器模拟三个机器。

  • 第一步:将redis.conf复制3份,分别是redis6379.conf、redis6380.conf、redis6381.conf

  • 第二步: 修改三个redis.conf文件里的port端口、pid文件名、日志文件名、rdb文件名

  • 第三步: 分别打开三个窗口模拟三台服务器,并开启redis服务。

查看当前3台机器主从角色

先用命令info replication看看3台机器目前的角色是什么。

# 三台机器都是这个状态
127.0.0.1:6379> info replication
# 角色是master主机
role:master
# 从机个数为0
connected_slaves:0

设置主从关系

这里注意,我们只设置从机就可以了,不用设置主机。我们选择63806381作为从机6379作为主机

# 6380 端口
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379# 6381 端口
127.0.0.1:6381> SLAVEOF 127.0.0.1 6379# 6381 端口
127.0.0.1:6381> SLAVEOF 127.0.0.1 6379

再次查看3台机器目前角色

再次执行命令:info replication

# 主机
127.0.0.1:6379> info replication
role:master # 角色:主机
connected_slaves:2 #连接的从机个数,以及从机IP和端口
slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=98,lag=1# 从机1
127.0.0.1:6380> info replication
role:slave # 角色:从机
master_host:127.0.0.1 # 主机的IP和端口
master_port:6379# 从机2
127.0.0.1:6381> info replication
role:slave # 角色:从机
master_host:127.0.0.1 # 主机的IP和端口
master_port:6379

搭建成功,试验一把

  • 全量复制: 从机会把主机之前的数据全部都同步过来,大家可以在从机上get 某key试试。

  • 增量复制: 当主机新增数据时,从机会将该新增数据同步过来,大家可以在主机上执行命令set key value,然后在从机上get 该key,看是否能获取到。

读写分离

Redis的从机默认不允许进行写操作,大家可以在从机上执行命令set key value,会报错。

# 6380从机
127.0.0.1:6380> set k3 v3
(error) READONLY You can't write against a read only slave.

「呼,好累」,主从复制写的差不多了!!

主从复制原理

全量复制

**「①」**slave发送psync,由于是第一次复制,不知道master的runid,自然也不知道offset,所以发送psync ? -1

**「②」**master收到请求,发送master的runid和offset给从节点。

**「③」**从节点slave保存master的信息

**「④」**主节点bgsave保存rdb文件

**「⑤」**主机点发送rdb文件

并且在**「④」「⑤」**的这个过程中产生的数据,会写到复制缓冲区repl_back_buffer之中去。

**「⑥」**主节点发送上面两个步骤产生的buffer到从节点slave

**「⑦」**从节点清空原来的数据,如果它之前有数据,那么久会清空数据

**「⑧」**从节点slave把rdb文件的数据装载进自身。

全量复制的开销

**「①」**bgsave时间

**「②」**rdb文件网络传输时间

**「③」**从节点清空数据的

**「④」**从节点加载rdb的时间

**「⑤」**可能的aof重写时间,这是针对从节点,例如开启了aof之后,从节点添加buffer数据时候,可能需要aof重写

基于上面的原因,有的情况下不适合使用全量复制,例如网络抖动之后,从节点只需要传送一部分数据,不需要传送全部数据,redis2.8之后实现了部分复制功能

部分复制

**「①」**假设发送网络抖动或者别的情况,暂时失去了连接

**「②」**这个时候,master还在继续往buffer里面写数据

**「③」**slave重新连接上了master

**「④」**slave向master发送自己的offset和runid

**「⑤」**master判断slave的offset是否在buffer的队列里面,如果是,那就返回continue给slave,否则需要进行全量复制(因为这说明已经错过了很多数据了)

**「⑥」**master发送从slave的offset开始到缓冲区队列结尾的数据给slave

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以关注+点赞,点击这里免费获取

程序员代码面试指南 IT名企算法与数据结构题目最优解

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

《TCP-IP协议组(第4版)》

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

Java开发手册(嵩山版)

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

MySQL 8从入门到精通

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

Spring5高级编程(第5版)

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

JAVA核心知识点+1000道 互联网Java工程师面试题

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

-1621586117898)]

JAVA核心知识点+1000道 互联网Java工程师面试题

[外链图片转存中…(img-aObujLvT-1621586117899)]

[外链图片转存中…(img-JKcfQzQu-1621586117899)]

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

32岁的程序员被裁,java宿舍管理系统源码jsp相关推荐

  1. 28岁学python转行_28岁转行程序员,学Java还是Python?码农:想快点月薪过万就选它...

    为什么要学Java? Python给人的印象简单是因为我们在用Python的时候,可以直接调用别人已经写好的代码接口就可以,相对于傻瓜模式,Java的许多处理都要原生很多,写的代码可能会多一些,但一旦 ...

  2. 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...

    招人背景 首先说一下朋友的公司招人背景,公司招聘PHP高级岗位,负责公司的B2B项目研发.并发问题的处理和解决.领导给了他两个要求:(接下来的讲述我会以朋友的第一人称来进行) (1)技术比较好 (2) ...

  3. 面试了一个32岁的程序员,一个细节就看出来是培训班的····

    首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情. 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的轰动. &qu ...

  4. 32岁大龄程序员真的不好找工作吗?给大家分析一下我的真实经历

    今天终于开始上班了,32岁大龄程序员找工作找了一个半月,今天终于有了工作,感觉人也比较开心了.这份工作不包住,但包吃,吃的还可以.今天真是个好日子,工作终于有着落了.在这里首先感谢大家这段时间来对我的 ...

  5. 面试了一个32岁的程序员,只因这一个细节,被我一眼看穿是培训班出来的,没啥工作经验....

    首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情. 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的轰动. &qu ...

  6. 32岁,程序员,年薪60W,果断辞职考进体制内,月薪5K

    32岁的程序员张华从公司辞职了,利用1年的时间在家乡复习,终于考进了县城某局的事业编制,成为了一名体制内人员. 当然,他的工资也从年薪60W,变成了现在的月薪5K. 当初他辞职的时候,很多同学说他傻, ...

  7. 32岁了 学python 来的及吗-32岁的程序员去了国企工作, 晒出年薪, 网友: 我没看错吧...

    原标题:32岁的程序员去了国企工作, 晒出年薪, 网友: 我没看错吧 现如今,相信很多朋友都非常羡慕那些互联网大公司的从业人员,因为他们动不动就年薪三四十万以上,但是这些互联网行业的从业人员也有自己的 ...

  8. 32岁的程序员转职成为大学讲师,收入曝光

    对于很多在互联网公司工作的程序员来说,其实他们到了一定岁数也是对自己的前途比较担忧,因为他们担心被公司劝退,而且往往互联网公司在裁员的时候可以说是非常无情的,即便是在公司工作很长时间立下汗马功劳,都不 ...

  9. 面试了一名32岁的程序员,领导:年纪太大,直接送走吧

    程序员是吃青春饭的行业吗?这个问题放在国内,很多人都会表示认同,君不见,很多互联网企业招聘程序员,年纪三十多岁的一般就不考虑了,比如华为,前段时间就盛传清退35岁以上的员工,虽然没有得到官方证实,但空 ...

最新文章

  1. 社会网络计算与社会网络分析、核心指标有哪些?社会网络计算有什么意义?
  2. 默认以管理员启动_如何始终以管理员身份运行 CMD 命令提示符和 PowerShell
  3. CF786E-ALT【网络流,倍增】
  4. leetcode 740. 删除并获得点数(dp)
  5. 【转】dicom网络通讯入门(2)
  6. asp网络编程:用ASP实现网页BBS
  7. 【纪中集训】2019.08.10【省选组】模拟TJ
  8. 软考信息系统项目管理师_管理科学(运筹学)2---软考高级之信息系统项目管理师034
  9. modulus CRT
  10. 使用OpenCV的分水岭算法
  11. 彭启宗的dsp技术学习笔记
  12. AD5933的直流偏置和量程自动切换问题
  13. 2021中国开源优秀人物榜出炉!
  14. Android获取当前连接的wifi名称
  15. Python数据分析-NumPy模块-选取数组元素
  16. stm32F4驱动MCP41010程序-数字电位器-应用详解
  17. 什么是CRUD( What is CRUD)?
  18. 正则表达式匹配豹子号和顺子号
  19. BT开源项目Snark源码分析
  20. 漫画女生怎么画(一步步教你画漫画)

热门文章

  1. linux 命令:who 详解
  2. 10万辆特斯拉之后,租车公司Hertz再订6.5万辆Polestar电动车
  3. Hadoop-kms总结
  4. 宏碁笔记本关闭安全启动Secure Boot,就是改为Disabled
  5. Xavier NX+KU040图像处理卡
  6. 卫星各个波段的说明及用途(C/Ku/Ka/S/L)
  7. 分享6款好用并免费的远程管理工具
  8. 如何在HTML网页里添加CSS边框,css如何设置边框?
  9. VUE_v-lazy懒加载
  10. 基于WiFi的室内定位