自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 探索Java中的ThreadLocal:深入理解并解析源码

由于ThreadLocal的特性,即使两个线程共享同一个ThreadLocal对象,它们获取到的值也是独立的,不会相互影响。ThreadLocal的核心在于`ThreadLocalMap`,它是一个哈希表,用于存储线程本地变量的键值对。当调用`ThreadLocal`的`set()`方法时,实际上是在当前线程的`ThreadLocalMap`中存储键值对。当调用`ThreadLocal`的`get()`方法时,实际上是在当前线程的`ThreadLocalMap`中查找对应的值。### 深入源码分析。

2017-02-16 16:09:49 5355 1

原创 深入探究 Android SparseArray:源码解析与应用实践

然而,并非所有的数据集都是密集的,有时候我们会遇到大量数据中只有少量有效项的情况,这就是所谓的“稀疏数据”。SparseArray 能够以更低的内存消耗和更快的访问速度存储和检索数据,因此在 Android 应用的开发中广泛应用。在开发过程中,根据实际情况选择合适的数据结构是至关重要的,SparseArray 作为一种特殊的数据结构,可以在某些场景下为我们提供更好的解决方案。SparseArray 的实现原理基于两个重要的组件:一个用于存储键的整型数组和一个用于存储值的 Object 数组。

2017-02-15 08:36:34 1335 1

原创 git教程及在android studio中的使用(五):将文件纳入git管理和提交更改至本地仓库

我们新建了一个文件夹MyProject,并用git init命令使该项目纳入git管理。git status 命令用来查看当前仓库所处的状态。

2017-02-14 11:48:44 1150 1

原创 git教程及在android studio中的使用(四):创建git仓库

git提示我们初始化了一个空仓库。即使MyProject不是空文件夹,它也会提示初始化了一个空仓库。当使用git init初始化一个目录后,这个目录就成为git项目的根目录。该目录下的文件不会自动纳入git管理,需要显式添加(见下一篇博文)。

2017-02-08 08:50:02 746

原创 git教程及在android studio中的使用(三):设置和查询git的配置信息

git config 命令用来配置和查询git的配置信息。git用户提交对仓库的更改时,会留下操作历史,用户名和邮箱用来标识git用户。例如下面的一条提交记录,Author即表示git用户。

2017-02-06 16:58:03 1049

原创 git教程及在android studio中的使用(二):git基本工作原理

这里讲的是面向git使用者这一层的工作原理,要想深入理解git,需要明白它的工作原理。假设,现在有一个git项目文件夹MyRepo。我们以此为例,讲述git是如何工作的。①为整个git项目文件夹,即MyRepo②为工作区(work directory),MyRepo文件夹下,除.git文件夹之外即为工作区。红色且标有“f”标签的圆圈代表位于工作区的各个文件。工作区是你增加、删除、修...

2017-02-04 10:39:48 2142

原创 git教程及在android studio中的使用(一):git简介及下载、安装、在android studio中配置git、github

git是什么?git是一种版本控制系统,在开发者中广泛使用。为什么要进行版本控制呢?这和开发中的实际需要有关。举几个例子:app版本1.0已经发布到应用市场,1.1的版本正在开发中,突然有一天,发现1.0的版本存在严重bug需紧急修复,此时1.1尚未开发完毕且距离1.1的预定发布日期还早。你需要找回1.0版本的代码,基于此版本进行修复工作。同时,正在开发中的1.1版本的代码也要不受干扰,以...

2017-01-23 11:59:40 3078

原创 HTTP与HTTPS的区别

虽然HTTP和HTTPS在名称上看起来相似,但在安全性和数据传输方面存在明显的差异。随着网络犯罪活动的增加和用户对隐私保护的关注增强,采用HTTPS协议已成为保护网站和用户数据的标准做法。因此,在构建和管理网站时,应该优先考虑使用HTTPS来确保数据的安全传输。通过理解HTTP和HTTPS之间的区别,用户可以更好地保护其在线活动和个人信息。

2017-01-20 17:46:15 572 1

原创 HTTP详解(一):HTTP各版本差异

HTTP 是基于 TCP/IP 协议的一个应用层协议,是现代互联网的一个基础协议。规定了客户端与服务端之间的通信格式以及所占用的服务端口80(HTTPS是443)。

2017-01-16 11:02:28 11300 1

原创 TCP详解(五):TCP与UDP的区别

UDP同TCP一样,是一种传输控制协议,全称为User Datagram Protocol。UDP数据包称为datagram,由header和data组成,data部分是真正传输的数据,header部分存储控制信息。source port:发送方主机端口号,代表数据从终端的哪个端口发出。destination port:接收方端口号,代表数据将抵达目标终端的哪个端口。length 数据长度,包含header的data。

2017-01-10 17:43:17 3954

原创 TCP详解(四):TCP拥堵控制——Congestion Control

TCP发送方发送的数据包并不是一步直达接收方,而是跋山涉水,途经多个网络节点,最终抵达接收方。发送方发送的数据量虽然通过receiver window可以保证不超出接收方的处理能力,但有可能超出网络承载的能力,依然会造成数据包丢失。

2017-01-10 16:09:18 3005

原创 TCP详解(三):TCP流量控制——Flow Control

两个应用程序通过TCP协议在网络中传输数据时,双方在硬件性能和软件性能上均可能存在差异,导致双方处理数据的速度不一致。当发送方的发送速度低于接收方接的处理速度时,不会出现问题。而当发送方的发送速度高于接收方的处理速度时,接收方会抛弃暂时无法“安置”的数据包。由于这些丢弃的数据包得不到确认,发送方会重新发送它们,直到他们被成功接收,造成资源浪费。TCP流量控制就是确保发送方的发送速度不要超出接收方的处理能力。

2016-12-27 23:01:59 3029 1

原创 TCP详解(二) : TCP三次握手、四次挥手

避免已经失效的SYN包到达服务端后直接建立连接,浪费资源。如果连接只需要两次握手,客户端发送了一个SYN包(seq = m,SYN = 1),由于网络堵塞,迟迟没能到达服务端。

2016-12-25 11:50:59 789

原创 TCP详解(一):什么是TCP

两台电脑进行数据交换需要遵循协议,就像两个人之间对话一样,只有遵循同一协议的双方才能正常交流,一方说德语,而一方说意大利语,是无法顺利沟通的。数据在互联网中的流动需要多种协议携手完成,就像编程语言与计算机之间的“沟通协议”一样,程序员不会直接通过机器语言与计算机交流,而是通过:高级编程语言→汇编语言→机器语言。因为高级编程语言更接近自然语言,能降低编程的复杂度,提高生产效率。

2016-12-05 17:20:02 2023

原创 Android Material Design:AppBarLayout

AppBarLayout主要用来包裹Toolbar,实现Material Design特性的 app bar。AppBarLayout具有阴影效果,并且可响应滚动控件,做出某种滚动效果。①AppBarLayout和滚动控件必须为CoordinatorLayout的直接子View②滚动控件必须实现NestedScrollingChild接口,如RecyclerView,NestedScrollingView③为AppBarLayout包裹的View设置ScrollFlags,指定以何种效果响应滚动控件

2016-12-04 19:18:14 2267 1

原创 解决Toolbar中的困惑,随心所欲定制Toolbar

前言:本文的重头戏在第4部分,主要讲解新手接触Toolbar时遇到的困惑和如何随心所欲地定制Toolbar,例如,. 如何正确的使用Toolbar. xml中设置属性无效. 导航按钮导致的间距问题. 自定义标题文字的大小和颜色. 自定义ActoinView的文字大小和颜色. 自定义溢出菜单的弹出窗口的背景、弹出位置. 标题居中 ...

2016-10-11 10:26:27 20028 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除