自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 Redis进阶:事务+持久化+优化

发布消息publish channel:sports "Tim won the championship订阅消息subscribe channel:sports有关订阅命令有两点需要注意:客户端在执行订阅命令之后进入了订阅状态,只能接收subscribe、psubscribe、unsubscribe、punsubscribe的四个命令。新开启的订阅客户端,无法收到该频道之前的消息,因为Redis不会对发布的消息进行持久化。Redis发布订阅与成熟MQ的比较MQ支持多种消息协

2021-11-20 15:05:14 181

原创 Redis中缓存雪崩、缓存穿透等问题的解决方案

缓存预热缓存降级热点数据和冷数据缓存热点key缓存雪崩缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方案缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。缓存穿透缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到..

2021-11-20 15:02:02 173

原创 PyCharm安装教程及使用教程(2020最新版)

本教程将使用深色模式 Darcula。在下一个页面上,直接保留默认设置,并点击「Next: Featured plugins」,这时 PyCharm 将展示可用插件列表。点击「Start using PyCharm」,现在你可以写代码了!在 PyCharm 中写代码在 PyCharm 中,你可以在「项目」中执行任意操作。因此,首先你需要创建一个项目。安装和打开 PyCharm 后,你会看到欢迎页面。点击「Create New Project」,出现「New Project」弹窗:指定项目位置,打

2021-11-20 14:58:42 4445

原创 nodeJS学习笔记——包&npm(2),四面楚歌的Java工程师该何去何从

name:包名description:包信息简介version:包的版本keywords:关键词数组,用于在npm中检索的关键字author:包作者main:配置包的入口文件模块,缺省值是 index.js,最好配上便于阅读dependencies:包的依赖项,npm install 命令会通过该属性自动加载依赖包scrips:指定了运行脚本命令的 npm命令行 缩写npm (node package manager)简介npm 有两层含义:第一表示 npm 生态系统网站:提供包的平台

2021-11-19 15:13:00 122

原创 Netty学习之旅----源码分析内存分配与释放原理,java基础面试集合

subpage = new PoolSubpage(this, id, runOffset(id), pageSize, normCapacity); // 代码@3subpages[subpageIdx] = subpage;} else { //@4subpage.init(normCapacity);}return subpage.allocate(); //代码@5}首先讲解一下整体分配思路,先根据PoolChunk内部维护的各个PoolChunk的占用情况,返回一个可以PoolChu

2021-11-19 15:10:04 384

原创 MySql知识体系总结(2021版),爆火的Java面试题

1、 存储结构MyISAM:每个MyISAM在磁盘上存储成三个文件。分别为:表定义文件、数据文件、索引文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。2、 存储空间MyISAM: MyISAM支持支持三种不同的存储格式:静

2021-11-19 15:07:19 81

原创 MySQL的binlog有啥用,谁写的,在哪里,java高级工程师进阶书籍

那你说,我不想让MySQL记录那些日志不行吗?肯定行啊!甚至默认情况下,MySQL都不会主动为你记录bin log ,但是话说回来,你不让它写那些日志,它就没有相应的能力给你用。是吧!所以综合来说,写日志还是很香的。知道了这些,再去学相关的知识点是不是目的性很强了呢?关于undo log、redo log白日梦前面已经和大家分享过了,知无不言的那种分享哈,如果你又有感觉了,欢迎关注我然后去翻看。对于大部分研发同学来说,肯定听说过bin log。然后却不一定知道binlog在哪里?谁写的?怎么配置binl

2021-11-19 15:04:24 545

原创 MySQL操作命令大全,java大学实用教程第四版答案

6、当前数据库包含的表信息show tables;二、表操作1、建表create table user (id int(11) not null comment ‘序号’,username varchar (50) null comment ‘姓名’,sex tinyint(4) null comment ‘性别’,age int(11) null comment ‘年龄’,education int(11) null comment ‘学历,枚举值…’,primary key (id

2021-11-19 15:01:43 734

原创 MySQL(七):MySQL的事务,原理+实战+视频+源码

链事务嵌套事务分布式事务扁平事务扁平事务是事务类型中最简单的一种,而在实际生产环境中,这可能是使用最为频繁的事务,在扁平事务中,所有操作都处于同一层次,其由BEGIN WORK开始,由COMMIT WORK或ROLLBACK WORK结束,处于之间的操作是原子的,要么都执行,要么都失败然后进行回滚。因此扁平事务是应用程序成为原子操作的基本组成模块。上面给出了扁平事务的三种情况,同时也给出了在一个典型的事务处理应用中,每个结果大概占用的百分比,扁平事务虽然简单,但是在实际生产环境中..

2021-11-19 14:58:21 529

原创 MySQL InnoDB锁原理剖析,java里面的反射原理

begin / start transaction;2)设定事务是否自动开启(off代表事务不会自动提交):set session autocommit = on/off;二、怎么结束事务?1)提交或者回滚都会结束事务:commit / rollback;三、怎么加锁?1)自动加锁:delete / update / insert 语句会自动加上排他锁;2)手动加排它锁:select * from student where id=1 FOR UPDATE;锁是在事务结束的时候释放的

2021-11-19 14:55:39 332

原创 mybatis常用注解(绝对经典),java入门编程题

一、顶级标签1、sql – 可被其他语句引用的可重用语句块 where valid = 1 select * from user 2、insert – 映射插入语句insert into User (id,name,sex) values (#{id},#{name},#{sex})3、update – 映射更新语句update User setname = #{name},sex= #{sex}where id = #{id}4、delete&nb

2021-11-19 14:52:24 434

原创 Mybatis-plus常用API全套教程,看完没有不懂的,springboot教程视频

class MybatisPlusApplicationTests {// 继承了BaseMapper,所有的方法都来自己父类// 我们也可以编写自己的扩展方法!@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() {// 参数是一个 Wrapper ,条件构造器,这里我们先设置条件为空,查询所有。List users

2021-11-19 14:49:22 114

原创 MQ的发布订阅模式(fanout),java三层架构登录功能实现

是应该把这些消 息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。交换机共有四种类型直接(direct)主题(topic)标题(headers)扇出(fanout)一般MQ会帮我们创建一些默认的交换机,可以直接拿来使用,也可以自己创建不同类型的交换机这里需要讲下无名交换机,也就是默认交换机,先前的几篇文章我们都没有指定交换机第一个参数是交换机的名称。空字符串表示默认或无名称交换机:消息能路由发送到队列中其实 是由 routingK

2021-11-19 14:46:45 731

原创 Java语言特点,java开发技术教程

文章目录Java语言是简单的Java语言是面向对象的Java语言是分布式的Java语言是多线程的Java语言是高性能的Java语言是跨平台的Java语言是可移植的Java语言是安全的Java语言是健壮的Java语言是动态的Java语言是简单的Java语言的语法与C语言和C++语言很接近,从某种意义上讲,它是由C和C++演变而来,使得大多数程序员很容易学习和使用。对C++来说进行了简化和一定的提高,如:使用接口代替了复杂的多.

2021-11-14 02:52:50 382

原创 Java程序员(阿里、京东,java面试题大汇总云栖社区

ibatis跟hibernate的区别ibatis是怎么实现映射的,它的映射原理是什么Java I/O底层细节,注意是底层细节,而不是怎么用你对mysql有什么了解说一下数据库事务的四个特性,为什么mysql事务能保证失败回滚mysql数据库的锁有多少种,怎么编写加锁的sql语句mysql什么情况下会触发表锁页锁、乐观锁、悲观锁tcp三次握手的过程进程跟线程的区别redis的操作是不是原子操作ArrayList跟LinkedList的底层..

2021-11-14 02:48:14 298

原创 Java注解和反射,苦熬一个月

使用@interface自定义注解,且自动继承java.lang.annotation.Annotation接口注解声明格式:public @interface 注解名 {定义内容}其中的每一个方法实际是声明一个配置参数方法名称就是参数名称通过default声明默认参数值一个参数成员,一般参数名为value注解元素必须要有值,可以使用空字符串,0为默认值//自定义注解public class Test02 {//注解可以显示赋值,如果没有默认值,必须给注解赋值

2021-11-14 02:41:05 132

原创 Java数组冒泡算法与添加删除算法,java并发编程实践pdf完整百度云

第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次第四次:arr[0]与arr[1]比较1次*/public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length...

2021-11-14 02:39:09 377

原创 Java开发架构篇:领域驱动设计架构基于SpringCloud搭建微服务

作者:小傅哥来自:博客园小傅哥一、前言介绍======微服务不是泥球小单体,而是具备更加清晰职责边界的完整一体的业务功能服务。领域驱动设计的思想通过Domain的功能域设计,可以把核心功能与支撑功能很好的区分开。而在MVC的设计模式尝尝是把所有的;数据服务、定义的属性类、提供的功能都在一条线上,这样是非常快速的开发方式但在作为服务部署时候却很麻烦。按照不同的业务场景可能设计出软件在数据库使用上会有单库单表或者分库分表,如果是一个体量足够需要分库分表设计的系统,在扩容时候它是否能满足你的需求包括;

2021-11-14 02:37:29 682

原创 一篇文章带你深入了解MySQL 索引相关,mybatisplugin教程

值得注意的是,一张数据表中只能有一个聚集索引。辅助索引========辅助索引的树最底层的叶子节点并不会存储一整行记录,而是只存储单列索引的数据,并且还存储了聚集索引的信息。通过辅助索引进行查询时,先拿到自身索引字段的数据,再通过聚集索引拿到整行记录,也就是说辅助索引拿一整行记录而言需要最少两次查询。而一张数据表中可以有多个辅助索引。创建索引========索引类型========索引名类型INDEX(field)普通索引,只加速查找,无约束条件PRIMARY KEY(field)主

2021-11-12 12:11:03 775

原创 一个项目了解 SpringBoot 集成 MyBatis,Java手机百度下载文件

1.引入依赖mybatis-spring-boot-starter 依赖完整的 pom.xml2.配置文件加入mybatis配置完整的配置文件3. 数据库建表4. 开发实体类5. 开发DAO接口以及Mapper6. 开发Service以及实现7. 编写控制器进行测试完整的项目结构开始测试SpringBoot 知识点目录: SpringBoot 核心知识点整理!创建项目====================..

2021-11-12 12:09:07 1324

原创 Netty时间轮调度算法原理分析,再不了解你就out啦,java高级特性编程及实战第三章

很多开源框架都实现了时间轮算法,这里以 Netty 为例,看下 Netty 中时间轮是怎么实现的。1.1 快速入门下面是一个 API 使用例子。public class WheelTimerSamples {private static final HashedWheelTimerInstance INSTANCE = HashedWheelTimerInstance.INSTANCE;public static void main(String[] args) throws IOExceptio

2021-11-12 00:31:21 183

原创 mysql用户&权限总结,高级面试题+解析

CREATE TABLE user (Host char(60) COLLATE utf8_bin NOT NULL DEFAULT ‘’,User char(16) COLLATE utf8_bin NOT NULL DEFAULT ‘’,Password char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ‘’,Select_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL

2021-11-12 00:28:06 98

原创 MySQL热点面试题:为什么我使用了索引,查询还是慢,分享面试经历的网站

所以即使explain的结果里写的KEY不是NULL,实际上也可能是全表扫描的,因此InnoDB里面只有一种情况叫做没有使用索引,那就是从主键索引的最左边的叶节点开始,向右扫描整个索引树。也就是说,没有使用索引并不是一个准确的描述。你可以用全表扫描来表示一个查询遍历了整个主键索引树;也可以用全索引扫描,来说明像select a from t;这样的查询,他扫描了整个普通索引树;而select * from t where id=2这样的语句,才是我们平时说的使用了索引。他表示的意思是,我们使用了索引

2021-11-12 00:25:53 87

原创 Mysql必知必会:物理备份与恢复测试,java基础语法教学视频

元数据(Metadata):包含所有的数据库以及表的定义信息;表数据(Table Records):保存实际数据的文件;事务日志数据(Transaction Log):维持事务一致性和完整性,以及恢复过程中所需要的事务信息。不论是通过停机冷备份,还是通过 NDB Cluster 自行提供的在线联机备份工具,或者是第三方备份软件来进行备份,都需要备份以上三种物理文件才能构成一个完整有效的备份集。当然,相关的配置文件,尤其是管理节点上面的配置信息,同样也需要备份。三、各存储引擎常用物理备份方法由于.

2021-11-12 00:24:26 60

原创 Mybatis的基本使用方法,springboot工作原理以及好处

</mappers></configuration>该配置文件使用文件流的形式读入,通过mybatis的工具类Resources加载资源文件:String resource = “org/mybatis/example/mybatis-config.xml”;InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBu

2021-11-12 00:19:00 116

原创 SpringBoot快速整合Mybatis&MybatisPlus,java编程入门自学

import lombok.NoArgsConstructor;import lombok.ToString;import lombok.experimental.Accessors;@Data // getter/setter@ToString // toString@AllArgsConstructor // 有参构造函数@NoArgsConstructor // 无参构造函数@TableName(“user”)@Accessors(chain = true)@ApiModel(des

2021-11-09 13:58:20 103

原创 SpringBoot实现图片上传demo&Nginx进行代理显示,linux系统教程视频

keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;#访问路径拼接 upload 访问本地绝对路径下的某图片location /upload/ {alias D:/images/;autoindex on;}location / {root html;index

2021-11-09 13:56:20 647

原创 SpringBoot 之Thymeleaf模板,分层架构模式的缺点

二、集成 Thymeleaf 模板引擎SpringBoot 对 Thymeleaf 模板引擎的支持也很简单:【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取1、pom.xmlorg.springframework.bootspring-boot-starter-thymeleaf这时候,SpringBoot 对 Thymeleaf 模板的支持就完成了,我们就能在 Web 开发中使用 Thyme

2021-11-09 13:54:50 185

原创 Spring Cloud:第六章:Config分布式配置,食堂大妈看完都学会了

我们可以看到引入了Eureka,为什么呢?很明显是为了高可用。接着在启动类上面加入@EnableConfigServer注解,表示这里是配置中心服务。还有Eureka的客户端的注解代码如下:@SpringBootApplication@EnableConfigServer@EnableDiscoveryClientpublic class ConfigApplication {public static void main(String[] args) {SpringApplication.r

2021-11-09 13:53:05 77

原创 Spring cloud stream【消息分组】,java过滤器原理

import java.io.Serializable;public class Product implements Serializable{private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void s

2021-11-09 13:50:52 663

原创 spring boot集成canal实现数据库同步,且mysql主库宕机canal自动切换到从库

Message message = connector.getWithoutAck(BATCH_SIZE);//获取批量IDlong batchId = message.getId();//获取批量的数量int size = message.getEntries().size();//如果没有数据if (batchId == -1 || size == 0) {try {//线程休眠2秒Thread.sleep(2000);} catch (InterruptedException e)

2021-11-09 13:47:31 2363

原创 RocketMQ 整合 DLedger(多副本)即主从切换实现平滑升级的设计技巧

3、DLedgerCommitLog 详解温馨提示:由于 Commitlog 的绝大部分方法都已经在《RocketMQ技术内幕》一书中详细介绍了,并且【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取DLedgerCommitLog 的实现原理与 Commitlog 文件的实现原理类同,本文会一笔带过关于存储部分的实现细节。3.1 核心类图DLedgerCommitlog 继承自 Commitlog。让我们一

2021-11-09 13:41:40 151

原创 Set集合无法去重相同内容的父类对象和子类对象的问题解决

@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age &&Objects.equals(name, student.name);}@Overridepublic in

2021-11-08 13:51:14 257

原创 Redis面试题及答案整理,java面试常问的设计模式

3.redis可以持久化其数据redis可以持久化其数据3、Redis支持哪几种数据类型?String、List、Set、Sorted Set、hashes4、Redis主要消耗什么物理资源?内存。5、Redis有哪几种数据淘汰策略?1.noeviction:返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。2.allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。3.volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期

2021-11-08 13:44:20 107

原创 Redis缓存设计原理及实战,java并发编程艺术和实战

Redis的持久化使用了Buffer I/O,对持久化文件的写入和读取操作都会使用物理内存的Page Cache,而大多数数据库系统会使用Direct I/O来绕过这层Page Cache并自行维护一个数据的Cache。而当Redis的持久化文件过大,并对其进行读写时,磁盘文件中的数据都会被加载到物理内存中作为操作系统对该文件的一层Cache,而这层Cache的数据与Redis内存中管理的数据实际是重复存储的。虽然内核在物理内存紧张时会做Page Cache的剔除工作,但内核很可能认为某块Page Ca

2021-11-08 13:40:30 297

原创 Redis热点key解决方案,java实用教程第五版耿祥义pdf下载

在服务端读数据进行访问时,往往会对数据进行分片,此过程中会在某一主机 Server 上对相应的 Key 进行访问,当访问超过 Server 极限时,就会导致热点 Key 问题。2 热点Key的危害=========================================================================流量过于集中,突破物理网卡的极限请求过多,缓存分片服务被打垮穿透DB当某热点Key请求在某一主机上超过该主机网卡上限时,由于流量过度集中,导

2021-11-08 13:38:53 112

原创 Redis(二十二):复制(二,字节跳动面试官

命令传播步骤1:设置主服务器的地址和端口当客户端向从服务器发送一下命令时:slaveof 127.0.0.1 6379首先要做的就是将客户端给定的主服务器IP地址以及端口号保存到服务器状态的masterhost属性和masterport属性里面Stcuct redisServer{//…前面的一些信息//主服务器地址char *masterhost;//主服务器端口号int masterport;//…};SLAVEOF命令也是一个异步命令,会启用另一个进程去执行,在完成保存.

2021-11-08 13:36:35 87

原创 SpringBoot——解决Cache缓存同类中调用失败问题,docker面试题

@return*/@CachePut(cacheNames = “testList” , key = “#key”)public List testPutCache(String key){List stringList = testCache(key);List list = new ArrayList<>();list.add(“1”);list.add(key);return list;}}上述代码就存在问题,调用testPutCache()时,系统并不会去查询t.

2021-11-07 19:01:54 254

原创 SpringBoot 日志输出到指定文件&控制台彩色输出配置(彩色日志配置)

logger.info("=项目启动了=");logger.debug("=debug=");logger.warn("=warn=");logger.error("=error=");SpringApplication.run(LogApplication.class, args);logger.info("=启动成功=");}}10:45:30.754 [main] INFO com.logtest.demo.LogApplication - =项目启动了=10:45:30.81

2021-11-07 19:00:06 725

原创 Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务

@Author : JCccc@CreateTime : 2020/4/16@Description :**/public interface TestAsyncService {String testNotice(int[] taskDelayMill) throws InterruptedException, IOException;}对应的实现类impl,TestAsyncServiceImpl.class:import com.jc.mytest.async.serv..

2021-11-07 18:58:06 289

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除