自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 RAID详解

RAID 的全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个磁盘组合起来,组成磁盘阵列组,以提升性能。RAID 技术被发明的初衷,是让多块小容量的廉价磁盘替代大容量的昂贵磁盘,同时希望部分磁盘损坏时不会对数据的访问受损失,达到一定的数据保护。RAID 能够充分发挥多块磁盘的优势,增大容量的同时,提升访问速度,提供容错功能以确保数据安全性。

2024-11-04 10:15:40 326

原创 【算法题】数组中只出现一次的两个数字

要区分 0100 (4) 和 1100 (6), 我们只需要从二进制的低位到高位依次看, 找到第一位不同的, 在这里就是最高的那位, 记为 1000. 然后用 1000 分别和两个数做 &, 0100 & 1000 = 0000, 1100 & 1000 = 1000, 通过 & 的结果, 一个为0 ,另一个不为0 ,就可以区分开.我们已知, 两个相同的数字做异或的结果为 0, 如 1001(十进制为9) ⊕ 1001 = 0, 而不同数字异或: 1001 ⊕ 0101 = 1100.

2024-10-17 11:27:38 470 1

原创 python open 文件名过长报错No such file or directory

按理说python找不到就会创建这个文件:aaaa…aaaaa.json,但是报错:。

2024-07-18 15:01:00 495

原创 Java中Cookie的用法

但是,HTTPOnly的应用仍存在局限性,一些浏览器可以阻止客户端脚本对Cookie的读操作,但允许写操作;该方法也可用于Web站点的身份鉴别,即在HTTPS的连接建立阶段,浏览器会检查Web网站的。无效时,浏览器并不会立即终止用户的连接请求,而是显示安全风险信息,用户仍可以选择继续访问该站点。持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效。如果没有显式设置这个属性,那么默认的domain是创建cookie的页面的域名。设置Cookie的生存期。

2024-06-16 19:30:08 601

原创 联邦学习论文阅读:2018 Federated learning with non-IID data

这是一篇2018年挂在arXiv上的文章,是一篇针对FL中数据Non-IID的工作。作者发现,对于高度Non-IID的数据集,FedAvg的准确性下降了55%。作者提出了可以用权重散度(weight divergence)来解释这种性能下降,这个权重散度用各client上的数据类别分布与总体分布之间的EMD(earth mover’s distance)来量化。

2024-06-13 22:14:21 1215

原创 详解SCAFFOLD:解决联邦学习中的客户端漂移问题 Scaffold: Stochastic controlled averaging for federated learning

这是个作者提出的概念,下面给出对这个概念的解释:我们都知道模型的参数可以看成是参数空间的一个点,模型训练就是想要把这个点根据梯度慢慢移动到低的地方。但是在FL中,各模型的训练分散在各client中,每个client的参数都会根据模型在自己本地数据集上的训练情况往某个方向移动,显然在数据Non-IID时,这些client的参数的移动方向是不一致的(这就是client-drift),这就导致了在模型合并(合并的过程就是简单的平均)之后要么抵消,要么偏移,因此收敛到最低点的速度就慢了。

2024-06-11 17:00:00 2151

原创 详解FedProx:FedAvg的改进版 Federated optimization in heterogeneous networks

经典数据集为:MNIST、FEMNIST(Non-IID版的MNIST,由不同作者手写的0-9、A-Z、a-z的数据集)、Shakespeare(莎士比亚作品数据集,同FedAvg)、Sent140(Non-IID,一个文本数据集,内容为一条条推文,标签为positive/negative二分类)。但是,当client之间各自的数据是Non-IID时,每个client优化之后的局部模型就会跟全局模型相去甚远了,局部模型会偏离全局模型,这会减缓全局模型的收敛。那么在这里的 γ 如果越小,我们的解。

2024-06-10 21:03:54 1463

原创 联邦学习中的非独立同分布Non-IID

在联邦学习Federated Learning中,出现的很高频的一个词就是Non-IID,翻译过来就是非独立同分布,这是一个来自于概率论与数理统计中的概念,下面我来简单介绍一下在Federated Learning中IID和Non-IID的概念。

2024-06-09 15:25:13 2941

原创 详解FedAvg:联邦学习的开山之作

在FL中,server将全局模型下放给各client,client利用本地的数据去训练模型,并将训练后的权重上传到server,从而实现全局模型的更新。作者指出,相比于传统模式下训练模型时计算开销为主通信开销较小的情况,在FL中,通信开销才是大头,因此减少通信开销才是我们需要关注的,作者提出可以通过加大计算以减少训练模型所需的通信轮数。该结论是实现FL的重要支持,在每一轮通信时,server有必要发布全局模型,使各client采用相同的参数在本地数据集上进行训练,可以有效减少loss。

2024-06-08 16:46:15 9151 1

原创 Maven打包错误:无效的源发行版:17

在用maven进行打包时(clean & install),报如下错误:一开始让我很摸不着头脑,我确定我的pom.xml,还有IDEA中的Project Settings是正确的。

2024-06-01 22:03:49 1330

原创 URI、URL和URN的区别

URI(Uniform Resource Identifier)是,是用于标识资源的通用术语。URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。通过URI找到资源是通过对名称进行标识,这个名称在某命名空间中,并不代表网络地址。它包含URL和URN。

2024-05-31 22:25:17 665

原创 【从0开始搭建内网穿透】开源内网穿透神器-中微子代理

内网穿透,就是让处在外网的设备能够访问内网设备的服务。典型的应用场景就是人在外面访问家中的NAS、人在出差调试内网中的web服务、开Minecraft服务器等。:实验室项目有搭建内网穿透服务的需求(项目前端需要部署在云服务器上演示,后端部署实验室的服务器上)。:常用的内网穿透工具和服务包括FRP、ZeroTier、Wireguard等,关于这些方法b站、油管上都有大量手把手教程视频,就不多加赘述了。我这里选用的国内dromara开源组织开源的中微子代理(Neutrino-Proxy)。

2024-05-01 16:22:36 2327 2

原创 【深入理解Java IO流0x0A】NIO实战-网络聊天室

我们来通过 SocketChannel 和 ServerSocketChannel 实现一个 0.1 版的聊天室,先说一下需求,比较简单,服务端启动监听客户端请求,当客户端向服务器端发送信息后,服务器端接收到后把客户端消息回显给客户端,比较呆瓜,但可以先来看一下。本篇博客将进行NIO编程实战,实现一个简单聊天室。

2024-04-15 19:00:13 349

原创 【深入理解Java IO流0x09】解读Java NIO核心知识(下篇)

这篇文章我们主要介绍了 NIO 的核心知识点,包括 NIO 的核心组件和零拷贝。如果我们需要使用 NIO 构建网络程序的话,不建议直接使用原生 NIO,编程复杂且功能性太弱,推荐使用一些成熟的基于 NIO 的网络编程框架比如 Netty。Netty 在 NIO 的基础上进行了一些优化和扩展比如支持多种协议、支持 SSL/TLS 等等。

2024-04-12 10:41:38 890

原创 【深入理解Java IO流0x08】解读Java NIO核心知识(上篇)

在学习Java NIO之前,请大家首先对Java的各种IO模型有个初步的认识。。这里有一张图,对比一下传统IO(即BIO)和NIO的区别。传统 IO 采用阻塞式模型,对于每个连接,都需要创建一个独立的线程来处理读写操作。当一个线程在等待 I/O 操作时,无法执行其他任务。这会导致大量线程的创建和销毁,以及上下文切换,降低了系统性能。NIO 使用非阻塞模型,允许线程在等待 I/O 时执行其他任务。

2024-04-11 09:36:01 599

原创 【深入理解Java IO流0x07】搞懂Java中的三种IO模型的区别:BIO & NIO & AIO

NIO这一块是面试时比较喜欢问的问题,所以我们需要仔细学习。但是在直接讲NIO之前,需要大家对Java的IO模型首先有一个整体的认识,这样才方面后续我们深入探究NIO。我们接下来就开始吧!

2024-04-10 12:24:09 1522

原创 【深入理解Java IO流0x06】字节流与字符流的桥梁---Java转换流

转换流可以将一个字节流包装成字符流,或者将一个字符流包装成字节流。这种转换通常用于处理文本数据,如读取文本文件或将数据从网络传输到应用程序。转换流主要有两种类型:InputStreamReader 和 OutputStreamWriter。InputStreamReader 将一个字节输入流转换为一个字符输入流,而 OutputStreamWriter 将一个字节输出流转换为一个字符输出流。它们使用指定的字符集将字节流和字符流之间进行转换。

2024-04-09 14:30:37 1009

原创 【深入理解Java IO流0x05】Java缓冲流:为提高IO效率而生

我们都知道,内存与硬盘的交互是比较耗时的,因此适当得减少IO的操作次数,能提升整体的效率。Java 的缓冲流是对字节流和字符流的一种封装(,关于IO流中的一些设计模式,后续会再出博客来讲),通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。

2024-04-08 16:15:00 860

原创 【深入理解Java IO流0x04】Java字符流Reader&Writer

字符流是一种用于读取和写入字符数据的输入输出流。与字节流不同,字符流以字符为单位读取和写入数据,而不是以字节为单位。常用来处理文本信息。之所以出现乱码是因为在字节流中,一个字符通常由多个字节组成,而不同的字符编码使用的字节数不同。如果我们使用了错误的字符编码,或者在读取和写入数据时没有正确处理字符编码的转换,就会导致读取出来的中文字符出现乱码。例如,当我们使用默认的字符编码(见上例)读取一个包含中文字符的文本文件时,就会出现乱码。因为,它只能表示英文字符,而不能正确地解析中文字符。

2024-04-08 09:30:00 1862

原创 【深入理解Java IO流0x03】解读Java最基本的IO流之字节流InputStream、OutputStream

在开始前,我们再来回顾一下这张图:本篇博客主要为大家讲解字节流。我们都知道,一切文件(文本、视频、图片)的数据都是以二进制的形式存储的,传输时也是。所以,。

2024-04-07 16:40:21 585

原创 【深入理解Java IO流0x02】详解Java中的文件、目录操作(File、Paths、Files类)

我们都知道,大部分时候,我们用IO流操作的对象是一个又一个文件,文件操作在Java中是相对复杂但是使用频率比较高的。项目中几乎都会存在一个类似于叫FileUtils的工具类。因此本篇博客将为大家介绍Java中关于文件、目录的相关操作。主要就是三个类,分别是来自于java.io包下的File类,以及包下的Paths类和Files类。接下来我们正式开始!

2024-04-07 09:30:00 2689

原创 【深入理解Java IO流0x01】基础篇:核心概念

IO即,输入和输出。这里的"入"与"出"是以计算机内存的角度来看的。数据从外部到计算机内存的过程就是输入,反之由计算机内存到外部存储(如数据库、文件、网络连接)的过程就是输出。数据在传输的过程类似于水流,所以我们称之为IO流。IO流在Java中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。来看一张关于Java的体系图,好对整个框架有个整体印象:看着很复杂,但我们在实际运用中常用的就那么几个。本篇博客将为大家树立一个基本概念,后面的博客我们将针对常用的流进行实战。

2024-04-06 15:59:02 1294

原创 Windows与Linux路径分隔符对比及Java代码实战

在Windows中,磁盘中用反斜杠(又称为右斜杠)\表示路径的分隔。在浏览器中用正斜杠/来表示路径的分隔。那么对于Java而言,路径分隔**推荐使用正斜杠(又称为左斜杠/,不推荐使用反斜杠(Linux则是统一用/表示路径的分隔的。总结一下,在Java中,如果遇到拼接路径的情况,请使用。:两个反斜杠\\表示一个正杠/)。

2024-04-05 22:58:42 769

原创 【Redis教程0x0F】Redis实战篇

延迟队列是指把当前要做的事情,往后推迟一段时间再做。在 Redis 可以使用有序集合(ZSet)的方式来实现延迟消息队列的,ZSet 有一个 Score 属性可以用来存储延迟执行的时间。使用命令就可以一直往内存中生产消息。再利用 zrangebysocre 查询符合条件的所有待处理的任务, 通过循环执行队列任务即可。

2024-04-05 17:25:47 937

原创 【Redis教程0x0E】详解三种常见的缓存更新策略

本篇博客详解了3种常见的缓存更新策略,这也是面试时比较高频的问题,希望大家都能掌握,尤其是Cache Aside旁路缓存策略。

2024-04-04 09:00:00 1073

原创 隐语SecretFlow实训营-第9讲:隐语多方安全计算在安全核对的行业实践

行业背景:隐私计算技术,实现数据可用不可见、可用不可得。

2024-04-03 19:01:30 374

原创 隐语SecretFlow实训营-第8讲:快速上手隐语SCQL的开发实践

目前SCQL只开放API供用户使用/集成。

2024-04-03 18:02:41 612

原创 【Redis教程0x0D】详解Redis的线程模型

Redis 单线程指的是**「接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户端」**这个过程是由一个线程(主线程)来完成的,这也是我们常说 Redis 是单线程的原因。之所以 Redis 为「关闭文件、AOF 刷盘、释放内存」这些任务创建单独的线程来处理,是因为这些任务的操作都是很耗时的,如果把这些任务都放在主线程来处理,那么 Redis 主线程就很容易发生阻塞,这样就无法处理后续的请求了。

2024-04-03 09:00:00 1338

原创 隐语SecretFlow实训营-第7讲:SCQL的架构详细拆解

SCQL(Secure Collaborative Query Language)是一种专为支持多方安全数据分析而设计的语言,它的目标是在保证数据隐私的前提下,使得不同的参与方能够进行联合数据分析。这一概念和技术是随着隐私计算技术的发展而提出的,特别是在多方安全计算(Multi-party Computation, MPC)领域。总之,SCQL旨在推进隐私计算技术的实用化和大众化,降低多方安全数据分析的技术门槛,促进数据价值的合法合规释放。

2024-04-02 13:25:37 709

原创 【Redis教程0x0C】数据库与缓存的一致性保证

首先明确一点,在一般业务场景中,最推荐的保证数据库和缓存一致性的方案还是先更新数据库,再删除缓存。并且给缓存设置一个过期时间。当然,上面的方案在每次更新数据的时候,都会删缓存,这势必会影响缓存的命中率。所以如果在对缓存命中率很高的场景下,可以采用更新数据库+更新缓存的方案。当然这个方案会导致在两个线程并发更新时数据不一致的问题,为了避免,可以有以下两种方案:(提高了缓存命中率,但降低了性能)在更新缓存前加个分布式锁,保证同一时间只运行一个请求更新缓存,会对性能造成影响;

2024-04-02 09:30:00 879

原创 【Redis教程0x0B】一篇搞懂Redis的缓存雪崩、缓存击穿、缓存穿透

缓存异常会面临的三个问题:缓存雪崩、击穿和穿透。其中,缓存雪崩和缓存击穿主要原因是数据不在缓存中,而导致大量请求访问了数据库,数据库压力骤增,容易引发一系列连锁反应,导致系统奔溃。不过,一旦数据被重新加载回缓存,应用又可以从缓存快速读取数据,不再继续访问数据库,数据库的压力也会瞬间降下来。因此,缓存雪崩和缓存击穿应对的方案比较类似。而缓存穿透主要原因是数据既不在缓存也不在数据库中。因此,缓存穿透与缓存雪崩、击穿应对的方案不太一样。

2024-04-01 10:00:00 935

原创 【Redis教程0x0A】详解Redis哨兵机制

Redis 在 2.8 版本以后提供的哨兵(Sentinel)机制,它的作用是实现主从节点故障转移。它会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。监控、选主、通知。哨兵节点通过 Redis 的发布者/订阅者机制,哨兵之间可以相互感知,相互连接,然后组成哨兵集群,同时哨兵又通过 INFO 命令,在主节点里获得了所有从节点连接信息,于是就能和从节点建立连接,并进行监控了。1、第一轮投票:判断主节点下线。

2024-03-31 12:15:00 1109 1

原创 【Redis教程0x09】详解Redis主从复制

全量复制基于长连接的命令传播增量复制。主从服务器第一次同步的时候,就是采用全量复制,此时主服务器会两个耗时的地方,分别是生成 RDB 文件和传输 RDB 文件。为了避免过多的从服务器和主服务器进行全量复制,可以把一部分从服务器升级为「经理角色」,让它也有自己的从服务器,通过这样可以分摊主服务器的压力。第一次同步完成后,主从服务器都会维护着一个长连接,主服务器在接收到写操作命令后,就会通过这个连接将写命令传播给从服务器,来保证主从服务器的数据一致性。

2024-03-29 11:15:00 1297 2

原创 【Redis教程0x08】详解Redis过期删除策略&内存淘汰策略

Redis 使用的过期删除策略是「惰性删除+定期删除」,删除的对象是已过期的 key。

2024-03-28 12:48:12 3293 2

原创 隐语SecretFlow实训营-第6讲:隐语PIR介绍及开发实践

BFV方案介绍:多个数据pack到一个HE Plaintext;查询向量压缩到一个密文;支持多维查询;支持多个查询;核心思想:点值表示得到插值多项式系数表示。

2024-03-28 09:30:00 373 1

原创 【Redis教程0x07】Redis持久化之AOF日志

本篇博客我们详解了Redis持久化策略之AOF,同时也介绍了AOF和RDB混合的策略。

2024-03-27 18:44:46 1317 1

原创 隐语SecretFlow实训营-第5讲:隐语PSI介绍及开发实践

PSI是隐私求交集(Private Set Intersection)的英文缩写。这是一种特殊的安全多方计算(MPC)协议。大致思想就是:Alice持有数据集合X,Bob持有数据集合Y。Alice和Bob通过执行PSI协议,得到数据的交集X∩Y。但是在求交集的过程中不泄漏交集以外的其他信息。

2024-03-26 09:30:00 496 1

原创 【Redis教程0x06】Redis持久化之RDB快照

Redis 可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis 创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis 主从结构,主要用来提高 Redis 性能),还可以将快照留在原地以便重启服务器的时候使用。#在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发bgsave命令创建快照。save 900 1。

2024-03-25 15:47:28 1219 1

原创 【Redis教程0x05】详解Redis的数据结构

本篇博客我们详解了Redis的8种底层数据结构,希望对大家学习Redis有所帮助。

2024-03-25 13:30:00 769 1

原创 【Redis教程0x04】详解Redis的4个高级数据类型

Redis HyperLogLog是Redis 2.8.9新增的数据类型,是一种用于基数统计的数据集合类型,基数统计就是指统计一个集合中不重复的元素个数。但要注意的是,HyperLogLog的统计规则是基于概览完成的,误算率为0.81%。简单来说,HyperLogLog就是提供不精确的去重计数。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的内存空间总是固定的、并且是很小的。只需要 12k 的空间就能存储接近**2^64**个不同元素。

2024-03-24 14:52:52 1015 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除