随笔分类 -  Java

摘要:延迟加载:“懒汉模式” 延迟加载:“懒汉模式” 延迟加载是指在调用getInstance()方法时创建实例。常见的方法是在getInstance()方法中实例化new。实现代码如下: 但是因为getInstance()中有多个语句,所以可能存在线程安全问题。运行结果还表明: 即使getInstanc 阅读全文
posted @ 2018-12-14 16:47 工程师搁浅 阅读(417) 评论(0) 推荐(0) 编辑
摘要:通配符是什么 <?>指的是Object及其子类,也就是所有Java对象 泛型是什么 声明泛型 <T>声明一个泛型类或者泛型方法 示例: 使用泛型 <?>使用一个泛型类或者泛型方法 示例: 1 public static ResultDTO<?> entity(int code,Object... d 阅读全文
posted @ 2018-12-14 14:41 工程师搁浅 阅读(960) 评论(0) 推荐(0) 编辑
摘要:一、Java内存模型 硬件处理 电脑硬件,我们知道有用于计算的cpu、辅助运算的内存、以及硬盘还有进行数据传输的数据总线。在程序执行中很多都是内存计算,cpu为了更快的进行计算会有高速缓存,最后同步至主内存,大概的交互如下图 为了使处理器内部的运算单元能够被充分的利用,处理器可能会对输入代码进行乱序 阅读全文
posted @ 2018-12-13 15:04 工程师搁浅 阅读(392) 评论(0) 推荐(0) 编辑
摘要:Java中的Object对象为所有对象的直接或间接父对象,里面定义的几个方法容易被忽略却非常重要。以下来自Effective Java 对Object中几个关键方法的应用说明。 equals(Object o) Object中equals方法的实现仅仅是比较了两个对象的地址,对于某些类来说正是所需用 阅读全文
posted @ 2018-12-13 12:25 工程师搁浅 阅读(611) 评论(0) 推荐(0) 编辑
摘要:0、介绍 本篇文章是在我看完《从零开始学架构》之后,以架构演变为主线,梳理了一下演变过程中出现的问题以及解决方案,文章中引用了这本书的一些内容和图片 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 分布式:一个业务拆分成多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器 阅读全文
posted @ 2018-12-12 08:41 工程师搁浅 阅读(2826) 评论(0) 推荐(1) 编辑
摘要:前言 最近需要开发一个纯API的项目,mlsql-cluster,从无到有,到最后完整的proxy功能开发完毕,只花了四个小时不到,自己不尽小感叹了一把 ServiceFramework的高效。 关于ServiceFramework的诞生 ServiceFramework算是一个古老的,基于Java 阅读全文
posted @ 2018-12-11 21:51 工程师搁浅 阅读(405) 评论(0) 推荐(1) 编辑
摘要:1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果 阅读全文
posted @ 2018-12-11 16:08 工程师搁浅 阅读(998) 评论(0) 推荐(0) 编辑
摘要:一、算法介绍 快速排序:快速排序的基本思想是通过一次排序将等待的记录分成两个独立的部分,其中一部分记录的关键字小于另一部分的关键字。C部分的快速排序一直持续到整个序列被排序。 任取一个元素 (如第一个) 为中心提出所有小于它的元素,并将大于它的元素放回,形成左右两个子表。为每个子表重新选择中心元素, 阅读全文
posted @ 2018-12-10 23:05 工程师搁浅 阅读(4675) 评论(0) 推荐(0) 编辑
摘要:本文的目的是讨论抽象类和接口的作用、示例和使用场景,这是我的理解和总结。对于接口和抽象类的更多概念性知识,你可以自己参考相关文档。 1. 抽象类及其作用 抽象类,顾名思义,即类的抽象。 当引入面向对象的概念时,我们知道类是客观事物的抽象,抽象类是类的进一步抽象。如何理解它们? 例如,我们定义了宝马、 阅读全文
posted @ 2018-12-10 18:24 工程师搁浅 阅读(465) 评论(0) 推荐(0) 编辑
摘要:排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序。 内部排序是数据记录在内存中进行排序。 而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序 阅读全文
posted @ 2018-12-09 18:04 工程师搁浅 阅读(4175) 评论(0) 推荐(2) 编辑
摘要:本文的重点在于如何构建一个高性能的MySQL索引,从中你可以学到如何分析一个索引是不是好索引,以及如何构建一个好的索引。 索引误区 多列索引 一个索引的常见误区是为每一列创建一个索引,如下面创建的索引: t表里有三列,并且为每列创建了一个索引。创建索引的人为了能够快速访问表中的任何一列,因此为每一列 阅读全文
posted @ 2018-12-09 17:44 工程师搁浅 阅读(212) 评论(0) 推荐(0) 编辑
摘要:SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。 1.Spring简介 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod 阅读全文
posted @ 2018-12-01 16:08 工程师搁浅 阅读(5290) 评论(0) 推荐(1) 编辑
摘要:synchronized关键字主要有以下这3种用法: synchronized关键字主要有以下这3种用法: 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代 阅读全文
posted @ 2018-11-27 15:30 工程师搁浅 阅读(4279) 评论(0) 推荐(2) 编辑
摘要:前言 上篇文章我们分析了HashSet,它是基于HashMap实现的,那TreeSet会是怎么实现的呢?没错!和大家想的一样,它是基于TreeMap实现的。所以,TreeSet的源码也很简单,主要还是理解TreeMap。 TreeSet的继承关系 按照惯例,先来看TreeSet类的继承关系: 前言 阅读全文
posted @ 2018-11-27 12:01 工程师搁浅 阅读(553) 评论(0) 推荐(0) 编辑
摘要:估计很多Java初学者在学习Java的过程中都会遇到这个问题,那就是String,StringBuilder,StringBuffer这三个类之间有什么区别?今天在这里整理一下,希望对大家有帮助哈。如果哪里有问题的话,还望大家不吝赐教,以免误导Java初学者。 这三个类之间的区别主要体现在以下这两方 阅读全文
posted @ 2018-11-26 19:45 工程师搁浅 阅读(414) 评论(0) 推荐(0) 编辑
摘要:<!-- flowchart 箭头图标 勿删 --> Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer, 阅读全文
posted @ 2018-11-26 12:44 工程师搁浅 阅读(735) 评论(0) 推荐(0) 编辑
摘要:一、运行时数据区域 ​ 1、程序计数器: 当前线程执行字节码的行号指示器(通过改变计数器的值来选择下条需要执行的字节码指令) 每个线程有独立的程序计数器(线程私有,为了切换线程时能恢复到挣钱的执行位置) 如果执行java方法,计数器记录正在执行的字节码指令地址。如果执行的是Native方法,计数器为 阅读全文
posted @ 2018-11-25 17:56 工程师搁浅 阅读(515) 评论(0) 推荐(0) 编辑
摘要:1、什么是Redis?简述它的优缺点? Redis的全称是:Remote Dictionary.Server,本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。 因为是纯内存操作,Re 阅读全文
posted @ 2018-11-24 22:31 工程师搁浅 阅读(2075) 评论(0) 推荐(0) 编辑
摘要:多线程编程是为了让程序运行得更快,但是不是说,线程创建地越多越好,线程切换的时候上下文切换,以及受限于硬件和软件资源的限制问题 上下文切换 单核CPU同样支持多线程编程,CPU通过给每个线程分配CPU时间片来实现这个机制,时间片是CPU分配给各个线程的时间,这个时间片非常短,所以就不得不通过切换线程 阅读全文
posted @ 2018-11-24 15:10 工程师搁浅 阅读(406) 评论(0) 推荐(0) 编辑
摘要:一、快速准备 SSM 框架即 Spring 框架、SpringMVC 框架、MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了。这里再简单的介绍一下: 1.Spring Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身, 阅读全文
posted @ 2018-11-23 17:24 工程师搁浅 阅读(770) 评论(0) 推荐(0) 编辑