【纪念我的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;
    }
}

憧憬

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

相关推荐
SQL-First布道者6 分钟前
我为什么把 MyBatis 从项目中删了?
java·spring·tomcat·mybatis·mybatis plus·spring jdbc
公爵爱学习10 分钟前
无人机多点导航笔记
java·前端·笔记
萧瑟余晖40 分钟前
Java深入解析篇五十五之Unsafe 机制详解
java
kakawzw1 小时前
mybatis源码笔记1——JDBC和整体架构
java·mybatis
sunshine22 girl1 小时前
Java学习一 环境配置1 安装JDK,配置环境变量
java·开发语言·学习
秋饼1 小时前
Spring AI Session API 深度实战:从 ChatMemory 平滑迁移到事件溯源的企业级短期记忆
java·ai·技术分享·后端开发
QCodingDev1 小时前
Spring AI 2.0企业级RAG实战:引用校验、无依据拒答与知识治理怎么做?
java·人工智能·spring·ai
吴声子夜歌1 小时前
ApacheCommons——commons-math3(科学计算与线性代数)(一)
java·线性代数·算法·apache
砚底藏山河1 小时前
行情工程实战 M01|存储选型 CSVSQLiteMySQL
java·python·金融·maven
名字还没想好☜1 小时前
Java 用 LinkedHashMap 三行实现 LRU 缓存:accessOrder、removeEldestEntry 与线程安全
java·后端·安全·spring·缓存