我的创作纪念日

机缘

我成为创作者的初心主要源于以下几个方面:

  1. 实战项目中的经验分享:在实际开发项目中,我遇到了许多技术挑战和问题,并通过不断的学习和实践找到了解决方案。我希望能够通过博客文章分享这些经验,帮助其他开发者避免重复踩坑,提高开发效率。

  2. 日常学习过程中的记录:作为一名技术人员,我每天都在不断学习新的知识和技能。通过博客,我可以将自己的学习过程记录下来,并将这些知识分享给其他人,帮助他们更好地理解和应用相关技术。

  3. 技术交流:我相信技术交流是提高自己的重要途径之一。通过博客文章,我可以与其他开发者分享我的观点、经验和见解,并与他们进行深入的讨论和交流。这对于拓宽我的技术视野和开阔我的思路非常有帮助。

收获

在成为创作者的这段时间里,我获得了许多收获,包括但不限于:

  1. 得到了许多读者的关注和支持,我的粉丝数量逐渐增长。
  2. 收到了很多积极的反馈,包括点赞、评论和分享,这些正向的反馈激励着我继续创作下去。
  3. 通过博客交流,我结识了很多志同道合的领域同行,与他们分享经验,相互学习和成长。

这些收获不仅让我感到充满动力,还使我更加坚定了继续创作的决心。

日常

创作已经成为我的生活中重要的一部分。无论在工作和空闲时间,我都会抽出时间来写作和分享技术,因为我深知通过创作可以不断地提升自己,并且可以帮发者。

在有限的精力下,我尽力在创作和工作、学习之间进行平衡。我会合理安排时间,确保创作不会影响正常的工作和学习进程。我也会利用碎片化时间,例如通勤时间和周末等,进行写作和整理思路。

尽管有时会感到辛苦和疲惫,但创作的热情和兴趣始终让我坚持下去。

成就

工作几年了,没写过什么算法,但最近有个需求是按照给定的规则生成一批SN码,规则大致如下,
在这里插入图片描述

/**
     * SN码生成算法:7位字符,按照0000001~9999999,A000001~A999999,
     * 以此类推Z000001~Z999999,接下来是AA00001~AA99999,直到ZZZZZZ1~ZZZZZZ9为止
     *Z000001 Z0000100
     * @param currentValue
     * @return
     */
    public static String generateNextValue(String currentValue) {
        StringBuilder sb = new StringBuilder(currentValue);
        //第一个数字位
        int firstDigitIndex = 0;
        char thisChar = sb.charAt(firstDigitIndex);
        int length = sb.length();
        //最后一个英文字符位置
        int lastLetterIndex;

        while (!Character.isDigit(thisChar) && firstDigitIndex < length - 1) {
            thisChar = sb.charAt(++firstDigitIndex);
        }
        lastLetterIndex = firstDigitIndex - 1;
        String numericStr = sb.substring(firstDigitIndex, length);
        //数字位的个数
        int qtyOfDigits = numericStr.length();
        // 进位标志
        boolean carry = false;

        int nextNumeric = Integer.parseInt(numericStr) + 1;
        String nextNumericStr = String.format("%0" + qtyOfDigits + "d", nextNumeric);
        if (nextNumericStr.length() > qtyOfDigits) {
            carry = true;
        }

        if (carry) {
            if (lastLetterIndex < 0) {
                sb.setCharAt(0, 'A');
                firstDigitIndex++;
                qtyOfDigits--;
            } else {
                //当前位置的字母
                char lastLetter = sb.charAt(lastLetterIndex);
                char nextLetterChar = (char) (lastLetter + 1);
                if (nextLetterChar <= 'Z') {
                    sb.setCharAt(lastLetterIndex, nextLetterChar);
                } else {
                    sb.setCharAt(lastLetterIndex, 'A');
                    int previousIndex = lastLetterIndex - 1;
                    if (previousIndex == -1) {
                        sb.setCharAt(++lastLetterIndex, 'A');
                        firstDigitIndex++;
                        qtyOfDigits--;
                    }

                    while (previousIndex >= 0) {
                        char previousLetterChar = (char) (sb.charAt(previousIndex) + 1);
                        if (previousLetterChar <= 'Z') {
                            sb.setCharAt(previousIndex, previousLetterChar);
                            break;
                        } else {
                            sb.setCharAt(previousIndex, 'A');
                            if (previousIndex == 0) {
                                sb.setCharAt(++lastLetterIndex, 'A');
                                firstDigitIndex++;
                                qtyOfDigits--;
                                break;
                            }
                        }
                        previousIndex--;
                    }
                }
            }
            nextNumericStr = String.format("%0" + qtyOfDigits + "d", 1);
        }
        sb.replace(firstDigitIndex, sb.length(), nextNumericStr);

        return sb.toString();
    }

这段代码就可以满足上面的SN码生成需求,当然大家如果有兴趣或有更优方案,欢迎在评论区贴上自己的实现方式。

憧憬

在未来,我希望能够继续成长为一名专业的技术作者,并且为更多的人带来有价值的内容和帮助。我计划继续拓展创作的领域,涉及更广泛的技术主题,并且通过更多的实践和项目经验来支撑我的文章。

此外,我也计划深入学习和掌握更多的技术,拓宽自己的技术栈,并且持续关注和学习行业最新的发展动态和趋势。

最重要的是,我希望能够继续与读者保持良好的互动和交流,在技术的道路上共同成长和进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值