矩阵的秩((1,1)^T,(1,1)^T)-E = O 还是 ((0,1)^T,(1,0)^T),为什么

扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
设α=(1,1,1)^T(转置),β=(1,0,1)^T(转置),矩阵A=αβ^T(转置),k为正整数,矩阵A的k次方
oochfovp1854
扫二维码下载作业帮
2亿+学生的选择
举个例子(αβ^T)(αβ^T)(αβ^T) = α(β^Tα)(β^Tα)β^T = (β^Tα)^2 A这点提示够了, 接下去可以自己做了
为您推荐:
其他类似问题
扫描下载二维码 微软技术面试100题答案1.doc -max上传文档投稿赚钱-文档C2C交易模式-100%分成比例文档分享网
 微软技术面试100题答案1.doc
文档名称: 微软技术面试100题答案1.doc
格式:doc&&&大小:0.32MB&&&总页数:114
可免费阅读页数:114页
下载源文档需要:20元人民币
预览与实际下载的一致,文档内容不会超过预览的范围,下载前请务必先预览,自行甄别内容是否完整、是否存在文不对题等情况(本网站为文档分享平台性质),一旦付费下载,本站不支持退款
我已知晓:实际下载内容以预览为准!
文档介绍:微软技术面试100题第1-10题答案修正与优化1.把二元查找树转变成排序的双向链表(树)题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10//614////481216转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如下:structBSTreeNode{intm_nV//valueofnodeBSTreeNode*m_pL//leftchildofnodeBSTreeNode*m_pR//rightchildofnode};Sorehead:第一题:基本就是采用一次遍历即可,楼主采用的是递归方法。但有两个建议:1、函数里面最好不好使用全局变量,采用参数传递的方式可能更好。全局变量能少用就少用。2、if(NULL==pCurrent)这种方式我也不是很推荐。我知道采用这种方式的好处是一旦少写了一个等号,编译器会报错,NULL不是一个合法左值。其实我最开始写代码时也是这么写的,很长时间都觉得挺好。但这有个悖论,就是一个开发者能够想起来这么写的时候,这说明他知道这么是要做等值判断,自然也会知道该写==而不是=,想不起来的时候自然也就该犯错误还是犯错误,并不能起到原本初衷。代码写多了,会发现这么写真有点多此一举。July关于第一题,我再多说点:我们可以中序遍历整棵树。按照这个方式遍历树,比较小的结点先访问。如果我们每访问一个结点,假设之前访问过的结点已经调整成一个排序双向链表,我们再把调整当前结点的指针将其链接到链表的末尾。当所有结点都访问过之后,整棵树也就转换成一个排序双向链表了。viewplaincopytoclipboardprint?//遍历二元查找树中序voidergodicBSTree(BSTreeNode*pCurrent){if(NU&h2&(一)安装&/h2&
&p&搜索:mysql-5.6.17-winx64.zip 下载安装&/p&
&p&类型MySQL,5.6绿色版&/p&
&p&安装参考这个博客:&a href=&/?target=http%3A//blog.csdn.net/zhuxiaowei716/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&mysql5.6.16绿色版配置、运行 - zhuxw技术博客 - 博客频道 - CSDN.NET&i class=&icon-external&&&/i&&/a&&/p&
&p&&b&注意:&/b&&/p&
&p&①不要删除已有的内容。&/p&
&p&②需要修改路径,路径使用自己解压缩后(文件)的路径&/p&
&p&③如果是修改路径的话,请删除原本.ini文件路径之前的
&p&④命令用mysqld --install mysql
--defaults-file=&D:\Tool\mysql-5.6.16-win32\my.ini&&/p&
&p& 即——不要空格,不要用中文的双引号&/p&
&h2&(二)启动&/h2&
&p&我是直接启动:D:\python\MySQL
Server5.6\bin\mysql.exe&/p&
&p&就可以的(进入了正常使用的页面)。&/p&
&p&D:\python\MySQL Server 5.6是我的数据库安装目录。&/p&
&p&以下是我的启动页面。如果无法正常启动的话,请评论说明,我再重新研究一下。&/p&
&p&Welcome to the MySQL monitor.
C or \g.&/p&
&p&Your MySQL connection id is 5&/p&
&p&Server version: 5.6.17 MySQL Community Server (GPL)&/p&
&p&Copyright (c) , Oracle and/or its affiliates.
All rights reserved.&/p&
&p&Oracle is a registered trademark of Oracle Corporation
and/or its&/p&
&p&affiliates. Other names may be trademarks of their
respective&/p&
&p&owners.&/p&
&p&Type '' or '\h' for help. Type '\c' to clear the
current input statement.&/p&
&p&mysql&&/p&
&h2&(三)显示数据库&/h2&
&p&我启动时自动进入页面,当时页面为:&/p&
&p&mysql&&/p&
&p&在这个后面输入命令,以&b&分号为结尾&/b&。&/p&
&p&输入&/p&
&p&显示:&/p&
&p&mysql&&/p&
&p&+--------------------+&/p&
&p&+--------------------+&/p&
&p&| information_schema |&/p&
&p&+--------------------+&/p&
&p&2 rows in set (0.00 sec)&/p&
&h2&(四)进入某个数据库&/h2&
&p&以上面的为例,进入test的命令为:&/p&
&p&显示:&/p&
&p&mysql&&/p&
&p&Database changed&/p&
&h2&(五)显示该数据库内的表&/h2&
&p&输入:&/p&
&p&显示:&/p&
&p&mysql&&/p&
&p&Empty set (0.00 sec)&/p&
&p& 原因是是一个新数据库,所以里面没有表。&/p&
&h2&(六)创建一个表&/h2&
&p&输入:(可以多行输入,只要连续,且中间不写分号就行)&/p&
&p&create table sales_rep(&/p&
employee_number
varchar(40),&/p&
first_name
varchar(30),&/p&
commission
tinyint);&/p&
&p&显示:(这里没换行)&/p&
&p&mysql& create table sales_rep(&/p&
-& employee_number
-& surname
varchar(40),&/p&
-& first_name
varchar(30),&/p&
-& commission
tinyint);&/p&
&p&Query OK, 0 rows affected (0.23 sec)&/p&
&p&效果:&/p&
&p&创建一个标明为users的表,&/p&
&p&第一项:employee_number,类型为int&/p&
&p&第二项:surname,类型为varchar(40)&/p&
&p&第三项:first_name,类型为varchar(30)&/p&
&p&第四项:comisision,类型为tinyint &/p&
&h2&(七)检查表结构&/h2&
&p&输入:&/p&
&p&describe sales_&/p&
&p&显示:&/p&
&p&mysql& describe sales_&/p&
&p&+-----------------+-------------+------+-----+---------+-------+&/p&
| Null | Key |Default | Extra |&/p&
&p&+-----------------+-------------+------+-----+---------+-------+&/p&
&p&| employee_number |
| varchar(40) |
first_name
| varchar(30) | YES
&p&| commission
tinyint(4)
&p&+-----------------+-------------+------+-----+---------+-------+&/p&
&p&4 rows in set (0.00 sec)&/p&
&h2&(八)类型说明&/h2&
&p&&b&int&/b&&b&:&/b&范围-2 147 483 648 到 2 147 483 647(包括负号所以11个字符)&/p&
&p&&b&varchar(40)&/b&&b&:&/b&表示可变长字符,40表示字符串的最大长度是40&/p&
&p&&b&tinvint&/b&&b&:&/b&表示小整数范围是-128~127之间(所以是4个字符)。&/p&
&h2&(九)更改表内某一项的名字和类型&/h2&
&p&如上面所见:第一项实际应该是employes_num,我错写为了employee_number&/p&
&p&可以通过命令修改,使其名字变更为正确的名字。&/p&
&p&原型:&/p&
&p&&alter table 表名称 change字段原名称字段新名称字段类型 [是否允许非空];&/p&
&p&输入:&/p&
&p&alter table sales_rep change
employee_numberemployes_&/p&
&p&显示:&/p&
&p&mysql& alter table sales_rep change
employee_number employes_numberint&/p&
&p&Query OK, 0 rows affected (0.13 sec)&/p&
&p&Records: 0
Duplicates: 0
Warnings: 0&/p&
&p&这时再查询表结构describesales_,则正确了(结果略)&/p&
&h2&(十)向表单内插入&/h2&
&p&&b&注:这个不能用中文(可能是没设置),varchar的值可以用双引号&/b&&/p&
&p&&b&方法一:(按自定义顺序插入)&/b&&/p&
&p&输入:&/p&
&p&&b&insert intosales_rep(employes_number,
surname, first_name, commission)
values(3,'Jop','Peter',12);&/b&&/p&
&p&显示:&/p&
&p&mysql& insert into
sales_rep(employes_number, surname, first_name,commission)&/p&
&p&values(3,'Jop','Peter',12);&/p&
&p&Query OK, 1 row affected (0.04 sec)&/p&
&p&效果:&/p&
&p&插入一个值,前面4个参数分别对应values后面的4个值。后面值的对应是参数的类型。&/p&
&p&&b&方法二:(按默认顺序插入)&/b&&/p&
&p&输入:&/p&
&p&&b&insert intosales_rep
values(4,&dong&, &wang&, 20);&/b&&/p&
&p&显示:&/p&
&p&mysql& insert into sales_rep
values(4,&dong&,&wang&, 20);&/p&
&p&Query OK, 1 row affected (0.03 sec)&/p&
&p&效果:插入一个值,值的顺序是默认的(按照之前表的预设)&/p&
&p&&b&方法三:(一次插入多个)&/b&&/p&
&p&输入:&/p&
&p&&b&insert intosales_rep
values(5,&aaa&,&AAA&,1),&/b&&/p&
&p&&b&(6,&bbb&,&BB&,2),&/b&&/p&
&p&&b&(7,&ccc&,&CC&,3);&/b&&/p&
&p&显示:&/p&
&p&mysql& insert into
sales_repvalues(5,&aaa&,&AAA&,1),&/p&
-&(6,&bbb&,&BB&,2),&/p&
-&(7,&ccc&,&CC&,3);&/p&
&p&Query OK, 3 rows affected (0.15 sec)&/p&
&p&Records: 3
Duplicates: 0
Warnings: 0&/p&
&p&效果:按默认顺序插入3个值。&/p&
&p&&b&方法四:(用load data读取文本插入大量数据)&/b&&/p&
&p&输入:&/p&
&p&&b&load datalocal infile
&eee.txt& into table sales_&/b&&/p&
&p&显示:&/p&
&p&mysql& load data local infile
&eee.txt& into tablesales_&/p&
&p&Query OK, 4 rows affected, 4 warnings
(0.04 sec)&/p&
&p&Records: 4
Deleted: 0
Skipped: 0 Warnings: 4&/p&
&p&效果:&/p&
&p&将eee.txt文件内的3项读取进去&/p&
&p&&b&问题:&/b&&/p&
&p&&b&为什么会有4个warnings?并没有读取失败啊?&/b&&/p&
&p&&b&问题注:后面可能是因为这个读取问题,加入了一些值为null的项,不过也可能是因为另外一次我读取的问题&/b&&/p&
&p&注:显示(十一),删除(二十一),修改(二十二)&/p&
&h2&(十一)使用select显示&/h2&
&p&输入:&/p&
&p&&b&select * fromsales_rep where
commission&1;&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep where
commission&1;&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&9rows in set (0.00 sec)&/p&
&p&解释:&/p&
&p&①select:表示使用select语句&/p&
&p&②*:表示通配符(显示所有的)。可以用某一项替换,如surname,则只显示surname这一项;&/p&
&p&③from sales_rep:指从表名为sales_rep的这一张表读取内容;&/p&
&p&④where commission&1:指的是,读取表内commission这一个属性大于1的所有项;&/p&
&p&也可以改为:where first_name='cc' :那么就只显示first_name的值是cc的项了(注意需要加引号)(并且不区分大小写,注意,mysql几乎是不区分大小写的)&/p&
&p&⑤;:以分号为结尾。&/p&
&h2&(十二)where从句&/h2&
&p&基于(十一)&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep where
first_name!='cc' or first_name=&cc&;&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep where
first_name!='cc' or first_name=&cc&;&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&10rows in set (0.00 sec) &/p&
&p&解释:&/p&
&p&①or:前后各有一条语句&b&first_name!='cc'&/b&和&b&first_name=&cc&&/b&,&/p&
&p&②or的效果是两条语句只要有一条成立,便符合条件。由于一个内容要么是cc,要么不是cc(必然的),所以每一项都会成立(因此相当于&b&显示除了null的&/b&)。&/p&
&p&③and:也可以用and来连接,表示两条语句都符合的才行。(有一条不符合就不成立)。&/p&
&p&④多个or和and联用:支持联用。&/p&
&p&&b&or&/b&&b&的联用:&/b&mysql& select * fromsales_rep where &b&first_name='bb'&/b&or &b&first_name=&cc&&/b&or&b&first_name=&aaa&&/b&;
三者符合一个的就可以。&/p&
&p&&b&and&/b&&b&联用:&/b&由此可推,可以多个and联用。&/p&
&p&&b&也可以or和and混合使用&/b&,但为了避免理解出错,请使用括号来区分层级。&/p&
&h2&(十三)通配符%&/h2&
&p&%是一个通配符,类似*,表示0个或者多个字符。&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep where first_name
like &%c%&;&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep where
first_name like &%c%&;&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&2rows in set (0.00 sec) &/p&
&p&效果:&/p&
&p&first_name属性里有c字母的项,全部都是符合条件的。&/p&
&h2&(十四)分类&/h2&
&p&&b&排序:(正序)&/b&&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep order by
first_&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from
sales_rep order by first_&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname |
first_name | commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
NULL |&/p&
NULL |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&15rows in set (0.00 sec)&/p&
&p&效果:&/p&
&p&在first_name项,以字母顺序进行排序(会显示null项);&/p&
&p&&b&排序:(多重排序)&/b&&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep order by
surname,first_&/b&&/p&
&p&显示:&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
NULL |&/p&
NULL |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&16 rows in set (0.00 sec)&/p&
&p&效果说明:&/p&
&p&①多了一个surname作为参数。效果是,先以第一个参数所在的项为顺序进行排序显示,假如第一个一样,以第二个参数进行排序;&/p&
&p&②由此类推,可以有更多项。&/p&
&p&&b&排序:(倒序)&/b&&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep order by
first_&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep order
by first_&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
NULL |&/p&
NULL |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&16rows in set (0.00 sec)&/p&
&p&区别:&/p&
&p&在正序的命令后面加一个desc即可。&/p&
&p&&b&排序:(正序关键字)&/b&&/p&
&p&假如需要第一个参数按正序,相同的情况下,第二个参数按反序进行排列。&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep order by surname
asc, employes_&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep order
by surname asc, employes_&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
NULL |&/p&
NULL |&/p&
NULL |&/p&
NULL |&/p&
NULL |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&16rows in set (0.00 sec)&/p&
&h2&(十五)限制返回的项数LIMIT&/h2&
&p&&b&输出行数限制:&/b&&/p&
&p&输入:(在&b&排序:(正序关键字)&/b&基础上修改)&/p&
&p&select * from sales_rep order by surname
asc, employes_number desclimit 1;&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep order
by surname asc, employes_number desc limit&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
NULL |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&1row in set (0.00 sec)&/p&
&p&解释:&/p&
&p&①limit可以设置为0(虽然不显示内容,但是可以用于在大的数据库中进行测试查询);&/p&
&p&②limit后面的数字决定了返回的行数;&/p&
&p&&b&输出行数限制+偏移限制:&/b&&/p&
&p&输入:&/p&
&p&&b&select * fromsales_rep order by surname
asc, employes_number desc limit 1,2;&/b&&/p&
&p&显示:&/p&
&p&mysql&select * from sales_rep order
by surname asc, employes_number desc limit&/p&
&p&1,2;&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&|employes_number | surname | first_name
| commission |&/p&
&p&+-----------------+---------+------------+------------+&/p&
NULL |&/p&
NULL |&/p&
&p&+-----------------+---------+------------+------------+&/p&
&p&2rows in set (0.00 sec)&/p&
&p&解释:&/p&
&p&①参数1表示从开始偏移几行(即从理论应该显示的结果的第几行开始显示);&/p&
&p&②参数2表示显示几行。&/p&
&p&③1,2表示从第2行(偏移1)开始显示,显示2行&/p&
&h2&(十六)返回最大值MAX()&/h2&
&p&输入:&/p&
&p&&b&selectmax(commission) from sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select max(commission) from
sales_&/p&
&p&+-----------------+&/p&
&p&|max(commission) |&/p&
&p&+-----------------+&/p&
&p&+-----------------+&/p&
&p&1row in set (0.00 sec)&/p&
&p&效果:&/p&
&p&返回commission这一项中最大的值。(对字母也有效)&/p&
&h2&(十七)防止显示重复记录distinct&/h2&
&p&输入:&/p&
&p&&b&selectdistinct first_name from
sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select distinct first_name from
sales_&/p&
&p&+------------+&/p&
&p&|first_name |&/p&
&p&+------------+&/p&
&p&+------------+&/p&
&p&11rows in set (0.00 sec)&/p&
&p&效果:&/p&
&p&①原本都个NULL,这里只显示一个了;&/p&
&p&②原本2个AAA,这里只显示一个了;&/p&
&h2&(十八)计数count()&/h2&
&p&&b&显示有效数据的行数(不显示null):&/b&&/p&
&p&输入:&/p&
&p&&b&selectcount(first_name) from sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select count(first_name) from
sales_&/p&
&p&+-------------------+&/p&
&p&|count(first_name) |&/p&
&p&+-------------------+&/p&
&p&+-------------------+&/p&
&p&1row in set (0.00 sec)&/p&
&p&效果:&/p&
&p&①除了null都显示;&/p&
&p&&b&显示所有数据的行数(貌似除非都是null,否则就显示):&/b&&/p&
&p&输入:&/p&
&p&&b&selectcount(*) from sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select count(*) from sales_&/p&
&p&+----------+&/p&
&p&|count(*) |&/p&
&p&+----------+&/p&
&p&+----------+&/p&
&p&1row in set (0.00 sec)&/p&
&p&效果:&/p&
&p&①即使有一项是null(其他项不是),也被计算在内;&/p&
&p&&b&显示行数:(重复项算一项,使用distinct)&/b&&/p&
&p&输入:&/p&
&p&&b&selectcount(distinct first_name) from
sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select count(distinct
first_name) from sales_&/p&
&p&+----------------------------+&/p&
&p&|count(distinct first_name) |&/p&
&p&+----------------------------+&/p&
&p&+----------------------------+&/p&
&p&1row in set (0.00 sec)&/p&
&p&效果:&/p&
&p&①该项(first_name)中如果有重复的,记作一项。&/p&
&h2&(十九)平均、最小、总和&/h2&
&p&&b&平均:avg()&/b&&/p&
&p&&b&最小:min()&/b&&/p&
&p&&b&总和:sum()&/b&&/p&
&p&输入:&/p&
&p&&b&selectsum(commission) from sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select sum(commission) from
sales_&/p&
&p&+-----------------+&/p&
&p&|sum(commission) |&/p&
&p&+-----------------+&/p&
&p&+-----------------+&/p&
&p&1row in set (0.00 sec)&/p&
&p&效果:&/p&
&p&①三个方法类似,结果不同;&/p&
&p&②对字符串无效&/p&
&h2&(二十)对计算结果修改(不影响原数据)&/h2&
&p&输入:&/p&
&p&&b&selectemployes_number ,surname,
commission+100 from sales_&/b&&/p&
&p&显示:&/p&
&p&mysql&select employes_number
,surname, commission+100 from sales_&/p&
&p&+-----------------+---------+----------------+&/p&
&p&|employes_number | surname |
commission+100 |&/p&
&p&+-----------------+---------+----------------+&/p&
NULL |&/p&
NULL |&/p&
NULL |&/p&
NULL |&/p&
NULL |&/p&
&p&+-----------------+---------+----------------+&/p&
&p&16rows in set (0.00 sec)&/p&
&p&效果:&/p&
&p&①指定项显示结果 + 100,(&b&commission+100&/b&);&/p&
&p&②显示选择的项(employes_number
,surname,commission);&/p&
&p&③不影响原数据;&/p&
&h2&(二十一)删除记录&/h2&
&p&输入:&/p&
&p&&b&delete fromsales_rep where
surname=&aaa&;&/b&&/p&
&p&显示:&/p&
&p&mysql& delete from sales_rep where
surname=&aaa&;&/p&
&p&Query OK, 1 row affected (0.06 sec)&/p&
&p&效果:&/p&
&p&①删除值为null的项:delete
fromsales_rep where surname &b&&/b&&/p&
&p&②删除记录将删除所有符合要求的(所以尽量使用唯一项,例如类似id的东西);&/p&
&p&③假如输入&b&delete from sales_rep &/b&将删除&b&所有项&/b&。&/p&
&h2&(二十二)修改记录&/h2&
&p&输入:&/p&
&p&&b&updatesales_rep set commission = 20
where employes_number=1;&/b&&/p&
&p&显示:&/p&
&p&mysql& update sales_rep set
commission = 20 where employes_number=1;&/p&
&p&Query OK, 1 row affected (0.06 sec)&/p&
&p&Rows matched: 1
Changed: 1
Warnings: 0&/p&
&p&效果:&/p&
employes_number的值是1的项,其commission的值被更改为20。&/p&&br&&p&&b&更多相关内容推荐:&/b&&/p&&p&&a href=&/?target=http%3A///m/16550/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mysql常用命令行大全&i class=&icon-external&&&/i&&/a&&/p&
(一)安装
搜索:mysql-5.6.17-winx64.zip 下载安装
类型MySQL,5.6绿色版
安装参考这个博客:
①不要删除已有的内容。
②需要修改路径,路径使用自己解压缩后(文件)的…
&b&&u&人工智能很可能导致人类的永生或者灭绝,而这一切很可能在我们的有生之年发生。&/u&&/b&&br&&br&&br&上面这句话不是危言耸听,请耐心的看完本文再发表意见。这篇翻译稿翻译完一共三万五千字,我从上星期开始翻,熬了好几个夜才翻完,因为我觉得这篇东西非常有价值。&b&希望你们能够耐心读完,读完后也许你的世界观都会被改变。&br&&br&&/b&&br&&b&======================&br&内容翻译自&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&原文地址:&br&&a class=& wrap external& href=&///?target=http%3A///2015/01/artificial-intelligence-revolution-1.html& target=&_blank& rel=&nofollow noreferrer&&The AI Revolution: Road to Superintelligence&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///2015/01/artificial-intelligence-revolution-2.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The AI Revolution: Our Immortality or Extinction&i class=&icon-external&&&/i&&/a&&br&&/b&&p&&b&自日起转载请务必私信咨询,否则视为未授权转载 知乎 &a data-hash=&c948a6c96e2c& href=&///people/c948a6c96e2c& class=&member_mention& data-editable=&true& data-title=&@谢熊猫君& data-tip=&p$b$c948a6c96e2c& data-hovercard=&p$b$c948a6c96e2c&&@谢熊猫君&/a&&/b&&/p&&b&=======================&br&&br&因为知乎的字数限制,这里只能发截图,字数太多错别字难免,已经在知友帮助下修改了很多,&u&截图修改不方便,一切以文字版为准。&/u&&/b&&br&&br&&br&&b&&u&转载请转载文字版。&/u&&/b&&br&&br&&br&&br&&b&如果想要看文字版的可以移步我的知乎专栏:&br&&a href=&/xiepanda/& class=&internal&&为什么最近有很多名人,比如比尔盖茨,马斯克、霍金等,让人们警惕人工智能?&/a&&br&&br&&br&&br&&br&&br&&br&&br&&img data-rawheight=&1656& data-rawwidth=&620& src=&/f3ec0ccffe34d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/f3ec0ccffe34d_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/ce1eb6ac8d2d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/ce1eb6ac8d2d_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/5ceeaaed6a670e82b129a_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/5ceeaaed6a670e82b129a_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/1f992c3d8ebb3067838e_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/1f992c3d8ebb3067838e_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/d5dbfaf4a75a_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/d5dbfaf4a75a_r.jpg&&&img data-rawheight=&1264& data-rawwidth=&620& src=&/b94f4c1a52d17e536175_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/b94f4c1a52d17e536175_r.jpg&&&br&&img data-rawheight=&1697& data-rawwidth=&620& src=&/b7e9d9d2e94bfc13a70dac2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/b7e9d9d2e94bfc13a70dac2_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/c2aa8c49dceef0159b86fec8cb0225c1_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/c2aa8c49dceef0159b86fec8cb0225c1_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/e2e00a866d7cd8b3f72405_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/e2e00a866d7cd8b3f72405_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/655f112c06a6aabdada82aa_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/655f112c06a6aabdada82aa_r.jpg&&&br&&img data-rawheight=&1656& data-rawwidth=&620& src=&/acf5677bbf4188aaccce4f462c065583_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/acf5677bbf4188aaccce4f462c065583_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&630& src=&/193aaabb082_b.jpg& class=&origin_image zh-lightbox-thumb& width=&630& data-original=&/193aaabb082_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/cafb3bbd999_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/cafb3bbd999_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&625& src=&/bbc8ab03a5dca31f9278bf0f_b.jpg& class=&origin_image zh-lightbox-thumb& width=&625& data-original=&/bbc8ab03a5dca31f9278bf0f_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&627& src=&/1edf1ecc9bfdd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&627& data-original=&/1edf1ecc9bfdd_r.jpg&&&br&&img data-rawheight=&1744& data-rawwidth=&620& src=&/36fbc01a8_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/36fbc01a8_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/26453d04ebde16307cccc438f38b37de_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/26453d04ebde16307cccc438f38b37de_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/cddf60d0123c1cac5f97af_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/cddf60d0123c1cac5f97af_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&631& src=&/12051acb1dcad53101dc2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/12051acb1dcad53101dc2_r.jpg&&&img data-rawheight=&1676& data-rawwidth=&620& src=&/10bf51bb000e0d6cbeef54_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/10bf51bb000e0d6cbeef54_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/44bb8e27d10_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/44bb8e27d10_r.jpg&&&img data-rawheight=&1634& data-rawwidth=&620& src=&/40da_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/40da_r.jpg&&&br&&br&&img data-rawheight=&1656& data-rawwidth=&620& src=&/7d0e71d8e6a_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/7d0e71d8e6a_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/effe1c2ef43cfaf24273de8_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/effe1c2ef43cfaf24273de8_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/9238aacaccb221fcd35c780043adbbb1_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/9238aacaccb221fcd35c780043adbbb1_r.jpg&&&img data-rawheight=&1706& data-rawwidth=&624& src=&/3dffaee7b33ec7967615da_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/3dffaee7b33ec7967615da_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/fbffe2e26dee_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/fbffe2e26dee_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/471f7c0f3b4a3b90d84029_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/471f7c0f3b4a3b90d84029_r.jpg&&&img data-rawheight=&1676& data-rawwidth=&620& src=&/a530a119a1d70f00a15dd98d6e019abc_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/a530a119a1d70f00a15dd98d6e019abc_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&621& src=&/1ded12bf3dbad17cd3011f7_b.jpg& class=&origin_image zh-lightbox-thumb& width=&621& data-original=&/1ded12bf3dbad17cd3011f7_r.jpg&&&br&&img data-rawheight=&1656& data-rawwidth=&620& src=&/a94daa6c1ecc5dfbed92df_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/a94daa6c1ecc5dfbed92df_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/26d15cba480a33be65cd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/26d15cba480a33be65cd_r.jpg&&&img data-rawheight=&1656& data-rawwidth=&620& src=&/259e7508ddaca1f369461_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/259e7508ddaca1f369461_r.jpg&&&img data-rawheight=&1706& data-rawwidth=&627& src=&/81cbc177ee_b.jpg& class=&origin_image zh-lightbox-thumb& width=&627& data-original=&/81cbc177ee_r.jpg&&&img data-rawheight=&1705& data-rawwidth=&629& src=&/273316ddab888a6c7eb10_b.jpg& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/273316ddab888a6c7eb10_r.jpg&&&br&&br&&img data-rawheight=&1656& data-rawwidth=&620& src=&/ad87c6f79fb01d743f2bedbc96fd03c2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/ad87c6f79fb01d743f2bedbc96fd03c2_r.jpg&&&img data-rawheight=&725& data-rawwidth=&624& src=&/da6cc7c1b1ca_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/da6cc7c1b1ca_r.jpg&&&img data-rawheight=&1045& data-rawwidth=&634& src=&/86dfdbccdde66aa6ade3c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&634& data-original=&/86dfdbccdde66aa6ade3c_r.jpg&&&img data-rawheight=&1625& data-rawwidth=&624& src=&/803e2a7ba63b68b0a72d2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/803e2a7ba63b68b0a72d2_r.jpg&&&img data-rawheight=&1558& data-rawwidth=&624& src=&/7f9defdfcf8b7e9968f4dbd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/7f9defdfcf8b7e9968f4dbd_r.jpg&&&br&&img data-rawheight=&1697& data-rawwidth=&624& src=&/eb1c6efaacf362fd068f5eb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/eb1c6efaacf362fd068f5eb_r.jpg&&&img data-rawheight=&1633& data-rawwidth=&624& src=&/6c9f2fa5fddbcf580cd26e93c1d85d99_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/6c9f2fa5fddbcf580cd26e93c1d85d99_r.jpg&&&img data-rawheight=&1380& data-rawwidth=&624& src=&/e525b233c3bdfba94c19e_b.jpg& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/e525b233c3bdfba94c19e_r.jpg&&&img data-rawheight=&1416& data-rawwidth=&627& src=&/059d2f2063def5c35d83d3ecaec08cff_b.jpg& class=&origin_image zh-lightbox-thumb& width=&627& data-original=&/059d2f2063def5c35d83d3ecaec08cff_r.jpg&&&br&&br&&/b&======================&br&&b&&u&相关阅读:&/u&&/b&&br&&a href=&/question//answer/& class=&internal&&如何用通俗的语言来解释「费米悖论」?&/a&&br&&a href=&/question//answer/& class=&internal&&假如把一个人粉碎成原子再组合,这个人还是原来的人吗?&/a&&br&&br&&br&&br&&b&&u&相关来源:&/u&&/b&&br&&p&&strong&The most rigorous and thorough look at the dangers of AI:&br&&/strong&Nick Bostrom – &a href=&///?target=http%3A///gp/product//ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3D%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3DLBOTX2G2R72P5EUA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Superintelligence: Paths, Dangers, Strategies&i class=&icon-external&&&/i&&/a&&/p&&p&&strong&The best overall overview of the whole topic and fun to read:&br&&/strong&James Barrat – &a href=&///?target=http%3A///gp/product/B00CQYAWRY/ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3DB00CQYAWRY%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3D3SF7IUFSRCKH7C4J& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Our Final Invention&i class=&icon-external&&&/i&&/a&&/p&&p&&strong&Controversial and a lot of fun. Packed with facts and charts and mind-blowing future projections:&br&&/strong&Ray Kurzweil – &a href=&///?target=http%3A///gp/product//ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3D%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3D54Q62R5PYJBEENTP& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Singularity is Near&i class=&icon-external&&&/i&&/a&&/p&&p&&strong&Articles and Papers:&/strong&&br&J. Nils Nilsson – &a class=& wrap external& href=&///?target=http%3A///gp/product//ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3D%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3DQIJQME4U3J2KZRRY& target=&_blank& rel=&nofollow noreferrer&&The Quest for Artificial Intelligence: A History of Ideas and Achievements&i class=&icon-external&&&/i&&/a&Steven Pinker – &a href=&///?target=http%3A///gp/product//ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3D%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3DNJ47RPDRBVZA6QPU& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How the Mind Works&i class=&icon-external&&&/i&&/a&Vernor Vinge – &a href=&///?target=https%3A//www-rohan.sdsu.edu/faculty/vinge/misc/singularity.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Coming Technological Singularity: How to Survive in the Post-Human Era&i class=&icon-external&&&/i&&/a&&br&Nick Bostrom – &a class=& wrap external& href=&///?target=http%3A//www.cs.nyu.edu/faculty/davise/papers/Bostrom.pdf& target=&_blank& rel=&nofollow noreferrer&&Ethical Guidelines for A Superintelligence&i class=&icon-external&&&/i&&/a&Nick Bostrom – &a href=&///?target=http%3A///superintelligence.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How Long Before Superintelligence?&i class=&icon-external&&&/i&&/a&&br&Nick Bostrom – &a href=&///?target=http%3A///papers/survey.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Future Progress in Artificial Intelligence: A Survey of Expert Opinion&i class=&icon-external&&&/i&&/a&&br&Moshe Y. Vardi – &a href=&///?target=http%3A//cacm.acm.org/magazines/824-artificial-intelligence-past-and-future/fulltext& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Artificial Intelligence: Past and Future&i class=&icon-external&&&/i&&/a&Russ Roberts, EconTalk – &a href=&///?target=http%3A//www.econtalk.org/archives/2014/12/nick_bostrom_on.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bostrom Interview&i class=&icon-external&&&/i&&/a& and &a href=&///?target=http%3A//www.econtalk.org/archives/2014/12/bostrom_follow-.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bostrom Follow-Up&i class=&icon-external&&&/i&&/a&Stuart Armstrong and Kaj Sotala, MIRI – &a href=&///?target=https%3A//intelligence.org/files/PredictingAI.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How We’re Predicting AI—or Failing To&i class=&icon-external&&&/i&&/a&Susan Schneider – &a href=&///?target=http%3A///Susan_Schneiders_Website/Research_files/12%2520Schneider%2520Newest-Alien%2520Minds_1.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Alien Minds&i class=&icon-external&&&/i&&/a&Stuart Russell and Peter Norvig – &a href=&///?target=http%3A///wp-content/uploads/2012/05/Artificial-Intelligence-A-Modern-Approach-3rd-Edition.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Artificial Intelligence: A Modern Approach&i class=&icon-external&&&/i&&/a&Theodore Modis – &a href=&///?target=http%3A//www./articles/Kurzweil.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Singularity Myth&i class=&icon-external&&&/i&&/a&&br&Gary Marcus – &a href=&///?target=http%3A///2015/01/Hyping%2520Artificial%2520Intelligence%2C%2520Yet%2520Again& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hyping Artificial Intelligene, Yet Again&i class=&icon-external&&&/i&&/a&&br&Steven Pinker – &a href=&///?target=http%3A//pinker.wjh.harvard.edu/articles/media/_usnewsworldreport.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Could a Computer Ever Be Conscious?&i class=&icon-external&&&/i&&/a&&br&Carl Shulman – &a href=&///?target=https%3A//intelligence.org/files/BasicAIDrives.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Omohundro’s “Basic AI Drives” and Catastrophic Risks&i class=&icon-external&&&/i&&/a&&br&World Economic Forum – Global Risks 2015&br&John R. Searle – What Your Computer Can’t Know&br&Jaron Lanier – &a href=&///?target=http%3A//edge.org/conversation/one-half-a-manifesto& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&One Half a Manifesto&i class=&icon-external&&&/i&&/a&&br&Bill Joy – &a href=&///?target=http%3A///wired/archive/8.04/joy.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Why the Future Doesn’t Need Us&i class=&icon-external&&&/i&&/a&&br&Kevin Kelly – &a href=&///?target=http%3A//kk.org/thetechnium/2008/09/thinkism/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Thinkism&i class=&icon-external&&&/i&&/a&&br&Paul Allen – &a class=& wrap external& href=&///?target=http%3A///view/425733/paul-allen-the-singularity-isnt-near/& target=&_blank& rel=&nofollow noreferrer&&The Singularity Isn’t Near&i class=&icon-external&&&/i&&/a& (and &a href=&///?target=http%3A///view/425818/kurzweil-responds-dont-underestimate-the-singularity/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kurzweil’s response&i class=&icon-external&&&/i&&/a&)&br&Stephen Hawking – &a class=& wrap external& href=&///?target=http%3A///stephen-hawking/artificial-intelligence_b_5174265.html& target=&_blank& rel=&nofollow noreferrer&&Transcending Complacency on Superintelligent Machines&i class=&icon-external&&&/i&&/a&&br&Kurt Andersen – &a class=& wrap external& href=&///?target=http%3A///culture/2014/11/artificial-intelligence-singularity-theory& target=&_blank& rel=&nofollow noreferrer&&Enthusiasts and Skeptics Debate Artificial Intelligence&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//longbets.org/1/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Terms of Ray Kurzweil and Mitch Kapor’s bet about the AI timeline&i class=&icon-external&&&/i&&/a&&br&Ben Goertzel – &a href=&///?target=http%3A//goertzel.org/TenYearsToTheSingularity.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ten Years To The Singularity If We Really Really Try&i class=&icon-external&&&/i&&/a&&br&Arthur C. Clarke – &a href=&///?target=http%3A//www.arthurcclarke.net/%3Fscifi%3D3& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sir Arthur C. Clarke’s Predictions&i class=&icon-external&&&/i&&/a&&br&Hubert L. Dreyfus – &a href=&///?target=http%3A///gp/product//ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3D%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3DZHBAVUQOM6SIGYHG& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&What Computers Still Can’t Do: A Critique of Artificial Reason&i class=&icon-external&&&/i&&/a&&br&Stuart Armstrong – &a href=&///?target=http%3A///gp/product/B00IB4N4KU/ref%3Das_li_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3DcreativeASIN%3DB00IB4N4KU%26linkCode%3Das2%26tag%3Dwabuwh00-20%26linkId%3DFF3IC2DJNEHA5IAW& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Smarter Than Us: The Rise of Machine Intelligence&i class=&icon-external&&&/i&&/a&&br&Ted Greenwald – &a href=&///?target=http%3A///2012/06/mf_icons_diamandis/all/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&X Prize Founder Peter Diamandis Has His Eyes on the Future&i class=&icon-external&&&/i&&/a&&br&Kaj Sotala and Roman V. Yampolskiy – &a href=&///?target=http%3A//intelligence.org/files/ResponsesAGIRisk.pdf%2520& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Responses to Catastrophic AGI Risk: A Survey&i class=&icon-external&&&/i&&/a&&br&Jeremy Howard TED Talk – &a href=&///?target=http%3A///talks/jeremy_howard_the_wonderful_and_terrifying_implications_of_computers_that_can_learn%3Flanguage%3Den%23t-5550& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The wonderful and terrifying implications of computers that can learn&i class=&icon-external&&&/i&&/a&&/p&
人工智能很可能导致人类的永生或者灭绝,而这一切很可能在我们的有生之年发生。 上面这句话不是危言耸听,请耐心的看完本文再发表意见。这篇翻译稿翻译完一共三万五千字,我从上星期开始翻,熬了好几个夜才翻完,因为我觉得这篇东西非常有价值。希望你们能…
&img src=&/v2-c84ae6fe206e427eb8ce_b.jpg& data-rawwidth=&1623& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1623& data-original=&/v2-c84ae6fe206e427eb8ce_r.jpg&&&blockquote&这篇文章是去年写的,经过了简单修改。适合编程时间0-2年群体阅读。ps: 只收藏不点赞是不对的,,,&/blockquote&&p&我认为最重要的有三点&/p&&ul&&li&热爱&/li&&li&努力(多做项目,每天学习编程 5小时以上)&/li&&li&解决问题的能力&/li&&/ul&&p&这三点保证了其次最重要的就是&/p&&ul&&li&选好方向(深度和广度都得保证,最好是80%时间专精保证深度,20%时间来涉猎各种知识保证广度)&/li&&li&学会思考&/li&&/ul&&h2&1. 热爱&/h2&&blockquote&&strong&编程这么有趣的事,竟然还有钱赚&/strong&(by c++ 之父)&/blockquote&&p&这个几乎是最重要的,我见过的所有大牛都是都编程无比热爱。&/p&&p&我大一也迷茫过,“编程是我所喜爱的东西吗?”,我花了一年时间来确认并给了肯定的答案,现在我非常喜欢写 优雅的代码,顺便喜欢技术带给我的 能力、自信、钱。&/p&&p&然后选择方向上,最好由你的兴趣决定,follow your heart&/p&&h2&2. 努力&/h2&&blockquote&热爱和努力往往决定了你在编程的路上能走多远。&/blockquote&&img src=&/v2-ded010dd7fd6d8d4988c_b.jpg& alt=&& class=&content_image&&&p&第一点做到了,这一点应该是顺理成章的。&/p&&p&&strong&其中最重要的是,要 learn by doing。也就是做中学,多做项目&/strong&,非常重要。让你写的程序从100行到1000行,再到万行,就好比看着你创造的城市在一点点的扩大,当然要确保代码的优美,时刻思考,不然那不是城市,而是垃圾堆。&strong&每碰到一个问题,解决它并思考它都可以让你受益匪浅。&/strong&&/p&&p&&strong&还有就是看书&/strong&,仔细阅读一本经典的书(做笔记、写博客、思考、把理论付诸于实践),胜过看十本普通的书,一百本烂书。所以选书很重要。练习、思考更重要。&/p&&p&总结一下,努力就是我后面说的 基本功 和 熟练度 的积累过程,记住&strong&量变导致质变&/strong&&/p&&h2&3. 解决难题的能力&/h2&&p&这个复杂一点,是程序员的 核心竞争力,我觉得解决问题的过程无外乎三点&/p&&ol&&li&&strong&透彻理解问题是什么&/strong&&/li&&li&&strong&弄清导致问题的根本原因&/strong&&/li&&li&&strong&寻找最佳解决方案&/strong&&/li&&/ol&&p&有一种说法是面对 谷歌编程,面对 stackoverflow 编程,其实当你把这三点弄透,你就知道为啥了。你搜索之前应该弄懂前两点,看前人的经验来完成第三点。所以根本不是谷歌帮你编程,而是你在使用谷歌这个工具,最关键的还是你自己,不同人用谷歌搜索的效果是天差地别的。英文搜索质量远高于中文搜索。&/p&&p&搜索的思想和谷歌技巧&a href=&/?target=http%3A//simplyy.space/article/56c2d71f6ba384e& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SimplyY 的博客:如何用好 Google 等搜索引擎&i class=&icon-external&&&/i&&/a&&/p&&p&除了搜索的技巧,基本功、熟练度、胆量 也很重要&/p&&h3&基本功&/h3&&ul&&li&当然基本功很重要,不然你不可能真的能理解问题,比如你不会数据结构,然后面对这方面问题,肯定是一脸懵逼的。&/li&&li&说白了,当你真的懂了一个问题,问题的答案就是呼之欲出的。而透彻的懂一个问题,需要你对这个问题的方方面面有一定的了解和思考。&/li&&/ul&&h3&熟练度&/h3&&blockquote&无他,为熟能尔 (by 卖油翁)&img src=&/v2-a2eb9ecbe13cad01f5da91_b.jpg& alt=&& class=&content_image&&&/blockquote&&p&量变导致质变,当你解决了数千个问题后,谷歌了上万次,你会发现你再用谷歌,就是一目十行,眼睛跟老鹰一样,瞬间就锁定到了答案。&/p&&h3&胆量&/h3&&p&对于新手,编程学习的路途中有个胆量问题,对于绝大多数人这个问题还很严重。&/p&&ol&&li&谷歌不会,翻墙好难&/li&&li&英文好多,英语好难&/li&&li&自学好难,代码、编程书看不懂,编程好难&/li&&li&这里出 bug 了,debug 好难&/li&&li&做项目好难,我不敢写有趣的项目&/li&&/ol&&p&我还是 qq 问一下别人吧。&/p&&p&于是海量的伸手党就出现了。&/p&&p&其实说白了,就是,大家都没有解决这个问题的胆量,都不敢自己一个人去解决问题,总是在自己的安逸区里活着,虽然这是共性,但是一定要有意识的克服,不然你会一直没有进步。&/p&&blockquote&记得有人说过这样一句话,在公司上班,假如技术上的大问题来了,而你没有胆量去解决,而是总是交给别人,ok,别人就会一直进步,最后成为你的主管,你的大主管,你的大大主管,而你原地踏步,说不定还会被新来的淘汰。&/blockquote&&p&并且,没有胆量熟练度就无从谈起,做有趣的项目就无从谈起,你学的所有基本功就会持续荒废,学而不用就会怎么样?忘记!&/p&&p&所以胆量是编程入门的 基石。&/p&&h2&方向&/h2&&blockquote&深度和广度都得保证,最好是80%时间专精保证深度,20%时间来涉猎各种知识保证广度&/blockquote&&p&选择方向上,很大一部分是取决你的兴趣的,你对算法感兴趣 or 工程 or 数据 or 优美的代码,这个要慎重选择,我花了半年时间才选择的,多了解、多尝试,发现自己的兴趣点,再为之努力,潜下心来学习,挖深领域。&/p&&h2&具体怎么学&/h2&&p&谷歌搜。&/p&&img src=&/v2-97ab7d32501dbb880f7cf9_b.png& alt=&& class=&content_image&&&p&具体怎么学编程 也是一个 待解决的问题,我的经验就是看书、做项目、多思考,但是对于不同方向 具体细节是不一样的,答案知乎、论坛里很多很多,学会如何高效学习是一件很重要的事情。&/p&&h2&最后: 总结一下非常重要的东西&/h2&&ol&&li&热爱&/li&&li&努力(学会自学)&/li&&li&解决难题的能力&/li&&/ol&&ul&&li&基本功&ul&&li&编程能力:语言语法、debug 能力、写优雅的代码、数据结构、算法&/li&&li&底层知识:操作系统、计算机网络、编译原理等&/li&&li&各领域特定知识:根据你的方向来&/li&&/ul&&/li&&li&熟练度&/li&&li&胆量&/li&&li&工具(君子生非异也,善假于物也)&ul&&li&英语 非常重要&/li&&li&搜索:谷歌(学会用英文搜)&/li&&li&社区:github、stackoverflow等&/li&&li&各类英文文档:MDN、dash(osx 专属,全平台文档利器在这里&a href=&/?target=http%3A//devdocs.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&devdocs.io/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&)&/li&&/ul&&/li&&/ul&&ol&&li&成果&/li&&/ol&&ul&&li&扎实的基本功&/li&&li&多写几个有一定规模(纯代码量 3k 行以上)的有趣的项目,最好都发布在 github 上&/li&&li&等(看完十本经典编程书?)&/li&&/ul&&p&&a href=&/?target=http%3A//devdocs.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&devdocs.io/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&:&/p&&img src=&/v2-336dc6a87b5d_b.png& alt=&& class=&content_image&&&blockquote&关于大学里怎么学编程的问题和专栏,我回答了不少大学生学编程的题目。&/blockquote&1. &a href=&/p/& class=&internal&&大学生学习编程的典型问题解答 - 知乎专栏&/a&&p&2. &a href=&/p/& class=&internal&&关于“如何学习编程”的我的一些回答 - 知乎专栏&/a&&/p&
这篇文章是去年写的,经过了简单修改。适合编程时间0-2年群体阅读。ps: 只收藏不点赞是不对的,,,我认为最重要的有三点热爱努力(多做项目,每天学习编程 5小时以上)解决问题的能力这三点保证了其次最重要的就是选好方向(深度和广度都得保证,最好是80%…
&img src=&/v2-d2f7cbb3f6a4d36f30d2_b.jpg& data-rawwidth=&1617& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1617& data-original=&/v2-d2f7cbb3f6a4d36f30d2_r.jpg&&&h2&基本命令&/h2&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&&span class=&c1&&# 安装Git&/span&
$ sudo apt install git
&span class=&c1&&# 配置个人信息&/span&
$ git config --global user.name &span class=&s2&&&Your Name&&/span&
$ git config --global user.email &span class=&s2&&&&&/span&
&span class=&c1&&# 切换目录初始化&/span&
$ git init
&span class=&c1&&# 文件添加到仓库&/span&
$ git add -p &file&
&span class=&c1&&# 把文件提交到仓库&/span&
$ git commit -m &span class=&s2&&&add LICENSE&&/span&
&span class=&c1&&# 查看仓库当前状态&/span&
$ git status
&span class=&c1&&# 查看difference&/span&
$ git diff
&span class=&c1&&# 显示从最近到最远的提交日志&/span&
$ git log --pretty&span class=&o&&=&/span&oneline &span class=&c1&&# 格式化输出信息&/span&
&span class=&c1&&# 版本退回&/span&
$ git reset --hard HEAD^ &span class=&c1&&# 当前版本HEAD,上一个版本HEAD^,上上个版本HEAD^^&/span&
$ git reset --hard 130f10a &span class=&c1&&# 或HEAD~100&/span&
&span class=&c1&&# 查看命令记录&/span&
$ git reflog
&span class=&c1&&# 丢弃工作区的修改,回到最近一次git commit或git add时的状态:&/span&
$ git checkout -- README.md
&span class=&c1&&# 把暂存区的修改撤销掉(unstage)&/span&
$ git reset HEAD READER.md
&span class=&c1&&# 从版本库中删除该文件&/span&
$ git rm README.md
$ git commit -m &span class=&s2&&&remove READER.md&&/span&
&span class=&c1&&# 把误删的文件恢复到最新版本,checkout其实用版本库里的版本替换工作区的版本&/span&
$ git checkout -- README.md
&/code&&/pre&&/div&&h2&远程仓库&br&&/h2&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ ssh-keygen -t rsa -C &span class=&s2&&&&&/span&
&span class=&c1&&# 测试是否成功&/span&
&span class=&c1&&# 把一个已有的本地仓库与之关联&/span&
$ git remote add origin :Windrivder/Windrivder.git
&span class=&c1&&# 把本地库的所有内容推送到远程库上(推送master分支的内容)&/span&
$ git push -u origin master
&span class=&c1&&# 向远程库推送更新&/span&
$ git push origin master
&span class=&c1&&# 从远程库克隆&/span&
$ git clone :michaelliao/gitskills.git
&/code&&/pre&&/div&&h2&分支管理&/h2&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&&span class=&c1&&# 创建+切换dev分支&/span&
$ git checkout -b dev
&span class=&c1&&# 相当于&/span&
$ git branch dev &span class=&c1&&# 创建分支&/span&
$ git checkout dev
&span class=&c1&&# 查看当前分支,当前分支前面标有×号&/span&
$ git branch
&span class=&c1&&# 切换回master分支&/span&
$ git checkout master
&span class=&c1&&# 合并指定分支到当前分支&/span&
$ git merge dev
&span class=&c1&&# 删除dev分支&/span&
$ git branch -d dev
&span class=&c1&&# 查看分支合并情况&/span&
$ git log --graph --pretty&span class=&o&&=&/span&oneline --abbrev-commit
59bc1cb conflict fixed
&span class=&p&&|&/span&&span class=&se&&\&/span&
&span class=&p&&|&/span& * 75a857c AND simple
* &span class=&p&&|&/span& 400b400 &span class=&p&&&&/span& simple
&span class=&p&&|&/span&/
* fec145a branch &span class=&nb&&test&/span&
&span class=&c1&&# 删除feature1分支&/span&
$ git branch -d feature1
&span class=&c1&&# 创建并切换dev分支&/span&
$ git checkout -b dev
&span class=&c1&&# 修改readme.txt文件,并提交一个新的commit&/span&
$ git add readme.txt
$ git commit -m &span class=&s2&&&add merge&&/span&
&span class=&c1&&# 切换回master&/span&
$ git checkout master
&span class=&c1&&# 合并dev分支,请注意--no-ff参数,表示禁用Fast forward&/span&
$ git merge --no-ff -m &span class=&s2&&&merge with no-ff&&/span& dev
&span class=&c1&&# 看看分支历史&/span&
$ git log --graph --pretty&span class=&o&&=&/span&oneline --abbrev-commit
7825a50 merge with no-ff
&span class=&p&&|&/span&&span class=&se&&\&/span&
&span class=&p&&|&/span& * &span class=&m&&6224937&/span& add merge
&span class=&p&&|&/span&/
59bc1cb conflict fixed
&span class=&c1&&# 如果需要临时修复Bug,可以把当前工作现场“储藏”起来,等Bug修复后恢复现场后继续工作&/span&
$ git stash
&span class=&c1&&# 此时查看工作区是干净&/span&
&span class=&c1&&# 切换到需要修复Bug的分支,创建临时分支来修复&/span&
$ git checkout master
$ git checkout -b issue-101
&span class=&c1&&# 修复完成后切换到master分支,完成合并,删除临时分支&/span&
$ git checkout master
$ git merge --no-ff -m &span class=&s2&&&merged bug fix 101&&/span& issue-101
$ git branch -d issue-101
&span class=&c1&&# Bug修复后,切换回dev分支继续干活&/span&
$ git checkout dev
&span class=&c1&&# 查看工作现场列表&/span&
$ git stash list
&span class=&c1&&# 恢复工作现场&/span&
$ git stash pop &span class=&c1&&# 恢复的同时把stash内容也删了&/span&
$ git stash apply &span class=&c1&&# 恢复,不删除stash的内容,使用git stash drop&/span&
&span class=&c1&&# 再次查看工作现场列表,干净&/span&
$ git stash list
&span class=&c1&&# 可以多次stash,恢复时指定恢复&/span&
$ git stash apply stash@&span class=&o&&{&/span&0&span class=&o&&}&/span&
&span class=&c1&&# 强行删除一个没有合并过的分支&/span&
$ git branch -D &name&
&span class=&c1&&# 要查看远程库的信息&/span&
$ git remote
$ git remote -v
&span class=&c1&&# 推送其他分支&/span&
$ git push origin dev
&span class=&c1&&# 从远程库clone,默认情况只能看到master分支,需要在dev分支,必须创建远程origin的dev分支到本地&/span&
$ git checkout -b dev origin/dev
$ git checkout -b branch-name origin/branch-name
$ git branch --set-upstream branch-name origin/branch-name &span class=&c1&&# 关联&/span&
&span class=&c1&&# 向远程库推送dev有冲突&/span&
$ git pull &span class=&c1&&# 抓取到本地合并解决冲突,再向远程推送&/span&
$ git push origin dev
&/code&&/pre&&/div&&h2&标签管理&br&&/h2&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&&span class=&c1&&# 切换到需要打标签的分支&/span&
$ git branch
$ git checkout master
&span class=&c1&&# 创建标签&/span&
$ git tag v1.0
&span class=&c1&&# 查看所有标签&/span&
&span class=&c1&&# 给历史提高的commit id打标签&/span&
$ git log --pretty&span class=&o&&=&/span&oneline --abbrev-commit &span class=&c1&&# 查看commit id&/span&
$ git tag v0.9 6224937
&span class=&c1&&# 查看标签信息&/span&
$ git show v0.9
&span class=&c1&&# 创建带有说明的标签&/span&
$ git tag -a v0.1 -m &span class=&s2&&&version 0.1 released&&/span& 3628164
&span class=&c1&&# 用PGP签名标签&/span&
$ git tag -s &tagname& -m &span class=&s2&&&blablabla...&&/span&
&span class=&c1&&# 推送某个标签到远程&/span&
$ git push origin v1.0
&span class=&c1&&# 一次性推送全部尚未推送到远程的本地标签&/span&
$ git push origin --tags
&span class=&c1&&# 删除远程标签&/span&
$ git tag -d v0.9 &span class=&c1&&# 删除本地&/span&
$ git push origin :refs/tags/v0.9 &span class=&c1&&# 删除远程&/span&
&/code&&/pre&&/div&&h2&自定义 Git&/h2&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&&span class=&c1&&# 显示颜色,会让命令输出看起来更醒目&/span&
$ git config --global color.ui &span class=&nb&&true&/span&
&span class=&c1&&# 忽略某些文件时,需要编写.gitignore,然后将.gitignore放到版本库中&/span&
&span class=&c1&&# st就表示status&/span&
$ git config --global alias.st status
&span class=&c1&&# 配置一个unstage别名&/span&
$ git config --global alias.unstage &span class=&s1&&'reset HEAD'&/span&
$ git unstage test.py &span class=&c1&&# 等价于&/span&
$ git reset HEAD test.py
&span class=&c1&&# 显示最后一次提交信息&/span&
$ git config --global alias.last &span class=&s1&&'log -1'&/span&
&span class=&c1&&# log&/span&
git config --global alias.lg &span class=&s2&&&log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)&%an&%Creset' --abbrev-commit&&/span&
&span class=&c1&&# 每个仓库的配置文件放在.git/config&/span&
&span class=&c1&&# 当前用户的配置文件放在用户主目录下的一个隐藏文件.gitconfig中&/span&
&/code&&/pre&&/div&&h2&搭建 Git 服务器&br&&/h2&&p&1. 安装 git:&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ sudo apt-get install git
&/code&&/pre&&/div&&p&2. 创建一个 git 用户,用来运行 git 服务:&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ sudo adduser git
&/code&&/pre&&/div&&p&3. 创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,一行一个&/p&&p&4. 初始化 Git 仓库:&/p&&p&# 选定一个目录作为 Git 仓库,假定是 /srv/sample.git,在 /srv 目录下输入命令&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ sudo git init --bare sample.git
&span class=&c1&&# 把 owner 改为 git&/span&
$ sudo chown -R git:git sample.git
&/code&&/pre&&/div&&p&5. 禁用 shell 登录:&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&&span class=&c1&&# 编辑/etc/passwd文件&/span&
git:x::,,,:/home/git:/bin/bash &span class=&c1&&# 修改成下面的内容&/span&
git:x::,,,:/home/git:/usr/bin/git-shell
&/code&&/pre&&/div&&p&6. 克隆远程仓库,在各自的电脑上运行:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ git clone git@server:/srv/sample.git
&/code&&/pre&&/div&&h2&参考&/h2&&p&&a href=&/?target=http%3A///wiki/bb000& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Git教程&i class=&icon-external&&&/i&&/a& --& 廖老师&a href=&/people/c32ad3f421f57eaaa5bde& data-hash=&c32ad3f421f57eaaa5bde& class=&member_mention& data-title=&@廖雪峰& data-hovercard=&p$b$c32ad3f421f57eaaa5bde&&@廖雪峰&/a&写的 Git 教程,墙裂推荐!!! &/p&
基本命令# 安装Git
$ sudo apt install git
# 配置个人信息
$ git config --global user.name "Your Name"
$ git config --global user.email ""
# 切换目录初始化
$ git init
# 文件添加到仓库
$ git add -p &file&
# 把文件提交到仓…
&p&【编者按】起初我是在2010年5月为Fuel Your Coding网站写的这篇文章。然后这个网站现在已经不存在了,为了让爱好编程的人们能够继续受益,所以在这里重新发表这篇文章。我考虑过是否要按照现如今的情况来对这篇文章进行修改,但是我认为它已经足够经得住检验了。只有少许的部分可能不尽人意。尽情的欣赏这篇文章吧。&/p&&p&正如每个人都知道的那样,写更多的代码是提高编程能力最显著方法。但是我所确信的另外一种可以提高编程能力的方法是与写代码完全相反的。我将要尽可能清楚的陈述这种方法。&/p&&p&只有大量的阅读别人的代码才能显著的提高你自己的编程能力。&/p&&p&不论你是否相信,但是我觉得你可以试一下,你会觉得自己所花的时间是完全值得的。&/p&&p&在这篇文章里我将会教你如何选择阅读的内容以及教会你如何阅读。如果你已经知道如何阅读代码,或许你已经发现通过你的努力可以获取更多。如果你还不知道如何很好的阅读代码,那么请一定继续往下看。&/p&&p&&b&读什么?&/b&&/p&&p&我们很难决定阅读什么样的代码,也很难给别人建议。我不会简单的给你指出你应该读什么样的代码,因为它最终还是取决于你喜欢读什么。我会给你提供一些参考,使得你能够有所侧重的去选择阅读什么代码。&/p&&ul&&li& 阅读你信赖的代码&/li&&/ul&&br&&p&你已经在使用的插件或者库会是很好的选择。&/p&&p&一个你十分喜欢的WordPress plugin&/p&&p&一个你已经发现很有用处的Ruby gem&/p&&p&一个你会经常回顾的jQuery plugin&/p&&p&这些都是极其不错的可以作为候选的地方。如果你已经对其公开的APIs十分的熟悉,那么理解其内在的工作原理已经不再是一件困难的事情。另外,作为一个代码的使用者,你有机会为其添加文件,实现一个新的功能,或者对原来的项目提出修改的建议。&/p&&ul&&li& 阅读那些能够让你眼前一亮的代码&br&&/li&&/ul&&br&&p&我还记得第一次看 280 Slides 的时候就心想这些代码让我眼前一亮。随后我迅速发现这个网站的源代码是Cappuccino的开源项目。当这一信息在我的大脑深处徘徊的时候我猛然想起另外一个让我印象深刻的软件也是运行在Cappuccino上的,这时候我知道了有一个我可以学习到很多东西的项目了。有什么是让你最近印象深刻的?它是一个开源项目吗?如果是的话,那么它将会是一个值得你去读的代码,因为这些代码会像最终的应用一样吸引你。&/p&&ul&&li& 读那些你认为是大牛所写的代码&/li&&/ul&&br&&img src=&/v2-b0e7cf40ccf223e2416c6_b.png& data-rawwidth=&438& data-rawheight=&88& class=&origin_image zh-lightbox-thumb& width=&438& data-original=&/v2-b0e7cf40ccf223e2416c6_r.png&&&p&如果你已经用开源项目的软件编程了一段时间,&/p&&p&那么肯定有发现其他能够让你印象深刻的程序员。&/p&&p&我的脑海中有那么几个能够写出让我十分羡慕的代码的程序员。&/p&&p&如果你的印象里还没有这样的开发者,只要你愿意的话是很容易找到一个的。他/她或许在过去已经写了属于以下2个类型中的代码。(一种是你所依赖的,另一种是令你印象深刻的)&/p&&ul&&li& 读那些你可以意会的代码&br&&/li&&/ul&&br&&p&如果你勇于冒险的话,那么有可能会考虑深入研究类似Ruby on Rails, Drupal, 或者 jQuery的大项目。我建议你现在最好不要接触类似的项目,除非你在阅读代码方面已经很有经验了。&/p&&p&大的项目有很多可以移动的模块,你可能会纠结于很多概念而无法及时学到很多知识。疑惑会令人泄气,在阅读大的项目的过程中更加容易产生疑惑和泄气的负面情绪。从一个小的项目入手的好处在于整个程序的完整逻辑可以在脑海中浮现。剩下的就是去探索其细节并从中学习。&/p&&p&&b&如何阅读代码?&/b&&/p&&p&既然你已经选择了一些要读的代码,那么什么是最好的阅读方式呢?我在过去阅读了许多的代码,因此可以给你推荐一些可以最大化投资回报率的方法。&/p&&p&下面请看这张大图&/p&&img src=&/v2-e8c85ccdb2e2_b.png& data-rawwidth=&230& data-rawheight=&510& class=&content_image& width=&230&&&p&假设你已经在阅读代码方面达到了一个突出的水平了。如果没有,那么建议你去查看项目的网站、使用说明书、文件或是任何除了代码外帮助你理解的内容。&/p&&p&那么,我首先建议的是使自己的脑海里有这个项目清晰的框架。其工作量是基于你所选取的代码库的大小。但是只要是大于一个文件的项目都会消耗一定的时间。&/p&&p&首先对文件的结构加以注释。如果一个编者的文件具有像TextMate一样的可视化视图结构将会极大的帮助这一步骤的完成。譬如这里有一个Twitter Ruby gem的完美概要。&/p&&p&这一步骤的目标是为了让你更加的熟悉代码。找出那些文件包含/需要/加载其他的文件,以及代码主题的位置,是否用过命名空间,或是其他诸如此类的东西。如果你已经了解了大的架构,那么你就可以深入去关注其细节了。&/p&&ul&&li& 记录下你所发现的东西&br&&/li&&/ul&&br&&p&阅读代码应该是一个主动的行为。我鼓励你根据自己的想法增加一些评论,当你理解程序的流程的时候记录下你的假设以及自己的结论。那么刚开始的时候你的评论可能是这样的:&/p&&img src=&/v2-b4bfb8887ebb9c1f723ba25f5bb542fb_b.jpg& data-rawwidth=&1270& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&1270& data-original=&/v2-b4bfb8887ebb9c1f723ba25f5bb542fb_r.jpg&&&p&当你的理解不断的进步的时候你会减少那些碎片化的评论并且能够增加一些更加有意义或权威的评论,这些评论或许能够对完善原来的项目有所帮助。&/p&&ul&&li& 使用测试,Luke&br&&/li&&/ul&&br&&p&但愿你选择的项目有测试的套件,如果没有的话你可以完全跳过这一部分(或者重新选择一个有的项目)。&/p&&p&测试是一个很好的地方能够让你随时阅读别人的代码因为它们记录了这些代码需要实现的功能。一些测试能够提供很多的信息,但是不论写的有多好,你在测试里可以比在执行里更好的发现作者的意图。在你阅读代码的时候尽量让其测试的套件成功运行。这会让你的开发环境得到合理的配置,也会让你更加自信的去做出一些改变。&/p&&ul&&li& 执行,调整,再执行&br&&/li&&/ul&&br&&p&谁说看代码的时候就不能执行代码?只有将一切东西拆解再将其恢复原样才能真正的理解其本质。还记得那些你所经历的测试吗?在失败后,增加一些代码,或者在不破坏的前提下改变其执行的情况。尝试增加一些你觉得很酷的小属性,或者在项目范围内增加一些记录,这样你就可以在编写代码的不同阶段打印输出。这些还仅仅是阅读代码吗?&/p&&p&这是毫无疑问的,但是从这个角度看更像是一段奇妙的经历而不是阅读一篇神秘的小说。这是一件非常好的事情。&/p&&ul&&li& 冲洗和重复&br&&/li&&/ul&&br&&p&一旦你阅读完一个代码库,立即选取另外一个并重复之前的步骤。你只有阅读足够多的代码,才能提高阅读新的代码的效率。你会发现你的投入产出比在不断的上升并且发现这是一个十分有趣的学习过程。&/p&&ul&&li&从哪里开始?&br&&/li&&/ul&&br&&p&在我的代码阅读资源中,GitHub是对我影响最大的。在这个网站里,你能够很快找到新项目以及其作者,如果你不使用这个网站那么对你来说是一个很大的损失。我建议先从GitHub上开始直到你能够找到一个可以学习的项目。记住下面这段话并开始阅读吧。&/p&&p&你是怎么看的?你是把阅读代码当成一种学习的手段吗?你会给别人推荐哪些项目?最近是否阅读过很好的代码?&/p&&p&因为The Wayback Machine的缘故你可以阅读到原来的文章。&/p&&p&作者介绍:Jerod Santo是Changelog Media的主编和合伙人。他联合主编了旗舰博客—The Changelog,他领导了所有使得Changelog变得更加酷炫的项目。他也经营着自己的订制软件公司Object Lateral。&/p&&br&&p&本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。&/p&&p&文章原标题《One Sure-Fire Way to Improve Your Coding》,作者:Jerod Santo&/p&&h3&更多相关文章&/h3&&h1&&a href=&/p/& class=&internal&&不想被选择推荐看下这篇:程序员生存定律1&/a&&/h1&&h1&&a href=&/p/& class=&internal&&程序员生存定律2-打造属于自己的稀缺性&/a&&/h1&
【编者按】起初我是在2010年5月为Fuel Your Coding网站写的这篇文章。然后这个网站现在已经不存在了,为了让爱好编程的人们能够继续受益,所以在这里重新发表这篇文章。我考虑过是否要按照现如今的情况来对这篇文章进行修改,但是我认为它已经足够经得住检…
&p&&b&1. “博”与“专”上的迷失&/b&&/p&&p&假设说一个人的学习已经聚焦,并且学习的内容和自己实际参与的项目也相吻合,那么是不是就没有问题了?很不幸,答案仍然是否定的,在任何一个子领域里,仍然需要进一步去考虑“博”与“专”的均衡。&/p&&p&对于软件开发而言,设计是再常见不过,再简单不过的一个词了。可如果把视角拔高一点就会发现,单以设计而论仍然是一个不可穷尽的领域,我们可以快速扫描一下和设计相关的部分概念:&/p&&ul&&li&&p&面向对象分析与设计&/p&&/li&&li&&p&结构化分析与设计&/p&&/li&&li&&p&模型驱动开发&/p&&/li&&li&&p&契约式编程&/p&&/li&&li&&p&面向方面的开发&/p&&/li&&li&&p&基于组件的开发&/p&&/li&&li&&p&元编程&/p&&/li&&/ul&&p&有些时候方法论也会和设计牵扯到一起:&/p&&ul&&li&&p&测试驱动开发&/p&&/li&&li&&p&敏捷软件开发&/p&&/li&&/ul&&p&如果感觉这个还不够多,那可以去Wiki上查编程的范式(paradigms )这个条目,那里列了47种范式,每个都和设计多少有点关系。&/p&&p&上述这些还只是说了设计,如果横向展开,那么在特定领域中必然还会牵涉到框架的选用、辅助工具的使用等等。这也就意味着,从博的角度来看,即使是在设计这样一个看似狭小的领域中仍然是没边界的。&/p&&p&与此同时,把一个API研究的再透,也是低值人群,因为这种深入理解和单纯会用某个API相比,从创造价值的角度看,差别不大。&/p&&p&这也就意味着对于大多数软件开发人员而言,要去寻找广博与精专间的均衡点:既不能闭上眼睛,也不能就用显微镜来看世界。而这一均衡点的价值则可用反木桶原理来说明:木桶原理说的是桶里的水是由最短的一块板决定的,但考量人的价值时却是适用于反木桶原理,即人的价值往往由最长的一块板决定。&/p&&p&考虑博和专的问题不能离开产品开发进行考虑,前面曾经提到过,产品开发往往和公司的现金流绑定的更紧,能为现金流贡献力量的技术才是有价值的技术。而产品开发本身事实上对博和专的程度提出了最基本的要求,这种要求往往具有迭代的特质。为了形象的说明这一点,这里举一个通用的例子来进行一点说明:&/p&&p&在第一次跌代里,往往需要达到两个最基本的目标。第一个目标是可以为产品贡献自己力量,但代码质量普通。这个目标如果达不到,一个人会失去自己的存在价值。&/p&&p&这时候最少需要了解某种语言(比如:C++)、某个平台(比如:Windows)、某个IDE(比如:Visual Studio)和某些业务相关的知识(比如:打印体系)。这个范围可以尽可能圈的小点,但用到的则要学透。比如:不管接触到那个框架,都要去了解它的内存机制、线程机制、异常处理组件构建和国际化处理这些全局性的机制,而不能只是了解某个接口怎么用。&/p&&p&这并非是很高的要求,没有这些就变成了“靠运气编程”,写完程序后还要祈祷他能跑起来。了解这些之后就可以负担起部分开发工作,否则的话只能做旁观者,没法参与到实际工作中来。&/p&&p&第二个目标是把事情做好,并能负担些层次更高的工作。这时候要比较深入的了解面向对象、结构化方法、设计模式、理解设计原则,并能把它们用好。至少要能判定,这个程序写的好,那个程序写的不好,同时面对需求能把工作进行下去。&/p&&p&前两个目标是基础,一般来讲学校中基础打的越好,这个阶段越短。达成这两个基本目标之后就可以结合情境来做进一步的选择,可以认为这是博与专选择上的第二次迭代。当然这时候也要谨记不要和实践分开。&/p&&p&完成上述两个层次后,可以有两个方向可供选择。&/p&&ul&&li&&p&可以进一步考虑专的问题,比如在特定领域里把知识深化下去。做驱动就要理解操作系统的核心机制,做打印的就要了解页面描述语言等,但这个时候要适当警惕边际效应。&/p&&/li&&/ul&&p&边际效应是说,你让一亩地从亩产500斤增加到1000斤可能只需要投入100块;让亩产从1000增加到1500可能就需要200块;让亩产从1500增加到2000则需要400块了。&/p&&p&一个典型的例子是对C++的学习,C++是公认的复杂,如果想做C++的律师,那么估计搞个10年可能够资格了,但问题是把时间都投在这个上,投入产出比可能不好。而停在那里合适则是个尺度问题,大致来讲是可以靠时间弥补的细节问题,并不适合专到最底层。比如对于100万行的程序,预先花时间去了解每一处细节,就有点过了。&/p&&ul&&li&&p&可以把博再推进一步,比如:熟悉专门领域的专业知识、熟悉多种既存框架的特性、熟悉提高用户体验的关键点。熟悉多种既存框架的特性的具体含义是:&/p&&/li&&/ul&&p&设计某一种解决方案时,首先要考虑的就是是自己开发还是使用现有的模块。一旦决定使用现有的模块(包,框架等),那就要进一步考虑究竟用那个。&/p&&p&做这类工作时,如果没有一定广博的知识,做选择的时候就会特别的艰难。&/p&&p&假使说现在公司内部要导入一套项目管理系统,那么做决定的负责人必须至少考虑所有下面这些事情:&/p&&p&自己从头造,还是用现成的做二次开发?&/p&&p&用现成的,是用开源产品,微软的还是其他公司的?&/p&&p&用微软的话,是用MS Project还是基于SharePoint,还是混合?考虑License费用的话真的划算么?&/p&&p&用开源产品,有这么多选项究竟导入那一个?&/p&&p&如果自己从头造,那么是基于微软的技术,还是基于LAMP这样的技术?&/p&&p&使用什么框架?&/p&&p&如果要做,用什么语言? &/p&&p&一个人很难精通上面所有的领域,但当做选择时,完全没有概念也是灾难性的。&/p&&p&此外,考虑博与专平衡点时似乎有一种特例,钻研特定算法的人,从一开始就只往专的方向发展,并不会考虑其他。比如:钻研TTS的人,可能几十年如一日只要专注于TTS就完了。&/p&&p&至于具体选择那个方向,则要根据自身情形来定。总的原则是要以当下工作为根基,以实用为目的甄选各种知识,并追求平衡点。&/p&&p&大致上讲,期望做技术专家的更适合前一个方向,而期望做技术管理的则更适合后一类方向。&/p&}

我要回帖

更多关于 逆矩阵 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信