技术知识入门笔记!(1):基础知识、编程篇
本系列适合没有技术背景的菜鸟看,是我阅读唐韧老师的《产品经理必懂的技术那些事儿》的笔记,欢迎产品菜鸟们一起交流~
第一篇包括互联网的发展、常见开源技术、架构、交互原理、编程理解、编程语言、程序
1. 基础知识
1.1 技术发展阶段
基础技术发展期(20世纪五六十年代)→PC互联网时代(20世纪90年代)→移动互联网时代(21世纪)
1.2 产品形态发展
本地安装软件(借助光盘、安装包)→ 网址访问(借助浏览器)→APP(借助手机)
从第一到第二阶段,解决了容灾性的问题(切换计算机、计算机损坏的风险)。
从第二到第三阶段,让互联网向普通人生活渗透,提高生活效率。
1.3 开源社区与技术
互联网大部分技术都是开放源代码的,可以无偿使用。
GitHub:线上开源社区。提供项目托管和软件版本管理服务。
Linux:服务器操作系统。安卓底层系统就使用的Linux,很多超大型计算机也用的Linux。
OpenSSL:密码库,是网络安全的基础保障协议。
MySQL:关系型数据库。具有开源、轻量化、支持大规模访问特点。
Apache:服务器运行系统。
Eclipse:开发平台,提供开发服务框架。
1.4 技术架构
分为前端和服务端(又称后端),前端和服务端通过网络进行数据传输。
对应到图中,前端就是智能手机、个人电脑。后端就是服务器+数据库
服务器:部署服务端程序,处理前端请求并且响应,通过程序对数据库读写操作。
数据库:存储数据。
1.5 请求与响应的模式
所有的互联网技术产品,背后的实现模型基本都是 请求与响应模式。
前端通过网络向后端的服务器发请求,请求中会携带必要的数据(比如登录时的用户密码)。后端服务器接收到请求后,会解析出数据,对数据库进行写入、查询等操作,然后返回一个响应(比如登录成功)给前端。
2. 编程基础知识
2.1 编程是什么
程序员与计算机进行交互的指令集。
计算机的本质是0与1组成的代码,不能识别人类语言,需要借助编程与计算机进行交互。
2.2 常见编程语言
C语言:面向过程的语言,由丹尼斯·里奇发明
Java:面向对象的语言,由James Gosling发明
PHP:用于Web的语言,有轻量化、灵活的特点,由Rasmus Lerdorf发明
JavaScript:用于Web的语言,可以为网页增加动态功能
2.3 数据
组成:
数据由数据类型、数据名称(又称变量名)、数据值组成。
类型:
整型 int:不带小数点的数字,可进行数学计算
浮点型 float/double:有小数点的数字,可进行数学计算
字符型 string(java)/char(c)/NSstring(Objective-C):不可计算。注意产品界面上所有的数据都是字符型,即使是数字。
布尔型 bool/boolean:表是非判断,只有两个值“true”和“false”,转化为整型时分别转成1和0。例子:注册时的是否同意用户协议。
还有:长整型、单精度浮点型、双精度浮点型。
数据拼接:
例子:目前有 1254 人参与了本次活动,其中1254是动态变化数字
背后由三个元素拼接而成:a = “目前有” ,b = 1254 , c = “人参与了本次活动”,String s = a + b + c
逻辑结构:
条件判断 if else :用于判断执行
条件选择 switch case :用于多选一
循环操作 while/do while:用于重复操作、循环滚动
数据结构:
定义:按一定规则进行组织的数据的集合,形式包括数组、栈、队列、堆、树、图
数组:同一类型的数据的集合。数组可以指定大小,且数组中元素可以通过数组下标标记和获取,注意下标从0开始排列而不是1。如 a[0] 就是数组a的第一个元素
栈/堆栈:汉诺塔结构,符合后进先出的原则。底部封口,上端开口,先进入的后出,后进的先出。如用户注册功能:第一步设置账号密码页面→第二步个人资料→第三步产品首页,这是一个典型的栈结构,就可以用栈来实现界面的跳转。(图片来自百度)
先进后出,后进先出的栈结构队列:分队头和队尾,先进先出,后进后出。适用于控制事务性的操作,步骤有严格的先后顺序的情况。(图片来自百度)
先进先出,后进后出的队列结构树:有一个根节点,下有很多子节点。适用于产品结构设计、权限设计及用户等级设计场景。例如微信底部的Tab栏。(图片来自百度)
一个根节点,很多子节点的树结构2.4 程序
定义:程序是按一定规则和顺序的任务执行过程,是一套指令集合。
组成:程序=数据结构+算法
最小执行单元:函数或方法。它们是完成一项具体任务的独立模块。
函数 = 输入 + 输出 + 函数内部处理流程。注意输出可以为空类型,为空时返回值用void表示。
还会持续往下更新数据库、前端、后端的内容~