分类 编程 下的文章

Spring体系常用项目一览


如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,我就在这里总结一下,理顺头绪。

Spring

Spring 概述

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的(替代更加重量级的企业级Java技术, 尤其是EJB),它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式如下图:


后端好书阅读与推荐(续)


续前文 后端好书阅读与推荐 - Mageek`s Wonderland ,几十天过去了,又看了两本好书(还有以前看过的书),这里依然把它们总结归纳一下,加入一些自己的看法、有用的链接和可能的延伸阅读,并推荐给需要的同学。

深入理解Java虚拟机

深入理解Java虚拟机 (豆瓣) https://book.douban.com/subject/6522893/

Java怎么用,是一个问题;怎么用好是一个大问题;这么用是为什么,是一个更大的问题。搞懂这三个问题应该是每一个搞Java的人都要追求的目标,读完本书,就能把这个更大的问题搞懂了。

本书亮点:

  • 模块化是解决应用系统与技术平台越来越复杂,越来越庞大的问题的一个重要途径,也是建立各种功能的标准件的前提。
  • Java运行时数据区几个主要部分:程序计数器(可看作当前线程所执行的字节码的行号指示器)、虚拟机栈(每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程,而栈帧存储局部变量表、 操作数栈、 动态链接、 方法出口等信息)、本地方法栈(Native方法对应的栈)、(所有线程共享的一块内存区域,存放对象实例)、方法区(各个线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据)、常量池(方法区的一部分,存放编译期生成的各种字面量和符号引用)。
  • 对象访问方式取决于虚拟机实现而定的,目前主流的访问方式有使用句柄和直接指针两种:如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息;如果使用直接指针访问,reference中存储的直接就是对象地址。


后端好书阅读与推荐


后端好书阅读与推荐

这一两年来养成了买书看书的习惯,陆陆续续也买了几十本书了,但是一直没有养成一个天天看书的习惯。今天突然想要做个决定:每天至少花1-3小时用来看书。这里我准备把这两年来看的书挑出好的做一个简要总结、即将要看的书做一个计划,以便整理成书单留给自己学习,也顺便推荐给需要的童鞋。

ps:本书单针对同一大类的知识点大致遵循着循序渐进,越学越深入越具体的顺序。

JavaScript高级程序设计

JavaScript高级程序设计(第3版) (豆瓣) https://book.douban.com/subject/10546125/

有人可能会有疑问,后端为啥要学JavaScript呢?其实就是为了更好的使用node.js做铺垫。这本书说是高级程序设计,其实还是比较基础,但是难能可贵的是它几乎包含了所有的基础知识,而且对基础知识的讲解比较深入,至少看了过后就不会犯那些常见的错误(比如for循环绑定变量i,这个问题几乎天天有人问(⊙﹏⊙)),能知其然、知其所以然,而且讲了许多最佳实践,所以还真的是高级。对于后端的同学可以只看基础部分,不看浏览器相关的部分(当然时间多也可以了解)。

本书有很多值得学习的地方,比如

  • 建议始终语句结尾要加分号,分支始终要加花括号,这样虽然多了些小麻烦,但能省去很多大麻烦:提高解析器性能,避免压缩错误,代码易读性可维护性更好。
  • 推荐使用 === 和 !== 而不是用 == 和 != ,这样才能保证代码中数据的完整性,避免歧义。
  • with语句不仅容易造成混淆,还会影响性能,不建议使用。
  • 函数按值传参,没有按引用传参,基本类型就不用说了,即使是引用类型参数a,函数也并不能修改a,使得a指向堆里面的另一个对象,所以也是按值传递。
  • 函数传参之时,使用对象字面量{}来封装大量的可选参数,比直接命名多个参数更灵活。


Nodejs中的一些小trick


之前常常因为不注意,习惯用写PHP或者Java的方式来写nodejs,产生了了一些错误,这里总结一些小小的trick,以便于展示nodejs的不同,和平时需要注意的地方。

变量提升

var variable = 'global';
console.log(variable); 
function fn () {
    console.log(variable); 
    var variable = 'local';
    console.log(variable);
}
fn();

你可能以为这段代码执行结果为:

global
global
local

但实际上结果是


数据结构与算法——常用数据结构及其Java实现


前言

仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛。所以准备在这里搞一个系列的文章,以期透彻。

本系列将采用Java语言来进行描述。亦即总结常见的的数据结构,以及在Java中相应的实现方法,务求理论与实践一步总结到位。

首先给出Java集合框架的基本接口/类层次结构: