- 博客(120)
- 收藏
- 关注
原创 【Go专家编程——控制结构——for-range】
for-range表达式用于遍历集合元素,比传统的for循环更简洁,更直观。for-range表达式作用于所有的集合类型,包括数组、切片、string、map,甚至还可以遍历channel。
2024-05-23 13:09:08 362
原创 【Go专家编程——控制结构——select】
select是Go在语言层面提供的多路I/O复用机制,用于检测多个管道是否就绪(即可读可写),其特性与管道息息相关。
2024-05-23 13:08:42 572
原创 【代码随想录——二叉树四周目】
相比上一周的二叉树的最近公共祖先。二叉搜索树的最近公共祖先可以利用二叉搜索树的特性,通过寻找第一个夹在两节点中间的节点。
2024-05-22 08:11:46 184
原创 【Go专家编程——常见数据结构的实现原理sync.Map】
sync.Map是一种并发安全的map,相较于原生map。sync.Map在并发读写时不会触发panic,它可以减轻程序员的负担。不用再小心翼翼地处理各种锁。
2024-05-21 12:23:23 478
原创 【Go专家编程——常见数据结构的实现原理string】
byte切片转换成string的场景很多,处于性能上的考虑,在只是临时需要字符串的场景下,byte切片转换成string时并不会拷贝内存,而是直接返回一个string,这个string的指针(string.str)指向切片的内存。由于string是无法直接修改的,所以这里使用rawstring()方法初始化一个指定大小的string,同时返回一个切片,二者共享一块内存空间,后面向切片中拷贝数据,也就间接修改了string。字符串凭借会触发内存分配及内存拷贝,单行语句拼接多个字符串只会触发一次内存分配。
2024-05-21 12:22:33 856
原创 【Go专家编程——常见数据结构的实现原理iota】
我们知道iota常用于const表达式中,还知道其值从零开始,const声明块中每增加一行,iota值自增1。
2024-05-20 10:12:00 387 1
原创 【Go专家编程——常见数据结构struct】
Go语言的结构体没有继承的概念,当需要“复用”其他结构体时,需要使用组合方式将其他结构体嵌入当前结构体。当你的外部结构中存在和内部的同名变量时,优先访问外部的该变量。
2024-05-20 10:11:43 392
原创 【go专家编程——常见数据结构map的实现原理】
go中的map使用Hash表作为底层实现,一个Hash表里可以有多个bucket,而每个bucket保存了map中的一个或一组键值对。降低负载因子的常用手段是扩容,为了保证访问效率,当新元素将要添加进map时,都会检查是否需要扩容,扩容实际上是以空间换时间的手段。如果当前map处于搬迁过程中,则优先从oldbuckets数组中查找,在从buckets数组中查找。如果当前map处于搬迁过程中,则新元素会直接添加到新的buckets数组中。查找不到返回相应的零值。
2024-05-18 15:40:22 769
原创 【论文阅读——众包场景下基于参与方可靠性的激励机制】
该工作描述一个典型的众包系统,它由三部分组成:任务请求者、众包平台和动态的参与方集合。任务请求者在平台上发布任务,平台将这些任务分配给参与方,并在收到参与方的回答后进行真值推断,然后将最终结果发送给任务请求者。Ww1w2wMWw1w2...wM表示M个参与方集合每个参与方w∈Ww\in Ww∈W在时间窗口内随机到达平台,且每个参与方具有一个容量wτw.\tauwτ(可以完成的最大任务数)该工作专注于数值任务并考虑两种类型的任务NNN。
2024-05-17 21:21:46 599
原创 【代码随想录——二叉树二周目】
递归终止的条件是:左右两个子节点都为空的时候,则记录这一条路径。在计算各个节点高度的同时判断是否是是否是平衡树。只能使用层次遍历法。
2024-05-17 21:15:29 233
原创 【代码随想录——二叉树一周目】
二叉树(Binary tree)是树形结构的一个重要类型。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成长这样的结构##1.1 二叉树的种类2k−1。
2024-05-16 18:30:56 305
原创 【论文阅读——GTG-Shapley: Efficient and Accurate Participant Contribution Evaluation】
自我报告[28、32]FL参与者的贡献是通过他们对敏感本地数据的自我报告信息来衡量的(例如,数据数量、质量、承诺的计算和通信资源)。个体表现效用博弈基于SV的方法随机抽样蒙特卡罗(MC)估计方法使用组测试加速SV估计[9]通过梯度Shapley技术进行FL参与者贡献评估[20、25、26]
2024-05-14 07:59:37 956
原创 【Go——实现小堆顶】
堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者。最小堆:根结点的键值是所有堆结点键值中最小者。
2024-05-08 10:25:17 399
原创 【代码随想录——哈希表】
首先什么是 哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)。那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。
2024-05-07 14:41:04 399
原创 GoLang实战——微服务网关
例如,在实现策略模式时,可以轻松地交换不同的函数策略,因为它们都是作为同等地位的对象来处理的。总的来说,函数作为一等公民极大地丰富了编程的表达力,使得代码更加简洁、动态,并促进了诸如函数式编程这样的编程范式的应用。则会重新发出FIN包,如果客户端关闭过快的话,则服务端会一直处于LAST-ACK而无法关闭。客户端等待2MSL的时间足够服务器重传FIN包,之后客户端接收到FIN包就知道之前的包已经丢失,重新传输一个ACK包即可。不用担心,发送方会有一个探测包,专门用来获取接收方空余的win的数量。
2024-05-07 14:40:42 1125
原创 【论文阅读:Towards Efficient Data Valuation Based on the Shapley Value】
基于Shapley值的高校数据价值评估主要贡献提出了一系列用于近似计算Shapley值的高效算法。设计了一个算法,通过实现不同模型评估之间的适当信息共享来实现这一目标,该算法具有可证明的误差保证来近似N个数据点的SV,其模型评估数量为O(Nlog(N)2)O(\sqrt Nlog(N)^2)O(Nlog(N)2)这个算法依赖于学习算法的稳定性,对于复杂的ML模型,如深度神经网络,这很难证明。此外,如果合理假设SV在“稀疏”的意义上仅有少数数据点具有显著值,那么我们可以进一步将模型训练数量
2024-05-02 12:44:24 1284
原创 【论文阅读:Data Shapley: Equitable Valuation of Data for Machine Learning】
ϕiϕi0πtv0t上述算法存在一个比较严重的问题,就上每次都要重新训练模型。这在联邦学习场景下几乎是不能被接受的。
2024-05-02 11:02:50 852 2
原创 【代码随想录——链表】
什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。
2024-05-01 15:27:33 1376
原创 【代码随想录Go——数组】
数组是存放在连续内存空间上的相同类型数据的集合。当查找到指定元素后开始进行该元素的左右边界查找,该方法在一般情况下比较快。但当数组中的元素的个数全部一样是,时间复杂度为O(N);for l<=r {}else{// 找到一个符合的元素// 开始往左右查找边界l2-=1r2+=1数组的经典题目二分法二分法是算法面试中的常考题,建议通过这道题目,锻炼自己手撕二分的能力。双指针法(快慢指针)
2024-05-01 12:09:44 3
原创 【论文阅读——基于拍卖的水平联邦学习后付款激励机制设计与声誉和贡献度测量】
一个联邦学习系统由一个任务发布者和大量的工作者组成。每个工作者的声誉ReiRe_iRei是公开的,但是数据质量、数量和自己的任务花费(成本)cic_ici是私有的。任务发布者有一个预算B,他自己的数据作为测试集和验证集。(如果他没有自己的数据呢?反向拍卖发布者进行任务的发布工作者i提交密封的竞标价格bib_ibi发布者获得每个工作者的累计声誉结合出价选择工作者。下载全局模型利用本地数据进行训练上传本地模型衡量质量(重点)聚合模型。
2024-04-30 09:19:54 585 1
原创 【黑马点评Redis——007UV统计】
UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。但是如果每个访问的用户都保存到Redis中,数据量会非常恐怖。
2024-04-30 09:18:40 259
原创 【黑马点评Redis——005附近商户】
GEO数据结构是Redis中用于存储和处理地理位置信息的一种特殊数据类型。它提供了高效的方式来存储、检索和操作具有经度和纬度坐标的数据项,非常适合于实现诸如查找附近地点、计算两点间距离、划定特定半径内的所有位置等功能。
2024-04-29 08:11:18 332
原创 【黑马点评Redis——003优惠券秒杀3——Redisson】
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(在Redis基础上实现的分布式工具),它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。
2024-04-24 09:07:02 490
原创 【黑马点评Redis——003优惠券秒杀】
全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具。需要满足以下特性:自增ID存在的问题:全局唯一ID生成策略乐观锁的关键是判断之前的数据是否有被修改过,常见的方式有两种:1.5 实现一人一单在这段代码中我们需要先判断该用户是否已经购买过优惠券,我们需要对用户Id进行加锁,通过userId.toString().intern()来获取同一个对象。同时通过代理来防止事务失效。2. 知识储备2.1 事务失效的常见原因2.1.1 访问权限问题众所周知,java的访问权限主要有四种:priv
2024-04-23 12:25:04 1077
原创 【黑马点评Redis——001短信登录】
每个线程都有自己独立的 ThreadLocal 实例,可以通过该实例存储和获取线程本地的变量。这意味着同一个变量在不同线程中可以有不同的值,且各个线程之间互不干扰。把资料的Nginx-1.18.0.2里的conf文件夹里的nginx-conf文件 覆盖 你安装的nginx的配置文件里的nginx-conf文件。目前这个拦截器只对一些特定的界面生效,如果用户一直访问不被拦截的界面。把资料的nginx-1.18.0.2里的html文件夹直接覆盖到 nginx的安装目录的HTML文件。自行下载nginx,
2024-04-22 15:39:16 617
原创 【黑马程序员——Redis的Java客户端】
Jedis是一个Java语言编写的Redis客户端库,用于与Redis服务器进行通信。它提供了易于使用的API,使Java开发人员可以轻松地与Redis进行交互。使用Jedis,你可以执行各种Redis操作,如设置和获取键值对、执行命令、订阅和发布消息等。
2024-04-20 17:18:59 640 3
原创 【黑马程序员——Redis入门】
NoSQL是指“不仅仅是SQL”(Not Only SQL)的缩写。它是一种数据库管理系统(DBMS)的范畴,用于存储和检索大量结构化或非结构化数据。与传统的关系型数据库管理系统(RDBMS)不同,NoSQL数据库通常采用非关系型的数据存储模型,如文档型、键值对、列族或图形等。NoSQL数据库的设计旨在解决传统RDBMS在大规模分布式数据处理方面的一些限制,如扩展性、灵活性和性能。它们通常更适合用于处理半结构化或非结构化数据,以及需要高度并发性和水平扩展的场景。
2024-04-20 13:18:10 781 3
原创 【GoWeb框架初探——GRPC】
gRPC是谷歌开源的一个高性能的、开源的通用的RPC框架。我们称调用方为client,被调用方为server。跟其他的RPC框架一样,gRPC也是基于”服务定义“的思想。简单来说就是我们通过某种方式来描述一个服务,这种描述方式是语言无关的。在这个"服务定义"的过程中,我们描述了我们提供的服务服务名是什么,有哪些方法可以被调用,这些方法有什么样的入参,有什么样的回参。也就是说,在定义好了这些服务、这些方法之后,
2024-04-19 19:08:23 974 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人