Framework

了不起的 Deno 实战教程

ⅰ亾dé卋堺 提交于 2021-01-10 16:48:58
对 Deno 还不了解的读者,建议先阅读 “ 了不起的 Deno 入门教程 ” 这篇文章。 一、Oak 简介 相信接触过 Node.js 的读者对 Express、Hapi、Koa 这些 Web 应用开发框架都不会陌生,在 Deno 平台中如果你也想做 Web 应用开发,可以考虑直接使用以下现成的框架: deno-drash:A REST microframework for Deno with zero dependencies。 deno-express:Node Express way for Deno。 oak:A middleware framework for Deno's net server 🦕 。 pogo:Server framework for Deno。 servest:🌾A progressive http server for Deno🌾。 写作本文时,目前 Star 数最高的项目是 Oak,加上我的一个 Star,刚好 720。下面我们来简单介绍一下 Oak: A middleware framework for Deno's http server, including a router middleware. This middleware framework is inspired by Koa and middleware router

Android OTA升级详细流程分析(non-AB)

时光毁灭记忆、已成空白 提交于 2021-01-10 10:01:28
一、.ota_from_target_files.py分析 if __name__ == '__main__': try: # common.CloseInheritedPipes()是用于在macOS环境下关闭文件描述符, # 通过platform.system() != "Darwin"判断是否是MacOS common.CloseInheritedPipes() main(sys.argv[1:]) except common.ExternalError: logger.exception("\n ERROR:\n") sys.exit(1) finally: common.Cleanup() common.CloseInheritedPipes()是用于在macOS环境下关闭文件描述符,之后执行ota_from_target_files的主体部分代码,最后common.Cleanup()清理垃圾文件。 以下先说明common.CloseInheritedPipes()和common.Cleanup()的代码,因为它们非常简单。 def main(argv): # 此处代码在common.ParseOptions传入 def option_handler(o, a): if o in ("-k", "--package_key"): OPTIONS.package_key =

微信小程序开发实践入门教程

╄→гoц情女王★ 提交于 2021-01-10 09:10:45
点击上方“ Java知音 ”,选择“置顶公众号” 技术文章第一时间送达! 在去年2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线 。时至今日,小程序已经有整整一年时间了 。在2017年12月28日,微信更新的 6.6.1 版本开放了小游戏,「跳一跳」小游戏在那一晚彻底火了。由于微信的流量庞大,所以很多开发者看好小程序,我也不例外 。 1、什么是小程序? 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验 。 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用 。 (小程序短视频介绍,建议wifi下观看) 2、开发小程序 了解完小程序到底是什么,接下来是本文的重点 。对于没接触过小程序编程的,可以看过来 。小编带大家入坑 。这篇文章大致说一下如何一步一步创建个简单的小程序出来 。 首先,先看一下效果图 。因为是个学习案例,所以功能非常简单,就是一个简单的页面展示功能 。后面有时间和精力,会再去完善功能的 。 搭建小程序环境 目前最新的工具是2017.12.15 更新的,版本号(1.01.1712150) 下载地址: https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html 安装环境

小程序搜索优化指南(SEO)

风流意气都作罢 提交于 2021-01-09 00:53:43
微信现已开放小程序内搜索,为了让小程序搜索爬虫更好地发现及理解丰富的页面,我们对开发者提供了以下的小程序设计建议。 爬虫访问小程序内页面时,会携带特定的 user-agent:mpcrawler 及场景值:1129 1. 小程序里跳转的页面(url)能够直接打开,不依赖上下文状态。 小程序页面内的跳转url是我们爬虫发现页面的重要来源,且搜索引擎召回的结果页面(url)是必须能直接打开,不依赖上下文状态的。 建议页面所需的参数都包含在url里 2. 页面跳转优先采用navigator组件。 小程序提供了两种页面路由方式: navigator 组件 路由api,包括 navigateTo、redirectTo、switchTab、navigateBack、reLaunch 若两种方式均能满足开发者需求,建议使用 navigator 组件,以便更好的被爬虫理解。 若无法使用navigator组件,建议针对爬虫的访问屏蔽针对点击设置的时间锁或变量锁。 3. 页面跳转的url参数清晰简洁。 结构清晰、简洁的url有利于爬虫的抓取及理解,如将json数据作为参数的方式是对爬虫不友好的设计。 4. 必要的时候才请求用户进行授权、登录、绑定手机号等。 建议在关键的路径上才要去用户进行授权。 5. 页面不能是web-view组件。 爬虫不会去抓取web-view组件渲染的h5页面。 6.

Task.Run 和 Task.Factory.StartNew 区别

孤街醉人 提交于 2021-01-08 18:38:48
Task.Run 是在 dotnet framework 4.5 之后才可以使用, Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制。 可以认为 Task.Run 是简化的 Task.Factory.StartNew 的使用,除了需要指定一个线程是长时间占用的,否则就使用 Task.Run 创建新线程 下面来告诉大家使用两个函数创建新的线程 Task.Run(() => { var foo = 2; }); 这时 foo 的创建就在另一个线程,需要知道 Task.Run 用的是线程池,也就是不是调用这个函数就会一定创建一个新的线程,但是会在另一个线程运行。 Task.Factory.StartNew(() => { ar foo = 2; }); 可以看到,两个方法实际上是没有差别,但是 Task.Run 比较好看,所以推荐使用 Task.Run 。 等待线程 创建的线程,如果需要等待线程执行完成在继续,那么可以使用 await 等待 private static async void SeenereKousa() { Console.WriteLine("开始 线程"+Thread.CurrentThread.ManagedThreadId); await Task.Run(() => { Console.WriteLine

IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案

梦想与她 提交于 2021-01-07 08:10:41
IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案   找到Web站点对应的应用程序池,“应用程序池” → 找到对应的“应用程序池” → 右键“高级设置...”    一、一般优化方案   1、基本设置   [1] 队列长度: 默认值1000,将原来的队列长度改为 65535。   [2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。   [3] 托管管道模式:Integrated 或 Classsic。      2、高级设置    [1] 闲置超时(分钟):默认20分钟,修改设长。   [2] 快速故障防护 → 已启用 :默认True,改为False。      3、解决PEP第一次打开PEP速度慢   回收间隔时间      使用windows server 2008 r2解决回收假死的问题   打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。    二、支持同时10万个请求   通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。   站点碰到如下问题:   Error Summary:   HTTP Error 503.2 -

c# .NET Framework 版本确定

大兔子大兔子 提交于 2021-01-06 00:48:52
关于.NET Framework 版本信息这里做个介绍: 1. 编译时,工程的目标的 .NET Framework 版本 同样的代码,我先选择.net 4.0,就发现有语法错误,原因是4.0版本还没提供这个API 改选 .net 4.5,语法错误消失了,因为这个API在后续的 .net已经添加了 但是运行起来,真正使用的 .NET Framework版本就不一定是目标版本了。 2. 运行时实际的Framework版本 真实运行的Framework版本跟机器安装的 Framework 版本有关,如果目标是4.5,机器上只装了 4.8。 那么由于向下兼容的原则,运行时CLR就会使用4.8去运行程序。如果机器只安装了3.5,那么CLR就会弹出一个提示框让用户去安装 4.5。 如何确定机器安装的 Framework版本呢?一般都是查看注册表: 输入 regedit 打开注册表,并找到这一项: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP .NET Framework 4.5之前的版本可以这样依次确认: 4.5以及之后的版本需要这样确认: Release的值对应了 .NET Framework版本,下面是微软列举每个版本的值 .NET Framework version Value of the

CVE-2019-0708复现之旅

人盡茶涼 提交于 2021-01-04 04:50:32
CVE-2019-0708 0x00 前言: CVE-2019-0708漏洞已经出来三四个月了对应的poc也出现了很久 ,exp 还是没动静前段时间出了个蓝屏伪exp 不过肯定那些大厂手里早已经了有了真正的exp 今天突然Github上有人上传了exp 在这里得到消息后就紧跟着复现了一下 注意!!!蓝屏概率很大 请不要用在随意测试 漏洞概要 漏洞名称 Microsoft Windows Remote Desktop Services远程代码执行漏洞 威胁类型 远程代码执行 威胁等级 严重 漏洞ID CVE-2019-0708 利用场景 未经身份验证的攻击者可以通过发送特殊构造的数据包触发漏洞,可能导致远程无需用户验证控制系统。 受影响系统及应用版本 Windows 7 for 32-bit Systems Service Pack 1 Windows 7 for x64-based Systems Service Pack 1 Windows Server 2008 for 32-bit Systems Service Pack 2 Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) Windows Server 2008 for Itanium-Based Systems

惊人!Spring5 AOP 默认使用Cglib? 从现象到源码深度分析

北城以北 提交于 2021-01-02 16:15:29
Spring5 AOP 默认使用 Cglib 了?我第一次听到这个说法是在一个微信群里: 真的假的?查阅文档 刚看到这个说法的时候,我是保持怀疑态度的。 大家都知道 Spring5 之前的版本 AOP 在默认情况下是使用 JDK 动态代理的,那是不是 Spring5 版本真的做了修改呢?于是我打开 Spring Framework 5.x 文档,再次确认了一下: 文档地址: https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/core.html#aop 简单翻译一下。Spring AOP 默认使用 JDK 动态代理,如果对象没有实现接口,则使用 CGLIB 代理。当然,也可以强制使用 CGLIB 代理。 什么?文档写错了?! 当我把官方文档发到群里之后,又收到了这位同学的回复: SpringBoot 2.x 代码示例 为了证明文档写错了,这位同学还写了一个 DEMO。下面,就由我来重现一下这个 DEMO 程序: 运行环境:SpringBoot 2.2.0.RELEASE 版本,内置 Spring Framework 版本为 5.2.0.RELEASE 版本。同时添加 spring-boot-starter-aop 依赖,自动装配 Spring AOP。 public

架构到底是什么?

非 Y 不嫁゛ 提交于 2021-01-02 16:07:45
课程概览 1、 架构与框架的区别 2、 架构到底是什么? 3、 架构的目的是什么? 1、架构与框架的区别 提到架构,大家常常会将架构(Architecture)和框架(Framework)混为一谈。 例如: 1)开源系统(MySQL、Nginx)架构 2)大公司架构实现(支付宝、微信) 那两者的区别是什么呢? 架构 :架构本身不是软件,而是关于软件如何设计的策略。是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 框架 :面向特定领域的、可复用的“半成品”软件,它实现了该领域的共性基础部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。是领域内、特定语言和技术的架构应用解决方案。 总结: 架构关注的是“结构”,框架关注的是“规范” 。 框架是软件,目的是抽象通用化高效解决问题;架构是软件的抽象解决方案,目的是便于进行大局拆解与局部细化。 架构与框架 2、架构是什么? 软件架构 (Software Architecture) “ 有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计 。 --来自维基百 科 系统是由一群关联个体的组成的, 系统中的个体需要“根据某种规则”协作,架构需要明确这种协作规则。 架构=骨架、结构,来源于建筑学。 前者揭示架构中内在的支撑物,后者则表明架构关心支撑物相互结合的某种构造方式。 为什么会出现架构设计?