![](https://img-blog.csdnimg.cn/20200729134915838.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
全栈
文章平均质量分 77
全栈
高先生的猫
求知若渴,虚心若愚。
展开
-
尾调用与尾递归
本讲将对尾调用与尾递归进行介绍:函数的最后一条执行语句是调用一个函数的形式即为尾调用;函数尾调用自身则为尾递归,通过改写循环即可轻松写出尾递归函数。在语言支持尾调用优化的条件下,尾调用能节省很大一部分内存空间。什么是尾调用问:何为尾调用?说人话:函数的最后一条执行语句是调用一个函数,这种形式就称为尾调用。让我们看看以下几个例子。// 正确的尾调用:函数/方法的最后一行是去调用function2()这个函数public int function1(){ return fu.原创 2020-12-20 17:09:07 · 520 阅读 · 0 评论 -
docsify,做一个自己的文档
简介一个神奇的文档网站生成工具我们在做完项目的时候经常会写一些项目手册,来记录我们在项目开发过程中的一些开发流程、使用方式以及注意事项,分享给将会使用到这个项目的人,方便大家快速上手,让程序顺利运行。目前比较好的方式就是写成Markdown格式的技术文档,方便我们发布在github上,同时也可以发布到博客分享平台。除此之外我们还可以借助docsify这个工具,来帮助我们快速的搭建一个小型的文档网站,它可以自动将我们写在Markdown中的标题生成目录,整个页面的配色和布局也十分舒适易读,让整原创 2020-09-03 11:54:07 · 1766 阅读 · 0 评论 -
Sprint 敏捷开发
sprint概念是指在每个项目里程碑结束时,确保拥有能够为用户带来价值的可运行系统的重要性;可工作的软件胜于全面的文档;优势① 可工作软件鼓励反馈;② 可工作软件帮助团队衡量它们的进度;③ 可工作软件允许产品在需要时今早发布;潜在可交付意味着测试过,集成已经做好,并不意味着系统功能的完整。每个sprint提交一些有价值的东西可以让用户看到直接的价值,也可获得更多的客户反馈。在当前sprint为下个sprint做准备保证每个sprint的连续性,保持节奏章法,每个sprin原创 2020-09-03 11:54:32 · 5426 阅读 · 0 评论 -
Vue和React有什么区别与优劣?我到底应该选择哪谁?
前端开发框架从最开始的jquery时代,到后来backbone,angular1,再到现在vue和react两分天下,也才用了不到十年的光景。最开始jquery是为了解决浏览器兼容性的问题而火起来的,准确的说它只是一个库,而不能成为框架。但随着前端页面的复杂度的增加,渐渐数据驱动和mv*的思想开始形成,有了backbone,angular等先驱。再之后随着AST,Bable,webpack等技术的兴起,一个逐渐晚上的前端框架体系也随之建立了起来,如今最入门的就是vue和react了。但由于vue和r原创 2020-08-31 10:19:40 · 8409 阅读 · 1 评论 -
dev、test、pre和prod是什么意思?
开发环境(dev):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。 测试环境(test):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。灰度环境(pre):灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。 <很多企业将test环境作为Pre环境 生产环境(prod):是值正式提供对外服务的,一般会关掉错误报告,打开错误日志。三个环境也可以说是系统开发...原创 2020-08-28 14:50:00 · 9538 阅读 · 0 评论 -
什么是网站劫持?
百度搜索流量事件是网站劫持的其中一种表现。网站劫持还会导致以下问题:用户输入正常网址跳转到其它地址,导致用户无法正常访问,网站流量受损;通过泛域名解析生成大量子域名共同指向其它地址,跳转到非法网站,造成网站权重降低;域名被解析到恶意钓鱼网站,导致用户财产损失,造成客户投诉;网站经常弹出广告,影响客户体验,造成信誉度下降。那么究竟什么是网站劫持,又有哪些网站劫持的方式呢?搜索引擎劫持搜索引擎劫持简称搜索劫持,其实就是从搜索引擎来的流量自动跳转到指定的网页。可以通过未经用户授权,自动修.原创 2020-08-13 10:14:55 · 1337 阅读 · 0 评论 -
Leetcode 696.计数二进制子串(javascript)
给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例1:输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。注意:s...原创 2020-07-31 10:13:14 · 255 阅读 · 0 评论 -
前端自动化部署之Shell
众所周知前端是一个不善言辞并不会使用cmd的的一类人,开个玩笑!!!前端项目发布流程开发新功能啦 -> 切新分支 git ck -b newBranch 开发完成后 -> 提交代码 git add . git commit -m 'msg' 合并到内外侧分支 -> 合并到 Rel 内外侧分支 git marge rel 就拿 Vue React 项目来说,发布内外侧之前我们还需要将之前生产的代码给删除,不然体积会越来越大 rm -rf /linux目录路径~当前项目/* 发原创 2020-07-28 11:22:32 · 930 阅读 · 1 评论 -
使用 Pipcook 识别图片中的前端组件
前言为了让大家更好地学习 Pipcook 和机器学习,我们准备了实战系列教程,会分别从前端组件识别、图片风格迁移、AI 作诗以及博客自动分类,这几个具体示例来讲解如何在我们日常开发中使用 Pipcook,如果需要了解 Pipcook 1.0,请阅读文章 AI ❤️ JavaScript, Pipcook 1.0。背景您是否在前端业务中遇到过这样的场景:手中有一些图片,您想有一种自动的方式来识别这些图片这个图片里都包含哪些组件,这些组件都在图片的什么位置,属于哪种类型的组件,这种类型的任务一般在深原创 2020-07-27 00:23:38 · 2247 阅读 · 2 评论 -
edusoho 创建token令牌
主程序$user = $this->getCurrentUser()->toArray();$token= $this->getUserService()->makeToken('mobile_login', $user['id'], time() + 3600 * 24 * 30);var_dump($token);将这段代码添加至src/AppBundle/Controller/Admin/UserController :: indexAction中, 可在.原创 2020-07-28 11:24:33 · 231 阅读 · 0 评论 -
nginx和apache的区别,选择哪个好?
Apache和Nginx最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程;而 nginx 是异步的,多个连接(万级别)可以对应一个进程。下面本篇文章就来给大家介绍一下Apache和Nginx的区别有那些,选择哪个好?希望对你们有所帮助。一、Nginx特点 1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。 2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apach...原创 2020-07-10 10:20:03 · 9308 阅读 · 0 评论 -
前端动画必知必会:React 和 Vue 都在用的 FLIP 思想实战
前言在vue的官网中的过渡动画章节中,可以看到一个很酷炫的动画效果乍一看,让我们手写出这个逻辑应该是非常复杂的,先看看本文最后要实现的效果吧,和这个案例是非常类似的。预览分析需求拿到了这个需求,第一直觉是怎么做?假设第一行第一个图片移动到了第二行第三列,是不是要计算出第一行的高度,再计算出第二行前两个元素的宽度,然后从初始的坐标点通过css或者一些动画 API 移动过去?这样做是可以,但是在图片不定高不定宽,并且一次要移动很多图片情况下,这个计算方法就非常复杂...原创 2020-07-10 10:15:50 · 716 阅读 · 0 评论 -
Redis使用10个小技巧
Redis 在当前的技术社区里是非常热门的。从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路。随之而来的一系列最佳实践,使得大多数人可以正确地使用 Redis。下面我们将探索正确使用 Redis 的10个技巧。1、停止使用 KEYSOkay,以挑战这个命令开始这篇文章,或许并不是一个好的方式,但其确实可能是最重要的一点。很多时候当我们关注一个redis实例的统计数据,我们会快速地输入”KEYS *”命令,这样key的信息会很明显地展示.原创 2020-07-14 13:29:01 · 221 阅读 · 0 评论 -
你不知道的空格
Level1: 半角空格历史最悠久的空格,在1967年,ASCII 规范中被定义。空格在 ASCII 中编码为0x20, 占位符为一个半角字符。在日常英文书写和代码编写中使用。Level2: 全角空格中文输入中的空格(标准说法为中日韩表意字符(CJK)中使用的宽空格)。和其他汉字一样,作为GBK的一个字符,其对应的unicode码为\u3000.宽度是2个半角空格的大小。例如: 国父 孙中山先生 Level3: 不间断空格 ( non-breaking space )..原创 2020-07-03 11:16:06 · 870 阅读 · 0 评论 -
UIImagePickerController显示中文界面
最近在做美颜滤镜的SDK方面的东西,自己练手的当然选择国内视频编辑的大咖《美拍》,观察了一下。他们家的相册选择视频的控件用的是UIImagePickerController无误。其实UIImagePickerController的好处在于,系统自带的,方便简单效率高,要是选择其他的第三方,多余的功能太多。还有一个完美的功能就是UIImagePickerController在选择完视频后,系统会自动显示一个压缩视频的进度条,方便简单。自己操作完了所有的功能之后,发现就是相册显示的是英文,那怎么把它改成中文原创 2020-06-29 13:17:48 · 409 阅读 · 0 评论 -
iOS 真机调试 No profile for team xxxx matching xx found
当我们从网上下载一些demo的时候,就会遇到这种情况。谷歌了半天,给出的方法也没有一个真正能解决问题的。下面就以阿里云互动直播的demo为例解决该问题。我们把红色部分修改成自己的id,然后变成这样但是我们运行程序的时候发现还是不行,然后看图中红色框中的30e6f26d-b0c3-4b91-9e8f-f7c467068018 。我们复制这一串标识然后解决方法:1.打开项目的文件夹,右键点击“项目名.xcodeproj”,显示包内容;2.双击打开project.pb...原创 2020-06-29 13:17:03 · 8129 阅读 · 0 评论 -
Afnetworking3.0以后的Https双向验证使用
最近在做新的项目,现在改用Https做验证了,开始以为没什么觉得不会遇到坑,后来才发现自己是真的遇到坑了,现在把自己遇到的坑都说一遍,增加别人的效率。首先,大家百度来的afnetworking的https验证,一般的讲解都是单向验证的。而我们这次是双向验证的,就是客服端和服务端都验证。一开始自己收到了两个证书,一个是pem格式的(服务端证书)和另外一个是p12格式的(客户端证书)。所以我们这两个证书是都要验证的,但是afnetworking好像是不支持pem格式证书直接验证的,所以首先要把pem的证书转换原创 2020-06-29 13:14:42 · 1203 阅读 · 1 评论 -
cnpm在powershell运行不了的解决办法
在c:windows下执行get-ExecutionPolicy,如果显示的是Restricted说明他是禁止的。接下来就要执行set-ExecutionPolicy RemoteSigned回车,输入A 然后回车就好了。原创 2020-06-19 00:12:06 · 1867 阅读 · 0 评论 -
Javaweb 项目为什么要放弃 JSP 而拥抱前后端分离?
一、前言前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。在互联网架构中,名词解释:Web服务器:一般指像nginx,a原创 2020-06-11 10:12:32 · 1173 阅读 · 0 评论 -
TCP 与 UDP的区别
1.1 概念UDPUDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,不会对报文进行任何拆分和拼接操作,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。具体来说在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP头标识下是UDP协议,然后就传递给网络层了在接收端,网络层将数据传递给传输层,UDP...原创 2020-06-06 12:55:36 · 361 阅读 · 0 评论 -
基于 Vue SSR 的微架构在 FOLLOWME5.0 实践
2020年5月22日FOLLOWME5.0的第一个版本终于上线了,这也是公司内部基于 Genesis 上线的第二个项目。首页是老项目经历了最原始的那种 Vue SSR,后来在年初的时候,迁移到了 Nuxt.js 下,再到现在迁移到了 Genesis,可谓是一波三折。首次实践在2019年的上半年,我们在和 APP 混合开发的项目中,首次实践了模块化,它拥有了独立的 API、路由、状态和页面,并且是按需进行初始化的,但是它并不是完美的,它是基于路由的微模块,并且状态也是按需注入到全局的状态..原创 2020-05-30 15:09:47 · 300 阅读 · 0 评论 -
全栈必知系列之网络知识篇
全栈必知系列之网络知识篇为了让用户能够拥有更加良好的用户体验,优化页面加载速度成为前端开发过程中极其重要的一环,而网络资源的传输速度无可厚非成为了优化提速最重要的部分,知道网络传输的各个环节的来龙去脉才能更好地去优化,因此作为一名合格的前端开发人员还是有必要了解网络相关的知识。HTTP的发展进程HTTP0.9HTTP0.9当时主要为了简单的用于网络之间传输HTML超文本内容,所以称为超文本传输协议,实现也相对简单流程如下 基于TCP协议,客户端根据IP和端口号和服务器原创 2020-05-28 10:33:13 · 303 阅读 · 0 评论