精华内容
下载资源
问答
  • 行业分类-物理装置-一种基于生活小区内闲置物品互换分享的方法.zip
  • mysql面试题

    千次阅读 2019-09-23 12:28:36
    左连接和右连接可以互换,MySQL目前还不支持全外连接。 写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写) MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、 ...

    最全MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别。

    答:

    1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。

    2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。

    数据表类型有哪些

           答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。
           MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。
           InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。

    MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

    a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
    b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
    c. mysql库主从读写分离。
    d. 找规律分表,减少单表中的数据量提高查询速度。
    e。添加缓存机制,比如memcached,apc等。
    f. 不经常改动的页面,生成静态页面。
    g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

    对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?

    答:a. 确认服务器是否能支撑当前访问量。
    b. 优化数据库访问。
    c. 禁止外部访问链接(盗链), 比如图片盗链。
    d. 控制文件下载。
    e. 使用不同主机分流。
    f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

    如何进行SQL优化?

    答:
    (1)选择正确的存储引擎
    以 MySQL为例,包括有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。
    MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

    InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。但是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

     

    (2)优化字段的数据类型

    记住一个原则,越小的列会越快。如果一个表只会有几列罢了(比如说字典表,配置表),那么,我们就没有理由使用 INT 来做主键,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 会更经济一些。如果你不需要记录时间,使用 DATE 要比 DATETIME 好得多。当然,你也需要留够足够的扩展空间。

     

    (3)为搜索字段添加索引

    索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索,那么最好是为其建立索引,除非你要搜索的字段是大的文本字段,那应该建立全文索引。

     

    (4)避免使用Select *从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。即使你要查询数据表的所有字段,也尽量不要用*通配符,善用内置提供的字段排除定义也许能给带来更多的便利。

     

    (5)使用 ENUM 而不是 VARCHAR

    ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。例如,性别、民族、部门和状态之类的这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。

     

    (6)尽可能的使用 NOT NULL

    除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。 NULL其实需要额外的空间,并且,在你进行比较的时候,你的程序会更复杂。 当然,这里并不是说你就不能使用NULL了,现实情况是很复杂的,依然会有些情况下,你需要使用NULL值。

     

    (7)固定长度的表会更快

    如果表中的所有字段都是“固定长度”的,整个表会被认为是 “static” 或 “fixed-length”。 例如,表中没有如下类型的字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个表就不是“固定长度静态表”了,这样,MySQL 引擎会用另一种方法来处理。

     

    固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。而如果字段不是定长的,那么,每一次要找下一条的话,需要程序找到主键。

     

    并且,固定长度的表也更容易被缓存和重建。不过,唯一的副作用是,固定长度的字段会浪费一些空间,因为定长的字段无论你用不用,他都是要分配那么多的空间。

     

    如何设计一个高并发的系统

    ① 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化

    ② 使用缓存,尽量减少数据库 IO

    ③ 分布式数据库、分布式缓存

    ④ 服务器的负载均衡

    锁的优化策略

    ① 读写分离

    ② 分段加锁

    ③ 减少锁持有的时间

    ④ 多个线程尽量以相同的顺序去获取资源

    等等,这些都不是绝对原则,都要根据情况,比如不能将锁的粒度过于细化,不然可能会出现线程的加锁和释放次数过多,反而效率不如一次加一把大锁。这部分跟面试官谈了很久

    索引的底层实现原理和优化

    B+树,经过优化的B+树

    主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此InnoDB建议为大部分表使用默认自增的主键作为主索引。

     什么情况下设置了索引但无法使用 

    ① 以“%”开头的LIKE语句,模糊匹配

    ② OR语句前后没有同时使用索引

    ③ 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)

    SQL语句的优化 

    order by要怎么处理

    alter尽量将多次合并为一次

    insert和delete也需要合并

    等等

    实践中如何优化MySQL

    我当时是按以下四条依次回答的,他们四条从效果上第一条影响最大,后面越来越小。

    ① SQL语句及索引的优化

    ② 数据库表结构的优化

    ③ 系统配置的优化

    ④ 硬件的优化

    sql注入的主要特点

    变种极多,攻击简单,危害极大

    sql注入的主要危害

    未经授权操作数据库的数据

    恶意纂改网页

    私自添加系统账号或者是数据库使用者账号

    网页挂木马

    优化数据库的方法

    1.  选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例如’省份’、’性别’最好适用ENUM
    2.  使用连接(JOIN)来代替子查询
    3.  适用联合(UNION)来代替手动创建的临时表
    4.  事务处理
    5.  锁定表、优化事务处理
    6.  适用外键,优化锁定表
    7.  建立索引
    8.  优化查询语句

     

    简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

    普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。

     

    普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。

     

    主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。

    索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这就是联合索引。

     

    索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

    数据库中的事务是什么?

    事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、一致性、持久性。

    了解XSS攻击吗?如何防止?

    XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。
    使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。

    SQL注入漏洞产生的原因?如何防止?

    SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

    防止SQL注入的方式:
    开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置

    执行sql语句时使用addslashes进行sql语句转换

    Sql语句书写尽量不要省略双引号和单引号。

    过滤掉sql语句中的一些关键词:update、insert、delete、select、 * 。

    提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。

    Php配置文件中设置register_globals为off,关闭全局变量注册

    控制错误信息,不要在浏览器上输出错误信息,将错误信息写到日志文件中。

     

     

    为表中得字段选择合适得数据类型(物理设计)

     字段类型优先级: 整形>date,time>enum,char>varchar>blob,text
     优先考虑数字类型,其次是日期或者二进制类型,最后是字符串类型,同级别得数据类型,应该优先选择占用空间小的数据类型

    存储时期

    Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒,占用8个字节得存储空间,datatime类型与时区无关
    Timestamp:以时间戳格式存储,占用4个字节,范围小1970-1-1到2038-1-19,显示依赖于所指定得时区,默认在第一个列行的数据修改时可以自动得修改timestamp列得值
    Date:(生日)占用得字节数比使用字符串.datatime.int储存要少,使用date只需要3个字节,存储日期月份,还可以利用日期时间函数进行日期间得计算
    Time:存储时间部分得数据
    注意:不要使用字符串类型来存储日期时间数据(通常比字符串占用得储存空间小,在进行查找过滤可以利用日期得函数)
    使用int存储日期时间不如使用timestamp类型

     

    对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:

    a)、索引的目的是什么?
    快速访问数据表中的特定信息,提高检索速度

    创建唯一性索引,保证数据库表中每一行数据的唯一性。

    加速表和表之间的连接

    使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

    b)、索引对数据库系统的负面影响是什么?
    负面影响:
    创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。

    c)、为数据表建立索引的原则有哪些?
    在最频繁使用的、用以缩小查询范围的字段上建立索引。

    在频繁使用的、需要排序的字段上建立索引

    d)、 什么情况下不宜建立索引?
    对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。

    对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等

     简述在MySQL数据库中MyISAM和InnoDB的区别

    区别于其他数据库的最重要的特点就是其插件式的表存储引擎。切记:存储引擎是基于表的,而不是数据库。

    InnoDB与MyISAM的区别:

    InnoDB存储引擎: 主要面向OLTP(Online Transaction Processing,在线事务处理)方面的应用,是第一个完整支持ACID事务的存储引擎(BDB第一个支持事务的存储引擎,已经停止开发)。

    特点:

    · 行锁设计、支持外键,支持事务,支持并发,锁粒度是支持mvcc得行级锁;

     MyISAM存储引擎: 是MySQL官方提供的存储引擎,主要面向OLAP(Online Analytical Processing,在线分析处理)方面的应用。
    特点:

    不支持事务,锁粒度是支持并发插入得表级锁,支持表所和全文索引。操作速度快,不能读写操作太频繁;

     解释MySQL外连接、内连接与自连接的区别

    先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。

    内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。
    外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中
    的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

    左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。右外连接,也称右连接,右表为主表,右表中的所有记录都会出现在结果集中。左连接和右连接可以互换,MySQL目前还不支持全外连接。

    写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)

    MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、
    Archive、CSV、Blackhole、MaxDB 等等十几个引擎

    Myql中的事务回滚机制概述

    事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。

    要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚

     

    SQL语言包括哪几部分?每部分都有哪些操作关键字?

    答:SQL语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。

    数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等

    数据操纵:Select ,insert,update,delete,

    数据控制:grant,revoke

    数据查询:select

     

    完整性约束包括哪些?


    答:数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。

    分为以下四类:

    1) 实体完整性:规定表的每一行在表中是惟一的实体。

    2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

    3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

    4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

    与表有关的约束:包括列约束(NOT NULL(非空约束))和表约束(PRIMARY KEY、foreign key、check、UNIQUE) 。

     

    什么是事务?及其特性?


    答:事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。

    事务特性:

    (1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。

    (2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态

    (3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,

    (4) 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

    或者这样理解:

    事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。

     

    什么是锁?


      答:数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

    加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

    基本锁类型:锁包括行级锁和表级锁

     

    什么叫视图?游标是什么?


    答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

      游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

     

    什么是存储过程?用什么来调用?


    答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。

     

    索引的作用?和它的优点缺点是什么?


    答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

     

    如何通俗地理解三个范式?  


    答:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;

    第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;  

    第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。

    范式化设计优缺点:

    优点:

    可以尽量得减少数据冗余,使得更新快,体积小

    缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化

    反范式化:

    优点:可以减少表得关联,可以更好得进行索引优化

    缺点:数据冗余以及数据异常,数据得修改需要更多的成本

     

    什么是基本表?什么是视图?


    答:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。  视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表  

     

    试述视图的优点?


    答:(1) 视图能够简化用户的操作  (2) 视图使用户能以多种角度看待同一数据; (3) 视图为数据库提供了一定程度的逻辑独立性; (4) 视图能够对机密数据提供安全保护。

     

     NULL是什么意思


    答:NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。

    使用IS  NULL来进行NULL判断

     

    主键、外键和索引的区别?


    主键、外键和索引的区别

    定义:

     主键–唯一标识一条记录,不能有重复的,不允许为空

     外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值

     索引–该字段没有重复值,但可以有一个空值

    作用:

     主键–用来保证数据完整性

     外键–用来和其他表建立联系用的

     索引–是提高查询排序的速度

    个数:

     主键–主键只能有一个

     外键–一个表可以有多个外键

     索引–一个表可以有多个唯一索引

     

    你可以用什么来确保表格里的字段只接受特定范围里的值?


    答:Check限制,它在数据库表格里被定义,用来限制输入该列的值。

    触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。

     

    说说对SQL语句优化有哪些方法?(选择几条)


    (1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。

    (2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。

    (3) 避免在索引列上使用计算

    (4)避免在索引列上使用IS NULL和IS NOT NULL

    (5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

    (6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

    (7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

     

    SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?


    答:子查询:嵌套在其他查询中的查询称之。

    子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。

    所有的子查询可以分为两类,即相关子查询和非相关子查询

    (1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。

    (2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。

    故非相关子查询比相关子查询效率高

     

    char和varchar的区别?


    答:是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:  

    char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).  

    varchar得适用场景:

    字符串列得最大长度比平均长度大很多 2.字符串很少被更新,容易产生存储碎片 3.使用多字节字符集存储字符串

    Char得场景:

        存储具有近似得长度(md5值,身份证,手机号),长度比较短小得字符串(因为varchar需要额外空间记录字符串长度),更适合经常更新得字符串,更新时不会出现页分裂得情况,避免出现存储碎片,获得更好的io性能。

    展开全文
  • C语言switch选择结构

    万次阅读 多人点赞 2019-06-10 10:40:10
    一、switch的思想及意义: 程序设计中选择结构的第二大语句就是:switch语句。switch和if—else if一样都可以做多分支选择,但是switch语句的思想是把...switch语句之所以被称为开关语句,因为它就类似于生活中人们...

    一、switch的思想及意义:
    程序设计中选择结构的第二大语句就是:switch语句。switch和if—else if一样都可以做多分支选择,但是switch语句的思想是把程序所有可能出现的值 的情况,列出一个情况表,根据所输入的值判断与情况表中的的那种情况相同,直接执行相应情况下的语句即可。可直接处理相对应的数据流,加快执行速度。
    switch语句之所以被称为开关语句,因为它就类似于生活中人们乘坐电梯,每个乘客都会选择自己需要的楼层,也有多位乘客同时选择同一层,这时候,每位乘客只需要选择好自己的楼层,电梯到了之后自然会自动打开。这个生活例子非常具体的表现了switch语句的思想。
    二、switch与if比较
    switch语句又称开关语句,是选择结构的一种语法。
    switch语句与if语句相比较,一般指的是if语句的第三大形式if—else if,也就是我分支语句的比较。
    1.代码的易读性及全面性
    (1)switch 语句写出的程序,可读性非常好,整体流程看起来清晰明确。
    (2)if语句适应性非常强,可以处理的情况与switch比较要更加全面。比如说字符串比较就只能用if语句。
    2.代码的值的判断
    (1)if表达式一般为逻辑表达式或关系表达式(判断的是某个区域,这里可以是任意表达式),也可以是常量表达式,但是比较少,判断条件的结果只有”真”或”假”。
    (2) switch后的表达式可以是任意表达式,主要是某些情况下的某种情况的判断(判断的是某个值),表达式的条件的结果可以根据输入或特定情况有n多种值,根据各值选择分支。
    3.分支的多少
    (1)if一般应用于情况比较特殊的逻辑判断,或者情况很少的选择判断。
    (2) switch一般应用于条件判断简单,但是分支很多的情况中使用。
    4.switch的独有优点
    (1)switch相对if来说,还有if比不了的优点就是在选择分支较多时,switch…case结构会生成跳转表,根据变量的取值跳转到合适的分支用switch…case结构会提高程序的效率
    5.所有的switch语句都可以被if—else if替换,但是反过来则不一定。
    三、switch语句的应用
    srwitch是开关的意思,所以有的书籍上也把它称为开关语句。switch语句主要用于选择结构多分支的情况下。
    1.switch语句的一般格式。
    switch(表达式)
    {
    case 常量表达式1:语句1; break;
    case 常量表达式2:语句2; break;
    … …
    default:语句;
    }
    switch的执行过程是判断表达式的值与case后常量表达式的值哪个相等,执行相应的语句后跳出switch.
    switch的流程图表示如下:
    在这里插入图片描述
    2.switch语句的注意事项
    在讲注意事项之前大家先在机器敲下下面的三段代码:
    (1)有无break都行,一般都有,作用是跳出switch.
    (2)default是缺省值,可有可无,意思是除case 后所有情况(值)下的其它情况(值)。
    (3)case与后边常量表达式之间必须有空格。
    (4)各case和default可以任意互换位置,并不影响程序和逻辑的正常运行。
    (5)switch 后边的表达式可以是任意表达示(这是指可以是算术表达式,也可以关系表达式及其它表达式),但是结果只能是整型或单字符型。
    (6)case 后边可以是任意常量表达式(这是指可以是算术常量表达式,也可以关系常量表达式及其它常量表达式),但是结果只能是整型或单字符型。
    (7)case后边的常量表达式不能出现重值。
    (8)多个case可以执行同一组语句;其实就是1的重复,无break继续向下,直到碰到break.
    执行以下代码,运行查看效果

    (1)#include "stdio.h"
    void main()
    {
        int n;
        printf("\n\n\t请输入你的选择:");
        scanf("%d",&n);    
        switch(n)
        {
           case 1:printf("\t星期一\n");
           case 2:printf("\t星期二\n");
           case 3:printf("\t星期三\n");
           case 4:printf("\t星期四\n");
           case 5:printf("\t星期五\n");
           case 6:printf("\t星期六\n");
           case 7:printf("\t星期日\n");
           default:printf("\t错误\n");	
        }
    } 
    
    
    
    (2)#include "stdio.h"
    void main()
    {
        int n;
        printf("\n\n\t请输入你的选择1-7:");
        scanf("%d",&n);
        printf("\t你选择的是:\n\n\n");
        switch(n)
        {
           case 1:printf("\t星期一\n");break;
           case 2:printf("\t星期四\n"); break;
           case 3:printf("\t星期三\n"); break;
           case 4:printf("\t星期四\n"); break;
           case 5:printf(“\t星期五\n"); break;
           case 6:printf("\t星期六\n"); break;
           case 7:printf("\t星期日\n"); break; 	
        }
    } 
    

    以上两段代码说明注意事项1、2、3;那大家考虑以下代码输入5输出结果是什么呢?

    (3)void main()
    {
        int n;
        printf("\n\n\t请输入你的选择1-7:");
        scanf("%d",&n);
        printf("\t你选择的是:\n\n\n");
        switch(n)
        {
           case 1:printf("\t星期一\n");break;
           case 2:printf("\t星期四\n"); break;
           case 3:printf("\t星期三\n");
           case 4:printf("\t星期四\n"); break;
           case 5:printf(“\t星期五\n"); 
           case 6:printf("\t星期六\n"); 
           case 7:printf("\t星期日\n"); break; 	
        }
    } 
    

    结果应该是:星期五
    星期六
    星期日
    现在大家利用已知的switch基本结构,及注意事项,大家来完成一个题。输入月份,输出每个月份所对应的天数?
    参考代码如下:注意这段代码中是有错的,要求你先改正错误,再总结用到了那些注意事项:

    #include "stdio.h"
    void main()
    {
        float month;//表示几月 
        printf(“\n\n\t请输入月份:");
        scanf("%f",&month);
        switch(month)
        {
           case 12: 
           case 1:
           case 2: printf(“冬天”);break;
           case 3:
           case 4:
           case 5: printf(“春天”);break;
           case 6:
           case 7:
           case 8:printf(“夏天”);break;
           case 9:
           case 10:
           case 11: printf(“秋天”);break;
           default:printf("\t错误\n");break;
        }
    } 
    

    以上这段代码中基本上包括了上面的八大注意事项,你都找到了吗。
    3.switch语句的不足
    switch语句的不足在于只能进行某个值的判断,如果是某个区域如输入一个数a>90时做什么或者输入电影名称,查看电影简介,这时就只能用if—else if了。

    展开全文
  • 请编写一个函数function(int array[3][3]),实现矩阵(3行3列)的转置(即行列互换)。 2 、温馨提示 C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助...

    1、 题目

    请编写一个函数function(int array[3][3]),实现矩阵(3行3列)的转置(即行列互换)。 

     

     

     

     

     

     

     

     

     

     

     

     

    2 、温馨提示

          C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号,比如你还对生活、美食或者其它方面都感兴趣,都可以加微信交流,博主擅长讲解计算机相关方面的知识、如果大家对计算机方向、前端、移动端、服务端、数据结构、算法、网络、高数等等一些列方向比较迷茫或者不知道要学哪些?或者具体怎么学?或者其它方向有任何困惑都可以找我交流,谢谢大家关注。

     

     

     

     

     

     

     

     

    展开全文
  • 也就是倒数两行的说明文字互换 4、第72页的“3.4.1 文本编辑框EditText” 表3-3,第三行textPassword和第七行numberPassword两行右边的说明列,“星号“*””改为“圆点“•”” 5、第83页的“3.5.2 使用Intent传递...

    资源下载

    下面是《Android Studio开发实战 从零基础到App上线(第2版)》一书用到的工具和代码资源:
    1、本书使用的Android Studio版本为3.2,最新的安装包可前往Android官网页面下载
    2、本书使用的Android NDK版本为r17,最新的安装包可前往Android官网页面下载
    3、本书提供所有示例源码的demo工程下载,源码(适配Android4.1到9.0和Android Studio 3.2到3.4)的下载页面为https://pan.baidu.com/s/14NE2DD-frXxuDXUAlTfRaw。最新的源码也可访问我的github获取,github地址是https://github.com/aqi00/android2,服务端的github地址是https://github.com/aqi00/net_server。(部分地区如新疆既访问不了百度网盘也访问不了github,此时可访问csdn的下载页面获取源码https://download.csdn.net/download/aqi00/11223223)。另外,AS3.4之后默认开了androidx,如需获取适配了androidx的本书源码,可访问这个github页面https://github.com/aqi00/androidx
    有的读者反映从github下载本书源码很慢,或者下载不完整,这是国外服务器连接不稳定造成的。建议访问这个代下载网站https://d.serctl.com/,按照网站左上角的“如何下载教程”,找到本书源码的github下载地址并提交,等待几秒后就能在该网站下载完整的源码了。
    源码与各章的对应关系表见下图:

    4、本书提供配套的ppt课件下载,第二版课件的下载页面为https://www.jianguoyun.com/p/DX7Y1J4QlP6kCBiUoIkD
    5、本书第8章使用了一些反编译和重签名工具,这些工具的下载页面是https://pan.baidu.com/s/1EzDMLNdTdh2pDO7NBMiiww (提取码93i5)


    参考资料

    1、学习本书需要具备Java基础,所谓“零基础”指的是安卓零基础,如果您没学过Java的话,可学习以下系列的Java教程《Java开发笔记》
    2、由于篇幅所限,本书只覆盖了较为常见的Android开发技术,其余的Android开发技术可参考以下的Android笔记《Android开发笔记》
    3、本书的技术实现采用的是Java编码,若您想进一步了解App开发中的Kotlin编程技术,可阅读以下系列的Kotlin教程《Kotlin入门教程》
    4、更多有关本书内容的常见问题参见博文《Android Studio开发实战 从零基础到App上线(第2版)》常见问题解答
    5、有关Android8、Android9、Android10的更多代码适配参见博文《Android8.0、9.0、10.0的新特性兼容适配代码修改》。
     

    勘误记录

    下面对书中的笔误之处进行更正说明:

    一、第一批勘误记录(以下的勘误记录在2019年1月的第二次印刷时均已修正):

    1、第1页“1.1  Android Studio简介”
    该小节第三段第三行“本书使用的Android Studio为2018年4月发布的3.1.2版本”,这里的“4月”改为“9月”,“3.1.2版本”改为“3.2版本”。

    2、第428页“10.2.4 HTTP接口访问”
    倒数第四行的connect方法,该行后面的“该方法在getOutputStream后调用,在getInputStream前调用。”整个删掉。因为connect方法和getOutputStream方法没有先后调用关系,getOutputStream方法内部会自动调用connect方法。

    3、第430页“1. URL串中对汉字的转义处理”
    在“具体的转义代码参见本书下载资源的URLtoUTF8.java”这句后面补充“,也可使用系统自带的java.net.URLEncoder和java.net.URLDecoder”。

    4、第451页“10.5.1 设计思路”下面的第三行
    “于是在打开系统自带的应用宝”,这句前半部分的“”字删掉。

    5、第675页“2. 蓝牙设备BluetoothDevice”
    表14-6出现了两个BOND_BONDING,要把后面的“BOND_BONDING”改为“BOND_BONDED”。

    二、第二批勘误记录(以下的勘误记录在2019年6月的第四次印刷时均已修正):

    1、第46页“2.4.1  图形Drawable”
    该页中间“开发者拿到一张图片”这段的第二行中“Android Postfix Completion”要改为“Android Drawable Importer”。

    2、第447页的“10.4.2  Socket通信”
    在“1. Socket”该段下面的方法说明中,“getOutputStream:获取输入流”,这里的“输入流”要改为“输出流”。

    3、第650页“14.1.2  网页视图WebView”
    该页代码的倒数第七行,把“http://”改为“https://”,也就是添加字母s

    4、第654页“14.1.3  简单浏览器”
    该页代码的倒数第八行,把“http://”改为“https://”,也就是添加字母s

    三、第三批勘误记录(以下的勘误记录在2019年11月的第六次印刷时均已修正):

    1、第94页的图3-31,最后一行“2012年07月06日 五年期商贷利率”的数值改为 “6.55%”,原来的6.15%跟2014年的商贷利率重复了。

    2、第271页的“7.4.1  循环视图RecyclerView”
    该小节第二段第一行的“为了兼容以前的Adnroid版本”,这里的Adnroid拼错了,要改为Android

    3、第409页的“10.1.1  消息传递Message”
    第6行的注释“// 从布局文件中获取名叫tv_control的文本视图”,这里的“tv_control”改为“tv_message

    4、第410页的“10.1.1  消息传递Message”
    代码倒数第10行的“下面播放新闻”,这里的“下面”改为“开始”。

    四、第四批勘误记录(以下的勘误记录在2020年4月的第八次印刷时均已修正):

    1、第225页的“6.5.1  Service的生命周期”
        该节第一段第三行在“App也可以有自己的服务。”后面补充以下红字部分:
    App也可以有自己的服务。此时需要在AndroidManifest.xml中添加新服务的Service节点配置,比如:
            <service android:name=".service.NormalService" />

    2、第353页的表9-6
        该表最后两行的说明都是“高效率的高级编码”,需要把最后一行AAC_ELD的说明改为“增强型低延时的高级编码”。
    3、第430页的“10.2.4  HTTP接口调用”
        该页中间在“下面用一个阶段性的实战小项目练练手”这句前面补充以下红字部分:
    除此之外,从Android9开始默认只能访问以https打头的安全地址,不能直接访问http打头的网络地址。如果应用仍想访问以http开头的普通地址,就得修改AndroidManifest.xml,给application节点添加如下属性,表示继续使用HTTP明文地址:
            android:usesCleartextTraffic="true"

    下面用一个阶段性的实战小项目练练手

    五、第五批勘误记录(以下的勘误记录在2020年9月的第九次印刷时均已修正):

    1、第21页的“1.5.5  新建一个Activity页面”
    该页第一段在“在res\layout下面生成页面布局activity_main2.xml”后面补充以下红字部分:
    在res\layout下面生成页面布局activity_main2.xml,还会在AndroidManifest.xml的application节点增加下面一行配置:
            <activity android:name=".Main2Activity"></activity>

    新页面创建之后的工程结构如图1-37所示。

    2、第52页的“2.4.4  九宫格图片”
    图2-26下面说明文字的第二行,“未拉伸预览”改为“两方向同时拉伸预览

    3、第66页的“3.2.2  开关按钮Switch”
    表3-2,倒数第二行thumb的说明列改为“设置开关标识的图标”,倒数第一行track的说明列改为“设置开关轨道的背景”,也就是倒数两行的说明文字互换

    4、第72页的“3.4.1  文本编辑框EditText”
    表3-3,第三行textPassword和第七行numberPassword两行右边的说明列,“星号“*””改为“圆点“•”

    5、第83页的“3.5.2  使用Intent传递消息”
    表3-5的第六行第三列的“数据类型,用于指定Data类型的定义”,这里的表达比较拗口不易理解,要把“Data类型的定义”改为“消息的数据类型

    6、第88页的“3.5.4  向上一个Activity返回参数”
    第一段第三行的“如果还要处理一下个页面的应答数据”,这里的“一下个页面”改为“下一个页面

    7、第171页的“5.4.2  动态注册/碎片适配器FragmentStatePagerAdapter”
    该页第一行“然后在Fragment的onCreateView函数中调用getArguments方获得请求数据”,这里的“getArguments方”改为“getArguments方法”,也就是添加“法”字。

    8、第214页的“6.4.1  通知推送Notification”
    参数构建方法的第三个方法setUsesChronometer,把“设置是否显示计数器”里面的“计数器”改为“计时器”。

    9、第237页的“7.1.1  标签按钮”
    该页第二行的“读者还记得第2章”,这里的“第2章”改为“第3章

    10、第663页的“14.2.2  创建JNI接口”
    “具体的编译配置修改说明如下”这句后面的代码有若干处需要修改,修改之处见下面的红字:
    android {
        compileSdkVersion 28
        buildToolsVersion "28.0.3"

        defaultConfig {
            applicationId "com.example.mixture"
            minSdkVersion 16
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"

            // 此处说明mk文件未能指定的编译参数
            externalNativeBuild {
                ndkBuild {
                    // 说明需要生成哪些处理器的so文件
                    // NDK的r17版本开始不再支持ARM5(armeabi)、MIPS、MIPS64这几种类型
                    abiFilters "arm64-v8a", "armeabi-v7a"
                    // 指定C++编译器的版本,比如下面这行用的是C++11
                    //cppFlags "-std=c++11"
                }
            }
        }

        // 下面指定拾取的第一个so库路径,编译时才不会重复链接
        packagingOptions {
            pickFirst 'lib/arm64-v8a/libjni_mix.so'
            pickFirst 'lib/armeabi-v7a/libjni_mix.so'
            pickFirst 'lib/arm64-v8a/libvudroid.so'
            pickFirst 'lib/armeabi-v7a/libvudroid.so'
        }

        // Android Studio 2.2之后才引入externalNativeBuild。此处指定mk文件的路径
        externalNativeBuild {
            ndkBuild {
                // 下面是编译CPU信息、加解密、获取主机名专用的mk文件
                path "src/main/jni/Android.mk"
                //path file("src\\main\\jni\\Android.mk")
            }
        }
    }

    六、第六批勘误记录(以下的勘误记录在2021年2月的第十次印刷时均已修正):

    1、第35页的“2.2.3  滚动视图ScrollView”
    该小节示例代码中的两处“线性视图”都改为“线性布局”。

    2、第97页的“3.7.2  小知识:提醒对话框AlertDialog”
    该小节示例代码第七行的“给建造器设置对话框的信息文本”,把“信息文本”改为“内容文本”。

    3、第195页的““6.1.1  声明属性””
    表6-1删掉第七行整行(getDimension那行),同时第八行(getDimensionPixelSize那行)的说明列文字改为“尺寸值。单位为px”。

    4、第204页的“6.1.5  绘制视图”
    在“2. onDraw”的“(1)划定可绘制的区域”下的第一句“虽然本视图内的所有区域都是可以绘制的”,改为“虽然视图内的所有区域都是可以绘制的”,也就是去掉“本”字

    5、第233页的“6.5.1  Service的生命周期”
    “3. 延迟绑定”小节的第二行,把“因为启动操作在先”改为“因为启动操作在先、绑定操作在后”,也就是补充“、绑定操作在后”这几个字。

    6、第335页的“9.2.3  录音与播音”
    “1. 媒体录制器MediaRecorder”小节的常用方法列表中,第一行reset后面的文字说明“重置录制资源”改为“重置录制器”,第五行release后面的的文字说明“释放录制资源”改为“释放录制器”。

    七、第七批勘误记录:

    1、第55页“2.5.2  小知识:日志Log/提示Toast”开始
    “2.5.2  小知识:日志Log/提示Toast”和“2.5.3  代码示例”这两个小节共有七处“被除数”要改为“除数”,因为除法运算要检查除数是否为零,而不是检查被除数是否为零。

    2、第114页的“4.3.1  SD卡的基本操作”
    第三行“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />”改为“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />”,也就是在STORAG末尾加个E变成STORAGE

    3、第136页的“4.6.3  代码示例”
    该页中间“声明SD卡的操作权限”下面第三行“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />”改为“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />”,也就是在STORAG末尾加个E变成STORAGE

    4、第232页的“6.6.2  小知识:应用包管理器PackageManager”
    该小节开始的代码例子第9行的“PackageManager.PERMISSION_GRANTED”改为“PackageManager.MATCH_UNINSTALLED_PACKAGES”。

    5、第336页的“9.1.1  表面视图SurfaceView” 
    该页第二行的“这个途径便是内部类表面持有者SurfaceHolder外部调用”改为“这个途径便是内部类表面持有者SurfaceHolder外部调用”,也就是在“外部调用”前面增加一个句号。

    6、第338页的“9.1.2  使用Camera拍照” 
    autoFocus方法的说明文字“参数自动对焦接口AutoFocusCallback的onAutoFocus方法在对焦完成时触发”语句不通顺,改为“输入参数为自动对焦接口AutoFocusCallback的实例,该接口的onAutoFocus方法在对焦完成时触发”。

    7、第345页的“9.1.4  使用Camera 2拍照”
    该页最后一行,“4. 图像读取器ImageReader”小节中,getSurface的方法说明文字“获得图像读取的表面对象”改为“获得图像读取的表面对象”,也就是增加一个“”字。

    8、第349页的“9.2.1  拖动条SeekBar”
    该小节第一行“拖动条SeekBar继承自进度条ProcessBar”,把“ProcessBar”改为“ProgressBar”。

    9、第353页的“9.2.3  录音与播音” 
    setAudioSamplingRate方法后面的描述文字“单位千赫兹(kHz)”改为“单位赫兹(Hz)”。

    10、第364页的“9.3.2  摇一摇——加速度传感器”
    该小节第二行末尾的“其他类似的应用还摇骰子”改为“其他类似的应用还摇骰子”,也就是增加一个“”字。

    11、第381页的“9.5.1  NFC近场通信” 
    “2. 启用NFC感应/禁用NFC感应”小节第一段第一行和第三行的两处“重载”改为“重写”。

    12、第516页的“11.6.2  小知识:三维图形接口OpenGL” 
    该小节第三段第四行的“比如显示生活中黑板的漆面”改为“比如现实生活中黑板的漆面”,也就是把“显示”改为“现实”。

    13、第520页的“11.6.2  小知识:三维图形接口OpenGL” 
    “此时自定义的渲染器GLRender必须重载onSurfaceCreated”这句里面的“重载”改为“重写”。

    14、第553页的“12.3.1  属性动画的用法” 
    removeListener的方法说明改为“移除指定的动画监听器”,也就是把“移出”改为“移除”。
    removeAllListeners的方法说明改为“移除所有动画监听器”,也就是把“移出”改为“移除”。

    15、第557页的“12.3.3  插值器和估值器” 
    该小节第二段第一行的“默认是匀速播放”改为“默认是先加速再减速”。

    16、第662页的“14.2.2  创建JNI接口”
    表14-2  基本数据类型的转换关系,“Java的数据类型”该列的Int和Float要改为小写的intfloat

    17、第725页的“15.4.1  文字转语音TextToSpeech”
    图例“15-39  小米手机内置的语音引擎”改为“15-39  小米手机内置的语音引擎”,也就是在“15-39”前面加个“”。

    8、第725页的“15.4.1  文字转语音TextToSpeech”
    表15-5  setLanguage方法的返回值说明,下面表格左侧的标题由“TextToSpeech类的返回值”改为“setLanguage方法的返回值”。

    19、第726页的“15.4.1  文字转语音TextToSpeech”
    图15-41下方的文字“接下来就可以大胆设置朗读的语音了”改为“接下来就可以大胆设置朗读的语言了”,也就是把“语音”改为“语言”。
     

    若对本书内容有任何疑问,可加入QQ群进行咨询,群号是493199768

    展开全文
  • 生活中,有较多付出的方向,也必然有缺失的方向。因为,大部分人都逃不出一个法制——“鱼与熊掌不可兼得”。   看待一件事的角度不同,得到的理解也会有所不同。   比如编程,热爱这份工作的朋友愿意...
  • 各个章节后都有大量的习题,是本科考研学习的好资料
  • 不会享受生活:衣服、打扮、住宿、娱乐 优点 勤奋:数十年如一日,坚持学习和思考 使命感强:就想干一番大事,很大很大的事 理性客观:看人准、解决问题有方法、从不同角度看问题、独立中立 所有优点,总结成一...
  • Unity拖动背包物品/技能图标位置互换

    千次阅读 多人点赞 2019-05-08 01:13:52
    助力快速用 UGUI 完成图标互换,数据互换 为初学者节省宝贵的时间,避免采坑! 整体实现代码不超过50行即可实现 我们游戏中非常常见的一个功能:拖动技能图标,互换技能位置和背包中拖动游戏物品到道具栏,互换位置...
  • 故事背景 《互换身体》是由环球影业发行的喜剧电影,于2011年8月5日在美国上映。...该片讲述了一位居家好男人和一位蜂蝶浪子分别厌倦了自己的生活,于是在某种神秘力量的辅助下两人互换身体与生活的故事。 ...
  • 欢迎微信关注Jerome blog,用技术的心去生活
  • 值已被互换

    2014-10-10 16:13:05
    生活 。 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <algorithm> // for swap #include int main() { using namespace std; int x = 2; int y = 4; cout , y = " ; swap(x, y); // swap also lives in ...
  • 在这次的试验当中,使用的系统是BeAnotherLab的MTB系统,该试验的一个研究人员表示:这将是一个重大突破,目的在于帮助人们分享不同性别的生活感受,增强同理心。而该机器在其他的试验中已经使用了三年的时间。 ...
  • 勤能补拙,生活就是养成游戏,勤练内功,即使当前不能花里胡哨,未来也会强壮到无人能敌! 链表的经典技巧及算法 1、寻找链表的中间节点:最简单的方法是,先遍历一遍链表,计算出链表的长度,然后计算出中间节点的...
  • 生活启示

    千次阅读 2016-04-12 10:33:02
    鹦鹉羡慕乌鸦自由,乌鸦羡慕鹦鹉安逸,二鸟便商议互换。乌鸦得到安逸,但难得主人欢喜,最后抑郁而死;鹦鹉得到自由,但长期安逸,不能独立生存,最终饥饿而死。 ——做最好的自己,不要羡慕他人的幸福,也许那并不...
  • 两数互换的几个算法

    2013-10-09 22:44:00
    1.这个是最容易想到的一个,正如大家在生活中想互换两瓶不同的饮料(假定是a和b)一样,那么此时我们就要去找一个空瓶子c,先把a瓶子中的水倒入c中,然后把b中的饮料倒入a中,之后再将c中的饮料倒入b中,至此即完成...
  • java范例开发大全

    2013-03-08 20:06:54
    实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 ...
  • 我们通常不会去考虑规则,因为计数已成为我们生活中如此重要的一部分。大多数时候,我们使用的编号系统甚至没有怀疑或者注意过是什么规则,为什么只有从0-9。我们最有可能以10为底数,因为我们有
  • 懒散的宿舍生活,极易影响到人的精气神。或许有人想认真泡图书馆,想出去健身跑步,但因为合群,这一切都放弃了。 出来工作后,时间异常宝贵,当你想静下来读书,却为了合群而去应酬。无效社交等于无效人脉,充斥着...
  • python 练习题目

    万次阅读 多人点赞 2020-02-26 21:11:38
    练习1:英制单位与公制单位互换 # 英制单位与公制单位互换 ''' 长度单位: 1 英 寸=2.5400 厘 米    1 英 尺 =12 英 寸 =0.3048 米    1 码 =3 英 尺 =0.9144 米     1 英 ...
  • 目前中国的 LBS 服务商只有 40 多家,远谈不上火爆,但由于其具有用户精准,互动性强,用户主动使用等特点,众多商家对运用 LBS 做营销的步伐已经展开,何玺和大家分享几个国内...能够为我们的生活带来更多的便利。
  • 2018年6月,湖南趣步网络科技有限公司正式成立,发展到2019年,趣步已经彻底大火,用户达到上千万级,在2020年10月20日,趣步APP更新版本,并正式改名为:赞丽生活。也就是趣步与赞丽生活基本为一家,但两者在模式玩...
  • left join 和 left outer join 的区别
  • 在全文中,“主机”和“终端系统”一词可互换使用。 终端系统包括PC,工作站,Web服务器,邮件服务器,PDA,连接Internet的游戏机等。 R2: 来自维基百科:外交协议通常被描述为一系列国际礼节规则。 这些行之有效...
  • 然后,您可以使用该碗制作生活炖煮的食物: (花是牛眼菊。请注意,蘑菇是可以互换的。) 安装 要安装插件,请转至 ,下载最新的.jar文件并将其放入Spigot安装的plugins文件夹中。该插件将在首次启动时生成一个配置...
  • EXCEL如何行与列互换转置表格

    千次阅读 2016-11-07 16:35:30
    利用的是EXCEL选择性粘贴功能 ...生活中我们出于需要,要转化行列的次序,EXCEL可以很简单的完成 选中表格复制 在所需要转置的地方右键 【选择选择性粘贴】 再选转置选项 ok 效果如图
  • 我们第一天学的的内容呢,对大多数的人都知道,计算机的语言是二进制,但是生活中我们用的是十进制。那要怎么换算二进制呢? 比如一个例子: 我有个数字72 (十进制) 换成 二进制 72 除以2 得商 为 36 1...
  • 生活中的算法

    千次阅读 热门讨论 2017-04-30 20:27:21
    大家有很多的方法,最简单粗暴的,贴上标签换标签,最神的,把两个杯子得水直接来一个神奇的互换,(就想从手里互换两个球一样)当然,大家想到的最直观的方法就是借助第三个容器来调换水的位置。 借助第三变量t ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,441
精华内容 3,376
关键字:

互换生活