大雁小鱼的博客

Talk is cheap,show me your code please.

C语言中命名以单下划线(_)和双下划线(__)开头的意思

c语言中命名以单下划线(_)和双下划线(__)开头的意思 以单下划线(_)表明是标准库的变量 双下划线(__) 开头表明是编译器的变量

volatile关键字

volatile关键字 书本知识 在《深入理解Java7》这本书中讲到volatile关键字的时候说,该关键字用来对共享变量的访问进行同步,对一个volatile变量的上一次写入操作和下一次读取操作之间存在“在之前发生“的顺序。所以下一次读取的值一定是上一次写入的值。 网络知识 在看书以前曾看过无数他人博客对这个关键字的解析,我梳理一下对这个关键字的理解。 这个关键字可以保证上一次对该关...

多线程知识

多线程知识 基本概念 线程是操作系统调度的基本单位,进程是操作系统分配资源的基本单位 在同一个进程下的多个线程共享这个进程的资源,不同进程的资源是不能共享的 Java中只存在线程,它映射到操作系统中的轻量级进程,即线程 JAVA中是不存在进程的,因为Java虚拟机启动本身就是作为一个进程存在的,进程里面是不能再创建进程的。 Linux从内核2.6开始使用NPTL支持,此...

基础知识之java math类

基础知识之Java Math类 Question 1 提问:Math.round(1.5)等于多少?Math.round(-1.5)等于多少? 回答:四舍五入并不像看上去的那么简单,有时候不掌握技巧很难在面试的时候回答上来。计算机中处理四舍五入是这样的:原数上加上0.5然后向下取整数。 所以Math.round(1.5)计算方式是1.5+0.5 = 2,向下取整后得到2,Math.roun...

字典树

字典树 概述 字典树,又称单次查找树,Trie数,是一种树形结构,哈希表的变种。常常用于统计、排序和保存大量的字符串。 字典树可以利用字符串的公共前缀来减少存储空间,在存储、统计大量字符串的场景下比哈希表空间复杂度要小很多。 字典数的结构如下 字典树的核心思想是空间换时间。 字典树的每一个节点,只记录一个字符,根节点上不记录字符。从根节点到某个节点的路劲上的字符按顺序排列就是某...

100层楼2个球

题目 有一幢100层高的大楼,给你2个相同的玻璃球,将他们从某层扔下刚好会碎(也就是从N-1楼及以下扔下不会碎,从N楼及以上扔出会碎)。请问在最坏的情况下最少需要仍多少次才能确定刚好会碎的楼层N?注意,球一旦碎了就没有用了,如果不碎,可以继续使用。 分析 题目中有几个关键点需要特别注意: 第一、一定可以找到N,使得刚好会碎; 第二、一定存在一个最优解 根据第一点可以得出结论:100楼一定...

Do{...}while(0)

do{…}while(0) 在Linux内核的源码或者其他一些C的开源代码中(比如说Redis源码中),经常会遇见这样的代码: do{ ... }while(0) 这种代码一看就让人觉得很奇怪,它一看就不是一个循环,似乎一点意义都没有,那么为什么要这样使用呢?实际上这里头的学问还真的挺大的,这种写法的主要目的是为了定义复杂的宏,同时避免使用的时候出现错误。 举例来说,假设你需要定义这...

海量数据处理算法题

海量数据处理算法题 Bitmap bitmap是一种对位进行操作的“数据结构”,它由许多的比特位组成,每一个位表示某一个元素的信息,这种“数据结构”可以大大地节约内存的使用,特别适合用于海量数据处理的场合。 题目1 已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。 比如12345678、12345678、98765432,这三个号码,不同号码的个数是2个。 解题...

回答:你对spring的简单理解

回答:你对Spring的简单理解 Spring项目 Spring是一个非常庞大的体系,在这个体系中有数量众多的项目,以下几个项目是比较常见的 Spring Framework Spring Boot Spring Data Spring Security Spring Cloud 我们着重说一说Spring Framework这个项目,它是一个开源的J2EE全功能栈的应...

Concurrenthashmap总结

ConcurrentHashMap总结 ConcurrentHashMap1.7和1.8版本有以下一些不同 结构上,1.7采用segment数组+链表的结构,1.8采用Node数组+链表/红黑树的结构 1.7中对每一个segment加锁,而1.8中对每一个Node加锁,且使用synchronized,可以被JVM更好地优化,锁粒度更小 1.8中链表中的数据个数大于8的时候,转...