首页
免费后端云服务
关于
推荐
免费图床源码
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,723 阅读
2
微信小程序三级联动之多列选择器
9,607 阅读
3
小程序开发免费后端之神秘利器分享
9,537 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,082 阅读
5
学会微信服务端开发第一步
8,980 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Magic
累计撰写
124
篇文章
累计收到
85
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
推荐
免费图床源码
搜索到
124
篇与
的结果
2018-05-31
想自己上线微信小程序一定要会代码?
最近在录制一些Bmob微信小程序视频教程,没来得及更新本教程教你如何免费发布一款自己微信小程序。微信小程序门槛已经下降到个人了,很多不会写代码的人也想免费上线一款自己的小程序,该如何做到?他有这些要求:无需写代码整个发布到上线最好不要超过10分钟我要保留整个小程序的源码,以防止下次上线需要。项目源码安全无后门、有详细的文档说明稳定、安全。免费、不花一分钱。本视频10分钟上线自己微信小程序,一一解决这些问题。视频地址:https://zhuanlan.zhihu.com/p/33283879
2018年05月31日
7,228 阅读
0 评论
14 点赞
2018-05-14
普通Html如何调用数据库
最近有人问到不用VUE等前端框架,只想简单在一个html显示我的数据库数据。如何实现,这里写个例子 js 代码实现不到10行效果HTML代码<html> <head> <title>Bmob后端云测试</title> <script src="Bmob-1.4.2.min.js"></script> <script> Bmob.initialize('9b41c92db4976a1bae59d554f0c3fc4a', '7fa2bb3451025d9da1f234e700ea161a') const query = Bmob.Query("newslist"); query.find().then(res => { console.log(res) for (var i = 0; i < res.length; i++) { document.write(`${i}:${res[i].title}-----${res[i].createdAt}<br>`) }; }); </script> </head> <body> </body> </html>最后附上JS操作数据库文档https://bmob.github.io/hydrogen-js-sdk/#/?id=查询所有数据
2018年05月14日
398 阅读
0 评论
25 点赞
2018-03-21
文档格式自动创建mysql数据结构脚本
这篇分享个自己写的一个实用的脚本给大家。最近新开发一套系统,需要建立数据库,数据表文档已经写好,需要建立数据库。看图:这套系统大概有十几个这样的数据表,每个表的字段类型、长度、描述都需要填写,算是一个重复工作,想到可以写个小脚本,自动生成创建表结构。生成结果看下面代码CREATE TABLE `admin_financial` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `portId` varchar(50) NOT NULL COMMENT '端口id', `weixinId` varchar(50) NOT NULL COMMENT '原始ID', `name` varchar(50) NOT NULL COMMENT '公众号名', `opUser` varchar(50) NOT NULL COMMENT '操作者', `companyName` varchar(50) NOT NULL COMMENT '企业名称', `sum` int(11) NOT NULL COMMENT '金额(分)', `type` int(11) NOT NULL COMMENT '操作类型', `accountType` int(11) NOT NULL COMMENT '账户类型', `time` timestamp NOT NULL COMMENT '时间', `billNo` varchar(50) NOT NULL COMMENT '账单编号', `status` int(11) NOT NULL COMMENT '状态', `dstAccountId` varchar(50) NOT NULL COMMENT '目标账户', `dstAccountType` int(11) NOT NULL COMMENT '目标账户类型', `dstAuthAccount` varchar(50) NOT NULL COMMENT '目标授权账户', `dstSubAccount` int(11) NOT NULL COMMENT '目标子账户', `srcAccountId` varchar(50) NOT NULL COMMENT '来源账户', `srcAccountType` int(11) NOT NULL COMMENT '来源账户类型', `srcAuthAccount` varchar(50) NOT NULL COMMENT '来源授权账户', `srcSubAccount` int(11) NOT NULL COMMENT '来源子账户', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='财务记录表';这里我使用了unix* 系统都可以跑的shell 来写。主要用到awk 命令。首先建立个源数据文件,用来放文档格式。我这里复制文档的格式是这样。portId 端口id String spid15e226338b weixinId 原始ID String gh_94415782f4da name 公众号名 String xxx opUser 操作者 String xxx companyName 企业名称 String 信息技术有限公司 sum 金额(分) Int 5020(50.2元) type 操作类型 Int 1:转账;2.退款 accountType 账户类型 Int 3:赠送;4:现金;14:信用金固定 time 时间 Date 2018-06-01 00:11:22 billNo 账单编号 String xxxx status 状态 Int 1 dstAccountId 目标账户 String spid15e226338b dstAccountType 目标账户类型 Int spid15e226338b dstAuthAccount 目标授权账户 String dstSubAccount 目标子账户 Int 14 srcAccountId 来源账户 String spid15e226338b srcAccountType 来源账户类型 Int spid15e226338b srcAuthAccount 来源授权账户 String srcSubAccount 来源子账户 Int 14然后写脚本#!/bin/bash # author:Magic # url:www.bmob.cn # table="default_table" if [ -n "$1" ]; then table=$1 else table="default_table" fi if [ -n "$2" ]; then comment=$2 else comment = "" fi cat dx.txt |awk -F " " ' BEGIN{count=0; table= "'$table'";comment="'$comment'"} {name[count] = $1;c[count] = $2; t[count]=$3;count++;}; END{ print "CREATE TABLE `" table "` (" print "`id` int(11) unsigned NOT NULL AUTO_INCREMENT," for (i = 0; i < NR; i++){ printf "`"name[i]"` " if(t[i]=="Int"){ printf "int("11") " }else if(t[i]=="String"){ printf "varchar("50") " }else if(t[i]=="Date"){ printf "timestamp NULL " }else if(t[i]=="Float"){ printf "float(10,4) " } printf "NOT NULL" print " COMMENT \""c[i]"\"," } print "PRIMARY KEY (`id`)" print ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT= \""comment"\";" }' 如何执行:命令行执行 sh db.sh tableName 财务表 * sh 执行shell * db.sh 脚本名称 * tableName 表名称 * 财务表 描述效果截图这样就可以实现复制文档表,然后就生成SQL,如果需要最后去数据库手动设置下索引,这样就完美快速的基于文档,生成Sql结构,大家有更好的方法,也可以一起交流。
2018年03月21日
5,373 阅读
0 评论
26 点赞
2017-12-26
LAMP的思考:性能优化总结
篇首:俺自己很low,写的东西也很low,各位前辈已经各种总结的,so,大家轻喷啊,俺只是为了记录一下子。 刚刚不经意间查看关于php加速方面的消息,看到了一句话“lamp结构的瓶颈在于M”,感觉是真知灼见,当然这是在理想状态下的情况。对于实际情况下的生产环境来说,需要解决的问题是多种多样的,l-a-m-p在不同阶段需要优化的点是不同的,虽然通过努力最终的瓶颈在于M,但是期间的各种努力也是不容忽视的。下面我就意识流的总结一下,在网站生产环境遇到的各种问题。 以下是之前遇到问题的各种汇总: 1、php内的sql代码性能存在问题 这个存在于两方面,一个是sql本身优化不够,另外一个方面是随着数据量的增加,某些性能问题会逐渐暴露。 2、apache处理模式造成的内存消耗 由于apache是以进程的形式,同步阻塞式的处理http请求,so,当网页本身加载元素过多的话,会造成大量的 http进程并发,消耗服务器大量的内存,导致访问缓慢或者异常。 解决办法很是简单,主要有一下几个方面 a、动态页面转成静态页面。 b、转成lnamp的模式,图片等静态资源由nginx进行处理,减少http进程数量 3、CDN服务的使用 这个并不是性能问题,而是为了解决用户访问的页面加载速度问题,以及不同网络之间的延迟问题。 具体使用效果是非常不错的,会大大的改善各地用户的访问速度,土豪公司可以自建CDN,中小公司 选择第三方服务也是不错的选择。 4、缓存的使用 这个有两个方面的缓存,其中主要的缓存是数据也就是动态方面的缓存 使用的软件主要有redis以及memcache(开源用的爽爽哒) 这两个软件都是针对php与mysql之间的请求进行缓存,减少与mysql的直接交互,提高访问速度。 5、apache的负载均衡,mysql的读写分离 即便增加了CDN、缓存,优化了apache的页面,但是高并发的问题依然会随着用户量的增加而慢慢出现,那么这个时候 就要发大招了,扩!容!硬!件!。永远都好使的大招,用完即生效。我们现在主要使用的是nginx+apache的负载均衡方式。 而mysql的读写分离也so easy,使用主从复制即可。对于及时性要就不是太高的网页访问,问题不大。 6、奇葩问题粗现了!!! Then,该优化的俺们都优化了,前辈的经验也是各种借鉴,最后俺们发现页面访问还是慢得想让用户注销。问题到底在哪? 又经过了艰苦卓绝的调查与研究,最后发现,上一个离职的哥们开放的一个权限系统(所有网页加载都会用),没有关闭 debug,我去!我一口老血喷在了显示器上啊!苍天啊,我曾经一度怀疑自己是不是在做无用功啊! 这里不是挑起运维与研发的阶级矛盾,而是总结经验教训,以后不在走弯路! 先到这吧!以后有了经验再补充!
2017年12月26日
11 阅读
0 评论
0 点赞
2017-12-18
Serverless实战驾校小程序【考题数据采集】四
Serverless实战驾校小程序【考题练习】四由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,Python,PHP,Golang,Java,nodejs等等, 这里我就不用其他语言,使用接近JavaScript语法的,nodejs,采集后生成CSV文件。主要用到三个库:网络库解析库文件库这里找到一个采集的地址:http://www.jiakao.com/cnty/web/km1_tc_new.php?q=11. 选择Table 打印这效果let table = $('table'); table.each(function (index, item) { let x = $(this).text(); console.log(x) 2.提取标题由于数据库,标题title是一个单独字段,这里先把title取出来。let table = $('table'); table.each(function (index, item) { let x = $(this).find("tr>td").eq(0).text(); let t = x.split('\n\t'); console.log(t) });这里的数据[1]就是标题数据3. 提取题目内容这里不细说了,后面我会放上代码,大家自己看。 无非就是拿到A、b、c、d结果,放到一个对象里面,跟导入的格式一致就行。4.完成导入Bmob控制台导入CSV,导入后,效果如下。小程序里面,我们测试下。放代码let http = require('http'); let fs = require('fs'); let cheerio = require('cheerio'); let request = require('request'); let iconv = require('iconv-lite'); let i = 0; let url = "http://www.jiakao.com/cnty/web/km1_tc_new.php?q=1"; //初始url function fetchPage (x) { //封装了一层函数 startRequest(x); } function startRequest (x) { //采用http模块向服务器发起一次get请求 http.get(x, function (res) { let html = ''; //用来存储请求网页的整个html内容 let titles = []; res.setEncoding('binary'); //防止中文乱码 //监听data事件,每次取一块数据 res.on('data', function (chunk) { html += chunk; }); //监听end事件,如果整个网页内容的html都获取完毕,就执行回调函数 res.on('end', function () { html = iconv.decode(html, 'gb2312'); let $ = cheerio.load(html); //采用cheerio模块解析html let table = $('table'); console.log('help,choseList,title,video,type,bType,bModels,bSubjects,pic') table.each(function (index, item) { let t; let d; let tArr = []; let choseList = [] //{""item"":""6个月""} $(this).find("tr>td").each(function (i, items) { // t = $(this).eq(0).text().split('\n\t'); t = $(this).text().split('\n\t'); if (i == 0) { tArr.push(t[1]) } d = $(this).text().trim() if (i > 0 && i < 6) { if (d.indexOf('A') != -1 || d.indexOf('B') != -1 || d.indexOf('C') != -1 || d.indexOf('D') != -1) { let answerStr, answerArr; // 获取正确答案 let okStr = $(this).parent().attr('onclick') if (okStr != undefined) { answerStr = okStr.substr(25, 3) answerArr = answerStr.split(',') } d = d.split('、'); if (answerArr[0] == answerArr[1]) { choseList.push({ "\"isChose\"": true, "\"item\"": "\"" + d[1] + "\"" }) } else { choseList.push({ "\"item\"": "\"" + d[1] + "\"" }) } } } }) console.log(`,"${JSON.stringify(choseList)}",${tArr},,1,413405afba,1,1,`) }); }) }).on('error', function (err) { console.log(err); }); } fetchPage(url); //主程序开始运行总结:Bmob数据库支持CSV导入, 我们把采集到的数据输出为一个CSV即可,然后后台点击导入,采集到数据后,进行处理,分四步。拿到标题拿到结果分析出正确答案整理数据格式导出CSV由于这里100题只是为了做Demo,时间第一,并没有采集图片,如果正式上线,还需要采集图片并上传。时间关系,这一节就到这,有问题可以在下面评论。
2017年12月18日
1,236 阅读
0 评论
21 点赞
1
...
11
12
13
...
25