自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【计算机网络六】HTTPS协议原理

⽤于校验证书是否被篡改. 服务器持有私钥(私钥在形成CSR⽂件与申请证书时获得), 客⼾端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器在客⼾端请求是,返回携带签名的证书. 客⼾端通过这个公钥进⾏证书验证, 保证证书的合法性,进⼀步保证证书中携带的服务端公钥权威性。服务器把证书传输给浏览器,浏览器从证书里可以获取公钥,采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密,特征:加密和解密所⽤的密钥是相同的。

2024-12-15 19:33:43 1186 3

原创 【计算机网络五】HTTP协议!网站运行的奥秘!

前面我已经分享过TCP/IP协议的运行机制,主要是通过IP+Port(地址+端口号)来解决数据在客户端和服务器之间传输路径选择的问题,当我们把数据从A点传输到B点,还需要保证A,B双方都能对数据准确解读,以保证双方对数据的正常使用,这时我们就需要应用层协议了,这也是HTTP协议主要做的事。所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些其他的资源, 比如图片, 视频, 音频等二进制的数据。Header: 请求的属性, 冒号分割的键值对;

2024-11-11 12:31:07 1018 1

原创 【计算机网络四】TCP协议的奥秘!图文详解TCP数据传输核心机制

TCP原理复杂的原因一是因为要保证消息可靠,而是要尽可能的提高数据的传输效率。TCP保证可靠性的机制:校验和序列号(按序到达)确认应答超时重发连接管理流量控制拥塞控制用来提高性能的机制:滑动窗口快速重传延迟应答捎带应答基于TCP的应用层协议:HTTP,HTTPS,SSH,Telnet,FTP,SMTP等。

2024-10-30 19:57:11 1268 2

原创 【计算机网络三】一篇文章详解TCP/IP四层协议簇

IP地址描述的是。

2024-10-28 12:08:05 1701 1

原创 【Java网络编程】从套接字(Socket)概念到UDP与TCP套接字编程

Socket套接字,是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。使用传输层TCP协议,基于字节流进行传输,IO流,流式数据的特征就是在IO流没有关闭的情100个字节,必须一100个字节,而不能分100次,每次接收1个字节。原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。

2024-10-26 15:18:00 1218 1

原创 【计算机网络一】网络学习前置知识

本篇文章旨在分享一些计算机网络中的常见概念,对于初学者或者准备学习计算机网络的人会有帮助。

2024-10-25 16:56:59 1843 7

原创 Java并发编程实战指南:JUC核心类、线程池、线程安全集合与死锁破解

本篇文章主要向大家介绍一下Java并发编程中有关JUC核心类,线程池,线程安全的集合以及死锁的相关概念和解析。

2024-10-23 22:25:18 818 10

原创 Java并发编程深度解析:掌握CAS、Synchronized与Callable的高效并发之道

本篇文章主要带大家深入了解Java并发编程,了解CAS,Synchronized原理以及Callable接口的概念及使用。

2024-10-22 21:00:31 1012 6

原创 并发编程的奥秘:探索锁机制的多样性与应用

任何设计锁的场所,都设计锁策略,本篇文章主要揭秘实现一个锁需要知道的特性。

2024-10-17 17:18:29 703 4

原创 【Java并发编程三】多线程案例(手撕单例模式,阻塞队列,定时器,线程池)

定时器也是软件开发中的一个重要组件. 类似于一个 "闹钟". 达到一个设定的时间之后, 就执行某个指定好的代码。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取.上述代码还可以进行改进,加锁和解锁是一件开销比较高的事情. 而懒汉模式的线程不安全只是发生在首次创建实例的时候.因此后续使用的时候, 不必再进行加锁了.懒汉模式在类加载的时候不创建实例,第一次使用的时候才创建实例。

2024-10-16 21:36:54 1460 1

原创 服务端技术架构演进之路

吞吐考察单位时间段内,系统可以成功处理的请求的数量。因为随着硬件性能的提高,它的价格是非线性的,意味着提升两倍性能的硬件可能花费超过四倍的价格,考虑成本,我们选择第二种水平扩展的方案,此时我们又遇到了用户流量该向哪台应用服务器分发的问题。随着我们把用户请求分发到不同的应用服务器之后,可以承载更多的用户访问了,但随着用户请求的增多,每个用户进行操作都需要从数据库读写数据,此时数据库就成了整个系统的性能瓶颈,并且我们的数据库不能像应用服务器一样通过负载均衡的方式进行扩展,这样会影响数据一致性。

2024-10-15 11:24:29 1119 1

原创 【Java并发编程二】解决多线程安全问题的方法

我们使用多线程就好比一群滑稽老铁坐在同一张桌子前吃鸡,此时1号滑稽和2号滑稽同时看上了同一只鸡,1号滑稽碰到了鸡翅,2号滑稽碰到了鸡腿, 结果整只鸡被1号滑稽抢走了,此时二号滑稽就会非常生气(出现异常),可能会直接掀桌子(使整个进程被终止)。正常来说,按照锁的特性这个时候会出现死锁的情况,因为只有这个线程结束才能释放锁,而第二次加锁会使线程一直堵塞,无法结束,第二个锁无法得到锁对象永远无法解锁,陷入死循环。一个是用于线程之间的通信的,一个是让线程阻塞一段时间,唯一的相同点就是都可以让线程放弃执行一段时间。

2024-10-13 18:15:38 800 11

原创 【Redis十二】Redis的典型应用(缓存和分布式锁)

缓存 (cache) 是计算机中的⼀个经典的概念. 在很多场景中都会涉及到。核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅, ⽅便随时读取。对于计算机硬件来说, 往往访问速度越快的设备, 成本越⾼, 存储空间越⼩.缓存是更快, 但是空间上往往是不⾜的. 因此⼤部分的时候, 缓存只放⼀些 热点数据 (访问频繁的数据),就⾮常有⽤了。

2024-10-11 21:15:17 3592 14

原创 【Redis入门到精通十一】Redis集群

每个节点, 每秒钟, 都会给⼀些随机的节点发起 ping 包, 而不是全发⼀遍. 这样设定是为了避免在节点很多的时候, ⼼跳包也⾮常多(⽐如有 9 个节点, 如果全发, 就是 9 * 8 有 72 组⼼跳了, 而且这是按照 N^2 这样的级别增⻓的).规则很简单, 就是从 H所在位置, 顺时针往下找, 找到的第⼀个分⽚, 即为该 key 所从属的分片.缺点: ⼀旦需要进行扩容, N 改变了, 原有的映射规则被破坏, 就需要让节点之间的数据相互传输, 重新排列, 以满足新的映射规则。

2024-10-10 21:40:01 842 2

原创 【算法篇】三道题理解什么是递归,回溯和剪枝

想必大家再学习算法知识的路上经常听到回溯,剪枝类似的概念,对于初学者来说,很容易把他们理解成一种新的算法思想,其实回溯和剪枝只是在递归的基础上稍加修改,对于解决某些特定问题非常有帮助,我从力扣上选了三道题,我会粘贴题目链接,并对每道题进行详细的原理分析,希望大家能坚持看完,绝对能有收获,大家有更好的思路也欢迎大家在评论区交流啊!文章顺序:题目链接=》算法原理=》代码呈现思想总结:回溯:从⼀个初始状态开始,按照⼀定的规则向前搜索,当搜索到某个状态⽆法前进时,回退到前⼀个状态,再按照其他的规则搜索。

2024-10-09 21:07:21 1170 3

原创 【Redis入门到精通十】Redis哨兵

Redis Sentinel 是 Redis 的高可用实现方案,在实际的⽣产环境中,对提高整个系统的⾼可⽤是⾮常有帮助的,本篇文章⾸先整体梳理主从复制模式下故障处理可能产生的问题,⽽后引出高可用的概念,最后重点分析 Redis Sentinel 的基本架构、优势,以及是如何实现⾼可⽤的。法定票数即哨兵之间通过通信,当足够票数的哨兵都一致认为主节点瘫痪时,哨兵才会开始工作,选举新的主节点,避免哨兵因为网络波动而出现误判的情况。二.从节点可以分担主节点的读压力,实现读写分离。

2024-10-09 19:54:34 1150 6

原创 基于unbantu操作系统下的docker安装全教程

docker是目前开发市场中的一个非常流行的组件,他可以通过资源隔离和空间隔离的手段构建容器,每个容器内部都存在一套精简版的操作系统,我们可以把程序部署在容器内,这样就避免了程序上线时因为环境问题而造成的一系列繁琐步骤。docker-compose可以方便的对构建好的数个容器进行编排和运行。

2024-10-08 19:50:43 819 3

原创 【Redis入门到精通九】Redis中的主从复制

主从复制解决的问题:单点问题即单个 redis 节点, 可⽤性不⾼.单个 redis 节点, 性能有限.主从复制的特点:Redis 通过复制功能实现主节点的多个副本。主节点⽤来写, 从节点⽤来读. 这样做可以降低主节点的访问压⼒。复制⽀持多种拓扑结构,可以在适当的场景选择合适的拓扑结构。复制分为全量复制, 部分复制和实时复制。主从节点之间通过心跳机制保证主从节点通信正常和数据⼀致性。主从复制配置的过程:主节点配置不需要改动。从节点在配置⽂件中加⼊slaveof主节点ip。

2024-10-03 11:20:44 1039 7

原创 【Redis入门到精通八】Redis事务与MySQL事务对比

事务的概念其实就是把一系列操作绑定成一组,让这一组操作能够批量执行,不过在MySQL中有复杂的机制能够保证这一组操作执行并且一定能成功执行,否则就一条也执行不了,但是Redis中的事务就没有这么靠谱,它只负责把操作绑在一起,如果其中有执行失败的操作,事务无法自动回滚。Redis 事务本质上是在服务器上搞了⼀个 "事务队列". 每次客⼾端在事务中进⾏⼀个操作, 都会把命令先发给服务器, 放到 "事务队列" 中(但是并不会立即执行),而是会在真正收到 EXEC 命令之后, 才真正执行队列中的所有操作.

2024-09-27 17:28:44 852 4

原创 【Redis入门到精通七】详解Redis持久化机制(AOF,RDB)

众所周知,Redis的快主要依赖于它的数据是存储在内存当中的,数据存储和提取避免了读写硬盘这一非常耗时的操作,但是如果在运行过程中发生了进程中断,内存中的数据就会丢失,为了解决数据丢失的问题,Redis提供了RDB和AOF两种持久化机制,当Redis重启时可以利用之前持久化的文件实现数据恢复。AOF文件内因为写入的是吗命令的文本文件,随着不断的写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。校验:如果 Redis 启动时加载到损坏的 RDB ⽂件会拒绝启动。

2024-09-26 22:47:20 1130 1

原创 【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)

下⽅的 lettuce 系列配置,⽬的是为了⾃动刷新集群的拓扑结构。Spring社区也自定义了一套Redis的客户端,与jedis的操作方式有所差异,Spring中把每个类型的操作都单独封装了起来。1.第一步创建Spring Boot项目,在创建项目时勾选NoSQL中的Spring Data Redis,然后等待项目加载。3.第三步引入StringRedisTemplate实例,便可以通过redisTemplate进行Redis的相关操作了。

2024-09-24 18:19:03 4809 2

原创 【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

之所以客户端和服务器之间能够使用网络通信,是因为开发客户端的人和开发服务器的人都知道协议的细节,能够很好的实现对通信内容的包装和解析。Redis自定义的应用层协议叫做RESP,可以在Redis官方文档查询到,正是因为Redis把自定义的应用层协议公开了出来,我们才能实现自定义的实现与服务器通信的Redis客户端。

2024-09-24 17:12:08 886

原创 【Redis入门到精通四】Redis核心数据类型(Sorted set,Stream,Bitmap,Bitfield,Geospatial,Hyperloglog)

操作Sorted Set类型的常用命令有:zadd,zcard,zscore,zrank,zrevrank,zrem,zincrby,zrange,zrevrange,zrangebyscore,zrevrangebyscore,zcount,zremrangebyrank,zremrangebyscore,zinterstore,zunionstore。求出给定有序集合中元素的并集并保存进⽬标有序集合中,在合并过程中以元素为单位进⾏合并,元素对应的分数按照不同的聚合⽅式和权重得到新的分数。

2024-09-23 15:07:03 666 1

原创 【Redis入门到精通三】Redis核心数据类型(List,Set)详解

操作Set类型的常用命令有:sadd,smembers,sismember,scard,spop,smove,srem,sinter,sinterstore,sunion,sunionstore,sdiff,sdiffstore。操作List类型的常用命令有:lpush,lpushx,rpush,rpushx,lrange,lpop,rpop,lindex,linsert,llen,blpop,brpop。(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。

2024-09-20 22:19:39 1140 4

原创 【Redis入门到精通二】Redis核心数据类型(String,Hash)详解

Redis操作字符串类型常见的有以下命令set,get,mget,mset,setnx,setxx,incr,incrby,decr,decrby,incrbyfloat,append,getrange,setrange,strlen。下面将按顺序依次介绍用法。hash类型的常见命令有hset,hget,hexists,hdel,hkeys,hvals,hgetall,hmget,hlen,hsetnx,hincrby,hincrbyfloat,hstrlen。数字,可以是整型或者浮点型;

2024-09-20 21:00:12 1495

原创 【Redis入门到精通一】什么是Redis?

不仅如此,Redis 还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的时候,内存中的数据不会“丢失”。从 Redis 的官⽅公司统计来看,有很多重量级的公司都在使⽤Redis,如国外的 Twitter,Instagram、Stack Overflow、Github 等,国内就更多了,如果单单从体量来统计,新浪微博可以说是全球最⼤的 Redis 使⽤者,除了新浪微博,还有像阿⾥巴巴、腾讯、搜狐、优酷⼟⾖、美团、⼩⽶、唯品会等公司都是 Redis 的使⽤者。

2024-09-09 11:54:14 1010 4

原创 【Java并发编程一】八千字详解多线程

我们把一段代码想象成一个房间,每个线程就是要进入这个房间的人。如果没有任何机制保证,A进入房间之后,还没有出来;B是不是也可以进入房间,打断A在房间里的隐私。这个就是不具备原子性的。那我们应该如何解决这个问题呢?是不是只要给房间加一把锁,A进去就把门锁上,其他人是不是就进不来了。这样就保证了这段代码的原子性了。有时也把这个现象叫做同步互斥,表示操作是互相排斥的。

2024-09-08 11:06:44 1029 2

原创 大二暑假去龙旗科技(上海)做了两个月软件测试实习生,讲讲我的经历和感受

新的学期开始了兄弟们,我也已经断更几个月了,这几个月我并没有摆烂,我选择了备考蓝桥杯,复习期末,暑假出去实习。结果是蓝桥杯拿到了Java B组国赛三等奖,拿到了龙旗科技的测试实习offer,这几个月也算是非常充实,现在新学期开始了,我选择了从龙旗辞职深造,还是想要找一份开发的实习,这篇文章我会把我在实习期间学到的内容和感受分享出来,希望对大家有帮助。

2024-09-03 21:10:36 2453 6

原创 软件测试工程师从入门到进阶一(概念篇)

需求即满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。大多数公司在进行软件开发的时候会把用户需求转化为软件需求,开发人员和测试人员工作的直接依据就是软件需求。需求是测试人员开展软件测试工作的依据。过程如下,业务需求—>软件功能需求点—>测试需求点—>测试用例。

2024-07-12 09:29:23 1100 1

原创 【算法篇】三道题理解算法思想——认识BFS

宽度优先遍历和深度优先遍历组成了大家熟悉的搜索算法,这两种算法也是蓝桥杯之类竞赛题的常考思想,正巧马上蓝桥杯临近,博主也是刷了很多BFS相关的题型,在这篇文章中会从力扣上选取三道简单的宽搜题型,带大家了解BFS的模板以及对他有个初步认识。本篇文章题目较为简单,大家可以根据第一题的模板,自己先去力扣上做题然后回来看题解,稍后我们继续更新难度更高的宽搜题目,希望大家能给个关注👍。文章顺序:题目链接-》算法思路-》代码呈现。

2024-04-07 21:44:25 733 3

原创 【算法题】三道题理解算法思想——二分查找算法

题目链接算法思路⽤的还是⼆分思想,就是根据数据的性质,在某种判断条件下将区间⼀分为⼆,然后舍去其中⼀个区间,然后再另⼀个区间内查找;为⽅便叙述,⽤x表⽰该元素,resLeft表⽰左边界,resRight表⽰右边界。寻找左边界思路:1.寻找左边界:。我们注意到以左边界划分的两个区间的特点:▪左边区间都是⼩于x的;▪右边区间(包括左边界)都是⼤于等于x的;2.因此,关于mid的落点,我们可以分为下⾯两种情况:。当我们的mid落在。

2024-03-30 21:00:00 2736 10

原创 【计算机工作原理】带大家科普计算机是如何工作的。

这个专题中并不会出现非常抽象的cpu核心概念,而是以一种科普的方式带大家了解计算机是如何工作的,我的主要目的就是希望大家在进行编程时能理解计算机是如何将逻辑代码进行实现的,帮助大家打破计算机的神秘感。通信方式有:管道,共享内存,文件,网络,信号量,信号等。有人曾经这么评价CPU,它是迄今人类历史上科技巅峰的存在,除了需要复杂的技术之外,更需要精良的制作工艺,综合考虑制造顶尖性能的CPU难度堪比造核弹。其中门电路是由与门,或门,非门,异或门组成的,CPU的构成非常抽象和复杂,上面只是帮助大家了解,并不严谨。

2024-03-30 15:33:08 2635 11

原创 【算法题】三道题理解算法思想--滑动窗口篇

本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法题,我从力扣上筛选了三道题,难度由浅到深,会附上题目链接以及算法原理和解题代码,希望大家能坚持看完,绝对能有收获,大家有更好的思路也欢迎大家在评论区交流啊!欢迎大家交流!!!欢迎大家交流!!!欢迎大家交流!!!文章顺序:题目链接-》算法原理-》代码呈现思想总结:滑动窗口可以理解为是快慢双指针的一个分支,也是利用双指针一个在前一个在后,通过判断条件使两个指针形成一个大小不断变化的窗口,不断向前移动。

2024-03-28 22:25:06 788 5

原创 哈希冲突解决的几种方式

对于开放定址法,在我们设计的哈希表中我们需要严格监控负载因子的大小,应该严格限制在0.7-0.8以下,比如Java的系统库限制了负载因子的大小严格为0.75,当负载因子过高时我们可以通过增大哈希表的数组大小来调整负载因子。我们将降低冲突率的方式大概分为两大类,一类是通过前期合理的设计,尽可能的避免哈希冲突的发生,一类是在哈希冲突发生后想办法去存储原来的数值减少哈希冲突带来的危害。我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数。,先通过哈希函数计算哈希地址,下标为。

2024-03-26 15:10:53 1132 16

原创 【算法篇】逐步理解动态规划1(斐波那契数列模型)

学过算法的应该知道,动态规划一直都是一个非常难的模块,无论是状态转移方程的定义还是dp表的填表,都非常难找到思路。在这个算法的支线专题中我会结合很多力扣题型,由简单到复杂,带大家深度剖析动态规划类的题型,欢迎大家关注啊。顺序:题目链接-》算法思路-》代码呈现。

2024-03-24 20:46:01 1495 14

原创 【数据结构】Java中Map和Set详解(含二叉搜索树和哈希表)

在Java中Map和Set最常见到下面四个实现类,HashMap/TreeMap/HashSet/TreeSet,他们分别与两种数据结构相关,二叉搜索树和哈希表,下面的文章中我会详解这两种数据结构,以及Java是怎样对这两种数据结构进行实现的。

2024-03-24 20:06:00 1280 4

原创 【JDBC编程】Java连接MySQL的五个步骤

这里可以看到Java使用数据库的代码非常多,而且每次连接都需要重复这个过程,于是就有大佬写了数据库框架Mybatis,把上面的代码都封装了起来,用的时候只需要一条注解就可以了。里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以复用的,每次使用完数据库连接,释放资源调用connection.close()连接,是无法重复利用的,每次使用完以后释放资源。方法提供了对这些行中数据的访问。

2024-03-22 17:34:24 1356 22

原创 【算法题】从0培养算法思想——双指针篇

在这个专栏里我会收集一些很经典的算法题,并分享算法原理和题解,这里面每一道题或者带给了我新的思路,或者是代码简洁高效,或者题目在面试中出现的频率很高。我想把它们记录下来,大家有更好的思路也欢迎大家在评论区交流啊!欢迎大家交流!!!欢迎大家交流!!!欢迎大家交流!!!

2024-03-22 16:26:34 892 2

原创 【MySQL数据库】数据类型和简单的增删改查

平时我们使用的操作系统都把数据存储在文件中,但是文件存储数据有以下几个缺点:1.文件的安全性问题,2.文件不利于数据查询和管理,3.文件不利于存储海量数据,4.文件在程序中控制不方便。增删改查即CRUD,新增数据,查询数据,修改数据,删除数据。数据库的增删改查操作将会是我们在今后操作中遇到的最频繁的工作内容,也是最基础最核心的业务,所以我们必须熟练掌握数据库的增删改查相关代码。现在比较知名的关系型数据库有甲骨文的Oracle,MySQL,微软的SQL Server等。这是当前我电脑已经存在的数据库。

2024-03-22 15:10:47 2487 1

原创 【算法篇】七大基于比较的排序算法精讲

根据排序算法是否基于排序,可以将算法分为两种,而在基于排序的算法中最常见的算法有七种,分别是:直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序。快速排序是在二叉树的前序遍历的基础上改进的一个算法,取基准值时要尽量保证左右两个区间的大小相等,这样的时间复杂度最低,在构建代码的时候我们尽量依据这一点来优化代码。:假设在待排序的序列中,有多个相同的关键字,经过排序后,这些关键字的先后顺序不发生改变,我们称这种排序算法是稳定的,否则是不稳定的。

2024-03-16 15:26:42 1678 17

空空如也

空空如也

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

TA关注的人

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