zeekling

zeekling 查看完整档案

西安编辑合肥工业大学  |  光电信息科学与工程 编辑华为  |  大数据开发工程师 编辑 www.zeekling.cn/ 编辑
编辑

梅干菜你个小酥饼

个人动态

zeekling 回答了问题 · 11月21日

搭建个人博客的疑问点?

可以参照下:https://github.com/88250/solo

我的个人博客就是使用这个开源博客搭建的,欢迎多访问:小令童鞋

关注 2 回答 2

zeekling 关注了标签 · 11月21日

redis

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。

推荐NoSQL“ FanRedis资料汇总专题

关注 10847

zeekling 回答了问题 · 11月21日

关于java 代码的思考

其实对于内存并没有什么影响:
AssociatedCompany放到上面,每次循环完成之后AssociatedCompany所指向的对象就成了没有指针引用的对象,按照JVM引用计数法可以判断当前对象可以回收。

关注 2 回答 2

zeekling 发布了文章 · 11月21日

vscode 查看Redis源码

简介

最近在学习Redis源码,主要是目前负责华为产品FusionInsight HD中Redis组件的相关事务,不得不学习Redis源码。本文主要讲述的是怎么通过vscode查看Redis的源码(Linux平台下面).

配置

在项目下面增加文件夹 .vscode,并且新建文件:launch.jsontasks.jsonc_cpp_properties.json,并且在文件中添加下面内容:

launch.json:

{
    "version": "0.2.0",
    "configurations": [
  
        {
            "name": "build",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/src/redis-server",
            "args": [
                "redis.conf"
            ],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "shell"
        }
    ]
}

tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "shell",
            "type": "shell",
            "command": "/usr/bin/make"
        }
    ]
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

运行

使用快捷键F5进行编译调试。

标 题:《vscode 查看Redis源码
作 者:zeekling
提 示:转载请注明文章转载自个人博客:小令童鞋

查看原文

赞 0 收藏 0 评论 0

zeekling 发布了文章 · 11月21日

【leetCode】整数反转

题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

链接:https://leetcode-cn.com/probl...

题目解答

方法:弹出和推入数字 & 溢出前进行检查
思路

我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。

算法

反转整数的方法可以与反转字符串进行类比。

我们想重复“弹出” $x$ 的最后一位数字,并将它“推入”到$ \\text{rev}$的后面。最后,$ \\text{rev}$ 将与 $x$ 相反。

要在没有辅助堆栈 / 数组的帮助下 “弹出” 和 “推入” 数字,我们可以使用数学方法。

//pop operation:
pop = x % 10;
x /= 10;//push operation:
temp = rev * 10 + pop;
rev = temp;

但是,这种方法很危险,因为当 $temp=rev⋅10+pop $ 时会导致溢出。

幸运的是,事先检查这个语句是否会导致溢出很容易。

为了便于解释,我们假设$ \\text{rev} $是正数。

如果 $temp=rev⋅10+pop $ 导致溢出,那么一定有 $\\text{rev} \\geq \\frac{INTMAX}{10}$。
如果$ \\text{rev} > \\frac{INTMAX}{10}$

,那么 $temp=rev⋅10+pop $一定会溢出。
如果 $\\text{rev} == \\frac{INTMAX}{10} $,那么只要 $\\text{pop} > 7$,$temp=rev⋅10+pop$ 就会溢出。
当 $\\text{rev}$ 为负时可以应用类似的逻辑。

public int reverse(int x) {
       int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
 }

复杂度分析

时间复杂度:$O(\\log(x))$,$x$ 中大约有 $\\log_{10}(x)$ 位数字。

空间复杂度:$O(1)$。

标 题:《【leetCode】整数反转
作 者:zeekling
提 示:转载请注明文章转载自个人博客:小令童鞋

查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 0 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

  • Redis开源代码翻译

    Redis是一个内存中的数据库,它保存在磁盘上。数据模型是键值,但支持多种不同类型的值:字符串、列表、集合、排序集、哈希、流、HyperLogLogs、位图。 https://redis.io

  • gitea生成 rss

    生成gitee rss总的rss的代码。

  • 生成sitemap.xml

    通过爬取网站,生成sitemap.xml

注册于 2016-09-24
个人主页被 165 人浏览