首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

手把手教你用神器nextjs一键导出你的github博客文章生成静态html!

代码解析 想要实现上面所说的功能,需要先把功能拆解一下。 发起请求取自己github仓库里的博客,获取文章存成md格式本地。...使用next export导出博客。 首先先用next脚手架生成一个项目,然后项目下建立builder文件夹,用来编写逻辑。...全局配置 全局的一些配置放在了config.js中,项目的小伙伴只需要更改里面的配置,就可以一键生成你自己的静态博客了。...: '', client_secret: '', } repo字段中的信息决定了请求会去哪个仓库下拉issues生成博客,user下的字段定义了首页显示的用户名,client_id和client_secret...}.md`), blog.body, 'utf8') }) return blogs } catch (e) { console.error('仓库失败,请检查您的用户名和仓库名

3.5K20

使用React-Query解决接口请求的麻烦事

return } 这是一个组件服务端数据的简单例子,组件中,我们简单取了一个接口的数据,并监听接口的状态,根据状态来更新不同的UI。...使用的时候会自动把它拼接为/repoData/1,这个缓存用户访问过的页面,非常有用。...除此之外,使用useQuery取回来的数据,会被默认缓存起来,然后可以通过配置过期时间,重新等策略来进行管理。...useMutation 除了获取数据,很多时候还需要处理数据的修改,比如说最简单的todo list例子,除了数据列表,还需要增删改数据,而这个时候除了需要发送接口,还需要修改本地的数据,React-Query...笔者之后也会继续更新React-Query的其他使用场景,如果可以的话,不妨点个赞再走呢,这对很重要。

70230
您找到你想要的搜索结果了吗?
是的
没有找到

干货 | 单个场景秒级返回,携程机票持续集成之线上场景回放优化

之前的方案定时日志,然后将其存储redis进行缓存,每次进行,进行日志数据准备往往需要半天的时间,成为持续集成的一个瓶颈。...五、采取新方案后的效果 我们的日常发布一般是晚上生产流量比较低的时候进行。之前进行流量回放,往往需要从早上开始准备,进行日志,整个流程大致要4个小时以上(画外音:的青春,的泪)。...使用新方案后,我们的场景就可以使用索引来提高检索速度,这样每个场景的日志可以做到秒级返回,近乎实时的日志获取,大大提高了流量回放的效率。...六、使用Flink和Es需要注意的地方 Flink的使用过程中有几个地方需要注意,我们使用的是Flink的StreamApi,尽管Flink有内存溢出机制,但是实际使用过程中,由于每天产生的日志数据量...虽然我们不需要再手写Mapping文件来规范每个字段的类型,但必须要处理好每个字段的类型,比如如果存在多级对象并且Root对象存在含有.的字段,Es会认为这是一个对象字段而不是一个String或者int

61530

mysql复制

当SQL线程追赶上I/O线程中继日志通常已经系统缓存中,所以中继日志的开销很低。...2、异步复制场景 数据写入主库即返回,从库通过IO线程日志,再通过SQL线程进行异步回放。...server_id定义my.cnf中  server_id = xxx,必须明确指定一个唯一的服务器ID,默认的服务器ID通常为1(这和版本相关,一些mysql版本根本不允许使用这个值)。...使用默认值可能会导致和其他服务器的ID冲突,因此要保证它是唯一且不变的 Mysql复制过程中为了防止环形无限复制,当SQL线程读取中继日志的时候,会丢去事件中记录的服务器ID和该服务器本身ID相同的事件...如果的binlog是SQL语句,备库会走和主库相同的逻辑,如果是row 格式,则会调用存储引擎来执行相应的修改。

2.6K80

MySQL 开发实践 8 问,你能 hold 住几个?

,每次select单条记录的4个字段(2个int(11),2个varchar(512)) 分析:CPU跑6%,瓶颈IO,和db的cache大小相关 实验4(读):select(where条件没命中索引...---------------------------------------+ 另外很多同学在拉全表数据,喜欢用select xx from xx limit 5000,1000这种形式批量...当然索引也非越多越好,过多的索引会影响写操作性能 只select出需要字段,避免select +----------+------------+----------------------------...4.SQL层面已难以优化,请求量继续增大的应对策略? 下面是能想到的几个方法,每个方法又都是一篇大文章了,这里就不展开。...,更新数据库 属于slave主动请求的模式 实际使用可能遇到的问题 数据非强一致:CDB默认为异步复制,master和slave的数据会有一定延迟(称为主从同步距离,一般 < 1s) 主从同步距离变大

11.2K61

Web 后端的一生之敌:分页器

我们不再使用 offset 表示进度而是使用上次返回的最后一条结果的自增 id 作为游标。...order by id desc limit 10; 用户浏览第一页记住最后一篇文章《Redis 缓存更新一致性》的 id=233, 在拉第二页需要进行查询: select * from posts...查询下一页只要查询 id cursor) 即可。 除了自增 id 外只要是不重复的排序字段都可以作为游标,比如时间戳也可以作为游标。...游标分页器中不再有具体的页码概念也不再需要总页数,只需要知道当前是否为最后一页即可。我们可以查询数据库可以将 limit 加 1 来方便地判断当前是否是最后一页。...若无法避免分页则只能采取快照的方式,搜索完毕后将整个搜索结果缓存下来,后续内容不重新搜索而是快照的剩余内容。

12310

以 B 站为例,聊聊站内消息系统的设计

type VARCHAR 发给哪些用户:单用户 single;全体用户 all,vip 用户,具体类型各位小伙伴可以根据自己的需求选择 state BOOLEAN 是否已被过,如果已经过,就无需再次...用户需要查看系统通知,从 t_user_system_notice 表中查询就行了。 注意: 因为一次的数据量可能很大,所以两次的时间间隔可以设置的长一些。... t_manager_system_notice 表中的通知需要判断 state,如果已经过,就不需要重复, 否则会造成重复消费。...), source 为评论就知道:有用户某条评论里@了; 当 action 为回复,source 为文章就知道:有用户回复了的某篇文章; 当 action 为回复,source 为评论...以下是对于消息设置的设计: 字段名 类型 描述 user_id LONG 用户 ID like_message BOOLEAN 是否接收点赞消息 reply_message BOOLEAN 是否接收回复消息

6.9K51

干货 | 携程活动搭建平台的前端“开放性”建设探索

首先需要改造组件的最终形式,使其可以接收公共依赖(reactreact-dom,公共依赖等),这时可以修改默认打出的UMD自执行函数,使其返回一个普通函数,“依赖”可以通过渲染引擎解析通过“形参”...最方便的做法是希望能够动态复用视频组件,即,“产品组件”需要视频组件的时候才会视频组件,不需要的时候,代码中是不会有视频组件的资源的。...首先那么多的组件是否有精力都去维护npm包是一个问题(因为主要的使用方式是“乐高CDN组件”,一般不需要打npm包,而且组件普遍功能迭代很快),其次npm引入的资源被直接打在了你的组件包里面。...产品列表中需要新增视频展示,则产品组件可以关联引用“视频组件”,并将列表项的数据(如视频地址)传给视频组件,用作渲染。 真实使用情形有两种: 情况1:通过已保存的组件的唯一id。...处理这些“原子组件”服务端请求的数据需要通过renderBy这样的“依赖它的组件id”来区分哪份数据挂载在哪个渲染运行时下,因为原子组件需要考虑一份组件多次复用的情况。

1.1K20

如何整理自己的前端面试题库_2023-02-28

具体工作流程如下: 浏览器第一次请求资源,服务端返响应头中加入 Etag 字段,Etag 字段值为该资源的哈希值 当浏览器再次跟服务端请求这个资源,在请求头上加上 If-None-Match,值为之前响应头部字段...="container"> 是标题 需要删除 id 为 title 的元素,做法是:...="container"> 是标题 是内容 </...对于浏览器的缓存,主要针对的是前端的静态资源,最好的效果就是,发起请求之后,相应的静态资源,并保存在本地。...如果服务器的静态资源没有更新,那么在下次请求的时候,就直接从本地读取即可,如果服务器的静态资源已经更新,那么我们再次请求的时候,就到服务器新的资源,并保存在本地。

1.3K50

Oh! Binlog还能这样用之Canal篇

背景 不知道是否你还在为下面的问题而困扰: •当你使用了redis或者其他中间件做缓存的时候,经常发现缓存和数据库的数据不一致,只能通过定时任务或者缓存过期的方式去做一些限制。...CanalParser: 用于mysql-binlog,并进行解析。 EventSink: 将解析的数据进行处理加工(过滤,合并等)。...CanalParser产生数据让EventSink进行加工,加工后的数据会存储CanalEventStore中,然后MQ从CanalEventStore中不断的最新数据,然后投递到MQ。...•Step3: 通过show variables like 'server_id' 命令,获取我们需要监听binlog服务的serverId。...image.png •Step5: 进行dump操作,模拟slave发送注册slave请求,以及dump binlog请求,然后用一个死循环不断的从binlog中数据: image.png •

1.7K20

可视化埋点在React Native中的实践

系统介绍 下面按照使用流程来介绍我们的系统。首先,需要React Native 客户端接入我们的 SDK。...-1.image] 如图所示,当埋点配置人员 React Native 客户端点击选择所需要埋点的元素,SDK 会高亮该元素。...埋点配置发布后,用户使用我们的产品,SDK 会同步配置文件,并根据配置文件匹配用户的行为进行数据上报。...2.4 埋点上报 当用户打开页面,SDK 首先会去远程最新的埋点配置文件,此时又存在一个问题:埋点配置文件是需要时间的,这就导致这个过程中用户的行为事件全部都会丢失。...当发现配置文件成功,会开始消费队列中的用户行为事件,如果用户行为事件对应的组件不能在配置文件中找到,则直接丢弃;否则,会对其进行处理。

1.9K60

初识package.json,两个重要字段不能忽略

选择本地搭建 React 开发环境,这与实践更加接近。初学时,我们可以通过 Create React App 创建项目。它是 React 初学者创建单页应用的最佳方式。...初学时我们只需要认识如下两个重要的字段即可。 dependencies 该项目的所有依赖包及其版本的描述。...当我们命令行工具中执行如下指令,依赖包会重新安装 // 使用 npm npm install // 使用 yarn yarn install 例如当前我们项目中,使用React字段下就会有如下配置...我们可以字段中定义属于我们自己的指令,例如,我们要区分不同环境,可以自定义如下指令启动项目 也可以使用 npm start // 针对 dev 环境的启动指令 "start:dev": "react-scripts...git 仓库中,而应该在首次 git 项目代码之后,执行 yarn install 重新安装依赖包。

69010

移动跨平台框架ReactNative滚动视图ScrollView【17】

UI使用。...当屏幕的内容超过一屏,我们很熟练的往上一点就可以看到剩下的内容了,这时候右边还会滚动条告诉我们这是可以往上的。 这看起来很简单的内容,并不是每个 React Native 组件天生都自带的。...并不是每个组件要显示的内容超过一屏可以往上。 那个我们所熟悉的组件之母 `` 就不支持这种操作。 例如下面的代码,我们一个 `` 中显示一组 语言 ,超过的部分就被截掉了。...,Go 语言下面的那些语言始终是看不到的。...例如上面那个范例,我们只需要做一点点的修改 App.js import React, { Component } from 'react'; import { Text, View, ScrollView

1.4K20

群消息已读回执(这个diao),究竟是推还是

每当发出一条微信消息,都希望对方尽快看到,并尽快回复,但始终不知道对方是否阅读。 每当收到一条不能立马回复的微信消息,都默默返回,假装没看见。 画外音:不想回复的人,唉,你只是个好人。...group_users(gid, uid, last_ack_msgid); 各字段的含义为:群ID,群成员UID,群成员最后收到的一条群消息ID。...对于离线的群友,会在下一次登录未读的所有群离线消息,并将last_ack_msgid修改为最新的一条消息。 核心问题4:如果ack丢失,群友会不会重复的群消息?...同时: 需要存储40条ack记录 群数量,群友数量,群消息数量越来越多之后,存储也会成为问题。 是否有优化方案呢? 群消息的推送,能否改为接收方轮询? 答:不能,消息接收,实时性是核心指标。...发送方在线,对于已读回执的发送,真的需要实时推送么? 答:其实不需要,发送方每发一条消息,会收到40个已读回执,采用轮询(例如1分钟一次,一个小时也就60个请求),可以大大降低请求量。

1.5K30

复制信息记录表|全方位认识 mysql 系统库

SQL线程执行完relay log之后,会自行决定何时清理掉这些已经执行完成的relay log文件,但如果使用FLUSH LOGS语句或mysqladmin flush-logs命令强制滚动中继日志...从库relay log中记录的主库binlog,不会改变主库的server id、时间戳信息以及last_commit和sequence_number值,这样,从库SQL线程执行binlog重放,就可以依据这些信息决定从库是否需要严格按照主库提交顺序进行提交...(从库重放的事务只是分发顺序按照主库提交顺序,但是从库自己提交这些事务是否按照主库提交顺序进行提交,还需要看从库自己的slave_preserve_commit_order变量设置,设置为1则严格按照...然后启动复制线程,继续从主库最新的binlog进行数据复制。...PS:如果在主从复制架构中,有2个以上的从库,且从库永远不做提升主库的操作,可以使用如下方法优化从库延迟(该场景下,从库无需担心数据丢失问题,因为有另外一个从库兜底+不做主从切换,只需要专心提供快速应用主库

92530

用 GraphQL 查询你的 Django 应用

使用 REST 协议进行资源,我们总是会面临一些实际的问题,而 GraphQL 可以在一定程度上解决。...传统的 REST 协议 假如我们需要获取所有用户维度的评论,我们需要先获取通过 /users 所有用户 id,再使用 id 列表遍历查询 /users//comments 来获取相关的列表。...简单来说,要想在原生 Javascript 中直接使用 GraphQL 并不是一件特别容易的事,需要一些库来协助和管理 GraphQL 数据。...相较于原生的 GraphQL ,客户端主要解决了几件事情: 客户端数据缓存问题(包括缓存一致性、更新缓存等) 数据分页、声明式数据获取 ......return User.objects.get(username=username) 需要注意的是,当我们使用 resolve_ 函数去处理查询,GraphQL 和 REST 本质上只是查询 DSL

2K60

React 面试必知必会》Day5

当一个组件的 props 或 state 发生变化时,React 通过比较新返回的元素和之前渲染的元素来决定是否有必要进行实际的 DOM 更新。当它们不相等React 将更新 DOM。...每次组件渲染,函数被调用的常见错误是什么? 你需要确保传递函数作为参数,没有调用该函数。...不,目前 React.lazy 函数只支持默认出口。如果你想导入被命名导出的模块,你可以创建一个中间模块,将其作为默认出口。这也保证了摇树的工作,不会使用的组件。...你可以使用函数或类来创建无状态组件。但除非你需要在你的组件中使用生命周期钩子,否则你应该选择函数组件。...class App extends Component { // 也可以使用字段语法 constructor(props) { super(props); this.state

1.2K60

CloudBase CMS + Next.js:轻松构建一个内容丰富的站点

云开发环境是云开发中的一个概念,每个云环境都集成了应用开发需要的基础能力,比如云数据库、云函数,开发者可以方便地组合、使用它们,为应用开发赋能。TCB-CMS 也是建立云环境之上的。...Next.js 应用构建期,就会对每个页面执行数据的逻辑,并根据 React 组件构建的 UI,渲染出最后的 HTML 页面,接下来,我们要做的就是,构建主页的 UI,以及为主页编写数据的逻辑... getHomePosts 函数中,我们获取了展示用的文章。具体的逻辑如果不懂也暂时不必深究,现在只需要知道:通过执行 getHomePosts 我们能从云环境的 CMS 系统中文章列表。... api.js 中,添加以下内容: // 对于 image 类型的字段,直接取得的 id 需要转换为可用的 URL const dealWithUrl = url => 'https://' + url...这就是我们只需要编写一次文章数据逻辑,编写一次文章页面 UI,就能让 Next.js 生成出无数文章的静态页面的奥秘。

2.4K20

基于Docker的MySQL主从复制搭建

利用Docker搭建主从服务器 首先docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master...然后我们就可以使用vim编辑my.cnf,my.cnf中添加如下配置: [mysqld] ## 同一局域网内注意要唯一 server-id=100  ## 开启二进制日志功能,可以随便(关键) log-bin...server-id=101  ## 开启二进制日志功能,以备Slave作为其它Slave的Master使用 log-bin=mysql-slave-bin  ## relay_log配置中继日志...链接Master(主)和Slave(从) Master进入mysql,执行show master status; File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master...网络不通 检查ip,端口 密码不对 检查是否创建用于同步的用户和用户密码是否正确 pos不对 检查Master的 Position 测试主从复制 测试主从复制方式就十分多了,最简单的是

40310

基于Docker的Mysql主从复制搭建

利用Docker搭建主从服务器 首先docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master...然后我们就可以使用vim编辑my.cnf,my.cnf中添加如下配置: [mysqld] ## 同一局域网内注意要唯一 server-id=100 ## 开启二进制日志功能,可以随便(关键) log-bin...=101 ## 开启二进制日志功能,以备Slave作为其它Slave的Master使用 log-bin=mysql-slave-bin ## relay_log配置中继日志 relay_log...链接Master(主)和Slave(从) Master进入mysql,执行 show master status; File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master...网络不通 检查ip,端口 密码不对 检查是否创建用于同步的用户和用户密码是否正确 pos不对 检查Master的 Position 测试主从复制 测试主从复制方式就十分多了,最简单的是

1.2K30
领券