首页 文章 精选 留言 我的

精选列表

搜索[智能平台],共10000篇文章
优秀的个人博客,低调大师

zlt-mp v2.7.0 发布,基于 Spring Cloud Alibaba 的微服务开源平台

项目介绍 基于 SpringBoot2.x、SpringCloud 和 SpringCloudAlibaba 并采用前后端分离的企业级微服务多租户系统架构。 发布v2.7.0 版本 新增分布式事务 seata-demo演示工程 增加自定义负载均衡规则,实现服务实例版本号隔离 优化 租户、trace等数据传递方式,由拦截器改为过滤器 优化请求IP获取 修复开启url权限认证时认证方法的租户id获取不到的问题 升级验证码 easy-captcha包到 1.6.2 升级 fastjson到 1.2.60 升级 swagger-butler到 2.0.0 关于本版本的相关文章 Spring Cloud同步场景分布式事务怎样做?试试Seata Spring Cloud开发人员如何解决服务冲突和实例乱窜? 相关链接 码云:https://gitee.com/zlt2000/microservices-platform GitHub:https://github.com/zlt2000/microservices-platform

优秀的个人博客,低调大师

阿里工业互联网平台“思考”:一场从0到1的蜕变

文/周雅 阿里云总裁胡晓明(花名孙权)曾在一场媒体采访中透露了自己的业务秘籍,说他永远记住两句话,一是“拓展商业边界”,二是“商业驱动技术进步”。 这句话不失为阿里的真实写照。的确,企业的安身立命之道,从来都不止于实验室里的技术,更要让技术产生商业价值,形成一个良性循环,为整个产业链乃至生态圈谋利益。但要说技术与商业无缝结合的企业,阿里可谓典型一家,比如阿里生态、蚂蚁生态、菜鸟生态,都是这一模式的缩影;再比如2018广东云栖大会,我们看到了从技术引入商业的背后逻辑。 产业发展的必然 工业互联网算是一个老生常谈的话题,中国作为全球制造业基地之一,谈起来更是迫在眉睫。说起来,是源于中国制造企业的“诟病”:内部出现产能过剩、成本上涨等发展问题,外部面临劳动力、土地和能源等成本不断走高。前富士康工业互联网公司董事长陈永正曾在一次独家专访中告诉赛博

优秀的个人博客,低调大师

阿里云短信套餐包-最低3分2/条-短信接码-短信群发平台

一、活动对象 1、阿里云官网注册的个人实名认证用户。其中,新老用户均可作为拼团活动的推荐者,但只有未购买过短信服务(即账号下无订单记录)的新用户方有资格参与拼团购买。 2、同一用户仅有一次参与拼团推荐或拼团购买指定云通信国内短信服务的机会。例如:同一用户使用不同账号作为推荐者参与本活动的,仅首个参与活动的账号可获赠;在阿里云官网已有消费的用户重新注册新账号参与拼团购买的,新老账号将被视为同一用户,不具有购买资格。 二、活动时间 2018年8月10日-2018年8月31日。 三、活动规则 1、活动期间,推荐者可推荐新用户通过活动专属页面购买指定云通信国内短信包,具体规格如下: 实例规格: ①5千条短信包价格:原价225元,活动价170元,单价0.034元/条 ②5万条短信包价格:原价2000元,活动价1650元,单价0.033元/条 ③50万条短信包价格:原价19000元,活动价16000元,单价0.032元/条 2、接受推荐的每一新用户通过活动专属页面,可以以上拼团价格购买1个指定短信包,每个用户仅限首笔订单购买一个套餐包。 3、用户应在15分钟内完成拼团订单的支付,否则订单将自动失效。 购买地址: https://promotion.aliyun.com/ntms/act/communication/aliyun-group/buy.html?group=cSdPIBfW7H

优秀的个人博客,低调大师

[雪峰磁针石博客]flask构建自动化测试平台7-添加google地图

本章将介绍以下主题: mock数据库 创建犯罪地图 本文最新版本 代码地址 mock数据库 mockdbhelper.py class MockDBHelper: def connect(self, database="crimemap"): pass def add_crime(self, category, date, latitude, longitude, description): data = [category, date, latitude, longitude, description] for i in data: print (i, type(i)) def get_all_crimes(self): return [{'latitude': -33.301304, 'longitude': 26.523355, 'date': "2000-01-01", 'category': "mugging", 'description': "mock description"}] def add_input(self, data): pass def clear_all(self): pass db_setup.py import pymysql import dbconfig connection = pymysql.connect(host='localhost', user=dbconfig.db_user, passwd=dbconfig.db_password) try: with connection.cursor() as cursor: sql = "CREATE DATABASE IF NOT EXISTS crimemap" cursor.execute(sql) sql = """CREATE TABLE IF NOT EXISTS crimemap.crimes ( id int NOT NULL AUTO_INCREMENT, latitude FLOAT(10,6), longitude FLOAT(10,6), date DATETIME, category VARCHAR(50), description VARCHAR(255), updated_at TIMESTAMP, PRIMARY KEY (id) )""" cursor.execute(sql) connection.commit() finally: connection.close() crimemap.py from flask import Flask from flask import render_template from flask import request import json import dbconfig if dbconfig.test: from mockdbhelper import MockDBHelper as DBHelper else: from dbhelper import DBHelper app = Flask(__name__) DB = DBHelper() @app.route("/") def home(): crimes = DB.get_all_crimes() crimes = json.dumps(crimes) return render_template("home.html", crimes=crimes) @app.route("/submitcrime", methods=['POST']) def submitcrime(): category = request.form.get("category") date = request.form.get("date") latitude = float(request.form.get("latitude")) longitude = float(request.form.get("longitude")) description = request.form.get("description") DB.add_crime(category, date, latitude, longitude, description) return home() if __name__ == '__main__': app.run(host='0.0.0.0',port=8000, debug=True) dbconfig.py test = True dbhelper.py import pymysql import dbconfig class DBHelper: def connect(self, database="crimemap"): return pymysql.connect(host='localhost', user=dbconfig.db_user, passwd=dbconfig.db_password, db=database) def get_all_inputs(self): connection = self.connect() try: query = "SELECT description FROM crimes;" with connection.cursor() as cursor: cursor.execute(query) return cursor.fetchall() finally: connection.close() def add_input(self, data): connection = self.connect() try: query = "INSERT INTO crimes (description) VALUES (%s);" with connection.cursor() as cursor: cursor.execute(query, data) connection.commit() finally: connection.close() def clear_all(self): connection = self.connect() try: query = "DELETE FROM crimes;" with connection.cursor() as cursor: cursor.execute(query) connection.commit() finally: connection.close() home.html <!DOCTYPE html> <html lang="en"> <head> <link type="text/css" rel="stylesheet" href="{{url_for('static', filename='css/style.css') }}" /> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"> </script> <script type="text/javascript"> var map; var marker; var existing_crimes; function initialize() { var mapOptions = { center: new google.maps.LatLng(-33.30578381949298, 26.523442268371582), zoom: 15 }; map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); google.maps.event.addListener(map, 'click', function(event){ placeMarker(event.latLng); }); placeCrimes({{crimes | safe}}); } function placeCrimes(crimes) { for (i=0; i<crimes.length; i++) { crime = new google.maps.Marker( { position: new google.maps.LatLng(crimes[i].latitude, crimes[i].longitude), map: map, title: crimes[i].date + "\n" + crimes[i].category + "\n" + crimes[i].description } ); } } function placeMarker(location) { if (marker) { marker.setPosition(location); } else { marker = new google.maps.Marker({ position: location, map: map }); } document.getElementById('latitude').value = location.lat(); document.getElementById('longitude').value = location.lng(); } </script> </head> <body onload="initialize()"> <h1>CrimeMap</h1> <p>A map of recent criminal activity in the Grahamstown area.</p> <div id="map-canvas"></div> <div id="newcrimeform"> <h2>Submit new crime</h2> <form action="/submitcrime" method="POST"> <label for="category">Category</label> <select name="category" id="category"> <option value="mugging">Mugging</option> <option value="breakin">Break-in</option> </select> </select> <label for="date">Date</label> <input name="date" id="date" type="date"> <label for="latitude">Latitude</label> <input name="latitude" id="latitude" type="text"> <label for="longitude">Longitude</label> <input name="longitude" id="longitude" type="text"> <label for="description">Description</label> <textarea name="description" id="description" placeholder="A brief but detailed description of the crime"></textarea> <input type="submit" value="Submit"> </form> </div> </body> </html> style.css body { font-family: sans-serif; background: #eee; } #map-canvas { width: 70%; height: 500px; float: left; } #newcrimeform { float: right; width: 25%; } input, select, textarea { display: block; color: grey; border: 1px solid lightsteelblue; line-height: 15px; margin: 2px 6px 16px 0px; width: 100%; } input[type="submit"] { padding: 5px 10px 5px 10px; color: black; background: lightsteelblue; border: none; box-shadow: 1px 1px 1px #4C6E91; } input[type="submit"]:hover { background: steelblue; } 参考资料 本文相关书籍下载 讨论 钉钉免费群21745728 qq群144081101 567351477 本文涉及的python测试开发库 谢谢点赞! 本文代码地址

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册