- 博客(49)
- 问答 (4)
- 收藏
- 关注
原创 Stream流式计算
- Stream 和 Collection 集合的区别:Collection 是一种静态的内存数据结构,而 Stream 是有关计算的。前者是主要面向内存,存储在内存中,后者主要是面向 CPU,通过 CPU 实现计算。- Stream 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。集合讲的是数据,Stream 讲的是计算
2023-03-07 16:18:55
164
原创 Java-线程池
线程池、连接池、内存池、对象池////…创建、销毁、十分浪费资源。程序的运行本质:占用系统的资源!池化技术:事先准备好一些资源,有人要用,就来我这里拿。线程池本质—ThreadPoolExecutor。线程池:三大方法、7大参数、4种拒绝策略。线程复用、可以控制最大并发数、管理线程。自定义线程池以及线程池的拒绝策略。线程线程池:三大方法。
2023-03-06 15:32:12
161
原创 BlockingQueue阻塞队列
在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素队列FIFO先进先出 一端写入一端取出写入如果队列满了就必须阻塞等待,如果队列是空的必须阻塞等待生产:BlockingQueue不接受null值,试图添加一个null元素时会抛出异常。
2023-03-03 14:06:20
439
原创 JVM运行时数据区
JVM是Java Virtual Machine(Java虚拟机)的缩写,是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制。可以将JVM理解为是一个运行字节码的平台。
2023-02-06 16:22:10
301
原创 Docker容器数据卷
卷的设计目的就是数据持久化,完全独立于容器的生命周期,因此Docker不会再容器删除时删除其挂载的数据卷。卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统。在容器目录中创建对应的文件,在主机对应的目录中可以找到容器中的文件,,即在容器中添加一个文件或者在文件中添加内容,这时在主机的目录下。宿主机与容器之间映射添加容器卷—直接目录添加。
2022-12-22 17:10:43
98
原创 Docker和传统的虚拟机对比
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上运行所学应用进程。缺点:资源占用多,步骤多、启动慢。- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。- 每个容器之间互相隔离,每个容器又自己的文件系统,容器之间进程不会互相影响,能区分计算机资源。
2022-12-19 13:43:41
247
原创 排序-交换排序
以交换位置的方式排序冒泡排序把第一个元素与第二个元素比较,如果第一个比第二个大,则交换他们的位置。接着继续比较第二个与第三个元素,如果第二个比第三个大,则交换他们的位置…我们对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样一趟比较交换下来之后,排在最右的元素就会是最大的数。除去最右的元素,我们对剩余的元素做同样的工作,如此重复下去,直到排序完成。快速排序从数列中取出一个值,将比这个值大的放在它的右边,将比这个值小的放在它的左边,再最左右两个区域重复这个过程,直到各个区域只有一个
2022-12-05 16:53:05
144
原创 NC1 大数加法
描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。数据范围:s.length,t.length≤100000,字符串仅由’0’~‘9’构成示例1思路大数相加,如果数据超过范围使用int类型相加会超界采用竖式加法来相加,在java中使用栈来计算,首先使用补0的方法来使数据的长度一致,然后从数据的最后一位开始相加,如果数据长度大于10则进一位。定义两个指针 i 和 j 分别指向 s 和 t 的末尾,即最低位,同时定义一个变量 carry维护当前是否有进位,然后从末尾到开头逐
2022-12-05 14:20:36
148
2
原创 链表内指定区间反转
将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。给出的链表为 1→2→3→4→5→NULL, m=2,n=4m=2,n=4,建议使用虚拟头节点的技巧,可以避免对头节点复杂的分类考虑,简化操作。要反转局部链表,可以将该局部部分当作完整链表进行反转。再将已经反转好的局部链表与其他节点建立连接,重构链表。返回 1→4→3→2→5→NULL.
2022-11-28 17:28:06
755
原创 SQL联合查询inner join、outer join和cross join的区别
SQL联合查询inner join、outer join和cross join的区别
2022-10-29 11:05:13
134
原创 Redis常见问题
当key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。试想一下,如果有人恶意对你的系统进行攻击,拿一个不存在的id 去查询数据,会产生大量的请求到数据库去查询。可能会导致你的数据库由于压力过大而宕掉。
2022-10-21 14:37:46
272
原创 JVM中的类加载器
双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当上一层类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到这个类)时,下一层类加载器才会尝试自己去加载;**初始化:**我们new一个类的对象,访问一个类的静态属性,修改一个类的静态属性,调用一个类的静态方法,用反射API对一个类进行调用,初始化当前类,其父类也会被初始化…
2022-10-03 21:01:31
89
原创 BM6 判断链表中是否有环
输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将组成的head头结点传入到函数里面。数据范围:链表长度 0 \le n \le 100000≤n≤10000,链表中任意节点的值满足 |val|
2022-09-28 20:34:40
72
原创 Redis主从复制
主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主**(读写分离)**从机(Slave)成功连接主机(master),会给主机发送一个syn命令master收到目录启动后台的存盘进程,同时收集所有接收到的修改数据集的命令,在后台进程执行完毕后,master将传送整个数据文件到从机中去,以完成一次数据同步。1.全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。(刚开始从机连接主机,主机一次给)
2022-09-24 15:44:10
887
原创 Redis持久化
官方推荐两个都启用。如果对数据不敏感,可以选单独用RDB。不建议单独用 AOF,因为可能会出现Bug。如果只是做纯内存缓存,可以都不用。
2022-09-23 16:59:00
227
原创 Redis事务和锁机制---秒杀案例
在redis存入商品数,设定秒杀时间,提供用户秒杀窗口,用户秒杀成功,redis中商品数-1,用户信息也存入redis中(为了相同用户只能秒杀一次)节省每次连接redis服务带来的消耗,把连接好的实例反复利用。通过jmeter来模拟多线程并发操作。
2022-09-23 16:02:10
182
原创 Redis事务
而redis的事务特性没有隔离,因为都是单独的隔离而不会被打断,而且也不保证原子性,错了等待不到消息不会进行回滚。主要的三个命令:multi、exec和discard。即使错误也会跳过当前语句继续执行,不会进行事务的回滚。输入multi的时候下一个会出现tx,代表是事务。串联多个命令防止别的命令插队。
2022-09-22 21:52:59
230
原创 非关系型数据库Redis
非关系型数据库,不依赖业务逻辑数据库存储,以简单key-value存储。因此大大的增加了数据库的扩展能力2.不遵循SQL标准3.不支持ACID。Redis 是一个开源的 key-value 存储系统
2022-09-22 09:14:50
226
原创 Java设计模式
Java设计模式分为三大类创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。结构型模式:把类或对象结合在一起形成一个更大的结构。行为型模式:类和对象如何交互,及划分责任和算法。
2022-09-13 19:26:47
165
原创 SpringBoot异步、定时、邮件任务
在我们的工作中,常常会用到异步处理任务,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。还有一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息...
2022-07-28 19:48:01
116
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人