笔记
文章平均质量分 91
陌上 烟雨齐
互关,有关必回
展开
-
初始Redis(入门篇)
Redis是⼀种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满⾜很多的应⽤场景,⽽且因为Redis会将所有数据都存放再内存中,所以它的读写性能⾮常惊⼈。原创 2023-11-30 15:58:06 · 406 阅读 · 4 评论 -
高并发分布式架构的演进之路
一个系统初期,我们需要利⽤我们精⼲的技术团队,快速将业务系统投⼊市场进⾏检验,并且可以迅速响 应变化要求。但好在前期⽤⼾访问量很少,没有对我们的性能、安全等提出很⾼的要求,⽽且系统架构简单,⽆需专业的运维团队,所以选择单机架构是合适的。单体架构就是我们的应用服务和数据库服务都是在一个主机上的.用户在浏览器地址栏中输入域名之后,通过DNS解析为ip地址,随后访问该IP地址上的应用服务.单体架构也是我们目前最常见的一种架构,因为系统架构简单,无需过多的维护人员.原创 2023-11-20 17:40:26 · 208 阅读 · 6 评论 -
一文带你走进软件测试的大门
在正式开始进行软件测试之前,我们需要进行前置知识的储备,这篇文章主要是软件测试的基础知识,为了以后正式测试打下坚实的基础.我们在理解bug的过程中需要注意一点,上面的理解并不适用于我们现在的体系结构.当程序没有实现与最终用户合理预期的功能要求时,就是软件错误(bug).程序与软件需求不匹配预期结果与执行结果不符合。原创 2023-09-15 11:51:35 · 217 阅读 · 2 评论 -
Redis(详细)
Redis是一个开源的内存数据存储系统,通常被称为缓存存储和键值存储,是一个高性能,轻量级数据库,支持丰富的数据类型和各种高级的功能而闻名.是最受欢迎的NoSQL数据库之一.因此被许多应用程序采用.原创 2023-09-10 20:21:15 · 1419 阅读 · 10 评论 -
HashTable和ConcurrentHashMap的区别
实际在1.8之前的时候,是采用分段锁的方式来实现加锁的,和上述情况相似,是采用好几个链表共用一把锁对象。hashtable的扩容是当达到一定的负载因子的时候,扩容就需要重新申请空间,然后把旧的空间上的元素全部挪动到新的空间中。给关键方法加上锁之后,虽然保证了在多线程环境下的使用不会出现线程安全问题,但是HashTable加锁的粒度太粗了。hashTable是针对整个哈希表进行加锁的,任何增删改查的操作都是触发加锁,也就可能有锁竞争。也就说只有是针对不同链表的进行操作,就不会出现锁竞争,也就不会阻塞等待。原创 2023-04-14 09:20:24 · 237 阅读 · 0 评论 -
synchronized原理和优化过程
如果某一个资源被多个线程共享,为了避免因为线程的抢占资源而出现线程不安全的因素,我们需要对线程进行同步,synchronized就是为了保证不会因为线程的抢占式执行而出现的bug。是并发编程中的一个重要的特性。那么接下来就看明白synchronized的底层原理。synchronized在Java并发编程中是非常重要的一个知识点。希望通过上述的描述,对synchronized有个整体的认识。如有不妥,还请多多包涵。原创 2023-04-13 16:53:31 · 746 阅读 · 0 评论 -
Java多线程之线程池
假如,我们去学校打印店里面去打印一个东西的时候,这时,打印店里面的人比较多,此时打印店老板给你说:同学,你是要在门口的自助打印机上自己打印,还是要等着让我给你打印,如果说我们是要自己在门口的自助打印机上自己打印,那么这个打印东西所消耗的时间完全是在我们可控的范围之内的,如果此时我们要是让老板给我们打印,那么打印完我们的东西需要多少时间就不是我们可以控制的了。我们从线程池中拿线程,就是纯用户态的操作,但是在系统中创建线程,就是用户态和内核态之间的切换,真正的创建内核态操作完成的。原创 2023-04-07 10:28:07 · 382 阅读 · 0 评论 -
二叉树的基础知识
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。双亲结点或者父节点:若一个结点含有子节点,则这个结点的就称为子节点的父节点,上述图中A就是BCD的父节点。1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( B)叶子结点或者终端结点:度为0的结点称为叶子结点,上述图中 H I J K L 都是叶子结点。结点的层次:从根节点开始,根为第一层,根的子结点为第二层,以此类推。原创 2023-04-01 13:19:44 · 451 阅读 · 0 评论 -
Java线程安全问题原因和解决方案
假如此时CPU又突然调度到了t1线程,由于t1线程上次执行到了save操作,所有此时t1线程就把寄存器中的值写回到内存上,现在内存上的值是1,如果此时又调度到t2线程,t2线程继续执行,add,save操作,执行完了之后,t2线程把寄存器中的值写回到内存上,此时就出现了bug。构成这个bug的原因就是因为此时多个线程试图去修改同一个变量,而这个修改的操作并不是原子的,可以拆分为多个CPU指令,而由于拆分为了多个CPU的指令,而线程的执行顺序是抢占式执行的,无序的。会让++操作变为不能分割的最小单位。原创 2023-03-29 12:23:17 · 605 阅读 · 1 评论