ARTS第五周打卡

1.Algorithmhtml

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

示例 1:
    输入: 123
    输出: 321
示例 2:
    输入: -123
    输出: -321
示例 3:
    输入: 120
    输出: 21
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;
    }
 

   重复“弹出” xx 的最后一位数字,并将它“推入”到 rev 的后面。最后,rev 将与 xx 相反数组

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

//pop operation:
pop = x % 10;
x /= 10;

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

 

这种方法很危险,由于当temp=rev10+pop 时会致使溢出。服务器

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

2.Review学习

  https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/this

  主要介绍了重构和重写,重写代码有着不可预知的风险 ,重构老代码减小风险,老代码已经历经时间来磨合bug该出现的问题大部分出现,在重构老代码的同时可以提升本身对知识的学习。
spa

3.Tips操作系统

  ps + lsof 帮我找出 redis 的快照文件。 有一台服务器中运行着一个 redis 服务。我想找到其快照文件。 dump.rdb 来研究一下。 可是我并不知道其目录,搜索了对应操做系统的常规目录中并无。由于发现 redis 是原来的系统管理员本身编译安装的。若是我尝试本身找到它。 1)查看 redis.conf 中 dump.rdb 的目录并无特别配置,也就是在应用运行的当前目录。因此能够先找出对应进程的当前目录,而后查找 。 2)lsof 能够列出对应进程所打开的全部文件。因此有可能有 dump.rdb

  1.ps -A |grep redis 获得以下输出. > 45000 ? 10-09:36:27 redis-server > 其实其进程 ID 是 45000, 进程名是 redis-server

  2.lsof -p 45000 > rf.log 打开文件并无找到 dump.rdb 的影子,不过有进程的当前目录的信息。

COMMAND     PID USER   FD      TYPE     DEVICE  SIZE/OFF    NODE NAME
redis-ser 45000 root  cwd       DIR      202,2      4096 1058338 /root/path/redis-3.0.4

而后果真在 /root/path/redis-3.0.4 下找到了对应的 dump.rdb 文件 

  

4.Share

  不可变对象

  https://www.cnblogs.com/dolphin0520/p/10693891.html  

  一.什么是不可变对象

    不可变对象(Immutable Object):对象一旦被建立后,对象全部的状态及属性在其生命周期内不会发生任何变化。

  二.深刻理解不可变性

    再多线程操做的时候,可变对象会带来数据的安全性,用list set 存储可变对象时,会发生数据的不安全。

  三.如何建立不可变对象

    1)全部成员变量必须是private

    2)最好同时用final修饰(非必须)

    3)不提供可以修改原有对象状态的方法

      最多见的方式是不提供setter方法

      若是提供修改方法,须要新建立一个对象,并在新建立的对象上进行修改

    4)经过构造器初始化全部成员变量,引用类型的成员变量必须进行深拷贝(deep copy)

    5)getter方法不能对外泄露this引用以及成员变量的引用

    6)最好不容许类被继承(非必须)

  四.不可变对象真的"彻底不可改变"吗?

    能够经过反射来进行改变

相关文章
相关标签/搜索