精华内容
参与话题
问答
  • 从零开始搭建神经网络 (一) 基础知识

    万次阅读 多人点赞 2018-06-07 19:47:23
    目录 1.什么是人工神经网络 2.神经网络的相关概念 2.1 输入层、隐含层,输出层 2.2 激活函数 2.3 权重和偏置 ...神经网络起源于对生物神经元的研究,如下图所示生物神经元包括细胞体,树突,轴突等部分。...

    目录

    1.什么是人工神经网络

    2.神经网络的相关概念

    2.1 输入层、隐含层,输出层

    2.2 激活函数

    2.3 权重和偏置

    2.4 损失函数


    1.什么是人工神经网络

        神经网络起源于对生物神经元的研究,如下图所示生物神经元包括细胞体,树突,轴突等部分。其中树突是用于接受输入信息,输入信息经过突触处理,当达到一定条件时通过轴突传出,此时神经元处于激活状态;反之没有达到相应条件,则神经元处于抑制状态。

        受到生物神经元的启发,1943年心理学家McCulloch和数学家Pitts提出了人工神经元的概念,人工神经元又称为感知机,如下图所示。输入经过加权和偏置后,由激活函数处理后决定输出。

        其中生物神经元和人工神经元对应关系如下:

        由大量的人工神经元互相连接而形成的复杂网络结构成为人工神经网络(Artificial Neural Network, ANN)

    2.神经网络的相关概念

    2.1 输入层、隐含层,输出层

        一般的神经网络包含以下几个部分,输入层,隐含层和输出层。下图是含有一个隐层的神经网络,隐层的层数越多,隐层结点数目越多,在非线性的激活函数下,神经网络就可以学习更深层次的特征。

    2.2 激活函数

        激活函数是神经网络设计的核心单元,激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。激活函数需要满足一下几个条件:

    1.非线性。如果激活函数是线性的,那么不管引入多少隐层,其效果和单层感知机没有任何差别。

    2.可微性。训练网路时使用的基于梯度的优化方法需要激活函数必须可微。

    3.单调性。单调性保证了神经网络模型简单。

    几种常用的激活函数可以参考:点击打开链接

     

    2.3 权重和偏置

        

        如上图所示,假设神经元输入是X = [x1,x2,x3],权重为w,偏置为b, 那么其输出为:

        可以看出,w,b会影响感知机的输出结果,正是因为此神经网络在迭代过程中修改的是权重w和偏置b。更细致的讲解可以参考:点击打开链接

    2.4 损失函数

        损失函数(loss function)也叫代价函数(cost function)。是神经网络优化的目标函数,神经网络训练或者优化的过程就是最小化损失函数的过程(损失函数值小了,对应预测的结果和真实结果的值就越接近)。损失函数也有很多种,拿常用的交叉熵损失函数举例,其单个样本二分类的损失函数公式如下:

    当样本标签为1时,,此时希望损失函数尽量的小,那么就要接近1;

    当样本标签为为0时,,此时希望损失函数尽量的小,那么就要接近0。

    对于m样本的损失函数可以使用:

    其他的损失函数可以参考:点击打开链接

    2.5 反向传播(Back Propagation,BP)算法

    BP算法分为正向传播和误差的反向传播两个部分。
           正向正向传播时,输入样本从输入层进入网络,经隐层逐层传递至输出层,如果输出层的实际输出与期望输出(导师信号)不同,则转至误差反向传播;如果输出层的实际输出与期望输出(导师信号)相同,结束学习算法。反向
           反向反向传播时,将输出误差(期望输出与实际输出之差)按原通路反传计算,通过隐层反向,直至输入层,在反传过程中将误差分摊给各层的各个单元,获得各层各单元的误差信号,并将其作为修正各单元权值的根据。这一计算过程使用梯度下降法完成,在不停地调整各层神经元的权值和阈值后,使误差信号减小到最低限度。
           权值和阈值不断调整的过程,就是网络的学习与训练过程,经过信号正向传播与误差反向传播,权值和阈值的调整反复进行,一直进行到预先设定的学习训练次数,或输出误差减小到允许的程度。

    如图所示,其中蓝色为正向传播,红色为反向传播,反向传播的导数为损失函数对各变量求导。

     

     

     

     

    展开全文
  • 1. 激活函数激活函数这里选择最简单的sigmod()函数

    本文以实现逻辑回归为例,逻辑回归如图所示,只有一个神经元结点。

    1. 激活函数

    logistic回归的激活函数一般使用sigmoid(x),其他情况可以使用tanh(x),ReLU(x)或者泄露ReLU(x),激活函数内容可以参考:从零开始搭建神经网络(一)基础知识。这里以sigmoid(x)为例表达式如下:

    def sigmoid(z):
        """
        sigmoid激活函数
        :param z: 输入
        :return: sigmoid(z)
        """
        return 1/(1 + np.exp(-z))

    2.初始化参数

    神经网络中有两个参数需要初始化分别是权重w和偏置b,初始化的方式可以全部初始化为0,也可以随机初始化。需要注意到的是对于logistic回归,可以将权重初始化为零,但是对于神经网络的歌参数数组全部初始化为零,再使用梯度下降那么就会无效。原因是无论哪个初始输入与零权重相乘的到的结果也全是零,从而激活函数输出也是一样的,最终导致反向传播的结果也是一样。由于本文实现的是逻辑回归,故采用零值初始化。

    def initializeParamWithZeros(dim):
        """
        初始化权重和偏置
        :param dim: 输入维度
        :return: 返回初始化的w和b
                  w:(dim,1)的向量
                  b:标量
        """
        w = np.zeros((dim,1))
        b = 0
        return w,b
    

    3.BP算法

    BP算法分为两个部分:前向传播与反向传播。详细内容可以参考:从零开始搭建神经网络(一)基础知识。逻辑回归中前向传播用公式表示为:

    其中X是输入数据,A是输出数据。反向传播是采用梯度下降法使误差函数减小,误差函数表示为:

    其中m为输入数据数目,是输入标签,是激活函数输出,即预测值。反向传播过程中使用梯度下降来实现损失函数的减小,需要先求得损失函数Jwb的偏导分别为:

    def BackPropagate(w,b,X,Y):
        """
        BP算法
        :param w: 权重
        :param b: 偏置
        :param X: 输入数据
        :param Y: 输入标签
        :return: 梯度和损失函数
        """
        #输入数据数目
        num = Y.shape[0]
    
        #前向传播
        A = sigmoid(np.dot(w.T,X) + b)
        cost = -1 / num * np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A))
    
        #反向传播
        dw = 1 / num * np.dot(X,(A - Y).T)
        db = 1 / num * np.sum(A - Y)
    
        #用字典存储dw和db
        gradients = {"dw": dw,
                 "db": db}
        return gradients,cost

    4. 梯度下降与优化

    神经网络的目标是针对参数Wb来求其损失函数J(W,b)的最小值,为了求解最优的Wb,我们可以重复梯度下降法的迭代步骤来求解最优的WbWb更新公式为:

    其中为学习速率。

    def Optimize(w,b,X,Y,iters,learning_rate):
        """
        :param w: 初始权值
        :param b: 初始偏置
        :param X: 输入数据
        :param Y: 输入数据标签
        :param iters: 训练迭代次数
        :param learning_rate: 学习速率
        :return: 权值w,偏置b,梯度gradients和损失函数cost
        """
        #存储损失函数的值
        costs = []
        for i in range(iters):
            #初始化梯度和损失函数的值
            gradients, cost = BackPropagate(w,b,X,Y)
    
            #获取偏导
            dw = gradients["dw"]
            db = gradients["db"]
    
            #更新参数
            w = w - learning_rate * dw
            b = b - learning_rate * db
    
            # 记录损失并输出函数
            costs.append(cost)
            print("The cost in the %d th iteration is %f" %(i,cost))
    
        gradients = {"dw": dw,
                     "db": db}
        return w,b,gradients,costs

     

    5.预测

     

    训练好后的参数就可以在实际应用中使用了。预测结果分为两部分,第一部分计算输出:

    然后判断输出和0.5的大小,大于0.5则为1,反之则为0

    def predict(w,b,X):
        """
        :param w: 训练后的权值
        :param b: 训练后偏置
        :param X: 输入数据
        :return: 预测概率大于0.5的
        """
        #获取输入数目m
        m = X.shape[0]
        #存储预测结果
        Y_prediction = np.zeros((1,m))
        w = w.reshape(X.shape[0], 1)
        #神经元输出
        A = sigmoid(np.dot(w.T,X) + b)
    
        #开始预测
        for i in range(A.shape[0]):
            if A[0,i] > 0.5:
                Y_prediction[0,i] = 1
            else:
                Y_prediction[0,i] = 0
        return Y_prediction

    6. 完整实例

    import numpy as np
    import matplotlib.pyplot as plt
    
    if __name__ == "__main__":
        #X为横坐标,Y为纵坐标
        X = [0, 1.5, 2, 2, 2.25, 2.8, 3.2, 4]
        Y = [1.5, 3, 4, 3, 0.5, 2.8, 1.35, 4]
        label = [1, 1, 1, 1, 0, 0, 0, 0]
        #第一类为蓝色,第二类为红色
        label_color = ['blue','red']
        color = []
        for i in label:
            if i == 1:
                color.append(label_color[0])
            else:
                color.append(label_color[1])
        for i in range(len(X)):
            plt.scatter(X[i], Y[i], c = color[i])
        plt.title('Raw Data')
        plt.show()
    
        #数据归一化
        X = np.array(X)
        Y = np.array(Y)
        X = (X - np.average(X))
        Y = (Y - np.average(Y))
        X = X / X.max()
        Y = Y / Y.max()
        for i in range(len(X)):
            plt.scatter(X[i], Y[i], c = color[i])
        plt.title('Normalization Data')
        plt.show()
    
        data_X = np.vstack((X, Y))
        data_label = np.array([label])
        #参数设置
        w = []
        b = []
        Y_prediction = []
        iters = 20
        learning_rate = 0.75
        #开始训练
        w,b = initializeParamWithZeros(data_X.shape[0])
        w, b, gradients, costs = Optimize(w,b,data_X,data_label,iters,learning_rate)
        Y_prediction = predict(w,b,data_X)
    
        #画图
        plt.plot(costs)
        plt.ylabel('cost')
        plt.xlabel('iterations')
        plt.title("Learning rate =" + str(learning_rate))
        plt.show()
    
        #测试输入数据
        point = input("Please enter a coordinates:\n")
        #获取坐标
        x = int(point.split(' ')[0])
        y = int(point.split(' ')[1])
        point_data = np.vstack((x,y))
        point_prediction = predict(w,b,point_data)
        print("The point is below to" ,end=" ")
        print(point_prediction[0,0])

    初始数据:

    归一化后的数据:

     

    损失函数随迭代次数的变化:

                         

     

    输入一个坐标,进行回归分类:

     

     

     

     

     

     

     

     

     

    展开全文
  • 从零开始开发3D跑酷游戏教程

    千人学习 2017-05-02 19:56:59
    从零开发3D跑酷游戏视频培训课程,教大家从零开始开发一个3D跑酷游戏,涵盖了手势识别、动画系统、水平控制、纵向控制、金币获取、急速暴走、强力磁铁、超级跑鞋、双倍积分、跨越栅栏、车辆管理、随即场景等功能点。...
  • 从零开始,一步一步编写网页

    万次阅读 多人点赞 2016-08-17 00:05:04
    1.编程工具WEB前端的学习环境非常简单,很多书上说,只需要PC上有浏览器和文本编辑器就成。本小白本着不怕死的冲劲试了试,还真是!!!(1)浏览器这个大家的PC都有吧?我的是360浏览器。(2)文本编辑器windows...

    1.编程工具

    WEB前端的学习环境非常简单,很多书上说,只需要PC上有浏览器文本编辑器就成。

    本小白本着不怕死的冲劲试了试,还真是!!!

    (1)浏览器

    这个大家的PC都有吧?我的是360浏览器。

    (2)文本编辑器

    windows自带的文本编辑器也有吧?

    不过,我折腾后发现,这个编辑器对于保存文件的格式选择不方便,且代码看着怪怪的,不习惯。

    果断弃了,选择常用的Notepad++,安利下,本软件保存文件格式多、免费,且方便看代码,超实用。360软件宝库就有,名字叫Notepad Plus。

    有了工具,废话不多说,直接开撸!

    2.WEB前端第一个网页“hello world!”

    有了代码环境,直接撸代码,先享受下成就感!

    新建一个文件夹,比如webtest(之后,若没有明说,默认所有的代码、资源都会存在这个文件夹中。所以,每一次都是在这个文件夹中进行添加、修改)。

    打开Notepad++,新建文件,编写几行代码就成。

    <html>
    <h1>title</h1>   <!--这里,h是head的缩写,也就是标题,h1是一级标题,字最大-->
    
    <body>
    
    <p>hello world!!!!</p>  <!--这里是文本段落,p是paragraph-->
    
    </body></html>

    将文件保存为test.html,保存于webtest文件夹中。

    好了,OK!
    此时,你会看到test.html有了一个浏览器的符号。如图1所示。
    这里写图片描述
    图1
    好了,第一个网页的代码就完成了!!

    双击test.html文件,360浏览器直接解释运行我们写的代码,结果如图2所示。
    这里写图片描述
    图2

    WEB前端,这么简单就入门了第一步!

    成就感,有木有!

    3.添加JavaScript脚本

    早就久仰JavaScript之大名,今天咱们就看看其庐山真面目。

    继续上一次的节奏。

    还是在webtest文件夹中。

    然后类似的,Notepad++中新建文件,编写代码:

    document.writeln("hello, world!--js");<!--输出hello world!-->

    保存为test.js格式的文件,同样保存在webtest文件夹中,如图3所示。
    这里写图片描述
    图3

    既然有了test.js脚本文件,那自然是要执行的。

    所以,要对之前的test.html文件进行对应修改。

    主要是添加

    <html>
    <h1>title</h1>
    
    <body>
    <script src="test.js"></script>
    <p>hello world!--html</p>
    </body></html>

    修改完代码,同样双击运行test.html。

    然后可以在360浏览器中看到如图4所示。
    这里写图片描述
    图4

    4.加载图片

    既然知道文字的显示方式,我们自然回想到要加载图片。

    好,下面就来看看,如何加载女神图片镇楼!

    在test.html文件中添加img标签。

    代码修改如下所示:

    <html>
    
    <h1>title</h1>
    
    <body>
    <script src="test.js"> </script>
    <p>hello world!!!!</p>
    <img src="asuna.jpg" width="980" height="898">
    </body></html>

    这里,我为了方便,将图片资源也同样放在webtest文件夹中。
    如图5所示。
    这里写图片描述
    图5

    src指示的是图片路径。后面两个参数分别是图片的像素尺寸(像素个数,显示器显示的图片都是一个一个的像素点组成的阵列,像素点看做一个小方块),包括宽度和高度。

    保存代码后,双击运行test.html文件,结果如图6所示。
    这里写图片描述
    图6

    ASUNA!

    女神就是女神!

    不过,怎么女神只有头?

    原来是图片尺寸较大!

    可以修改图片尺寸么?

    当然!

    直接修改图片的宽度和高度参数,控制图片大小。

    本小白为了偷懒,直接取原来参数的二分之一。

    <html>
    <h1>
    title
    </h1>
    
    <body>
    
    <script src="test.js"> </script>
    
    <p>hello world!!!!--html</p>
    
    <img src="asuna.jpg" width="490" height="499">
    
    </body></html>

    再运行test.html文件,如图7所示。
    这里写图片描述
    图7

    女神,永远都是女神!

    展开全文
  • 最近突然想建立一个网站,然后就开始寻找各种资源,走了不少弯路,很多大佬写的模模糊糊,表示完全看不懂(小白的无奈),希望能帮助到一些人。 本人小白,第一次接触服务器,对一些概念理解可能有偏差,希望各位...

    本人学生一枚,第一次写博客,分享下最近两天的建立网站的经验。

    最近突然想建立一个网站,然后就开始寻找各种资源,走了不少弯路,很多大佬写的模模糊糊,表示完全看不懂(小白的无奈),希望能帮助到一些人。

    本人小白,第一次接触服务器,对一些概念理解可能有偏差,希望各位大佬可以指正。

    版主利用网上的phpwind模板,建立的一个博客论坛。

    以阿里云的云服务器ECS为例

    建立网站的前期准备:

    必备要素:

    1. 域名申请
    2. 服务器(虚拟主机)
    3. 服务器配置
    • 域名的申请

    阿里云购买:https://www.aliyun.com/

    域名购买没什么注意的,域名购买后有个实名认证需要注意一下:

    如下图:

    没认证的域名,域名状态是未认证,国内域名认证后才能使用,阿里云实名认证比较方便,直接支付宝扫描就可以认证

    域名认证需要身份证正面照,审核时间大概1-3小时(时间还是比较快的)

    • 服务器(虚拟主机)

    虚拟主机是用本地磁盘空间,云服务器是就是云的,不占用本地的空间

    服务器原价比较贵,阿里云有一个云翼计划(学生一折)

    https://promotion.aliyun.com/ntms/campus2017.html

    里面有两个选择,轻量级应用和云服务器ECS

                       折后价差不多,建议购买云服务ECS

                       注意点:购买服务器时有一个密码,必须包括大写小写和数字(服务器密码1

                       购买后进入阿里云控制台,

                       购买的时候,需要选择服务器类型,建议使用windows操作的

                       如下:(购买错了不要着急,在服务器管理中可以修改,自行百度)

     

    购买服务器后可以打开cmd窗口 ping 服务器地址,如果出现请求超时,那就是服务器的端口没设置

     

    设置如下:登录阿里云控制台,点击云服务器ECS

    如下:

    在网络与安全中有一个安全组,点击进去

    如图:

    进入这个界面点击右下角的配置规则:

    点击右上角的添加安全组规则:

    设置跟上图一样,最主要的80端口 访问端口,注意-1/-1的是ICMP协议

     

    然后再去ping服务器

    这就是服务器配置成功了

    服务器配置过程也有很多错误,我再给一个同学配置的时候就发现,有时候因为DNS地址一些原因,也会报错

    这个需要自行百度,每台电脑环境不同,很难统一

    • 解析域名

    域名仅相当于服务器的门牌号,需要将域名和服务器绑定在一块

    登录域名才有效

    进入阿里云的控制台:点击域名与网站

    进入域名管理:

    点击解析,进入界面

    点击新手引导:

    在记录值得一栏输入 服务器的地址

    这样的话 域名就和服务器绑定一块了

    然后ping 网址:

    网址后面显示了服务器地址,说明这方面已经成功了

    • 配置服务器

         服务器配置有两个方式,一个是在阿里云的控制台中配置,一个是用电脑的远程连接连接服务器

         下面一一介绍  

    • 网站远程

    进入控制台->云服务器ECS->实例(若没有显示,就点击服务器进入实例)

    后面有一个远程连接,点击进入:

    会输入远程密码,不知道,在右上角有一个重置(验证手机号重置密码)

    服务器就进入了

    点击解锁,密码是上面的服务器密码1

    注意:这个地方有一个情况,就是第一次购买服务器时,服务器类型不是windows,在服务器的管理处改成了windows servise 在重新修改服务类型时,会有一个新的密码(服务器密码2),这里的密码就是服务器密码2

    因为我开始购买的是liunx的,后期改动了一下,有两个密码,在配置的时候记不清具体用的哪个密码了,都试一下比较稳

     

    • 本地远程连接服务器

              上面的方法是在阿里云控制台中远程连接的服务器,在介绍一种本地连接服务器的方法

    Windows + r 输入mstsc

    进入远程连接的界面:

    这个连接错误失败原因很多:

    每个电脑不同,可以自行百度,建议去云栖社区,百度容易走弯路

    参考下面链接:

    https://blog.csdn.net/qq_37896194/article/details/80449713 凭证认证失败

    https://jingyan.baidu.com/article/72ee561a528e54e16038df41.html 本次远程属性设置

    https://blog.csdn.net/qq_27905183/article/details/78975324 连接简述

    https://blog.csdn.net/qq_38922435/article/details/80740582 链接步骤

    https://jingyan.baidu.com/article/335530dae2123d19cb41c331.html  

    https://blog.csdn.net/jing875480512/article/details/52504874

     

     

    计算机:填写服务器的地址

    用户名:填写andministrator(第一次登陆一定是这个)这个是服务器的用户名,不是本地用户,不是本地用户,不是本地用户

    我是这样理解的:windows是多用户的,你进入的那个计算机,当然需要判断进入的是哪个账户

     

    然后配置共享磁盘:

    上面有一个本地资源,点击详细信息

    里面有具体的共享磁盘 这个是可以选择的

    在连接的时候会弹出填写用户名和密码:

     

    用户名:administrator

    密码:(服务器密码1 || 服务器密码2)不过多解释了

    然后可以远程登录:输入电脑密码

    进入界面,

    上一步可能出现的问题很多,我自己连接这花了很长时间,因为对这个理解有偏差导致的,上面我给出了一些链接,可以参考,都是我当时参考过的文章,可能能帮到点忙,其余的问题就需要自己查阅相关知识了。

     

    然后向在服务器建立网站怎么办?

    阿里云有一个安装包,可以利用别人的模板体验一下

    在云栖社区中

    搜索阿里云windows一键安装web环境

      2/

    包括:

    因为服务器相当于一个空的电脑,环境什么都没有,需要配置环境才能运行

    压缩包里有pdf的教程。安装完整后,在登录服务器地址,这个网站就暂时搭建完成了

    导入自定义的网站需要利用iis里面的配置,这个我暂时还没吃透,我网站导入进去了,登录界面可以用,其他的一直500错误

    弄了好久,还没解决。后面的iis,后期会分享。

    下面总结其他的问题:

    域名备案 网上说了一些域名备案的问题,我分享下我的经验 域名备案需要服务器购买时间超过3个月(因为至少三个月才能申请备案服务号),这里就有一个比较有意思的问题了,因为我同学买的是1个月的服务器,不能申请备案服务号,然后域名和服务器绑定后,就能直接通过域名访问服务器了,这个我不知道是不是偶然,没有去考证,但是他增加了服务器时间后,域名就不能直接访问服务器了,然后去备案了。这个备案比较久,建议早点进行

    (如需转载,请表明出处,私自转载将追究后果)

     

     

     

     

     

    展开全文
  • 从零开始电子书

    2018-12-07 21:42:47
    网络下载的现在是转载状态本人不下载之后仅供欣赏,所下载内容24小时内删除
  • 从零开始学Android(一)

    千次阅读 2018-05-20 13:23:58
    1 环境搭建如果可以翻墙,环境搭建不是什么大问题,如果不能翻墙,则搭建环境比较困难。首先,我们根据网上的教程安装JDK。...如果是国内环境,需要配置相关的国内镜像和仓库。有条件的话还是选择VPN的方...
  • 从零开始学C#2010年12月由中国铁道出版社出版发行,是一本学C#的入门经典书籍。C#是Microsoft专门为基于.NET framework平台开发量身定做的编程语言。C#语言不仅支持控制台应用程序开发,还支持Windows窗体应用程序...
  • 从零开始写一个RTSP服务器(一)RTSP协议讲解

    万次阅读 多人点赞 2019-08-09 20:17:55
    从零开始写一个RTSP服务器系列 从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解 从零开始写一个RTSP服务器(二)RTP传输H.264(待写) 从零开始写一个RTSP服务器(三)一个传输H.264的RTSP服务器(待写) 从零开始...
  • 历时8个月的呕心沥血,关东升《从零开始Swift》即将上市,全书600多页,基于Swift 2,如何从零到上架应用,Swift与OC/C/C++混合编程,涵盖Cocoa Touch、发编程、SpriteKit。
  • 转载请注明:关东升的博客 访问级别:Swift提供了3种不同访问级别,对应的访问修饰符为:public、internal和private。这些访问修饰符可以修饰类、结构体、枚举等面向对象的类型,还可以修饰变量、常量、下标、元组、...
  • 从零开始Swift 第2版 【作 者】关东升 【丛书名】图灵原创 【形态项】 530 【出版项】 北京:人民邮电出版社 , 2017.04 【ISBN号】978-7-115-45092-0 【中图法分类号】TP312 【原书定价】99.00 【主题词】程序...
  • Swift 2.0学习笔记(Day 37)——默认构造函数原创文章,欢迎转载。转载请注明:关东升的博客 结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数。构造函数没有返回值,可以重载。在多个构造函数...
  • 转载请注明:关东升的博客 我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。Swift中的闭包类似于Objective-C中的代码块、...
  • 原创文章,欢迎转载。转载请注明:关东升的博客看下面的示例代码是不是使用过:var studentList: String[] = ["张三","李四","王五"] studentList[0] = "诸葛亮" var studentDictionary = [102: "张三",105: ...
  • 原创文章,欢迎转载。转载请注明:关东升的博客 返回值3种形式:无返回值、单一返回值和多返回值。 无返回值函数所谓无返回结果,事实上是Void类型,即表示没有数据的类型。无返回值函数的语法格式有如下3种形式: ...
  • 原创文章,欢迎转载。转载请注明:关东升的博客 实现目标与动作关联使用UIControl类addTarget(_:action:forControlEvents:)方法,示例代码如下:button.addTarget(self, action: "onClick:", ...
  • 原创文章,欢迎转载。转载请注明:关东升的博客 程序代码中到处都是自己定义的名字,取一个有样并且符合...匈牙利命名还是有一定争议的,在Swift编码规范中几本不采用匈牙利命名。驼峰命名(Camel-Case),又称骆驼命
  • 原创文章,欢迎转载。转载请注明:关东升的博客 可选类型:我们先...Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据
  • 我们在这里不过多的讲述Swift的发展过程,网上百度一搜一大片,直接开始上代码走起。 1、使用let来声明常量,使用var来声明变量 2、当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你...
  • 转载请注明:关东升的博客 在我们学习语言时都会学到这种语言的数据类型,在Swift中数据类型有那些呢?整型、浮点型、布尔型、字符、字符串这些类型是一定有的,其中集合、枚举、结构体、类也是Swift中的数据类型。...
  • 原创文章,欢迎转载。转载请注明:关东升的博客 在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。 1....)声明这个类型是可选类型,访问这种类型的变量...
  • 在简要介绍基础语法之前,先向大家介绍一个网站https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/这个是苹果公司swift官方网站,以下语法所有的...
  • 这个博文是swift 2.0的,也是可以参考的 ... 文章目录 ...[置顶] 关东升的《从零开始Swift》3月9日已经...大家一直期盼的《从零开始Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600
  • 转载请注明:关东升的博客 Swift中的枚举可以定义一组常量、提高程序的可读性;还具有面向对象特性。使用enum关键词声明枚举类型,具体定义放在一对大括号内,枚举的语法格式如下:enum 枚举名{ 枚举的定义}“枚举名...
  • 转载请注明:关东升的博客 Swift 2.0中的print函数有4种重载形式:print(_:)。输出变量或常量到控制台,并且换行。print(_:_:)。输出变量或常量到指定类型的流中,并且换行。print(_:appendNewline:)。输出变量或...
  • 转载请注明:关东升的博客 Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据。存储属性可以存储数据,分为常量属性(用关键字let...
  • 转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective-C语言。 选择语言Swift语言出现后,苹果公司给程序员提供了更...
  • Swift 2.0学习笔记(Day 9)——离开表达式你试试!原创文章,欢迎转载。转载请注明:关东升的博客 表达式啊是很重要地。在Swift中,表达式有3种形式。l 不指定数据类型var a1 = 10l 指定数据类型var a1:Int = 10...
  • 原创文章,欢迎转载。转载请注明:关东升的博客 在C、Objective-C和Java等其他语言中,整型之间有两... 而在Swift中这两种方法是行不通的,需要通过一些函数进行显式地转换,代码如下: let historyScore:UInt8 = 90

空空如也

1 2 3 4 5 ... 20
收藏数 707,782
精华内容 283,112
关键字:

从零开始