Tyella
码龄9年
求更新 关注
提问 私信
  • 博客:370,743
    社区:3,255
    373,998
    总访问量
  • 112
    原创
  • 222
    粉丝
  • 69
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
加入CSDN时间: 2017-11-19

个人简介:喜欢一切新奇好玩的事物

博客简介:

Tyella的博客

查看详细资料
个人成就
  • 获得220次点赞
  • 内容获得59次评论
  • 获得524次收藏
  • 代码片获得230次分享
  • 博客总排名2,228,323名
创作历程
  • 45篇
    2021年
  • 1篇
    2020年
  • 64篇
    2019年
  • 37篇
    2018年
成就勋章
TA的专栏
  • Spring源码
    4篇
  • shell
    8篇
  • Java
    15篇
  • 操作系统
    2篇
  • 数据结构_算法
    10篇
  • Java虚拟机学习笔记
    10篇
  • 计算机网络
    9篇
  • Java并发包
    7篇
  • Linux
    7篇
  • 设计模式
    18篇
  • Git
    3篇
  • Spring
    10篇
  • MySQL
    20篇
  • SpringBoot
    3篇
  • Redis
    8篇
  • 备战春招
    26篇
  • NIO
    1篇
  • 秒杀系统
    1篇
  • PostgreSQL
    1篇

TA关注的专栏 2

TA关注的收藏夹 0

TA关注的社区 2

TA参与的活动 0

兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令

谁说嵌入式只会“Ctrl+C 调包”和“拿电烙铁焊板子”?2026嵌入式全栈技术征锋令正式启幕! 本次活动专为硬核硬件/软件开发者打造,无论你是刚玩转裸机外设的萌新,还是精通RTOS调度、死磕底层驱动的行业老手,亦或是执掌系统架构的大神,这里都是你证明实力的舞台! 拒绝表面功夫,每一行代码,都有撬动硬件的力量!晒出你的硬核工程实战,为嵌入式开发者的全栈硬实力正名!

212人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

git常用操作

工作区 git add 暂存区 暂存区 git commit 提交到仓库 撤销git add git reset HEAD #撤销上一次add的全部内容 git reset HEAD xxx.java #撤销指定的文件 撤销git commit git reset commit_id # 回退到上一个commit节点,代码在工作区 git reset --hard commit_id # 回退到上一个commit节点,并清除所有代码 撤销指定提交(git re.
原创
博文更新于 2021.10.24 ·
129 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring AOP源码解析

创建AOP代理 上面讲解了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,这个类到底做了什么工作来完成AOP的操作呢,首先我们看看AnnotationAwareAspectJAutoProxyCreator的类层次结构。 在类的层级中,我们可以看到AnnotationAwareAspectJAutoProxyCreator实现了BeaPostProcessor接口,而实现BeanPostProcessor接口后,当Spring加载这个Bea
原创
博文更新于 2021.10.24 ·
241 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring bean生命周期(中)

实例化阶段 类加载(Bean的ClassLoading):BeanDefinition中的Class信息从过去的一个文本信息变成一个实在的CLass对象,这个过程称为Bean的class Loading,接下来我们继续讨论这个类信息如何变为我们的一个Bean的实例,也就是我们通常讲的Bean的实例化阶段。实例化阶段分为3个阶段,实例化前阶段,实例化中阶段,实例化后阶段。 Spring Bean实例化前阶段 instantiationAwareBeanPostProcessor#postProcessorB
原创
博文更新于 2021.10.24 ·
164 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

十. MySQL并行复制

并行复制的演进 MySQL最早的主备复制只有两个线程,IO 线程负责从主库接收 binlog 日志,并保存在本地的 relaylog 中,SQL线程负责解析和重放 relaylog 中的 event。当主库并行写入压力较大时,备库 IO 线程一般不会产生延迟,因为写 relaylog 是顺序写,但是 SQL线程重放的速度经常跟不上主库写入的速度,会造成主备延迟。如果延迟过大,relaylog 一直在备库堆积,还可能把磁盘占满。 在官方的5.6版本之前,MySQL只支持单线程复制,因此在主库并发高,TPS高时
原创
博文更新于 2021.10.24 ·
1317 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Redis数据结构及底层实现

Redis底层数据结构 1. SDS Redis没有使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS),并将SDS用作Redis的默认字符串表示。 struct sdshdr { // 记录SDS所保存字符串的长度 int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[]; } SDS的特点: 常数复杂度获取字符串长
原创
博文更新于 2021.10.24 ·
159 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

十三.join语句的使用,join语句的优化

Join语句的使用 在分析之间,我们先来建两个表 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`) ) ENGINE=InnoDB; drop procedure idata; delimiter ;; create procedure idata() begin decla
原创
博文更新于 2021.10.24 ·
704 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JDK性能监控工具

JPS 查看Java进程 jps // 显示传递给JVM的参数 jps -v // 显示传递给main方法的参数 jps -m // 显示应用程序主类的完整包名或应用程序 JAR 文件的完整路径名。 jps -l jstat 用于观察Java应用程序运行时相关信息的工具。 // 显示有关垃圾收集堆行为的统计信息。 -gc // 显示JVM中各分区的容量和使用情况 -gccapacity // 显示有关垃圾收集统计信息的摘要,以及上次和当前垃圾收集事件的原因。 -gccause // 显示新
原创
博文更新于 2021.10.24 ·
188 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring bean生命周期(下)

Spring Bean初始化前阶段 Bean的初始化可以分为前阶段,中阶段和后阶段。在初始化前阶段已经,已经完成的有: 已完成: Bean实例化(分为实例化前阶段,实例化阶段,实例化后阶段) Bean属性赋值(赋值前阶段,赋值阶段) Bean Aware接口回调(初始化阶段的前置阶段-在initializingBean方法里面) 方法回调 BeanPostProcessor#postProcessBeforeInitialization 示例 public Object postProces
原创
博文更新于 2021.10.24 ·
196 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring bean生命周期(上)

Spring Bean元信息配置阶段 BeanDefinition配置 面向资源 XML配置 Properties资源配置 面向注解 面向API // Bean定义阅读器,用于简单的属性格式。 // 提供Map / Properties和ResourceBundle的bean定义注册方法。通常应用于DefaultListableBeanFactory。 PropertiesBeanDefinitionReader.java user.(class) = org.tyella.User //
原创
博文更新于 2021.10.24 ·
183 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

九.MySQL是怎么保证主备一致和高可用的

binlog可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢,为什么备库执行了binlog就可以跟主库保持一致了呢?我们今天来探究下这个问题。 主备的基本原理 搭建两个节点A和B。开始时节点B是节点A的备库,备库节点B只读。A上的更新通过binlog同步到B,这样就可以保持节点A和节点B的数据是相同的。当需要切换的时候,就切成状态二,此时客户端读写访问的都是节点B,而节点A是B的备库。 主备同步的具体流程是这样的:备库B跟主库A之间维持了一个长连接,主库执行一个事务后,会写binlog,主库写完
原创
博文更新于 2021.10.24 ·
431 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

七. 幻读是什么,幻读有什么问题

什么是幻读 幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。 在可重复读隔离级别下,普通的查询是快照读,是不会看到 别的事务插入的数据的。因此,幻读在“当前读”下才会出现。 上面session B的修改结果,被session A之后的select语句用“当前读”看到,不能称为“幻读”。幻读仅专指“新插入的行”。 我们新建一张表,插入6条数据: CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DE
原创
博文更新于 2021.10.23 ·
20196 阅读 ·
12 点赞 ·
5 评论 ·
39 收藏

八. Redo log和bin log的写入机制

只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。我们接下来来看看MySQL写入binlog和redo log的流程。 binlog的写入机制 binlog的写入逻辑比较简单:事务执行过程中,先把日志写到binlog cache,这个操作会调用write方法,并没有把数据持久化到磁盘,速度比较快;事务提交的时候,再把binlog cache写到binlog文件中,这步会调用fsync将数据持久化到磁盘,速度比较慢。 write和fsync的时机,是由参数sync
原创
博文更新于 2021.10.23 ·
735 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

六. “order by”是怎么工作的

假设需要查询所在城市是“杭州的所有人名字,并且按照姓名排序返回前1000个人的姓名,年龄。 表的定义是这样的: CREATE TABLE `t` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL, `age` int(11) NOT NULL, `addr` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`), KEY `cit
原创
博文更新于 2021.10.23 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

五. 普通索引和唯一索引

这篇文章我们来对比普通索引和唯一索引在性能上的差别。 查询过程 假设执行的语句是select name from User where id_card = '123456';,这个查询语句在索引树上的查找的过程,先是通过B+树从树根开始,按层搜索到叶子节点。 对于普通索引来说,找到id_card = '123456'的记录后,需要查找下一个记录,直到碰到第一个不满足id_card = '123456'的记录。 对于唯一索引来说,找到第一个满足条件id_card = '123456'的记录后,就会直接返回。
原创
博文更新于 2021.10.23 ·
303 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

四. 全局锁,表锁和行锁

数据库锁设计的初衷是解决并发问题。作为多用户共享的资源,在出现并发访问的时候,数据库需要合理地控制资源的访问规则。根据加锁的范围,MySQL里面的锁大致可以分成全局锁,表级锁和行锁。 全局锁 全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock。当你需要让整个库处于只读状态时,可以使用这个命令,之后其他线程的数据更新语句,数据定义语句(修改表结构),和更新类事务的提交语句都会被阻塞。 全局锁的典型使用场景是,做全库逻辑备份,也就是
原创
博文更新于 2021.10.23 ·
346 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

三.MySQL索引

数据库的索引事为了提高数据查询效率。 索引的常见模型 索引比较常见的模型有:哈希表,有序数组和搜索树。 哈希表 哈希表是一种以k-v存储数据的结构,我们只要输入待查找的key,就可以找到对应的value。哈希表的实现很简单,用哈希函数把key换算成一个地址,然后把value放在这个地址。如果不同的key经过哈希函数计算后得到一个相同的地址,往后拉一个链表即可。 哈希表适用于等值查询的场景,比如Memcached和一些NoSQL。哈希表不适用于区间查询的场景,因为哈希表不是有序的,区间查询时要全部扫描一遍,非
原创
博文更新于 2021.10.23 ·
229 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

二.事务.

事务就是保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。MySQL是一个多引擎的系统,并不是所有的引擎都支持事务。 事务具有ACID属性(Atomicity,Consistency,Isolation,Durability;原子性,一致性,隔离性,持久性)。 当数据库上有多个事务同时执行的时候,就可能出现脏读,不可重复读,幻读的问题。为了解决这些问题,就有了隔离级别的概念。事务隔离级别包括读未提交(read uncommited),读提交(read commited
原创
博文更新于 2021.10.23 ·
319 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

一. MySQL基础架构:一条SQL查询语句是如何执行的

基础架构:一条SQL查询语句是如何执行的 MySQL可以分为Server层和存储引擎层两部分。 Server层包括连接器,查询缓存,分析器,优化器,执行器等。涵盖了MySQL的大多数核心服务功能,以及所有的内置函数(如日期,时间,数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。 存储引擎层负责数据的存储和提取,其架构模式是插件式的,支持InnoDB,MyISAM,Memoory等多个存储引擎。现在最常用的存储 引擎时InnoDB,它从MySQL5.5起开始成为了默认存
原创
博文更新于 2021.10.23 ·
257 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

SSH远程执行任务

SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进行一个小小的总结。 远程执行命令 如果我们要查看一下某台主机的磁盘使用情况,是不是必须要登录到目标主机上才能执行 df 命令呢?当然不是的,我们可以使用 ssh 命令在远程的主机上执行 df 命令,然后直接把结果显示出来。整个过程就像是在本地执行了一条命令一样: $ ssh nick@xxx.xxx.xxx.x
转载
博文更新于 2021.10.23 ·
422 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

An example of how to use getopts in bash

#!/bin/bash usage() { echo "Usage: $0 [-s <45|90>] [-p <string>]" 1>&2; exit 1; } while getopts ":s:p:" o; do case "${o}" in s) s=${OPTARG} ((s == 45 || s == 90)) || usage ;; p)
转载
博文更新于 2021.10.23 ·
128 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多