electron-api-dialog-对话框
title: electron资料搜集keywords: ‘node,electron,js,vue,”electron资料搜集”‘tags: - node - electron - vuecategories: - node - electron - vuerelated_posts: truecopyright: truetop: falsecomments: truedate: 2019-08-11 21:27:04photos:
文章首发于:clawhub.club
https://blog.csdn.net/m0_37604745/article/details/79303342https://www.jianshu.com/p/0dd7faa15bcahttps://my.oschina.net/u/3959472/blog/3021270https://github.com/k-water/electron-filesystemhttps://github.com/SimulatedGREG/electron-vuehttps://segmentfaul ...
electron资料搜集
文章首发于:clawhub.club
https://blog.csdn.net/m0_37604745/article/details/79303342https://www.jianshu.com/p/0dd7faa15bcahttps://my.oschina.net/u/3959472/blog/3021270https://github.com/k-water/electron-filesystemhttps://github.com/SimulatedGREG/electron-vuehttps://segmentfault.com/a/1190000016845718https://electron.org.cn/demo.htmlhttps://ourcodeworld.com/articles/read/106/how-to-choose-read-save-delete-or-create-a-file-with-electron-framework最近要做个简单的桌面程序,所以学一下electron,发现好多包下载都好慢啊,慢慢来吧。
数据库、缓存双写一致性方案
文章首发于:clawhub.club
最近在做自己的项目《旅行记账》app的时候,正好使用到缓存,碰巧的很,也在一个群里,有人在讨论这个数据库、缓存双写一致性方案,就查了查资料,结果就采用了用的比较多的Cache-Aside-pattern方案。
失效应用程序先从cache中取数据,没有得到(数据带失效时间),则从数据库中取数据,成功后,放入缓存。
命中应用程序从cache中取数据,取到数据后返回。
更新先将数据更新到数据库中,成功后,再将缓存数据清除。
这个套路有个问题:在并发操作的时候,假设缓存刚刚失效。有个线程A,从库中获取到旧的值,并刷缓存;线程B更新值,并清除缓存。这种情况,肯定会出现脏读。
但是数据库的读操作比写操作快的多,即A线程大多数情况下比B线程先操作结束,即先程序写缓存在大多数情况下肯定是优先于B线程删除缓存,最终,缓存中没有数据,其他线程缓存脏读的几率很小。
还有个问题:更新操作,删除缓存那一步失败了,怎么处理,肯定不能等着下一波更新或者缓存超时,应该引入重试机制:如果缓存删除失败,将key放入队列,由专门的线程处理重试。
Go-module使用
文章首发于:clawhub.club
以前都是通过govendor来做包管理,这个新项目打算用官方的go module实现包管理,用起来很简单,但是。。。坑也真大。
感谢中国的互联网环境让我们不被外界的不良声音所打扰,但是也对开发者有一些不便利的影响,比如下载包的时候被墙。
通过查阅资料,最后一些golang.org或者google.golang.org下的包可以通过github引入,而cloud.google.com/go就没有成功,最后clone了github上的项目,引入的本地包。
最后go.mod献上:
123456789101112131415161718192021222324252627282930313233343536373839404142434445module travel-accountinggo 1.12replace ( golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190701094942-4def268fd1a4 golang.org/x/exp => gi ...
Go版本图床-根据虚拟url获取真实的url
文章首发于:clawhub.club
因为每张图片上传后,都会分发到不同的图床中,库中也就存储了多张真实的url和一张虚拟的url。用户拿到虚拟URL后,访问浏览器,之后系统重定向到真实的url。
这里有个问题:免费的图床,不稳定,URL会失效。如何实时的更新图床url是个问题。
目前想到两个方案:
1,周期性扫描并请求所有url,发现失效的url之后,获取到其有效的图片后,重新上传到当前图床,更新此url。这样做的优点就是,对用户友好,拿到的永远是生效的URL,如果虽然也会有一些时间差,在这之间和、可能会有失效的URL。
2,因为这是个API应用,所以,用户每次都拿一份真实的url,如果失效了,点击刷新,重新获取另一个URL,如果还是失败的,那就再刷新,因该不会有太多的不靠谱url吧。即后端要留一个刷新的口子,根据用户发来的虚拟URL和失效URL,首先返回另一个真实URL,再异步更新这个图床的图片数据。这一方案的优点就是能减少系统的资源,缺点就是用户要刷新图片,可能不友好。
天下没有免费的午餐,既然吃着这个,那就得忍受他的缺点。还有就是这种免费的图床,因为上传到被人的库里面,你 ...
Go版本图床-图片上传
文章首发于:clawhub.club
终于把图片上传写完了,主要思路就是用户上传图片,各种校验之后,主节点全部请求图床API(同步多协程),其他节点异步多协程请求,最后结果都存储mysql中,给客户返回一个唯一的虚拟url。
请求样例:就是简单的图片上传,目前还没加上鉴权。
响应:12345678{ "code": 200, "msg": "ok", "data": { "fileName": "LOGO2.png", "url": "/2019/04/09/RcNaV1Jy-LOGO2.png" }}
库中存储后期根据main_url获取真实可用的图床url,需要请求时302,并且发现不可用时,重新将根节点中的文件取出,上传到失效图库,并且更新mysql,当然这是异步操作。
核心代码根节点处理,使用工作池。
123456789// ...
Go版本图床-Baidu+Qihoo+NetEasy+Jd+JueJin+Ali图床API
文章首发于:clawhub.club
一个一个整理,纯属技术学习与爱好,再次感谢大神:https://github.com/aimerforreimu/auxpi
注意:请善待!!!
5,Baidugithub上的那个接口已经废掉了,所以自己分析了半天百度识图,又在网上找了半天,找到了一个还不错的:https://api.uomg.com/doc-image.baidu.html这个是他封装好的,可能哪一天就不能用了,免费的东西就是不会稳的。
12345678910111213141516171819202122232425//百度识图的接口func UploadToBaidu(img []byte, imgInfo string) string { body := new(bytes.Buffer) w := multipart.NewWriter(body) contentType := w.FormDataContentType() name := utils.GetFileNameByMimeType(imgInfo) file, _ := w.CreateFo ...
Go版本图床-简书图床测试分析
文章首发于:clawhub.club
最近在研究图床应用,一直在用简书写文章,当然也会想拿简书来测试一下图床。首先观察图片上传所出发的API接口,发现有两条比较重要的:###1,获取Token和KeyGET请求:https://www.jianshu.com/upload_images/token.json?filename=test.jpg请求头中需要有:user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36cookie=remember_user_token=XXXXXXXXXXXXXXXXXX
注意:难点来了,如何获取remember_user_token!!!只有登陆过后简书才会将此信息写入cookie,有效期在一个月的样子,目前还不清楚他后台会不会强制刷新token,如果不刷新,那bub就大了。本来想做做模拟登陆,但是 ...
Go版本图床-系统架子搭建及Upload.cc+Sina+smms+sougou图床API
文章首发于:clawhub.club
Go版本的图库依然采用Gin框架作为API网关,zap+lumberjack作为日志框架,用go-ini来读取配置文件。项目地址:https://github.com/ClawHub/go-figure-bed目前仍在慢慢完善(抄袭),主要参考(抄袭)项目:https://github.com/aimerforreimu/auxpi和https://www.jianshu.com/p/6ec06f7882e9
简单的分析核心API1, Upload.cchttps://upload.cc/
12345678910111213141516171819202122232425262728func UploadToCC(img []byte, imgInfo string, imgType string) (string, string) { url := "https://upload.cc/image_upload" name := utils.GetFileNameByMimeType(imgInfo) fil ...
Go版本图床-系统设计
文章首发于:clawhub.club
最近做的系统中需要一个图床服务,图床(存储图片的服务器),因为属于个人开发,所以想找找免费的图床,以前曾经注册七牛云,但是竟然需要用手持身份证照片,感觉太过于隐私,所以不想用,我怕他那我数据去卖。
网上搜了搜免费的图床,稳定点的有新浪之类,曾经用过github做过图床,但是感觉速度不是很满意,而且不像乱用github,最后找到个大神级别的源码:https://github.com/aimerforreimu/auxpi
支持图床:搜狗新浪 (私有+公共)SMMS奇虎 (360)百度阿里京东Upload.ccFlickr网易掘金本地
借鉴这个服务,自己简单的设计了个图床系统,用户上传图片,系统解析鉴权,图片存根节点,返回图片唯一URL,异步根据权重上传其他图床。用户通过URL302各种图床,如果真实url失效了,就异步从根节点获取图片重新上传图床。目前属于设计阶段,代码架子也刚刚完成:https://github.com/ClawHub/go-figure-bed
未完待续。。。