自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 multpart多文件上传总结

在最初的http协议中,没有定义上传文件的Method,为了实现这个功能,http协议组改造了post请求,添加了一种post规范,设定这种规范的Content-Type为multipart/form-data;Retrofit其实是个网络代理框架,负责封装请求,然后把请求分发给http协议具体实现者httpclient,retrofit默认的httpclient是okhttp。...............

2022-08-28 11:13:11 2950

原创 Git命令操作大全

详细介绍git操作命令

2022-07-24 16:49:34 555

原创 Android异步编程大全

Activity和进程的关系1,系统会在需要释放 RAM 时终止进程;系统终止给定进程的可能性取决于当时进程的状态。反之,进程状态取决于在进程中运行的 Activity 的状态,如果Activity失去焦点或者处于后台不可见则有较大概率终止该Activity所在的进程2,系统销毁Activity的方式:https://www.jianshu.com/p/6d12ca9333123,系统销毁Activity的原因:用户彻底关闭 Activity 或由于系统为 Activity 调用finis.

2022-01-24 12:13:33 2125

原创 一文秒懂java容器大全

一、java容器类简介java容器类用途是保存对象(不能存储基本类型,基本类型可以通过自动装箱和拆箱完成),包括List、Set、Queue和Map,将其划分为两个不同的概念(在java中都是通过接口来实现的):Collection:一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,Set不能有重复元素(通过比较hashcode和equals方法)但是也没有顺序,Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。collection的初

2022-01-24 12:05:12 633

原创 Git Commit Message校验踩坑指南

背景在团队多人开发中,规范的commit message可以快速定位代码提交历史,回溯问题根源,方便组内多人协作,提高团队效率。本篇文章主要包含以下两方面内容:commitizen/cz-cli工具安装和使用 git commit -m 提交message校验1. commitizen/cz-clicommitizen/cz-cli可以替代git commit -m生成符合规范的commit message全局安装commitizen$ npm install -g comm

2021-07-21 15:54:39 2230 3

原创 手把手教你从0开始写一个责任链

在java设计模式中,责任链模式算是比较常见的设计模式了,运用链式调用,可以在多个节点依次对数据进行处理。优势就是可以将节点的创建和调用进行分离,降低代码之间的耦合度。本文手把手教你用kotlin从0到1写一个责任链(总共3个节点),每个节点加入拦截器interceptor,监听器listener,并且支持每个节点和整个责任链的参数传递。话不多说,直接上代码拦截器abstract class Interceptor { private var listener: Listener?

2021-07-16 21:47:36 206

原创 The certificate for this server is invalid. You might be connecting to a server that is pretending..

最近在做一个Webview加载H5页面的需求,页面空白,报错:The certificate for this server is invalid. You might be connecting to a server that is pretending to be “xxxxxxxxx.com” which could put your confidential information at risk.产生这个错误一般会有两个原因:1,网址没有CA签名证书,Ssl证书校验失败2,客户端连接第三方

2020-06-29 10:51:19 6786

原创 解决Android Studio编译报错:找不到NotNull或Nullable

问题:在java代码中引入import org.jetbrains.annotations.NotNull;import org.jetbrains.annotations.Nullable;导致代码编译不过,找不到这两个类库按照官方文档说明 AndroidX 是对 android.support.xxx 包的整理后产物。由于之前的 support 包过于混乱,所以,Google 推出了AndroidX。由于在后续版本中,会逐步放弃对 support 的升级和维护。解决方案:1,在buil

2020-06-13 17:28:00 8133

原创 基于webview_flutter实现JsBridge的简单封装

人气很高的flutter_webview_plugin,在打开多个WebView时会出错,而且缺少2个重要的功能:不能在JS中调用Flutter方法不能在H5进入某个URL之前拦截虽然该插件不够完整,但是使用起来很方便,封装了很多功能,如果交互不多可以用该插件。本文基于flutter官方webview_flutter实现JsBridge的简单封装,实现在H5页面点击按钮调起flutter弹窗,具体步骤如下:环境搭建1. Depend on itAdd this to your packag

2020-06-05 22:08:52 1384

原创 javascript中 for...in和for...of总结大全

在javascript中,for in是ES5标准,遍历key. for of是ES6标准,遍历value.本文从Array,Object和string三个维度来讲解 for…in和for…of的区别。Array1,使用for-in可以遍历数组,但是会存在以下问题:.index索引为字符串型数字(注意,非数字),不能直接进行几何运算。.遍历顺序有可能不是按照实际数组的内部顺序(可能按照随机顺序)。.使用for-in会遍历数组所有的可枚举属性,包括原型。通常需要配合hasOwnProperty()方

2020-05-20 15:56:46 691

原创 ReactNative运用插件react-native-amap-geolocation获取Android手机高德经纬度

背景最近在做项目ReactNative项目时需要获取手机的经纬度,刚开始直接使用浏览器的原生方法:navigator.geolocation.getCurrentPosition,在ios手机运行正常,但是在Android部分机型上面会超时。分析1,因为ios6以后系统用的都是高德定位服务,而Android手机系统用的是Google定位服务,而且国内手机厂商对操作系统做了不同的定制,在国内基...

2020-04-15 10:46:04 2284 1

原创 Android studio 出现Gradle sync failed: EventQueue.isDispatchThread()=false Toolkit.getEventQueue()...

最近在Android Studio编译React Native的时候遇到报错:Gradle sync failed: EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide.IdeEventQueue@2d8be7fa Current thread: Thread[ApplicationImp...

2020-04-10 12:01:23 1201 2

原创 一文详解vue骨架屏优化

H5从输入 URL 到真正看到内容之间经历的时间就是FP(First Paint),也就是白屏时间,当然这个时间越短越好。和首屏相关的除了 FP 还有两个指标,分别称为 FCP (First Contentful Paint,页面有效内容的绘制) 和 FMP (First Meaningful Paint,页面有意义的内容绘制)。如果白屏时间过长,用户体验会大打折扣,如果用户网速差,则FCP会更长...

2020-03-25 20:00:58 742

原创 一文详解vue-awesome-swiper

Swiper简介Swiper是纯javascript打造的滑动特效插件,能够实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。vue-awesome-swiper是基于swiper封装的vue插件, 版本对应关系如下:Swiper 4: v3.1.3Swiper 3: v2.6.7引入1,安装npm install swiper vue-awesome-swiper --save...

2020-03-23 16:53:00 2008 1

原创 2020前端面试集锦

从2月9号返沪开始准备面试,将近一个月的时间,从知识复习到视频面试,再到最终拿下offer。趁着记忆还比较清晰,谈谈自己对前端混合开发面试的一些看法,希望能给大家带来一些帮助和启发,不管是找工作面试还是自我提升。一,前端现状过去一个月时间里我大概面试了5家公司,因为受疫情的影响,基本都是通过电话或者在线视频的方式完成的。话说视频面还真是卡顿,经常听不清面试官的问题,最后没办法都直接电话面了,看...

2020-03-22 15:57:15 633

原创 Android textView 支持解析H5超链接和字体颜色

最近做了一个在Android textView中支持解析H5超链接和字体颜色的需求,遇到了一些坑,分享出来希望可以帮助到大家。1,解析字体颜色下面这句代码就可以支持解析字体颜色,但是不支持rgb格式,仅支持#5BAA3D类型的16进制颜色格式。tv.setText(Html.fromHtml(htmlText)); 2,解析超链接并拦截点击事件先贴上完整代码tv.setText(ge...

2020-01-10 16:58:32 858

原创 7,整数反转 — LeetCode系列篇

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。答案(java版):pu...

2020-01-08 10:52:03 109

原创 6,Z 字形变换 — LeetCode系列篇

题目:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string con...

2020-01-08 10:50:02 166

原创 5,最长回文子串 — LeetCode系列篇

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”答案(java版):public String longestPalindrome(String s) { if (s.length() &lt...

2020-01-08 10:47:39 125

原创 3,无重复字符的最长子串 — LeetCode系列篇

题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wk...

2020-01-05 21:37:29 123

原创 2,两数相加 — LeetCode系列篇

题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...

2019-12-30 20:23:24 103

原创 1,求两数之和 — LeetCode系列篇

题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]答案(java...

2019-12-30 20:21:33 133

原创 flutter环境搭建

1,flutter1.1,flutter sdk下载配置下载地址(Flutter官网):https://flutter.dev/docs/development/tools/sdk/releases?tab=macos1.2,配置环境变量export PATH=/Users/cixueting/Documents/flutter/flutter/bin:$PATHexport PUBHOSTED...

2019-12-14 17:18:02 924

原创 vue进阶之路 —— 详解vue2.x到vue3.0数据响应式原理变化

在本篇文章中,主要为大家分享从vue2.x到vue3.0数据响应式的原理变化。谈到数据响应,必然绕不开数据的双向绑定,那么什么是数据的双向绑定呢?vue2.x中是通过Object.defineProperty实现数据的双向绑定的,这个方法有一个缺陷:在一个对象的访问器属性中不能直接操作它的数据属性,也就是说无法给现有的数据属性设置访问器属性。var a = { b: 123, c: 4...

2019-11-25 20:11:05 781

原创 面向对象7大设计原则

1,开闭原则对扩展开放------- 模块的行为可以被扩展从而满足新的需求。对修改关闭-------不允许修改模块的源代码(或者尽量使修改最小化)开闭原则是说我们应该努力设计不需要修改的模块。在实际应用将变化的代码和不需要变化的代码进行隔离,将变化的代码抽象成稳定接口,针对接口进行编程。在扩展系统的行为时,我们只需要添加新的代码,而不需要修改已有的代码。一般可以通过添加新的子类和重写父类...

2019-11-02 22:22:23 169

原创 成功,真的有那么重要吗?

最近在网上看到一些讨论成功的帖子,类似于下面这样以下是我当时的回答后来看到好多人都在关注这个话题,觉得有必要再深入阐述下自己的观点。大部分人都有这样的焦虑:随着年龄渐长,内心对成功的渴望与日俱增,但就是迟迟落实不到行动;或者付出了全部努力,但就是没有收获相应的回报,甚至对自身能力产生怀疑。首先不同的人对成功有不同的解读,有的人觉得事业有成,财富自由是成功;有的人觉得家庭美满,婚姻幸福是...

2019-11-02 10:45:39 206

原创 一文秒懂 ajax, fetch, axios

1, JavaScript的AjaxAjax的全称是Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求,而不需要重载(刷新)整个页面。Ajax使用XMLHttpRequest对象取得新数据,然后再通过 DOM 将新数据插入到页面中。另外,虽然名字中包含 XML 的成分,但 Ajax 通信与数据格式无关; 这种技术就是无须刷新页面即可从...

2019-10-29 18:20:57 829

原创 vue事件点击穿透解决大法

最近在做项目的过程中遇到一个非常奇葩的bug,在h5页面点击一个按钮弹出弹窗,但是这个弹窗刚出现就会自动消失,导致屏幕出现闪动现象,关键这个bug还是偶现的。经过一番研究才发现是vue事件点击穿透引起的,而且弹窗一定要在300ms内出现才会引发这个bug,接下来分析具体原因:一,click与300ms延迟vue框架内置指令v-on:click有300ms的延迟响应,这是为了判断区分单击和双击。...

2019-10-12 19:43:46 10436

原创 分别用vue和Android实现长按券码复制功能

最近分别用vue和Android实现了一个券码复制功能,长按券码会在上方弹出一个拷贝的icon提示,点击icon将券码内容复制到剪贴板。现将一些经验代码分享给大家以供参考。废话不多说,先上效果图vue实现:npm install clipboard --save<div class="coupon-count-container" @click="closePopBubble"&gt...

2019-10-12 11:22:52 548

原创 转型,技术人绕不开的坎

昨天在微信公众号看了一篇阅读量过万的文章,讨论的是目前IT领域几个主要技术转型的话题,包括前端,后台,大数据,人工智能等,有兴趣的同学可以点击文末链接阅读原文。相比于前端日新月异,百花齐放,后台相对来说比较稳定,除了最近几年Google推出的Go 语言,主要就是java一统后端了。虽然也有服务端语言Python,Node,PHP等,但是性能和生态远不能和java相比。随着近几年大数据,人工智能的...

2019-09-20 21:27:41 247 2

原创 require.ensure实现webpack按需加载

webpack使用require.ensure将vue页面打包成独立的chunk文件,也可以将多个vue页面合并成一个chunk文件,以实现生产环境按需加载。下面给出官网的require.ensure函数原型:require.ensure( dependencies: String[], callback: function(require), errorCallback: fun...

2019-09-17 22:16:31 682

原创 H5进阶之路(一)

有段时间没写东西了,最近在忙着做一个H5改版的项目,忙了将近一个月,终于在本周顺利上线了。刚好利用项目结束的空闲时间将自己这段时间的工作进行整理复盘,给大家分享下我的学习心得。01 内容知识我之前是做Android的,从去年开始断断续续学习H5,但一直不深,最近接手这个项目,也算是边学边做了。我们这边的开发框架是vue,但是直接上手还是有点蒙的,建议使用vue之前先了解下H5的基础知识。首推网...

2019-08-30 21:15:47 606 2

原创 分别用java和javaScript实现md5验签算法

在金融领域,牵涉到下单支付的接口,为了增加接口的安全性(防止中间人攻击),增加md5签名算法。分别用java和javaScript实现,测试签名结果一致,大家可以放心使用。md5验签算法主要有以下几步:1,将请求头head和请求体body合并, 并剔除key值为sign的选项,因为签名本身不参与计算;2,将参数名key按照ASCII码从小到大排序(字典序),参数名区分大小写;3,如果key...

2019-07-30 20:43:44 807

原创 H5元素的水平垂直居中布局总结

1,块级元素设置height和line-height或者text-align: center,可以让块级元素包裹的内联元素或者自身文本内容垂直居中或者水平居中;但是对包裹的块级元素和浮动元素不起作用。2,块级元素包裹块级元素,设置被包裹元素margin: 0 auto达到水平居中,但是设置父元素的height和line-height或者子元素的vertical-align: middle不起作用...

2019-07-28 21:37:45 3393

原创 H5客户端获取Url参数的方法

一,window.location.href: 获取完整的url链接二,this.$ route.path:前端路由中配置的path三,this.$ route.fullPath:当前页面除去协议,域名后的完整链接四,以对象的形式获取当前Url链接?后面拼接的参数,有以下两种方法:1,this.$route.query2,以函数的形式,函数参数可以不传:function GetRequ...

2019-07-25 09:50:37 5570

原创 H5开发代理配置大全

在vue开发中,我们一般都是在浏览器中进行H5页面的绘制和网络请求,等开发完成后再部署到服务器端用手机进行测试。在开发过程中难免遇到用Charles抓取H5页面请求后端数据,更改报文进行不同情况下UI渲染的需求,以下就以Chrome浏览器为例详细介绍怎么实现上述需求。1,运行npm run dev以后浏览器的默认域名是localhost,请求的后端数据也被代理到了相同的域名下,Charles默认...

2019-07-08 17:20:09 1578

原创 webpack操作指南 —— 初级篇

刚好最近在自学H5,手动整理了webpack4最基础的入门资料,非常适合像我这种0基础的小白。整个webpack知识内容我将分为初级,中级和高级篇依次呈现给大家。在初级篇中,我从创建一个最基本的package.json文件开始,通过一个非常简单的例子依次讲解webpack的安装,使用和配置,并引入了一些webpack4最新的功能,里面所讲的内容都是我亲自敲代码实践过的,希望可以给大家的学习带来一些...

2019-07-01 17:16:38 199

原创 WebStorm设置px转换rem,亲测有效!

为了保证网页的响应式设计,我们在H5开发中用的单位一般都是rem,怎么在WebStorm中设置自动将px转换rem呢?非常简单,只需要安装一个插件即可。步骤:WebStorm ——> Preferences ——> Plugins选中Marketplace,搜索idea px 2 rem,点击安装,然后重启WebStorm在代码中选中xx px,MAC电脑按快捷键option...

2019-06-25 19:07:49 10327 5

原创 Flutter, 终究还是选择了你

京东前两天开源了自主研发框架Taro 1.3,昨天上午又偶然看到了一篇关于比较Flutter和ReactNative的文章,刚好我做过ReactNative,也了解过Flutter,下面我就跟大家谈谈对这两个前端框架的感悟。前端繁荣昌盛的背后不断出新,三大成熟框架React, Vue,Angular自不必说。自从移动端火热发展后,为了解决H5在移动端性能表现的缺陷,大家又想办法推出新的框架,以便...

2019-06-16 10:13:39 1172

原创 最快的学习方式是分享

最近一直在潜心学习H5。终于有了一点小成果,今天还在组会上给大家做了分享,接下来我谈谈分享的好处,在我的认知里,分享是学习的最快路径。相信每个公司都有某个领域的大佬,像我们刚入门的小白怎么向他们请教学习到更多的知识和经验呢?有的同学可能会说网上也可以搜索到答案,但是网上答案五花八门,对错不一,而且有的也不一定适合你们公司现有的业务和系统,还有就是一个人的学习道路是孤独的,哈哈。所以有些东西还是需...

2019-06-07 14:52:09 426

空空如也

空空如也

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

TA关注的人

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