Android设置/配置页面,androidx.preference的使用

2023-05-16

一场与Preference的战争

  • 一、介绍
  • 二、简单使用
    • 以下将会通过简单的Demo实现Preference的样例
    • 引入
      • build.gradle
      • MainActivity.java
      • activity_main.xml
      • SettingFragment.java
      • pref_setting.xml
  • 三、组件的使用
    • P r e f e r e n c e C a t e g o r y \color{HotPink}{ PreferenceCategory } PreferenceCategory
    • P r e f e r e n c e \color{HotPink}{Preference} Preference
    • D i a l o g \color{HotPink}{Dialog} Dialog
      • a r r a y s . x m l \color{HotPink}{arrays.xml} arrays.xml
    • 可 跳 转 的 P r e f e r e n c e \color{HotPink}{可跳转的Preference} Preference
    • S w i t c h P r e f e r e n c e C o m p a t \color{HotPink}{SwitchPreferenceCompat} SwitchPreferenceCompat
    • D r o p D o w n P r e f e r e n c e \color{HotPink}{DropDownPreference} DropDownPreference
      • a r r a y s . x m l \color{HotPink}{arrays.xml} arrays.xml
    • S e e k B a r P r e f e r e n c e \color{HotPink}{SeekBarPreference} SeekBarPreference
  • 总结
  • ∗ 注 : 转 载 请 注 明 出 处 . \color{HotPink}{*注:转载请注明出处.} :.😡

👉持续更新,敬请关注…

一、介绍

  原有的android.support库已经废弃,建议使用androidx.preference,preference是一个非常简洁的设置页面,并且与系统界面拥有高契合度,让用户不会有太多的突兀感。
用官方的话来说就是
  无需与设备存储空间交互,也不需要管理界面,便能构建交互式设置画面。此库自带 Material 主题,可在不同的设备和操作系统版本之间提供一致的用户体验。

二、简单使用

以下将会通过简单的Demo实现Preference的样例

Demo演示图

  • 引入

build.gradle

   // Java language implementation
   implementation "androidx.preference:preference:1.2.0"
   // Kotlin
   implementation "androidx.preference:preference-ktx:1.2.0"
  • MainActivity.java

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.settings, new SettingFragment())
                .commit();
    }
}
  • activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/settings"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • SettingFragment.java

import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;

public class SettingFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener {
    private SharedPreferences sharedPreferences = null;
    private Preference loginDjiAccount;

    @Override
    public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
        setPreferencesFromResource(R.xml.pref_setting, rootKey);
        //用于取值的SharedPreferences 
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
        initView();
    }

    private void initView() {
        loginDjiAccount = findPreference("login_dji_account");
        if (loginDjiAccount != null) {
            loginDjiAccount.setOnPreferenceClickListener(this);
        }
    }

    @Override
    public boolean onPreferenceClick(@NonNull Preference preference) {
        switch (preference.getKey()) {
            case "login_dji_account":
                String rtmpUrlStr = sharedPreferences.getString("rtmp_url_pre", "");
                if ("".equals(rtmpUrlStr)) {
                    Toast.makeText(getActivity(), "请在直播推流地址中随意填写值,再来点我...", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getActivity(), "填写了:" + rtmpUrlStr, Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;
        }
        return false;
    }
}
  • pref_setting.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <PreferenceCategory app:title="DJI账户">
        <Preference
            app:key="login_dji_account"
            app:summary="点击事件"
            app:title="点我呀" />
        <Preference
            app:enabled="false"
            app:key="logout_dji_account"
            app:title="不可点击" />
    </PreferenceCategory>

    <PreferenceCategory
        app:initialExpandedChildrenCount="0"
        app:title="Dialog类型组件">
        <EditTextPreference
            app:enableCopying="true"
            app:key="rtmp_url_pre"
            app:summary="请设置"
            app:title="直播推流地址"
            app:useSimpleSummaryProvider="true" />
        <ListPreference
            app:enableCopying="true"
            app:entries="@array/finishedAction"
            app:entryValues="@array/finishedAction_values"
            app:key="uav_finishedAction"
            app:summary="返航"
            app:title="任务结束动作"
            app:useSimpleSummaryProvider="true" />
        <MultiSelectListPreference
            app:entries="@array/failSafe"
            app:entryValues="@array/failSafe_values"
            app:key="multi_select_list"
            app:summary="悬停"
            app:title="失控动作" />
    </PreferenceCategory>
    <PreferenceCategory app:title="其他的组件">
        <Preference
            app:summary="点击可以跳转到百度欸"
            app:title="跳转Preference">
            <intent
                android:action="android.intent.action.VIEW"
                android:data="http://www.baidu.com" />
        </Preference>
        <SwitchPreferenceCompat
            app:key="uav_maxFlightRadiusEnabled"
            app:selectable="true"
            app:summary="设置无人机最大可飞行半径距离"
            app:summaryOn="建议关闭此功能,否则将限制设备最大飞行距离"
            app:title="限远开关" />
        <EditTextPreference
            app:dependency="uav_maxFlightRadiusEnabled"
            app:key="uav_maxFlightRadius"
            app:summary="2000"
            app:title="限远(米)"
            app:useSimpleSummaryProvider="true" />
        <Preference
            app:icon="@mipmap/ic_launcher"
            app:key="icon"
            app:summary="可以带Icon的Preference"
            app:title="图标" />
        <Preference
            app:key="single_line_title"
            app:singleLineTitle="true"
            app:summary="但是下面的summary就不行了,它依然还是可以换行的,毕竟是注释信息嘛"
            app:title="这个超级长,并且他不会换行,自带省略号的Preference" />
        <DropDownPreference
            app:entries="@array/finishedAction"
            app:entryValues="@array/finishedAction_values"
            app:key="dropdown"
            app:title="点我!点我!点我!"
            app:useSimpleSummaryProvider="true" />

        <SeekBarPreference
            app:defaultValue="20"
            app:key="seekbar"
            app:title="基本飞行速度(m/s)" />
    </PreferenceCategory>
</PreferenceScreen>

以上为一个简单的Preference的使用
官方API androidx.preference


三、组件的使用

  • P r e f e r e n c e C a t e g o r y \color{HotPink}{ PreferenceCategory } PreferenceCategory

PreferenceCategory
  用于对相似的Preference进行分组的容器。PreferenceCategory显示一个类别标题,将Preference进行分组归类。

PreferenceCategory示例

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
   <PreferenceCategory
       app:icon="@mipmap/ic_launcher"
       app:initialExpandedChildrenCount="0"
       app:key="demo_key"
       app:summary="演示的作用"
       app:title="演示">
       <EditTextPreference
           app:key="setting_name"
           app:title="设置用户名" />
       <SwitchPreference
           app:defaultValue="false"
           app:key="setting_switch"
           app:title="Switch模式" />
       <CheckBoxPreference
           app:summary="选择的内容"
           app:summaryOff="关闭summary"
           app:summaryOn="开启summary"
           app:title="选择项" />
   </PreferenceCategory>
</PreferenceScreen>
key释义
app:icon设置图标
app:key设置key,类似于android:id
app:summary子标题,类似于注释的作用
app:title标题
app:enabledtrue或false,设置是否可操作
app:initialExpandedChildrenCountvalue为int类型,类似于抽屉效果,int值为不隐藏的数量,与上图中显示 高级效果一致
  • P r e f e r e n c e \color{HotPink}{Preference} Preference

Preference
  类似于Button。可进行点击,具有大标题、小标题等。

Preference示例

<PreferenceCategory app:title="分组">
       <Preference
           app:key="login_dji_account"
           app:summary="点击事件"
           app:title="点我呀" />
       <Preference
           app:enabled="false"
           app:key="logout_dji_account"
           app:singleLineTitle="true"
           app:title="不可点击,虽然我超级长,但是我就不换行,打我呀" />
   </PreferenceCategory>
key释义
app:key设置key,类似于android:id
app:summary子标题,类似于注释的作用
app:title标题
app:enabledtrue或false,设置是否可操作
app:icon设置图标
app:singleLineTitle设置为true时,超出屏幕部分自带省略号
  • D i a l o g \color{HotPink}{Dialog} Dialog

Dialog类型组件
  点击弹出Dialog组件。常见的有三种,输入框弹窗、单选弹窗、多选弹窗。
单选弹窗.png
多选弹窗.png
输入框弹窗.png

<PreferenceCategory
       app:initialExpandedChildrenCount="0"
       app:title="Dialog类型组件">
         <!--输入框-->
       <EditTextPreference
           app:enableCopying="true"
           app:key="rtmp_url_pre"
           app:summary="请设置"
           app:title="直播推流地址"
           app:useSimpleSummaryProvider="true" />
         <!--单选-->
       <ListPreference
           app:enableCopying="true"
           app:entries="@array/finishedAction"
           app:entryValues="@array/finishedAction_values"
           app:key="uav_finishedAction"
           app:summary="返航"
           app:title="任务结束动作"
           app:useSimpleSummaryProvider="true" />
         <!--多选-->
       <MultiSelectListPreference
           app:entries="@array/failSafe"
           app:entryValues="@array/failSafe_values"
           app:key="multi_select_list"
           app:summary="悬停"
           app:title="失控动作" />
   </PreferenceCategory>
key释义
app:enableCopying设置true时,用户可长按复制值
app:key设置key,类似于android:id
app:summary子标题,类似于注释的作用
app:title标题
app:useSimpleSummaryProvider设置为true时,将会把选中或输入的值显示到summary中
app:entries该值是将array中的值作为显示值
app:entryValues当选中某项时,该值作为value进行存储
  • a r r a y s . x m l \color{HotPink}{arrays.xml} arrays.xml

将该文件放入value文件夹

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string-array name="finishedAction">
       <item>返航</item>
       <item>悬停</item>
       <item>最后一航点降落</item>
       <item>返回第一航点悬停</item>
   </string-array>
   <string-array name="finishedAction_values">
       <item>GO_HOME</item>
       <item>NO_ACTION</item>
       <item>AUTO_LAND</item>
       <item>GO_FIRST_WAYPOINT</item>
   </string-array>
   <string-array name="failSafe">
       <item>悬停</item>
       <item>降落</item>
       <item>返航</item>
   </string-array>
   <string-array name="failSafe_values">
       <item>HOVER</item>
       <item>LANDING</item>
       <item>GO_HOME</item>
   </string-array>
</resources>
  • 可 跳 转 的 P r e f e r e n c e \color{HotPink}{可跳转的Preference} Preference

可跳转的Preference
  点击该组件,可跳转网页。
可跳转百度

     <Preference
           app:summary="点击可以跳转到百度欸"
           app:title="跳转Preference">
           <intent
               android:action="android.intent.action.VIEW"
               android:data="http://www.baidu.com" />
       </Preference>
key释义
app:summary子标题,类似于注释的作用
app:title标题
intent跳转组件
intent:data跳转地址
  • S w i t c h P r e f e r e n c e C o m p a t \color{HotPink}{SwitchPreferenceCompat} SwitchPreferenceCompat

SwitchPreferenceCompat
  该组件为开关组件,同时可通过该组件控制其他组件是否可操作。
控制开关.png

<SwitchPreferenceCompat
           app:key="uav_maxFlightRadiusEnabled"
           app:summary="设置无人机最大可飞行半径距离"
           app:summaryOn="建议关闭此功能,否则将限制设备最大飞行距离"
           app:title="限远开关" />
       <EditTextPreference
           app:dependency="uav_maxFlightRadiusEnabled"
           app:key="uav_maxFlightRadius"
           app:summary="2000"
           app:title="限远(米)"
           app:useSimpleSummaryProvider="true" />
key释义
app:key设置key,类似于android:id
app:summary子标题,类似于注释的作用,默认值
app:app:summaryOn打开时所显示的副标题
app:app:summaryOff关闭时所显示的副标题
app:title标题
app:dependency填写所属上级的id,可被填写ID的控件控制
  • D r o p D o w n P r e f e r e n c e \color{HotPink}{DropDownPreference} DropDownPreference

DropDownPreference
  该组件为下拉按钮弹窗,点击弹出的下拉弹窗将会在按钮旁显示.
点击前.png
点击后.png

       <DropDownPreference
           app:entries="@array/finishedAction"
           app:entryValues="@array/finishedAction_values"
           app:key="dropdown"
           app:title="点我!点我!点我!"
           app:useSimpleSummaryProvider="true" />
key释义
app:key设置key,类似于android:id
app:title标题
app:entries该值是将array中的值作为显示值
app:entryValues当选中某项时,该值作为value进行存储
app:useSimpleSummaryProvider副标题将会采用选中值
  • a r r a y s . x m l \color{HotPink}{arrays.xml} arrays.xml

将该文件放入value文件夹

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string-array name="finishedAction">
       <item>返航</item>
       <item>悬停</item>
       <item>最后一航点降落</item>
       <item>返回第一航点悬停</item>
   </string-array>
   <string-array name="finishedAction_values">
       <item>GO_HOME</item>
       <item>NO_ACTION</item>
       <item>AUTO_LAND</item>
       <item>GO_FIRST_WAYPOINT</item>
   </string-array>
   <string-array name="failSafe">
       <item>悬停</item>
       <item>降落</item>
       <item>返航</item>
   </string-array>
   <string-array name="failSafe_values">
       <item>HOVER</item>
       <item>LANDING</item>
       <item>GO_HOME</item>
   </string-array>
</resources>
  • S e e k B a r P r e f e r e n c e \color{HotPink}{SeekBarPreference} SeekBarPreference

SeekBarPreference
  该组件为横向滑动条组件.
横向滑动条.png

       <SeekBarPreference
           app:defaultValue="20"
           app:key="seekbar"
           app:title="基本飞行速度(m/s)" />
key释义
app:key设置key,类似于android:id
app:title标题
app:defaultValue滑动条的默认值

总结

  • 后续会持续进行更新各个属性,敬请关注。
  • 有疑问请留言或通过私信,我会尽快回复。

∗ 注 : 转 载 请 注 明 出 处 . \color{HotPink}{*注:转载请注明出处.} :.😡

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android设置/配置页面,androidx.preference的使用 的相关文章

  • 生产中偶尔会发生 android.webkit.WebView 类膨胀错误

    我的应用程序在 Google Play 上 它在大多数设备 数千个用户 上运行良好 但在极少数情况下 占每日活跃用户百分比的一小部分 我得到Error inflating class android webkit WebView当我为我的片
  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • 居中复选框视图

    如果除了 或代替 复选框之外 您还对单选按钮感兴趣 请参阅this https stackoverflow com questions 16701806 centering views 2而是提问 尽管存在
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • NumberPicker 的格式化值在单击时消失

    我的 NumberPicker 在setDescendantFocusability FOCUS BLOCK DESCENDANTS 模式和setWrapSelectorWheel false 已关闭 我用一个简单的格式化程序格式化了我的
  • Android 从键盘读取

    我的登录屏幕根本没有文本字段 当用户使用 RFID 扫描仪扫描他的 id 令牌时 我会得到一个 8 个字符长的字符串 其原理与使用键盘相同 只是更快 我希望我的登录活动在用户扫描其令牌时而不是之前执行 有一个聪明的方法来实现这个吗 我不能有
  • Android:拍照后调用裁剪活动

    我在解析拍摄照片的 uri 来裁剪活动时遇到问题 在我的应用程序中 用户可以拍摄一张照片或从图库中选择一张照片 然后裁剪并上传 一切听起来都很简单 从图库中选择时 图库应用程序会返回所选照片的 uri 如下所示 content media
  • 无法找到/下载 AppCompat-v7:23.1.1

    怎么了 我遇到了很多 找不到 appcompat v7 23 1 1 的问题 许多解决方案都不起作用 经过几个小时的思考和寻找答案 我遇到了一个奇怪的问题 I have gotAndroid 支持库 23 1 1 已安装 所有功能 exce
  • Android Studio:Android 设备监视器未显示我的设备

    我的真实设备是索尼 Xperia c6502安卓版本4 3 我确定我将其连接到我的计算机然后打开开发者选项 USB调试 on 在 SDK 管理器中 Google USB 驱动程序已安装 I downloaded Xperia Z Drive
  • Android 导航回到 Activity;不要重新加载父级

    我有一个场景 我单击 ListFragment 并启动一个新的 Activity 如下所示 public void onListItemClick ListView l View v int position long id super o
  • 无法从 com.android.aaptcompiler.ParsedResource@ef79973 提取资源

    无法从 com android aaptcompiler ParsedResource ef79973 提取资源 无法从 com android aaptcompiler ParsedResource 4c95ce87 提取资源 C Use
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的
  • Flutter Spotify Api 身份验证

    我需要在使用 Spotify api 的 Flutter 应用程序中对用户进行身份验证 我使用 flutter web auth 打开 WebView 并让用户在那里登录 我无法返回应用程序 在 Spotify 仪表板中 我将回调 Uri
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • Android 中带有透明背景的 ImageButton [重复]

    这个问题在这里已经有答案了 我已经按照这篇文章在android中制作ImageButton 安卓图像按钮 https stackoverflow com questions 2283444 android image button 图像出现
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • Android - 正确使用 invalidateOptionsMenu()

    我一直在寻找很多invalidateOptionsMenu 我知道它的作用 但我想不出这种方法在现实生活中有用的任何例子 我的意思是 例如 假设我们要添加一个新的MenuItem to our ActionBar 我们可以简单地获取菜单on
  • 使用 AndroidX ExifInterface 从图像中检索 GPS EXIF 数据?

    我的目标是 Android 13 并使用新的照片选择器 https developer android com training data storage shared photopicker检索图像 例如 val photoPicker
  • 画布:尝试使用回收的位图错误

    我是一个相当新的程序员 所以任何建议将不胜感激 我有一个类 每次调用它时都会在循环中运行 AsyncTask AsyncTask 看起来像这样 public class LoadImageTask extends AsyncTask
  • 我可以通过在 Android Activity 中声明适当的成员“静态”来提高效率吗

    如果一个 Activity 在实践中是单例 我认为我可以通过声明适当的成员 静态 来获得一些效率 且风险为零 是的 The Android 文档说 http developer android com guide topics fundam

随机推荐

  • 为WPF和Silverlight的Grid添加边框线

    为WPF和Silverlight的Grid添加边框线 原文链接 在此源代码的基础上 经过简单修改 保证了边框线条宽度统一 修改后的源代码 using System Windows using System Windows Controls
  • 腾讯加入QQ群 连接代码

    lt a href 61 34 http qun qq com jointhegroup gid 112083409 34 target 61 34 blank 34 gt lt img title 61 34 java技术研究QQ群 34
  • c/c++常用资源 c/c++书籍下载

    c c 43 43 常用资源 aix在线文档 xff1a http publib16 boulder ibm com cgi bin ds rslt 1 各种c c 43 43 编译器 http www clipx net norton p
  • &amp;和&amp;&amp;区别,有谁可以详细的讲一下谢谢!

    amp 和 amp amp 区别 xff0c 有谁可以详细的讲一下谢谢 xff01
  • Centos下安装oracle jdk

    Centos下安装oracle jdk 安装jdk环境就那么几步 xff1a 下载jdk 解压缩 设置环境变量 其中设置环境变量又包括 配置java home配置class path配置系统path 非要说麻烦的话 xff0c 最麻烦的就是
  • 【Spring】Spring MVC原理及配置详解

    Spring Spring MVC原理及配置 1 Spring MVC概述 xff1a Spring MVC是Spring提供的一个强大而灵活的web框架 借助于注解 xff0c Spring MVC提供了几乎是POJO的开发模式 xff0
  • JAVA项目接入腾讯应用宝YSDK平台之QQ微信登录接入模式详解

    前言 腾讯应用宝QQ 微信登陆功能的接入相当简单 xff0c 客户端要做的操作让你们的前端人员来负责 我们JAVA后端要做的只是 34 将前端登录后得到的返回消息 在发送给ysdk平台 进行一下二次验证 看客户端登录的是否有效即可 34 弄
  • JAVA项目接入腾讯应用宝YSDK平台之道具直购支付模式接入详解

    前言 道具直购模式 简单的说就是Q币 人民币 兑换游戏中的货币 可以先看下官网介绍 nbsp 在看下面这篇博客 nbsp 这时 你就应该理解掌握了80 nbsp 最后关键的20 nbsp 再看我下面的介绍 nbsp 就可以完美的接入成功 官
  • 由于mariadb不支持json操作符->>,只得卸载mariadb,并安装mysql

    1 玛莉亚 xff08 maria xff09 不喜欢 gt gt 今天我的一个基于mysql的程序 xff0c 在mariadb上跑 xff0c 结果报错了 xff0c 查了一下 xff0c 原来是不支持如下sql xff1a SELEC
  • Kotlin--›Kotlin时代的Adapter(Android 一个话时代的DslAdapter(多类型,情感图,加载更多,多选,群组等))

    DslAdapter Kotlin时代的Adapter Dsl 的形式使用 RecyclerView Adapter 支持情感图状态切换 加载更多 多类型Item等 有何用 只有一个目的高效开发 一切都是为了效率 可能以前写界面 还在为了继
  • PageRank算法 到 textRank

    1 PageRank 算法概述 PageRank 即网页排名 xff0c 又称网页级别 Google 左侧排名或佩奇排名 是Google创始人拉里 佩奇和谢尔盖 布林于1997年构建早期的搜索系统原型时提出的链接分析算法 xff0c 自从G
  • 2015年阿里实习生面试总结

    2015年阿里实习生招聘总结 就在这学期作为大三的我 xff0c 本想在这个学期安安静静的学习 xff0c 9月份再参加招聘 xff0c 偶然在朋友那里听到了阿里实习生招聘的消息 xff0c 我还是挺喜欢阿里这个公司的 xff0c 氛围好
  • 揭秘Socket与底层数据传输实现

    揭秘socket 什么是socket xff1f socket字面意思其实就是一个插口或者套接字 xff0c 包含了源ip地址 源端口 目的ip地址和源端口 但是socket在那个位置呢 xff0c 在TCP IP网络的四层体系和OSI七层
  • tomcat的启动过程(Tomcat源码解析(三))

    Tomcat组件生命周期管理 在 Tomcat总体结构 xff08 Tomcat源代码解析之二 xff09 中 xff0c 我们列出了Tomcat中Server Service Connector Engine Host Context的继
  • Tomcat请求处理过程(Tomcat源码解析五)

    前面已经分析完了Tomcat的启动和关闭过程 xff0c 本篇就来接着分析一下Tomcat中请求的处理过程 在开始本文之前 xff0c 咋们首先来看看一个Http请求处理的过程 xff0c 一般情况下是浏览器发送http请求 gt 建立So
  • Tomcat 设计模式总结(Tomcat源代码阅读系列之八)

    本篇我们将来分析一下Tomcat中所涉及到设计模式 xff0c 本文我们将主要来分析 外观模式 xff0c 观察者模式 xff0c 责任链模式 xff0c 模板方法模式 命令模式 在开始本文之前 xff0c 笔者先说明一下对于设计模式的一点
  • TCP三次握手及关闭时的2MSL分析

    TCP IP三次握手四次挥手 xff0c 是非常重要的 xff0c 这个链接与关闭过程也是很简单的 xff0c 但为什么是三次握手 xff1f 以及为什么要等待2MSL的状态 xff1f 大部分人也许听到这个问题就蒙了 xff0c 这篇博客
  • HashTable源码剖析

    lt span style 61 34 font size 14px font weight normal 34 gt public class Hashtable lt K V gt extends Dictionary lt K V g
  • HashMap源码剖析

    大部分思路都是一样的 xff0c 只是一些细节不一样 xff0c 源码中都标了出来 jdk容器源码还是挺简单的 public class HashMap lt K V gt extends AbstractMap lt K V gt imp
  • Android设置/配置页面,androidx.preference的使用

    一场与Preference的战争 一 介绍二 简单使用以下将会通过简单的Demo实现Preference的样例引入build gradleMainActivity javaactivity main xmlSettingFragment j