3月5号 百词斩

产品体验报告:百词斩————英语学习的领跑者 百词斩作为全网排名第一的背单词软件,日均活跃用户达211.07万,日均启动次数达840.57万,在背单词软件中处于绝对的霸主的地位。但是,越来越多产品不断更新换代,产品和内容同质化越来越严重,百词斩是如何留住用户,维持盈利呢?本文带来了一些自己的思考。 本文主要从以下几个方面分析: 1.市场分析 2.产品分析 3.用户分析 4.功能分析及优化建议 5.运营方式分析 6.总结 0 体... 阅读详情

1.内部类和内部静态类的区别

a.普通内部类隐含的保存了指向外部类的对象的指针,而静态内部类没有
b.静态内部类可以有静态成员,而非静态内部类则不允许有静态成员
c.静态内部类只能访问外部类的静态成员,而非静态内部类可以访问外部类的所以成员
d.实例化一个普通内部类的方法:

OutObj objOut = new OutObj();
OutObj.InObj inObj = objOut.new InObj();

e.实例化一个静态内部类的方法:

OutObj.StaticInObj inner = new OutObj.StaticInObj(); 

2.两个activity之间如何传输比较大的数据(几十M)

首先,Activity可以用以下5中方式传递数据
a.Intent
Intent传递的数据不能超过1M,当数据太大的时候会抛出TransactionTooLargeException异常,或者无法通过该Intent启动Activity
The Binder transaction buffer has a limited fixed size, currently 1Mb
b.Application
我经常在Application中存储Context对象,这样在应用的任何地方都能获得Context对象了,那么我们也可以在Application中存储数据。
c.使用单例

public class DataHolder{
    private String data;
    public String getData(){return data;}
    public void setData(String data){this.data = data;}
    private static final DataHolder holder = new DataHolder();
    public static DataHolder getInstance(){
        return holder;
    }
}

在Activity A中设置数据:

DataHolder.getInstance().setData(data);

在Activity B中读取数据:

String data = DataHolder.getInstance().getData();

d.静态成员变量
实现和原理和单例差不多
e.持久化(sql,share preference,file)
优点:全局都能访问,数据不会丢失
缺点:操作麻烦,效率低下

总结:综上所述,除了Intent外,其他四种我们都可以尝试下(Application, 单例, 静态成员变量, 数据持久化)

3.Activity A启动Activity B,B如何向A传输数据

假设我们两个Activity的名字分别为”ActivityA”与”ActivityB”
在ActivityA中

''''''
Intent intent = new Intent("ActivityA.this", "ActivityB.class");
startActivityForResult(Intent intent, int requestCode);
''''''
onActivityResult(int requestCode, int resultCode, Intent data);
''''''

在ActivityB中

''''''
setResult(int resultCode, Intent data);
''''''

(1) A中使用startActivityForResult(Intent intent, int requestCode)来启动B,且指定了requestCode,这个参数的意义是A可能会启动很多个Activity,用这个参数来标识这些Activity
(2) B中用setResult(int resultCode, Intent data)来向A返回数据
(3) 经过(2)后,A中的onActivityResult(int requestCode, int resultCode, Intent data)就会回调

4.插入排序和归并排序的比较

插入排序:

Java:
void InsertSort(int data[]) {
    for (int i = 1; i < data.length; i++) {
        int j = i, tmp = data[i];
        while (j > 0 && data[j - 1] > tmp) {
            data[j] = data[j - 1];
            j--;
        }
        data[j] = tmp;
    }
}

归并排序:

void MergeArray(int data[], int start, int mid, int end, int temp[])
{
    int i = start, j = mid + 1;
    int m = mid, n = end;
    int k = 0;

    while(i <= m && j <= n)
    {
        if(data[i] <= data[j])
            temp[k++] = data[i++];
        else
            temp[k++] = data[j++];
    }

    while(i <= m)
        temp[k++] = data[i++];

    while(j <= n)
        temp[k++] = data[j++];

    for(int i = 0; i < k; i++)
    {
        data[start + i] = temp[i];
    }
}

void MergeSort(int data[], int start, int end, int temp[])
{
    if(start < end)
    {
        int mid = (start + end) / 2;
        MergeSort(data, start, mid, temp);
        MergeSort(data, mid + 1, end, temp);
        MergeArray(data, start, mid, end, temp);
    }
}

当数据规模比较小或者数据基本有序的情况下用插入排序比较好
若数据规模比较大,则采用归并排序(nlogn)

5.Activity和Fragment如何传输数据

1.Activity向Fragment传递数据
在Fragment中可以调用getActivity()获得实例,然后可以调用getViewById()等方法获得控件实例

View listView = getActivity().findViewById(R.id.list);

2.Fragment向Activity传递数据——Fragment实例
a.在Activity中定义Fragment时,保存Fragment的实例
b.调用FragmentManager,接着使用findFragmentById()或者findFragmentByTag()获得相应Fragment的实例

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);

3.Fragment向Activity传递数据——Fragment接口
Activity中有一个按钮,Activity中有一个Fragment,Fragment中有一个EditText,当点击Activity中的按钮后,就会Toast出EditText的内容
这里写图片描述

解决方案:在Fragment中定义一个接口,并要求宿主Activity实现这个接口。

//fragment_my.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:background="#ccc"
    tools:context="com.coder_ken.demo1.MyFragment">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10">
        <requestFocus />
    </EditText>

</FrameLayout>
//MyFragment.java
public class MyFragment extends Fragment {
    private EditText editText;

    public MyFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_my, container, false);
        editText = (EditText) view.findViewById(R.id.editText1);
        return view;
    }

    public void getEditText(CallBack callBack){
        String result = editText.getText().toString();
        callBack.getResult(result);
    }

    public interface CallBack {
        public void getResult(String result);
    }

}
//activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="horizontal"></LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10" >
            <requestFocus />
        </EditText>

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="获得Fragment的值" />
    </LinearLayout>

</LinearLayout>
//MainActivity.java
public class MainActivity extends AppCompatActivity {

    private FragmentManager manager;
    private FragmentTransaction transaction;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);
        manager = getSupportFragmentManager();
        transaction = manager.beginTransaction();
        final MyFragment myFragment = new MyFragment();
        transaction.add(R.id.fragment, myFragment, "");
        transaction.commit();
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myFragment.getEditText(new MyFragment.CallBack() {
                    @Override
                    public void getResult(String result) {
                        Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();
                    }
                });
            }
        });
    }
}

4.Fragment与Fragment之间通信
既然Activity->Fragment与Fragment->Activity之间的通信都解决了,那么:
在FragmentA中获取Activity的实例,通过Activity找到FragmentB的实例,FragmentA与FragmentB就可以通信了。

6.hash实现的原理

什么是哈希表
哈希表是一种以键-值(key - value)存储的数据结构,只要我们输入待查找的key,就可以马上知道它的value。
哈希函数
若关键字为k,则其值存放在f(k)的存储地址上,那么这个对应关系f就称为哈希函数。
哈希算法
1.直接定址法:
2.数字分析法:
3.平方取中法:
4.折叠法:
5.除留余数法:
6.随机数法:
获取正整数哈希值最常用的方法是使用除留余数法。对于任意正整数K,计算k除以M的余数,M一般取素数
避免哈希冲突
1.拉链法
通过哈希函数,我们可以将键转换成数组的索引(0-M-1),但是对于两个或者多个键具有相同索引值的情况,我们需要有一种方法来处理这种冲突。

一种比较直接的方法是将大小为M的数组的每个元素指向一个链表,链表的每一个节点都存储散列值为该索引的键值对。
这里写图片描述
如图,John Smith和Sandra Dee的哈希值都是152,所以他们存储在152指向的链表当中。
对采用拉链法的哈希实现的查找分为两步,首先是根据散列值找到对应的链表,然后沿着链表顺序找到相应的键。
2.线性探测法
线性探测法是开放寻址法解决哈希冲突的一种方法,基本原理为,使用大小为M的数组来保存N个键值对,其中M > N,我们需要使用数组中的空位解决碰撞冲突。
这里写图片描述

上图中,“Ted Baker”是有唯一的哈希值153的,但是153现在被“Sandra
Dee”占用了。原先“Sandra
Dee”进行哈希的时候发现152已经被占用了,所以往下找发现153没有被占用,所以存放在153上,后来“Ted Baker”哈希到153上,发现已经被占用了,所以往下找,发现154没有被占用,所以存放到154上面了。
参考链接:http://www.cnblogs.com/yangecnu/p/Introduce-Hashtable.html 谢谢原文作者

四级单词联想记忆法:高效英语词汇学习技巧 联想记忆法是一种基于认知科学的词汇学习技术,通过建立单词与图像、故事和生活场景的多维联系来提升记忆效率。其核心原理是利用人脑对具象信息更强的记忆能力,将抽象词汇转化为生动的心理表征。这种方法特别适合英语四级词汇学习,能帮助学习者突破死记硬背的局限,实现40%以上的记忆效率提升。在实际应用中,结合词根词缀分析和场景串联等技巧,可以系统性地构建个人词汇网络。记忆卡片和Anki等工具的应用,进一步优化了复习流程,使词汇记忆更加科学高效。 阅读详情

相关推荐

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

m0_69718028的博客 8118

大二实习经验分享贴--成都百词斩前端实习岗

大二实习经验分享贴--成都百词斩前端实习岗

zxcvbnmodd的博客 463

差分运放电路输出电压偏置设计解析

差分运算放大电路是信号处理中的基础模块,通过差分对管结构实现共模抑制与差模放大。其核心原理基于运放的虚短虚断特性,当电阻网络满足对称条件时,输出电压与输入差分成正比。在工业测量系统中,由于ADC通常仅支持正电压输入,需要通过偏置电路将双极性信号平移至正电压范围。典型设计采用精密基准电压源和匹配电阻网络,既保持信号完整性又满足系统接口要求。本文以-100V高压测量为例,详细解析了分压网络设计、参考电压选取以及电阻匹配等关键技术要点,为传感器接口电路设计提供实践参考。

weixin_35750747的博客 470

百词斩不复习_百词斩怎么复习,学好英语的前提条件是?

虽然可能不能像某宝一样选择多样高性价比,百词斩怎么复习,学好英语的前提条件是?如伯明翰大学。一定要谨慎选择,法律规定英国的动物都是女王的财产。符合条件可以于三月和四月在线学习的学生,这也是一种矛盾修辞法“行前准备”即“客户卖出外币现汇的价格”,只能等到2021年9月8日才能向UCAS提交申请,国有企事业单位入职:首先,PharmacyMPhil。其实还是建议打算英国留学的同学们尽量早些准备申请:第...

weixin_35995565的博客 1646

【Get深一度】小波分析概念1——紧支撑集是什么意思,通俗解释

最近学到小波,在仿真中也用到了紧支撑函数;紧支撑性越好,说明能量越集中;用最通俗的话来讲,紧支撑是这样的: 对于函数f(x),如果自变量x在 0附近的取值范围内,f(x)能取到 C; 而在此之外,f(x)取值为 0; 那么这个函数f(x)就是紧支

Trey_优快云 的优快云博客 8349

3分钟搞定!QQ音乐歌单导出Excel保姆级教程(含歌单ID获取技巧)

本文提供了一份详细的QQ音乐歌单导出Excel保姆级教程,帮助用户轻松备份和管理个人音乐收藏。教程核心在于获取歌单ID,并利用浏览器开发者工具执行脚本提取数据,最后通过Excel导入功能快速生成结构化表格。整个过程无需编程基础,3分钟即可搞定,是个人数据管理的实用技巧。

weixin_29008691的博客 1403

python毕设 基于web的百词斩单词记忆系统6wd2k8c8程序+论文 可用于毕业设计

在全球化日益加深的今天,英语作为国际交流的主要语言,其重要性不言而喻。然而,单词记忆一直是英语学习中的一大难题。传统的单词记忆方法往往枯燥乏味,效率低下,难以满足现代人快节奏的学习需求。近年来,随着移动互联网技术的飞速发展,各类单词记忆应用应运而生,其中“百词斩”凭借其独特的图片记忆法和互动学习方式,在众多应用中脱颖而出。本研究旨在深入剖析“百词斩”单词记忆系统的运作机制,通过对其功能的优化与创新,进一步提升用户的单词记忆效率和学习体验。

一木学长毕设 679

CCC数字钥匙3.0标准解读(16)

介绍通信过程最重要部分:身份认证和加密.介绍需要身份认证的过程和需要加密的数据及过程.

weixin_41738640的博客 1535

2024年3月月终总结

3)Java学习和STM32的学习,每天一篇笔记博文,每天看youkuaiyun.com上的技术文章以及复习自己的笔记,没有中断。4)每天坚持听经闻法至少15分钟,以及在《证量的世界》公众号上发文一篇。《方剂学 邓中甲主讲 成都中医药大学 82集》看到了第21集。听净界法师的《大乘起信论》讲解,听到第28集了。一转眼三月份又过去了,写一下例行总结回顾下。5)坚持经常打乒乓球,每次打约50分钟左右。1)英语学习继续进行,日课一天都没有中断。6)自3月7日起,每天坚持盘腿打坐5分钟。2)中医学习每天15分钟,没有中断。

qq_37191547的博客 333

避开这5个坑!Tushare数据获取与清洗的常见问题解决方案

本文详细解析了使用Tushare进行金融数据分析时常见的5大问题,包括Token失效、数据缺失、频率限制等,并提供了Python实战解决方案。通过智能填充策略、队列化管理和分层存储设计,帮助开发者高效获取和清洗金融数据,提升量化分析效率。特别适合金融数据分析师和Python开发者参考。

f9g0h的博客 425

【华为OD机试真题】6、数组去重和排序 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

题目描述 >给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序

KJ.JK 3890

日常打卡10

(大二下)

2301_79065033的博客 507

PyTorch实战(25)——使用PyTorch构建DQN模型

深度Q网络 (Deep Q-learning Network, DQN) 在强化学习领域取得了巨大的成功和广泛的应用,PyTorch 结合 gymnasium 库为我们提供了强大的工具,支持在各种强化学习环境中测试不同类型的深度强化学习模型。在本节中,我们使用 PyTorch 框架构建使用卷积神经网络架构的 DQN 模型,模型通过自主学习掌握 Atari 经典游戏《Pong》的操作策略,最终实现击败电脑对手的竞技目标。

盼小辉丶的博客 3502

百词斩 面试题 面试经验分析 成都超有爱科技有限公司 软件测试工程师 测试面试题分享 实战之战损版

百词斩 成都超有爱科技有限公司 软件测试测试面试题分享

Benjamin 优快云博客 1555

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2025毕设springboot+vue基于web的百词斩单词记忆系统论文+程序

1] 刘小玲, 李慧云, 殷珊珊, 贾少华, 许杰辉, 郝颖. 一种基于软件测试任务的信息化管理系统的原型设计[J]. 现代信息科技, 2024, 8 (12): 91-95。[3] 龙丹, 刘欣, 杨呈永. 基于应用型人才培养的Java综合实训课程教学改革研究[J]. 电脑知识与技术, 2023, 19 (14): 131-133。1.2023年6月20日至8月31日,搜集相关素材资料,整合资源信息,规划设计思路及论文内容,进行毕业设计和毕业论文的前期准备工作。

Node.js毕设程序源码 908

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

2026年最新学生用英语单词学习软件实测数据是怎样的?

本次测评选取当前市场主流的5款英语单词学习工具,分别为天学网、百词斩、墨墨背单词、不背单词、扇贝单词,统一测评维度包括平台技术与合作资源、教材适配与核心功能、实测量化数据、场景问题匹配度,测试环境为2026年3月各产品最新版本客户端,测试样本为120名初一至高二在读学生,测试周期4周,所有数据均为实测采集的原始结果,无主观调整。

aibookmarks的博客 307

2026年最新高中生英语词汇学习APP实测数据是多少?

实测过程:导入相同10套教材词汇清单匹配,模拟高中生自主完成40个词汇学习任务的全流程。本次实测选取市面主流的5款英语词汇学习工具:北京天学网教育科技股份有限公司旗下天学网、百词斩、墨墨背单词、不背单词、扇贝单词,统一测评维度为高中教材词汇匹配度、同步学习场景适配性、公开运营数据、用户反馈情况,测试环境为2026年3月iOS17.4、安卓14双系统,模拟高中生日常同步背词、教师布置词汇作业两类核心使用场景,所有数据采集自公开运营后台、第三方监测平台及实测操作记录。实测动作:执行统一测评动作。

aibookmarks的博客 264

2月开始准备还来得及吗?同等学力英语3个月高效备考计划表

undefined

2401_86286852的博客 650

计划表

1,本计划执行时间2017年8月1号到2018年12月25号(即考研时间日)2,本计划制定时间为2017年7月29号到7月31号。3,本计划一经制定不再更改,必须执行,不可放弃,如果放弃将永不再制定计划,并公之于众。4,本计划分为工作阶段与备考研究生阶段。其中工作时间为2017年8月1号到2018年3月1号(计划在2月开始准备离职)。备考研究生阶段为2018年3月1号到2018年12月24号(即研究

zachary的博客 593

官宣‼️2026同等学力国考:3.16报名[特殊字符]5.17考试!内附备考技巧✅

很多刚接触同等学力申硕的同学容易混淆这两个概念,今天一次讲清!✅校考(课程考试)性质:由你就读的研究生课程班所在高校自行组织。内容:对应你所学专业培养方案中的课程(如管理学原理、法学基础等)。时间:通常在课程学习期间或结业前完成,由各高校自主安排。作用:证明你已完成硕士阶段课程学习,成绩合格是申请硕士学位的前提条件之一。难度:相对灵活,通过率较高,一般由学校命题、阅卷。✅国考(全国统考)全称:同等学力人员申请硕士学位外国语水平和学科综合水平全国统一考试。

2401_86286852的博客 352

假期学习进度记录(更新2月11日)

2020-1-11 第一天 花了几天时间,今天看完了B站的spring视频,笔记整理了3篇博客 https://www.bilibili.com/video/av47952931 看两集矩阵论视频 P14-P15 https://www.bilibili.com/video/av26603443?p=14 百词斩复习单词20个,背新单词20个 ...

努力奋斗 437

英语浪潮

前言 上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。想成为什么样子的道士呢?当听到了一个道理的时候,是知道,但知道并不是可以让我们的生活发生改变,知行合一,知道做到这样我们才能够离自己的目标更进一步,那么对自己提出这样的几个问题: 1、你想要到达什么样子的目标? 2、你的截止时间是什么时候? 3、你怎么去实践它? 4、你通过什么方式让自己可执行度高? 不可缺少的 一、书籍

邢美玲 848

总结与展望

现在是周六中午,外面天气不好,闲来无事,写一写2017年的总结以及2018年的展望。 我这个人表达能力有限,对于写东西十分不擅长,这在工作中十分不利。所以从现在起,我计划每周都要在优快云上更新一篇博文,一是可以锻炼自己的文字表达能力,二是能够加深所学知识点,三是便于以后的回顾。 说来也搞笑,今天是2018年的1月20号,今年都已经过去了1/18了。现在开始写2017年的总结,确实有些后知后觉

大道至简,知易行难 2600

2020考研南大842上岸--------初试经验以及初试避坑指南分享

前言 二战终被拟录取,这阵子在放松下,然后慢慢回到正轨,准备新一轮的前进了。 我估摸这篇文章不会有很多人看。所以随便写写啦。 来给想考南大软院的朋友一点经验,祝你们少走弯路。 其实经验贴看多了没啥用,最后还是要落实。 总有人一天学6小时就考上了。 也有人一天学14小时也没考上。 这都很正常。 一定要落实到位。 初试专业课用书,公共课老师选择,和一些坑 首先说说19年一战吧。一战我是大三上开始准备的也即是19年3月份开始的。 我这人比较鲁莽,所以没看几所学校。 看了本校的然后又

可及的小屋 9629

【2023】暨南大学计算机专硕上岸经验分享

数学基础很一般,高考108已经是超常发挥,所以考研的时候对数学决心很足,3月份就开始过数学基础,看张宇30讲+课后习题+配套300题,一开始试过汤家凤但是实在听不进,换了张宇就好多了,4月底那样过完第一轮基础,5月份我又过了第二遍基础,这时候主要做1000题,很惭愧,当时没了解好1000题是强化阶段的习题,结果就是做的很烂,倒是没觉得多打击自信心,因为我心里预设了自己数学很烂。腿姐技巧班,考试的时候惦记腿姐技巧,最后交卷前改掉两个双选题,痛失4分,不过,就算这4分我拿到手了,综合体验下来还是不推荐。

WithoutHope的博客 2725

最全芯片查询网_明日可查19考研初试成绩了!新增3个省份的查询时间通知!

一、成绩查询时间:明天(2月15日)就陆续可以查19考研初试成绩了,今日新增三个省份的查询时间通知:其它省份查询时间详见链接:已有27省市公布19考研初试成绩查询时间!附官网链接!河北:2月15日12:00起http://www.hebeea.edu.cn/html/xxgl/tzgg/2019/0213-185747-133.html广西:2月15日后https://yz.chsi.c...

weixin_39891438的博客 394
上一篇: 二维指针控制指向NULL的一维指针
下一篇: 3月6号 学而思
coder_ken
博客等级 码龄12年 14粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值