个人笔记(bug,思路,总结)
本账号主要分享算法和数学建模经典案例!!!字节跳动算法工程师!!!!大学时期获得的算法建模比赛奖项有:人工智能大赛一等奖、数学建模全国一等奖、icpc银奖、蓝桥杯国赛一等奖、天梯赛全国一等奖!
展开
-
Flutter 正则匹配实战:正则篇 - 代码高亮组件的实现
按照上一章的思路,其实高亮代码也就是定义不同高亮类型,维护正则表达式而已。那还有什么好说的呢,为什么还有新开一篇文章,来水文吗?其实上一篇只是简单介绍一下流程,属于能用,但不好用。对高亮匹配需求来说,是有很多变化的:如何照顾到各种语言、是否启用某些规则。这要求的是一种拓展性,可以灵活装配,自由拓展,能对需求的变动有一定的预见性,并拥抱变化。原创 2023-06-14 22:02:32 · 366 阅读 · 0 评论 -
Flutter 正则匹配实战:正则篇 - 探索多正则高亮样式
前面的正则匹配中,我们只能为一种正则表达式进行高亮匹配。但很多场景下,我们需要为满足不同的规则的文字进行不同着色。比如下面的代码高亮的展示组件:这是如何实现的呢,接下来的两章,将进一步认识正则在Flutter中的使用。看一下如何使用实现多正则的匹配效果。原创 2023-06-14 21:50:09 · 275 阅读 · 0 评论 -
Flutter 正则匹配实战:桌面篇 - 桌面管理和系统托盘
Flutter 在 桌面端的开发体验,很大程度上依赖于的支持情况。得益于pub中良好的生态,目前非常多的平台相关插件已经支持了桌面端。原创 2023-06-14 21:36:43 · 287 阅读 · 0 评论 -
Flutter 正则匹配实战:总结篇 - 项目分层结构设计
对于项目的代码结构,其实并没有标准的答案。不同的应用有不同的需求,项目本身的定位、体量的大小、需求的难易度,都会对代码的组织形式产生影响。不同的需求就像不同职能的团体,它们之间需要相互协作,各司其职,来保证应用的正常运转。从这里可以看出,通过对需求的分层,上面的一个个方块都可以交由不同的人实现,进行平行开发。想象一下,如果写的乱糟糟的,想重用某个模块,但相关代码在项目中藕断丝连,是多么难受。前面也说过,在开发之初,就要根据设计来规划好可重用的视图片段,进行合理拆分,从而避免重复编写类似的界面构建逻辑。原创 2023-06-14 21:34:20 · 113 阅读 · 0 评论 -
Flutter 正则匹配实战:视图篇 - 移动端界面实现
到这里,最核心的四个需求已在移动端中实现,本册的目的也就基本达成了。激活页签的事件,这里添加和修改的面板延用之前桌面端的,如果觉得不大好看,也可以根据自己优化一下,这里主要在意的是完成功能需求。在按下时,先判断是否需要关闭,如果点击的索引和当前条目不一致,且偏移量非零,就说明现在有打开的条目。下面来看一下如果自己实现滑动展开的功能的过程,自己实现的代码虽然封装度不高,但能学到一些布局和动画处理的知识。菜单和桌面的保持按钮一样,将当前输入框中的正则表达式,以当前记录为关联 id ,保存到关联正则数据库中。原创 2023-06-14 21:28:28 · 102 阅读 · 0 评论 -
Flutter 正则匹配实战:视图篇 - 平台界面适配思路
不同的应用面对这方面的需求不一样,特别是对于桌面端,你很少会看到能拖到很窄的应用,且适配窄屏。倒不如,依赖共同的业务逻辑,将视图层拆分出来作为独立模块, 给出两套视图方案,交由不同的人进行维护。在应用设计时需要考虑应用的最小尺寸范围,当尺寸过小时,感官上很差,也是没有意义的。桌面端拥有强悍的性能、足够的空间、广阔的。从这里可以看出,很多在桌面端实现的组件是可以拿来复用的,这也是碎片化分离组件的好处。所以全平台的界面适配,是一个很大的挑战,不止是编程技术上的挑战,还有产品设计上、不同平台使用习惯上的挑战。原创 2023-06-14 14:15:42 · 112 阅读 · 0 评论 -
Flutter 正则匹配实战:视图篇 - 暗黑模式与界面优化
数据持久化的方式有很多,虽然可以使用数据库,但一般配置信息比较简单,可以选择。比如面板中的编辑和删除按钮,在数据为空时也可以类似处理,呈灰色无法点击。另外,有些额外的逻辑处理:比如资源加载过快时,可能导致一闪而过,体验并不是很好。最后来优化一点小细节,如下所示,现在期望在输入框中无输入字符时,保存按钮呈灰色,不可点击;在移动端,点击时有水波纹来给用户点触的反馈,但对于桌面端来说,水波纹在视觉上并不是太好。如下所示,现在期望在点击记录,在主内容上方可以展示最近打开的记录,作为页签,支持点击查看、移除操作。原创 2023-06-14 14:05:40 · 258 阅读 · 0 评论 -
Flutter 正则匹配实战:数据篇 - 关联正则功能拓展
先来看一下我们期望实现什么需求:如下所示,在右侧面板中有关联正则表达式面板。左侧每个记录条目都可以对于若干个关联正则,在数据层面也就是一对多的关系。可以点击复选框,激活某一个正则条目。该操作会造成输入框内容的变化,然后影响匹配内容。在切换记录时,关联正则表达式。原创 2023-06-14 13:44:41 · 89 阅读 · 0 评论 -
Flutter 正则匹配实战:视图篇 - 分组面板与交互
对于状态管理,其实最难的是对状态的定义,作为管理者,你必须清楚自己想要管理什么。这需要你对需求有足够的分析与理解,对各种数据进行归纳与总结。明白在需求中,对界面构建起到至关重要的数据。这里定义MatchState类型,为匹配需求相关界面提供数据。其中包括 content 主内容、pattern 正则表达式、config 正则配置三个数据。});@override这里将正则的四个可选项提供对象进行维护:});bool?bool?原创 2023-06-14 13:26:53 · 117 阅读 · 0 评论 -
Flutter 正则匹配实战:正则篇 - 理解分组匹配
其中正则表达式扮演的角色虽然简单,但极其重要,匹配出期望的信息,是脚本能胜任工作的前提。如下所示,这样结合网络请求,就可以将图片下载到本地,作为一个小脚本归纳文章图片,还是非常方便的。有时候,我们需要基于前面匹配的内容,对后面的匹配进行限制。如果分组很多,我们只想要获取到某组匹配的内容,一个个数索引会非常麻烦,太多的话也容易混乱。方法可以传入一个索引值,所以很容易想到,如果想要获取第一组中的匹配内容,只需要。中,粘贴的图片会全部放在一个文件夹中,这让人很难受,有很多无用的图片在其中。原创 2023-06-14 13:19:37 · 439 阅读 · 0 评论 -
Flutter 正则匹配实战:数据篇 - 数据操作相关功能实现
比如有网时候的微信桌面端,会从网络加载数据,展示出加载中的指示器。如果未对异常进行处理,那么会导致异步任务无法完成,从而一直处于任务中的状态,按钮一直处于 loading 状态是很不友好的。到这里,对一张表的增删改查就就基本上差不多了,这相当于一个最基本的业务单元,当需要增加其他数据表表,依葫芦画瓢就行了。因为网络请求容易出现各种各样的错误,不同的错误场景下,给用户不同的反馈是有必要的。如果更细致一点,可以考虑一下异常状态的展示,或者不同状态切换时给点过渡动画,这些细节,大家可以自己根据需求来处理。原创 2023-06-13 23:30:18 · 153 阅读 · 0 评论 -
Flutter 正则匹配实战:正则篇 - 特殊语法简写梳理
比如先把之前记录的增删改功能实现,再增加语法手记,可以自己记录一些总要的语法点。,一方面可以简化书写,另一方面可以增加正则的可读性。但这些只是正则的周边拓展,锦上添花的东西,并非是正则的核心内容,切不可舍本逐末,重在理解而非硬背。这里在匹配上有个问题,因为空格符无法被着色,使用即是被匹配了,先没有表现。号实现,如下所示:只有匹配成功,就会进入下一个匹配。的匹配效果:可以匹配光速之后任意字符任意次数,所以后面就全红了。及之间的内容,并不希望匹配尽可能多的字符,而是。正则表达式中单字符,就是匹配固定的字符。原创 2023-06-13 23:21:48 · 358 阅读 · 0 评论 -
Flutter 正则匹配实战:数据篇 - 记录列表与状态管理
工具所要解决的痛点问题:第一点,是为了解决项目代码组织结构的问题,第二点,是为了解决组件拆分中过长传递链的问题。目前根据菜单栏激活索引,动态构建面板的实现方式,会浮现出一个问题:通过帧的耗时情况可以看出,现在通过导航栏切换回记录面板时,构建的耗时会相对有明显增加。在 Flutter 中,数据是界面视图的血肉,理论上来说,和界面展示相关的数据都可以视为状态。这里声明一点:在交互过程中,数据状态的存留与否,并不是什么好与坏的问题,而是应该根据具体的场景,进行设计。所以,对于项目中的组件而言,亟需一种。原创 2023-06-13 23:02:01 · 77 阅读 · 0 评论 -
Flutter 正则匹配实战:数据篇 - 数据库集成与记录操作
由于不同用户的数据库版本各不一致,比如张三是 4 版本,李四是 10 版本,赵五是 7 版本,最新版数据库是 12 版本。另外在创建时,可以通过升级补丁的方式来不断修改数据库达到最新版本,这样可以统一操做,不然每次更新还要额外写最新版数据库的创建逻辑。在程序进行更新迭代的过程中,对数据库的更新在所难免,比如新增表,或者增加某些字段。到这里,关于数据库的使用基本上就没有什么问题了,不过关于复杂 sql 的语句书写,这是编程开发者的基本功。如下所示,是对四个操作的实现,对于简单的增删改查,使用。原创 2023-06-13 19:20:19 · 236 阅读 · 0 评论 -
Flutter 正则匹配实战:视图篇 - 桌面导航与面板操作
巧妇难为无米之炊,像显示导航栏,先定义一下数据。如下NavTab表示一个页签的必要数据,其中id表示唯一身份标识,作为激活的标志;name表示名称;icon表示图标;左侧的导航分为上下区,down表示是否在下方。});为了简单起见,这里暂时不对导航栏数据进行修改,可以定义如下的常量进行维护:另外,激活 id 数据需要随交互进行变化,可以将其定义在中伺机而动。//略...//导航数据 - 激活 id这样数据就准备完毕了,下面看一下视图的构建。原创 2023-06-13 19:13:35 · 87 阅读 · 0 评论 -
Flutter 正则匹配实战:正则篇 - 聊聊匹配的定位之术
如果你已经深谙的纵横捭阖之术,就觉得天下无敌,那就太年轻了。在内容匹配之外,还有另一个维度:,其特点是:匹配的内容为空字符。原创 2023-06-13 18:46:24 · 225 阅读 · 0 评论 -
Flutter 正则匹配实战:正则篇 - 聊聊匹配的纵横捭阖
内心独白:写完这段文字,内心真的非常激动,这是我未曾预想的,这是行走于文字之上的是灵感,迸发于笔尖。也就是说两个部分,如果前者匹配了,后面的就被忽略,继续后续字符的匹配。规则单体的堆砌,很像排兵布阵,每种阵法应用于不同的战场。只能匹配到一个字符,如下所示,匹配到的结果是一个个孤立的数字。,才算匹配成功,匹配成功的部位被着色。,团结志趣相投的人士,条件越多,留存的人越少,其提供的信息也就越有价值。,另外数字开头可以有符号,也可以没有,所以出现 0 或 1 次。设计一个正则规则,首先要认清匹配的条件。原创 2023-06-13 18:42:47 · 326 阅读 · 0 评论 -
Flutter 正则匹配实战:视图篇 - 构建可交互的正则应用
如果说正则是魔法,那就只能用魔法打败魔法。本章,我们将在桌面平台,搭建如下的正则匹配应用。在输入正则表达式时,中间部分的文字会随之高亮。这里使用macos平台进行演示说明,其他平台表现一致。原创 2023-06-13 18:38:19 · 102 阅读 · 0 评论 -
Flutter 正则匹配实战:正则篇 - 从文字高亮开始说起
说起正则,对于很多人来说,可能脑海里就是一堆意义不明的字符规则。也就只有在邮箱手机号等字符串验证时搜一下用用,很少正儿八经地用它做出个什么东西。所以很多人即使系统地学过正则规则的含义,但没有什么应用场景,很快也就淡忘了,用进废退就是这个道理。我并不喜欢在一开始就教人怎么用某个技能工具, 其实更重要的是意识到为什么要用;它有什么得天独厚的能力,使得它在某些场景中是唯一的王。只有认识到工具的价值,才有让人使用的欲望。原创 2023-06-13 18:31:45 · 430 阅读 · 0 评论 -
Flutter 正则匹配实战:开篇 - 本册目标与应用介绍
所以跨平台对应用需求的规划也是一个挑战,可能有些桌面端可以处理,但移动端无法胜任的需求,需要做出妥协。但各平台间的使用习惯上的差异是很难统一的,一统各平台交互还是求同存异,也是个挑战。目前来说,Flutter 的桌面端、Web 的交互,并非正统,而是移动应用化的;首先就是界面的适应性,由于桌面端和移动端尺寸上存在很大的差异性,如果不做任何适配,虽然在桌面端也能完成需求,但视觉体验上并不是很好。在独立发展的几十年间,各平台间都使用不同语言进行开发,对于平台特有功能的处理,是比较麻烦的。原创 2023-06-13 18:28:07 · 119 阅读 · 0 评论