Tyfrank
码龄5年
关注
提问 私信
  • 博客:98,687
    98,687
    总访问量
  • 48
    原创
  • 149,725
    排名
  • 34
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:记录学习过程,整理学习资料。博客内容大部分为参考多篇博客/文章/书籍/教程整理,仅供学习记录。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2019-11-17
博客简介:

Sun_study的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    719
    当月
    1
个人成就
  • 获得109次点赞
  • 内容获得25次评论
  • 获得417次收藏
  • 代码片获得1,078次分享
创作历程
  • 1篇
    2024年
  • 18篇
    2023年
  • 27篇
    2022年
  • 2篇
    2019年
成就勋章
TA的专栏
  • 工具及环境配置
    9篇
  • 数据库
    7篇
  • Java
    13篇
  • 计算机基础
    5篇
  • 网络安全
    3篇
  • 分布式系统
    2篇
  • Spring
    6篇
  • 人工智能
    1篇
  • 密码学
    2篇
兴趣领域 设置
  • Java
    java
  • 编程语言
    c语言golang
  • 开发工具
    vscode
  • 操作系统
    linuxwindows
  • 软件工程
    软件工程
  • 网络空间安全
    网络安全密码学计算机网络
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

174人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Redis哈希槽和一致性哈希

我们想提升系统的容量、性能和可靠性,就会将数据分散到多个节点来存储或备份,也就是集群部署。那么,一个存储数据应该到哪个或哪些节点上来获得,应该是确定的。如果通过简单的取模算法将数据请求分散到了不同的服务器节点上,会有一个很致命的问题,如果节点数量发生了变化,也就是在对系统做扩容或者缩容时,必须迁移改变了映射关系的数据,否则会出现查询不到数据的问题。
原创
发布博客 2024.04.28 ·
1162 阅读 ·
24 点赞 ·
0 评论 ·
12 收藏

【MAVEN】Maven配置过程及“‘mvn‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件”问题处理

网上有多种解决方案,但我试了都没成功,一个是检查自己下载、解压的文件有没有bin目录,另一个我把path那里写了Maven的绝对路径,问题得到解决。我windows环境下载的是第二行bin.zip,src.zip的文件解压后并没有bin目录。查看高级系统配置,找到环境变量,在系统变量加上。记录配置Maven过程及遇到的一点问题。按理就已经成功了,但有可能出现如下问题。在系统变量的path再添加一行。
原创
发布博客 2023.04.28 ·
1606 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

【MySQL】分库分表问题

比如数据库拆分后,订单和库存在两个库中,一个下单减库存的操作,就涉及跨库事务。分库分表以后,数据分散存储到不同的数据库和表中,如果查询指定数据列表,或者需要对数据列表进行排序时,就变得异常复杂,则需要在内存中进行处理,整体性能会比较差,一般来说,会限制这类型的操作。将原本存储于单个数据库上的数据拆分到多个数据库,把原来存储在单张数据表的数据拆分到多张数据表中,实现数据切分,从而提升数据库操作性能。数据库主键:实现简单,单调递增,具有一定的业务可读性,强依赖db、存在性能瓶颈,存在暴露业务信息的风险。
原创
发布博客 2023.04.05 ·
565 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

用Redis实现消息队列的四种思路

Redis设计实现消息队列。
原创
发布博客 2023.04.05 ·
1229 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

【Java多线程】Future类使用

Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果等操作。它代表是异步执行的结果,意思是当异步执行结束之后,返回的结果将会保存在Future中。当我们提交一个Callable任务后,我们会同时获得一个Future对象,然后,我们在主线程某个时刻调用Future对象的get()方法,就可以获得异步执行的结果。在调用get()时,如果异步任务已经完成,我们就直接获得结果。如果异步任务还没有完成,那么get()会阻塞,直到任务完成后才返回结果。
原创
发布博客 2023.04.01 ·
1455 阅读 ·
2 点赞 ·
0 评论 ·
7 收藏

【Java多线程】volatile与内存屏障详解

volatile读的内存语义:读一个volatile变量时,JMM会把线程对应的工作内存中共享变量数据设置为无效的,然后会从主内存中去读取共享变量最新的数据。禁止上面的volatile写和下面的volatile读/写或普通写操作重排序,前面所有的volatile写的操作,数据都已经刷新到主内存。volatile写:针对的是volatile的变量,在写的时候,是把volatile变量的值,从工作内存刷新到主内存。是一种屏障指令,它使得CPU或编译器对屏障指令的前和后所发出的内存操作,执行一个排序的约束。
原创
发布博客 2023.03.28 ·
1454 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

【Java多线程】线程池探究

线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。本文学习记录的线程池是JDK中提供的ThreadPoolExecutor类。
原创
发布博客 2023.03.21 ·
316 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【Java多线程】Synchronized和lock底层剖析

Compare and Swap,翻译成比较并交换。执行函数CAS(V,E,N),3个操作数,内存值V,旧的预期值E,要修改的新值N。当且仅当预期值E和内存值V相同时,将内存值V修改为N,否则什么都不做。AQS核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加入到队列中。
原创
发布博客 2023.03.20 ·
536 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【Java】面向对象三大基本特征

Java面向对象三大基本特征
原创
发布博客 2023.03.19 ·
409 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【Redis持久化】RDB快照和AOF日志

Redis默认是把所有的数据都存在内存中的。但是当服务器重启或程序异常崩溃时,Redis的数据就会全部丢失。因此出现了持久化的概念。持久化就是将存在内存中的数据同步到磁盘来保证持久化。Redis 的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file, AOF)。
原创
发布博客 2023.03.13 ·
395 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【JVM】垃圾回收器

串行回收器:Serial,Serial old;并行回收器:ParNew,Parallel scavenge,Parallel old;并发回收器:CMS、G1;新生代收集器:Serial,ParNew,Parallel scavenge;老年代收集器:Serial old,Parallel old, CMS;整堆收集器:G1;
原创
发布博客 2023.03.01 ·
918 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【数据库/MySQL】MySQL三大日志提要

主体主要参考自Javaguide对应章节Javaguide中的总结:MySQL InnoDB 引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。
原创
发布博客 2023.02.27 ·
326 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【消息队列】关于消息队列的一些面试问题

生产者投递消息的速率>消费者消费的速率,导致我们消息会堆积在我们 mq 服务器端中,没有及时的被消费者消费,所以就会产生消息堆积的问题。1.多线程方式实现异步可能会消耗到我们的 cpu 资源,可能会影响到我们业务线程执行会发生 cpu 竞争的问题;背景:mq服务器集群或者mq采用分区模型架构存放消息,每个分区对于一个消费者消费消息。消费者获取消息,如果消费消息失败, mq 服务器则会间隔的形式 实现重试策略;rabbitmq 消费者我们的消息消费如果成功,消息会被立即删除。A.提高消费者消费的速率;
原创
发布博客 2023.02.21 ·
131 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

CentOS搭建dns服务

BIND(Berkeley InternetName Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。此组织还维护一个很有名的软件DHCP。我们使用时安装软件名为bind,而进程名和用户名为named。修改dns服务器ip,ping www.test.com进行测试。,原文中内网实验成功,我在公网服务器实验失败。
原创
发布博客 2023.02.13 ·
392 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【数据结构|二叉树】二叉树的层序遍历

对多道二叉树层序遍历相关题目,主要是用了两种遍历方式,一种是递归方式,一种是使用队列。代码模板可以用于多道题的解答,在此用两道题目记录这两种思路。
原创
发布博客 2023.02.11 ·
103 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【Java基础/数据结构】栈(Stack)与队列(Queue、Deque)

Java堆栈、队列
原创
发布博客 2023.01.27 ·
312 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【Java基础】String & StringBuffer & StringBuilder

方法时,实际传递的是引用的一个拷贝。其实,每当把 String 对象作为方法的参数时,都会复制一份引用,而该引用所指向的对象其实一直待在单一的物理位置上,从未动过。Java 语言本身并不支持运算符重载,“+”和“+=”是专门为 String 类重载过的运算符,也是 Java 中仅有的两个重载过的运算符。的返回值,其实是最终结果的引用。是 Java SE5 引入的,在这之前用的是。值的方法,实际上都是创建了一个全新的。返回的引用已经指向了一个新的对象,而。的定义,传入其中的引用有了名字。
原创
发布博客 2023.01.23 ·
162 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【网络安全】ICMP隐蔽隧道通信与检测

在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败。那么可以尝试使用ICMP建立隧道,ICMP协议不需要端口的开放,因为其基于IP工作的,所以我们将其归结到网络层,ICMP消息最为常见的就是ping命令的回复,将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙**(通常防火墙是不会屏蔽ping数据包的)**
原创
发布博客 2023.01.17 ·
1575 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

【MySQL】事务与MVCC

在计算机术语中事务是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。数据库事务可以保证多个对数据库的操作(也就是 SQL 语句)构成一个逻辑上的整体。
原创
发布博客 2023.01.13 ·
182 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux配置应用自启动

配置环境时遇到常用服务需手动开启,十分麻烦,在此记录使用centOS配置服务自启动操作。以redis_exporter为例。开启服务,并设置开机自启。
原创
发布博客 2022.08.31 ·
281 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多