移动开发

【Android】项目维护几年了,为啥还这么卡?

浅谈 前段时间有个客户问我,为啥你们项目都搞了好几年了,为啥线上还会经常反馈卡顿,呃呃呃。。 于是根据自己的理解以及网上大佬们的思路总结了一篇关于卡顿优化这块的文章。 卡顿问题是一个老生常谈的话题了,一个App的好坏,卡顿也许会占一半,它直接决定了用户的留存问题,各大app排行版上,那些知名度较高,但是排行较低的,可能就要思考思考是不是和你app本身有关系了。 卡顿一直是性能优化中相

iOS widget 小组件开发

iOS widget 小组件开发 Github地址 项目选择对应语言项目小组件部分 Github地址 iOS 多个widget调试问题 iOS 多个widget调试问题 # iOS widget 小组件 秒级刷新 # 创建项目 1.png 2.png widget 代码说明 Provider s

iOS动画 —— 自定义View

创建路径 1.使用CGContextRef创建,如CGContextAddArc 这种方式是直接对图形上下文进行操作,常用的方法有: 之前的讲解文章:# CGContextBeginPath //开始画路径 CGContextMoveToPoint //移动到某一点 CGContexAddLineToPoint //画直线 CGContexAddCurveToPoint /

vue+element 导入excel文件

记录一下导入excel文件的使用,现在导入excel的话大部分使用的都是 xlsx 插件,导入的话只需要下载一个xlsx包就行 $ npm i xlsx 也是根据网上看到的教程做下去的,下面是具体的步骤: 1.先封装一个读取二进制文件的方法 // 把文件按照二进制方式读取 export const readFile = file =>{ return new Promise

Android 自定义可展开收回能够@xxx和#话题的TextView(仿小红书效果)

前段时间接到一个需求,需要完成以下效果。 image.png 大致功能和小红书效果类似 可以 展开 和收起 也可以@xxx 还能加#话题 1、内容超过指定行数需要折叠起来; 2、内容中含有@+“内容”,需要携带“内容”跳转指定页面。 3、有可能会在“展开”或者“收回”前面附加显示其他内容 实现思路: 可以自定义View继承TextView,在自定义View里面去处理所有的逻辑

MC1E 协议通信命令和功能一览

一、MC协议通信 设备经过三菱FX3U-ENET-ADP访问可编程控制器时MC协议帧(数据通信报文)的种类相当于A兼容1E帧。 MC1E 命令报文长度为 12 。 二、MC协议控制顺序的原则   以下说明对方设备利用MC协议访问可编程控制器时的顺序(控制顺序)的原则。 1、命令报文的发送 MC协议数据通信采用半双工通信。 访问可编程控制器时, 请在接收到可编程控制器侧对刚

Swift5.0 -UIView 动画

Swift-UIView动画 UIView动画可以设置的动画属性有: 1、大小变化(frame) 2、拉伸变化(bounds) 3、中心位置(center) 4、旋转(transform) 5、透明度(alpha) 6、背景颜色(backgroundColor) 7、拉伸内容(contentStretch) 其中通过transform也可以实现不同的动画效果,例如:平移、缩放、旋转、翻转 简单动画

如何在 Kotlin 中创建单例类?

Singleton 是一个全局对象,可以从应用程序的任何地方访问。本文展示了在 Kotlin 中创建它的不同方法。 在 Kotlin 中,您可以使用对象声明来实现单例。但是,如果你不知道这个对象关键字,你可能会做这样的事情。 常规单例 class Singleton private constructor() { companion object { @Volatile

为什么block要使用copy而不是strong或者其他属性修饰?

block本身是像对象一样可以retain,和release。但是,block在创建的时候,它的内存是分配在栈上的,而不是在堆上。 其本身的作用域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。因为栈区的特点就是创建的对象随时可能被销毁,一旦被销毁后续再次调用空对象就可能会造成程序崩溃,在对block进行copy后,block存放在堆区。使用retain也可以,但是