想起之前阿里面试的时候有个面试官问道一个问题,怎么通过编码的方式获取当前机器是大端存储还是小端存储,当时问的我一脸懵逼,大小端还是在学计算机组成的时候接触到的概念,今天在看NIO的时候,突然又碰到了,而且居然提到了可以通过java.nio包中ByteOrder这个类文件来直接获取当前JVM运行的机器存储的固有字节顺序。
Redis设计与实现-RDB与AOF
上一篇文章主要是关于Redis的底层数据结构的实现,本篇是redis设计与实现的第二部分,内容主要是一个单机redis数据库的主要特性特征,本文主要节选redis的RDB持久化和AOF功能。
Redis设计与实现-数据结构
虽然说之前也使用过Redis这个久负盛名的NoSQL数据库,但是也仅仅停留在用得阶段,并没有对其的设计原理和实现进行深究,对Redis的印象也只是停留在它是一个基于内存的k-v键值存储数据库,经常被用来做系统的缓存方案。但是知道这些对我来说并不够,便找了本书结合网上的源码一起看,本文是基于《Redis设计与实现》书籍第一部分的mini版阅读笔记,方便以后回顾。
Git分支管理小团队实践
最近实验室的项目终于开始正式撸代码了,前期一直处于各种七七八八的设计阶段,项目成员主要就是我们实验室同届的加上我一共五个,虽然之前一直代码管理用得就是Git,但是关于Git的分支管理一直很混乱,甚至没有任何规约。
实验室同学之前在项目中分支管理的方法是有一个dev分支和master分支,然后另外每个人凡参与项目都得新建一个自己的分支,合并代码在自己的分支上,而且自己的分支是不会被删除的,按照这种方法就是每个人得维护自己的分支。
询问了同学他们之前为什么这么做,他们也不清楚,只是其他人这么做,他们于是就跟着做了。我觉得这种方法每个人都得维护自己的分支,分支太多容易混乱不利于后期代码管理,而且思路不清晰,便想着重新启用一套比较简洁成熟的分支管理策略,适合我们这种小团队项目开发。
漫谈Spring的启动与初始化(一)
最近帮实验室同学调了个BUG,项目中也要用到Spring,想想虽然之前也有看过一些关于Spring容器的知识,但是有些东西却已经逐渐生疏了或者是模糊了,比如最常见的问题,Spring的启动流程是什么样的?这个问题,我想即使是经常做web开发的也不见得能完完整整的回答出来,于是结合网上资料再配合Spring源码,决定再梳理一下Spring容器是如何启动并初始化的,如果有不正确的地方,希望路过的可以指出。
从Tomcat启动开始
查阅了大部分网上的文章,基本90%的都是直接从ContextLoaderListener这个监听器开始谈起,说ContextLoaderListener监听到了ServletContext的启动然后balabala开始启动容器了,但是我想知道监听器是什么时候来的啊,一切总是有个开始的,不能说有个监听器就有个监听器了吧。
ThreadPoolExecutor线程池源码分析
线程虽有不少了解,但是线程池却一直是处于一个模糊的概念,只知道大概,而并不知道具体的实现方式,本文打算从源码的角度分析JDK1.8中线程池实现的方式,我觉得看再多的文章阐述,都不如自己动手操作一遍,或者是翻开源码看看,这样底层数据结构是实现方法都能一目了然了。
ThreadPoolExecutor是一个灵活的,稳定的线程池,允许各种定制,本文主要基于ThreadPoolExecutor的源码进行分析。
SQL查询之执行顺序解析
一直对SQL的理解就处于半生不熟的状态,前段时间阿里面试三面的时候问道让写一个SQL语句,统计每个学生所有成绩平均分大于80分的结果,当时差不多能写出来,但是多少心里没底,索性就想好好温习一下SQL语言,不料发现几篇解释SQL语句执行逻辑顺序的文章,感觉挺有意思,仔细看完觉得困惑减少很多。想来以前我确实没有关注这个点,以前大学学习SQL仿佛也就是镜中花水中月一般,只是知道这么回事压根不清楚用在何处,每次写SQL都是从SELECT开始,都是凭感觉一蹴而就,对错与否也并不自知,这实在是件很可怕的事情。
去年的时候一时兴起注册了阿里天池比赛的账号,当时的数据分析语言就提供了SQL一项,然鹅当时的SQL知识早已归还老师,最后弃,书到用时方恨少啊。学习这件事还真是一件件积累而成,也需要有兴趣不断的去探索才能发现更有意思的东西。
言归正传,本文试图总结一下关于SQL查询中的执行顺序,方便以后温故知新。
浅析Serializable接口与transient关键字
发现很多Java基础知识不用的时候根本不知道,甚至有时候接触到了也会选择性忽略,之前在看JDK1.8部分源码的时候见到过transient,Google了一下也没去整理,加上阿里实习三面的时候被问到序列化,当时虽有一点印象,但是回答的并不好,这里查了一些网上资料,稍加整理尽量用最简单的语言说清楚这二者的所以然。
Java对象序列化
一般情况下,只有当JVM处于运行时,Java对象才可能存在,即这些对象的生命周期不会比JVM的生命周期更长。但是,对象序列化就能够帮助我们在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java序列化接口Serializable为处理对象序列化提供了一个标准机制,该接口简单易用。
除了在持久化对象时会用到对象序列化之外,当使用远程方法调用,或在网络中传递对象时,都会用到对象序列化。
Next主题背景个性化DIY
抽空整理了一下博客,可能是看惯了灰白色背景的单调,于是想加个BGI(BackGroundImage,背景音乐叫BGM,背景图片我姑且就叫BGI了)调整一下视觉感官,而且最终这个BGI是动态变化的,每次刷新都会更新一张图,如果你也有这样的想法,那么本文适合你。
一个图片网站
首先,分享一个非常nice的图片网站,感觉这个国外的图片社区网站真的秒杀一众图片网站啊,不仅图片质量高,免费,而且还提供了随机拉取图片的服务API,太赞,对于想实现动态背景,简直是福音-site链接。