自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 彻底搞定async、await原理

从上面代码执行,可以知道async返回的是一个Promise对象,其原理通过Promise实现。第四个next之后,c = 3,没有了yield控制,直接return,所以返回{value: 6, done: true},done为true标识已经结束。是js异步编程规范,结合await实现异步执行结果等待,将异步拥有同步代码的能力,其实底层就是一个generator生成器的语法糖。第二个next传入1,执行了 let a=和第二个yield后面的2,a=1,即next(1)参数1;

2023-02-21 13:44:56 202

原创 关于js中的valueOf和toString区别

如果没有重新定义valueOf和toString,其隐式转换会调用默认的toString()方法。如果只改写 valueOf() 或是 toString() 其中一个,会优先调用被改写了的方法而如果两个同时改写,则会像 Number 类型转换规则一样,优先查询 valueOf() 方法,在 valueOf() 方法返回的是非原始类型的情况下再查询 toString() 方法。

2023-01-03 12:41:19 177

原创 一文搞懂FlutterMethodChannel原理

在跟甲方合作中,需要开发一个App,除了店长管理日常日报和订单退款之外,还需要实现通过消息推送将每笔订单进行语音播报。App开发开始从其他团队借调一个做Android的人过来先完成了Android开发,ios本打算靠后一点发布。刚好遇到组织架构重组,ios就停滞了。离甲方要求的时间只有一个月时间了,产品和运营就来找我们技术团队说App能不能做,但是重新学习一门新的语言,确实一个非常大的挑战。恰好当时我很感兴趣flutter开发app,就主动提出来接这个锅。

2022-10-28 17:57:29 1646 1

原创 设计模式之原型模式

在做软设真题的时候,2013年上半年也考了原型(Prototype)模式,但是跟答案相差甚远,没想到还有那种强制类型转换的,太操蛋了。如果标准答案,我能得到7分,丢了8分那就太不应该了,今天特意学习记下Prototype模型,虽然是为了应付软考,但其实更加是为了能灵活使用设计模式的应用。

2022-10-19 16:16:04 318

原创 设计模式之命令模式

生活中经常遇到几种场景,比如将军没有亲自上战场,但是他却能把命令传达到前线;在饭店吃饭,我们并不知道厨房的厨师是谁,却能吃到好吃的钵钵鸡;看电视的时候,我们并不需要关心电视的开关在哪里,只需要按下遥控器就能控制电视的开关……这种在设计模式中,非常适合使用命令模式来实现,那么命令模式是什么呢?将一个请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销操作。

2022-10-18 19:56:06 94

原创 设计模式之装饰器模式

在历年软件设计师开始中出现几次装饰器模式,所以装饰器模式还是挺重要的,在不保证能拿满分的情况下,每个设计模式加上案例加深印象。平时看到的装饰器基本都是形如@Decorator这样的形式,但是在设计模式中如何实现呢?我一直很困惑一点在于如何能动态的给一个对象添加额外的职责。通过学习这篇文章,加深了我对装饰器模式的了解。

2022-10-17 15:54:38 365

原创 设计模式之策略模式

某大型购物中心欲开发一套收银软件,要求其能够支持购物中心在不同时期推出的各种促销活动,如打折、返利(如满30返100)等等。定义一系列算法,把它们一个个封装起来,并且使得它们可以相互替换。此模式使得算法独立于使用它们的客户而变化。

2022-10-08 15:48:20 209

原创 设计模式之状态模式

最近在备考软件设计师,看了很多历年真题,无论是上午题还是下午题,都会至少有一题是设计模式的题目。下午题最后一道大题每一年基本固定是一道c++和java版的设计模式。正好趁这段时间好好加深一下设计模式的理解。在做真题的时候,有一道关于航空公司会员的题目,这道题在一次历年真题中以面向对象大题出现,而另一年变成了最后一道设计模式大题,都是设计到状态模式。就索性从状态模式开始,一个一个吃透设计模式。

2022-09-28 17:00:52 301

原创 一篇文章彻底搞清楚UML的用例图以及其中的关系

用例图用于对系统的静态用例视图进行建模。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。当对系统的静态用例视图建模时,可以用下列两种方式来使用用例图。(1)、对系统的语境建模。对一个系统的语境进行建模,包括围绕整个系统画一条线,并声明有哪些参与者位于系统之外并与系统进行交互。在这里,用例图说明了参与者以及它们所扮演的角色含义。(2)、对系统的需求建模。对一个系统的需求进行建模,包括说明这个系统要做什么,即从系统外部的一个视点出发,而不是考虑系统怎么做。用例图说明了

2022-09-26 20:02:18 1675

原创 fir.im关于iOS Ad hoc内测版下载详细流程

由于苹果严格的App审核生态规则,安装Ad hoc内测版必须将苹果手机的UDID添加到开发者账号的设备列表才能正常安装。下面将介绍如何在fir.im上下载内测版并安装(当然上传流程官方文档已经讲得很清楚了)。

2022-09-02 13:09:25 1354

原创 flutter开发iOS app发布到App store connect遇到的问题汇总

我使用了第三方的SDK,可能是使用了获取定位信息,所以需要在xcode中主项目的info.plist添加“NSLocationWhenInUseUsageDescription” ,在info直接键入“NSLocationWhenInUseUsageDescription”是没有这个键的,但是你输入之后,回车键,会默认出现如下图所示的键。关于ios开发,需要注意的事项很多,细节也很多,从证书申请,开发真机调试,发布内测,最后发布到App Store,是一个很长的流水线的过程。......

2022-08-26 12:54:09 1786

原创 解决flutter mac开发真机调试出现 There are no devices registered in your account on the developer website问题

以上都是自己不断折腾之后总结出来,虽然很简单,但是背后的时间的确花了不少啊,开发就这样,有兴趣折腾就会有收获。

2022-08-02 20:02:23 1042

原创 详细记下Flutter开发遇到的各种坑-带你走出入门弯路

目录flutter安装设置环境变量 Android studio安装解决install emulator问题安装Flutter和Dart插件gradle构建错误分析原因解决问题更优方案这里我安装的Android studio是2021.2.1 Patch 1版本,可以直接百度上找个资源下载,之后所有的截图都跟这个版本有关。然后在flutter官网下载最新的flutter包(我在window系统上开发),但是两个下载方式都不是很稳定,建议大家使用如下图所示下载flutter包,以保证flutter版本最新。点

2022-06-23 19:48:22 1566

原创 堆排序算法----一种构建完全二叉树进行排序的算法

目录堆排序算法堆排序思想构建初始堆调整新堆代码设计总结疫情之后复工复产,工作又开始忙起来了,加上自己在研究数学公式可视化编辑,比较费神费力,最近文章就写比较少了,但是不能一直停下来,既然已经开始,就有始有终,刚好最近使用堆排序算法,于是今天决定把堆排序算法记录下来。对于个元素的序列,当且仅当满足下面关系时称其为堆。 或 其中,和应该小于等于。如果将此序列对应的一维数组,即以一维数组作为序列的存储结构,看成一个完成二叉树,则完全二叉树中所有非根结点的值都不小于(或者大于)其左右子结点的值。

2022-06-19 15:47:07 596

原创 如何解决vue3.0引用静态资源出现空白的问题

问题描述在使用vue创建新项目之后,本想在public的index.html引用一些不需要webpack编译的静态资源,我在项目中引用了一个reset.min.css和一张loading.png图片:结果遇到个坑,页面并没有任何样式变化,在浏览器中单独打开图片和样式文件都被重定向跳转到首页,链接后面自动加上‘#/’,坑位截图如下:解决方案本热觉得虽然项目中有static目录,但webpack编译时并没有将static的静态资源拷贝到dist目录下,本地服务器会根据项目配置的路由做了通用处理,最后就重定向跳转

2022-06-08 14:44:21 869

原创 关于node-sass安装出现command failed和Error: Node Sass version 7.0.1 is incompatible with ^4.0.0问题

再给公司做打车H5应用时,换了一台新电脑,竟然跑不起来,出现如下的问题:说明node-sass依赖python2.x版本,之后安装python2.7.8重试了下,还是一样报错。于是尝试用按照下面命令安装但问题又来了,发现直接安装到node-sass7.0.1版本。还是编译错误,意思很明显,竟然7.0.1和4.0.0不兼容了。试了很多种方法,发现最终能解决方案:这样就运行成功了。在package.json文件中“node-sass”变成了“sass”:最后记录一下最终运行的效果。...

2022-06-07 11:36:51 366

原创 【动态规划案例】详细介绍投资问题

现有万元资金,个项目投资,假设:为分配给第i个项目的资金;为第i个项目投资得到的收益(万元)。问:如何投资使得总效益最大?根据动态规划的一般性步骤,首先建立目标函数和约束条件,根据上面假设得到:目标函数:;约束条件:;假设为万元钱投资给前个项目获得的最大收益,用动态规划思路求解,问题就转成求。当时,也就是说只投一个项目时最大收益为:;当时,即至少投资两个项目以上时,设()为分配给第个项目的资金,此时还剩下的资金可分配给前个项目,则获得的最大收益为:根据上面的分析,可以得到转移方程:以上得到的转移方程分析比较

2022-06-05 22:37:28 3414

原创 【动态规划案例】彻底搞明白最长公共子序列LCS

我们在写论文或者文章的时候,是否被判定为抄袭,其思想就是使用求最长公共子序列方法查找两篇文章相似度高不高。子序列是指某个序列中任意地去掉若干个不一定连续的元素后形成的序列。如果一个元素也不去掉,其本身也是它的一个子序列。设序列X,Y:如果存在X的元素构成的严格递增序列,使得则Y是X的一个子序列。例如BDAB、ABCBDAB是ABCBDAB的一个子序列。如果存在Z同时是X和Y的子序列,则称Z是X和Y的公共子序列。子序列的长度则是指子序列的元素个数。最长公共子序列问题就是在给定的和序列中,求出这两个序列的最长公

2022-06-01 12:36:15 555

原创 WPF如何彻底解决“参数无效”,在 System.Drawing.Graphics.GetHdc()的问题

问题描述因项目需要,需要做OCR实时某一截取区域并识别出支付总金额,于是引用GDI+实现截取图片功能,但是线下门店用户经常在收银过程中突然无法识别出来,而且很有规律,都是运行个3、4个小时问题就会复现。原因和解决方法GetHdc本来就没有参数,竟然还报出参数无效的错误。当时思考的方向可能是因为没有及时对已使用过的GDI+对象释放,导致内存占用率越来越高,最后出现问题。仔细查了一下资料,果然思路是正确的,GDI在.Net中属于非托管资源,对于这类资源虽然垃圾回收器(GC)可以跟踪封装非托管资源的对

2022-05-28 13:23:50 1226

原创 WPF中彻底解决Win10屏幕125%、100%缩放布局导致截图错位的问题

问题重现2021年下半年公司拿下了一个大项目,其中为了打通现有收银系统和青蛙pro以及蜻蜓F4两种进行双通信,需要在收银机搞一个收银插件,获取现有收银系统的预结算总金额。当时我想到的第一个方法就是使用图像识别,即OCR光学识别技术,实时识别现有收银系统的支付金额,加上收银系统和蜻蜓以及青蛙Pro的lot小程序打通双向通信能力情况下,将金额发送到蜻蜓以及青蛙Pro的lot小程序引导用户进行扫码付款操作。得益于WPF有xaml样式优势,做界面也非常方便,交互代码基于C#的,本身自己也经常使用C#,所以决定选

2022-05-28 00:10:15 5991 5

原创 JavaScript关于创建对象你可能不了解的一些内部原理

创建对象的几种方式在js中,经常看到如下四种创建对象的方法:var obj = {}; // 对象字面量,跟new Object()一致var obj1 = new Object(); // new方式创建对象var obj2 = Object.create(); // 通过Object.create创建但我们在开发项目过程中,还有另一种常用的创建对象的方式,即通过function方式:function PObject(name) { this.name = name;}

2022-05-25 01:05:54 170

原创 JavaScript函数形参、函数内部变量、函数名命名冲突问题

函数形参和函数内声明变量同名问题我们首先看下下面的执行结果function ab(x) { console.log(x); var x; console.log(x);}ab(30);// 30// 30输出结果竟然都是30,是不是非常奇怪???不着急,再看function ab1(x) { console.log(x); var x = 4; console.log(x);}ab1(40)// 40// 4输出结果更

2022-05-22 12:24:11 851 2

原创 javascript中==和===最主要的区别

接触过js语言,==和===是绕不开的话,可以说拿捏不好这两个的区别,就写不出高质量的js代码,bug也会随形相伴,甩也甩不掉。下面记录了关于==和===的区别,能达到一劳永逸的目的。javascript中有两个值通过==比较,将会发生两种情况:这里注意一下,数组通过调用toString()之后,其实是返回一个字符串:了解数组toString之后,我们可以通过以下代码看就比较直观易懂了:在浏览器中执行以上的结果打印如下:if(单值),如果没有==的情况下,只有以下的值才会为假值:===不会造成隐式类型

2022-05-21 20:26:10 156

原创 掌握了排序算法的稳定性,对排序算法学习将会事半功倍

稳定性是在一组未排序的序列中,如果存在两个相等的元素A和B,且在未排序序列中,A在B前面位置,如果在排序结束之后,A、B的位置没有发生变化,也就是说A仍然在B的前面,那么就称该排序算法是稳定的。

2022-05-21 16:11:54 230

原创 用二叉树描述二分算法,一种直观易记思路

二分查找法也叫折半查找算法,在一个有序序列R[1,...,n]中,将待查元素(Key)的值和序列的中间位置(标记为mid)的值进行比较,如果相等,则查找成功;如果Key>R[mid].key,说明待查元素的值在R[mid+1,..,n]后半区间内,那么只需要在后半区间查找就可以了;如果Key<R[mid].key,说明待查找元素的值在R[0,mid-1]前半区间内,那么只需要在前半区间插件即可,这样逐步缩小查找范围,直到查找成功或者区间为空时失败为止。如何用二叉树描述?假设有一个非重

2022-05-20 02:00:12 855

动态规划之投资问题.html

基于javascript实现的动态规划解决投资问题

2022-06-05

最长公共子序列.html

包含动态规划解决斐波那契数列优化方法,以及动态规划获取最长公共子序列方法

2022-06-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除