问答-技术问答-汇集知识碎片解决技术难题-阿里云开发者社区-阿里云

  • 热门
  • 最新问题
  • 待解答

2

回答

据说在家办公的程序员是这样写代码的?

问问小秘 2020-02-18 12738浏览量 回答数 2

一个电话来了,这个需求赶紧做一下,十万火急。然后,喂,喂,信号不好

huc_逆天 评论 0

1

回答

DB-Engines 3月数据库排行:排名前十数据库七成分数下降

南霸天霸南北 2020-03-03 59浏览量 回答数 1

3

回答

小白求助:零基础入门kubernetes需要哪些知识?

保持可爱mmm 2020-02-28 108浏览量 回答数 3

一 容器

在学习k8s前,首先要了解和学习容器概念和工作原理。

什么是容器?

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

容器的优势

容器使软件具备了超强的可移植能力。
对于开发人员 – Build Once, Run Anywhere
容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境,然后打包成容器便可在其他机器上运行。另外,容器环境与所在的 Host 环境是隔离的,就像虚拟机一样,但更快更简单。
对于运维人员 – Configure Once, Run Anything
只需要配置好标准的 runtime 环境,服务器就可以运行任何容器。这使得运维人员的工作变得更高效,一致和可重复。容器消除了开发、测试、生产环境的不一致性。

Docker概念

“Docker” 一词指代了多个概念,包括开源社区项目、开源项目使用的工具、主导支持此类项目的公司 Docker Inc. 以及该公司官方支持的工具。技术产品和公司使用同一名称,的确让人有点困惑。
我们来简单说明一下:
IT 软件中所说的 “Docker” ,是指容器化技术,用于支持创建和使用容器。
开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。
Docker Inc. 公司凭借 Docker 社区产品起家,它主要负责提升社区版本的安全性,并将技术进步与广大技术社区分享。此外,它还专门对这些技术产品进行完善和安全固化,以服务于企业客户。
借助 Docker,您可将容器当做轻巧、模块化的虚拟机使用。同时,您还将获得高度的灵活性,从而实现对容器的高效创建、部署及复制,并能将其从一个环境顺利迁移至另一个环境,从而有助于您针对云来优化您的应用。
Docker有三大核心概念:
镜像(Image)是一个特殊的文件系统,提供容器运行时所需的程序、库、配置等,构建后不会改变
容器(Container)实质是进程,拥有自己独立的命名空间。
仓库(Repository)一个仓库可以包含多个标签(Tag),每个标签对应一个镜像

容器工作原理

Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。

二 Kubernetes入门知识指南

Kubernets的知识都可以在官方文档查询,网址如下:
https://kubernetes.io/zh/docs/home/

Kubernetes基础知识

Kubernetes是什么?

Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。
为什么需要 Kubernetes
容器是打包和运行应用程序的好方式。在生产环境中,您需要管理运行应用程序的容器,并确保不会停机。例如,如果一个容器发生故障,则需要启动另一个容器。如果由操作系统处理此行为,会不会更容易?
Kubernetes 为您提供:
服务发现和负载均衡
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
存储编排
Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。 自动部署和回滚
您可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 来为您的部署创建新容器,删除现有容器并将它们的所有资源用于新容器。
自动二进制打包
Kubernetes 允许您指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
密钥与配置管理
Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。您可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

Kubernetes 组件

初学者首先要了解Kubernetes的基本概念,包括master、node、pod等。
Master
Master是Kubernetes集群的大脑,运行着的守护进程服务包括kube-apiserver、kube-scheduler、kube-controller-manager、etcd和Pod网络等。
kube-apiserver
主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端。
kube-apiserver 在设计上考虑了水平扩缩的需要。 换言之,通过部署多个实例可以实现扩缩。
etcd
etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
您的 Kubernetes 集群的 etcd 数据库通常需要有个备份计划。
kube-scheduler
主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。
调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
kube-controller-manager
在主节点上运行控制器的组件。
从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。
这些控制器包括:
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。
副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。
端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)。
服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌.
云控制器管理器-(cloud-controller-manager)
cloud-controller-manager 运行与基础云提供商交互的控制器
cloud-controller-manager 仅运行云提供商特定的控制器循环。您必须在 kube-controller-manager 中禁用这些控制器循环,您可以通过在启动 kube-controller-manager 时将 --cloud-provider 参数设置为 external 来禁用控制器循环。
cloud-controller-manager 允许云供应商的代码和 Kubernetes 代码彼此独立地发展。在以前的版本中,核心的 Kubernetes 代码依赖于特定云提供商的代码来实现功能。在将来的版本中,云供应商专有的代码应由云供应商自己维护,并与运行 Kubernetes 的云控制器管理器相关联。
以下控制器具有云提供商依赖性:
节点控制器(Node Controller): 用于检查云提供商以确定节点是否在云中停止响应后被删除
路由控制器(Route Controller): 用于在底层云基础架构中设置路由
服务控制器(Service Controller): 用于创建、更新和删除云提供商负载均衡器
数据卷控制器(Volume Controller): 用于创建、附加和装载卷、并与云提供商进行交互以编排卷
Node
节点组件在每个节点上运行,维护运行 Pod 并提供 Kubernetes 运行环境。
kubelet
一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中。
kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。
kube-proxy
kube-proxy 是集群中每个节点上运行的网络代理,实现 Kubernetes Service 概念的一部分。
kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
如果有 kube-proxy 可用,它将使用操作系统数据包过滤层。否则,kube-proxy 会转发流量本身。
容器运行环境(Container Runtime)
容器运行环境是负责运行容器的软件。
Kubernetes 支持多个容器运行环境: Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。
Pod
在Kubernetes中,最小的管理元素不是一个个独立的容器,而是Pod。Pod是管理,创建,计划的最小单元.
一个Pod相当于一个共享context的配置组,在同一个context下,应用可能还会有独立的cgroup隔离机制,一个Pod是一个容器环境下的“逻辑主机”,它可能包含一个或者多个紧密相连的应用,这些应用可能是在同一个物理主机或虚拟机上。
Pod 的context可以理解成多个linux命名空间的联合
PID 命名空间(同一个Pod中应用可以看到其它进程)
网络 命名空间(同一个Pod的中的应用对相同的IP地址和端口有权限)
IPC 命名空间(同一个Pod中的应用可以通过VPC或者POSIX进行通信)
UTS 命名空间(同一个Pod中的应用共享一个主机名称)
同一个Pod中的应用可以共享磁盘,磁盘是Pod级的,应用可以通过文件系统调用。 由于docker的架构,一个Pod是由多个相关的并且共享磁盘的容器组成,Pid的命名空间共享还没有应用到Docker中
和相互独立的容器一样,Pod是一种相对短暂的存在,而不是持久存在的,正如我们在Pod的生命周期中提到的,Pod被安排到结点上,并且保持在这个节点上直到被终止(根据重启的设定)或者被删除,当一个节点死掉之后,上面的所有Pod均会被删除。特殊的Pod永远不会被转移到的其他的节点,作为替代,他们必须被replace.

三 通过kubeadm方式创建一个kubernetes

对kubernetes的概念和组件有所了解以后,就可以通过kubeadm的方式创建一个kubernetes集群。

安装前准备工作

创建虚拟机
创建至少2台虚拟机,可以在本地或者公有云。
下载部署软件
需要下载的软件包括calico、demo-images、docker-ce、kube、kube-images、kubectl、metrics-server

安装部署

具体安装过程参考官网文档:
https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm/

四 安装后的练习

安装后详读官方文档,做下面这些组件的练习操作,要达到非常熟练的程度。

Node

Namespace

Pod

Deployment

DaemonSet

Service

Job

Static Pod

ConfigMap

Secrets

Volume

Init-containers

Affinity and Anti-Affinity

Monitor and logs

Taints and Tolerations

Cordon and Drain

Backing up etcd

这些内容都非常熟练以后,基本就达到了入门的水平。

红亮 评论 0

2

回答

Flutter有哪些必知的框架原理和常用工具?

问问小秘 2020-02-26 331浏览量 回答数 2

浅谈Flutter框架原理及其生态圈

Flutter的锋芒
跨平台高性能的渲染引擎逐渐成为移动端、大前端领域的一个热点,作为其中的明星框架Flutter,经过近几年来的迅速发展,由极大的可能成为下一代跨端终端解决方案。自从2017 年 5 月,谷歌公司发布的了 Alpha 版本的 Flutter; 2018 年底 Flutter Live 发布的 1.0 版本;2019年7月发布1.5版本,截止今日(2020年2月)已经发布了v1.14.6 Beta版本。
在Flutter诞生之前,已经有许多跨平台UI框架的方案如Cordova、ReactNative、weex、uni-app、Hippy等,常见的需要处理兼容的终端平台也包括android、ios、web、Iot等,但是在大前端的浪潮下,对于企业和开发者来说开发效率和使用体验都十分重要,传统的做法莫过于分不同的团队开发不同的终端项目,如果还要继续向其他平台,拓展的话,我们需要付出的成本和时间将成倍增长。正因为如此,在这样的背景下,Flutter等跨端框架的兴起,从本质上讲,帮助开发者增加业务代码的复用率,减少因为要适配多个平台带来的工作量,从而降低开发成本、提高开发效率。

222222.png

纵观已有的跨端方案,可以分为三类:Web 容器、泛 Web 容器、自绘引擎框架。
基于web容器即基于浏览器的跨平台也做得越来越好,自然管线也越来越短,与native的一些技术手段来实现性能上的相互补充。比如Egret、Cocos、Laya这些游戏引擎,它们在跨平台方面的做法多以Typescript编写,在iOS和安卓平台的各种浏览器中轻松的运行HTML5游戏,并在不同平台浏览器里提供近乎一致的用户体验,比如Egret还会提供高效的 JS-C Binding 编译机制,以满足游戏编译为原生格式的需求,不过大多数HTML游戏引擎也属于web容器这个范畴内。web容器框架也有一个明显的致命(在对体验&性能有较高要求的情况下)的缺点,那就是WebView的渲染效率和JavaScript执行性能太差。再加上Android各个系统版本和设备厂商的定制,很难保证所在所有设备上都能提供一致的体验。
泛 Web 容器框架比如ReactNative和Weex,即上层通过面向前端友好的UI,下层通过native的渲染形式,虽然同样使用类HTML+JS的UI构建逻辑,但是最终会生成对应的自定义原生控件,以充分利用原生控件相对于WebView的较高的绘制效率,同时H5与native相互补充来达到更好的用户体验,这也是一种很好的解决方案。缺陷也很明显,随着系统版本变化和API的变化,开发者可能也需要处理不同平台的差异,甚至有些特性只能在部分平台上实现,这样框架的跨平台特性就会大打折扣。

image.png

自绘引擎框架这里专指Flutter框架,从底层就承担跨端的任务和渲染方式,从目前来看,从技术的实现和方案的成熟度、产品的性能方面比较,Flutter有很大可能成为下一代主流跨平台框架。
Flutter与其他跨端框架的不同点之一就是自带渲染引擎,Flutter渲染引擎依靠跨平台的Skia图形库来实现,Skia引擎会将使用Dart语言构建的抽象的视图结构数据加工成GPU数据,交由 OpenGL 最终提供给 GPU 渲染,至此完成渲染闭环,因此可以在最大程度上保证一款应用在不同平台、不同设备上的体验一致性。
而开发语言选用的是同时支持 JIT和 AOT的 Dart语言,Dart本身提供了三种运行方式,应对web环境,用Dart2js编译成JavaScript代码,运行在常规浏览器中;使用DartVM直接在命令行中运行Dart代码;AOT方式编译成机器码,例如Flutter App框架。而且Dart 避免了抢占式调度和共享内存,可以在没有锁的情况下进行对象分配和垃圾回收,在性能方面表现相当不错,不仅保证了开发效率,代码性能和用户体验也更卓越。因此,Flutter在各类跨平台移动开发方案中脱颖而出。同时在去年2019的Google IO大会上,备受关注的Fuchsia系统虽然并没有发布,但是宣布了 Flutter除了支持开发 Android 和 iOS 程序之外,现在还支持开发Web程序了,在 I/O 大会上,谷歌发布了 Web 版 Flutter 的首个技术预览版,宣布 Flutter 将为包括 Google Home Hub 在内的 Google Smart Display 平台提供技术支持,并迈出利用 Chrome 操作系统支持桌面级应用的第一步。

image001.png

很多JS开发者会思考Google Flutter团队至于为啥选择Dart而不是JS,其实Google 公司给出的原因很简单也很直接:Dart 语言开发组就在隔壁,对于 Flutter 需要的一些语言新特性,能够快速在语法层面落地实现;而如果选择了 JavaScript,就必须经过各种委员会(TC39等)和浏览器提供商漫长的决议。
Flutter绘制原理
在计算机系统中,图像的显示需要 CPU、GPU 和显示器一起配合完成:CPU 负责图像数据计算,GPU 负责图像数据渲染,而显示器则负责最终图像显示。
CPU 把计算好的、需要显示的内容交给 GPU,由 GPU 完成渲染后放入帧缓冲区,随后视频控制器根据垂直同步信号(VSync)以每秒 60 次的速度,从帧缓冲区读取帧数据交由显示器完成图像显示。
操作系统在呈现图像时遵循了这种机制,而 Flutter 作为跨平台开发框架也采用了这种底层方案。下面有一张更为详尽的示意图来解释 Flutter 的绘制原理。可以看到,Flutter 关注如何尽可能快地在两个硬件时钟的 VSync 信号之间计算并合成视图数据,然后通过 Skia 交给 GPU 渲染:UI 线程使用 Dart 来构建视图结构数据,这些数据会在 GPU 线程进行图层合成,随后交给 Skia 引擎加工成 GPU 数据,而这些数据会通过 OpenGL 最终提供给 GPU 渲染。
Skia原理
Skia 是一款用由C++ 开发的2D 图像绘制引擎。在2005 年被 Google 公司收购后被广泛应用在 Android和其他等核心产品上,Skia 目前是Android 官方的图像渲染引擎,因此 Flutter Android SDK 无需内嵌 Skia 引擎就可以获得天然的 Skia 支持;而对于 iOS 平台来说,由于 Skia 是跨平台的,因此它作为 Flutter iOS 渲染引擎被嵌入到 Flutter 的 iOS SDK 中,替代了 iOS 闭源的 Core Graphics/Core Animation/Core Text,这也正是 Flutter iOS SDK 打包的 App 包体积比 Android 要大一些的原因。

image003.png

底层渲染能力统一了,上层开发接口和功能体验也就随即统一了,开发者再也不用操心平台相关的渲染特性了。也就是说,Skia 保证了同一套代码调用在 Android 和 iOS 平台上的渲染效果是完全一致的。
Flutter架构
Framework底层是Flutter引擎,引擎主要负责图形绘制(Skia)、文字排版(libtxt)和提供Dart运行时,引擎全部使用C++实现,Framework层使我们可以用Dart语言调用引擎的强大能力。Flutter 架构采用分层设计,从下到上分为三层,依次为:Embedder、Engine、Framework。

image005.png

Embedder 是操作系统适配层,实现了渲染 Surface 设置,线程设置,以及平台插件等平台相关特性的适配。从这里我们可以看到,Flutter 平台相关特性并不多,这就使得从框架层面保持跨端一致性的成本相对较低。
Engine 层主要包含 Skia、Dart 和 Text,实现了 Flutter 的渲染引擎、文字排版、事件处理和 Dart 运行时等功能。Skia 和 Text 为上层接口提供了调用底层渲染和排版的能力,Dart 则为 Flutter 提供了运行时调用 Dart 和渲染引擎的能力。而 Engine 层的作用,则是将它们组合起来,从它们生成的数据中实现视图渲染。
Framework 层则是一个用 Dart 实现的 UI SDK,包含了动画、图形绘制和手势识别等功能。为了在绘制控件等固定样式的图形时提供更直观、更方便的接口,Flutter 还基于这些基础能力,根据 Material 和 Cupertino 两种视觉设计风格封装了一套 UI 组件库,开发者可以直接使用这些组件库。
Flutter运行流程
页面中的各界面元素(Widget)以树的形式组织,即控件树。Flutter 通过控件树中的每个控件创建不同类型的渲染对象,组成渲染对象树。在Flutter界面渲染过程分为三个阶段:布局、绘制、合成,布局和绘制在Flutter框架中完成,合成则交由引擎负责。
Flutter 采用深度优先机制遍历渲染对象树,决定渲染对象树中各渲染对象在屏幕上的位置和尺寸。在布局过程中,渲染对象树中的每个渲染对象都会接收父对象的布局约束参数,决定自己的大小,然后父对象按照控件逻辑决定各个子对象的位置,最终完成布局过程。这里只需要注意一点,无论布局还是绘制,都是父子间的遍历关系:父Widget的布局需要依赖子Widget的布局结果;而绘制则反过来(子Widget需要盖在父Widget上),布局是后续遍历,绘制是前序遍历,他们都是深度优先遍历。
Flutter生命周期

image006.png

可以看到,Flutter中State 的生命周期可以分为 3 个阶段:创建(插入视图树)、更新(在视图树中存在)、销毁(从视图树中移除)。接下来,我们一起看看每一个阶段的具体流程。
第一步创建
State 初始化时会依次执行 :构造方法 -> initState -> didChangeDependencies -> build,随后完成页面渲染。构造方法是 State 生命周期的起点,Flutter 会通过调用StatefulWidget.createState() 来创建一个 State。我们可以通过构造方法,来接收父 Widget 传递的初始化 UI 配置数据。这些配置数据,决定了 Widget 最初的呈现效果。
initState,会在 State 对象被插入视图树的时候调用。这个函数在 State 的生命周期中只会被调用一次,所以我们可以在这里做一些初始化工作,比如为状态变量设定默认值。
didChangeDependencies 则用来专门处理 State 对象依赖关系变化,会在 initState() 调用结束后,被 Flutter 调用。
build,作用是构建视图。经过以上步骤,Framework 认为 State 已经准备好了,于是调用 build。我们需要在这个函数中,根据父 Widget 传递过来的初始化配置数据,以及 State 的当前状态,创建一个 Widget 然后返回。
第二步更新
Widget 的状态更新,主要由个方法触发:setState、didchangeDependencies、didUpdateWidget。
setState:我们最熟悉的方法之一。当状态数据发生变化时,我们总是通过调用这个方法告诉 Flutter:“我这儿的数据变啦,请使用更新后的数据重建 UI!”
didChangeDependencies:State 对象的依赖关系发生变化后,Flutter 会回调这个方法,随后触发组件构建。哪些情况下 State 对象的依赖关系会发生变化呢?典型的场景是,系统语言 Locale 或应用主题改变时,系统会通知 State 执行 didChangeDependencies 回调方法。
didUpdateWidget:当 Widget 的配置发生变化时,比如,父 Widget 触发重建(即父 Widget 的状态发生变化时),热重载时,系统会调用这个函数。一旦这三个方法被调用,Flutter 随后就会销毁老 Widget,并调用 build 方法重建 Widget。

image009.png

第三步销毁
比如组件被移除,或是页面销毁的时候,系统会调用 deactivate 和 dispose 这两个方法,来移除或销毁组件。
Flutter生态圈及其常用框架
一项技术一个框架是否流行,最直观的体现就是它的生态圈是否活跃,下面列举了一些Flutter开发中常用的库工具。

022710593692.png

参考文献
1、[Flutter原理与实践](https://tech.meituan.com/2018/08/09/waimai-flutter-practice.html) 少杰
2、[Flutter框架技术概览](https://flutter.dev/docs/resources/technical-overview)
3、[Flutter中文官网](https://pub.dartlang.org/flutter/)
4、[Flutter插件仓库](https://pub.dev/flutter/packages)
罗思雨 评论 0

1

回答

【精品问答】关于入门微服务,那些你必懂的知识

huc_逆天 2020-02-25 1383浏览量 回答数 1

3

回答

【大咖问答】达摩院研究员王刚 :自动驾驶之路上的 “能”与“不能”分享:

问问小秘 2020-03-02 303浏览量 回答数 3

现在不管国外还是国内的各大厂商都在疯狂造车,呼声这么高,这个时代真正到来影响我们的日常出行还需要多久?

智能驾驶汽车不是很依赖传感器技术嘛,那么目前的卫星定位,5G未正式入轨,这个事情真的靠谱嘛?

然后有听说日本的索尼都造了一台自动驾驶汽车,能浅析下这个领域,索尼属于产业链的什么位置呐?

我是位小白,可能问题比较多[原谅我]

游客xuhte2uigqv3o 评论 0

5

回答

据说在家办公的程序员是这样偷偷赚钱的?

问问小秘 2020-02-26 360浏览量 回答数 5

欢迎大家踊跃留言一起分享哦~

问问小秘 评论 0

2

回答

【阿里云高校“在家实践”】常见问题解答,如有其他问题请到【阿里云高校学研支持计划】技术圈提问哦

Shuonan 2020-02-28 101浏览量 回答数 2

1

回答

2020阿里云开发者社区首批志愿者招募啦

问问小秘 2020-02-06 1245浏览量 回答数 1

8

回答

【有奖问答】#科技复工#进行时 | 程序员必备神器有哪些?

云效小助手 2020-03-03 195浏览量 回答数 8

口罩,健康码,钉钉,阿里云,淘宝。

游客p5xirsfnnvb46 评论 0

139

回答

居家隔离+一起学习!21天打卡养成习惯,坚持就拿“大礼包”!

莫孤 2020-01-28 26554浏览量 回答数 139
  • 2020年1月29日打卡
  • Day01
  • 学习《从零开始学Python》中的(计算机是什么+计算机基础+Python简介及环境搭建+Python语法学习
ghl1024 评论 31

35

回答

【hi聊】2019年终回顾:程序员这些年经历最大的变化

问问小秘 2019-12-16 22479浏览量 回答数 35

2、十年前我还是个孩子,出生在农村,那时候对电脑一无所知,接触过最多的电子设备就属于黑白电视机了。当我哥从大城市回到家里,也带回来了笔记本电脑,我才知道那就是电脑,我很庆幸摸了摸电脑,我哥简单教了我怎么操作,之后就琢磨研究其电脑来了,那时候我玩过最多的无非就是纸牌和扫雷了。自从那时候我对电脑计算机有了自己的概念。十年后,我编程了一名PHP程序开发工程师,转眼间已经工作三年有余,现在可以人手一台电脑,或者去追求更高性能体验更好的MAC BOOK PRO ,这些在十年前那可是想都不敢想的。十年了人也慢慢的长大了,开始学会了养生,开始学会了做饭,学会了生活,学会了照顾自己,学会了解决生活中工作中遇到的难题。现在也开始慢慢带新人,带刚出入职场的“菜鸟”,传授当时自己努力奋斗学习的方法。目前自己也开始继续追求新的技术,学习新的模式,希望在未来的十年,下一个十年,下下一个十年,自己努力奋斗成为一名出色的程序员。加油!耶! 耶!

KaFei 评论 2

5

回答

【精品问答】Java技术1000问(1)

问问小秘 2019-11-15 19159浏览量 回答数 5

谢谢大佬干货分享,已收藏,感谢感谢~

各位小伙伴们,短信对接或发送时有任何不清楚的地方,可以加我v:CMCC-SMS-Division (添加时记得带上是符号-,不是_,别加错喽),或直接私信我,资源:三网验证码通知;三网会员营销;三网金融通知;三网轻催+重催;基金理财、保险、游戏、二类电商、淘宝客、淘口令、信用卡、教育、展会、招聘、收藏、APP推广、装饰装修,视频短信等数根直连短信通道

CMCC-SMS-Division 评论 0

33

回答

【每日一题】SQL 知识大测验 | 持续更新

茶什i 2019-11-22 17226浏览量 回答数 33

第9题: select t1.id, if(t1.id % 2 = 0, ifnull(t2.name, t1.name), ifnull(t3.name, t1.name)) as name from person t1 left join person t2 on t1.id = t2.id + 1 left join person t3 on t1.id = t3.id - 1 order by t1.id ;

tangxc8282 评论 0

37

回答

【hi聊】2020新年展望:get程序员过年的正确姿势

问问小秘 2020-01-08 16095浏览量 回答数 37

二姑妈:你这几年在外面是做什么工作的呀? 我:我是做开发的的。 二姑妈:什么开发? 我:计算机 二姑妈:我家里的电脑坏了,帮忙看看是什么问题 我:。。。

星尘linger 评论 0
滑动查看更多