首页 文章 精选 留言 我的

精选列表

搜索[认证互认],共10003篇文章
优秀的个人博客,低调大师

详解Django的CSRF认证

1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post,put或delete请求时携带上次分配的随机字符串到服务端进行校验 2.Django中的CSRF中间件 首先,我们知道Django中间件作用于整个项目。 在一个项目中,如果想对全局所有视图函数或视图类起作用时,就可以在中间件中实现,比如想实现用户登录判断,基于用户的权限管理(RBAC)等都可以在Django中间件中来进行操作 Django内置了很多中间件,其中之一就是CSRF中间件 MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] 上面第四个就是Django内置的CSRF中间件 3.Django中间件的执行流程 Django中间件中最多可以定义5个方法 process_request process_response process_view process_exception process_template_response Django中间件的执行顺序 1.请求进入到Django后,会按中间件的注册顺序执行每个中间件中的process_request方法 如果所有的中间件的process_request方法都没有定义return语句,则进入路由映射,进行url匹配 否则直接执行return语句,返回响应给客户端 2.依次按顺序执行中间件中的process_view方法 如果某个中间件的process_view方法没有return语句,则根据第1步中匹配到的URL执行对应的视图函数或视图类 如果某个中间件的process_view方法中定义了return语句,则后面的视图函数或视图类不会执行,程序会直接返回 3.视图函数或视图类执行完成之后,会按照中间件的注册顺序逆序执行中间件中的process_response方法 如果中间件中定义了return语句,程序会正常执行,把视图函数或视图类的执行结果返回给客户端 否则程序会抛出异常 4.程序在视图函数或视图类的正常执行过程中 如果出现异常,则会执行按顺序执行中间件中的process_exception方法 否则process_exception方法不会执行 如果某个中间件的process_exception方法中定义了return语句,则后面的中间件中的process_exception方法不会继续执行了 5.如果视图函数或视图类中使用render方法来向客户端返回数据,则会触发中间件中的process_template_response方法 4.Django CSRF中间件的源码解析 Django CSRF中间件的源码 class CsrfViewMiddleware(MiddlewareMixin): def _accept(self, request): request.csrf_processing_done = True return None def _reject(self, request, reason): logger.warning( 'Forbidden (%s): %s', reason, request.path, extra={ 'status_code': 403, 'request': request, } ) return _get_failure_view()(request, reason=reason) def _get_token(self, request): if settings.CSRF_USE_SESSIONS: try: return request.session.get(CSRF_SESSION_KEY) except AttributeError: raise ImproperlyConfigured( 'CSRF_USE_SESSIONS is enabled, but request.session is not ' 'set. SessionMiddleware must appear before CsrfViewMiddleware ' 'in MIDDLEWARE%s.' % ('_CLASSES' if settings.MIDDLEWARE is None else '') ) else: try: cookie_token = request.COOKIES[settings.CSRF_COOKIE_NAME] except KeyError: return None csrf_token = _sanitize_token(cookie_token) if csrf_token != cookie_token: # Cookie token needed to be replaced; # the cookie needs to be reset. request.csrf_cookie_needs_reset = True return csrf_token def _set_token(self, request, response): if settings.CSRF_USE_SESSIONS: request.session[CSRF_SESSION_KEY] = request.META['CSRF_COOKIE'] else: response.set_cookie( settings.CSRF_COOKIE_NAME, request.META['CSRF_COOKIE'], max_age=settings.CSRF_COOKIE_AGE, domain=settings.CSRF_COOKIE_DOMAIN, path=settings.CSRF_COOKIE_PATH, secure=settings.CSRF_COOKIE_SECURE, httponly=settings.CSRF_COOKIE_HTTPONLY, ) patch_vary_headers(response, ('Cookie',)) def process_request(self, request): csrf_token = self._get_token(request) if csrf_token is not None: # Use same token next time. request.META['CSRF_COOKIE'] = csrf_token def process_view(self, request, callback, callback_args, callback_kwargs): if getattr(request, 'csrf_processing_done', False): return None if getattr(callback, 'csrf_exempt', False): return None if request.method not in ('GET', 'HEAD', 'OPTIONS', 'TRACE'): if getattr(request, '_dont_enforce_csrf_checks', False): return self._accept(request) if request.is_secure(): referer = force_text( request.META.get('HTTP_REFERER'), strings_only=True, errors='replace' ) if referer is None: return self._reject(request, REASON_NO_REFERER) referer = urlparse(referer) if '' in (referer.scheme, referer.netloc): return self._reject(request, REASON_MALFORMED_REFERER) if referer.scheme != 'https': return self._reject(request, REASON_INSECURE_REFERER) good_referer = ( settings.SESSION_COOKIE_DOMAIN if settings.CSRF_USE_SESSIONS else settings.CSRF_COOKIE_DOMAIN ) if good_referer is not None: server_port = request.get_port() if server_port not in ('443', '80'): good_referer = '%s:%s' % (good_referer, server_port) else: good_referer = request.get_host() good_hosts = list(settings.CSRF_TRUSTED_ORIGINS) good_hosts.append(good_referer) if not any(is_same_domain(referer.netloc, host) for host in good_hosts): reason = REASON_BAD_REFERER % referer.geturl() return self._reject(request, reason) csrf_token = request.META.get('CSRF_COOKIE') if csrf_token is None: return self._reject(request, REASON_NO_CSRF_COOKIE) request_csrf_token = "" if request.method == "POST": try: request_csrf_token = request.POST.get('csrfmiddlewaretoken', '') except IOError: pass if request_csrf_token == "": request_csrf_token = request.META.get(settings.CSRF_HEADER_NAME, '') request_csrf_token = _sanitize_token(request_csrf_token) if not _compare_salted_tokens(request_csrf_token, csrf_token): return self._reject(request, REASON_BAD_TOKEN) return self._accept(request) def process_response(self, request, response): if not getattr(request, 'csrf_cookie_needs_reset', False): if getattr(response, 'csrf_cookie_set', False): return response if not request.META.get("CSRF_COOKIE_USED", False): return response self._set_token(request, response) response.csrf_cookie_set = True return response 从上面的源码中可以看到,CsrfViewMiddleware中间件中定义了process_request,process_view和process_response三个方法 先来看process_request方法 def _get_token(self, request): if settings.CSRF_USE_SESSIONS: try: return request.session.get(CSRF_SESSION_KEY) except AttributeError: raise ImproperlyConfigured( 'CSRF_USE_SESSIONS is enabled, but request.session is not ' 'set. SessionMiddleware must appear before CsrfViewMiddleware ' 'in MIDDLEWARE%s.' % ('_CLASSES' if settings.MIDDLEWARE is None else '') ) else: try: cookie_token = request.COOKIES[settings.CSRF_COOKIE_NAME] except KeyError: return None csrf_token = _sanitize_token(cookie_token) if csrf_token != cookie_token: # Cookie token needed to be replaced; # the cookie needs to be reset. request.csrf_cookie_needs_reset = True return csrf_token def process_request(self, request): csrf_token = self._get_token(request) if csrf_token is not None: # Use same token next time. request.META['CSRF_COOKIE'] = csrf_token 从Django项目配置文件夹中读取CSRF_USE_SESSIONS的值,如果获取成功,则从session中读取CSRF_SESSION_KEY的值,默认为'_csrftoken',如果没有获取到CSRF_USE_SESSIONS的值,则从发送过来的请求中获取CSRF_COOKIE_NAME的值,如果没有定义则返回None。 再来看process_view方法 在process_view方法中,先检查视图函数是否被csrf_exempt装饰器装饰,如果视图函数没有被csrf_exempt装饰器装饰,则程序继续执行,否则返回None。接着从request请求头中或者cookie中获取携带的token并进行验证,验证通过才会继续执行与URL匹配的视图函数,否则就返回403 Forbidden错误。 实际项目中,会在发送POST,PUT,DELETE,PATCH请求时,在提交的form表单中添加 {% csrf_token %} 即可,否则会出现403的错误 5.csrf_exempt装饰器和csrf_protect装饰器 5.1 基于Django FBV 在一个项目中,如果注册起用了CsrfViewMiddleware中间件,则项目中所有的视图函数和视图类在执行过程中都要进行CSRF验证。 此时想使某个视图函数或视图类不进行CSRF验证,则可以使用csrf_exempt装饰器装饰不想进行CSRF验证的视图函数 from django.views.decorators.csrf import csrf_exempt @csrf_exempt def index(request): pass 也可以把csrf_exempt装饰器直接加在URL路由映射中,使某个视图函数不经过CSRF验证 from django.views.decorators.csrf import csrf_exempt from users import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/',csrf_exempt(views.index)), ] 同样的,如果在一个Django项目中,没有注册起用CsrfViewMiddleware中间件,但是想让某个视图函数进行CSRF验证,则可以使用csrf_protect装饰器 csrf_protect装饰器的用法跟csrf_exempt装饰器用法相同,都可以加上视图函数上方装饰视图函数或者在URL路由映射中直接装饰视图函数 from django.views.decorators.csrf import csrf_exempt @csrf_protect def index(request): pass 或者 from django.views.decorators.csrf import csrf_protect from users import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/',csrf_protect(views.index)), ] 5.1 基于Django CBV 上面的情况是基于Django FBV的,如果是基于Django CBV,则不可以直接加在视图类的视图函数中了 此时有三种方式来对Django CBV进行CSRF验证或者不进行CSRF验证 方法一,在视图类中定义dispatch方法,为dispatch方法加csrf_exempt装饰器 from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator class UserAuthView(View): @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super(UserAuthView,self).dispatch(request,*args,**kwargs) def get(self,request,*args,**kwargs): pass def post(self,request,*args,**kwargs): pass def put(self,request,*args,**kwargs): pass def delete(self,request,*args,**kwargs): pass 方法二:为视图类上方添加装饰器 @method_decorator(csrf_exempt,name='dispatch') class UserAuthView(View): def get(self,request,*args,**kwargs): pass def post(self,request,*args,**kwargs): pass def put(self,request,*args,**kwargs): pass def delete(self,request,*args,**kwargs): pass 方式三:在url.py中为类添加装饰器 from django.views.decorators.csrf import csrf_exempt urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^auth/', csrf_exempt(views.UserAuthView.as_view())), ] csrf_protect装饰器的用法跟上面一样

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

Linux ssh免密钥认证

hadoop和ansible都需要这个东西,其实很简单。 第一,在需要免秘钥登录的机器上生成公钥和私钥: 1 ssh -keygen 第二,拷贝生成的公钥id_rsa.pub到远程机器上: 1 ssh -copy- id -i /root/ . ssh /id_rsa .pubroot@192.168.0.247 #用此方式拷贝的好处是不用改名 这时再登录192.168.0.247的机器就无需密码了。 1 2 3 [root@zabbix_server~] #ssh192.168.0.247 Lastlogin:MonNov2813:48:332016from192.168.0.3 [root@localhost~] # 如果是普通账号免登录则需先切换普通账号,然后再生成公钥和私钥。 本文转自 王家东哥 51CTO博客,原文链接:http://blog.51cto.com/xiaodongge/1877339

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

公开撕!OpenAI 公开与马斯克 8 年邮件截图

OpenAI 今天在官网发布新闻稿,回应埃隆·马斯克起诉一事。 该文章由 Sam Altman、Greg Brockman、Ilya Sutskever等人共同署名。文章表示,OpenAI 打算驳回埃隆·马斯克的所有诉讼请求,并公布了一些高层和埃隆·马斯克的历史往来邮件作为证据。 以下为新闻稿原文翻译: OpenAI 的使命是确保 AGI 造福全人类,这意味着既要构建安全有益的 AGI,又要帮助人类创造收益。现在,我们将与大家分享我们在完成使命方面的心得,以及我们与埃隆之间关系的一些事实情况。 我们正打算驳回埃隆的所有诉讼请求。 我们意识到,构建 AGI 所需的资源远远超出我们最初的想象 埃隆说,我们应该布向 OpenAI 提供 10 亿美元的初始资金承诺。实际上,这家非营利组织总共从埃隆那里筹集了不到 4500 万美元,从其他捐赠者那里筹集了 9000 多万美元。 在 2015 年底创办 OpenAI 时,格雷格和萨姆最初计划筹集 1 亿美元。但是埃隆在一封电子邮件中表示“我们需要一个比 1 亿美元大得多的数字,以免让人听起来觉得毫无希望……我认为我们应该从 10 亿美元的资金承诺开始.如果其他人不提供的,我会承担。“ [1] 我们花了很多时间来设想通往 AGI 的合理路径。2017 年初,我们意识到构建 AGI 需要大量的计算。我们开始计算 AGI 可能需要多少计算量。我们都明白,要想成功完成使命,我们将需要更多的资金--这将达到每年数十亿美元,远远超出了我们任何人的想象,尤其是埃隆,他认为我们作为非营利组织无法筹集到这么多资金。 我们和埃隆都认识到,要获得这些资源,就必须建立一个营利实体。 在我们讨论营利性结构以推进使命时,埃隆希望我们与特斯拉合并,否则他需要获得全部的控制权。这之后埃隆离开了 OpenAI,他说需要有一个与谷歌/DeepMind 相对应的竞争对手,而他打算自己来做这件事。他同事表示,他会支持我们找到自己的道路。 2017 年底,我们和埃隆决定下一步的任务是创建一个营利实体。埃隆希望获得多数股权以及最初的董事会控制权,并担任首席执行官。在这些讨论中,他扣留了资金。Reid Hoffman填补了资金缺口,为我们支付了工资和运营费用。 我们无法就营利性公司的条款与埃隆达成一致,因为我们认为任何个人对 OpenAI 拥有绝对控制权都有悖于公司的使命。于是,他建议将 OpenAI 并入特斯拉。2018 年 2 月初,埃隆给我们转发了一封邮件,建议 OpenAI “依附于特斯拉,将其作为自己的资金来源“,并评论说 “完全正确……特斯拉是唯一一条甚至有望与谷歌相提并论的道路。即便如此,与谷歌抗衡的可能性也很小。但并不是零”。[2] 埃隆很快选择离开 OpenAI,他说我们的成功概率为 0,他计划在特斯拉内部建立一个 AGI团队与我们竞争。他在 2018 年 2 月底离开时告诉我们,他支持我们自己寻找筹集数十亿美元的道路。2018 年 12 月,埃隆给我们发邮件说:“即使筹集到几亿美元也不够。这需要每年筹集数十亿美元,否则就算了。“ [3] 我们通过构建可广泛使用的有益工具来推进我们的使命 我们通过开源等方式,使我们的技术能够广泛使用,从而提高人们的效率,改善他们的日常生活。 我们向大众提供了当今最强大的人工智能,包括每天有数亿人使用的免费版本。举个例子,阿尔巴尼亚正在使用 OpenAI 的工具将其加入欧盟的时间加快了 5.5 年;数字绿色公司正在帮助肯尼亚和印度提高农民收入,通过在 OpenAI 的基础上将农业推广服务的成本降低 100 倍;罗德岛州最大的医疗保健提供商 Lifespan 使用 GPT-4 将其手术同意书从大学阅读水平简化到六年级水平;而冰岛正在使用 GPT-4 保护越来越少人使用的冰岛语。 埃隆明白,这些工作并不意味着开源 AGI。正如伊利亚告诉埃隆的那样 “随着我们越来越接近AGI,开始降低开放程度是有意义的。OpenAI 中的 “开放 “是指人工智能建成后,每个人都应从人工智能的成果中受益,但不分享科学成果也完全没问题……",埃隆回答道: “是的”。[4] 对于埃隆的起诉,我们倍感遗憾。我们深深钦佩的一个人走到了这一步。他曾激励我们向更高的目标迈进,然后告诉我们会失败,建立了一个竞争对手团队,而当我们开始在没有他的情况下朝着 OpenAI 的使命取得有意义的进展时,他又将我们告上法庭。 我们专注于推进自己的使命,这还有很长的路要走。我们相信随着我们的产品越来越好,他们将更好地为每个人赋权。 以下为往来邮件翻译: [1] 发件人 埃隆-马斯克 收件人 格雷格-布罗克曼 抄送: Sam Altman Date: Sun, Nov 22, 2015 at 7:48 PM 主题: 通话后续 博客听起来不错,但要考虑到中立性和以青委会为中心。 我更倾向于将博客定位为更吸引普通大众--让大众支持我们取得成功有很大的价值--然后为招聘工作准备一个更长、更详细、更有内幕的版本,并在普通大众版本的末尾提供链接。 我们需要一个比 1 亿美元大得多的数字,以避免与谷歌或 Facebook 的支出相比显得毫无希望。我认为我们应该说,我们将从 10 亿美元的资金承诺开始。这是真的。其他人不提供的,我都会提供。 模板看起来还不错,除了默认转为归属现金红利外,还可以选择将其转为 YC 或 SpaceX(需要了解具体数额)的股票。 [2] 发件人 埃隆-马斯克 收件人 Ilya Sutskever 、Greg Brockman Date: 2018年2月1日 星期四 凌晨3:52 主题 Fwd: 今天的顶级人工智能机构 说得一点没错。我们或许希望如此,但在我看来,特斯拉是唯一能与谷歌抗衡的公司。即便如此,与谷歌抗衡的可能性也很小,但也不是零。 开始转发信息: 发件人: <> 致 埃隆-马斯克 <> 日期 太平洋标准时间 2018 年 1 月 31 日下午 11:54:30 主题 Re: 当今顶尖的人工智能机构 不幸的是,在人工智能的最前沿工作是昂贵的。除了 DeepMind,谷歌还有 Google Brain、Research 和 Cloud。还有 TensorFlow、TPU,它们拥有大约三分之一的研究成果(事实上,它们还举办自己的人工智能会议)。 我还强烈怀疑,要实现 AGI,计算能力将是必要的。如果历史趋势能够说明问题,那么人工智能的进步主要是由系统--计算、数据、基础设施--驱动的。我们今天使用的核心算法与上世纪 90 年代相比基本没有变化。不仅如此,任何发表在论文中的算法进展几乎都可以立即被重新实现和整合。反过来说,如果没有一定的规模,单靠算法的进步是没有生命力的。 在我看来,如今的 OpenAI 正在烧钱,其融资模式无法达到与谷歌(一家 8000 亿美元的公司)认真竞争的规模。如果你无法与谷歌认真竞争,却继续在开放环境中进行研究,那么你可能会让事情变得更糟,并 “免费 “帮助他们,因为他们很容易复制任何进步,并立即将其规模化。 以营利为目的的转型可能会随着时间的推移创造出更稳定的收入来源,而就目前的团队而言,很可能会带来大量投资。然而,从零开始打造产品会抢走人工智能研究的重点,而且需要很长时间,目前还不清楚一家公司能否 “赶上 “谷歌的规模,投资者也可能会在错误的方向上施加过多压力。我所能想到的最有希望的方案,正如我之前提到的,就是让 OpenAI 附属于特斯拉,将其作为自己的资金来源。我认为,依附于其他大型公司(如苹果、亚马逊),会因公司基因不兼容而失败。打个比方,特斯拉已经建造了火箭的 “第一级“,包括 Model 3 的整个供应链、车载电脑和持续的互联网连接。第二阶段 “将是基于大规模神经网络训练的完全自动驾驶解决方案,OpenAI 的专业技术可以大大帮助加快这一进程。在大约 2-3 年的时间里,我们就能推出功能完善的完全自动驾驶解决方案,销售大量汽车/卡车。如果我们真的做得很好,运输行业的规模足够大,我们可以将特斯拉的市值提高到 O(约 10 万美金),并利用这笔收入为适当规模的人工智能工作提供资金。 我看不到有任何其他公司有潜力在十年内达到可持续的谷歌规模资本。 [3] 发件人 埃隆-马斯克 收件人 Ilya Sutskever 、Greg Brockman 抄送: Sam Altman Date: Wed, Dec 26, 2018 at 12:07 PM 主题: 我觉得我应该重申 在执行和资源没有发生巨大变化的情况下,我对 OpenAI 与 DeepMind/Google 相关性的概率评估是 0%。而不是 1%。我希望不是这样。 即使筹集到几亿美元也不够。这需要每年立即筹集数十亿美元,否则就算了。 不幸的是,人类的未来掌握在【未透露名称】手中。 他们所做的远不止这些。 我真希望我错了。 埃隆 【4】 Fwd: 恭喜猎鹰 9 包含3 条信息 发件人 Elon Musk 收件人 Sam Altman、Ilya Sutskever、 Greg Brockman 日期 Sat, Jan 2, 2016 at 8:18 AM 主题 收件人: 恭喜猎鹰 9 号 开始转发消息: From:未透露姓名 To: 埃隆-马斯克 日期: 美国中部时间 2016 年 1 月 2 日上午 10:12:32 主题: 恭喜猎鹰 9 号 嗨,埃隆 祝你新年快乐, 首先祝贺猎鹰 9 号着陆,这是一项了不起的成就。现在是时候组建舰队了! 我看到你(还有萨姆和其他 OpenAI 人士)最近接受了很多采访,大肆宣扬人工智能开源的优点,但我想你应该意识到,这并不是某种能神奇地解决安全问题的灵丹妙药吧?有很多很好的论据可以说明,为什么你所采取的方法实际上是非常危险的,事实上可能会增加世界的风险。在这篇博文中,一些比较明显的观点得到了很好地阐述,我相信你已经看到了,但还有其他一些重要的考虑因素: http://slatestarcodex.com/2015/12/17/should-ai-be-open/ 我很想听听你对这些观点的反驳。 发件人 Ilya Sutskever 致 Elon Musk 、Sam Altman、 Greg Brockman 日期 Sat, Jan 2, 2016 at 9:06 AM 主题 Fwd: 恭喜猎鹰9号 这篇文章关注的是 “硬起飞 “ 如果发生 “硬起飞“,而安全的人工智能比不安全的人工智能更难构建,那么通过开放一切,我们就会让那些能够获得大量硬件的不法分子轻而易举地构建出不安全的人工智能,从而遭遇 “硬起飞”。 当我们越来越接近构建人工智能时,开始降低开放程度将变得更有意义。openAI 中的 “开放 “意味着,在人工智能建成后,每个人都应从人工智能的成果中获益,但不分享科学知识也是完全可以的(尽管在短期和中期内,为了招聘的目的,分享一切绝对是正确的策略)。 来自 埃隆-马斯克 收件人 Ilya Sutskever 日期 Sat, Jan 2, 2016 at 9:11 AM 主题 Fwd: 恭喜猎鹰9号 是的

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

社论:5G要坚持建用促的发展模式

在24日举行的国新办新闻发布会上,工业和信息化部新闻发言人表示,2020年我国在5G建设方面可以说是“飞速快跑”。同时,今后不仅要盯着网络建设目标,还要在5G应用方面多下功夫。 “飞速快跑”有下面几组数据可以佐证:今年新增了大约58万个5G基站,推动共建共享的5G基站大约33万个,年初确定的所有地市都有5G覆盖的目标已经实现,2021年全国有望新建5G基站超过100万个;今年前11个月,国内市场5G手机出货量为1.44亿部,占到了手机总出货量的一半以上;5G的终端连接数已超2亿。 技术有了,基础设施有了,用户有了,这就是我国5G发展的现状。 5G建设的现实很丰满,前景则更为广阔。立足于现在并展望未来、开展6G愿景研究也会被提上议事日程。但现在要解决的是增强5G的应用性,要做到逐渐从“可用”到“好用”方向的发展,并创造出更多的商业价值。 正如上述工信部新闻发言人所说,5G的建设是为应用打基础,5G的最终目标还是说怎么把5G用好。相关研究报告表明,2020年5G将直接带动我国经济总产出8109亿元,直接带动经济增加值1897亿元。很显然,这些数据远不是我国着力发展5G的目标所在。5G的价值在于实际应用,从而产生更大的社会经济效益。 对5G的实际应用,从国家层面到地方层面都一直很重视。从2018年起,工信部每年都组织一次“绽放杯”5G应用大赛。今年的第三届大赛征集到了4000多项5G应用案例,而第一届只有300多个。这些项目在智能制造、医疗、能源等热点领域都体现出了意想不到的效果。 而且5G的应用也已在各地开花。日前,上海自贸区临港新片区5G生态城推广活动暨5G宣传活动月启动,临港新片区4个街镇及开发公司代表与上海铁塔公司签署了《5G通信基础设施建设及应用推广共建联建书》;深圳市日前也发布了《关于大力促进5G创新应用发展的若干措施》,旨在充分发挥其5G产业链优势和5G基础设施规模效应;浙江也出台了文件,将推动5G在工业制造、城市治理、民生服务、文化娱乐等领域的广泛应用,要培育100项重点场景应用,争取尽快形成5G的规模化应用。 这其中的关键词都离不开“应用”。各地应结合地方经济和产业发展,进一步加强对5G应用的总结、推广和探索创新,形成“以建促用、以用促建”的良性发展模式。 5G的应用领域十分广阔,但根本的还应立足于高端,而不能眼光仅盯在“卖菜”上,资本的投入也不应局限于此。下一步在5G应用领域的重要任务是,进一步优化数据中心建设布局,提升应用发展水平,在应用种类、云服务能力、应用深度和软件丰富程度上逐步完善。 要加强5G的应用,关键还是在创新。从我国的情况看,5G已为农业、制造业、医疗等各行各业的应用提供了很好的基础。但这些还不够,要充分利用好5G这个平台,推动5G与制造、能源、交通、农业等实体经济在各个领域的融合发展,加快推进传统产业数字化、网络化、智能化转型。 总之,未来2至3年,5G产业将出现更多新产品、新业态,这是一片蓝海,也是5G发展的基础所在。现在要盯住的不仅是网络建设目标,还要在5G应用方面多下功夫。这需要国家政策扶持,地方政府重视,企业主体努力,资本助力。

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

上海金发展报告:行业发展总体稳健 局部风险事件显现

10月20日,上海市互联网金融行业协会2016年度会员单位继续教育活动(第三期)暨《上海互联网金融发展报告(2016)》发布会在上海召开,来自中国人民银行上海总部,上海市黄浦区政府,上海市金融办,黄浦区金融办,蚂蚁金服的多位领导和嘉宾,以及近200名协会会员单位代表出席了活动。报告显示,上海市互联网金融行业发展总体稳健,但局部风险事件显现,行业自律较为领先。据上海市互联网金融行业协会副秘书长、上海大学上海科技金融研究所副所长孟添介绍,2015年上海互联网金融发展的基本态势及特点:上海地区互联网金融行业发展总体较为稳健,各业态总体实现均衡发展,市场规模稳步攀升,在全国范围内市场占比进一步增加,主要表现为:1)行业发展总体稳健,市场交投较为活跃;2)业态门类更为齐全,部分领域引领发展;3)局部风险事件显现,行业自律较为领先;4)传统转型创新突出,各类机构加快集聚。报告还对上海互联网金融的未来发展趋势做出了展望。报告认为,在行业监管方面,互联网金融相关业态的监管政策将逐步明确,行业开始进入规范发展阶段,技术型监管、穿透式监管将成为监管趋势。在行业融合方面,传统金融与互联网金融的融合、实体产业与互联网金融的融合都有加剧的趋势。在业务发展方面,将呈现出综合化、开放化的趋势,垂直化、精细化的趋势,以及技术化、智能化的趋势。报告特别提到了新技术,如区块链、虚拟现实、生物识别、语音识别、大数据风控、人工智能等对行业正在产生的影响。此外,报告提出,互联网众筹与互联网征信的迅速崛起值得各方关注。 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

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

用户登录
用户注册