首页 文章 精选 留言 我的

精选列表

搜索[微信云支付],共10000篇文章
优秀的个人博客,低调大师

Tinker 1.9.14.5 发布,微信开源的 Android 热修复框架

Tinker 1.9.14.5 发布了。Tinker 是腾讯开源的 Android 热解决方案库,它支持在不重新安装 apk 的情况下对 dex、library 和 resources 进行更新。 更新内容如下: Bugfix & ChangeLog 修复 Tinker 在 Android Q 上导致启动和运行卡顿的问题。 修复已加载 patch 的情况下再次 Apply 一个新 patch 之后马上清除 patch 会导致主进程和其他进程的 patch 版本不一致的问题。 注意 从这个版本开始 Tinker 会在编译时校验符合 dex loader pattern 的类是否直接引用了不符合 dex loader pattern 的类,如果发现了这种情况就会中断编译。这个校验是为了确保满足 loader pattern 的类绝对内聚,从而避免从 Android P 开始的内联校验导致的 crash。 更新说明:https://github.com/Tencent/tinker/releases/tag/v1.9.14.5

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

Tinker 1.9.14.4 发布,微信开源的 Android 热修复框架

Tinker 1.9.14.4 发布了。Tinker 是腾讯开源的 Android 热解决方案库,它支持在不重新安装 apk 的情况下对 dex、library 和 resources 进行更新。 更新内容如下: Bugfix & ChangeLog 改善补丁加载时替换 ClassLoader 后导致 App 卡顿的问题。 修复 Android 5.0 上补丁加载失败的问题。 修复多进程补丁状态可能不一致的问题。 更新说明:https://github.com/Tencent/tinker/releases/tag/v1.9.14.4

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

Tinker 1.9.14.3 发布,微信开源的 Android 热修复框架

Tinker 1.9.14.3 发布了。Tinker 是腾讯开源的 Android 热解决方案库,它支持在不重新安装 apk 的情况下对 dex、library 和 resources 进行更新。 更新内容如下: Bugfix & ChangeLog 修复 TinkerApplicationInlineFence 类没有被自动 keep 到主 dex 的 bug。 保护 BindService 提高 patch 进程优先级的逻辑偶尔在 unbind 的时候产生的 crash。 四字节对齐 patch 中的 dex,避免加载时产生 mmap 放大的问题。 使用 PathClassLoader 触发合成 patch 后的 dex2oat,避免因 patch 失去 jit 支持导致性能问题。(多谢华为的建议) 修改 maindex keep 规则,避免主 dex 中引入过多的类。 更新说明及下载地址

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

深入解析Vue 和微信小程序的区别、比较

写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别。 一、生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多。 vue的钩子函数在跳转新页面时,钩子函数都会触发,但是小程序的钩子函数,页面不同的跳转方式,触发的钩子并不一样。 onLoad:页面加载 一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。 onShow:页面显示 每次打开页面都会调用一次。 onReady:页面初次渲染完成 一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。 对界面的设置如 wx.setNavigationBarTitle请在 onReady之后设置。详见生命周期。 onHide:页面隐藏 当 navigateTo或底部tab切换时调用。 onUnload:页面卸载 当 redirectTo或 navigateBack的时候调用。 数据请求 在页面加载请求数据时,两者钩子的使用有些类似,vue一般会在 created或者 mounted中请求数据,而在小程序,会在 onLoad或者 onShow中请求数据。 二、数据绑定 vue:vue动态绑定一个变量的值为元素的某个属性的时候,会在变量前面加上冒号:,例: <img :src="imgSrc"/> 小程序:绑定某个变量的值为元素属性时,会用两个大括号括起来,如果不加括号,为被认为是字符串。例: <image src="{{imgSrc}}"></image> 三、列表渲染 直接贴代码,两者还是有些相似: vue: <ul id="example-1"> <li v-for="item in items"> {{ item.message }} </li> </ul> var example1 = new Vue({ el: '#example-1', data: { items: [ { message: 'Foo' }, { message: 'Bar' } ] } }) 小程序: Page({ data: { items: [ { message: 'Foo' }, { message: 'Bar' } ] } }) <text wx:for="{{items}}">{{item}}</text> 四、显示与隐藏元素 vue中,使用 v-if 和 v-show控制元素的显示和隐藏。 小程序中,使用 wx-if和 hidden控制元素的显示和隐藏。 五、事件处理 vue:使用 v-on:event绑定事件,或者使用 @event绑定事件,例如: <button v-on:click="counter += 1">Add 1</button> <button v-on:click.stop="counter+=1">Add1</button> //阻止事件冒泡 小程序中,全用 bindtap(bind+event),或者 catchtap(catch+event)绑定事件,例如: <button bindtap="noWork">明天不上班</button> <button catchtap="noWork">明天不上班</button> //阻止事件冒泡 六、数据双向绑定 1、设置值 在vue中,只需要再表单元素上加上 v-model,然后再绑定 data中对应的一个值,当表单元素内容发生变化时, data中对应的值也会相应改变,这是vue非常nice的一点。 <div id="app"> <input v-model="reason" placeholder="填写理由" class='reason'/> </div> new Vue({ el: '#app', data: { reason:'' } }) 但是在小程序中,却没有这个功能。那怎么办呢? 当表单内容发生变化时,会触发表单元素上绑定的方法,然后在该方法中,通过 this.setData({key:value})来将表单上的值赋值给 data中的对应值。 下面是代码,可以感受一下: <input bindinput="bindReason" placeholder="填写理由" class='reason' value='{{reason}}' name="reason" /> Page({ data:{ reason:'' }, bindReason(e) { this.setData({ reason: e.detail.value }) } }) 当页面表单元素很多的时候,更改值就是一件体力活了。和小程序一比较,vue的 v-model简直爽的不要不要的。 2、取值 vue中,通过 this.reason取值。 小程序中,通过 this.data.reason取值。 七、绑定事件传参 在vue中,绑定事件传参挺简单,只需要在触发事件的方法中,把需要传递的数据作为形参传入就可以了,例如: <button @click="say('明天不上班')"></button> new Vue({ el: '#app', methods:{ say(arg){ consloe.log(arg) } } }) 在 小程序中,不能直接在绑定事件的方法中传入参数,需要将参数作为属性值,绑定到元素上的 data-属性上,然后在方法中,通过 e.currentTarget.dataset.*的方式获取,从而完成参数的传递,很麻烦有没有... <view class='tr' bindtap='toApprove' data-id="{{item.id}}"></view> Page({//在此我向大家推荐一个前端全栈开发交流圈:619586920 突破技术瓶颈,提升思维能力 data:{ reason:'' }, toApprove(e) { let id = e.currentTarget.dataset.id; } }) 八、父子组件通信 1、子组件的使用 在vue中,需要: 1、编写子组件 2、在需要使用的父组件中通过 import引入 3、在 vue的 components中注册 4、在模板中使用 //子组件 bar.vue <template> <div class="search-box"> <div @click="say" :title="title" class="icon-dismiss"></div> </div> </template> <script> export default{ props:{ title:{ type:String, default:'' } } }, methods:{ say(){ console.log('明天不上班'); this.$emit('helloWorld') } } </script> // 父组件 foo.vue <template> <div class="container"> <bar :title="title" @helloWorld="helloWorld"></bar> </div> </template> <script> import Bar from './bar.vue' export default{ data:{ title:"我是标题" }, methods:{ helloWorld(){ console.log('我接收到子组件传递的事件了') } }, components:{ Bar } </script>\ 在小程序中,需要: 1、编写子组件 2、在子组件的 json文件中,将该文件声明为组件 { "component": true } 3、在需要引入的父组件的 json文件中,在 usingComponents填写引入组件的组件名以及路径 "usingComponents": { "tab-bar": "../../components/tabBar/tabBar" } 4、在父组件中,直接引入即可 <tab-bar currentpage="index"></tab-bar> 具体代码: // 子组件 <!--components/tabBar/tabBar.wxml--> <view class='tabbar-wrapper'> <view class='left-bar {{currentpage==="index"?"active":""}}' bindtap='jumpToIndex'> <text class='iconfont icon-shouye'></text> <view>首页</view> </view>//在此我向大家推荐一个前端全栈开发交流圈:619586920 突破技术瓶颈,提升思维能力 <view class='right-bar {{currentpage==="setting"?"active":""}}' bindtap='jumpToSetting'> <text class='iconfont icon-shezhi'></text> <view>设置</view> </view> </view> 2、父子组件间通信 在vue中 父组件向子组件传递数据,只需要在子组件通过 v-bind传入一个值,在子组件中,通过 props接收,即可完成数据的传递,示例: // 父组件 foo.vue <template> <div class="container"> <bar :title="title"></bar> </div> </template> <script> import Bar from './bar.vue' export default{ data:{ title:"我是标题" }, components:{ Bar } </script> //在此我向大家推荐一个前端全栈开发交流圈:619586920 突破技术瓶颈,提升思维能力 // 子组件bar.vue <template> <div class="search-box"> <div :title="title" ></div> </div> </template> <script> export default{ props:{ title:{ type:String, default:'' } } } </script> 子组件和父组件通信可以通过 this.$emit将方法和数据传递给父组件。 在小程序中 父组件向子组件通信和vue类似,但是小程序没有通过 v-bind,而是直接将值赋值给一个变量,如下: <tab-bar currentpage="index"></tab-bar> 此处, “index”就是要向子组件传递的值 在子组件 properties中,接收传递的值 properties: { // 弹窗标题 currentpage: { // 属性名 type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型) value: 'index' // 属性初始值(可选),如果未指定则会根据类型选择一个 } } 子组件向父组件通信和 vue也很类似,代码如下: //子组件中 methods: { // 传递给父组件 cancelBut: function (e) { var that = this; var myEventDetail = { pickerShow: false, type: 'cancel' } // detail对象,提供给事件监听函数 this.triggerEvent('myevent', myEventDetail) //myevent自定义名称事件,父组件中使用 }, } //父组件中 <bar bind:myevent="toggleToast"></bar> // 获取子组件信息 toggleToast(e){ console.log(e.detail) } 如果父组件想要调用子组件的方法 vue会给子组件添加一个 ref属性,通过 this.$refs.ref的值便可以获取到该子组件,然后便可以调用子组件中的任意方法,例如: //子组件 <bar ref="bar"></bar> //在此我向大家推荐一个前端全栈开发交流圈:619586920 突破技术瓶颈,提升思维能力 //父组件 this.$ref.bar.子组件的方法 小程序是给子组件添加 id或者 class,然后通过 this.selectComponent找到子组件,然后再调用子组件的方法,示例: //子组件 <bar id="bar"></bar> // 父组件 this.selectComponent('#id').syaHello() 小程序和vue在这点上很相似 结语 感谢您的观看,如有不足之处,欢迎批评指正。

资源下载

更多资源
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等操作系统。

WebStorm

WebStorm

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

用户登录
用户注册