- 博客(88)
- 资源 (16)
- 收藏
- 关注
原创 除了nohup,你还可以这么搞
还记得刚开发后端服务的时候,啪啪啪一顿猛敲,接口测试通过,程序启动上线。对着老大和前端说:我的接口部署好了,你们可以测试了。然后潇洒的收包、闪人,心中默念一句:你们这群低效的加班狗。前脚还没跨出大门,就听到“xxx,你的接口挂了”。回到座位检查了下,果然无法调用,登录服务器查看,进程都没了,这是咋回事?隔壁的老炮看了下我的操作记录,然后在启动命令上加了“nohup &”,一切ok了。这是我第一次接触nohup命令,后来才知道这个命令会使程序忽略 HUP 信号,保证程序能够正常进行。在终端退出时,会向
2021-07-24 20:16:52 766 8
原创 怎么让b站不挂
打开知乎和头条,b站又冲上了热榜,这次不是煽情怀旧的跨年晚会,也不是敲钟上市,而是“挂了”b站的程序员跟进迅速,问题也得到了比较快的修复。哈哈哈,上面是热点新闻,下面就是知识点了。最近在学习分布式架构,刚好看到了“两地三中心”的高可用架构,我们云畅享一下,如果b站也用的是两地三中心的架构,还会挂掉不?这里先说明下两个概念:RPO和RTO•RTO (Recovery Time Objective,复原时间目标)是指灾难发生后,从IT系统故障导致业务停顿之时开始,到IT系统恢复至可以支持各部门运作、恢复运营之时
2021-07-14 21:05:06 225 1
原创 手把手带你领略graphql的魅力
背景介绍当谈论到客户端与服务端之间的网络请求时,REST 绝对是连接两者的方案中最流行的选择。在 REST 中,所有概念都是可以通过 URL 可访问的资源演化而来的。你可以通过一个 HTTP GET 请求读取一个资源,通过一个 HTTP POST 请求创建一个资源,或者通过 HTTP PUT 和 HTTP DELETE 更新或删除一个资源。这些被称为 CRUD(Create、Read、Update、Delete)操作。资源可以是任何实体,比如作者(authors)、文章(articles)或者用户(use
2021-07-13 10:16:39 234 1
原创 serverless--全栈工程师的利器
背景Serverless 是炙手可热的技术,被认为是云计算发展的未来方向。尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于业务逻辑,实现全栈工程师的角色转变。Serverless 适用于事件触发的场景。当某个事件发生时,拉起并调用 Serverless 云函数,比如文件上传、消息队列中的消息事件、定时器事件,也可以是 IoT 设备的某个事件。还可以用于一些文件处理,比如图像处理、音视频处理和日志分析等场景。当然,这些事件也包括 HTTP 请求事件,这是 Serverless
2021-07-08 12:33:39 333 5
原创 机器都能写SQL了,CURD boys(girls)慌不慌
背景结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。CURD代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。 大量应用业务代码,总是一些curd的东西。随着人工智能发展,机器生成代码已经变成可能,前段时间GitHub官方和openAI联合为程序员们送上编程神器——GitHub Copilot。程序员只要写下一段
2021-07-03 10:26:16 470 2
原创 用阿里datax从达梦同步数据到MemFireDB时踩过的坑
背景在构建数据仓库时,部分业务系统使用达梦数据库存储原始数据,现在需要通过datax把数据同步到云数据库MemFireDb中进行分析。MemFireDB是一款NewSQL数据库系统的代表,具备高并发和弹性扩展的特点,用来作为数据仓库的存储系统。过程中遇到了不少问题,在此记录一下。下载datax工具包wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz下载后解压,进入bin目录cd /opt/datax/bin
2021-07-02 10:58:34 2410 1
原创 我用python实现了一个量化选股程序
背景近期在学习数据分析,在课程最后老师讲了一下通过量化分析选择股票的案例,感觉挺有意思的,恰好周围也有人在炒股票,干脆自己做一个软件来实践一下学到的知识。课程上主要用python相关库来处理比特币的数据,数据量也不大,但是理解原理之后我们可以举一反三。首先来回顾一下主要的知识点,选择股票的时候会用到两个重要的指标RSV、KDJ。他们的定义见下面的课件截图,具体的内容我就不阐述了,因为我是非金融专业的,对这些词汇解释起来有点吃力。我们只要记住这两个指标如何计算,以及后面如何使用即可KDJ指标定义
2021-06-30 10:26:53 5250 3
原创 如何快速给Flutter应用增加云同步功能第二弹
今天以一个漂亮的开源笔记/日记为例,来给大家提供一个思路,用最简单的方法将一个本地存储项目变为可以云同步的项目。这个App原始地址在https://github.com/bimsina/notes-app。为什么选这个项目呢?因为这个项目本身就是使用的本地sqlite进行数据存储,可以比较方便将它改成在线postgre数据库,从而用有云同步功能。对于没有使用sqlite的项目也是可以改造的,只不过要重新写存储逻辑,如果某个项目你有特别喜欢和需要的功能,也是值得花点时间改造的。废话少说,我们来看项目。.
2021-06-29 13:43:48 350 2
原创 小白学数据分析-SQL每日练
背景最近打算学习一点数据分析的内容,下图中虽然广告成分有点多,但是技多不压身个,都说人人应该有一点产品思维,并对数据保持敏感。看了一些培训机构的介绍,涉及到的知识点还挺多的,有工具、思维、实操及最后的报告。果然一口吃不了个胖子,慢慢学吧。数据分析框架下面是一整套数据分析方案,分为5个步骤:明确问题、获取数据、数据清洗、分析数据最后呈现报告。SQL语言在数据分析领域扮演着重要的角色,包括数据的存取、数据清洗、数据挖掘都会用到SQL语句。今天我分享一下我是如何学习SQL语言。学习SQL语言也分初
2021-06-29 13:42:36 399 2
原创 小白学数据分析--数据看板
背景最近打算学习一点数据分析的内容,下图中虽然广告成分有点多,但是技多不压身个,都说程序员应该有一点产品思维,并对数据保持敏感。看了一些培训机构的介绍,涉及到的知识点还挺多的,有工具、思维、实操及最后的报告。果然一口吃不了个胖子,慢慢学吧。数据分析框架下面是一整套数据分析方案,分为5个步骤:明确问题、获取数据、数据清洗、分析数据最后呈现报告。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJI57dZN-1624945256212)(https://p6-jue
2021-06-29 13:41:36 1156 2
原创 如何快速给项目增加云同步功能
如何快速给项目增加云同步功能今天以一个漂亮的开源记账项目为例,来给大家提供一个思路,用最简单的方法将一个本地存储项目变为可以云同步的项目。这个App名叫《出入》,地址在https://github.com/Livinglist/Churu。为什么选这个项目呢?因为这个项目本身就是使用的本地sqlite进行数据存储,可以比较方便将它改成在线postgre数据库,从而用有云同步功能。对于没有使用sqlite的项目也是可以改造的,只不过要重新写存储逻辑,如果某个项目你有特别喜欢和需要的功能,也是值得花点时
2021-06-29 13:39:38 252 2
原创 30+程序老兵转型路--数据分析实操篇
背景最近打算学习一点数据分析的内容,下图中虽然广告成分有点多,但是技多不压身个,都说程序员应该有一点产品思维,并对数据保持敏感。看了一些培训机构的介绍,涉及到的知识点还挺多的,有工具、思维、实操及最后的报告。果然一口吃不了个胖子,慢慢学吧。数据分析框架下面是一整套数据分析方案,分为5个步骤:明确问题、获取数据、数据清洗、分析数据最后呈现报告。明确问题,分析要解决的问题,定义出一些数字化的指标出来,通过这些指标数字进行对比分析最后才能得出答案,决策最后都会转换成大与小、高与低、多与少的量化比较
2021-06-24 10:16:53 134 2
原创 30+程序老兵转型路--工具篇(可视化Sugar)
最近打算学习一点数据分析的内容,下图中虽然广告成分有点多,但是技多不压身个,都说程序员应该有一点产品思维,并对数据保持敏感。看了一些培训机构的介绍,涉及到的知识点还挺多的,有工具、思维、实操及最后的报告。果然一口吃不了个胖子,慢慢学吧。Excel和SQL应该是最基础的,这个在上一篇30+程序老兵转型路–工具篇(WPS+PostgreSQL)中进行了介绍本次我们来学习一下数据可视化,tableau是比较火的可视化软件,但是需要下载安装,在saas大火的今天,有一些更便捷的替代方案。Sugar是百度
2021-06-24 10:15:36 361
原创 2分钟搭建自己的飞书多维表格
用过飞书的同学都对他的多维表格功能赞不绝口,今天无意中发现了一款开源软件,可以用它来搭建自己的多维表格这款开源软件叫做NocoDB,项目地址是https://github.com/nocodb/nocodb,已经有12.6K的star了。它具备如下功能:丰富的电子表格界面可以轻松地进行搜索、排序、过滤数据,隐藏表格列创建网格、图库、看板、甘特图、表单公共和密码保护,可以共享视图锁定视图将图像上传到单元格多重角色,包括所有者、创建者、编辑者、评论者、查看者、评论者、自定义角色支持细粒度
2021-06-24 10:14:50 8782 7
原创 30+程序老兵转型路--工具篇(WPS+PostgreSQL)
最近打算学习一点数据分析的内容,下图中虽然广告成分有点多,但是技多不压身个,都说程序员应该有一点产品思维,并对数据保持敏感。看了一些培训机构的介绍,涉及到的知识点还挺多的,有工具、思维、实操及最后的报告。果然一口吃不了个胖子,慢慢学吧。在工具里面excel和SQL应该是最基础的,无奈我的office授权到期了,懒得破解,再说现在国产化搞的轰轰烈烈,用wps看能否替代替代下载odbc驱动并首先进入下面的链接,选择psqlodbc_11_01_000.zip点击下载https://www.pos
2021-06-24 10:13:56 220 2
原创 kettle真是神器啊,3分钟将mysql中的数据迁移到postgres中
今天公司机房因为停电几台开发机的磁盘损坏了。运维同学告诉我,磁盘恢复比较慢,如果着急用,可以先申请一个新的虚拟机使用。没办法又要各种装装装,这是第二次了吧,心中真是策马奔腾再暗骂一句老板抠门,也不知道土豪的大厂是不是一人一台ECS用。由于第一次故障,丢了几天代码,现在不管功能做没做完,都会先把代码push到仓库,仓库要是挂了公司的IT部门是不是都要去顶楼jump、jump了。就剩下数据库了,虽然有备份,但是老是重装也挺浪费时间的,马上618了,看能不能去网上搜一个便宜一点的ecs装个mysql,虽
2021-06-24 10:13:00 748
原创 10分钟DIY自己的云todo list
每年年终,大家的朋友圈可能是这个样子的给老板看的给爸妈看的爹妈发给我们看的更多的是发给和自己一样的打工人看的,年度X单互联网大厂们收集用户的日常操作日志,按照不同的维度进行聚合、排序、分类可以轻松的为每个用户打上特定的标签从而为每个用户进行画像,方便后面的商品推荐。顺道也丢一个年度X单吵吵热度。而打工人们则贡献了隐私数据。你的标签是作为一个普通的打工人,是不是一种满满的无力感但是作为一个会折腾的IT打工人、程序猿(媛)们除了写个爬虫抢抢票、写个脚本抢个月饼之外,我们也
2021-06-24 10:11:45 198
原创 如何将数据从SQLite中迁移到PostgreSQL
sqlite是一款优秀的嵌入式数据库,经常被应用在移动端、内部或临时数据库、嵌入式设备和物联网等场景中。它占用的资源非常低,可能只需要几百k的内存就够了,是一个真正开源的无限制的数据库,跨平台,支持Linux, Mac , Android, iOS和 Windows 等,主要应用于嵌入式开发.目前SQLite使用的用户非常的多,大多数的移动终端都装有SQLite数据库,包括我们熟知的微信、美团等热门应用都使用了SQLite。一个应用在初始版本阶段也可以使用SQlite来快速构建原型,随着持续运行数据量逐渐
2021-06-09 15:23:37 1767 2
原创 MemFireDB实现gitbook文章阅读量插件
背景个人开发者普遍拥有属于自己的个人博客站点。常见的框架无论是Hexo、Gitbook,亦或是Docsify,这些框架本身并不支持文章阅读量或者站点访问量的功能,需要各种对应的插件支持。目前市面上这些插件基本上是基于busuanzi,LeanCloud实现的,而Memfire旨在提供数据库服务,若后续提供sdk功能,能够实现对应框架的插件供个人开发者使用,并提供相关文章,也能吸引很多个人开发者。(因为我本身也是基于使用插件的需要,才在LeanCloud上注册了账户。)概述基本上述背景,尝试着基于me
2021-06-07 12:00:38 279 2
原创 30+程序老兵转型路--数据获取
爬取6000多个基金信息后,终于知道基金经理们最爱买的那只股票原来是它!最近基金非常火爆,很多原本不投资、不理财人,也开始讨论、参与买基金了。根据投资对象的不同,基金分为股票型基金、债券基金、混合型基金、货币基金。其中股票型基金说白了,就是我们把钱交给基金公司让它们来帮我们买股票,毕竟人家专业些嘛。所以今天我们就来看看,这些基金公司都喜欢买那些公司的股票。接下来我们自己动手,从天天基金网获取基金数据来分析,文章末尾可以获得全量代码地址;所用到的技术IP代理池多线程爬虫sql开始编写
2021-06-07 10:39:45 203
原创 数据库系统概念5高级SQL
两种在数据库中执行程序代码的方法:一种是通过扩展SQL语言来支持程序的操作;另一种是在数据库中执行程序语言中定义的函数。5.1 使用程序设计语言访问数据库数据库程序员必须能够使用通用程序设计语言的原因:SQL没有提供通用程序设计语言那样的表达能力非声明性的动作(例如打印一份报告、和用户交互,或者把一次查询的结果送到一个图形用户界面)都不能用SQL实现通用编程语言中访问SQL有两种方法:动态SQL,在运行时以字符串形式构建SQL查询,提交查询,然后把结果存储程序变量中嵌入式SQL,嵌入式S
2021-05-16 09:02:18 611
原创 数据库系统概念4中级SQL
4.1 连接表达式连接谓词(join predicate)4.1.1 连接条件join……using子句,是一种自然连接的形式,只需要在指定属性上的取值匹配。on条件允许在参与链接的关系上设置通用的谓词。该谓词写法与where子句类似。与using条件一样,on条件出现在连接表达式的末尾。select *from student join takes on student.ID = takes.ID;在自然连接中,把on子句中的谓词移动到where子句中,与使用on子句是等价的但是引入on
2021-03-27 14:12:47 396
原创 数据库系统概念3SQL
3.1 SQL查询语言概览美国国家标准化组织(ANSI)和国际标准化组织(ISO)发布了SQL标准SQL语言有几个部分:数据定义语言(Data-definition languageDDL),定义关系模式、修改关系以及删除关系模式数据操纵语言(Data-manipulation language DML),查询信息、插入元组、修改元组和删除元组完整性(integrity),SQL DDL包含了定义完整性约束的命令,保存在数据库中的数据必须满足完整性约束的定义视图定义(view definiti
2021-01-20 12:10:01 438
原创 数据库系统概念2关系模型介绍
2.1关系数据库的结构关系数据库由表(table)的集合组成,每个表都有唯一的名字。表中的一行代表一组值之间的一种联系在关系模型中,关系(relation)用来指代表,元祖(tuple)用来指代行,属性(attribute)指代表中的列关系实例(relation instance)用来表示一个关系的特定实例,也就是所包含的一组特定的行对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域(domain),要求关系r的所有属性的域都是原子的。空(null)值是一个特殊值表示该值不存在或者未知
2021-01-06 09:02:12 1401
原创 raft成员变更如何处理
问题是如何产生的初始是A,B,C三个节点,现在要扩展到5个节点A,B,C三个节点已经完成了选举,A,B都选A,而C选自己,那么A是leader现在要将视图变为ABCDE,变更同时A,B和C发生了网络分区,A,B看到的视图仍然是A,B,C三个节点,而CDE看到的视图是ABCDE五个节点,AB可以在旧视图之上选举leader,而CDE的也可以在新视图上选举leader,集群中同时出现了两个leader。处理办法把扩容到5个节点过程分成两步来做,每次扩容一个节点先将视图变为ABCD,同时A,B和C发生
2021-01-02 10:10:20 576
原创 为什么不建议nfs客户端与nfs服务端部署在一台机器上
nfs客户端使用过程中会申请大量页缓存nfs服务端在申请内存时设置的标记不会触发页缓存的回收在某一时刻nfs服务端申请不到内存(内存被客户端占用)无法继续处理请求,nfs客户端的请求得不到响应,整个系统可能出现卡死的现象,比如df操作...
2020-12-29 22:01:21 494
原创 linux设备驱动八(分配内存)
kmalloc函数内幕特定:运行很快,但是可能被阻塞,不对分配的内存空间清零,分配区域在物理上是连续的flags参数GFP前缀的含义,最终会调用get_free_pages来实现GFP_KERNEL,调用它的函数正代表某个进程进行系统调用,GFP_KERNEL允许休眠来等待一个页面,所有调用的函数必须可重入的GFP_ATOMIC,调用函数是原子的,例如中断处理,使用内核预留的一些页面,可能失败,不会休眠GFP_USER,用于用户空间页面分配,可能会休眠GFP_HIGHUSER,类似GFP_US
2020-12-29 21:55:54 2131
原创 fuse hlevel缓存的释放
在hlevel中建立的缓存和lowlevel中fuse_inode是一一对应的,因此他的释放也由内核来决定,释放的时机参看vfs中inode的释放。使用之前会lookup,如果缓存已经不存在了那么就重建,如何保证释放时,先释放子文件?不需要保证先释放子文件,父目录中会记录引用数ref,子文件未解除和父目录的关联时,即子文件对象中任然有指针指向父目录时,ref不会减为0,所以对象不会释放。forget_node会调用unhash解除和父目录的关联,并且通过父目录 + name无法查到自己,减少父目录的引
2020-12-29 21:38:56 2121
原创 ext2数据块预分配
ext2_truncate–>ext2_discard_preallocext2_alloc_block–>ext2_discard_preallocext2_put_inode–>ext2_discard_preallocext2_release_file–>ext2_discard_prealloc
2020-12-29 21:33:02 123
原创 ceph使用quorum如何保障数据一致
ceph包含两个层面的log,每个osd有自己的log,保障单个osd操作的原子性。每个pg有pglog,保障多副本之间的一致性。pglog中带有pg的版本号,由pgleader每次更新数据的时候分配,pglog整体发送给每个osd,osd收到请求后,转化成osdlog写入本地磁盘中。如果写入过程中,部分osd出现了故障,可以通过校验日志的方式,来同步副本并达成一致。...
2020-12-29 21:28:49 723
原创 ceph osd的多种状态
acting set 通过crush算法计算出来的osdup set 正在提供读写服务的osd当出现osd down掉或者发生数据迁移时actiong set会重新设置,把数据迁移到acting set中,而使用up set提供读写服务peering完毕不意味着所有副本都具有相同数据,只是标明所有副本达成了一致(版本,主从关系等)ACTIVE代表peering已经完毕,代表primary osd具有有效数据,pg可以提供读写服务CLEAN代表peering已经完毕,并且所有副本数据no str
2020-12-29 21:25:49 1331
原创 数据库系统概念1引言
引言数据库管理系统(DBMS)由一个互相关联的数据集合和一组可以访问这些数据的程序组成。这个数据集合通常称为数据库。1.1 数据库系统的应用1.2 数据库系统的目标文件系统中存储数据的弊端:数据的冗余和不一致,不同文件的存储格式不同,数据在多份文件中存储造成冗余,多份副本可能数据不一致**数据访问困难“,传统的文件方式不支持以方便和高效的方式获取数据,需要为每种数据访问需求单独定制访问数据的程序。完整性问题,传统的文件方式,约束都是由程序实现的,无法动态新增约束,另外如果约束涉及多个数据项,
2020-12-29 21:16:15 497 2
原创 ceph osd请求处理流程
OSD::dequeue_op-->PrimaryLogPG::do_request-->PrimaryLogPG::do_op-->PrimaryLogPG::execute_ctx-->PrimaryLogPG::prepare_transaction-->PrimaryLogPG::do_osd_ops
2020-10-21 19:50:55 410
原创 ceph内核rbd源码
rbd_sysfs_init 函数先调用device_register函数注册一个设备到内核中 在注册一个总线类型到内核中。do_rbd_add-->rbd_dev_device_setup-->rbd_init_diskrbd_init_disk中设置fops 为rbd_bd_ops
2020-10-21 19:48:46 297
原创 ceph内核模块编译
以linux-4.4.77为例(要求编译rbd.ko的内核源码与当前内核一致)cdlinux-4.4.77/net/ceph/makeCONFIG_CEPH_LIB=m-C/lib/modules/`uname-r`/buildM=`pwd`modulescplinux-4.4.77/net/ceph/Module.symverslinux-4.4.77/drivers/block/cddrivers/block/makeCONFIG_BLK_DEV_RBD=m-C/...
2020-10-21 19:47:20 319
原创 文件系统open操作流程
sys_open-->open_namei-->path_walk -->(vfs_create) -->(error = -EISDIR;if (S_ISDIR(inode->i_mode) && (flag & FMODE_WRITE))) -->...
2020-10-21 19:34:57 430
原创 inode缓存的生命周期
destroy_inode 释放inode内存对象put_inode 减少索引节点引用计数时调用drop_inodedelete_inode 删除索引节点在硬盘上的数据(包括修改所在块组的位图)clear_inode 重置inode内存对象中的数据,重置状态,解除和buffer_head的关联等等。iput-->put_inode -->(drop_inode 2.4内核没找到) -->delete_inode | clear_ino...
2020-10-21 19:27:18 485
原创 通过ctdb来控制linux lio target启动关闭
修改/etc/ctdb/functions文件,增加target环境变量 ctdb_compat_managed_service"$CTDB_MANAGES_VSFTPD""vsftpd" ctdb_compat_managed_service"$CTDB_MANAGES_SAMBA""samba" ctdb_compat_managed_service"$CTDB_MANAGES_WINBIND""winbind" ctdb_compat_...
2020-10-21 11:32:47 510
原创 linux设备驱动七(时间、延迟及延缓操作)
知识点:如何度量时间差,如何比较时间 如何获得当前时间 如何将操作延迟指定一段时间 如何调度异步函数到指定时间之后执行度量时间差 HZ指一秒内产生的时钟中断次数,即时钟中断频率 jiffies_64记录自上一次操作系统引导以来的时钟滴答数。即使在32位架构上也是64位。 驱动程序通常访问jiffies变量。它是unsigned long类型,要么和jiffies_64相同,要么仅仅是jiffies_64的低32位.使用它的原因是访问快,而对6...
2020-08-03 08:02:05 2711
大规模企业级知识图谱实践综述_王昊奋.pdf
2020-06-11
图计算与知识图谱在配电网中的应用.pdf
2020-06-11
大数据时代用户画像助力企业实现精准化营销.pdf
2020-06-11
基于 JBD 的日志型文件系统性能优化
2018-11-20
《阿里技术参考图册》(算法篇)
2018-11-20
《阿里技术参考图册》(研发篇)
2018-11-20
Go语言编程
2018-11-19
制胜企业云之经典20问
2018-11-19
Packt.JIRA.7.Essentials.4th.Edition
2018-11-16
couchdb 权威指南
2018-11-16
ibm sonas存储最佳实践
2018-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人