一、定义 布隆过滤器(Bloom Filter)是一种概率型数据结构,用于判断一个元素是否在一个集合中。它由 Burton Howard Bloom 在 1970 年提出。布隆过滤器的特点是空间效率高和查询速度快,但是有一定的误判率,并且一旦添加元素后无法删除。 二、布隆过滤器的工作原理 2.1 初始化 创建一个位数组(bit array),长度为 m,所有位都初始化为 0 2.2 插入元素 对于每一个要加入集合的元素,使用 k 个不同的哈希函数对该元素进行哈希,得到 k 个不同的索引位置。将这些位置上的位设置为 1 2.3 查询元素 当查询一个元素是否存在于集合中时,同样用上述 k 个哈希函数对元素进行哈希,检查所得的 k 个位置上的值是否全都是 1。如果全是 1,则认为该元素可能存在于集合中;如果有一个位置是 0,则可以确定该元素不存在于集合中 三、特点 优点 : 空间效率高:相比于其它数据结构如哈希表或二叉树,布隆过滤器占用的空间更小。 查询速度快:由于只需要计算几个哈希函数,所以查询速度非常快。 可以节省大量的存储资源,尤其是在处理大数据量的情况下。 缺点 : 存在误报(F.... 有更新! 布隆过滤器 程序人生
一、类生命周期 1.1 加载 通过类全限定名获取它的二进制字节流 从ZIP压缩包、JAR、EAR、WAR中获取 从网络中获取,例如Web Applet 运行时计算生成,如动态代理技术 从数据库读取 从加密文件中获取 将这个字节流所代表得静态存储结构转化为方法区得运行时数据结构 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据得访问入口 1.2 链接 1.2.1 验证 验证阶段确保加载的类的信息符合JVM规范,不会对JVM造成危害。这包括对字节码的结构、常量池中的索引、数据类型等进行检查。 文件格式验证 魔数是否是CAFEBABE 主次版本是否在虚拟机支持范围内 ...... 元数据验证 这个类是否有父类(除了java.lang.Object外,其他类都有父类) 父类是否继承了不允许被继承的类 ...... 字节码验证 确保类型转化是有效的,例如把父类对象赋值给子类数据类型就是无效的 ...... 符号引用验证 符号引用中的类、字段、方法的可访问性(private\protected\public\)是否可以被当前类访问 在指定类中是否.... 有更新! Java虚拟机--类加载器 程序人生
vi /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "https://docker.m.daocloud.io", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://noohub.ru" ] } systemctl daemon-reload systemctl restart docker 有更新! docker hub无法访问处理方法 程序人生
一、文件权限修改 修改宿主机docker.sock文件的所属用户和用户组 chown root:root /var/run/docker.sock 修改组主机docker.sock文件的操作权限 chmod o+rw /var/run/docker.sock 二、容器挂载的数据卷修改 这里以jenkins容器为实例,之前使用docker compose创建了jenkins容器,现在编辑它对应的docker-compose.yml文件 services: jenkins: image: 'jenkins/jenkins:latest' container_name: jenkins ports: - '8080:8080' - '50000:50000' volumes: - './data/:/var/jenkins_home/' - '/var/run/docker.sock:/var/run/docker.sock' - '/usr/bin/docker:/usr/bin/docker' - '/etc/docker/daemon.json:/etc/docker/daemon.... docker容器内部使用docker 程序人生
一、简介 1.1 CI和CD CI(Continuous Integration,持续集成)和CD(Continuous Delivery / Continuous Deployment,持续交付/持续部署)是现代软件开发流程中不可或缺的组成部分,它们是DevOps文化的重要实践,旨在加速软件开发周期,提高软件质量和部署效率。 1.1.1 CI - 持续集成 持续集成是一种软件开发实践,要求开发团队频繁地(每天或多次每天)将代码集成到共享的主干分支中。每次集成都会通过自动化构建(包括编译、打包和测试)来验证,以便尽早发现集成错误。CI的主要目标是: 早期发现问题 :通过自动化测试,可以迅速发现代码中的错误或冲突,减少后期修复成本。 提高代码质量 :强制执行编码标准和规范,确保代码的一致性和可维护性。 加快反馈循环 :使开发团队能够更快地得到关于代码变更的影响反馈,促进快速迭代。 1.1.2 CD - 持续交付/持续部署 持续交付和持续部署是紧密相关的概念,但它们有细微的区别: 1.1.3 持续交付(Continuous Delivery) 持续交付是一种实践,意味着代码库应该处于随时可.... 有更新! docker compose安装jenkins 程序人生