精华内容
下载资源
问答
  • 问一:什么是网络通信协议?:网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。打个比方:全世界语言很多,交流时会出现障碍,于是我们选定...
    6b75911e95a05a1b9aa6c3858fe61214.png

    前序

    了解计算机网络基础理论对深入学习网络互联、网络服务器和网络安全都是至关重要的,这部分内容往往枯燥难懂,今天作者以问答作序,形象讲解一下网络通讯协议,希望对大家以后的学习提供帮助。

    问一:什么是网络通信协议?

    答:网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。

    打个比方:全世界语言很多,交流时会出现障碍,于是我们选定“英语”作为全球通用语言。同样,计算机网络世界里,也是由各种不同的终端设备、互联设备以及各种服务器组成的,他们使用自己的操作系统,比如智能手机里就分Android和IOS两种,但这并不妨碍他们之间联网,并进行通讯,为什么呢?因为大家都遵循同一种“语言”,这个共同的“语言”,在计算机网络世界里,我们就称为“协议”。

    问二:什么是OSI参考模型?

    答:OSI就是计算机网络世界中的“协议”,具体说,它是一个模型, 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),自从有了这个标准模型后,所有的网络硬件厂商、网络软件的开发,都必须严格遵守这个标准,生产出来的产品才能够相互通讯、联网。下面简要介绍一下这个七层模型的组成,模型最好记住,今后从事相关行业时,只要涉及到计算机网络技术,一定脱离不了它。

    1c062c9774b7c44191bb091c6639b937.png

    OSI七层模型

    详细的了解OSI七层模型

    第7层应用层:OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。通俗的讲,应用层是为我们人类服务的,通过确定进程之间通信的性质,以满足用户的需要。应用层能与应用程序界面沟通,以达到展示给用户的目的,从而产生了很多实用的应用层协议,如HTTP(超文本传输协议)用于制作网站、FTP(文件传输协议)可以实现文件传输、SMTP(简单邮件发送协议)、POP(电子邮局协议)用可以用于收发邮件等。

    第6层表示层:主要用于处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。它主要有三个功能:数据压缩、数据加密和数据解释。

    第5层会话层:在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制,它的功能是提供端到端的会话连接,为两个节点之间通讯做好准备。

    第4层传输层:提供数据传输服务,通常有两种传输方式:面向连接和面向无连接。误码率低、但延迟高,后者误码率高、但延迟低。在实际使用中,如果我们需要从网上下载资源,那么需要面向连接,因为我们要保证下载资源的每一个数据包都正确,否则这个资源就是“坏损”的。如果我们看在线电影、网络直播时,我们为了保证视频流畅,需要更快的速度,通常用后者,误码率高,偶尔出现几个“掉帧”现象,不影响我们的观感。

    第3层网络层:本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。它包括通过互连网络来路由和中继数据 ;除了选择路由之外,网络层还负责建立和维护连接,控制网络上的拥塞以及在必要的时候生成计费信息。我们通常说的配置路由、配置IP地址等操作,就指的是这一层。

    第2层数据链路层:在此层将数据分帧,并处理流控制。屏蔽物理层,为网络层提供一个数据链路的连接,在一条有可能出差错的物理连接上,进行几乎无差错的数据传输(差错控制)。本层指定拓扑结构并提供硬件寻址。常用设备有网桥、交换机。

    第1层物理层:处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。各种线缆在这一层被定义,如直通线、交叉线、光纤、同轴电缆等知识。

    问三:什么是TCP/IP模型?

    答:OSI七层模型分得太详细了,在实际使用过程中,我们对OSI七层模型做了合并,其中应用层、表示层和会话层我们统称为“应用层”,传输层还是叫“传输层”,网络层改叫“网络互联层”,数据链路层和物理层合并叫做“网络接口层”,这样,就变成了四层。TCP/IP是一组用于实现网络互连的通信协议,注意不是一个协议,是一组协议,每一层都有相关的协议,共同提供网络通讯功能,我们也称为TCP/IP协议栈。

    详细了解TCP/IP协议栈四层模型的协议

    1. 应用层

    应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。

    2. 传输层

    传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的、无连接的数据传输服务。这一层上通过端口连接应用层,端口的概念就是在这一层上提出的。

    3. 网际互联层

    网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。IP地址的概念在这一层上提出。

    4. 网络接入层

    网络接入层负责监视数据在主机和网络之间的交换。由参与通讯的物理层协议和数据链路层协议组成。地址解析协议(ARP)工作在此层,还有大名鼎鼎的以太网协议(IEEE802.3),是我们目前局域网普遍使用的协议,还有无线以太网(IEEE802.11)等,MAC地址的概念在这一层提出。

    57efe1532c3b9e673c78387a1e0a9398.png

    TCP/IP四层模型

    后续

    学习计算机网络,理论知识要打扎实,虽然很抽象,但理解起来并不是很困难,同学们可以结合数据包的传送机制,对网络通讯协议再做进一步的学习。

    展开全文
  • 嵌入式系统它是指用于执行独立功能的专用计算机系统。它其中包括了微处理器、定时器、微控制器、存储器、传感器等等,一系列的微电子芯片与器件,和嵌入式在存储器中的微型操作系统、控制...复杂的嵌入式系统,例如个人
  • 这些问题都不上凭什么拿阿里offer? 只有问题没有参考答案,需要各位小伙伴下来逐一学习! 一、开场白 简单的介绍一下自己的工作经历与职责,在校或者工作中主要的工作内容,主要负责的内容;(你的信息一清二白的...

    这些问题都答不上凭什么拿阿里offer?
    只有问题没有参考答案,需要各位小伙伴下来逐一学习!

    一、开场白
    简单的介绍一下自己的工作经历与职责,在校或者工作中主要的工作内容,主要负责的内容;(你的信息一清二白的写在简历上,这个主要为了缓解面试者的压力)
    介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节;(主要考察应聘者对自己做过的事情是否有清晰的描述,判断做的事情的复杂度)

    二、Java多线程
     线程池的原理,为什么要创建线程池?创建线程池的方式;
     线程的生命周期,什么时候会出现僵死进程;
     说说线程安全问题,什么实现线程安全,如何实现线程安全;
     创建线程池有哪几个核心参数? 如何合理配置线程池的大小?
     volatile、ThreadLocal的使用场景和原理;
     ThreadLocal什么时候会出现OOM的情况?为什么?
     synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性;

    三、JVM相关
     JVM内存模型,GC机制和原理;
     GC分哪两种,Minor GC 和Full GC有什么区别?什么时候会触发Full GC?分别采用什么算法?
     JVM里的有几种classloader,为什么会有多种?
     什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处;
     什么情况下我们需要破坏双亲委派模型;
     常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值?
     JVM虚拟机内存划分、类加载器、垃圾收集算法、垃圾收集器、class文件结构是如何解析的;

    四、Java扩展篇
     红黑树的实现原理和应用场景;
     NIO是什么?适用于何种场景?
     Java9比Java8改进了什么;
     HashMap内部的数据结构是什么?底层是怎么实现的?(还可能会延伸考察ConcurrentHashMap与HashMap、HashTable等,考察对技术细节的深入了解程度);
     说说反射的用途及实现,反射是不是很慢,我们在项目中是否要避免使用反射;
     说说自定义注解的场景及实现;
     List 和 Map 区别,Arraylist 与 LinkedList 区别,ArrayList 与 Vector 区别;

    五、Spring相关
     Spring AOP的实现原理和场景?
     Spring bean的作用域和生命周期;
     Spring Boot比Spring做了哪些改进? Spring 5比Spring4做了哪些改进;
     如何自定义一个Spring Boot Starter?
     Spring IOC是什么?优点是什么?
     SpringMVC、动态代理、反射、AOP原理、事务隔离级别;

    六、中间件篇
     Dubbo完整的一次调用链路介绍;
     Dubbo支持几种负载均衡策略?
     Dubbo Provider服务提供者要控制执行并发请求上限,具体怎么做?
     Dubbo启动的时候支持几种配置方式?
     了解几种消息中间件产品?各产品的优缺点介绍;
     消息中间件如何保证消息的一致性和如何进行消息的重试机制?
     Spring Cloud熔断机制介绍;
     Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?

    七、数据库篇
     锁机制介绍:行锁、表锁、排他锁、共享锁;
     乐观锁的业务场景及实现方式;
     事务介绍,分布式事物的理解,常见的解决方案有哪些,什么事两阶段提交、三阶段提交;
     MySQL记录binlog的方式主要包括三种模式?每种模式的优缺点是什么?
     MySQL锁,悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁;
     分布式事务的原理2阶段提交,同步异步阻塞非阻塞;
     数据库事务隔离级别,MySQL默认的隔离级别、Spring如何实现事务、JDBC如何实现事务、嵌套事务实现、分布式事务实现;
     SQL的整个解析、执行过程原理、SQL行转列;

    八、Redis
     Redis为什么这么快?redis采用多线程会有哪些问题?
     Redis支持哪几种数据结构;
     Redis跳跃表的问题;
     Redis单进程单线程的Redis如何能够高并发?
     Redis如何使用Redis实现分布式锁?
     Redis分布式锁操作的原子性,Redis内部是如何实现的?

    九、其他
    看过哪些源代码?然后会根据你说的源码问一些细节的问题?(这里主要考察面试者是否对技术有钻研的精神,还是只停留在表面,还是背了几道面经,这个对于很多有强迫症的面试官,如果你连源码都没看过,基本上是会pass掉的,比如我也是这样的!)

    十、最后
    其实一步一步走过来,不单单只靠面试之前刷题和看视频看书那么简单,更多的还是平时的积累,下面有这么一个公式,可能有些朋友曾经见过。它告诉你,若每天比前一天进步0.01,非常微小的进步。但是一年累积下来,你会比一年前的你牛叉37.8倍。
    在这里插入图片描述
    那十年呢,二十年呢?其实,这就是时间的力量。
    最后,送大家一句话,我是在某个网站上看到的:
    再牛 x 的梦想也抵不住傻 x 似的坚持!

    展开全文
  • Spring是个开源框架,它被创建出来的初衷就是解决企业级应用开发的复杂性。Spring不仅仅局限于服务端开发,任何的java应用都能借助于Spring变得更加简单,可测试性更强,松耦合性更好。 为了...

    每个人在面试的时候,Spring应该都是逃不过的关卡,能够熟练的使用,这并不难,知道它的底层原理才是高出别人一步的地方。这篇文章就说简单说下Spring的一些知识,希望能在面试的路上帮助到你们。

    Spring是个开源框架,它被创建出来的初衷就是解决企业级应用开发的复杂性。Spring不仅仅局限于服务端开发,任何的java应用都能借助于Spring变得更加简单,可测试性更强,松耦合性更好。

    为了降低Java开发的复杂性,Spring采取了一下4种关键策略:

    • 基于POJO的轻量级和最小侵入性编程;

    • 通过依赖注入和面向接口实现松耦合;

    • 基于切面和惯例进行声明式编程;

    • 通过切面和模板减少样板式代码。

          几乎Spring所做的任何事情,都是围绕着以上四种策略来实现的,其核心就是:简化java开发。

    1、轻量级POJO

    在日常的开发过程中,可能大部分人都感受到了,很多框架都会强迫应用继承他们的类或者是实现他们的接口,这样就会导致程序和框架绑死,说到这,我们的现在所用的框架就是这样,各个模块,包括DAO,Service,都会强制性的继承框架的中的类,应用程序和框架绑定的死死的。Spring竭力的避免因为自身的API来搞乱你的应用代码,Spring也不会强迫你实现他的接口或者是继承它的类,最严重的也就是一个雷会使用Spring注解。Spring的非侵入式编程意味着这个类在Spring应用和非Spring应用中发挥着同样的作用。

    2、依赖注入

    任何一个有实际意义的应用,肯定是会有多个类组成,在没有Spring的时候,每个对象负责管理着与自己相互协作的对象的引用,这样会导致高耦合和难以测试的代码。

    public class Train implements Transport{   private Water water;   public Train() {       water = new Water();  }   public void catchGoods(){       water.waterSomthing();  }}

    可以看到上面的代码,Train在自己的构造函数中自己创建了 Water对象,这样就造成了这两个对象的紧耦合,这个火车可以运水来浇灌农田,但是如果让这个火车来运煤供暖,可能就不太符合了。

    而在单元测试的时候,我们要确保catchGoods方法执行的时候,waterSomthing也能够执行,如果这样来做,那就执行不了单元测试了。

    耦合是具有两面性的,一方面紧密的耦合的代码,难以测试,难以服用,难以理解,修改了一处就可能会引起别的bug(记得刚去公司的时候,讲开发规范,一个接口尽量的只做一件事情,千万不要一个接口同时为多个地方提供服务),另一方面呢完全没有耦合的代码也什么都干不了。

    有了Spring之后,对象的依赖关系由负责协调各对象的第三方组件来完成,对象无需自行创建,依赖注入会将所依赖的关系自动交给目标对象,而不是让对象自己去获取。

    public class Train implements Transport{   private Water water;   public Train(Water water) {       this.water = water;  }   public void catchGoods(){       water.waterSomthing();  }}

    上面在我们的改动之后,不再由Train自行创建,而是当成一个构造器参数传进来,这也是依赖注入的一种方式:构造器注入。这也就实现了松耦合。

    创建应用组件之间协作的行为通常称为装配,Spring有着多种装配bean的方式,XML就是一种常用的方式。<?xml version="1.0" encoding="UTF-8"?>

    <!--DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" -->
    <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
       <bean id="train" class="com.kr.caption.spring.Train">       <constructor-arg ref="water"/>   </bean>   <bean id="water" class="com.kr.caption.spring.Water"/></beans>

    在上面的xml文件中,两个对象被声明为了Spring中的bean,在Train中,在构造时传入了对Water的引用,作为构造器参数。

    @Configurationpublic class TrainConfig {   @Bean   public Transport train(){       return new Train(water());  }   @Bean   public Water water(){       return new Water();  }}

     

    上面的是基于java的配置,这两种配置都是一样的效果。

    Spring通过应用的上下文,来装载bean的定义,并把他们组装起来,Spring应用上下文全权负责对象的创建和组装,Spring有多种上下文的实现,它们之间主要的区别仅仅在于如何加载配置。

    public class application {   public static void main(String[] args) {       ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:application_example.xml");       Train bean = context.getBean(Train.class);       bean.catchGoods();  }}

    这里的main方法基于application_example.xml创建了一个Spring应用上下文,随后就能得到一个实例对象,直接调用方法即可。

    3、面向切面编程

    系统由不同的组件组成,而这些组件除了实现自身的核心功能外,还承担着其他的一些职责。比如日志、事务管理和安全这些通常会贯穿着整个项目中的各个组件。如果没有系统性的处理这部分,那么你的代码会含有大量的重复代码。如果你把这些单独抽象为一个模块,其他模块只是调用它的方法,方法的调用还是会出现各个模块。

    AOP会使这些服务模块化,以声明的方式应用到它们需要影响的模块去,这样其他的模块就会只关注它们自身的业务,完全不需要了解这些服务的相关逻辑和代码。我们可以把切面想象为覆盖在很多组件上的一个外壳,借助AOP可以使那些功能层去包裹核心业务层,这些功能层以声明的方式灵活的应用到系统中,其他的业务应用根本不知道它的存在。

    展开全文
  • 嵌入式系统它是指用于执行独立功能的专用计算机系统。它其中包括了微处理器、定时器、微控制器、存储器、传感器等等,一系列的微电子芯片与器件,和嵌入式在存储器中的微型操作系统、控制应用...复杂的嵌入式系统,例
  • Tableau产品顾问杰克克斯特勒的简短回答是“当问题很简单的时候用Desktop,当问题很复杂的时候用Prep”,但除此之外还有更多情况来细分。 您何时应该使用Tableau Prep? 从根本上说,Tableau Prep可...

    自今年推出Tableau Prep以来,从小伙伴那里得到的一个常见问题是,“如果Tableau Prep和Desktop都可以加入、转移和清理数据…我应该何时使用它们呢”?Tableau产品顾问杰克克斯特勒的简短回答是“当问题很简单的时候用Desktop,当问题很复杂的时候用Prep”,但除此之外还有更多情况来细分。

    您何时应该使用Tableau Prep?

    从根本上说,Tableau Prep可以帮助你探索、清洁、整合和重塑数据。如果您的主要目标是执行其中的一个或多个任务,那么用Tableau Prep就是正确的

    解决方案。通常,在以下情况下使用Tableau Prep:

    数据需要高级的重塑和集成

    在这里插入图片描述

    要分析上面屏所表示的数据,您需要进行多个重塑和集成步骤,以将其转换为柱状格式。虽然Tableau Desktop可以执行简单的数据枢轴和连接,但是这些数据所需要的准备量是很困难的。如果您已经习惯了更复杂的ETL工具,那么这可能会让您不知所措,但是Tableau Prep将帮助您通过几个拖放步骤将这些混乱转化为可分析的数据源。

    在这里插入图片描述

    数据有多个受众

    在这种情况下,那就要使用Tableau Prep,因为生成自定义数据源将变得非常容易。例如,假设您正在处理财务和营销部门的销售数据。但是,财务需要以单个订单的粒度来确定成本信息,而营销需要以单个产品的粒度来调查信息。

    您可以在Tableau Desktop中创建两个唯一的数据源,但您需要重复工作。如果使用Tableau Prep,您可以利用您对两个输出的销售数据所做的清理和探索性工作,同时仍为每个受众创建唯一的数据源,如下例所示:

    在这里插入图片描述

    您何时应该使用Tableau Desktop?

    当您的主要目标不是探索、清理、集成或重塑数据时,请记住,Tableau Desktop的所有数据准备功能仍然存在!如果数据解释器,数据透视图或联接和联合的组合将您的数据转换为所需的表单,请使用Tableau Desktop。在下面的示例中,单个枢轴和一个简单的连接将使我们在30秒内进入分析流程。

    在这里插入图片描述

    想要最大的灵活性?请同时使用!

    最后,你不仅仅需要使用Tableau Prep和Desktop,因为两者与Tableau Server和Online一起集成到Tableau平台中。我们将仪表板创作体验视为从数据准备到可视化分析无缝移动到共享和协作,但实际上,它是一种反复的,来回的体验。

    通过Tableau Desktop的深入了解,您可以返回Tableau Prep来更改流程,或者在Prep中进行数据发现可以激发您对Tableau Server中的仪表板进行快速Web编辑。使用多个Tableau平台可以快速,轻松地从不同的,混乱的数据转变为可操作的洞察力。

    展开全文
  • 复杂链表的复制

    2016-09-20 14:03:36
    什么复杂链表? :每个节点包含两个指针域(next.random)和一个数据域(data),其中next指向下一个节点,而random可指向链表的任意节点(包括它本身)甚至NULL。 以下面的例子为例进行复制: 代码实现: #...
  • 如何一道惊艳面试官的数组去重问题?为什么写这篇文章?数组去重应该是面试必考问题之一。虽然它是一道并不复杂的问题,但是也能看出面试者的广度和深度,还有考虑问题的全面性。实际开发中我们应该...
  • 微生物研究十问十

    2020-05-29 20:52:12
    Q1:基于高通量测序的微生物多样性检测技术优势以及原理是什么? A:常规的微生物研究方法包括基因克隆文库、变性梯度凝胶电泳DGGE等,但这些方法的通病是信息量太小,且自然界中99%的微生物在实验室都没有办法纯化...
  • Q: 不知xml和html有什么区别...每个元素封装可能十分简单也可能十分复杂的数据。您可以定义一组无限制的 XML 标记。例如,您可以定义一些 XML 标记来声明订单中的数据,如价格、税收、发货地址、帐单地址等等。由于 XM
  • 无数的行业招聘Hadoop管理人员,确保他们的大数据系统可以在最复杂和动态的环境下被选中。 在2010年,没有人知道什么是Hadoop,但是今天,房间里的大象这个标志已经成为了大数据的宠儿。根据Wikibon, Hadoop市场在...
  • LinkedList底层是链表实现的,那么我们首先说下什么是链表。 和上篇文章的数组相比,链表要相对于更复杂一点,两者也是非常基础、常用,而且在面试中同时出现的概率也是很大的。 上篇文章我们说到,数据是需要连续的...
  • 特征是非常庞大复杂的,如果我们要让机器学会认识特征,我们就要把特征处理得简单一些。所以特征工程的主要目的就是对特征进行预处理,包括数据预处理,特征选择,特征降维。 数据预处理:我们在给机器传
  • 在一个复杂产品全 面响应式的项目里,交互每个阶段该产出什么?交互与视觉如何协作?前端何时介入?哪些事情让后端开发来做更合理?经历“玩客”第一版后,我们得到了一些 案。 响应式设计之所以叫响应式“设计”...
  • 1、为什么写这篇文章?数组去重应该是面试必考问题之一。虽然它是一道并不复杂的问题,但是也能看出面试者的广度和深度,还有考虑问题的全面性。实际开发中我们应该选择哪种方式数组去重,本文告诉你。你以为的不...
  • LinkedList底层是链表实现的,那么我们首先说下什么是链表。和上篇文章的数组相比,链表要相对于更复杂一点,两者也是非常基础、常用,而且在面试中同时出现的概率也是很大的。上篇文章我们说到,数据是需要连续的...
  • Spring框架是由于软件开发的复杂性而创建的,Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事。从简单性、可测性和松耦合性角度而言,绝大部分Java应用都可以用Spring。 2.Spring的整体架构? 大约...
  • 人成长的过程当然会变复杂,但是变复杂并不等于变聪明,就像一个机器做得复杂以后,性能未必会提高,可能还会下降,人也是如此。对于“上帝”的敬畏,其实是一种生活态度,它体现在我们应该如何定位自己,认识自己,...
  • 1、C#中property与attribute(抽像类)的区别,他们各有什么用处,这种机制的好处在哪里?:property和attribute汉语都称之为属性。不过property是指类向外提供的数据区域。而attribute则是描述对象在编译时或运行时...
  • 什么写这篇文章?数组去重应该是面试必考问题之一。虽然它是一道并不复杂的问题,但是也能看出面试者的广度和深度,还有考虑问题的全面性。实际开发中我们应该选择哪种方式数组去重,本文告诉你。你以为的不一定你...
  • “有一次和大学同学聚会,和几个在BAT的同学聊了聊技术,发现自己在创业公司这几年,完全是吃老本的状态,没有什么机会精进技术,同样是工作了三年,和同学的差距越来越大” 我继续问他,他说真正让他受打击的是这...
  • 这个问题很复杂,因为425也是过,625也是过,那我们怎么评判这个所谓的 过四级 究竟是个什么水平呢?事实上,425和625的差距绝不可以道里计,前者的水平估计也就是native 学前班的水平,后者大约有小学三四年级的...
  • 三天假期,闲着也是闲着,科普一个简单又复杂的问题:为什么一月一日叫“元旦”?好比问什么是书法?99%的人答案,书法不就是写漂亮字嘛,还有啥值得说的?的确,常识就是这样,不需要深究,也少有人愿意深究。再比如...
  • :日志管理类确实不影响代码正常执行,但是当代码复杂程度越来越高,我们需要日志管理类来帮我们记录代码运行状态,用以帮助我们理解代码的执行情况。此时使用封装好了的成熟的日志管理类,就能在实现我们需求的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 566
精华内容 226
关键字:

复杂答什么