java技术学习之道
文章平均质量分 77
定期分享各类优质的文章。推荐一个微信公众号:java技术学习之道,每天分享java技术干货。
Tanyboye
专注于计算机领域的一枚程序员!
展开
-
java注解-最通俗易懂的讲解
来源:秒懂,Java 注解 (Annotation)你可以这样学Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如: Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的...转载 2018-06-05 10:24:36 · 124546 阅读 · 177 评论 -
java反射详解
来源:Java基础之—反射(非常重要)反射是框架设计的灵魂使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的...转载 2018-06-06 13:28:49 · 925 阅读 · 0 评论 -
javaIO详解
来源:编程语言的基础——搞定JavaIOJava I/O流是一组有顺序的,有起点和终点的字节集合。是对设备文件间数据传输的总称和抽象。在IO中涉及的设备文件包括文件、控制台、网络链接等,这其中又根据流的方向可以将两端的设备文件分为数据源对象和接收端对象数据源对象:有能力产出数据接收端对象:有能力接收数据而IO流实际上屏蔽了在实际设备中的处理数据的细节,这些处理方式也叫...转载 2018-06-07 18:56:07 · 5068 阅读 · 0 评论 -
java线程-看这一篇就够了
来源:Java中的多线程你只要看这一篇就够了前言 如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。基本概念 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来...转载 2018-06-08 09:52:19 · 564 阅读 · 0 评论 -
Java 11 新功能来了!
关键时刻,第一时间送达!目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布。本文介绍 Java 11 的新功能。根据Oracle新出台的每6个月发布一次Java SE的节奏,Java 11将于2018年9月发布,迄今为止Oracle已经宣布了好几个新功能。此外,Java 11还将删除一些功能,其中包括删除CORBA和Jav...转载 2018-05-26 18:44:41 · 415 阅读 · 0 评论 -
枚举7常见种用法
来源:Java 枚举7常见种用法DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl…. 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public enum Color { RED, GREEN,...转载 2018-05-29 00:40:51 · 519 阅读 · 0 评论 -
常见的缓存穿透,缓存击穿,缓存雪崩解决方案分析
作者:zeb_perfect来源:blog.youkuaiyun.com/zeb_perfect前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可...转载 2018-05-30 10:15:22 · 383 阅读 · 0 评论 -
最详细的java泛型详解
来源:最详细的java泛型详解对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、 java泛型详解1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟...转载 2018-05-31 10:38:07 · 739 阅读 · 1 评论 -
Java异常详解及如何处理
来源:Java异常详解及如何处理简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢...转载 2018-06-01 10:39:40 · 794 阅读 · 0 评论 -
资深大牛的吐血建议,你想知道如何学习,怎样进入阿里吗?
作者 : 左潇龙 | 来源 : 博客园引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回...转载 2018-05-17 03:08:59 · 866 阅读 · 0 评论 -
程序员如何高效学习?看完这篇你就知道了
作者 :NaYoung来源 :博客园写在前面其实学习是一件很私人的事情,每个人都应该有一套自己的学习方式,而不是照搬照抄别人的。适合别人的不一定适合自己。所以,读这篇分享的时候,请以一种【这点是不是对我有帮助】的心态来阅读,而不是【原来我要这样才能学的好】的心态。如果你觉得某一点对你有用,那就记在心里,如果你觉得不太适合你,那么一笑而过就好。我不是什么大牛,只是一个普通的本科生,...转载 2018-05-21 15:20:59 · 1238 阅读 · 1 评论 -
常见的Redis面试题及分布式集群讲解
作者 :蘑菇先生出处 : http://www.cnblogs.com/mushroom/1. 使用Redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数...转载 2018-05-22 00:20:49 · 430 阅读 · 0 评论 -
JAVA设计模式之单例模式
来源:JAVA设计模式之单例模式概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,...转载 2018-05-23 20:36:04 · 294 阅读 · 0 评论 -
Docker入门指南
地址:docker入门指南更换国内镜像源docker store地址默认是在国外,下载速度很慢,自行更换国内docker加速地址。名词解释image: 镜像containers: 容器docker-machine: docker虚拟主机docker store: docker存储云术语Image 和 ContainerImage可以理解为一个系统镜像,Container是Image在运...转载 2018-05-26 13:06:07 · 464 阅读 · 0 评论 -
10大必备的Intellij插件,大幅提高你的工作效率
作者 :葛俊_0f97来源 : 简书善用Intellij插件可大幅提升我们的效率以下是我用过不错的Intellij插件1. .ignore生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写2. lombok支持lombok的各种注解,从此不用写getter setter这些 可以把注解还原为原本的java代码 非常方便3. p3c阿里巴巴出品的...转载 2018-05-20 00:27:07 · 6760 阅读 · 1 评论 -
7大经典的排序算法总结实现
作者 : liuyang0 来源 : 博客园常见排序算法总结与实现本文使用Java实现这几种排序。 以下是对排序算法总体的介绍。 冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越...转载 2018-05-18 01:28:06 · 307 阅读 · 0 评论 -
2分钟带你理解IOC
来源 | 个人博客| 作者 | zhang1. IoC是什么Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:...转载 2018-05-14 20:40:01 · 339 阅读 · 0 评论 -
MyBatis快速入门
来源 | 个人博客 | 作者 | 湖畔微风简介简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。...转载 2018-05-11 17:09:58 · 293 阅读 · 0 评论 -
理解MVC及快速入门
来源 | 个人博客| 作者 | MrSaber说明:传统MVC——>JSPModel2——>Front Controller + Application Controller + Page Controller + Context 三种模式是JavaWeb设计模式的逐渐适配和演进。本文分别讲述了这三种模式,作为了解即可。SpringMVC正是采用了第三种设计模式。MVC说明 MVC是...转载 2018-05-12 20:29:59 · 1303 阅读 · 0 评论 -
String类的不可变性
来源 | 简书| 作者 | 指尖上的榴莲一.原理(为什么说String类是不可变的)1.什么是不可变对象如果一个对象在创建之后就不能再改变它的状态,那么这个对象是不可变的(Immutable)。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型变量的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。2.final关键字的作用如果要创建一个不可变对象,关...转载 2018-05-13 21:55:40 · 1601 阅读 · 1 评论 -
Servlet基础——快速了解什么是Servlet
来源 | 为知笔记| 作者 | 水之笔记一、什么是servletservlet是在服务器端运行的一个小程序。一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的servlet程序。二、tomcat容器等级tomcat的容器等级分为四个等级,servlet的容器管理context容器,一个context对应一个web工程。Engine是个引擎容器H...转载 2018-05-16 10:59:17 · 564 阅读 · 0 评论 -
海量数据处理 - 找出最大的n个数(top K问题)
前言前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆...转载 2018-05-15 15:05:57 · 5328 阅读 · 0 评论 -
分布式之延时任务方案解析
引言在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期定时任务一般执行的是批处理操作...转载 2018-05-04 00:32:56 · 282 阅读 · 0 评论 -
高可用Redis服务架构分析与搭建
基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任...转载 2018-05-04 00:23:53 · 211 阅读 · 0 评论 -
面试必看!2018年4月份阿里最新的java程序员面试题目
目录 技术一面(23问)技术二面(3大块)性能优化(21点)项目实战(34块)JAVA方向技术考察点(15点)JAVA开发技术面试中可能问到的问题(17问)阿里技术面试1 1.Java IO流的层次结构?2.请说出常用的异常类型?3.SKU的全称是什么,SKU与SPU的区别及关系?4.FileInputStream在使用完以后,不关闭流,想二次使用可以怎么操...转载 2018-05-04 00:26:26 · 744 阅读 · 0 评论 -
Tomcat端口8080占用问题
方法11.打开cmd窗口2.输入netstat -ano|findstr 8080 查看哪个进程id占用了8080端口3.输入taskkill -pid 进程id -f (如taskkill -pid 3168 -f)方法2如果大家觉得这篇文章对你有帮助的话,欢迎大家关注我的公众号:java技术学习之道(javajsxxzd),长期分享各种技术文章。...原创 2018-05-01 17:23:32 · 281 阅读 · 0 评论 -
阿里数据库面试问题合集!献给正在面试的你。
根据从阿里面试的同学总结出来的一些常见的数据库面试题,希望给正在面试的人一些帮助!索引的作用?它的优点缺点是什么?什么样的字段适合建索引?使用索引查询一定能提高查询的性能吗?为什么?mysql的三大引擎是啥?索引底层用什么实现的 在数据库中查询语句速度很慢,如何优化?什么是存储过程?有哪些优缺点?什么是事务?乐观锁和悲观锁是什么?什么是主键?什么是外键?什么是存储过程?用什么来调用?事务的隔离级别...原创 2018-05-09 10:18:27 · 12085 阅读 · 0 评论 -
Java 9 新特性概述
Java 9 正式发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有一些新的特性。 本文对 Java9 中包含的新特性做了概括性的介绍,可以帮助你快速了解 Java 9。Java 平台 模块系统Java 平台模块系统,也就是 Project Jigsaw,把...转载 2018-05-02 11:06:18 · 325 阅读 · 0 评论 -
JDK 10 已经来临,你准备好了吗?
虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的发布节奏,JDK10 已经到达发布候选里程碑阶段。我看过各种关于 JDK10 新特性的博客,但是它们都倾向于关注通过 JEPS 定义的大方面。这篇博文,我将看看是否可以罗列出 JDK10 中已经发生变化的方方面面(包括新增的和剔除的)。有时候,我会做一些关于 Java SE 的报告会。之前我在“ JDK9 的 55 个新特...转载 2018-05-02 11:34:31 · 327 阅读 · 0 评论 -
java线程池的实现原理
前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo1、Executors...转载 2018-04-30 19:38:04 · 285 阅读 · 1 评论 -
Java日志框架:logback详解
为什么使用logback记得前几年工作的时候,公司使用的日志框架还是log4j,大约从16年中到现在,不管是我参与的别人已经搭建好的项目还是我自己主导的项目,日志框架基本都换成了logback,总结一下,logback大约有以下的一些优点:内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升logback非常自然地直接实现了slf4j,这个严格来说算不上...转载 2018-04-30 19:49:49 · 1174 阅读 · 0 评论 -
Java关键字new-----对象的内存分配原理
一、关键字new概述 "new"可以说是Java开发者最常用的关键字,我们使用new创建对象,使用new并通过类加载器来实例化任何我们需要的东西,但你是否深入了解过new在编译的瞬间都做了什么? 在Java中使用new关键字创建对象变得很容易了,事实上,对这些事情你是不需要考虑的。需要访问一个文件吗?只需要创建一个新的File实例:new File(“jdbc.proper...转载 2018-04-29 00:55:48 · 360 阅读 · 0 评论 -
Java进阶--深入理解ArrayList实现原理
ArrayList简介ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小。要注意的是ArrayList并不是线程安全的,因此一般建议在单线程中使用ArrayList。ArrayList的继承关系public class ArrayList<E> extends A...转载 2018-04-29 01:01:41 · 162 阅读 · 0 评论 -
百度"Java面试题"前200页都在这里了
欢迎关注java技术学习之道,本公众号长期分享各种技术文章。基本概念操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区别get 和 post请求的区别Interface 与 abstract...转载 2018-04-26 13:56:39 · 232 阅读 · 0 评论 -
Java设计模式——代理模式实现及原理
简介Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:中介。代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSubject:真实主题角色,是实现抽象主题接口的类...转载 2018-04-27 18:40:58 · 218 阅读 · 0 评论 -
maven配置
1.maven下载地址:https://maven.apache.org/download.cgi2.下载完随便放在哪3.建一个文件夹用于存放maven下载的jar包4.找到maven目录下的conf/settings.xml5.在settings里加入<localRepository>D:\MYWORKPLCAE\repository</localRepository>(...原创 2018-04-26 16:22:53 · 155 阅读 · 0 评论 -
Tomcat安装配置教程
Tomcat作为一款免费开源的服务器,深受大家的喜爱。下面就教大家如何去安装使用Tomcat,以及可能遇到的问题。首先百度搜索Tomcat进入官网。左边就是下载的地方,这里有很多版本,大家可以自行选择。我这里选择的是Tomcat8.0版本的。点进去以后,接着我们找到底部下载的地方,如下图,这里是Windows系统的,大家根据自己的情况自行选择,有32位和64位,原创 2018-01-24 20:01:12 · 1339 阅读 · 0 评论 -
eclipse配置Tomcat并发布项目
在eclipse上配置Tomcat1. 点击Window → Preferences2. 找到Service → Runtime Envenvironments3. 点击右边的add,选择Tomcat版本我的是8.0的,大家可以根据自己的Tomcat版本进行选择原创 2018-01-24 22:46:58 · 1337 阅读 · 0 评论 -
java关键字之static解析
许多同学们在学习或者编写程序时,经常会看到java中的一个关键字:static,而且这也是面试官喜欢经常问的一个问题,说明这是十分重要的,那么static关键字到底有什么作用呢,我们到底怎么来使用它呢?下面就让我们一起来看一看。static关键字主要有以下4种用法:1.修饰成员变量2.修饰成员方法3.静态代码块4.静态导包PS:其实除了上面的4种用法,jav原创 2018-01-10 19:21:09 · 2356 阅读 · 0 评论 -
JDBC实现简单增删改查
JDBC全称为:Java Data Base Connectivity (java数据库连接),主要用于java与数据库的链接。整个链接过程如下图:1.数据库驱动:Driver加载mysql驱动:Class.forName("com.mysql.jdbc.Driver");加载oracle驱动:Class.forName("oracl原创 2018-01-23 13:28:38 · 38785 阅读 · 3 评论