「我的编程笔记」——记录学习中的代码、函数、概念等

news2024/12/27 11:34:38

文章目录

  • 每日一句正能量
  • 前言
  • 常用的代码
    • 登录
    • 存储
  • 特定函数
    • MD5加密
  • 复杂概念
    • 1. 多线程
    • 2. 集合类
    • 3. 异常处理
    • 4 泛型
    • 5 反射
  • 特定功能
    • 1. 文件操作
    • 2. 网络通信
    • 3. 图形绘制
    • 4. 数据库操作
    • 5. 多媒体处理
  • 后记

在这里插入图片描述

每日一句正能量

不管昨天、今天、明天,能豁然开朗就是最美好的一天。

前言

常用代码、特定函数、复杂概念、特定功能……在学习编程的过程中你会记录下哪些内容?快来分享你的笔记,一起切磋进步吧!

编程如同探索一条未知的道路,需要不断地积累、总结和分享经验,才能更加深刻地理解和掌握其中的技巧和知识点。因此,分享一下自己在编程学习过程中记录的笔记,让我们一起分享、学习、进步,共同探索编程技巧与知识点。

例如,平时在逛博客的时候会遇到项目开发中的常用代码、特定函数、复杂概念、特定功能等,我都会收藏起来,比如登录、正则表达式、常用存储等。之前在《翻开收藏夹,拾起行动的力量》这篇博客里面也提到过一些,还没看过可以移步过去看看。

  • 《翻开收藏夹,拾起行动的力量》

常用的代码

登录

在Java中,实现一个简单的登录功能通常需要以下代码:

import java.util.Scanner;

public class Login {
    public static void main(String[] args) {
        String username = "admin";
        String password = "123456";
        Scanner scanner = new Scanner(System.in);
        boolean loginSuccess = false;
        for (int i = 0; i < 3; i++) {
            System.out.print("请输入用户名:");
            String inputUsername = scanner.nextLine();
            System.out.print("请输入密码:");
            String inputPassword = scanner.nextLine();
            if (inputUsername.equals(username) && inputPassword.equals(password)) {
                System.out.println("登录成功!");
                loginSuccess = true;
                break;
            } else {
                System.out.println("用户名或密码错误,请重新输入!");
            }
        }
        if (!loginSuccess) {
            System.out.println("登录失败!");
        }
    }
}

以上代码实现了一个简单的登录功能,其中包括了以下内容:

  1. 导入Scanner类,用于读取用户输入;
  2. 定义一个用户名和密码,这里使用了硬编码,实际应用中应该从数据库或配置文件中读取;
  3. 使用for循环进行三次尝试登录,如果三次登录失败则提示登录失败;
  4. 使用equals方法比较输入的用户名和密码和预先设定的用户名和密码是否一致;
  5. 如果一致则输出登录成功并跳出循环,否则输出用户名或密码错误并重新循环。

需要注意的是,在实际应用中,我们需要考虑更多的安全性问题,例如密码的加密存储、防止暴力破解等。

存储

在Android开发中,常用的存储方式有Shared Preferences、SQLite数据库、文件存储等。这里简单介绍一下常用的存储方式的相关代码。

  1. Shared Preferences

Shared Preferences是Android平台提供的一种轻量级的存储方式,主要用于存储一些简单的配置信息。

// 写入数据到Shared Preferences
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putString("name", "John");
editor.putInt("age", 25);
editor.apply();

// 从Shared Preferences中读取数据
SharedPreferences prefs = getSharedPreferences("data", MODE_PRIVATE);
String name = prefs.getString("name", "");
int age = prefs.getInt("age", 0);

以上代码中,我们首先通过getSharedPreferences方法获取到SharedPreferences对象,然后通过SharedPreferences.Editor对象写入数据,最后通过apply()方法提交数据。读取数据的过程也非常简单,通过SharedPreferences对象直接获取数据即可。

  1. SQLite 数据库

SQLite是Android平台内置的一种关系型数据库,使用SQL语言来进行操作。

// 创建数据库和表
SQLiteDatabase db = openOrCreateDatabase("mydb.db", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");

// 插入数据
ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 25);
db.insert("person", null, values);

// 查询数据
Cursor cursor = db.query("person", null, null, null, null, null, null);
while (cursor.moveToNext()) {
    int id = cursor.getInt(cursor.getColumnIndex("_id"));
    String name = cursor.getString(cursor.getColumnIndex("name"));
    int age = cursor.getInt(cursor.getColumnIndex("age"));
    Log.d("MyTag", "id: " + id + ", name: " + name + ", age: " + age);
}
cursor.close();

// 删除表
db.execSQL("DROP TABLE IF EXISTS person");

// 关闭数据库
db.close();

以上代码中,我们首先通过openOrCreateDatabase方法创建一个名为mydb.db的数据库,并创建了一个名为person的表。插入数据时使用了ContentValues来存储数据,查询数据时通过Cursor对象进行遍历,最后通过execSQL方法删除表并关闭数据库。

  1. 文件存储

在Android开发中,还可以使用文件存储的方式来存储数据。下面是一个简单的示例代码:

// 写入数据到文件
try {
    FileOutputStream fos = openFileOutput("data.txt", MODE_PRIVATE);
    fos.write("Hello World!".getBytes());
    fos.close();
} catch (IOException e) {
    e.printStackTrace();
}

// 从文件中读取数据
try {
    FileInputStream fis = openFileInput("data.txt");
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
    String line = reader.readLine();
    fis.close();
} catch (IOException e) {
    e.printStackTrace();
}

以上代码中,我们首先通过openFileOutput方法创建一个名为data.txt的文件,并向其中写入了一行字符串。读取数据时,我们通过openFileInput方法打开文件,然后使用BufferedReader对象逐行读取数据。

需要注意的是,以上示例代码仅仅是Android存储方式的入门示例,实际应用中还需要考虑更多的安全性和性能问题,例如文件的加密、数据库的版本控制等。

特定函数

MD5加密

在Java中,使用java.security.MessageDigest类可以实现MD5算法的计算。下面是一个MD5计算的特定函数示例:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    public static String md5(String str) {
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(str.getBytes());
            byte[] bytes = md5.digest();
            StringBuilder sb = new StringBuilder();
            for (byte b : bytes) {
                String hex = Integer.toHexString(b & 0xFF);
                if (hex.length() == 1) {
                    sb.append("0");
                }
                sb.append(hex);
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
}

以上代码中,我们定义了一个静态函数md5来计算MD5值。函数中,我们首先通过MessageDigest类的getInstance方法获取MD5对象,然后使用update方法更新数据,通过digest方法计算MD5值。最后,我们将计算出的MD5值转换成十六进制字符串返回。

需要注意的是,MD5算法虽然可以防止数据被篡改,但是存在一定的破解风险,因此在实际应用中需要考虑更加安全的加密方式,例如SHA-256等算法。

复杂概念

Java语言是一门比较大而且细致的语言,涉及到的复杂概念也比较多。以下是Java中一些比较复杂的概念:

1. 多线程

多线程是指在一个进程中运行多个线程,它可以提高程序的并发处理能力,增加CPU的利用率。Java通过Thread类和Runnable接口来实现多线程编程。

2. 集合类

Java中提供了很多集合类,比如List、Set、Map等,这些集合类可以让我们方便地处理数据。集合类的实现原理比较复杂,因为它需要考虑到数据的增删改查、排序、去重等问题。

3. 异常处理

Java中异常处理是一种重要的错误处理机制。Java中的异常是指程序执行过程中发生的错误,可以通过try-catch语句来捕获并处理异常。

4 泛型

泛型是Java中非常重要的概念,它可以使代码更加灵活和安全。Java中的泛型可以应用于类、接口和方法,它可以让代码在编译时就能够检查类型安全性。

5 反射

反射是Java中非常重要的机制,它可以让我们在运行时动态地获取类的信息,并且可以操作类的属性和方法。反射机制是Java框架和开发工具的实现基础。

以上是Java中的一些比较复杂的概念,掌握这些概念需要花费一定的时间和精力,但是掌握了这些内容,可以使我们更加熟练地使用Java编程,并提高程序的质量和效率。

特定功能

Java 和 Android 中常用的特定功能包括:

1. 文件操作

Java 和 Android 中都提供了文件操作的API,可以进行文件的读写、创建、删除等操作,如Java中的File类和Android中的FileInputStream、FileOutputStream等类。

2. 网络通信

Java 和 Android 都支持网络通信,可以使用TCP、UDP、HTTP等协议进行数据通信,如Java中的Socket类和Android中的HttpURLConnection类。

3. 图形绘制

Android 中可以使用Canvas类进行图形绘制,可以绘制基本的图形对象、文本、图片等,还可以进行图形变换和动画效果。

4. 数据库操作

Java 和 Android 中都提供了数据库操作的API,可以进行数据库的创建、增删改查等操作,如Java中的JDBC和Android中的SQLiteOpenHelper类。

5. 多媒体处理

Android 中可以使用MediaPlayer类进行音频播放、使用Camera类进行摄像头操作等多媒体处理功能。

以上是 Java 和 Android 中常用的一些特定功能,掌握这些功能可以使程序的实现更加方便、高效、具有更好的用户体验。

后记

在开发中我收集的东西比较多,比如常用的开发工具类,功能,自定义View,网络请求工具类等,然后制作成第三方的依赖库,可以直接使用。没看过的可以去看看。

  • 史上最全的常用开发工具类收集(持续更新中)
  • Android高仿qq及微信底部菜单的几种实现方式
  • 自定义View入门
  • 一步一步教你将开源项目上传到jcenter(第一种方式)
  • 一步一步教你将开源项目上传到jcenter(第二种方式)
  • JitPack让第三方依赖更简单(第一种方法)
  • JitPack让第三方依赖更简单(第二种方法)

我们可以看到很多开发者努力学习、积累,并在实践中不断完善自己的技能。学习编程是一个漫长、充满挑战的过程,需要耐心、毅力和不断的实践。同时也需要及时记录和整理所学,这有助于加深对知识的理解,提高代码的质量和效率,并方便日后回顾和查找。希望大家不断地学习、成长、创造,并用编程为世界带来积极的变化和贡献。

转载自 :https://blog.csdn.net/u014727709/article/details/132420216
欢迎start,欢迎评论,欢迎指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hugging News #0821: 新的里程碑:一百万个代码仓库!

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

Mysql系列 - 第2天:详解mysql数据类型(重点)

这是mysql系列第2篇文章。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 主要内容 介绍mysql中常用的数据类型 mysql类型和java类型对应关系 数据类型选择的一些建议 MySQL的数据类型 主要包括以下五大类 整数类型&#xff1a;bit、bool、tinyint、smal…

「对冲」布局?激光雷达行业大佬「个人投资」4D毫米波雷达

随着高阶智驾从高端车型逐步下沉中低价位市场&#xff0c;核心传感器&#xff0c;尤其是激光雷达和4D成像毫米波雷达的目标市场也在寻求分层和融合。 “激光雷达是在自动驾驶出现后才崭露头角。在这些系统开发的早期阶段&#xff0c;很多公司不惜一切代价使传感器尽可能强大。但…

Profibus在工业通讯中的应用案例

Profibus总线是现代自动化中应用非常广泛的一种标准网络通信方案&#xff0c;它具有高效、可靠、灵活等优势&#xff0c;可以实现设备之间的通信和数据交换。下面我们就来为大家介绍几个Profibus在工业通讯中的应用案例。 Profibus在工业通讯中的应用案例 1、汽车制造 在汽车…

文件四剑客

目录 前言 一、正则表达式 二、grep 三、find 四、sed 五、awk 前言 文件四剑客是指在计算机领域中常用的四个命令行工具&#xff0c;包括awk、find、grep和sed。它们在处理文本文件和搜索文件时非常强大和实用。 1. awk是一种强大的文本处理工具&#xff0c;它允许用户根据指…

【Hugging Face】使用方法和如何挑选一个自己需要的模型

【界面介绍】 【个人主页】 注册之后&#xff08;国内邮箱免费注册&#xff09;会有个人主页&#xff0c;用来调试创建自己的模型和数据集 右边是网站中的模型使用趋势&#xff0c;左边&#xff1a; 注册账户后可以提供免费训练模型和数据集的工作台&#xff0c;创建即可&…

算法基础(1):排序和查找算法

1、排序算法 1.1、堆排序(大顶堆)-重点&#xff1a; 参考文章&#xff1a;堆排序1、堆排序二 前置知识&#xff1a; 大顶堆&#xff1a;完全二叉树&#xff0c;且父节点大于左右儿子&#xff0c;左右子树又是大顶堆&#xff0c;依赖数组来实现(vector)第一个节点的父节点&…

接口性能测试 —— Jmeter并发与持续性压测

接口压测的方式&#xff1a; 1、同时并发&#xff1a;设置线程组、执行时间、循环次数&#xff0c;这种方式可以控制接口请求的次数 2、持续压测&#xff1a;设置线程组、循环次数&#xff0c;勾选“永远”&#xff0c;调度器&#xff08;持续时间&#xff09;&#xff0c;这种…

Git使用篇:MacWindow---Vscode 终端命令行显示分支名和Tab自动补全

###&#xff1a;mac终端美化 https://www.jianshu.com/p/fd457aaee3e7 配置地址 终端改成git // 输入命令,检查是否有/bin/zsh(macOS自带zsh) cat /etc/shells // 修改默认的bash为zsh,重启Terminal chsh -s /bin/zsh// 检查修改结果,显示/bin/zsh即成功. echo $SHELLwindow终…

8年经验之谈 —— 基于jmeter的性能全流程测试

01、做性能测试的步骤 1、服务器性能监控 首先要在对应服务器上面安装性能监控工具&#xff0c;比如linux系统下的服务器&#xff0c;可以选择nmon或者其他的监控工具&#xff0c;然后在jmeter模拟场景跑脚本的时候&#xff0c;同时启动监控工具&#xff0c;这样就可以获得jm…

ChatGLM-6B微调记录

目录 GLM-130B和ChatGLM-6BChatGLM-6B直接部署基于PEFT的LoRA微调ChatGLM-6B GLM-130B和ChatGLM-6B 对于三类主要预训练框架&#xff1a; autoregressive&#xff08;无条件生成&#xff09;&#xff0c;GPT的训练目标是从左到右的文本生成。autoencoding&#xff08;语言理解…

每日两题 83删除排序链表的重复元素 82删除排序链表的重复元素||

83 题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3] 输出&…

*看门狗各函数讲解

独立看门狗配置步骤 1&#xff09;取消寄存器写保护&#xff0c;通过函数 HAL_IWDG_Init 实现。 看门狗的喂狗时间&#xff08;也就是看门狗溢 出时间&#xff09;的计算方式为&#xff1a; Tout((42^prer) rlr) /32 其中 Tout 为看门狗溢出时间&#xff08;单位为 ms&#…

Navicat里.sql文件转换到.db文件

1.在桌面创建一个xxx.db文件&#xff0c;在navicat中创建数据库的时候会用到 2.在navicat创建数据库 在 Navicat 的导航栏中&#xff0c;选择 "工具" -> "SQL 文件执行器"。 在 SQL 文件执行器中&#xff0c;单击 "打开" 按钮&#xff0c;选择…

无锡市惠丰电子有限公司采购ZJ-5型叠层压电D33测试仪及相关配套夹具

无锡市惠丰电子有限公司采购ZJ-5型叠层压电D33测试仪及相关配套夹具 无锡市惠丰电子有限公司成立于1998年&#xff0c;是一家专门从事电子陶瓷产品研发&#xff0c;生产&#xff0c;销售&#xff0c;服务于一体的股份制公司&#xff0c;座落于素有鱼米之乡的太湖之滨城市——无…

Wapp群发王,释放全球市场潜力

随着移动互联网的普及&#xff0c;WhatsApp在全球范围内的用户数量持续迅猛增长。据数据显示&#xff0c;截至2022年2月&#xff0c;WhatsApp的月活跃用户数已超过20亿&#xff0c;遍布全球180多个国家和地区&#xff0c;在 58 个国家更成为常用通讯软件。这使得 WhatsApp 成为…

滑块验证3-接第1篇

driver拖动滑块 滑块验证的过程比较常使用driver模拟滑动&#xff0c;这样能够省去很多验证操作。 如果设置适合的滑动轨迹&#xff0c;成功率是非常高的。 当然&#xff0c;麻烦的是现在很多站点都做了识别driver的反爬&#xff0c;而且比较受网络的影响。 所需包 seleniu…

k8s service (二)

K8s service (二) Endpoint Endpoint是kubernetes中的一个资源对象&#xff0c;存储在etcd中&#xff0c;用来记录一个service对应的所有pod访问地址&#xff0c;它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成&#xff0c;这些Pod通过Endpoints…

特斯拉Model 3的七年狂飙

‍ 作者 | 张祥威 编辑 | 德新 发布一周拿下32万张订单&#xff0c;之后用时五年&#xff0c;交付量突破100万辆。粗略计算&#xff0c;自2016年发布至今&#xff0c;特斯拉Model 3已交付超150万辆。 放眼新能源赛道&#xff0c;如此战绩 别无二家。 Model 3踩中纯电动车的…

LeetCodeHot100:Python 版本之贪心

121. 买卖股票的最佳时机 55. 跳跃游戏 那么这个问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点&#xff01;(看覆盖范围) 每次移动取最大跳跃步数&#xff08;得到最大的覆盖范围&#xff09;&#xff0c;每移动一个单位&#xff0c;就更新最大覆盖范围。 贪心算法局部最…