-
数据科学入门 (一) —— 数据
Data Scientists - The Sexiest Job of the 21st Century。背景这是我们公司内部的学习兴趣班课程,并加以总结,加深巩固学习效果。一、什么是数据科学1.1 数据科学数据科学(英语:Data Science),是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学,统计,模式识别,机器学习,数据可视化,数据仓库,以及高性能计算。数据科学通过用运用各种相关的数据来帮助非专...…
-
你不知道的的 iOS 多线程
程序员用有限的生命去追求无限的知识。有言在先首先我不是故意要做标题党的,也不是我要炒冷饭,我只是想换个姿势看多线程,本文大部分内容在分析如何造死锁,奈何功力尚浅,然而再浅,也需要走出第一步。打开你的 Xcode 来验证这些死锁吧。多线程小知识以下是实现多线程的三种方式: NSThread GCD NSOperationQueue关于具体使用的方法不再具体介绍,让我们来看看他们不为人知的一面1. 锁的背后NSLock是基于 POSIX threads 实现的,而 POSIX thr...…
-
据说这是程序员被黑得最惨的一次 - SSL/TLS协议原理解析
本文系作者学习后巩固知识点,错误之处烦请点出,本文从叙述一个小故事的视角来介绍 SSL/TLS 的原理,希望对读者有所启发。背景程序员小明想给隔壁小红写信表白,但是又不想让信件内容被其他人看见,希望只有小红才能看见信件内容,迫不及待的小明的大脑飞快运转起来。预备基础知识 对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。缺点是交易双方都使用同样钥匙,安全性得不到保证。 ...…
-
包教包会-贝塞尔曲线的绘制原理与应用
说来话长,这一切都得从PhotoShop中的钢笔工具开始说起…声明:本文不含复杂数学公式,学渣放心阅读吧😂(我仿佛看到了学渣们留下了激动的泪水)背景贝塞尔曲线(Bézier curve)是应用于二维图形应用程序的数学曲线,贝塞尔曲线基于多个点构成。它的应用非常广泛,比如说PS中的钢笔工具所绘画的曲线就是贝塞尔曲线,绘制动画的运动轨迹等等,而最近一次想用到贝塞尔曲线是想做一个 路径动画 。简介在iOS开发中一般通过UIBezierPath来实现贝塞尔曲线的绘制,平时一般使用绘制二阶和三阶...…
-
包教包会-弹性动画的原理与实现
弹性动画一直以来都深深地吸引我,随着知识储备增多,渐渐探索出一套弹性动画的实现原理。简介本文将从零开始,一步步解析弹性动画原理,包教包会。本文Demo简单地封装了一个动画库来测试,支持UIView的三种动画类型:Size、Position、Scale,动画运动曲线有:bounce、easeInOut。CALayer动画暂不支持。运动曲线从初中开始,我们就开始接触正弦曲线、余弦曲线,现在真的排上用场了(😭后悔当初数学没学好)。我们可以通过对正弦余弦做一些处理,来得到动画的运动曲线。弹性动...…
-
iOS - 被赶尽杀绝的Crash
Crash曾经是折磨我们的梦魇,程序员的头顶的一把铡刀,你永远不知道它什么时候降下来…背景现在市面上Crash收集做得好的平台已经很多了,比如说听云、Bugly等,听云的功能确实强大、Crash的崩溃轨迹是其他平台上没有看到的,但是其价格有点惊人,而Bugly只记录页面轨迹,但是Bugly是免费的。不管是听云还是Bugly,他们的功能其实都是很好实现的,下面我会一一介绍。收集Crash在AppDelegate加入收集Crash的方法,具体监听Crash代码新建一个类目或者建一个单例都可...…
-
iOS无埋点数据统计实践
手动埋点太麻烦了,谁用谁知道。背景一直以来,大数据紧紧的和埋点技术捆绑在一起,甚至大数据时代也可以说是埋点时代。这话没毛病,但是埋点一直都存在着效率低下的问题,构建起来费时间,容易出错,每次修改埋点都需要开发手动修改等问题。无埋点统计技术闪亮登场,很好地解决了这个问题,解放了程序员的双手。内容概要本文Demo已经实现以下内容: 主要功能 备注 crash监控 已完成 卡顿监控 ...…
-
呦~ 玩转Git 多远端的应用
Git使用小技巧—食之无味,弃之可惜,坚持不铺张浪费的原则。背景对比GitHub和Bitbucket各有优劣势(国内的不敢用),单一使用都是各种限制,比如说GitHub什么都好就是私有仓库要收费,而Bitbucket虽然免费,但是又各种卡,推送和拉取都比较慢,我们的口号是鱼和熊掌兼得,取二者之长。文章结尾处还总结了两点妙用。 平台 私有仓库 io速度 使用频率 Github 收费 ...…
-
Jenkins+fir 上传更新日志
iOS开发自动打包应该很多人用了,但是其中还有一些地方不够完美,比如说打包上传成功fir和邮件没有更新日志内容,嗯,我要说的就是这个。背景在日常开发中持续集成可以节省开发者很多时间和精力,fir下载地址和邮件没有更新日志内容,这样无法通知测试人员具体修改内容,造成了很多不便,所以有了这个需求,下面贴一张没有更新日志和有更新日志对比图。步骤前提:首先你得先折腾好打包工具吧,现在的教程都已经很多了,贴一下当时我看的教程:1.Jenkins+GitHub+Xcode+fir自动打包教程2.我...…
-
编程秘籍之四两拨千斤-递归
刷了一段时间剑指offer的算法题,收获了很多,其中对递归的印象尤其深。递归给我一种四两拨千斤的感觉。背景递归,一种能够装逼的编程技巧。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量,在算法题中有广泛的应用。掌握递归的4个要点写好一个递归算法,主要是把握好如下三个方面:1. 正确的时机退出。递归很容易造成死循...…