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

程序猿的日常——Java中的集合列表

后来使用java,开始使用一些集合框架,基本都不用担心这个问题了。 简单的说,数组就是内存中的一段连续的空间,它对于随机访问或者针对某个索引的修改特别快,因为直接可以根据下标索引访问。...比如我们在做数学公式计算的时候,就可以用栈保存,并进行相关的计算。另外,在java中栈的应用也很广,比如程序栈就是通过栈的方式存储的。...在java中有一些复杂的集合类,就用到了链表,比如HashMap、HashTable、LinkedList等等,这个后面慢慢再说。 ?...Java中的列表 ArrayList 这个是日常开发应用最广泛的List集合类了,如果不是有特殊要求,基本上这个类就能满足大部分的需求。...,可以看出它的几个特性: 可以当作队列使用Deque,提供push,pop,offer,peek,poll等方法 支持序列化,内部使用transient修饰,自定义了序列化和反序列化的方法,节省空间 内部是一个静态内部类的

78460

解密Dubbo:自己动手编写一个较为完善的RPC框架(两万字干货)

Spring的配置创建RpcDiscover对象和RpcProxy对象,其中RpcDiscover用于从注册中心获取到服务的地址信息,RpcProxy用于创建类的动态代理对象 接下来我们来看一下具体的实现代码...RpcRegistry:往注册中心ZKServer设置地址信息,RPC-Server需要使用 RpcDiscover: 从注册中心ZKServer获取服务端的网络地址信息 RPC-client需要使用...;import java.util.concurrent.ConcurrentHashMap;/** * 序列化工具类(基于 Protostuff 实现) 用于把对象序列化字节数组, 把字节数组反序列化对象...,烦序列化帮助类 RpcEncoder 把消息对象转换为字节数组进行通信 RpcDecoder 把获取到的字节数组转换为对应的消息对象 rpc-server RPC服务端,启动RPC服务,扫描app-server...的配置创建RpcDiscover对象和RpcProxy对象,其中RpcDiscover用于从注册中心获取到服务的地址信息,RpcProxy用于创建类的动态代理对象 测试类:使用Spring的Junit进行测试

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

    Carson带你学序列化:Google出品的序列化神器Protocol Buffer使用攻略

    XML、Json 更小、更快、使用 & 维护更简单!...protobuf-java:2.6.1' // 注:protobuf-java的版本 一定要和 安装protocobuffer的版本 一致 步骤3:具体在Android项目中使用 3.1 消息对象类介绍...通过.proto文件 转换的 Java源代码 = Protocol Buffer 类 + 消息对象类(含Builder内部类) 消息对象类 是 Protocol Buffer 类的内部类 由于最常用的都是...3.1.1 消息对象类(Message类) 消息对象类 类通过 二进制数组 写 和 读 消息类型 使用方法包括: 序列化和反序列化 消息 --> protocolBuffer.toByteArray...Builder addAllPhone(Iterable value); // 将一个装满元素的整个容器添加到列表中 public Builder clearPhone();

    1.2K20

    21天学习挑战赛之java的IO流(二)

    【应用】 案例需求 使用字符缓冲流读取文件中的数据,排序后再次写到本地文件 实现步骤 将文件中的数据读取到程序中 对读取到的数据进行处理 将处理后的数据添加到集合中 对集合中的数据进行排序 将排序后的集合中的数据写入到文件中...,相当于文件中持久保存了一个对象的信息 反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化 对象序列化流: ObjectOutputStream 将Java对象的原始数据类型和图形写入OutputStream...,再次读取到内存中 实现步骤 创建序列化流对象 创建多个学生对象 将学生对象添加到集合中 将集合对象序列化到文件中 创建反序列化流对象 将文件中的对象数据,读取到内存中 代码实现 学生类 public...【应用】 Properties介绍 是一个Map体系的集合类 Properties可以保存到流中或从流中加载 属性列表中的每个键及其对应的值都是一个字符串 Properties基本使用 public class...String getProperty(String key) 使用此属性列表中指定的键搜索属性 Set stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串

    44320

    「2020最新」Spring最易学习教程 3— 代理设计模式 Spring AOP 动态代理原理

    租客也可以享受完整的服务。 在程序中,Action(租客) 和 Serivce(房东) 的矛盾,也可以通过添加一个代理类解决。 1.3 静态代理 ?...args(参数列表) 5.3 within表达式 用来匹配特定的类,根据类名匹配。...6.2 Spring AOP AOP为了解决程序中零散的共性代码的复用问题,是OOP有力补充。 增强:共性代码,额外功能。...标准的隔离级别4种: 隔离级别 特点 问题 READ_UNCOMMITTED 可以读取到未提交的事务 脏读 READ_COMMITTED 只能读到已经提交的事务 不可重复读 REPEATABLE_READ...同1个事务中读取到数据始终一致 幻影读 SERIALIZABLE 序列化读,不允许并发操作 性能差 Oracle数据库,只支持2种:READ——COMMITTED 和 SERIALIZABLE ,MySQL

    35730

    程序员的36大Dubbo面试问题及答案

    22.Dubbo使用什么通信框架? 23.dubbo协议默认端口号?http协议默认端口?hessian?rmi? 24.Dubbo默认序列化框架?其他的你还知道?...服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。...优先级从高到低: JVM -D参数,当你部署或者启动应用时,它可以轻易地重写配置,比如,改变dubbo协议端口; XML, XML中的当前配置会重写dubbo.properties中的; Properties...支持REST风格远程调用(HTTP + JSON/XML) 支持基于Kryo和FST的Java高效序列化实现 支持基于嵌入式Tomcat的HTTP remoting体系 升级Spring...这个问题其实面试中如果问dubbo的话,基本就会带这个问题。有时间的话,大家可以下载源码,读一读 言语是把杀人不见血的刀

    44410

    历年阿里面试题汇总(2017年不断更新中)

    2、Collections.sort() 该算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素效益高子列表中的最低元素,则忽略合并)。...此算法可提供保证的N*log(N)的性能,此实现将指定列表转储到一个数组中,然后再对数组进行排序,在重置数组中相应位置处每个元素的列表上进行迭代。...,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。...友情链接 :Session机制详解 ---- Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?...反射的作用: 1、动态地创建类的实例,将类绑定到现有的对象中,或从现有的对象中获取类型。 2、应用程序需要在运行时从某个特定的程序集中载入一个特定的类。

    61020

    「2020最新」Spring最易学习教程 3— 代理设计模式 Spring AOP 动态代理原理

    租客也可以享受完整的服务。 在程序中,Action(租客) 和 Serivce(房东) 的矛盾,也可以通过添加一个代理类解决。...: 随着额外功能的增多,代理类数量随之增多,不利于管理 代理类冗余,存在多个代理类提供相同的功能 解决方案:动态代理 Spring动态代理:无需程序员手动编写代理类,只需要提供额外功能代码,然后由Spring...5.2 args表达式 用来匹配特定参数的方法。 args(参数列表) 5.3 within表达式 用来匹配特定的类,根据类名匹配。...标准的隔离级别4种: 隔离级别 特点 问题 READ_UNCOMMITTED 可以读取到未提交的事务 脏读 READ_COMMITTED 只能读到已经提交的事务 不可重复读 REPEATABLE_READ...同1个事务中读取到数据始终一致 幻影读 SERIALIZABLE 序列化读,不允许并发操作 性能差 Oracle数据库,只支持2种:READ——COMMITTED 和 SERIALIZABLE ,MySQL

    38720

    Torrent文件的解析与转换

    以JSON序列化整个字典后,单文件和多文件的结构大致如下,注意:JSON内容省略了pieces摘要大部分内容,仅展示了开头部分,另外由于本人序列化工具设置所致,所有的整型都会序列化成字符串类型。...列表类型 列表类型由以下结构表示:l列表数据>e,即列表以字母l开头,以字母e结束,中间的均为列表中的数据,中间的值可以为任意的四种类型之一。...,整个读取过程中读过的偏移量要累加到offset return data; } 获取整数类型 这里有一个注意项,考虑到数据边界问题,例如java等语言,推荐使用Long类型,以防数据越界。...){ endindex = offset } } string getBith(byte[] info,int start,int end){ // 获取info中从.../tree/master/src/main/java/com/rekent/tools/utils/torrent 解析类源码:https://github.com/Rekent/common-utils

    3.8K10

    Carson带你学序列化:手把手带你分析 Protocol Buffer使用源码

    二进制串 对于C++,因为具有内存操作符,所以 二进制串 容易理解:C++的字符串可以直接被传输层使用,因为其本质上就是以 '\0' 结尾的存储在内存中的二进制串 对于 Java,二进制串 = 字节数组...done) { int tag = input.readTag(); // 通过While循环 从 输入流 依次读tag值 // 根据从tag...总结 反序列化的过程总结如下: 从 输入流 依次读 字段的标签值(即Tag值) 根据从标签值(即Tag值)值解析出来的标识号(Field_Number),判断对应的数据类型(wire_type) 调用对应的解码方法...反序列化的过程如下: 从 输入流 依次读 字段的标签值(即Tag值) 根据从标签值(即Tag值)值解析出来的标识号(Field_Number),判断对应的数据类型(wire_type) 调用对应的解码方法...对比于XML 的序列化 & 反序列化过程 XML的反序列化过程如下: 从文件中读取出字符串 将字符串转换为 XML 文档对象结构模型 从 XML 文档对象结构模型中读取指定节点的字符串 将该字符串转换成指定类型的变量

    1.5K40

    oracle使用in占位符超过1000报错 java.sql.SQLSyntaxErrorException:ORA-01795:列表中的最大表达式数为1000

    目录 前言 异常情况下(不超过1000也是正常的) 支持超过1000情况 前言 当我们使用在mapper.xml文件中写sql时,in占位符过多,会导致报下面的异常: org.springframework.jdbc.BadSqglGrammarException...: ###Error querying database.Cause: java.sq.SQLSyntaxErrorException:ORA-01795:列表中的最大表达式数为1000 异常情况下(...不超过1000也是正常的) mapper.xml文件和Dao层、service层是下面这样的 的长度过大,大于1000的话,就会报上述异常 :Error querying database.Cause: java.sq.SQLSyntaxErrorException...:ORA-01795:列表中的最大表达式数为1000, 那应该怎么改呢,可以将超过1000的变成or的形式 支持超过1000情况 正确的mapper.xml、Dao层、Service层如下 <?

    2.6K30

    我开源了一套 RPC 框架,学爆它!

    从服务注册器中找到对应的服务实现类,并且通过 Java 的反射机制调用 method 指定的方法。...1)在 RPC 模块中编写请求和响应封装类。 目录结构如下: 请求类 RpcRequest 的作用是封装调用所需的信息,比如服务名称、方法名称、调用参数的类型列表、参数列表。...业务流程如下: 反序列化请求为对象,并从请求对象中获取参数。 根据服务名称从本地注册器中获取到对应的服务实现类。 通过反射机制调用方法,得到返回结果。 对返回结果进行封装和序列化,并写入到响应中。...在 invoke 方法中,我们可以获取到要调用的方法信息、传入的参数列表等,这不就是我们服务提供者需要的参数么?用这些参数来构造请求对象就可以完成调用了。...在 ServiceProxy 代理类中添加断点,可以看到调用 userService 时,实际是调用了代理对象的 invoke 方法,并且获取到了 serviceName、methodName、参数类型和列表等信息

    57911

    保姆级教程,终于搞懂脏读、幻读和不可重复读了!

    该隔离级别因为可以读取到其他事务中未提交的数据,而未提交的数据可能会发生回滚,因此我们把该级别读取到的数据称之为脏数据,把这个问题称之为脏读。...4.SERIALIZABLE 序列化,事务最高隔离级别,它会强制事务排序,使之不会发生冲突,从而解决了脏读、不可重复读和幻读问题,但因为执行效率低,所以真正使用的场景并不多。...然后使用命令来检查当前连接窗口的事务隔离界别,如下图所示: 开启事务并查询用户列表信息,如下图所示: 脏读演示步骤2 在窗口 1 中开启一个事务,并给 Java 账户加 50 元,但不提交事务...,执行的 SQL 如下: 脏读演示步骤3 在窗口 2 中再次查询用户列表,执行结果如下: 从上述结果可以看出,在窗口 2 中读取到了窗口 1 中事务未提交的数据,这就是脏读。...使用命令来检查当前连接窗口的事务隔离界别,如下图所示: 在窗口 2 中开启事务,并查询用户表,执行结果如下: 此时查询的列表中,Java 用户的余额为 100 元。

    6.8K33

    阿里历年经典Java面试题汇总

    2、Collections.sort() 该算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素效益高子列表中的最低元素,则忽略合并)。...此算法可提供保证的N*log(N)的性能,此实现将指定列表转储到一个数组中,然后再对数组进行排序,在重置数组中相应位置处每个元素的列表上进行迭代。...() 8、toString() ---- 对于Java中多态的理解 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象...,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。...反射的作用: 1、动态地创建类的实例,将类绑定到现有的对象中,或从现有的对象中获取类型。 2、应用程序需要在运行时从某个特定的程序集中载入一个特定的类。

    41820

    Android:手把手带你分析 Protocol Buffer使用 源码

    二进制串 对于C++,因为具有内存操作符,所以 二进制串 容易理解:C++的字符串可以直接被传输层使用,因为其本质上就是以 '\0' 结尾的存储在内存中的二进制串 对于 Java,二进制串 = 字节数组...done) { int tag = input.readTag(); // 通过While循环 从 输入流 依次读tag值 // 根据从tag...总结 反序列化的过程总结如下: 1. 从 输入流 依次读 字段的标签值(即Tag值) 2....反序列化的过程如下: 从 输入流 依次读 字段的标签值(即Tag值) 根据从标签值(即Tag值)值解析出来的标识号(Field_Number),判断对应的数据类型(wire_type) 调用对应的解码方法...对比于XML 的序列化 & 反序列化过程 XML的反序列化过程如下: 从文件中读取出字符串 将字符串转换为 XML 文档对象结构模型 从 XML 文档对象结构模型中读取指定节点的字符串 将该字符串转换成指定类型的变量

    1.8K10

    day17-缓冲流&转换流&序列化流&打印流&Properties

    反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。...对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创 ObjectOutputStream类 java.io.ObjectOutputStream 类,将Java对象的原始数据类型写出到文件...**发生这个异常的原因如下: 该类的序列版本号与从流中读取的类描述符的版本号不匹配 该类包含未知数据类型 该类没有可访问的无参数构造方法 Serializable 接口给需要序列化的类,提供了一个序列版本号...:" + i); } Properties集合 Properties集合概述 - 是一个Map体系的集合类 - Properties可以保存到流中或从流中加载 - 属性列表中的每个键及其对应的值都是一个字符串...getProperty(String key) 使用此属性列表中指定的键搜索属性 Set stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串

    10110

    阿里历年经典Java面试题汇总

    2、Collections.sort() 该算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素效益高子列表中的最低元素,则忽略合并)。...此算法可提供保证的N*log(N)的性能,此实现将指定列表转储到一个数组中,然后再对数组进行排序,在重置数组中相应位置处每个元素的列表上进行迭代。...() 8、toString() 对于Java中多态的理解 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象...,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。...反射的作用: 1、动态地创建类的实例,将类绑定到现有的对象中,或从现有的对象中获取类型。 2、应用程序需要在运行时从某个特定的程序集中载入一个特定的类。 如何保证RESTful API安全性 ?

    54560

    【JAVA反序列化】序列化与反序列化&Java反射&URLDNS链

    原生序列化与反序列化 序列化:JAVA对象转换成字节序列的过程;将数据分解为字节流,以便存储在文件中或在网络上传输;用一个字节序列表示一个对象,该字节包含对象的数据、对象的类型、对象的存储属性。...序列化对象会通过ObjectOutputStream的writeObject方法将一个对象写入到文件中 反序列化:字节序列恢复成JAVA对象的过程;打开字节流并重构对象,反序列化是使用了readObject...Java对象 应用场景(涉及到将对象转换成二进制,序列化保证了能够成功读取到保存的对象) 想把内存中的对象保存到一个文件中或者数据库中时候 想用套接字在网络上传送对象的时候 想通过RMI传送对象的时候...涉及的协议 XML&SOAP:XMl是一种常用的序列化与反序列化协议,具有跨机器、跨语言等优点,SOAP(Simple Object Access Protocol)是一种被广泛应用的,基于XML为序列化和反序列化的结构化消息传递协议...由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展 让java具有动态性 修改已有对象的属性 动态生成对象 动态调用方法 操作内部类和私有方法 在反序列化漏洞中的应用

    18010
    领券