精华内容
下载资源
问答
  • Web-DB-app-源码

    2021-03-19 16:21:19
    Web-DB-app
  • 有了Web框架和ORM框架,我们就可以开始装配App了。 通常,一个Web App在运行时都需要读取配置文件,比如数据库的用户名、口令等,在不同的环境中运行时,Web App可以通过读取不同的配置文件来获得正确的配置。 由于...
  • 电子应用 波兰中世纪拉丁语字典(Web App
  • Blockly编程代码,APPInventor对网络微数据库进行管理,包括增加记录、删除记录、修改记录、查询记录。
  • 测验Trivia是一个Web应用程序,它使用Open Trivia DB API来主持有关多个主题的不同测验。 用户可以根据自己的意愿自定义测验,例如测验中的问题数,问题类别和难度级别。 当用户尝试测验时,也会实时计算分数。 ...
  • 您需要运行mongo db 您需要加载一些初始种子数据 grunt db-seed 项目根目录中的起始节点 node app.js 该应用程序将在端口3000上启动,您需要注册并创建一个帐户才能登录 ## Grunt任务 ####其他任务 JShint的棉绒...
  • 本篇文章作为项目一些架构的设计和技术的准备笔记,主要涉及后端的整体架构、安全性、webapp、数据库(redis、mongodb、时序数据库)运维、API监控、爬虫监控、异步任务队列、维护代理IP池等和部分前端和app的整体...

    本篇文章作为项目一些架构的设计和技术的准备笔记,主要涉及后端的整体架构、安全性、web、app、数据库(redis、mongodb、时序数据库)运维、API监控、爬虫监控、异步任务队列、维护代理IP池等和部分前端和app的整体思考:
    第一次尝试整体把握 会有很多不足支持 欢迎大家批评指教

    • 数据库设计和运维
      • mongodb(业务信息、用户信息)
      • redis(session、浏览统计)
      • InfluxDB(时间性业务信息)

    数据库设计和运维

    mongodb

    mongodb备份

        由于自己的项目已经丢失过两次数据库数据:一次由于vps供应商故障所有数据丢失,一次由于启动mongo时使用的配置文件错误 导致设置auth=true!苦逼的教训啊,被扫描出来了,然后数据库被清,留下了比特币勒索信息。。。。所以这回虽然项目很小,但是也考虑到了备份问题。

    目前主要的mongodb备份方式有以下几种:
    1.文件系统快照
        如果MongoDB存储数据文件的容量支持基于时间点的快照,您可以在某一特定时刻及时通过使用这些快照以创建一个MongoDB系统的备份。
    2.mongodump mongo提供的 在线备份方式
        直接到处数据库文件
    3.主从复制(可以有一台机器上实现主从)
        主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等.
        最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址.
    4.副本集(replset)
        副本集有点类似主从复制,不过跟真正的主从复制还是有两点区别的。
    - 该集群没有特定的主数据库。
    - 如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能.

    展开全文
  • Web登录 ** 1、 写一个登录界面,并为其写上js 2、 后端代码(python) #进入登录界面 @app.route("/") def login(): return render_template('login.html') #获取表单提交的数据,并返送结果 @app.route("/...

    **

    Web登录

    **
    1、 写一个登录界面,并为其写上js
    在这里插入图片描述
    在这里插入图片描述

    2、 后端代码(python)
    #进入登录界面

    @app.route("/")
    def login():
        return render_template('login.html')
    

    #获取表单提交的数据,并返送结果

    @app.route("/dologin",methods=["post"])
    def dologin():
       sch_num= request.form['sch_num']
       password= request.form['password']
       sql="select a.name,a.sch_num,a.password,a.status,b.role_id from viewer a left join user_link b on a.sch_num=b.sch_num where a.sch_num='{}'"
       sql=sql.format(sch_num)
       db = pymysql.connect(hostName, userName, userPassword, dbName)
       _cursor = db.cursor()
       user=None
       try:
          _cursor.execute(sql)
          user = _cursor.fetchone()
       except:
          print('出错啦')
       _cursor.close()
       db.close()
    
       # 处理数据
       # A、判断用户名是否存在
    
       if (user == None):
          return render_template('login.html', msg="用户名不存在")
    
       # B、判断密码是否正确
    
       if (user[2]!=password):
          return render_template('login.html', msg="密码不正确")
    
       # C、判断状态是否可用
    
       if (user[3]!= 1):
          return render_template('login.html', msg="账号已被锁定,请联系管理员")
    
       # D、登录信息写入session
    
       session['isLogin'] = 'Y'
       session['userInfo'] = user
       return redirect(url_for("index")) 
    

    运行结果:
    在这里插入图片描述
    存储:
    在这里插入图片描述
    =>这里还可以在手机里写一个小的数据库(但是有大小限制)

    **

    App登录

    **
    Login.vue

    <template>
    
    <div id="page">
    
    <van-nav-bar title="用户登录"/>
    
    <van-cell-group>
        <van-field
          v-model="my.sch_num"
          required
          clearable
    	  type="number"
          label="用户名"
          placeholder="请输入用户名"
        />
    
        <van-field
          v-model="my.password"
    	  required
          type="password"
          label="密码"
          placeholder="请输入密码"
    />
    </van-cell-group>
    
    <div class="btns">
    <van-button class="jumpBtn" type="primary" @click.native="handleClick" size="large">登录</van-button>
    </div>
    
    <div class="tabarTop90px"></div>
    
    </div>
    
    </template>
    
    <script>
    import {getStore,setStore} from '@/store'        //取、写数据到本地
    import axios from 'axios'
    import Config from '../config'
    
    import {Button, Field ,Cell, CellGroup, NavBar, Dialog} from 'vant';
    
    export default {
      name: 'Login',
    //data接收提交的数据:学号&密码
      data () {
        return {
          isShowx:false,
          my:{sch_num:"",password:""}
        }
      },
    //componemts定义组件的名字
      components: {  
    	[Field.name]: Field,
    	[Cell.name]: Cell,
    	[CellGroup.name]: CellGroup,
    	[NavBar.name]: NavBar,
    	[Button.name]: Button,
    	[Dialog.name]: Dialog
      },
    //methods对应登录按钮的click事件:判空&登录(记录用户信息、授权token、跳转)(失败)
      methods:{
    	  handleClick(){
    		  //1\判空
    		  if(this.my.sch_num==""){
    			  Dialog.alert({
    				  title:'系统提示',
    				  message:'请输入用户名'
    			  }).then(()=>{
    				  //on close
    				})
    			  return;
    		  }
    		  if(this.my.password==""){
    			  Dialog.alert({
    				  title:'系统提示',
    				  message:'请输入密码'
    			  }).then(()=>{
    				//on close
    				})
    			return;
    		  }
    		  //2\登录
    		  let config = {};
    		  //axios.post(Config.baseUrl+'/gsp/api/member/login',this.my, config)  //这是测试
    		  axios.post('http://127.0.0.1:5000/doLoginJson' , this.my , config)   //发送请求,传递对象my包含的数据:		  .then(response => {                                       //返回后台函数的结果
    		  	console.log(response); 
    		  	if (response.data.status == "Y") {
    				                         //提示登陆成功
    				Dialog.alert({
    					title:'系统提示',
    					message:'登陆成功'
    				}).then(()=>{
    					//on close
    				  })
    				//3、记录用户信息
    				setStore({name:'loginInfo',content:this.my})  //将my的信息存到name为loginInf的对象里去,取:getStore.name
    				setStore({name:'userInfo',content:response.data.data})  
    				//4、授权token(类似网页的session,给登陆的人授权一个序列号)
    				
    				//5、跳转
    				this.$router.push('/lectureList')
    				
    			}else{                         //提示登陆失败
    				Dialog.alert({
    					title:'系统提示',
    					message:response.data.msg
    				}).then(()=>{
    					//on close
    				  })
    			}
    		  })
    	  }
      },
      created () {
      }
    }
    </script>
    

    Python
    注意要在开头import json 以及跨域访问:
    在这里插入图片描述

    DoLoginJson主体代码:

    @app.route("/doLoginJson",methods=['post'])
    def doLoginJson():
       #获取参数
       data = request.get_data()
       json_data = json.loads(data.decode('utf-8'))  #json转化为对象
       sch_num = json_data.get('sch_num')
       password = json_data.get('password')
       sql="select a.name,a.sch_num,a.password,a.status,b.role_id from viewer a left join user_link b on a.sch_num=b.sch_num where a.sch_num='{}'"
       sql=sql.format(sch_num)
       db = pymysql.connect(hostName, userName, userPassword, dbName)
       _cursor = db.cursor()
       user=None
       try:
          print(sql)
          print(sch_num)
          print(password)
          _cursor.execute(sql)
          user = _cursor.fetchone()
          print(user[2])
       except:
          print('出错啦')
       _cursor.close()
       db.close()
       # 处理数据
       # A、判断用户名是否存在
       if (user == None):
          d = { "status":"N","msg":"用户名不存在" }
          return json.dumps(d,ensure_ascii=False)
       # B、判断密码是否正确
       if (user[2]!=password):
          d = { "status": "N", "msg": "密码错误" }
          return json.dumps(d, ensure_ascii=False)
       # C、判断状态是否可用
       if (user[3]!= 1):
          d = { "status": "N", "msg": "账号已被锁定,请联系管理员" }
          return json.dumps(d, ensure_ascii=False)
       # D、登录信息写入session
       d = { "status":"Y","msg": "登陆成功","data":user }
       return json.dumps(d,ensure_ascii=False)
    

    如遇以下错误:注意vue中axios是否为post ,python中是否methods=[‘post’]
    在这里插入图片描述

    运行结果:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    数据传递总结:
    在这里插入图片描述

    展开全文
  • AppWeb缓存机制

    千次阅读 2016-12-08 14:42:26
    AppWeb缓存机制Cookie Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端web颁发一个Cookie。客户端会自动创建一个SQLit数据库web会把Cookie自动保存...
     
    

    Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端web颁发一个Cookie。客户端会自动创建一个SQLit数据库web会把Cookie自动保存进去。
    当web再请求该网站时,web会把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
    webview加载web网页时会自动的把cookie保存到手机磁盘根目录(data/data/package_name/databases/webviewCookiesChromium.db)下。

    页面缓存

    页面缓存是指加载一个网页时的html、JS、CSS等页面或者资源数据。这些缓存资源是由于浏览器的行为而产生 。
    当web请求网站时会把 这些页面缓存自动创建一个webviewCacheChromium文件夹保存在磁盘中。
    webview加载web网页时会自动把页面缓存保存在手机磁盘根目录(data/data/package_name/cache/webviewCacheChromium)下。

    测试总结

    测试结果
    1. 清除App缓存时,Cookie不会移除(这里指在点击手机管理应用程序里面该App清除缓存按钮);
    2. 清除App缓存时,页面缓存 会移除(这里指在点击手机管理应用程序里面该App清除缓存按钮);
    3. 清除App数据时,Cookie、页面缓存 会被移除(这里指在点击手机管理应用程序里面该App清除数据按钮);
    4. 卸载App重新安装,Cookie、页面缓存 都会被移除;
    5. 通过代码也可以使Cookie、页面缓存 移除等(见下面代码);

    关键代码

    /**
     * webView加载网页cookie的一些操作
     */
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private WebView webView;
        private TextView textView;
        private EditText editText;
        private Button cleanButton, urlButton, cookieButton,cacheButton;
        private String url = "http://192.168.17.151/sample.aspx";
        private String cookie;
        private int i = 0;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
            loadWebView();
        }
        private void initView() {
            webView = (WebView) findViewById(R.id.webview);
            textView = (TextView) findViewById(R.id.cookie_text);
            cleanButton = (Button) findViewById(R.id.clean_button);
            urlButton = (Button) findViewById(R.id.url_button);
            cookieButton = (Button) findViewById(R.id.web_button);
            cacheButton = (Button) findViewById(R.id.clean_cache_button);
            cleanButton.setOnClickListener(this);
            urlButton.setOnClickListener(this);
            cookieButton.setOnClickListener(this);
            cacheButton.setOnClickListener(this);
        }
        /**
         * 加载网页
         */
        private void loadWebView() {
            WebSettings settings = webView.getSettings();
            settings.setSupportZoom(true);          //支持缩放
            settings.setBuiltInZoomControls(true);  //启用内置缩放装置
            settings.setJavaScriptEnabled(true);    //启用JS脚本
    //        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不走缓存,重新加载新的页面
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });
            webView.loadUrl(url);
            cookie = CookieManager.getInstance().getCookie(url);
            showCookies(cookie);
        }
        /**
         * 显示当前Cookies
         */
        private void showCookies(String cookies) {
            if (!StringUtils.isEmpty(cookies)) {
                textView.setText("当前Cookie:   " + cookies);
                Log.d("cookie32", "cookie222== " + cookies);
            }
        }
        /**
         * 同步一下cookie
         */
        public static void synCookies(Context context, String url, String cookies) {
            CookieSyncManager.createInstance(context);
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.setAcceptCookie(true);
            cookieManager.removeSessionCookie();//移除
            cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie
            CookieSyncManager.getInstance().sync();
        }
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.clean_button:
                    //下面代码清除App里面的缓存的cookie数据
                    CookieSyncManager.createInstance(this);
                    CookieManager.getInstance().removeAllCookie();
                    CookieSyncManager.getInstance().sync();
                    break;
                case R.id.clean_cache_button:  
                    //下面是清除App缓存     
                    webView.cleanCache(true);        
                    break;
                case R.id.url_button:
                    webView.loadUrl(url);
                    break;
                case R.id.web_button://设置cookie
                    i++;
                    synCookies(MainActivity.this, url, "cookie test = " + i);
                    webView.loadUrl(url);
                    cookie = CookieManager.getInstance().getCookie(url);
                    showCookies(cookie);
                    break;
            }
        }
    }

    这里对cookie的操作主要用到 CookieSyncManager 和 CookieManager 两个类。
    详情请看:CookieSyncManager官方API
    CookieManager官方API

    展开全文
  • chatapp-web 关于 技术栈: DB:PosgreSQL 服务器:NodeJS ExpressJS 客户端:React Redux 设置 将每个.env.example文件复制并自定义到.env: cp ./db/.env.example ./db/.env cp ./server/.env.example ./...
  • nba-web-app 使用Node.js + Express后端和Azure CosmosDB对应用程序进行React。 托管应用程序,为 将来,我将添加每个玩家的统计信息并创建可视化效果 网页抓取 从ESPN.com刮取了CosmosDB中的数据。 使用Python和...
  • AWS-app-web AWS应用nodejs,结合travis,显示来自S3的文件并上传文件到S3,添加数据到SQS队列和simpleDB
  • kyle_web_app-源码

    2021-02-20 03:41:44
    FLASK_APP=web_app flask db init FLASK_APP=web_app flask db migrate FLASK_APP=web_app flask db upgrade 用法 # Mac: FLASK_APP=WEB_APP flask run FLASK_DEBUG=1 " for debug mode " # Windows: export FLASK_...
  • 使用SignalR服务推送通知
  • 使用Flask的CRUD ToDo Web应用 目录/文件:工作 静态:保存图像文件 模板:保存HTML文件 app.py:烧瓶文件启动服务器 required.txt:外部库名称和版本 test.db:数据库文件 Procfile:指定启动时由应用程序执行的...
  • Cosmos DB是一个No-SQL数据库,Logic App使用该数据库将结果存储为JSON文档,每个照片结果一个。 该应用程序的最后一部分是一个用Node.js编写的简单Web应用程序。 此Web应用程序作为Web应用程序服务托管在Azure中...
  • 安装要求 pip3 install -r requirements.txt 在MySQL中创建一个数据库:appclima 从Django启动表格 python manage.py makemigrations ...DB_PASSWORD = your_password DB_HOST =本地主机 API_KEY =
  • 1.uni-app的云函数的数据库操作 1.这个是写的云函数里面的 ‘use strict’; const db = uniCloud.database() exports.main = async (event, context) => { //event为客户端上传的参数 // context包含了调用信息和...

    1.uni-app的云函数的数据库操作

    1.这个是写的云函数里面的

    'use strict';
    const db = uniCloud.database()
    exports.main = async (event, context) => {
      //event为客户端上传的参数
    	// context包含了调用信息和运行状态,每次调用的上下文
    
    
    	// 聚合
    	// ---------------增加
    	/* const collection = db.collection('user')
    	// 增加
    	// let res = await  collection.add({
    	// 	name:"uni-app"
    	// }) 
    	
    	// 批量增加
     	let res = await collection.add([
    		{
    			name: 'vue'
    		},
    		{
    			name: 'html',
    			type: '前端基础'
    		}
    	]) 
    	console.log(JSON.stringify(res)) // 转为字符串 */
    	
    	//---------------------删除
    /* 	const collection = db.collection('user')
    	const res = await collection.doc('5ebe58418cf51d004c4fd0bb').remove()
    	console.log(JSON.stringify(res)) */
    	
    	//----------------更新第一种
    /* 	const collection = db.collection('user')
    		const res = await collection.doc('5ebe58418cf51d004c4fd0ba').update({
    			name: 'react'
    		})
    		console.log(JSON.stringify(res)) */
    	
    	//----------------更新第二种
    /* 	const collection = db.collection('user')
    		const res = await collection.doc('5ebe58418cf51d004c4fd0ba').set({
    			name: 'bootstrap4'
    		})
    		console.log(JSON.stringify(res)) */
    	/* 
    		update与set的区别
    		update:是不能更新没有的,只能更新存在的记录
    		set:如果没有这个数据,会新增的,如果存在就更新,不存在那就新增
    	 */
    	
    	//----------------查询--单方面查询
    /* 	const collection = db.collection('user')
    	const res = await collection.doc('5ebd27fa3e8e0b004d9ca9c8').get()
    	console.log(JSON.stringify(res)) */
    	
    	
    	//----------------条件查询
    	const collection = db.collection('user')
    	const res = await collection.where({
    		name: event.name
    	}).get()
    	console.log(JSON.stringify(res.data))
    	
      return {
    		code:200,
    		msg:"查询成功",
    		data:res.data
    	}
    };
    
    
    

    2.这个是写在页面里面的pages里面的

    			open(){
    				uniCloud.callFunction({
    					name:"get_list",
    					data:{
    						name: "wangyang",
    						age:15
    					},
    					success(res) {
    						console.log(res)
    					},
    					fail() {
    						
    					}
    				})
    			} 
    
    
    这里要注意:写完云函数,一定要上传部署!!!
    
    1. uni-app的图片上传
    <image class="logo" :src="src"></image>
    <button @click="open">执行云函数</button>
    
    
    		data() {
    			return {
    				src:''
    			}
    		},
    
    
    		methods: {
    			open(){
    				let self  = this
    				uni.chooseImage({
    					count:1,
    					success(res) {
    						const tempFilePaths = res.tempFilePaths[0]
    						console.log(tempFilePaths)
    						uniCloud.uploadFile({
    							filePath:tempFilePaths,
    							success(res) {
    								console.log(res)
    								self.src = res.fileID
    							},
    							fail(err) {
    								console.log(err)
    							}
    						})
    					},
    					fail(err) {
    						console.log(err)
    					}
    				})
    			}
    		}
    	
    
    

    3.删除云函数上传的图片

    	// 删除
    			open(){
    				let self = this
    				uniCloud.deleteFile({
    					fileList:['https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uniff40287/6dcd0230-9719-11ea-b43d-2358b31b6ce6.jpeg'],
    					success(res) {
    						console.log(res)
    					},fail(err) {
    						console.log(err)
    					}
    				})
    			}
    
    
    展开全文
  • Sweetest是一种小而美的自动化测试解决方案,同时支持Web UI,Http接口,DB操作测试,Android / iOS App测试,小程序测试,Windows GUI测试,文件操作;由于开始只支持Web UI测试,名字取自Selenium,W​​eb UI,...
  • web_app_1 一个webapp脚手架提供DB,DI等。 这使用Spring MVC,bootstrap,hibernate
  • IDEA使用Maven创建项目时web.xml中的web-app报错 以下是我创建maven项目时所遇到的错误,希望对大家有所帮助 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns=...
  • azure,aspnet,azure应用程序见解,azure应用服务,azure blob存储,azure存储帐户,azure-sql,azure-cache-for-redis,azure数据库,azure-web-app,天蓝色日志分析,天蓝色nat网关,天蓝色虚拟机,vs代码 ...
  • 2021年Web App评估 对于及格的学生,至少应包括:•尝试按照MVC设计模式划分功能•基本使用带有fetch和fetchAll PDO功能的select语句•使用PDO在网页上适当显示数据库数据•使用web页模板•客户端和服务器端的表单...
  • Database-Web-App-源码

    2021-04-11 20:18:34
    $ db_host_name =“本地主机”; $ db_username =“用户名”; $ db_user_password =“密码”; $ db_name =“ dbname”; ////更改index.php中的应用程序登录用户名和密码///// $ login_username =“用户名”; $ ...
  • #Nightlife Web App这是一个使用React,Redux,Mongo.db,Node.js,Passport lib的响应式全栈Web应用程序。 用于身份验证的Mocha用于测试,以及最新CSS功能(作为Grid系统),可在不同设备上实现完全响应,还包括...
  • 使用PyCharm时,请使用“文件”->“设置”设置虚拟环境,然后从左侧菜单中选择“ Project:Movie_Web_Application_sqlitedb”。 选择“项目解释器”,单击齿轮按钮,然后选择“添加”。 单击“现有环境”单选按钮以...
  • Incoming_Call_Detail_Logger Raspberry Pi上的Python 2.7,Flask框架和基于SQLite DB的简单Web应用程序可记录传入呼叫的​​详细信息。 有关详细信息-https:
  • dockerized-perl-app 如何 dockerized perl web 应用程序。...$ fig run -p 5000:5000 -v ./:/src/app --links $DB_NAME web 运行测试 $ DB_NAME= $( fig run -d db ) $ fig run setup $ fig run web script/test
  • 简单的演示Web应用程序 安装 bin/setup bin/rails s 已知的问题 如果bundle install引发错误: `mri_21` is not a valid platform....docker-compose run --rm web rake db:create db:migrate db:seed docke
  • IndexedDB详解

    千次阅读 2021-01-11 11:00:49
    IndexedDB是一种在浏览器端存储数据的方式。既然称之为DB,是因为它丰富了客户端的查询方式,并且因为是本地存储,可以有效的减少网络对页面数据的影响。 有了IndexedDB,浏览器可以存储更多的数据,从而丰富了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,200
精华内容 38,480
热门标签
关键字:

appdbweb