自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杭城小刘

大前端领域的知识(iOS、Web、BFF、API、Server、Workflow、脚本、ci、cd 等知识)

  • 博客(68)
  • 资源 (3)
  • 收藏
  • 关注

原创 Electron:PC 端多端融合方案

每天都要写第二天的 todoList。有一天在写的时候突然想到,为了让自己清楚知道自己需要做啥、做了多少、还剩多少没做,想写一个电脑端程序,在技术选型的时候就选了 electron。一、 方案选型3天时间写了个 PC 端应用程序。先看看结果吧为什么要选 electron 作为 pc 端开发方案?史前时代,以 MFC 为代表的技术栈,开发效率较低,维护成本高。后来使用 QT 技术...

2020-05-04 18:53:45 1772

原创 popstate事件在webkit中的诡异行为

1、背景:同事去学校做毕设请假,今天帮他修改h5bug 2、遇到的问题:移动端App打开某个网页会自动弹出一个对话框,这个对话框出现的不合时宜,因为需要是在页面做一些操作后点击原生顶部的返回按钮再弹出对话框 3、具体问题就是popstate造成的4、原来的代码:window.addEventListener('popstate', function() {var btnArray = ['我要

2017-05-17 16:38:55 4917

原创 LoadRunner 12.0.2的安装

在惠普官网下载LoadRunner,会发现目前最新LoadRunner12有四个不同安装版本。 CommunityEditionAdditionalComponents社区版的附加组件 CommunityEditionStandaloneApplications社区版独立应用程序 CommunityEdition社区版 Communit

2015-04-25 11:34:16 1619

原创 从 Flutter 和前端角度出发,聊聊单线程模型下如何保证 UI 流畅性

文章主题是“单线程模型下如何保证 UI 的流畅性”。该话题针对的是 Flutter 性能原理展开的,但是 dart 语言就是 js 的延伸,很多概念和机制都是一样的。具体不细聊。此外 js 也是单线程模型,在界面展示和 IO 等方面和 dart 类似。所以结合对比讲一下,帮助梳理和类比,更加容易掌握本文的主题,和知识的横向拓展。先从前端角度出发,分析下 event loop 和事件队列模型。再从 Flutter 层出发聊聊 dart 侧的事件队列和同步异步任务之间的关系。一、单线程模型的设计1. .

2021-06-21 07:37:56 261

原创 写好测试,提升应用质量

相信在国内一些中小型公司,开发者很少会去写软件测试相关的代码。当然这背后有一些原因在。本文就讲讲 iOS 开发中的软件测试相关的内容。一、 测试的重要性测试很重要!测试很重要!测试很重要!重要的事情说三遍。场景1:每次我们写完代码后都需要编译运行,以查看应用程序的表现是否符合预期。假如改动点、代码量小,那验证成本低一些,假如不符合预期,则说明我们的代码有问,人工去排查问题花费的时间也少一些。假如改动点很多、受影响的地方较多,我们首先要大概猜测受影响的功能,然后去定位问题、排查问题的成本就很高。场.

2020-07-16 16:12:39 342

原创 规范化团队 git 提交信息

同一个工程项目,为了方便管理,git 的 commit 信息最好按照一定的格式规范,以便在需要的时候方便使用。什么是方便的时候,比如出现了一个线上 bug,所以需要回滚操作,知道了提交信息可以方便的定位问题。代码 review 的时候也知道了该次 commit 干了什么,所以 commit 标准化好处很多,不再举例。实现可以马上想到的是利用 shell 结合 git hook 实现在 g...

2020-04-02 02:44:00 206

原创 1995年的资深工程师,和你谈谈如何进阶

自我介绍网络ID:杭城小刘,城市:顾名思义,人在杭州。1995年出生,本科毕业,现在是一名 iOS 资深工程师。兴趣爱好广泛:乒乓球、美食、电影、健身、山地车、养了2只布偶猫(Simba & Bella)、养花。技术领域:iOS、Web 前端,写过 Node、PHP 后端服务、写过爬虫、研究过反爬虫技术方案。在成长的路上…工程师生涯的两三事刚毕业开始还是一名普通的 iOS 工程师,做...

2020-04-02 02:42:01 444

原创 Mac 终端效率神技

增强各种预览的插件预览查看图片分辨率&大小代码语法高亮快速预览zip压缩包内容快速预览markdown格式内容brew cask install qlcolorcode betterzipql qlimagesize qlmarkdowniTerm2具体的配置网上一大堆。贴一个本人亲身操刀操作过的教程程序员经常与终端操作打交道,所以很多命令便是做成了命令行模式,在自带...

2020-04-02 02:27:20 421

原创 Charles 抓包原理

t Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的。HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。所以,研究HTTPS协议原理,最终就是研究SSL/TLS协议。运行过程我们都知道HTTPS在保证数据安全传输上使用了加密算法,但是具体是如何加...

2020-04-02 02:26:05 1177

原创 浅谈iOS和Android后台实时消息推送的原理和区别

前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同。实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具。本文将从原理上谈谈两个平台上实时消息推送的区别。简要对比iOS 系统的推送(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程...

2020-04-02 02:25:07 1281

原创 Git 实用操作

合并多次提交记录有的时候我们对于某个功能为了实时保存自己写的代码,可能会有多次提交,所以等功能稳定下来,我们可能会有这种需求:将前面多余几次的提交记录合并为1个记录。幸运的是 Git 为我们提供了这样的命令。有2种做法合并部分git rebase -I HEAD~n。这里的 n 代表压缩最后n次提交。执行这条命令后会弹出 vim 编辑窗口,这 n 次提交记录会倒序,最上面的是最早的提...

2020-04-02 02:24:10 92

原创 命令行文件查找

在日常中,find的使用频率很高,熟练掌握对提供工作效率很有帮助。语法:find(选项)(参数)1、列出当前目录以及目录下的所有文件find .2、找到当前目录下名字为 11.png 的文件find . -name "11.png"3、找到当前目录下所有的 jpg 文件find . -name "*.jpg"4、找到当前目录下的 jpg 文件和 png 文件fi...

2020-04-02 02:21:47 1177

原创 HTTP 请求头 Range 信息

请求资源的部分内容,单位是 byte(字节),从0开始。如果请求头携带了 Range 信息,也就是分批下载,这时候服务器会返回 206 Partial Content 的状态码及说明。如果服务器不支持分批下载,那么会返回整个资源的大小以及状态码为200。Range 请求头Range: bytes=start-end例如:Range: bytes=10- //:从第10个字节开始到最后一...

2020-04-02 02:20:38 4092

原创 字节序

最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。背景自定义报文,调用接口,服务端报文解析失败iOS 小端序查看 iOS 设备使用的端序 if (NSHostByteOrder() == NS_LittleEndian) { NSLog(@"NS_LittleEndian");} if (NSHostByt...

2020-04-02 02:19:45 141

原创 自定义报头协议

在学习过计算机网络的课程,我们知道刚开始计算机都是单独脱机工作的,没有联网的情况下计算机的信息共享能力、运算能力都非常有限,后来诞生了计算机网络.有了就是那几网络,计算机 A 的信息和数据可以通过网络传递到计算机 B,同样计算机 A 可以获取到来自计算机 B 的数据. 但是不同计算机之间交换数据的时候就要通过网络来传输了.传输的过程中需要不同的计算机都遵循一定的规则来组装数据、传递信息,那么这样的...

2020-04-02 02:18:22 434

原创 数据安全(反爬虫)之「防重放」策略

在大前端时代的安全性一文中讲了 Web 前端和 Native 客户端如何从数据安全层面做反爬虫策略,本文接着之前的背景,将从 API 数据接口的层面讲一种技术方案,实现数据安全。一、 API 接口请求安全性问题API 接口存在很多常见的安全性问题,常见的有下面几种情况即使采用 HTTPS,诸如 Charles、Wireshark 之类的专业抓包工具可以扮演证书颁发、校验的角色,因此可以...

2020-04-02 02:16:51 416

原创 Node 单元测试

什么做这个事情我在我写的文章里面多次提到单元测试的重要性。重要的事情说三遍“单测很重要”、“单测很重要”、“单测很重要”。单纯说这句话没公信力和权威性,那我举例子来说明吧。场景1某业务线在不断的版本迭代,在版本6的时候发现功能 A 的代码太乱太多了。小刘同学打算重构,他辛辛苦苦解决后,打算提交给测试工程师进行测试。测试工程师说“小刘,你这个代码全是 Bug 呀,我点进去就 Crash”。小...

2020-04-02 02:15:37 530

原创 YAML

司基础平台技术组整合了一套 cli 和相关工具,React Native、iOS、Android、Node、前端项目统一进行依赖管理、打包、提测、发布等,项目工程中有 .yml 文件,不太了解作用,所以本文对其进行了解和学习。一、 YAML 是什么YAML (a recursive acronym for “YAML Ain’t Markup Language”) is a human-re...

2020-04-02 02:14:21 169

原创 从 Node.js 看看服务端框架的一些感想

为什么写这篇文章?因为早上在思考一个问题「想获取一家公司的数据(内容型公司),反爬措施做的比较好(VIP会员制度,访问次数太多会锁掉账号)。有几个方向想去尝试:1.App 逆向破解看看网络请求部分的参数是如何生成的;2.Charles 抓包破解参数部分看看能否模拟;3.查看小程序是否有漏洞。最后想来想去还是算了,因为反爬虫措施即使破解了,但是当请求的次数较多的时候还是会封锁 VIP 账号。最后想...

2020-04-02 02:13:14 397

原创 网页二维码,App 扫码登录实现原理

需求介绍首先,介绍下什么是扫码登录。现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件。而开发这些app的企业,都有他们相对应的网站。为了让用户在使用他们的网站时,登录更加方便和安全。这些企业提供了, 使用手机,扫一扫,就可以登录的服务。网页登录时的效果如下:有很多小伙伴可能会感到很神奇,网页上只是显示了个二维码,它怎么就知道是哪个手机扫到了二维码,并且进行登录的呢?而且,登录完成...

2020-04-02 02:12:28 753

原创 利用分页和模糊查询技术实现一个App接口

摘要: 模糊查询技术、分页技术、App接口1、分页问题关键技术点:php执行sql语句。示例:“SELECT * FROM hotel WHERE subject='10' and address like '%杭州%' LIMIT 0,4”。注意:LIMIT后需要跟2个数字,1个是起始位置,2是结束位置。可以对limit函数进行封装:select *from user limit (pa...

2020-04-02 02:11:41 367

原创 前端模块化演进之路

有这样一个场景,客户端运行很久,但是法务部和数据部需要收集用户的一些信息,这些信息收集好之后需要进行相应的数据处理,之后上报到服务端。客户端提供一个纯粹的 JS 执行引擎,不需要 WebView 容器。iOS 端有成熟的 JavaScriptCore、Android 可以使用 V8 引擎。这样一个引擎配套有一个 SDK,访问 Native 的基础能力和数据运算能力,可以看成是一个阉割版的 Hybr...

2020-04-02 02:10:26 169

原创 Vue3 核心技术

写这篇文章是之前看到了尤大的微博,Vue3 发布了新版本,其在声明中写到对于之前的 Object.defineProperty 用 Proxy 改写了。The Proxy object is used to define custom behavior for fundamental operations (e.g. property lookup, assignment, enumerati...

2020-04-02 02:09:28 354

原创 富文本编辑器原理探索

经常在做企业网站的管理系统的时候需要用到富文本编辑器,之前基本上都是直接去 npm 或者 github 上面搜找一些排名考前或者 readme 写的好的库,直接拿来用。万变不离其宗,是时候探索下本质了。contenteditable要想实现富文本需要开启“编辑”的能力,系统提供了一个 api:contenteditable 允许我们对内容进行编辑。下面是来自 MDN 的官方解释。The...

2020-04-02 02:08:22 435

原创 Vue 小结

本次串讲的主要目的在于给我们移动端的同学揭秘下目前前端开发的现状,和一些典型框架或者说是库的产生背景、以及设计思想和解决了什么样的问题。以 Vue.js 为例。此次讲解围绕以下几个方面展开:MV* 框架模式Vue.js 的概述Vue MVVM 的实现Vue 与 React 的对比有 Vue 基础如何快速上手 WeexMV* 框架模式历史最早期的 Web 开发是洪荒时代,开发...

2020-04-02 02:07:06 268

原创 大前端动画

大前端开发中经常会遇到动画的开发,那么什么是动画?在物理学中运动就是研究物体在时间维度和空间维度上改变的现象,所以动画也一样,动画主要研究2个因素,发生运动物体的时间和空间。Web前端开发中的动画在 Web 前端开发中实现动画有2种方式。要么依靠 CSS 实现动画,要么依靠 JS 控制实现动画。CSS 实现动画首先要说 CSS 中的4个概念:animation、transition、t...

2020-04-02 02:04:32 157

原创 Chrome 调试技巧

写在前面Chrome 有非常强大的调试功能本文包括浏览器调试,不包括web移动端调试。本文调试均在chrome浏览器进行alert这个不用多说了,不言自明console基本输出想必大家都在用console.log在控制台输出点东西,其实console还有其它的方法:console.log("打印字符串");//在控制台打印自定义字符串console.error("我是个错误...

2020-04-02 02:03:29 126

原创 动画控制的另一种技术

在 HTML5 的时代里我们可以通过 css3 的 animation 和 kerframes 配合使用动画;也可以使用 css 的 transform 控制动画;在 JS 里面我们通常用 setTimeout 和 setInterval 来控制动画时间。setTimeout 和 setInterval 对于控制动画时间不是很准确,因为它是靠电脑的刷新频率。并且当浏览器切换到其他页面或者最小化的...

2020-04-02 02:02:27 80

原创 webpack 从入门到精通

小实验我们一步步打包一个小项目看看 webpack 是如何工作的。先写一个 hello.jsfunction hello(messgae){ alert(messgae);}然后对其打包,发现终端报错。解决后知道在 webpack 2.0 的时候,我们打包一个 js 文件可能是这样的,比如将 hello.js 打包为 hello.bundle.js 。webpack he...

2020-04-02 01:53:40 272

原创 基于 Web 的反爬虫技术方案

对于内容型的公司,数据的安全性很重要。对于内容公司来说,数据的重要性不言而喻。比如你一个做在线教育的平台,题目的数据很重要吧,但是被别人通过爬虫技术全部爬走了?如果核心竞争力都被拿走了,那就是凉凉。再比说有个独立开发者想抄袭你的产品,通过抓包和爬虫手段将你核心的数据拿走,然后短期内做个网站和 App,短期内成为你的劲敌。一、爬虫手段目前爬虫技术都是从渲染好的 html 页面直接找到感兴趣的...

2020-04-02 01:51:59 1546 2

原创 h5自定义对象

一、方式一在很早以前我们自定义元素的属性要通过 user-defined-attribute="value"的方式来设置自己需要的属性设置自定义属性<h1 user-defined-attribute="share">杭城小刘</h1>获取自定义属性document.getElementsByTagName("h1")[0].getAttribute("user...

2020-04-02 01:49:48 320

原创 Vue 技术的小技巧

Vue 项目开发中经常遇到事件阻止冒泡的需求。在传统的写法上就是调用 event.preventDefault()、event.stopPropagation()。尽管我们可以在 methods 里面这样写,但是更好的规范是:methods 只做数据的逻辑处理,而不是去处理 DOM 相关的细节(阻止事件冒泡)为了解决这个问题, Vue 为 v-on 提供了事件修饰符。通过.表示的指令后...

2020-03-31 21:55:32 275

原创 CSS 实现埋点统计

当一个网站或者 App 的规模达到一定程度,需要分析用户在 App 或者网站的相应操作,则需要埋点统计用户行为,这个不用多说,具体实现有 JS 脚本写好埋点事件并调接口,今天 get 到一种新的埋点统计方式保证耳目一新。下面代码简单示范一下。//index.html<!DOCTYPE html><html><head lang="en"> ...

2020-03-31 21:54:21 305

原创 正则表达式

\d :匹配一个数字\w : 匹配任意一个字母或数字. : 可以匹配任意字符串* : 可以匹配任意个字符(包括0个)+: 至少一个字符? : 表示0个或1个字符{n} :表示n个字符{n-m} : 表示n-m个字符[ ] :表示范围[0-9a-zA-Z\_] : 可以匹配一个数字、字母或者下划线[0-9a-zA-Z\_]+: 可以匹配...

2020-03-31 21:53:26 97

原创 last-child 与 last-of-type

在做 Hybrid 的时候就使用到 NSURLProtocol,对于网络监控依旧可以使用它,所以本文就总结下 NSURLProtocol 的应用场景和如何用一、 NSURLProtocol 是什么NSURLProtocol 是 Foundation 框架中 URL Loading System 的一部分。它可以让开发者可以在不修改应用内原始请求代码的情况下,去改变 URL 加载的全部细节。...

2020-03-31 21:45:36 167

原创 深入理解各种锁

乐观锁、悲观锁乐观锁对应于现实生活中乐观的人,思考事情总往好的方向发展;悲观锁对应于现实生活悲观的人,思考事情总往坏的方向发展。不同性格的人都有优缺点,不能抛开场景说一种人好而另一种人不好。乐观锁和悲观锁是一种广义上的概念,体现了看待线程同步问题的不同角度,在 iOS、Java、数据库中都有此概念。悲观锁对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定会有别的线程来修改数据,因...

2020-03-31 21:44:35 164

原创 App 上架包预检

一、 iOS 端常见被拒原因汇总App 内包含分发下载分发功能(引导用户下载 App 等功能)提供的测试账号无法查看实际功能通过接口返回布尔值判断 App 是否升级,但审核期间该接口不请求审核账号,任何时候在任何 ip 登录看到的都是审核版提供的登陆账号和密码不对,登陆不上运营填写的营销关键字有问题元数据问题,iPhoneX 截图中 iPhone 壳子是 iPhone7 的,应该是...

2020-03-31 21:43:47 240

原创 iOS 打包系统构建加速

目标iOS 单包构建加速、支持多包并行打包基础知识CI、CD 在稍微有点规模的公司内部都会内建一套自己的系统。目前主流的是在 Jenkins 的基础上进行的打包系统。公司只有1个 App 的情况下一台打包机就够了,但是有多个 SDK、App 那肯定不够的,各个业务线都需要测试、上架等等,任务太多了,一台机器别人要等到花儿谢了…分布式构建系统可解决上述问题,即一个 master 为中心,...

2020-03-31 21:42:45 587

原创 架构心得

2019-07月底跳槽,从事的工作内容是基础平台内容,主要是基础工具和 SDK 的封装;工程化 cli 落地、研发管理、静态代码扫描等。虽然以前写代码也是站在封装、复用、聚合等出发点写代码,但是还是和真正写 SDK 注意点有很多不同,这也是为什么写这篇文章总结的原因。一些注意点当你开发某个功能的时候,轻易不要使用第三方的库。为什么?因为你难以确保业务方是否也在使用这个库,可能库在使用了...

2020-03-31 21:41:35 144

原创 不一样的动态化能力

对于热修复,对于大多数公司来说都是可望而不可及的技术手段。热修复对于线上问题是杀手锏级别项目。Android 热修复方案很多,典型的属微信的 Tinker 莫属,而苹果公司对于安全的要求非常高,所以一些动态调用的能力都会被封杀,这篇文章主要研究下 iOS 端的热修复技术方案。热修复方案将下发的原生代码,通过自己实现的代码解析引擎,将代码转换为AST树,然后存储在相关的模型里面,在通过一...

2020-03-31 21:40:39 136

php实战项目源代码

php实战类项目总结及其源代码,包括数据库部分,对有一定php基础的人很有帮助,能提升一个高度

2015-03-26

android 学习参考 pdf

android学习手册,包括一些控件、UI、service、activity等

2015-01-07

android 开发文档

android开发文档,包括一些控件、ui、service、activity等的学习知识点。

2015-01-07

空空如也

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

TA关注的人

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