android的一些知识小记

HashMap和 HashTable 的区别
HashTable比较老,是基于Dictionary 类实现的,HashTable 则是基于 Map接口实现的,hashmap去掉了hashtable的contain()方法,但是加上了containvalue和containkey()方法。
HashTable 是线程安全的, HashMap 则是线程不安全的
HashMap可以让你将空值作为一个表的条目的key或value

tips:在内存优化阶段,使用Arraymap可以更加节约内存。Arraymap是二分法的查找方法,当删除和添加数据时,会对空间重新调整,使用大量数据时,效率比HashMap低,相当于”牺牲时间换空间”。

GC内存泄漏的原因
1. 数据库的游标没有及时关闭
2. 构造adapter时,没有使用contentview。也就是说listview的优化没有做好
3. bitmap不使用时没有及时的recycle释放
4. activity中的对象的生命周期大于activity的生命周期

TCP/IP中的协议
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由以太网设备驱动程序发来的数据包,并把该数据包发送到更高层—TCP或UDP层。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,大量数据传输时用TCP,但传输数据较于UDP慢。UDP与TCP位于同一层,但对于数据包的顺序错误或重发。是一种面向非连接的,不可靠的,无连接的协议。效率快与TCP。

TCP建立一个连接的三次握手:客户端连接请求SYN+服务器端同意请求SYN +ACK+客户端收到服务器端确认的ACK。
终止一个连接的四次挥手:应用发送一个FIN分节+接收到这个FIN的对端执行 “被动关闭”ACK分节+一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN分节+接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN确认ACK分节。

Override和Overload的含义与区别
Overload顾名思义是重新加载,它可以表现类的多态性,可以是函数里面可以有相同的函数名但是参数名、返回值、类型不能相同;或者说可以改变参数、类型、返回值但是函数名字依然不变。(继承)
就是ride(重写)的意思,在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖(重写)了。(接口)

Http和Https的区别
Http是超文本传输协议,信息是明文传输,Https 则是具有安全性的ssl(Secure Socket Layer)加密传输协议. Http和Https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.一般需要安全加密,身份认证的都是https.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.java的Java类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值