主页

偶来无聊, 拙笔涂鸦几首

此篇博客纯属个人兴趣爱好, 突然兴起, 胡乱涂鸦之作, 止增笑耳 梅 二月寒, 二月寒, 百花凋毕我独赏, 素白映红挂枝满。 春日暖, 春日暖, 我花开时园满香, 旧枝新芽莫道晚。 灼夏 灼,夏日,炎炎; 受,东风,徐徐; 漫,杠彴,慢慢; 看,卷云,片片; 回思昨日穿林打叶声, 竹杖芒鞋轻胜马, 管他风雨管他晴。 窗外 窗外马路等压, 小桥流水人家, 电脑书桌代码, 妖风阵阵, BUG何时得挂。 酒翁 酒自穿肠过,言从口中出; 情在心中留,意比磐石坚; 若卿有踟蹰,便倚胸中听; 绝无二三意,自始终如一。 酒乃前世药,来解今时忧; 无论今前世,不管酒前后; 铮铮铁板书,片字不得改。 人生在世几十载,失了智,又何妨; 离了爹妈断了奶,赢了你,夫何求。 以梦...

阅读更多

并查集

一些算法举例 并查集&染色问题 岛屿个数&朋友圈(islands&Friends Circles) 给定一个1(陆地)和0(水)组成的二维网络,计算岛屿数量,一个岛被水包围,并且它是通过水平方向或者垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 a. 输入: 11000 11000 00100 00011 输出: 3 b 输入: 110 110 001 输出: 3   A B C ...

阅读更多

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...

阅读更多

动态规划

一些算法举例 动态规划 Triangle 给定一个三角形数组,找到从上到下最小的sum的路径 示例: [2] [3, 4] [6, 5, 7] [4, 1, 8, 3] 最小的path sum is 11(i.e. 2+3+5+1=11) 解析 暴力法 采用递归的方式:走到最后一行最后一个元素肯定是它肩部走过来的,也就是它left肩orright肩 代码如下: /* *给定一个三角形数组,找到从上到下最小的sum的路径 *[2] *[3, 4] *[6, 5, 7] *[4, 1, 8, 3] *最小的path sum is 11(i.e. 2+3+5+1=11) */ func min...

阅读更多