java
一、JVMJVM主要由三部分组成:类加载区、运行时数据区和执行引擎。 类加载区类加载区是JVM的“入口”。其负责找到并加载编译好的.class文件,并将这些二进制数据放到运行时数据区的方法内。 加载:通过类的全限定名、获取定义此类的二进制字节流。 链接:将加载到内存中的类的二进数据合并到JVM的运行状态中。流程:验证->准备->解析 初始化:执行类的构造器(clinit)方法,为静态变量赋予正确的初始值。 运行时数据区(JVM内存模型)JVM在执行Java程序时,为“安放”各种数据而划分的内存区域,它是JVM的核心,老生常谈的JVM调优,主要就是针对该区域。 堆:这是JVM管理中最大一块内存区域,也是所有线程共享的区域。它几乎存放了所有的对象实例,也是垃圾回收器管理的主要区域,因此也被称为“GC堆”。 方法区(元空间):这也是线程共的享区,它存储了每个类的构造信息,如运行时常量池*、字段和方法数据、构造函数、以及普通方法代码。Java8之后的方法区的实现被称为“元空间”。 虚拟机栈:这是线程私有的,它的生命周期与线程相同。每个方法被执行的时候,JVM都会同步创建...
rabbitMQ
RabbitMQ一、RabbitMQ基本架构 生产者 (Producer) 交换机 (Exchange) :直接交换机(direct),扇出交换机(fanout),主题交换机(topic),消息头交换机(headers) 消息队列 (Queue) 消费者 (Consumer) 路由键 (RoutingKey) :消息头的一个属性,用于标记消息的路由规则,决定了交换机的转发路径。最大长度255 字节。 信道 (Channel):多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的TCP连接上的虚拟连接。生产者通过和交换机建立信道来发送消息,消费者也需要通过和队列建立信道来获取消息。对于操作系统来说建立和销毁TCP连接都是比较昂贵的开销,引入了信道的概念,以复用一条TCP连接。也就说,一个TCP 被多个线程共享,每个线程对应一个信道,每个信道都有唯一的ID,保证了信道的私有性。 交换机的mandatory属性 为 true 时:如果交换机无法根据自身类型和路由键找到一个符合条件的队列,则会将该消息返回给生产者;为 false 时:如果交换机无法根据自身类型和路由键找到一个符...
红包生成(拼手气红包-二倍均值 普通红包-均分)
二倍均值法生成红包123456789101112@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Autowiredprivate RedissonClient redissonClient; // 用于分布式锁// Spring 容器销毁前执行@PreDestroypublic void shutdownRedisson() { if (redissonClient != null) { redissonClient.shutdown(); System.out.println("Redisson 客户端已优雅关闭"); }} 一、redis 初始化123456789101112131415161718192021222324252627282930313233343536373839404142434445464748/** * 初始化红包到Redis * @param packetId 红包I...
DNS(Dubbo + Nacos + Spring 不是域名解析那个喔)
Dubbo一. 服务发现 Dubbo 提供的是一种 Client-Based 的服务发现机制,依赖第三方注册中心组件来协调服务发现过程,支持常用的注册中心如 Nacos、Consul、Zookeeper 等。 生产者、消费者和注册中心模式。(类似于rocketmq) Dubbo3在性能、可伸缩性、易用性等方面的表现大幅领先于业界大多数主流开源产品。 Dubbo3 创建了一个平滑迁移方案。(例:消费者只订阅自己依赖的应用) 二、负载均衡负载均衡策略 算法 特性 备注 Weighted Random LoadBalance 加权随机 默认算法,默认权重相同 RoundRobin LoadBalance 加权轮询 借鉴于Nginx的平滑加权轮询算法,默认权重相同 LeastActive LoadBalance 最少活跃优先 + 加权随机 背后是能者多劳的思想 Shortest-Response LoadBalance 最短响应优先 + 加权随机 更加关注响应速度 ConsistentHash LoadBalance 一致性哈希 确定的入参,确定的提供者,适用...
bloom过滤器
bloom 过滤器所需校验的数据经过多个哈希函数散列映射过后在位图上的分布是否全为1,存在0(即不正确的数据,拒绝放行)全为1(即可能为正确的数据,放行)。 一、优点 支持海量数据场景下高效判断元素是否存在。 布隆过滤器存储空间小,并且节省空间,不存储数据本身,仅存储hash结果取模运算后的位标记。 不存储数据本身,比较适合某些保密场景。 二、缺点 不存储数据本身,所以只能添加但不可删除,因为删掉元素会导致误判率增加。 由于存在hash碰撞,匹配结果如果是“存在于过滤器中”,实际不一定存在。 当容量快满时,hash碰撞的概率变大,插入、查询的错误率也就随之增加了。 ps: 1.布隆过滤器中一个元素如果判断结果为存在的时候元素不一定存在,但是判断结果为不存在的时候则一定不存在。因此,布隆过滤器不适合那些对结果必须精准的应用场景。 2.误判率 p≈(1−e^(−kn/m))^k;其中n为已插入元素数,m为位数组长度,k为哈希函数数量。
商超短距离配送小程序设计思路
支付集成支付宝、微信支付,购物车统一付款功能。 商城配送1 配送人员 配送为专送,小团队专送 配送费 五公里以内1公里1元,5公里至15公里 1公里1.3元 商户管理端
Linux系统使用手册
软件安装python 安装12345678910111213141516171819202122cd /down // 进入下载目录sudo wget https://www.python.org/ftp/python/3.11.13/Python-3.11.13.tgz //下载python环境安装包sudo tar xzf Python-3.11.13.tgz //压缩包解压cd Python-3.11.13 //进入解压后的文件夹./configure --enable-optimizations --enable-shared \ //--enable-optimizations: 启用优化 --enable-shared: 构建共享库--prefix=/usr/local/python3.11.13 \ //--prefix: 指定安装目录--with-ensurepip=install //--wi...
9.17君子签设计
接口个人CA证书申请资料上传 先上传资料到平台,在用户实名信息表添加该用户信息(存在该用户信息则更新) 后台根据获取到的信息查询用户实名表,拿着对应信息去请求君子签API 个人CA证书申请结果查询 后台根据获取到的信息请求君子签API,获得返回结果,并根据结果更新用户实名信息表的用户状态 君子签协议发起 后端根据用户信息和作品信息查询是否符合合同发起,符合则由卖方发起合同 合同成功发起后,对君子签API接口返回的合同单号和参与合同签署的用户信息进行保存 卖方会在签约列表里显示该合同的信息,买方在点开作品后可以前往签约 卖方和买方分别签署完合同后,允许买方进行下载 君子签协议签约链接获取 根据君子签的合同编号和个人信息去获取君子签的签约链接 跳转到该签约链接后由用户查看合同并签约 查询签约状态 在仅传入合同号的情况下,查询合同是否签约完成 在传入合同号和签署方个人信息的情况下,查询该合同的签署方是否签约完成 君子签回调接口 有用户在君子签签署完成后调用该接口来对个人签署状态和合同状态进行更新 流程 作者作品在产销基地进行上传 管理员在管理端对作品进行审核后发布 作品上架...
java多线程
概述充分利用CPU多核特点,减少CPU的空闲时间,发挥它的运算能力,提高并发量。 1.1 进程进程是基本的资源分配单位,操作系统通过进程来管理计算机的资源,如CPU、内存、磁盘等每个进程都有唯一的进程标识符(PID),用于区分不同的进程。 1.2 线程线程是操作系统中的基本执行单位。一个进程可以包含多个线程,每个线程都可独立执行不同的任务,但他们共享进程的资源。CPU和线程之间是1:1的关系,但是Intel引入超线程技术后,产生了逻辑处理器的概念,使核心数与线程数形成1:2的关系。(逻辑处理器和线程之间1:1)同一时刻,一个CPU核心只能运行一个线程。 1.3 纤程(协程)多个纤程可以轮流使用同一个线程。 Java 19之后才支持虚拟线程(纤程)。 总结1.先有进程,然后进程创建线程,线程是依附于进程里的,线程里面包含多个协程。2.进程之间不共享全局变量,线程之间共享全局变量,线程之间要注意资源竞争问题。 并发 并行 串行并发(Concurrent)允许两个任务彼此⼲扰。同⼀时间点、只有⼀个任务运⾏,在一个时间段内任务交替执⾏。并⾏(Parallel)在时间上是重叠的,两个任务在...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment