JAVA
文章平均质量分 92
奔跑的码农_
这个作者很懒,什么都没留下…
展开
-
设计模式-责任链模式
设计模式-责任链模式原创 2022-12-24 17:44:32 · 1317 阅读 · 1 评论 -
设计模式-组合模式(决策树)
设计模式-组合模式原创 2022-11-26 18:04:32 · 5587 阅读 · 0 评论 -
并发编程基础知识笔记(一)
一、线程 说到线程大家肯定不陌生,线程是进程中的一个实体,线程本身不会独立存在,进程是代码在数据集合上的一次运行活动,是系统运行资源分配和调度的基本单位,线程是一个执行路径,一个进程至少有一个线程,进程中多个线程共享进程的资源。 操作系统在分配资源时是把资源分配给进程的,但是cpu资源比较特殊,他说分配到线程的,所以真正占用cpu资源运行的是线程,所以线程也是cpu分配的基本单位。 在java中我们期待main方法其实是启动了一个JVM的进程,而main.........原创 2021-11-14 23:13:59 · 202 阅读 · 0 评论 -
Redis中的HyperLogLog
一、啥是HyperLogLog 一、初始HyperLogLog Redis中的HyperLogLog是一种基于基数估算的算法,所谓基数估算就是在一批数据中不重复的元素个数有多少个。基数计数(cardinality counting),则是指计算一个集合的基数,意即count-discint。 基数计算的场景很广泛,例如计算网站的访问uv,计算网络流量网络包请求header中的源地址的distinct数来作为网络攻击的重要指标。想要实现基数计数最直接想到的...原创 2021-09-11 21:00:38 · 1514 阅读 · 0 评论 -
Java线程池 ThreadPoolExecutor(一)线程池的核心方法以及原理
一、概述在java中创建线程的方式肯定大家都知道,但是这样创建有什么问题呢?当然是有问题的要知道线程在创建时是极其耗费资源的,就比如你要乘坐公交汽车肯定是你也可以用别人也可以用的,不会是你用完或者别人用完就把车子送到废品回收站了,当然是回到公交车站,这个公交车站就好比线程池,公交车就好比一个个线程。不知道大家对这么描述是否理解,不理解也没关系下面有更详细的介绍。二、初识ThreadPool...原创 2019-06-01 22:09:01 · 22120 阅读 · 7 评论 -
大话设计模式(单例模式)
前言什么是单例模式?举个栗子,张三去找xxx修车铺找李四修车,那么每次找的肯定是李四了,但是如果有多个人去找李四去修车那么势必会出现忙不过来现象,李四就会找其他徒弟(重新创建一个新对象)去修车。那么怎样才可以让人们去排队去找李四修车,或者每次并行去修车找到的都是李四呢?那么就引入了今天的主角单例模式.第一种 饿汉式public class Singleton { //类初始化...原创 2019-03-03 18:11:54 · 240 阅读 · 0 评论 -
Spring循环依赖的三种方式
前言循环依赖顾名思义就是N个类循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,早晚就会出现内存溢出喽。下面我们说说Spring如何解决这种问题的。第一种:构造器参数循环依赖Spring容器会将每一个正在创建的Bean 标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池中。因此如果在创建Bean过...原创 2018-12-23 15:25:14 · 244 阅读 · 0 评论 -
redis的分布式锁
前言废话不多说,比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的。(Wiki 解释:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch 线程切换。)。这个时候就要使用到分布式锁来限制程序的...原创 2018-11-25 11:45:26 · 202 阅读 · 0 评论 -
深入理解volatile关键字的作用(三)
(三)Java的内存模型在前面谈到了一些关于内存模型以及并发编程中可能会出现的一些问题。下面我们来看一下Java内存模型,研究一下Java内存模型为我们提供了哪些保证以及在java中提供了哪些方法和机制来让我们在进行多线程编程时能够保证程序执行的正确性。 在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的...原创 2018-09-01 11:03:34 · 1856 阅读 · 1 评论 -
深入理解volatile关键字的作用(二)
(二)并发编程的三个概念在并发编程中一般我们要注意三个问题:原子性、可见性、有序性。1、原子性即一个操过程作被任不何因素打会断,过程要么全部执行或者要么全部不执行举个栗子 比如从张三向李四转1000元,那么必然包括2个操作:从张三账户减去1000元,往李四账户加上1000元。 试想一下,如果这2个操作不具备原子性,会造成什么样的后果。假如从张三账户去1000元之后,操作...原创 2018-08-19 12:31:57 · 3634 阅读 · 2 评论 -
深入理解volatile关键字的作用(一)
(一)计算机内存模型大家都知道在计算机执行程序的时候每条指令都是在cpu中执行的,那么执行指令的同时势必会有读取和写入的操作,那么这样就引申出了一个问题。那么在程序运行时数据的存储是在计算机中的主存中(物理内存)的而内存的读取和写入的速度与cpu的执行指令速度相比差距是很大的,这样就造成了与内存交互时程序执行效率大大降低,因此在cpu中就有了高速缓存。 也就说计算机cpu在执行指令时...原创 2018-08-19 11:16:28 · 32725 阅读 · 4 评论