【纪念我的365天】我的创作纪念日

机缘

最开始接触csdn时我从没想过我会是博客的创作者,最初我认为它是一个为我解决问题的作业神器,开始接触编程时什么都不懂,为各种问题查阅资料,可偏偏就是无法越过这道坎。于是机遇巧合之下遇到一个人他教我,也是他大力推荐我开始写作的。从此以后这里就成为了我编程的笔记,每当我忘记一个知识点时我都可以通过搜索关键字来查找,它似乎比我的纸质笔记更加有效。并且在这里我也可以学习很多知识,所以渐渐的写博客成为我学习的一部分。


收获

在csdn中我也收获很多,每次花大量时间和精力换来粉丝的关注和阅读量我都很高兴,这一年来我有七百多粉丝,也获得了很多的鼓励,也认识了一些大佬。我也常常看他人的博客,再与自己的文章对比查缺不足的地方加以改正。前段时间参加蓝桥杯,学起来很吃力,各种查阅资料看不懂无数次想要放弃可是不服气,于是咬着牙继续学。可是各种算法于我来说就是难上加难,于是我开始学习算法,递归、动态规划等算法,可是学习还是很有难度于是我放弃了。继续我的正常学习,又刚好蓝桥杯延迟了我又心动了于是开始各种刷题,既然算法难那我就那基础分,这样我一直坚持到比赛那一天。csdn里有各种题目的多种解决方法,我似乎才发现csdn的好处。

每次写文章我都能加深对这块知识的理解,怎样用简单的语言让读者更好的理解它。比如之前写mysql增删改查,这个只是点我通过图片代码文字三种方式共同描述等等。从刚开始到现在我已经学习了C语言,数据结构,Java,计算机组成原理等,往后我会一直学习。坚持一件事好难好难,我也常常想要放弃,可是我想要放弃的同时有好多博主仍然继续创作,好像我又有了创作的动力。这一年中我写了六十多篇文章,感觉好少好少,往后继续创作希望收获更多的粉丝以及知识点。


成就

这个连地址法是目前写过最好的代码,当初设置头插和尾插两种插入方法,包含静态节点、构造方法、插入、得到。

复制代码
public class HashBuck {
    static class Node {
        public int key;
        public int value;
        public Node next;

        public Node(int key, int value) {
            this.key = key;
            this.value = value;
        }
    }
    public Node[] arr;
    public int size;
    public HashBuck(){
        arr = new Node[10];
    }
    public void put(int key, int value){
        //头插法
//        int index = key %arr.length;
//        Node cur = arr[index];
//        //判断链表中是否存在相同的key,存在就更新value
//        while (cur != null) {
//            if (cur.key == key) {
//                cur.value = value;
//                return;
//            }
//            cur = cur.next;
//        }
//        //如果不存在就 头插法 插入
//        Node node = new Node(key, value);
//        node.next = arr[index];
//        arr[index] = node;
//        size++;


        //尾插法
        int index = key %arr.length;
        Node cur = arr[index];
        //判断链表中是否存在相同的key,存在就更新value
        while (cur != null) {
            if (cur.key == key) {
                cur.value = value;
                return;
            }
            cur = cur.next;
        }
        //如果不存在就 尾插法 插入
        Node cur1 = arr[index];
        if (cur1 == null){
            Node node = new Node (key, value);
            arr[index] = node;
            size++;
        }else {
            while (cur1.next != null) {
                cur1 = cur1.next;
            }
            //尾插法
            Node node = new Node(key, value);
            cur1.next = node;
            size++;
        }
        if (loadFactor() >= 0.75){
            //超载了需要扩容,然而扩容时需要把所有的元素都重新哈希(因为数组的容量变了对应取模的标准也变了)
            resize();
        }
    }

    private void resize(){
        Node[] tempArr = new Node[arr.length*2];
        for (int i = 0; i < arr.length; i++) {
            //头插
//            Node cur = arr[i];
//            while (cur != null){
//                //记录当前结点的下一个结点位置
//                Node curNext =cur.next;
//                //结点新的位置
//                int newIndex = cur.key%tempArr.length;
//                //头插法
//                cur.next = tempArr[newIndex];
//                tempArr[newIndex] = cur;
//                cur = curNext;
//          }


            //尾插法
            Node cur = arr[i];
            while (cur != null) {
                Node curNext = cur.next;
                int newIndex = cur.key % tempArr.length;
                Node newCur = tempArr[newIndex];
                if (newCur == null) {
                    tempArr[newIndex] = cur;
                } else {
                    while (newCur.next != null) {
                        newCur = newCur.next;
                    }
                    newCur.next = cur;
                }
                cur.next = null;
                cur = curNext;
            }
        }
        arr = tempArr;
    }

    private double loadFactor(){
        return size*1.0/arr.length;
    }
    public int get(int key){
        int index = key %arr.length;
        Node cur = arr[index];
        //判断链表中是否存在相同的key,并返回该节点的value值
        while (cur != null) {
            if (cur.key == key) {
                return cur.value;
            }
            cur = cur.next;
        }
        return -1;
    }
}

憧憬

往后我会继续创作,梳理思路记录知识,将创作学习坚持到底,将我学习的点点滴滴都记录下来。每一次新的发现,都像是收获一份意外的惊喜;每一次深入的思考,都如同在黑暗中点亮一盏明灯。这份快乐,让我对学习始终充满热情,永不停歇地向前追寻。

相关推荐
ABCDEEE717 分钟前
民宿管理系统5
java
别催小唐敲代码21 分钟前
解决跨域的4种方法
java·服务器·前端·json
何似在人间57534 分钟前
LangChain4j +DeepSeek大模型应用开发——7 项目实战 创建硅谷小鹿
java·人工智能·ai·大模型开发
magic 24541 分钟前
深入理解 Spring MVC:DispatcherServlet 与视图解析机制
java·servlet·状态模式·springmvc
小杜-coding1 小时前
黑马点评day02(缓存)
java·spring boot·redis·后端·spring·maven·mybatis
Timmer丿1 小时前
Spring AI开发跃迁指南(第二章:急速上手3——Advisor核心原理、源码讲解及使用实例)
java·人工智能·spring
oliveira-time2 小时前
java单元测试代码
java·windows·单元测试
zfj3212 小时前
用spring-boot-maven-plugin打包成单个jar有哪些缺点&优化方案
java·maven·jar·springboot
柚个朵朵2 小时前
RabbitMQ
java·rabbitmq·java-rabbitmq
程序员曼布2 小时前
ThreadLocal源码深度剖析:内存管理与哈希机制
java·开发语言·哈希算法