精华内容
下载资源
问答
  • 做项目的时候需要统对项目日志做分析,其中有一需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这时间段内,统计出每一天的日志数据,一般情况下,...

     

    获取每一天的统计数据

    做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这个时间段内,统计出每一天的日志数据,一般情况下,看到这种需求都是考虑使用函数来搞定,直接上sql语句

    SELECT
    	DATE_FORMAT(trigger_time, '%Y-%m-%d') triggerDay,
    	COUNT(id) triggerCount
    FROM
    	`job_qrtz_trigger_log`
    WHERE
    	trigger_time BETWEEN '2018-02-02 09:18:36'
    AND '2018-03-05 23:18:36'
    GROUP BY triggerDay
    ORDER BY trigger_time;

    查询结果:

    对上面的sql做简单的解释

    首先,查询字段这里,COUNT(id) triggerCount是我们需要的统计数据的条数,按照实际需求可以添加需要的字段。

    DATE_FORMAT(trigger_time, '%Y-%m-%d') triggerDay

    这个是将特定日期格式化成 YYYY-mm-dd 格式的日期。这里的格式用于后面的分组,所以按照不同的需求,可以自定义格式。

    我的需求是获取每一天的日志数据,我就按照 年份-月份-日期 的格式进行分组然后通过count(*)得到。

    如果获取某个月内每个月的数据量,就将格式改为

    DATE_FORMAT(trigger_time, '%Y-%m')

    当然,where条件需要能够匹配上格式,不能where条件限制到了日期,你却用月份分组。

    mysql的日期输出格式列出来:

            %a     缩写星期名
            %b     缩写月名
            %c     月,数值
            %D     带有英文前缀的月中的天
            %d     月的天,数值(00-31)
            %e     月的天,数值(0-31)
            %f     微秒
            %H     小时 (00-23)
            %h     小时 (01-12)
            %I     小时 (01-12)
            %i     分钟,数值(00-59)
            %j     年的天 (001-366)
            %k     小时 (0-23)
            %l     小时 (1-12)
            %M     月名
            %m     月,数值(00-12)
            %p     AM 或 PM
            %r     时间,12-小时(hh:mm:ss AM 或 PM)
            %S     秒(00-59)
            %s     秒(00-59)
            %T     时间, 24-小时 (hh:mm:ss)
            %U     周 (00-53) 星期日是一周的第一天
            %u     周 (00-53) 星期一是一周的第一天
            %V     周 (01-53) 星期日是一周的第一天,与 %X 使用
            %v     周 (01-53) 星期一是一周的第一天,与 %x 使用
            %W     星期名
            %w     周的天 (0=星期日, 6=星期六)
            %X     年,其中的星期日是周的第一天,4 位,与 %V 使用
            %x     年,其中的星期一是周的第一天,4 位,与 %v 使用
            %Y     年,4 位
            %y     年,2 位

     

     

     

     

    获取某天每个小时的统计数据

    1、利用Mysql自带的HOUR函数处理

    SELECT HOUR(trigger_time) as Hour,count(*) as Count 
        FROM xxl_job_qrtz_trigger_log 
       WHERE
    	trigger_time BETWEEN '2018-02-05 01:18:36'
    AND '2018-02-05 17:18:36'
        GROUP BY HOUR(trigger_time) ORDER BY Hour(trigger_time);

    查询结果如下

    2、时间格式是时间戳的

    SELECT (FROM_UNIXTIME(create_time/1000,'%H')) AS h,count(1) from table_item where create_time >1570464000000 and create_time < 1570497070416 GROUP BY h ;

    查询结果如下

     

     

     

     

     

     

     

    展开全文
  • 今天工作到差不多下午5...》文章,讲述了一个老外每天只用四个小时来写代码足矣,顿时觉得我也应该开始重新思考应该如何工作,如何让自己变成更有效率的程序员。以下是老外的大概作息时间表(以下内容摘自老外文章):

            今天工作到差不多下午5点左右,觉得精神有点疲惫,面对着眼前的ABCD文档,眼睛扫描到的信息却迟迟不能入大脑,就趁机开溜了一下,飘到CSDN去啦。

          看到一篇名为《每天工作4小时的程序员 》文章,讲述了一个老外每天只用四个小时来写代码足矣,顿时觉得我也应该开始重新思考应该如何工作,如何让自己变成更有效率的程序员。以下是老外的大概作息时间表(以下内容摘自老外文章):

              早上4:30 到 7 点:冥想,写作,目标复查,和家人吃早餐;

              早7点到11点:4个小时的编程时间;

              早11点到下午1点:健身,午饭,购物;

              下午1点到6点:学习和交流时间;

              下午6点到晚上8点:家庭时间;

              晚8点到8:30:反省和给大脑派活;

         从上面的时间安排表,暂且不怀疑真实性(这也的确是印象中老外的风格),也不从国情,身份方面去考虑,在这里只从效率方面引起自己的一点反思。

        目前自己的工作生活是这样的:

              早上7:30~8:30:起床,吃早餐,走路到公司。

              早上8:30~下午17:30,中间休息一个小时,总共8个小时时间看文档,写代码,调试代码,继续看文档,写代码,调试代码。。。。。

              下午17:30~23:00回家做晚饭,去公园活动,看书差不多一个小时,然后微博,qq,23:00准时睡觉。

            以前总觉得自己的时间过得充实,可对比起来,才觉得有很多的地方需要改进,从老外的时间表来看,自己不可能完全去实践(因为我不想晚上4:30就起床,晚上9点也实在睡不着),但是完全可以借鉴这种生活习惯,在人的生理和心理的基础上把工作合理的安排:比如很多时候发现自己在一天的工作中,也是差不多早上4个小时左右的时间写代码效率会比较高,到了下午,再继续看代码,就显得有点神散的感觉,为何不利用自己的精神状态来合理的安排工作呢?比如上午写代码,下午看文档和学习工作相关的知识,当然这可能要求要有更高的工作效率,比如你必须不耽误的项目计划的前提下。

          一个有效的学习工作计划基于个人的知识基础,技术能力,沟通能力,解决问题的能力等,但是一个方向更重要,如何安排你的时间,精力和学习工作相融合,达到一个最佳状态。我想,就算是一个码农,也可以活得精彩一点。

          

     

     

     

     

     

    展开全文
  • 一个HashMap跟面试官扯了半个小时

    万次阅读 多人点赞 2020-03-15 23:37:16
    一个HashMap能跟面试官扯上半个小时 关注 安琪拉的博客 1.回复面试领取面试资料 2.回复书籍领取技术电子书 3.回复交流领取技术电子书 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很...

    一个HashMap能跟面试官扯上半个小时

    《安琪拉与面试官二三事》系列文章
    一个HashMap能跟面试官扯上半个小时
    一个synchronized跟面试官扯了半个小时
    一个volatile跟面试官扯了半个小时

    《安琪拉教鲁班学算法》系列文章

    安琪拉教鲁班放技能之动态规划

    前言

    HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。

    开场

    面试官: 你先自我介绍一下吧!

    安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目前在–公司做–系统开发。

    面试官: 看你简历上写熟悉Java集合,HashMap用过的吧?

    安琪拉: 用过的。(还是熟悉的味道)

    面试官: 那你跟我讲讲HashMap的内部数据结构?

    安琪拉: 目前我用的是JDK1.8版本的,内部使用数组 + 链表红黑树;

    安琪拉: 方便我给您画个数据结构图吧:

    面试官: 那你清楚HashMap的数据插入原理吗?

    安琪拉: 呃[做沉思状]。我觉得还是应该画个图比较清楚,如下:

    在这里插入图片描述

    1. 判断数组是否为空,为空进行初始化;
    2. 不为空,计算 k 的 hash 值,通过(n - 1) & hash计算应当存放在数组中的下标 index;
    3. 查看 table[index] 是否存在数据,没有数据就构造一个Node节点存放在 table[index] 中;
    4. 存在数据,说明发生了hash冲突(存在二个节点key的hash值一样), 继续判断key是否相等,相等,用新的value替换原数据(onlyIfAbsent为false);
    5. 如果不相等,判断当前节点类型是不是树型节点,如果是树型节点,创造树型节点插入红黑树中;(如果当前节点是树型节点证明当前已经是红黑树了)
    6. 如果不是树型节点,创建普通Node加入链表中;判断链表长度是否大于 8并且数组长度大于64, 大于的话链表转换为红黑树;
    7. 插入完成之后判断当前节点数是否大于阈值,如果大于开始扩容为原数组的二倍。

    面试官: 陷入沉默,讲的这么清楚,难道是也关注了微信公众号【安琪拉的博客】,我继续按照套路问,刚才你提到HashMap的初始化,那HashMap怎么设定初始容量大小的吗?

    安琪拉: [这也算问题??] 一般如果new HashMap() 不传值,默认大小是16,负载因子是0.75, 如果自己传入初始大小k,初始化大小为 大于k的 2的整数次方,例如如果传10,大小为16。(补充说明:实现代码如下)

    static final int tableSizeFor(int cap) {
      int n = cap - 1;
      n |= n >>> 1;
      n |= n >>> 2;
      n |= n >>> 4;
      n |= n >>> 8;
      n |= n >>> 16;
      return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }
    

    补充说明:下图是详细过程,算法就是让初始二进制右移1,2,4,8,16位,分别与自己位或,把高位第一个为1的数通过不断右移,把高位为1的后面全变为1,最后再进行+1操作,111111 + 1 = 1000000 = 262^6 (符合大于50并且是2的整数次幂 )

    在这里插入图片描述

    面试官: 你提到hash函数,你知道HashMap的哈希函数怎么设计的吗?

    安琪拉: [问的还挺细] hash函数是先拿到 key 的hashcode,是一个32位的int值,然后让hashcode的高16位和低16位进行异或操作。

    面试官: 那你知道为什么这么设计吗?

    安琪拉: [这也要问],这个也叫扰动函数,这么设计有二点原因:

    1. 一定要尽可能降低hash碰撞,越分散越好;
    2. 算法一定要尽可能高效,因为这是高频操作, 因此采用位运算;

    面试官: 为什么采用hashcode的高16位和低16位异或能降低hash碰撞?hash函数能不能直接用key的hashcode?

    [这问题有点刁钻], 安琪拉差点原地💥了,恨不得出biubiubiu 二一三连招。

    安琪拉: 因为key.hashCode()函数调用的是key键值类型自带的哈希函数,返回int型散列值。int值范围为**-2147483648~2147483647**,前后加起来大概40亿的映射空间。只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但问题是一个40亿长度的数组,内存是放不下的。你想,如果HashMap数组的初始大小才16,用之前需要对数组的长度取模运算,得到的余数才能用来访问数组下标。(来自知乎-胖君)

    源码中模运算就是把散列值和数组长度-1做一个"与"操作,位运算比取余%运算要快。

    bucketIndex = indexFor(hash, table.length);
    
    static int indexFor(int h, int length) {
         return h & (length-1);
    }
    

    顺便说一下,这也正好解释了为什么HashMap的数组长度要取2的整数幂。因为这样(数组长度-1)正好相当于一个“低位掩码”。“与”操作的结果就是散列值的高位全部归零,只保留低位值,用来做数组下标访问。以初始长度16为例,16-1=15。2进制表示是00000000 00000000 00001111。和某散列值做“与”操作如下,结果就是截取了最低的四位值。

      10100101 11000100 00100101
    & 00000000 00000000 00001111
    ----------------------------------
      00000000 00000000 00000101    //高位全部归零,只保留末四位
    

    但这时候问题就来了,这样就算我的散列值分布再松散,要是只取最后几位的话,碰撞也会很严重。更要命的是如果散列本身做得不好,分布上成等差数列的漏洞,如果正好让最后几个低位呈现规律性重复,就无比蛋疼。

    时候“扰动函数”的价值就体现出来了,说到这里大家应该猜出来了。看下面这个图,

    img

    右移16位,正好是32bit的一半,自己的高半区和低半区做异或,就是为了混合原始哈希码的高位和低位,以此来加大低位的随机性。而且混合后的低位掺杂了高位的部分特征,这样高位的信息也被变相保留下来。

    最后我们来看一下Peter Lawley的一篇专栏文章《An introduction to optimising a hashing strategy》里的的一个实验:他随机选取了352个字符串,在他们散列值完全没有冲突的前提下,对它们做低位掩码,取数组下标。

    img

    结果显示,当HashMap数组长度为512的时候(292^9),也就是用掩码取低9位的时候,在没有扰动函数的情况下,发生了103次碰撞,接近30%。而在使用了扰动函数之后只有92次碰撞。碰撞减少了将近10%。看来扰动函数确实还是有功效的。

    另外Java1.8相比1.7做了调整,1.7做了四次移位和四次异或,但明显Java 8觉得扰动做一次就够了,做4次的话,多了可能边际效用也不大,所谓为了效率考虑就改成一次了。

    下面是1.7的hash代码:

    static int hash(int h) {
        h ^= (h >>> 20) ^ (h >>> 12);
        return h ^ (h >>> 7) ^ (h >>> 4);
    }
    

    面试官: 看来做过功课,有点料啊!是不是偷偷看了公众号安琪拉的博客, 你刚刚说到1.8对hash函数做了优化,1.8还有别的优化吗?

    安琪拉: 1.8还有三点主要的优化:

    1. 数组+链表改成了数组+链表或红黑树;
    2. 链表的插入方式从头插法改成了尾插法,简单说就是插入时,如果数组位置上已经有元素,1.7将新元素放到数组中,原始节点作为新节点的后继节点,1.8遍历链表,将元素放置到链表的最后;
    3. 扩容的时候1.7需要对原数组中的元素进行重新hash定位在新数组的位置,1.8采用更简单的判断逻辑,位置不变或索引+旧容量大小;
    4. 在插入时,1.7先判断是否需要扩容,再插入,1.8先进行插入,插入完成再判断是否需要扩容;

    面试官: 你分别跟我讲讲为什么要做这几点优化;

    安琪拉: 【咳咳,果然是连环炮】

    1. 防止发生hash冲突,链表长度过长,将时间复杂度由O(n)降为O(logn);

    2. 因为1.7头插法扩容时,头插法会使链表发生反转,多线程环境下会产生环;

      A线程在插入节点B,B线程也在插入,遇到容量不够开始扩容,重新hash,放置元素,采用头插法,后遍历到的B节点放入了头部,这样形成了环,如下图所示:

      在这里插入图片描述

      1.7的扩容调用transfer代码,如下所示:

      void transfer(Entry[] newTable, boolean rehash) {
        int newCapacity = newTable.length;
        for (Entry<K,V> e : table) {
          while(null != e) {
            Entry<K,V> next = e.next;
            if (rehash) {
              e.hash = null == e.key ? 0 : hash(e.key);
            }
            int i = indexFor(e.hash, newCapacity);
            e.next = newTable[i]; //A线程如果执行到这一行挂起,B线程开始进行扩容
            newTable[i] = e;
            e = next;
          }
        }
      }
      
      
    3. 扩容的时候为什么1.8 不用重新hash就可以直接定位原节点在新数据的位置呢?

      这是由于扩容是扩大为原数组大小的2倍,用于计算数组位置的掩码仅仅只是高位多了一个1,怎么理解呢?

      扩容前长度为16,用于计算(n-1) & hash 的二进制n-1为0000 1111,扩容为32后的二进制就高位多了1,为0001 1111。

      因为是& 运算,1和任何数 & 都是它本身,那就分二种情况,如下图:原数据hashcode高位第4位为0和高位为1的情况;

      第四位高位为0,重新hash数值不变,第四位为1,重新hash数值比原来大16(旧数组的容量)

      在这里插入图片描述

    面试官: 那HashMap是线程安全的吗?

    安琪拉: 不是,在多线程环境下,1.7 会产生死循环、数据丢失、数据覆盖的问题,1.8 中会有数据覆盖的问题,以1.8为例,当A线程判断index位置为空后正好挂起,B线程开始往index位置的写入节点数据,这时A线程恢复现场,执行赋值操作,就把A线程的数据给覆盖了;还有++size这个地方也会造成多线程同时扩容等问题。

    final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
                   boolean evict) {
      Node<K,V>[] tab; Node<K,V> p; int n, i;
      if ((tab = table) == null || (n = tab.length) == 0)
        n = (tab = resize()).length;
      if ((p = tab[i = (n - 1) & hash]) == null)  //多线程执行到这里
        tab[i] = newNode(hash, key, value, null);
      else {
        Node<K,V> e; K k;
        if (p.hash == hash &&
            ((k = p.key) == key || (key != null && key.equals(k))))
          e = p;
        else if (p instanceof TreeNode) // 这里很重要
          e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
        else {
          for (int binCount = 0; ; ++binCount) {
            if ((e = p.next) == null) {
              p.next = newNode(hash, key, value, null);
              if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
                treeifyBin(tab, hash);
              break;
            }
            if (e.hash == hash &&
                ((k = e.key) == key || (key != null && key.equals(k))))
              break;
            p = e;
          }
        }
        if (e != null) { // existing mapping for key
          V oldValue = e.value;
          if (!onlyIfAbsent || oldValue == null)
            e.value = value;
          afterNodeAccess(e);
          return oldValue;
        }
      }
      ++modCount;
      if (++size > threshold) // 多个线程走到这,可能重复resize()
        resize();
      afterNodeInsertion(evict);
      return null;
    }
    

    面试官: 那你平常怎么解决这个线程不安全的问题?

    安琪拉: Java中有HashTable、Collections.synchronizedMap、以及ConcurrentHashMap可以实现线程安全的Map。

    HashTable是直接在操作方法上加synchronized关键字,锁住整个数组,粒度比较大,Collections.synchronizedMap是使用Collections集合工具的内部类,通过传入Map封装出一个SynchronizedMap对象,内部定义了一个对象锁,方法内通过对象锁实现;ConcurrentHashMap使用分段锁,降低了锁粒度,让并发度大大提高。

    面试官: 那你知道ConcurrentHashMap的分段锁的实现原理吗?

    安琪拉: 【天啦撸! 俄罗斯套娃,一个套一个】ConcurrentHashMap成员变量使用volatile 修饰,免除了指令重排序,同时保证内存可见性,另外使用CAS操作和synchronized结合实现赋值操作,多线程操作只会锁住当前操作索引的节点。

    如下图,线程A锁住A节点所在链表,线程B锁住B节点所在链表,操作互不干涉。

    面试官: 你前面提到链表转红黑树是链表长度达到阈值,这个阈值是多少?

    安琪拉: 阈值是8,红黑树转链表阈值为6

    面试官: 为什么是8,不是16,32甚至是7 ?又为什么红黑树转链表的阈值是6,不是8了呢?

    安琪拉: 【你去问作者啊!天啦撸,biubiubiu 真想213连招】因为作者就这么设计的,哦,不对,因为经过计算,在hash函数设计合理的情况下,发生hash碰撞8次的几率为百万分之6,概率说话。。因为8够用了,至于为什么转回来是6,因为如果hash碰撞次数在8附近徘徊,会一直发生链表和红黑树的互相转化,为了预防这种情况的发生。

    面试官: HashMap内部节点是有序的吗?

    安琪拉: 是无序的,根据hash值随机插入

    面试官: 那有没有有序的Map?

    安琪拉: LinkedHashMap 和 TreeMap

    面试官: 跟我讲讲LinkedHashMap怎么实现有序的?

    安琪拉: LinkedHashMap内部维护了一个单链表,有头尾节点,同时LinkedHashMap节点Entry内部除了继承HashMap的Node属性,还有before 和 after用于标识前置节点和后置节点。可以实现按插入的顺序或访问顺序排序。

    /**
     * The head (eldest) of the doubly linked list.
    */
    transient LinkedHashMap.Entry<K,V> head;
    
    /**
      * The tail (youngest) of the doubly linked list.
    */
    transient LinkedHashMap.Entry<K,V> tail;
    //链接新加入的p节点到链表后端
    private void linkNodeLast(LinkedHashMap.Entry<K,V> p) {
      LinkedHashMap.Entry<K,V> last = tail;
      tail = p;
      if (last == null)
        head = p;
      else {
        p.before = last;
        last.after = p;
      }
    }
    //LinkedHashMap的节点类
    static class Entry<K,V> extends HashMap.Node<K,V> {
      Entry<K,V> before, after;
      Entry(int hash, K key, V value, Node<K,V> next) {
        super(hash, key, value, next);
      }
    }
    

    示例代码:

    public static void main(String[] args) {
      Map<String, String> map = new LinkedHashMap<String, String>();
      map.put("1", "安琪拉");
      map.put("2", "的");
      map.put("3", "博客");
    
      for(Map.Entry<String,String> item: map.entrySet()){
        System.out.println(item.getKey() + ":" + item.getValue());
      }
    }
    //console输出
    1:安琪拉
    2:3:博客
    

    面试官: 跟我讲讲TreeMap怎么实现有序的?

    安琪拉:TreeMap是按照Key的自然顺序或者Comprator的顺序进行排序,内部是通过红黑树来实现。所以要么key所属的类实现Comparable接口,或者自定义一个实现了Comparator接口的比较器,传给TreeMap用于key的比较。

    面试官: 前面提到通过CAS 和 synchronized结合实现锁粒度的降低,你能给我讲讲CAS 的实现以及synchronized的实现原理吗?

    安琪拉: 下一期咋们再约时间,OK?

    面试官: 好吧,回去等通知吧!


    回复评论区的几个问题:

    1. @掌心一点微笑: put方法时候,指定位置存在数据->否->存放节点 -> 放入红黑树节点吗?不应该是存放节点->节点数是否大于阈值?这里不懂,求大佬解释
      这个地方图画的确实有问题,感谢指正,已更新。
    2. @海淀好男孩:初始容量不是2的幂会自动改成2的幂那里有些错误吧,50的二进制和下面的无符号右移4位不对啊
      这里是以50做初始值演示的,先进行-1 操作然后开始二进制运算的。

    参考资料

    1. An introduction to optimising a hashing strategy
    2. JDK 源码中 HashMap 的 hash 方法原理是什么?
    3. 淡腾的枫-HashMap中的hash函数

    关注Wx公众号:【安琪拉的博客】 —揭秘Java后端技术,还原技术背后的本质

    《安琪拉与面试官二三事》系列文章 持续更新中
    一个HashMap能跟面试官扯上半个小时
    一个synchronized跟面试官扯了半个小时

    展开全文
  • win10出现这种情况 是因为你吧笔记本的wifi关了,可以按fn+F*(这里的*号指你笔记本上的含有wifi信号开关的那个F键,我的是F2)重新开启就可以连接了 还可以用其他方式打开 ...

    win10出现这种个情况

    是因为你吧笔记本的wifi关了,可以按fn+F*(这里的*号指你笔记本上的含有wifi信号开关的那个F键,我的是F2)重新开启就可以连接了

    还可以用其他方式打开

    https://jingyan.baidu.com/album/acf728fd7042b6f8e410a36e.html?picindex=2

    展开全文
  • 各位高手: 在不能写数据库触发器,数据库没有时间戳字段的情况下,Oracle数据库如何查询指定表最近一天或者一个小时的变更记录? 包括新增、修改、删除的数据。
  • php如何在原来的时间上加一天?一小时? echo "今天:",date('Y-m-d H:i:s'),""; echo "明天:",date('Y-m-d H:i:s',strtotime('+1 day')); ?> 上一行输出当前时间,下一行输出明天时间 这里+1 day可以修改...
  • php如何在某个时间上加一天?一小时?一星期?一月?('PRC'); //默认时区echo "今天:",date("Y-m-d",time())," "; echo "今天:",date("Y-m-d",strtotime("18 june 2008"))," ";echo "昨天:",date("Y-m-d",...
  • 最近在研究报表,要做一实时的统计一天各个时段的数据增量,以2小时为一组统计,发现这sql语句不简单,和大家分享一下我的写法。 做出来的效果如下:   sql语句如下: select count(distinct ro....
  • oracle的sql:24小时一天分成12时段

    千次阅读 2017-12-06 19:56:47
    把24小时的时间每两个小时分成一个时间段,分成了12条数据
  • 一天中的48小时

    千次阅读 2012-07-01 10:02:12
    只要你愿意,你的一天将是四十八小时,而不是二十四小时。  时间就是上帝给你的资本。命运之神是公平的,他给每人的时间都是公平的,他给每人的时间都不多不少;但成功女神却是挑剔的,她只让那些能把24小时...
  • 写自动化的时候遇到这样一需求,给某个日期控件附当前日期,如果条件满足继续,如果不满足,则赋下一天。 1、datetime模块 print(datetime.datetime.now()) 运行结果: 2017-10-17 16:59:28.385184 ...
  • 首先是 设置好int[] xuqiu = {60,70,60,50,20,30,...}; //42需求,代表周分成42班次,每班次的需求人数。main函数里面的 text1.anpaifangjia(203); 中203代表 是 向上取整((60+70+60+50+20+30)*4/40*7)
  • 当前日期时间 import datetime print(datetime.datetime.now()) # 2019-03-28 17:22:51.750103 格式化时间 import datetime print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) ...加一天 ...
  • 教你怎么把一天24小时变成48小时

    千次阅读 热门讨论 2015-08-13 22:27:48
    只要你愿意,你的一天将是四十八小时,而不是二十四小时。   时间就是上帝给你的资本。命运之神是公平的,他给每人的时间都是公平的,他给每人的时间都不多不少;但成功女神却是挑剔的,她只让那些能把24...
  • 因为工作而对着电脑的时间,娱乐的...我忽然就担心起来了,做程序员一天怎么少用电脑都少不过4小时吧,那么各位前辈,请问你们有孩子吗?你们每天对多少小时电脑?还有你们的生活习惯,如饮食,作息,锻炼方面的怎样呢
  • 1、当前日期   select DATE_SUB(curdate(),INTERVAL 0 DAY) ; 2、明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) ; 3、昨天日期 ...select DATE_SUB(curdate()...4、前一个小时时间 select date_sub(now(), ...
  • SQL server 按小时统计一天的数据

    千次阅读 2016-12-15 18:14:44
    from DtRecords c , (select 0 a,1 b union all select 1,2 union all select 2,3 union all select 3,4 union all select 4,5 union all select 5,6 union all select 6,7 union all select 7,8 union all select 8...
  • format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1,RegExp.$1....
  • SELECT '前一天前一小时前一分钟前一秒' TITLE,   TO_CHAR(SYSDATE - 1 - 1 / 24 - 1 / 24 / 60 - 1 / 24 / 60 / 60,   'yyyy-mm-dd hh24:mi:ss') TIME   FROM DUAL  UNION ALL  SELECT '一...
  • 获取一天24小时小时的订单数量,没有的置为0   date_tool为统计工具表date值为1~31, hours值为 0~24 month 值为1~12 字段类型可根据自己需求改变 CREATE TABLE `date_tool` ( `TOOL_ID` int(10) ...
  • ![转换前](https://img-ask.csdn.net/upload/201509/25/1443171467_472728.png)...![转换](https://img-ask.csdn.net/upload/201509/25/1443171635_685550.png) 我不想用case when 因为现在我写的sql已经很长了。。。
  • 今天抽时间整理了篇mysql中与、周、月有关的时间数据的sql语句的各种写法,部分是收集资料,全部手工整理,自己学习的同时,分享给大家,并首先默认创建一个表、插入2条数据,便于部分数据的测试,其中部分名词...
  • 一天24小时钟表中时针,分针和秒针重合了多少次1:05之后有一次 2:10之后有一次 3:15之后有一次 4:20之后有一次 5:25之后有一次 6:30之后有一次 7:35之后有一次 8:40之后有一次 9:45之后有一次 10:50之后有一次 12:00...
  • SQL查询一月第一天/最后一天

    千次阅读 2011-09-16 10:39:39
    SQL查询一月第一天/最后一天 1.一月第一天的 Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一 Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) 3
  • 4 hour UNION ALL SELECT 5 hour UNION ALL SELECT 6 hour UNION ALL SELECT 7 hour UNION ALL SELECT 8 hour UNION ALL SELECT 9 hour UNION ALL ...
  • Python发展可以说是如日中天,更多的人选择学习Python,也更多的人开始关注它,从这些关注度来看,我...然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月。其中缘由,有些人看了大半辈子...
  • 在开发web中,我们经常需要用到Date,但是常见的几种...1. 获取前一天的时间 //获取前一天的时间 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date date=new Date(); Calendar calenda...
  • api地址: pm2.5 api ...724小时天气api http://api.lib360.net/open/weather.json?city=苏州 GET请求 参数 prov 可选省份 如:江苏 河北 city 城市名称 如:苏州 上海 返回数据格式json data 字段

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 393,088
精华内容 157,235
关键字:

一天后4个小时是