- 浏览: 24751 次
最新评论
-
zhongxuchen:
说的很好!很多人就是不会抽象,总感觉问题很繁杂,千变万化,其实 ...
抽象能力决定编程能力 -
weiweiweiyi:
不是分代收集算法吗
关于Java引用,你必须知道这些 -
changlian0713:
[/flash]||||||||||||||||||||||| ...
Java虚拟机类加载机制
文章列表
全套java视频教程|300G海量资源等你来领
- 博客分类:
- 教程
互联网行业瞬息万变,每个java程序员都应该掌握良好的自学能力,这时候一套好的学习资料就非常重要啦!
之前整理了一部分电子书资源给大家,这次呢,整理了大约300G的java视频教程,视频更为直观,容易理解,非常适合自学者。
如果你正在考虑学习新事物或想要提高自己的Java基础知识,那么这批视频教程绝对可以帮助您。
在百度网盘设置了私密分享(仅限分享给读者朋友,范围可控),发送“视频教程”到程序之心公众号后台即可获得百度网盘地址和密码。后续会持续更新资源。
下面为大家展示一部分我整理的资源,包含java从基础到项目全方位指导、spring、spring Bo ...
今天聊聊小公司程序员如何进入向往的大公司这个话题,最初接触这个选题的时候,我也想了很多,这应该也是很多身处小公司的程序员朋友关心的话题。当然并不是人人都想进入大公司。
不过对刚刚毕业几年的程序员朋友来说,进入大公司锻炼还是很有吸引力的,就好比上一所好大学,是让履历更闪光的一种方式。
而且在大公司和小公司做程序员有完全不同的体验,代码标准、管理方式、发展阶段、资源等,影响着程序员们的工作内容和忙碌程度,以及最终获得的收获和感悟。不少程序员朋友表示,小公司跳入大公司太难了,为什么难呢?
归根结底因为大公司和小公司用人要求不同。对待应届生上,大公司仍然有着严苛的面试流程和要求,不一定要求应届 ...
稳定性在大型网站运行中至关重要,面对每分钟 10 万次的网络访问,稍有不慎就会引起重大故障。今天这篇文章一起讨论下亿级流量网站在稳定性方面的一些做法,希望对您有帮助。本文已发布在公众号和网站。
基础策略
配置化
配置化就是把很多业务流程相关的数据统一放在一个配置平台上,从代码中抽离出来,使得代码仅处理通用的业务逻辑。配置化之后,代码拥有处理所有场景的能力,通过配置数据来决定线上运行时具体操作什么样的数据。
配置化的设计使得我们能够对线上进行快速更改,做到实时的增加、变更和删除,对于快速处理问题有很好的效果。
业务开关
业务开关就是针对具体一个流程 ...
Java Servlet 温故而知新
- 博客分类:
- Java
Servlet 是运行在 Web 服务器上的 Java 小程序,能够接收并响应客户端发来的 HTTP 请求。Java Web 开发中,JSP 页面在编译之后也是生成 Servlet,而编译的过程在用户第一次访问页面时进行。通常情况下,我们使用 Tomcat 运行 Servlet。
Servlet 接口定义
javax.servlet.Servlet 接口定义了 Servlet 必须实现的 5 个方法:
destroy :Servlet 容器卸载 Servlet 时调用此方法释放 Servlet 占用的资源;
getServletConfig :返回 Servlet 配置信息,如初 ...
抽象能力决定编程能力
- 博客分类:
- 编程
程序员的抽象能力是在了解计算机工作原理的基础上,借助于一种或多种编程语言将问题的解决方案抽象为计算机程序的能力。在前文《关于编程能力的思考》中提到了编程能力包括理论基础和系统设计能力,抽象思维能力恰恰就是决定编程能力的关键。
程序的本质是人的意志延伸到计算机的可识别的指令。计算机思维简单仅能识别 0 1 代码,本身不能解决任何问题,只能由人编写程序控制计算机解决问题,因此编程的本质就是人“教会”计算机解决问题。
编写程序总是离不开各种各样的数据结构与算法,其中又蕴含着深刻的数学思想。理解一种数据结构或算法,就是在理解解决方案的一种抽象。
随着业务越来越复杂、需求越来越多 ...
MyBatis 原理浅析 3 ——数据操作
- 博客分类:
- MyBatis
前言
在前文《MyBatis 原理浅析——基本原理》一文中简单分析了 MyBatis 的实现原理,MyBatis 的数据库操作是通过 Executor 执行的。Executor 是一个接口,有三个实现类,分别是 SimpleExecutor、ReuseExecutor 和 BatchExecutor。
查询数据的流程
查询数据是通过 SqlSession 的方法实现的,SqlSession 封装了 Executor 的相关操作。以 select 为例,首先根据 SQL 语句关联的 statement 从 configuration 中获取 MappedStatement 对象 ...
MyBatis 原理浅析 2 ——配置解析
- 博客分类:
- MyBatis
前言
在前文《MyBatis 原理浅析——基本原理》一文中,简要分析了 MyBatis 的技术原理,主要是 SqlSession 和 Mapper 的相关实现原理。本文重点分析 MyBatis 的配置解析过程,从 XML 文件提取配置到 Configuration 类。
XML解析涉及到的类
XML 解析主要涉及以下几个类:XMLConfigBuilder、XMLMapperBuilder、BaseBuilder、XNode、Configuration、XPathParser 和 Configuration 中的配置类。各个类型的关系可以简单用下图描述。在 SqlSessionF ...
MyBatis 原理浅析——基本原理
- 博客分类:
- MyBatis
前言
MyBatis 是一个被广泛应用的持久化框架。一个简单的使用示例如下所示,先创建会话工厂,然后从会话工厂中打开会话,通过 class 类型和配置生成 Mapper 接口的代理实现,最后使用 Mapper 进行持久化操作。
本文将从 MyBa ...
编程能力
在一次面试中与主管聊到了什么是编程能力,这是一个值得思索和回味的话题。什么才是一个程序员真正的编程能力?或者,非科班程序员与科班程序员相比差在哪里?
作者认为,编程能力分为两个方面:理论基 ...
即时编译回顾
HotSpot 虚拟机执行 Java 程序时,先通过解释器对代码解释执行,发现某个方法或代码块执行比较频繁后,对热点代码进行编译,编译后生成与本地平台相关的机器码,再去执行机器码获得较高的运行效率。必要 ...
知识回顾
进程与线程是常常被提到的两个概念。进程拥有独立的代码段、数据空间,线程共享代码段和数据空间,但有独立的栈空间。线程是操作系统调度的最小单位,通常一个进程会包含一个或多个线程。多线程和多进程都 ...
《 Java 编程思想》
适合各个阶段 Java 程序员的必备读物。书中对 Java 进行了详尽的介绍,与其它语言做了对比,解释了 Java 很多特性出现的原因和解决的问题。初学者可以通过此书快速掌握 Java 面向对象的理念,学会正确使用 ...
Java 实现一次编译到处运行的基础,来源于 Java 虚拟机屏蔽了操作系统的底层细节。使用 class 文件存储编译后的源程序,使得 Java 程序的编译与操作系统解耦。正是因为 Java class 文件的设计与 Java 语言解耦,分别发布了 Java语言规范和 Java 虚拟机规范,使得其他语言如Scala、Groovy、JRuby、JPython 等基于Java 虚拟机的语言按照 class 文件格式要求生成的class 文件也能在虚拟机上运行。
class 文件格式
class 文件采用如下的结构存储二进制内容。其中 u2、u4 分别表示占用 2、4 个字节。
{
...
SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface,可以避免在 Java 代码中写死服务的提供者,而是通过 SPI 服务加载机制进行服务的注册和发现。通过这种方式,可以基于接口编程,实现多个模块的解耦。
SPI 机制实现解耦
如下的示例展示了通过 ServiceLoader 类加载指定接口的所有服务提供者并进行调用的简单实现。
1、定义接口 test.DirMonitor,包含一个方法 start();
2、实现接口 test.DirMonitor,定义两个实现类 test.ObserverMonitor 和 test ...
引用
Java 虚拟机接管了所有的内存分配与回收工作,极大地减少了程序员的工作量和错误率。GC 在回收内存时,通常采用被称为可达性分析的算法判断一个对象是否可以回收。而在可达性分析中,对象的引用有着决定性的作用。在下图中,GC 从 GC Roots 开始顺着引用链往下寻找对象,发现当前有引用的对象为object 1、object 2、object 3、object 4,而object 5、object 6、object 7虽然互相之间有引用但已经无法从外部引用到。因此,图中 object 1-4 为存活的对象,而 object 5-7 为可回收的对象。
虽然 GC 能够完成垃圾收集工 ...