自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 幻兽帕鲁Palworld私服搭建教学

幻兽帕鲁最近在社区呈现了爆火的趋势,在线人数已突破百万级别,官方服务器也开始出现不稳定,卡人闪退的情况。对于有一定财力的小伙伴,搭建一个私人服务器是一个最稳定而舒服的解决方案。本文章将讲解一下如何搭建palworld的私服,如果有不明白的,可以参考官方文档作为补充https://tech.palworldgame.com/dedicated-server-guide,或者在评论区留言,我会耐心解答。

2024-01-21 23:42:10 7443 48

原创 密码学速查笔记(二)-- 椭圆曲线密码学

如今许多加密算法和安全标准都会使用公钥算法来加解密、数字签名。其中RSA为最广泛使用的算法。RSA算法基于离散对数问题,密钥长度越长安全性越高。近年来,出于安全需求,RSA的密钥长度变得越来越长,运算时间也越来越慢。在交易任务数量庞大的今天,长时间的密码学运算给系统造成不小的负担。因此,拥有更小密钥长度的椭圆曲线算法正充当着越来越重要的角色。研究表明,同等安全性条件下,使用256位的椭圆曲线密钥与使用3072位RSA密钥的安全性相当。.........

2022-07-29 14:20:22 1326 1

原创 golang踩坑--sync.Pool能干嘛

在项目库中看到有用到sync.Pool字段,很好奇具体的作用,简单学习了一下,写个小博客总结一下。sync.Pool 可以看作一个存放临时对象的池,使用到该对象时,可以从pool里拿,不需要时就归还到pool里。为什么需要sync.Pool?直接声明Object不可以吗?Golang明明是有GC的语言。但其实,如果可以复用对象,就能大大节省对象创建和回收的开销,从而达到优化内存使用的目的。对大对象,频繁使用的对象来说,该优化很有必要。首先,sync.Pool对象池中的对象并非永久存放,任何物品都可能在任意

2022-07-10 17:43:52 729

原创 golang踩坑--defer知多少

defer语句能延迟函数的执行,直到周围的函数return。在业务代码流程中,无论函数逻辑多复杂,开发者使用defer字段,都可以保证在任何执行路径下,资源被释放,可以不关心语句何时结束,只需要在资源正常打开后,加上defer关闭语句即可。2. 可用于panic recover需要注意的是,recover只能在defer函数中使用,且必须与出发panic的协程位于同一个协程。如果panic在不同协程中,recover是无法恢复的。如下例子3. defer的参数会在执行前确定这个特性可以用于制作计

2022-07-08 21:30:41 339

原创 golang踩坑--channel的正确使用姿势

一、为什么要用channel笔者也是从Java转Go的选手,之前一直很难摆脱线程池、可重入锁、AQS等数据结构及其底层的思维定式。而最近笔者也开始逐渐回顾过往的实习和实验,慢慢领悟了golang并发的一些经验了。golang在解决并发race问题时,首要考虑的方案是使用channel。可能很多人会喜欢用互斥锁sync.Mutex,因为mutex lock只有Lock和Unlock两种操作,与Java中的ReentrantLock比较类似。但笔者实践过程中发现:互斥锁只能做到阻塞,而无法让流程之间通信

2022-02-06 18:47:35 2065

原创 分布式一致性协议Raft(一)

铺垫一个设计良好的分布式系统,应具备四大特点:并行性能(parallel performance):任务能均衡高效地在多台机器上执行,无需过高的通讯和锁消耗。容错性(fault-tolerance):少部分机器的宕机并不会影响整体任务的完成,且宕机机器重启后有办法重新加入到工作中。冗余性(replication):重要的决定性的数据,如log,必须拷贝多份分布在多台机器上,以防某台机器宕机丢失数据导致系统无法正常运行。一个好的冗余策略应该考虑机架、网络、甚至地域的分散。一般保证冗余的策略有两种

2022-01-24 16:34:44 2156

原创 分布式文件系统Google File System(GFS)

Google File System(GFS)是一个经典的面向大规模数据的分布式文件系统。它具有高性能、可拓展、可靠的特性。GFS在分布式领域的江湖地位相信不用多谈。BigTable,MapReduce和GFS向来有谷歌三驾马车之说。今天就来简单聊聊GFS的系统架构、以及谷歌针对Fault-tolerance、Consistency、Garbage collection、Balance、Recovery等一系列问题是如何提出合理解决方案的。一、系统架构GFS系统的参与者有包括了发起读写请求的客户端Cli

2022-01-15 18:21:13 1876

原创 MIT 6.824 lab1方案设计

凡事预则立,不预则废 – 《礼记·中庸》Coordinator 流程:读入:Coordinator接收传入文件参数。每个文件都作为独立的文件。MMM 等于文件数量。然后这些任务都用Task结构体保存。Task记录任务的文件名,id(独立生成),类型(Map or Reduce)以及状态(completed,in-progress,idle)。这些Task会被生产到一个channel中,后续所有的任务调度都通过Channel来实现。MapStage :主要是分发各种MapTask。使用一个数组记.

2022-01-05 20:34:18 284

原创 MapReduce工作原理与工作流程

文章目录一、背景二、工作原理和流程2.1 核心函数Map & Reduce2.2 流程2.3 任务调配2.4 容灾问题Worker FailureMaster Failure确定性2.5 效率提升CombinerReaderstraggler本地调试状态监控一、背景在大型网站系统,尤其是搜索网站中,系统常常需要处理海量数据,譬如在我关于搜索引擎的博客中提到的倒排索引,TF-IDF矩阵,PageRank ,数据的量级通常是TB甚至PB级别的,单机无法在短时间完成任务。博客传送门搜索引擎(一

2022-01-03 19:46:03 3303

原创 密码学速查笔记(一)-- 分组对称加密

一、定义区块加密Block Cipher,就是把大段的plaintext,分块加密传输。而One-key Block Cipher通常是以发送方和接收方共享一个Key作为加解密密钥。数学定义如下:One-key Block Cipher 是一个五元组 (M,C,K,Ek,Dk)(\mathcal{M,C,K},E_k,D_k)(M,C,K,Ek​,Dk​), 其中M\mathcal{M}M是原文文本空间,C\mathcal{C}C是加密文本空间,K\mathcal{K}K是键值空间所有键值k∈Kk

2021-12-12 12:45:42 890

原创 搜索引擎(一)-- Vector Space Model 和 倒排索引

一、向量空间模型1.1 布尔模型与统计学模型最早期的消息回溯模型是布尔模型(Boolean Model),这种模型将关键词用“与或非”连接成问答语句,譬如“DBMS AND Oracle AND NOT Sybase”,然后由系统返回Yes/No的回答。这种模型的构建和使用都相当简单,但它的缺点也很明显:布尔语句一旦变长,就会有很多层括号,读起来也很不方便。布尔模型很难控制回溯的文档数目。布尔模型是命中模型,且没有对文档中的关键词设置权重,无法对文档进行排名。布尔模型是完全匹配,不支持部分匹配

2021-12-09 22:10:08 786

原创 搜索引擎(二)-- 预测评价指标

文章目录一、简介二、二元检测评估指标2.1 精确率Precision & 召回率Recall2.2 PR曲线2.3 AUC-ROC2.4 平均精确率AP2.5 MAP2.5 综合评价指标三、连续值的评估指标3.1 NDCG一、简介评价一个搜索引擎,或者说信息回溯的系统的好坏,有许多指标。一般来说,我们会从召回速度和召回功效Effectiveness(准确与否)两个方面来评价。本文将着重基于后者评价一个搜索引擎的好与坏。回溯的准确与否可以是一个True or False的反馈,也可以是一个介于0-

2021-12-09 14:34:57 2563

原创 搜索引擎(三)-- PageRank和HITS算法

文章目录一、简介二、PageRank2.1计算公式2.1.1 原始PR算法2.1.2 Rank Sink问题与改良版PRPageRank矩阵表示三、HITS3.1 HITS计算四、其他应用4.1 引用矩阵Bibliometrics4.2 经济学一、简介要问搜索引擎是什么,很多人第一反应就是以百度,谷歌,雅虎为代表的搜索引擎。这些搜索引擎往往基于不同的算法,将分布于全球数百万机器上中最有价值的链接按价值的Ranking返回给查询者。长时间以来,网页搜索排名一直是互联网行业最具挑战的任务。本文将介绍几个典型

2021-12-07 18:35:55 1578 2

原创 搜索引擎(四)--相关反馈与个性化推荐

文章目录一、相关反馈的简介二、反馈种类三、查询优化3.1 优化流程3.2 具体方法已知相关文档集情况未知相关文档集情况四、文档权重优化4.1 机制4.2 实际问题一、相关反馈的简介相关反馈(Relevance Feedback)是某些信息检索系统的一个特征,用于评价被回溯(或者说检索)到的文章是否与需要的信息相关。有时用户只使用了一两个关键词用于检索,但我们很难弄清回溯结果是否符合用户需求。二、反馈种类显式反馈 Explicit Feedback来自用户对回溯文档是否相关的直接反馈,反馈通常为评分

2021-12-05 18:00:32 2124

原创 搜索引擎(六)-- 矩阵分解

文章目录一、引言二、奇异值分解SVD三、SVD的变种基于机器学习的SVD正则化因子Time SVDSVD++训练过程一、引言在搜索引擎(五)中我们提到了推荐系统中矩阵的稀疏问题,很多数据或者用户的交互数据过少,并且有部分交互数据也存在信息冗余的情况。因此,我们需要用矩阵降维的方法,将矩阵投射到对结果有影响的最重要的因素中,并基于此构建新的评价方法。除此以外,在此前提到的Memory-Based推荐里,我们常常也需要去评价物品或用户的相似度,这些物品或用户也有许多attributes,需要我们进一步进行

2021-12-04 21:27:45 838

原创 搜索引擎(五)--协同过滤

一、基本概念在搜索引擎中,推荐是一个重要的技术。从某种角度看,搜索本身就是一种推荐,搜索引擎通过算法(如PageRank,文档余弦相似度)召回排名最高的文档,并推荐给查询者。而一个推荐系统,希望尽可能返回少但精确的文档给它的使用者,所以,我们需要提出一种尽可能返回高价值文档的推荐算法,这个算法有可能基于内容,基于交互

2021-12-03 22:47:26 853

原创 Unix网络编程 学习记录02--select和字符串回显程序

使用select的字符串回显网络程序在《unix网络编程》的第四章中,我们简单学习了socket编程的核心函数(connect、bind、listen、accept、close),并且简单学习了fork()函数的用法;在第五章中,我们学习了如何用wait和waitpid预防僵尸进程;在第六章中,我们简单学习了IO多路复用的两个核心函数:select和poll。为了巩固知识,在此实现一个I/O多路复用的字符串回显网络程序。环境与学习记录–01相同,客户端为Win10,服务端为Linux。...

2021-10-10 14:41:08 115

原创 支持泛型的LFU c++实现

首先定义LFU存储数据节点ListNode的结构, 此结构支持键K和值V的模板,为了在有序元素中实现比较(严格小于),这里需要重载小于号,如果此数据的使用频次最少,则小于结果为true,如果频次相等,轮次早的数据最小。template<typename K, typename V>struct ListNode { K key; V value; int freq; long cur; bool operator<(const ListNode

2021-09-27 21:37:12 160

原创 Unix网络编程 学习记录01

写在前面秋招面试微信折戟,决定好好折腾一下c++和网络,武装一下自己的技术栈,先从最基本的网咯编程开始。《UNIX网络编程 卷1》有不少实践的机会,于是先从这本书下手。能坚持多久是多久吧,共勉!准备CLion环境本地开发环境为windows,但本书中的实验都是运行在linux上的,所以买了阿里云的centos轻量级web服务器,并通过ssh进行远程调试。(香港节点很便宜)IDE使用Clion,Clion的远程编译和debug个人觉得十分好用。我们就用默认的hello world来配置。配置方法

2021-09-14 20:41:06 387

空空如也

空空如也

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

TA关注的人

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