主页

偶来无聊, 拙笔涂鸦几首

此篇博客纯属个人兴趣爱好, 突然兴起, 胡乱涂鸦之作, 止增笑耳 灼夏 灼,夏日,炎炎; 受,东风,徐徐; 漫,杠彴,慢慢; 看,卷云,片片; 回思昨日穿林打叶声, 竹杖芒鞋轻胜马, 管他风雨管他晴。 窗外 窗外马路等压, 小桥流水人家, 电脑书桌代码, 妖风阵阵, BUG何时得挂。 酒翁 酒自穿肠过,言从口中出; 情在心中留,意比磐石坚; 若卿有踟蹰,便倚胸中听; 绝无二三意,自始终如一。 酒乃前世药,来解今时忧; 无论今前世,不管酒前后; 铮铮铁板书,片字不得改。 人生在世几十载,失了智,又何妨; 离了爹妈断了奶,赢了你,夫何求。 以梦为马,不负韶华 十年望飘影,踟蹰未前行,后母方穷转银河, 断了金盾,知了冷暖,梦已难成, 风雨故人情,一载难稳定,云滇船头倾沧...

阅读更多

Flutter动画

Flutter动画的一些试验 基本原理 在任何系统的UI框架中,动画实现的原理都是相同的,即:在一段时间内,快速地多次改变UI外观;由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画,这和电影的原理是一样的。我们将UI的一次改变称为一个动画帧,对应一次屏幕刷新,而决定动画流畅度的一个重要指标就是帧率FPS(Frame Per Second),即每秒的动画帧数。很明显,帧率越高则动画就会越流畅!一般情况下,对于人眼来说,动画帧率超过16 FPS,就基本能看了,超过 32 FPS就会感觉相对平滑,而超过 32 FPS,大多数人基本上就感受不到差别了。 动画的尽头是数学 Flutter抽象 为了方便开发,Flutter堆动画层进行了抽象,主要分为: Animati...

阅读更多

Flutter定制引擎

由于flutter官方引擎有时候会有一些问题,但是又不好直接大范围升级flutter版本。且flutter引擎是相对独立的版块,所以定制引擎就有了市场。 背景 2.8.1flutter引擎层在iOS的platform view层,shell调用时机有问题。导致线上会有相应的引擎层crash。 官方已经修复,但是需要升级至2.10.3+,我们暂时不升级,采用iOS自定义引擎的方式解决。 官方issue 官方已经修复了改问题,并已经合并代码到master 修复的pull request:https://github.com/flutter/engine/pull/30835/commits bufix的描述:https://github.com/flutter/flutter/is...

阅读更多

Flutter手势

研究下Flutter的手势和滑动 背景 由于想实现一个效果:2层布局结构,下面一层也可以响应,所以研究了下flutter手势问题。 原理 gestures GestureDetector内部是使用一个或多个GestureRecognizer来识别各种手势的,而GestureRecognizer的作用就是通过Listener来将原始指针事件转换为语义手势,GestureDetector直接可以接收一个子widget。GestureRecognizer是一个抽象类,一种手势的识别器对应一个GestureRecognizer的子类,Flutter实现了丰富的手势识别器,我们可以直接使用。 比如textspan,不是一个widget,所以没法用GestureDetector,只能用Ges...

阅读更多

Django+uWsgi+Nginx部署

一份Django+uWsgi+Nginx部署流程笔记 概述 简单描述了笔者0基础操作Django+uWsgi+Nginx的部署流程(业内通用流程)。 Django不用多说。 uWsgi WSGI协议(通讯协议):Python用于Web开发的协议(用于处理Web服务器和应用程序(APP)的交互信息)(把http通讯的过程抽象出来(请求数据,响应数据的封装),开发者只负责处理中途的数据) uwsgi协议(传输协议,速度很快):uWSGI程序实现的一个自有的协议(采用二进制来存储数据,之前的协议都是使用字符串,所以在存储空间和解析速度上,都更快) 注意: WSGI是一种通信协议。 uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。 Ngi...

阅读更多

贪心算法

一些算法举例 分糖果 LeetCode 455,有孩子序列和糖果序列,每个孩子需求一定数量的糖果,如果他得到了满足,则满足他的糖果会被消耗。求最多能满足的孩子数量。 示例 孩子序列:[3,10,10,6,16,11] 糖果序列:[9,4,2,7,21] 最大能满足孩子的数量:3 思路 首先将孩子和糖果都排好序,从小到大,然后用最小的糖果堆依次去尝试满足孩子序列,如果满足则消耗孩子当前节点和当前糖果堆,依次去尝试下一个孩子和糖果堆;如果当前糖果堆不能满足当前孩子,则尝试下一个糖果堆。 由于已经排好序,如果当前糖果堆不能满足当前孩子,则它一定不能满足后续孩子 实现 func allocationCandies(children: ino...

阅读更多

动态规划

一些算法举例 动态规划 买卖股票的最佳时机 给定一个数组,它的第i个元素是一支给定股票第i天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意: 你不能再买入股票前卖出股票。 示例 输入:[7,1,5,3,6,4] 输出: 5 解释: 在第2天(股票价格=1)的时候买入,在第5天(=6),最大利润=6-1=5.注意利润不可能是7-1 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下,没有交易完成,所以利润为0. 思路 需要找到最小的谷之后的最大的峰。 我们可以维持两个变量——minprice 和 maxprofit,它们分别对应迄今为止所得到的最小的谷值和最大的利润(卖...

阅读更多

杂项算法

一些算法举例 杂项 产生不重复的随机数 思路 设想一下,有n个苹果,有不同的编号,从1-n,每次拿一个出来。来产生不同的随机数 实现 func randomNumberWithoutDuplication(_ number: Int) -> [Int] { var resultArr = Array(repeating: 0, count: number) var startArr = Array(1...number) for i in 0..<startArr.count { let currentCount = UInt32(startArr.count-i) let index = Int(arc4rando...

阅读更多