一、print,在python3中已经是函数 >>> import sys >>> print("fatal error",file=sys.stderr) fatal error >>> fp=open (r"d:\\a.txt",'w') >>> print("python3",file=fp) >>> fp.close() >>> print("There are <", 2**32, "> possibilities >>> 二、python3中是unicode码,而python2中是ascii码,可以避免中文的编码困扰 >>> import sys >>> print(sys.getdefaultencoding sys.getdefaultencoding() 'ascii' >>> "中文" '\xd6\xd0\xc\xc4' 三、定义变量更灵活 >>> a,*b,c= range(5) >>> a,b,c (0, [1, 2, 3]
问题往往不在你现在的状态,而在一个被长期忽略的变量上:系统正在关注你“变好还是变坏的速度”。二、什么是“信任斜率”?信任斜率,不是某一个时点的信任值,而是系统对你一段时间内变化趋势的判断。 在系统视角中,存在三个现实约束:1️⃣系统无法完全理解你是谁但可以精准识别:行为是否更稳定了表达是否更一致了修复是否更主动了2️⃣绝对信任值不可一次性确认但变化方向可以被持续观测3️⃣风险控制优先于潜在收益系统更愿意扶持一个 系统并不会真的画一条数学曲线,但会通过一系列代理指标,持续判断你的趋势:内容是否越来越聚焦行为是否越来越一致对问题的回应是否越来越成熟修复是否比过去更及时、更可验证这些变化一旦形成连续信号,系统就会得出一个判断 八、结语:信任不是存量,而是速度在系统信任增长范式下,信任不再是一个“存着不用的资产”,而是一条持续被观测的曲线。你不需要一开始就很高,但你必须:让系统看到你在变得更可预测、更稳定、更值得托付。
最近在研究框架,也仔细用了Vue3一些功能,今天分享一次我的实践: Vue3如何监听localStorage的变化。 为什么要这样做? 原生的localStorage只能监听同源地址下不同页面的localStorage变化,作为单页面应用,显然不实用。所以我打算自定义一个hook监听localStorage的变化。 在Vue3移除了$on、$emit事件接口后,我们可以借助第三方库实现:mitt、tiny-emitter. 不过我打算使用自己实现的中介者模式作为通信方法。 /hook"; const key = useStorage("yourKey"); watch([key], (a) => console.log(a)); 监听localStorage变化 js
原来在python3中range的实现变了,并不是返回一个list类型,而是返回一迭代对象。 4) a = list(range(1,4)) print(type(a)) #输出:<class 'list'> for i in range(1,4): print(i) #输出:1 2 3 参考文章:python3中的range函数
背景 实际开发过程中,当需要通过 watch 监听传入的 props 的某个值的变化,来动态改变组件内部的样式,实现方式如下: export default { name: 'countdown' 此种方式不可监听到变化 const showBox2 = toRefs(props.showBox) watch(showBox2, (val) => { if (val)
技术背景 在前面一篇博客中我们介绍了一些用python3处理表格数据的方法,其中重点包含了vaex这样一个大规模数据处理的方案。 python3中提供了mmap这样一个仓库,可以直接创建内存映射文件。 用tracemalloc追踪内存变化 在上面一个章节中我们介绍了snapshot内存快照的使用方法,那么我们很容易可以想到,通过“拍摄”两张内存快照,然后对比一下快照中的变化,不就可以得到内存变化的大小么 不过这个问题并不是我们所要重点关注的,我们继续向下测试内存的变化曲线。 而对于大规模的文件场景,还是使用内存映射技术更加的快速,这个速度在本文中介绍的几个案例的运行中也能够体会到。内存映射技术已经有很多应用场景,比如前面介绍过的vaex就是得益于内存映射技术。
1、除法相关 在python3之前, print 13/4 #result=3 然而在这之后,却变了! 原来在python3之后,“//”有这个功能: print(13 // 4) #result=3.25 是不是感到很奇怪呢? print(13.0 // 4) # result=3.0 ---- 2、Sort()和Sorted()函数中cmp参数发生了变化(重要) 在python3之前: def reverse_numeric (x, y): return y - x print sorted([5, 2, 4, 1, 3], cmp=reverse_numeric) 输出的结果是:[5, 4, 3, 2, 1] 但是在 具体可参考链接:Sorting HOW TO ---- 3、map()函数返回值发生了变化 Python 2.x 返回列表,Python 3.x 返回迭代器。要想返回列表,需要进行类型转换!
重大改进 此次 Vue 的重大改进随之而来带来了 Vue Router 的一系列改进,现阶段(alpha.10)相比vue2-router 的主要变化,总结如下: 1. createWebHistory } from 'vue-next-router' const router = createRouter({ history: createWebHistory('/'), ... }) 3.
技术背景 在前面一篇博客中我们介绍了一些用python3处理表格数据的方法,其中重点包含了vaex这样一个大规模数据处理的方案。 python3中提供了mmap这样一个仓库,可以直接创建内存映射文件。 用tracemalloc追踪内存变化 在上面一个章节中我们介绍了snapshot内存快照的使用方法,那么我们很容易可以想到,通过“拍摄”两张内存快照,然后对比一下快照中的变化,不就可以得到内存变化的大小么 不过这个问题并不是我们所要重点关注的,我们继续向下测试内存的变化曲线。 而对于大规模的文件场景,还是使用内存映射技术更加的快速,这个速度在本文中介绍的几个案例的运行中也能够体会到。内存映射技术已经有很多应用场景,比如前面介绍过的vaex就是得益于内存映射技术。
stemmer changes: adjust_case(), cons(), cvc(), doublec(), m(), step1ab(), step1c(), step2(), step3( ), step4(), step5(), vowelinstem() made private ends(), r(), setto() removed 3.Removed modules, classes These have been normalised; please see Installing Third Party Software More background on Python 3 and NLTK 3: http://docs.python.org/2/library/2to3.html http://docs.python.org/dev/whatsnew/3.0.html
在通读了vue的官网文档后,我记录下了如下这些相对于2.x的变化之处。 3.生命周期变化 beforeDestroy=>beforeUnmount,destroyed=>unmounted,另外新增了两个生命周期renderTracked和renderTriggered,用来跟踪虚拟 3.x和2.x一样,仍然有6个class,意义完全一样,唯一的变化只有v-enter->v-enter-from、v-leave->v-leave-from两个名字以及enter-class->enter-from-class 12.自定义指令变化 在2.x中提供了bind、inserted、update、componentUpdated、unbind五个指令,在3.x中新增了一个,一共有六个: beforeMount(指令第一次绑定到元素并且还未挂载到父组件上调用 17.响应性原理变化 众所周知,在2.x中是使用Object.defineProperty来实现数据响应的,在3.x默认使用ES6的Proxy来实现,并且在IE浏览器上使用Object.defineProperty
本篇文章主要介绍 v-model 在 Vue2 和 Vue3 中使用变化。 一、Vue2 中 v-model 的使用 v-model 是语法糖,本质还是父子组件间的通信。 ,因此 vue3 做了统一,一个组件可以多次使用 v-model 。 值得注意的是,vue3 移除了 model 选项。 vue3 组件的自定义事件需要定义在 emits 选项中,只要是自定义事件,就需要添加在 emits 中,否则会有警告。 4.3、vue3.x 版本 Vue3 可以翻译为: <child-comp :modelValue="msg" @update:modelValue="msg=$event" /> vue3 统一 使用
于是我们的效能团队针对编译作了一些优化,提速非常明显,对某个应用的测试来看,编译时间从 160 s 缩短到了 50 s 左右,提升近 70%,大家纷纷点赞,那么效能团队做了哪些措施来让编译速度提升这么明显呢 效果怎么样呢,看下图,下面图分别显示了 Gradle 持续集成时使用构建缓存和不使用构建缓存两种情况下的聚合的构建时间,可以看到使用了 cache 的 Gradle 构建速度明显快于不使用 cache Buiid Cache 支持分布式的,可以统一把这些 cache 丢到一台机器上,本地机器要编译时统一去这台机器拉 cache,这样如果我们切换分支时执行构建也能用 Build Cache 来加快构建速度 增加 --parallel 参数 并行执行在多项目编译的项目中能有效提升编译的速度,但是并行执行的前提是每个项目已经被模块化,每个项目之间没有耦合。 3、将大项目的常用代码抽成 jar 包 对于业务方来说,采用这种方式也是提升编译速度的有效手段 ,将大量代码抽成 jar 包,意味着它们本身就是字节码了,在 gradle build 时就不用编译啦。
在这篇文章中,我想引导大家了解一些我看来最感兴趣的变化,看看它们的影响和可能性。 性能优化 在挖掘某些API之前,作为一个性能狂人,我想先谈谈Vue 3的性能。而且有很多东西可以谈! (() => {}) const obj = observable({}) 这是一个突破性的变化,因为以前的全局API现在只能通过命名的导出来提供。 这一变化会影响到: Vue.nextTick Vue.observable Vue.version Vue.compile (仅在完整构建中) Vue.set (仅在2.x版本的兼容性版本中,你很快就会发现原因 根据测试,它的速度大约快了2倍! 这种改进特别重要的原因是,使用getters/setters,Vue必须递归地查看所有的对象和它们的属性并对它们进行转换。而使用代理的时候,这个过程就简单多了。 这样一来,无论需要进行多少次加载或重新渲染,APP都能保持响应速度。这正是Vue 3中的工作方式。 Evan You就是这样介绍Vue 3中的时间分割功能的。
检测下载资源的平均速度,思路大致如下: 监听下载完成事件后,用总字节数/总时间,即可得到相应的下载速度 公式: speed = (byteTotal/1024)/(endTime-startTime), 这个应该算是平均速度 监测下载的进度: 公式: procress = bytesLoaded/bytesTotal <已下载字节数/总字节数> 在监听加载完成事件中,如果使用的是flash.net.URLLoader flash.display.Loader,需要监听loader的contentLoaderInfo事件 ,使用evt.currentTarget.bytesTotal可获取下载文件的总字节数 完整的实例地址在这里下载: as3测试文件下载速度
事件报告的指标都很容易理解,而真正需要灵活运用的是事件的三个参数维度,用“变化多端”来形容它们一点都不夸张,不信大家看看这个报告的几种查看方式: “正统”的查看方式:逐级向下 小孙第一次接触事件报告时,
区别 生命周期的变化 整体来看,变化不大,只是名字大部分需要 + on,功能上类似。使用上 Vue3 组合式 API 需要先引入;Vue2 选项 API 则可直接调用,如下所示。 我们借助Vue3 Template Explorer来看。 patched++ } } // 遍历结束,newIndexToOldIndexMap = {0:5, 1:4, 2:3, 3:0} // 新建、移动节点 const increasingNewIndexSequence 自定义渲染API Vue3 提供的createApp默认是将 template 映射成 html。 源码解析系列 - 响应式原理(reactive 篇)[3] Vue 源码解读(3)—— 响应式原理[4] Vue 3 Virtual Dom Diff源码阅读[5] Vue 2 迁移[6]
前端依赖后端,且前端无需负责路由,有很多优点如开发速度快、后端也承担部分前端任务,所以至今很多内部管理系统还这样。 前端开发模式变化,项目结构也变化。 监听popstate事件,可监听到通过pushState修改路由的变化。 并且在fn函数中,我们实现了页面的更新window.addEventListener('popstate', fn)3 手写vue-routersrc/router新建grouter文件夹在grouter 先用useRouter获取当前路由的实例let router = useRouter()// 3.
它是在观察成像平面上空间移动物体的像素移动的瞬时速度。利用图像序列中时域中像素的变化以及相邻帧之间的相关性,找到前一帧与当前帧之间的对应关系,从而计算出相邻帧之间物体的运动信息。 两个帧之间相应点的光流关系可用于估计3D速度。 其中,点p是使用校准相机的投影方程式从3D点P在图像平面上的投影。 或矢量记法 区分wrt时间收益: 光流场矢量可以分为平移部分和旋转部分,如下所示: 如果存在3个非共线的光流向量和深度,则可以求解3D速度。 我们可以获得以下共面条件 这表示像点,流量和线速度都在同一平面上。 我们可以从两点获得V: 从n个点得到一个齐次系统 V是A的零空间,可以从SVD获得。 对于Φ,矩阵是2N x(N + 3)矩阵,并且是V的函数。 如果我们求解反深度和Ω的未知矢量,则会得到。 我们可以将其插入目标函数中。