首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java知识面试题复习(四)Java常用API

字符串常量池位于堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空间存储相同的字符串,在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在...String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。...String 有没有 length()方法 数组没有 length()方法 ,有 length 的属性。String 有 length()方法。...Date相关 包装类相关 自动装箱与拆箱 装箱:将基本类型用它们对应的引用类型包装起来; 拆箱:将包装类型转换为基本数据类型; int 和 Integer 有什么区别 Java 是一个近乎纯洁的面向对象编程语言...,从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

58350

Netty为什么高效,为什么这么受欢迎?

本文将结合源码详细解析Netty的高效和强大功能的设计原理,学习 Netty 是如何实现其卓越的性能和功能特性,也希望可以在日后工作中利用到 Netty 的设计思想。...举个例子,当发送方准备发送 「Hi」和「I am Erdan」这两个消息,由于MTU限制、缓冲区的大小等条件,可能会出现几种情况: 第一种情况,两条消息分到一个报文中,像这样: 第二种情况,「I am...Erdan」中的部分消息随「Hi」被分到一个报文中,像这样: 还可能会有第三、四...种情况,而当接收方接收到第一种情况时我们称之为粘包,第二种情况称之为拆包。...零拷贝通过将数据从内核空间直接传输到网络适配器,避免了数据在内核空间和用户空间之间的复制,从而减少了CPU的负担。...通过使用零拷贝技术,数据可以直接从磁盘读取并发送到网络设备,避免了中间的缓冲区拷贝,提高了文件传输的性能。 零拷贝内存传输:Netty 的 ByteBuf 类型支持零拷贝的内存传输。

36900
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Power Query极致应用:商品分拣效率提升一倍

    这个过程浪费巨大的时间和货架空间。 那么是否可以简化,实现以下效果:物流中心在收到供应商货品时,并不将货品上架,而是每箱按照分货单直接分到店铺?...这样可以大幅度减少工作量并且提高送货时效,时间就是金钱,你的新货比竞争对手早上市一天,就多一天钱赚。 直接拆箱分到店铺 这种操作方式叫做越库。...百度百科对越库的解释如下: 越库(Cross docking)是指货物从收货过程直接“流动”到出货过程,穿过仓库,其间用最少的搬运和存储作业,减少了收货到发货的时间,降低了仓库存储空间的占用。...[数量]}添加自定义列将两个查询中的数量全部展开为1,装箱单行数与分货单行数即可保持一致,即行数都等于货物的数量。这也是本文唯一使用的复杂公式。 {1.....[数量]} 展开上述自定义列后,再次添加自定义列,数值都为1即可,这里对原数量拆分到了多行。 分拆行的查询 3.

    95340

    【Python基础编程】深入解析参数、匿名与递归技巧

    返回了元组、列表或集合,可以通过拆包的方式将返回值拆分到每个变量中; 示例: def get_value(): return 10, 20, 30 a, b, c = get_value()...注意:这里谈到的*和**和不定长参数中的*和**没有任何关系 (三)总结 函数返回值拆包主要是将函数的返回值拆分到每个变量中,而星号拆包则是将容器中的元素先进行拆分,再传递给函数。...:表达式 例子:lambda x, y: x + y #定义一个加法函数 匿名函数的作用就是便利,使用一行代码就可以完成简单的函数定义,同时也可以当做实参传递到另一个函数中。...递归是一种非常强大的编程技巧,尤其适用于解决一些可以被分解为更小的相似子问题的问题。...缺点: 每次递归调用都会占用一定的栈空间,因此对于非常深的递归,可能会导致栈溢出。 递归通常比迭代方法更慢,因为每次函数调用都有一定的开销。

    11100

    Python+Selenium基础篇之5-第一个完整的自动化测试脚本

    分类专栏: Python+Selenium自动化测试从零到框架设计系列 作者 | Anthony_tester,300w+访问量博主,Oracle测试开发工程师。...我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项。...在写自动化脚本之前,需要明确手动脚本的步骤,然后去拆分到具体没一个步骤做什么,考虑好了之后,才开始动手去写脚本。...driver.quit() 这里只利用 两个等号(==)来判断两个字符串是否完全相同,有时候我们还需要对得到的字符串进行切割操作,才能进行去匹配,以后再介绍字符串切割处理在自动化测试结果判断中的使用...建议:以上代码包括以后文章中脚本举例,你还是最好去一行一行抄写,不要直接复制、黏贴到你记事本中。

    1.7K20

    .NET基础加强笔记

    12.将字符串变为字符数组的方法:char[]chs=str.ToCharArray();     将字符数组变为字符串的方法:string newDate = new string(chs); 13....(也可以折行,类似于2) 7.集合中对象的排序方法:        static void Main(string[] args)        {            List list...2.使用此方法可以避免乱码(一行一行的字节读取),比如使用Fs的话,可能将一个汉字读成两部分造成乱码(因为一个汉字占两个字节) 3.读文件的方式        using (StreamReader s1...,再找看还有没有匹配的组,如果有继续替换) (替换的方法) 1.str= Regex.Replace(str,"a+", "");替换为空字符串,为删除a.也相当于将a其余的东西提取出来。...所以要对对行操作时,要注意\d\r字符。          $匹配必须出现在字符串或行的末尾,或出现在字符串或行末尾的 \n 之前。

    1.2K20

    浅谈网络编程

    4、接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。 等等。 粘包、拆包解决办法 通过以上分析,我们清楚了粘包或拆包发生的原因,那么如何解决这个问题呢?...2、发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。...通过管道通信的大概思路是,首先创建一个管道,然后子进程向管道中写入信息,父进程从管道中读取信息,这样就可以做到父子进程直接实现通信了: 文件中写入信息;读进程通过读端(接收端)从管道文件中读取信息。两个进程协调不断地进行写、读,便会构成双方通过管道传递信息的流水线。...PIPE是一种非永久性的管道通信机构,当它访问的进程全部终止时,它也将随之被撤消;它也不能用于不同族系的进程之间的通信。而FIFO是一种永久的管道通信机构,它可以弥补PIPE的不足。

    88520

    同样是分库分表, 你为何如此优秀

    分库 选择合适的表拆分到多个数据库实例中, 可以直接缓解IO问题和CPU问题. 这里合适的表主要是指业务相关性不高的表. 例如, 一个电商库可以拆分为用户库,订单库,产品库等....在做分库操作时, 需要注意避免引入分布式事务问题; 另外, 在设计不合理的系统中, 各表关联性较高, 做分库的同时, 业务代码可能也需要做兼容改动. 总体来说, 是一种性价比较高的优化方案....也增加系统重做日志(redo log),回滚日志(undo log),二进制日志(binlog)的IO负担; (3)表的宽度过大,还会引起行溢出问题, 浪费更多磁盘空间; 这时可以优先做垂直拆分, 也就是垂直分表是将表的大字段或者多个字段分离到其他表中...这里拆表时, 可以根据以下拆分大表原则: (1)把不常用的字段或者不经常更新的字段拆分到一张表, 经常变更的字段拆分到另一个表中; (2)把text,blob等大字段拆分出来放在附表中,可以有效减少行溢出问题...这时最好的分库分表方法是将数据按时间分为热点数据和历史数据, 更久远的数据甚至可以做归档处理.

    31010

    浅谈网络编程

    4、接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。 等等。 粘包、拆包解决办法 通过以上分析,我们清楚了粘包或拆包发生的原因,那么如何解决这个问题呢?...2、发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。...通过管道通信的大概思路是,首先创建一个管道,然后子进程向管道中写入信息,父进程从管道中读取信息,这样就可以做到父子进程直接实现通信了: 文件中写入信息;读进程通过读端(接收端)从管道文件中读取信息。两个进程协调不断地进行写、读,便会构成双方通过管道传递信息的流水线。...PIPE是一种非永久性的管道通信机构,当它访问的进程全部终止时,它也将随之被撤消;它也不能用于不同族系的进程之间的通信。而FIFO是一种永久的管道通信机构,它可以弥补PIPE的不足。

    60200

    Swift| 基础语法(一)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift有所帮助...的用法总结 ---- Swift的语法特点 从它的语法中能看到Objective-C、JavaScript、C#、Python等语言的影子。...7.在swift中 默认所有的文件共享 所有的对象的方法也是默认可以调用 8.命名空间: 在同一个项目下 叫做命名空间 在同一个命名空间下 所有的文件共享 9.swift 属性默认都是 强引用的 10....swift中 init 方法 就是构造方法,并且所有的构造方法 都叫 init 11.在Swift中,运算符不能直接跟在变量或常量的后面。...hashValue //错误 let hashValue = strValue.hashValue 有一种特殊情况,假如我们非常肯定strValue一定是非nil的,我们也可以采用强制拆包处理:

    1.4K20

    Mysql优化

    这样的好处就是,减少了事务数据丢失的概率,而对底层硬件的IO要求也没有那么高(log buffer写到文件系统中,一般只是从log buffer的内存转移的文件系统的内存缓存中,对底层IO没有压力)。...BLOB类型,确实需要的话,建议拆分到子表中,不要和主表放在一起,避免SELECT*的时候读性能太差。...一般不要用MySQL数据库 比如这个语句在这个数据库查询很慢: select a from tms where b like ‘%haha%’ order by time limit 100; 第一种优化方法...一主多从,通过程序或dbproxy进行集群读写分离 单表超过800万,拆库拆表。...人工拆表拆库(登录、商品、订单) 百度、阿里国内前三公司,会选择从库进行备份,对数据库进行分库分表 MySQL基础安全 启动程序700,属主和用户组为MySQL。

    81820

    【Java】常用API——Object、StringBuilder、包装类

    原来 StringBuilder 是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对 其中的字符串进 行各种操作。...,就可以使用基本类型对应的包 装类,如下: 3.2 装箱与拆箱 基本类型与对应的包装类对象之间,来回转换的过程称为 ” 装箱 “ 与 ” 拆箱 “ : 装箱 :从基本类型转换为对应的包装类对象...拆箱 :从包装类对象转换为对应的基本类型。...,从 Java 5 ( JDK 1.5 )开始,基本类型与包装类的装箱、拆箱动作 可以自动完成。...例如: 3.3 基本类型与字符串之间的转换 基本类型转换为 String 基本类型转换 String 总共有三种方式,查看课后资料可以得知,这里只讲最简单的一种方式: String

    59850

    不好好学代码 你连当韭菜都不够格

    我们可以将数据库里面的数据,想象成excel表格中的一行数据,像这样。 一条数据 有没有一种熟悉的感觉?这不就是属性和赋值吗?...我们从数据库里面将这一条数据拿出来,直接将他放进一个对象里面。 从数据库到客户端 客户端也是可以直接获取对象的,在拿到服务器返回的数据以后,客户端就可以将数据展现在网页或者APP里面了。...各位看清楚了没有,其实包装类就是将基础类型封装到一个类里面,基础类型是不具备扩展性的,而类是可以扩展的,我们可以为类添加各种各样的方法,这样我们就可以定制各种我们需要的功能。...通过源码我们看到,他是将一个Integer类型对象中的成员变量value,使用 intValue 方法拿出来,赋值给currentPriceInt1。...有了自动装箱与拆箱,在编写程序的过程中可以更加灵活方便的在基础类型与对象之间进行转换。

    44430

    Java常量池详解,秒懂各种对象相等操作

    例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。 (1)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。...包装类型为Boolean 8种包装类型中除了Float,Double没有实现常量池,剩下的都实现了 为了更方便理解后面的内容,这里先解释一下自动装箱和拆箱 自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象...直接从IntegerCache中的cache数组中根据下标拿就可以,超出这个范围的每次去创建新的对象。其他几种包装类型的常量池和Integer思路都差不多,源码都很相似。...,JVM首先在字符串池中查找有没有"abc"这个字符串对象, 如果没有,则首先在字符串池中创建一个"abc"字符串对象,然后再在堆中创建一个"abc"字符串对象,然后将堆中这个"abc"字符串对象的地址赋给...str3 如果有,则不在池中再去创建"abc"这个对象了,直接在堆中创建一个"abc"字符串对象,然后将堆中的这个"abc"对象的地址赋给str4。

    88630

    java高级工程师面试题_java高级工程师面试题及答案解析「建议收藏」

    字符流在输出前将所有内容暂时保存到内存中,即缓存区暂时存储,如果想不关闭也将字符流输出则可以使用flush方法强制刷出。字节字符转化可能存在系统编码lang,要制定编码。...final修饰的方法不可以被重写。 final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。 五、Java中的Math. round(-1. 5)等于多少? 等于 -1。...i”的方式,Java 虚拟机会将其分配到常量池中,如果常量池中有”i”,就返回”i”的地址,如果没有就创建”i”,然后返回”i”的地址;而 String str=new String(“i”) 则会被分到堆内存中新开辟一块空间...不会,线程会一直等待下去 (4)synchronized可以自动释放锁,但是Lock要手动释放锁 (5)通过Lock能够知道线程有没有拿到锁,但是synchronized不可以 (6)Lock可以提高多个线程读操作的效率...Kafka是一种高吞吐量的分布式发布订阅消息系统,它能够处理消费者在网站中的所有动作流数据……。 具体的可以通过以下的文章来进行了解-Kafka是什么?特性有哪些?

    57520

    数据库分区、分表、分库、分片

    另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值,分区的优点如下: 1、相对于单个文件系统或是硬盘,分区可以存储更多的数据; 2、数据管理比较方便,比如要清理或废弃某年的数据...垂直拆分 将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中。 按照业务垂直划分。比如:可以按照业务分为资金、会员、订单三个数据库。...一致性哈希算法(Consistent Hashing)在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot Spot)问题,该方法的详细介绍参考此处...Google提出了一种新的一致性哈希算法Jump Consistent Hash,此算法零内存消耗,均匀分配,快速,并且只有5行代码,优势非常明显,详细介绍见此处http://my.oschina.net...(1)一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分 (2)另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库

    12.9K73

    Java大型互联网公司经典面试题,论JDK源码的重要性的无限思考

    接着我们回到正题,这里也是今天要讲的第一个知识点:Java的传值在java中,有两种传值方式:一种是按值传递,一种是引用传递!...那么,按值传递意味着将当前的参数传递给方法的时候,方法中的变量接收的是传过来变量的副本值(相当于拷贝了一份值),因此,我们修改了方法里面的变量的值,并不会改变外面变量的值。...大家,知道为什么会有地址指针这个东西,主要是我们的堆内存他主要是存储的是一些对象,对象是最占内存的,为了能够节省对内从的空间,就出现了这种概念。...valueOf(int i)) int b = new Integer(100); //这是自动拆箱 那么我们来实际看下,我们耳听为虚,眼见为实,我们来看下编译的字节码文件: 命令:javap -...[num1]的值为num2从Integercache中获取到的值2, 也就是修改为:integerCache[129] = 2 第三步:下一行代码执行 ?

    1.1K10

    【Java进阶】学好常用类,code省时省力(一)

    自动装箱:Integer num = 20;自动拆箱:int val = num;缓存设计从性能上考虑,将常用数据存储到缓存区域,使用时则不需要创建对象,从而提高性能。...= null; 没有初始化,没有分配空间String str = “”; 完成初始化,分配了空间,但没内容常用方法int length():返回字符串的字符个数(长度)(包含空格)char charAt...(int index):返回指定索引位置的字符(从0开始)int indexOf(String str):返回指定字符串在此字符串中从左向右第一次出现的索引(比如获取文件名“.”的位置)boolean...(int beginIndex, int endIndex):截取指定区域的字符串(从0开始,左闭右开)(比如截取文件的文件名部分)boolean startsWith():判断字符串是否以指定前缀结束..., char newChar):将字符串中的某个字符替换为另一个字符String[] split(String regex):拆分字符串可变字符串:StringBuilder/StringBuffer创建完毕内容可以修改

    45830

    Mysql性能优化

    Handler read rnd next:从数据文件中读取行的请求数。如果你在扫描很多表,该值会很大。通常情况下这意味着你的表没有做好索引,或者你的查询语句没有使用好索引字段。   ...因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。...可以将表和数据库从数据库目录移动到其它的位置并且用指向新位置的符号链接进行替换。推荐的方法只需要将数据库通过符号链接指到不同的磁盘。符号链接表仅作为是 最后的办法。         ...符号链接一个数据库的方法是,首先在一些有空闲空间的硬盘上创建一个目录,然后从 MySQL 数据目录中创建它的一个符号链接。      ...可以分别通过符号链接将数据文件和索引文件指到不同的目录。      3. 如果 mysqld 没有运行,符号链接可以从服务器命令行使用 ln -s 手动完成。

    2K110

    MySQL中的表设计优化

    在MySQL数据库中,表设计的优劣同样对性能有非常重要的影响。本节将介绍表设计的优化方法,包括巧用多表关系、表结构设计优化和表拆分等。...尽量使用可以正确存储数据的最小的数据类型。在数据类型选择上尽量选择够用的数据类型,避免选择大存储空间的数据类型浪费磁盘、内存和CPU缓存空间,并且处理时也需要更长的CPU周期,处理速度慢。...当表中存在类似于text或者很大的varchar类型的大字段时,如果在多数情况下访问该表时并不需要这个字段,那么可以将其拆分到另一个的独立的表中。 把常用属性分离成小表。...此时可以考虑拆表技术,以缓解单表的访问压力,提高数据库的访问性能。 拆表分为水平拆分和垂直拆分。...水平拆分一般是根据表中的某一字段取值进行划分,将数据存储在多个独立的表中。

    20810
    领券