东风草堂blog

公众号:来风说


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

分布式数据库

发表于 2023-03-17 | 更新于: 2023-03-21 |
分布式锁在分布式系统中,如何保证多个进程或线程之间对共享资源的访问互斥性和并发性?在分布式锁的情况下,还是需要单机锁的,可以减少对同时加锁的并发量,减轻中间件的压力。没有抢到锁怎么处理?自旋,性能差。事件通知回调最好。 如何保证多个进程或线程之间的互斥性和并发性?在一个分布式系统中,多个进程或线程需要对共享资源进行读写操作,如果不加限制,可能会导致数据不一致或者出现竞态条件。因此,需要引入分布式锁来控制对共享资源的访问。 MySQL实现分布式锁的一种常见方式是使用InnoDB的行级锁和SELECT … FOR UPDATE语句。简单,使用方便,不需要引入Redis、zookeeper等中间件。但不适合高并发的场景,db操作性能较差,有锁表的风险。具体步骤如下: 创建一个名为mutex的表,该表只有一个名为name的列,用于存储锁的名称。例如:1234CREATE TABLE mutex (name varchar(128) NOT NULL,PRIMARY KEY (name)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 当需要获取锁时,使用SE ...
阅读全文 »

nat的优化

发表于 2023-03-15 | 更新于: 2023-03-20 |
如何确认光猫是桥接还是路由模式? 当数据包进入桥接器时,桥接器会查看源MAC地址,并将其存储在一个表格中。然后,桥接器会检查目的MAC地址,并将其与该表中的所有MAC地址进行比较。如果该目的MAC地址已保存在表格中,桥接器就将数据包切换到与目的MAC地址相应的端口上。如果目的MAC地址不在表格中,则桥接器广播数据包到所有端口。 方法一: 我们用一台电脑的网口使用网线直接连接光猫的LAN口(也就是上网口),若是电脑连上之后能直接上网,那么就说明,光猫为:路由模式。 反之,若是电脑不能直接上网,那么说明光猫是桥接模式,需要电脑拨号,输入上网宽带账号、密码才能拨号上网。方法二: 我们还可以直接登录光猫的后台管理界面查看,查看网络-网络设置里面的连接模式是路由还是桥接。如下: 常见组网模式方法一:跑量设备,直接接入光猫LAN口,光猫开启DMZ或者UNPN(推荐);方法二:光猫连接模式改成桥接、路由器上网模式改成拨号上网。 光猫超密:|运营商 |账号 |密码|| —— | —— | —— ||电信 |telecomadmin |nE7jA%5m||联通 |CUA ...
阅读全文 »

chatgpt开发指南

发表于 2023-03-14 | 更新于: 2023-03-15 |
自主部署代理不用搭环境,自己有境外的vps就行,最好是openai支持的地区的vps,下载bin里面的执行文件直接就能跑,最简单的api proxy方式,最重要的是支持SSE,让客户端请求时响应得更加迅速,也提供了golang的源码,需要定制的可以自行完善。1./api_proxy -daemon -port 9000 # 最好开启daemon守护进程模式 docker的部署方式,直接拉镜像部署,不用自己配置环境,这种自主部署的代理可以支持sse,使用nodejs的可以参考:123456789101112131415sudo yum remove dockersudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl start docker # 这个不要忘了sudo cur ...
阅读全文 »

ChatGPT流式输出

发表于 2023-03-12 | 更新于: 2023-03-16 |
参考消息检查是否违规:https://platform.openai.com/docs/guides/moderation/quickstart怎么开启流式传输:https://platform.openai.com/docs/api-reference/chat/create#chat/create-stream12stream boolean Optional Defaults to falseWhether to stream back partial progress. If set, tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a data: [DONE] message. 怎么做到连续上下文:https://platform.openai.com/docs/guides/chat/introduction,可以用https://platform.openai.com/playground?mode=cha ...
阅读全文 »

ChatGPT Proxy

发表于 2023-03-12 | 更新于: 2023-03-15 |
在 Zeabur 上部署推荐使用 Zeabur,具体操作如下 Fork 这个仓库为你自己的仓库 在 Zeabur 部署你的仓库 在 Zeabur 控制台新增一个服务 选择从源码部署 选择你 fork 的仓库 选择 main 分支,开始部署 部署成功后,在 setting 选项卡下生成域名 最后得到你的服务 在 Vercel 上部署如果使用 Vercel 部署服务,必须自定义域名,因为自定义域名不受 GFW 影响,具体操作如下 点击上方一键部署按钮 部署后会自动为你 fork 此仓库,在输入框中输入自定义的仓库名称 部署成功后,得到你的服务 你必须为你的服务添加一个自定义域名,否则你将不能在国内访问你的服务 Zeabur、Vercel如何使用 ⚠️ 由于平台自身规则,api不支持SSE 无论你使用 Zeabur 还是 Vercel,部署完成后你都会得到以下这个代理服务 其中红框中的地址会完全转发到https://api.openai.com,并且此地址在国内可访问你可以在支持自定义API的应用中使用你的代理服务,实现在国内调用openai接口的目的例如openai-transl ...
阅读全文 »

nuxtjs请求其它页面闪首页的坑

发表于 2023-02-06 | 更新于: 2023-02-06 |
考虑到seo,使用nuxtjs建立了自己的产品官网,但是在部署上线后出现了问题,用户说我收藏了某个网页,但是后面请求时都跑到首页去了,我仔细看了一下,刷新网页时确实会先闪现首页,后面再跑到指定的页面。看了下nginx的请求,是请求的/about,但返回的是首页的页面。再查了下站点的文件,也没有about文件呀,只有About。想起来nginx的配置方式,请求不到对应的文件时,会跑到首页去,原因就明确了。于是我改了文件夹的名字,把大写改为小写,再次请求验证ok。那nuxtjs为什么会生成大写字母开头的文件夹?看了下源码,是因为vue文件命名成了大写,于是我重新把相关的文件名改为小写,再npm run generate生成静态部署文件就好了。至于说是坑,可能是自己理解的问题,之前以为是不能使用static静态部署,要使用server模式才行,但是我这种小网站不想这么折腾,网上有人说用server模式加nginx反向代理就好了,其实不是这个问题,所以写篇文章记录一下。贴一下相关的配置。1234567891011// nuxt.config.js// npm run generate,再部署d ...
阅读全文 »

留言板小程序定制开发

发表于 2023-02-02 | 更新于: 2023-02-02 |
定制小程序和星级用户有什么关系? 定制小程序和星级用户都拥有小程序的最高级别权限,都可以长期使用。 定制小程序的主体是你自己,因为这个小程序是你自己申请注册的,等于这个小程序就是属于你自己的了,所以小程序的名字可以自己命名。 定制小程序后,这个小程序就只有你自己一个人使用,留言内容可以由你自己把控,而星级用户使用的公共的小程序,有很多公众号使用,存在评论管理相关的风险。 定制开发流程 在微信公众平台注册一个小程序,激活后使用注册好的邮箱/密码登录进入小程序后台。 补充小程序的基本信息,如名称、图标、描述等。名称、图标、描述先和自己的公众号名字保持一致。 加客服进入后续的开发工作。 开发完成,提交微信审核。 审核通过,上线即可使用。 客服联系你,教你怎么使用留言板小程序。 定制开发价格 目前优惠价:598全包,长期维护,一次性缴费。 联系客服下单成功后安排开发,验收成果后再确认收货。 成品交付时间 一般1个工作日即可完成。
阅读全文 »

Linux守护进程(Daemon)介绍与C++实现

发表于 2023-02-02 | 更新于: 2023-02-02 |
守护进程简介守护进程(deamon)是生存期长的一种进程。它们常常在系统引导装入时启动(如果需要守护进程随系统自启动,需要在/etc/init.d目录下放置响应的启动脚本,或者利用systemctl来控制,还有一些其他方法如supervisor等,读者可自行网上搜索相关用法),仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。 从daemon的启动和管理方式区分,可以将daemon分为两大类:可独立启动的daemon(stand alone)和由一个超级daemon(super daemon)来统一管理的daemon。 stand alone:可单独自行启动的daemon。这种daemon启动后会一直占用内存和系统资源,最大的优点是响应速度快,多用于能够随时接受远程请求的服务,如WWW的daemon(httpd)、FTP的daemon(vsftpd)等。 super daemon:由一个特殊的daemon来统一管理。这种服务通过一个统一的daemon在需要时负责唤醒,当没有远程请求时,这些服务都是未启动的,等到有远程请求过来时,super daemon才唤醒相应的 ...
阅读全文 »

使用wsl搭建vscode调试环境

发表于 2023-02-01 | 更新于: 2023-02-01 |
Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。 使用了wsl可以丢弃VMware。 安装wsl参考:https://docs.microsoft.com/en-us/windows/wsl/install-manual PowerShell执行下面命令安装wsl: 123#安装wsldism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 重启机器完成WSL安装并更新到WSL2。 下载WSL2 Linux ...
阅读全文 »

协程解决了网络编程的哪些痛点

发表于 2022-12-16 | 更新于: 2023-02-20 |
网络编程的痛点reactor是基于异步事件的网络模型,但io操作都是同步的:非阻塞io,io多路复用,拷贝数据时还是需要等待。同步和异步的区别是结果是否在发起调用处返回。阻塞与非阻塞的区别是io没有就绪的情况下是否立刻返回。reactor的事件处理是异步的,回调太多会影响业务逻辑的编写,一个业务逻辑在不同的回调中完成,需要保存和传递上下文。需要通过协程捏合回调。12345678910111213141516171819202122232425262728293031void on_login(struct bufferevent *bev, struct Arg *args) { if (args->eles < 2) { reply_error(bev, "on_login 登陆参数个数不对\n"); return; } Arg *params = args->next; const char *name = params->str; size_t name_len = p ...
阅读全文 »
12…14
nephen

nephen

131 日志
16 分类
64 标签
GitHub E-Mail
友情链接
  • 新建留言板
  • 订阅号留言板(旧)
  • 订阅号留言板(新)
  • 山楂岛秘密花园
  • 代发短信
© 2016 — 2023 nephen
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
粤ICP备2022125614号-1
本站访客数 人次 本站总访问量 次