Java基础
寒夕若梦
公众号:Java面试百分百,大家可以关注一下呀!
趁着年轻生猛,我要再和生活死磕几年。要么我就毁灭,要么我就铸就辉煌。如果有一天,你发现我在平庸面前低了头,那么请向我开炮。
展开
-
Java基础概要
1、 final, finally, finalize 的区别 final 用于声明属性,方法和类, 分别表示属性不可变, 方法不可覆盖, 类不可继承. finally 是异常处理语句结构的一部分,表示总是执行. finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃 圾收集时的其他资源回收,例如关闭文件等....原创 2018-04-01 11:33:16 · 418 阅读 · 0 评论 -
hibernate的三种查询方式
Hibernate的查询方式hibernate的查询方式常见的主要分为三种: HQL, QBC(命名查询), 以及使用原生SQL查询(SqlQuery)一、HQL查询• HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式。• HQL在语法结构上和SQL语句十分的相同,所以可以很快的上手进行使用。使用HQ...转载 2018-07-05 10:16:47 · 307 阅读 · 0 评论 -
谈谈微服务中的 API 网关(API Gateway)
前言又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉。那么,在本篇文章中,我们就一起来探讨一下 API 网关在整个微服务分布式架构中的一个作用。背景我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库...转载 2018-07-05 11:00:08 · 1624 阅读 · 1 评论 -
spring3-spring的事务管理机制
1. Spring的事务管理机制Spring事务管理高层抽象主要包括3个接口,Spring的事务主要是由他们共同完成的:PlatformTransactionManager:事务管理器—主要用于平台相关事务的管理TransactionDefinition: 事务定义信息(隔离、传播、超时、只读)—通过配置如何进行事务管理。TransactionStatus:事务具体运行状态—事务管理过程中,...转载 2018-07-05 12:00:04 · 366 阅读 · 0 评论 -
数据库性能优化详解
出处:https://www.cnblogs.com/easypass/archive/2010/12/08/1900127.html1.数据库访问优化法则要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因...转载 2018-07-13 13:26:59 · 690 阅读 · 0 评论 -
数据库SQL优化大总结1之- 百万级数据库优化方案
转自:https://mp.weixin.qq.com/s?__biz=MzIxMjg4NDU1NA==&mid=2247483684&idx=1&sn=f5abc60e696b2063e43cd9ccb40df101&chksm=97be0c01a0c98517029ff9aa280b398ab5c81fa1fcfe0e746222a3bfe75396d9eea1...转载 2018-07-13 13:31:07 · 582 阅读 · 0 评论 -
什么是线程安全
线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。产生线程不安全的原因在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件。实际上,这些问题只有在一或多个线程向这些资源做了写操作时才有可能发生,只要资源没有发生变化,多个线程...原创 2018-07-25 16:55:15 · 267 阅读 · 0 评论 -
Java NIO 详解(一)
NIO即新的输入输出,这个库是在JDK1.4中才引入的。它在标准java代码中提供了高速的面向块的IO操作。一、基本概念描述1.1 I/O简介I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换为字节,然后再转换为对...原创 2018-07-25 16:58:00 · 282 阅读 · 0 评论 -
Java NIO 详解(二)
在我的上一篇文章JavaNIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO)。异步IO异步 I/O 是一种没有阻塞地读写数据的方法。通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据。同样, write()调用将会阻塞直至数据能够写入,关于同步的IO请参考另一篇文章Java IO。另一方面,异步 I/O 调用不但不会...原创 2018-07-25 16:59:46 · 206 阅读 · 0 评论 -
JVM内存管理及GC机制
一、概述Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。经过这么长时间的发展,Java GC机制已经日臻完善,几乎可以自动的为我们做绝大多数的事情。虽然java不需要开发人员显示的分配和回收内存,这对开发...原创 2018-07-25 17:02:08 · 258 阅读 · 0 评论 -
Java 详解 JVM 工作原理和流程
作为一名Java使用者,掌握JVM的体系结构也是必须的。说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(....转载 2018-07-14 16:35:14 · 334 阅读 · 0 评论 -
对数据库索引的理解
1、首先要明白无名无实莫要用索引:因为数据中的记录很多,为了方便我们查找,提高查询的效率;2、索引的原理:对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了,比如图书馆的书是按照书名的第一个字母排序的,那么你想要找作者叫张三的就不能用改索引了;还有就是如果索引太多会降低查询的速度3、索引是优缺点: 首先明白为什...转载 2018-07-20 17:10:20 · 273 阅读 · 0 评论 -
数据库索引原理及优化
本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主...转载 2018-07-20 17:13:31 · 301 阅读 · 0 评论 -
volatile和synchronized的区别
volatile和synchronized特点首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized关键字解决的是执行控制的...转载 2018-07-20 17:15:16 · 180 阅读 · 0 评论 -
全面理解Java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,因此...转载 2018-07-20 17:16:18 · 174 阅读 · 0 评论 -
23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程...转载 2018-07-11 10:47:47 · 288 阅读 · 0 评论 -
线程池中如何确定线程的数目
我用C写了一个线程池,但是在写的时候没有考虑线程池中线程的数目,当初直接随便设定了一个线程的数目。但是在面试时,将常被问到如何设定线程池中线程的数目的?我也在网上了搜了一些资料,今天在这里就说一下“如何设定线程池中线程的数目?”线程池中线程的数目是跟线程池所要处理的任务性质有关的任务的性质:CPU密集型任务、IO密集型任务、混合型任务。任务的优先级:高、中、低。任务的执行时间:长、中、短。任务的依...转载 2018-07-10 15:38:13 · 3616 阅读 · 0 评论 -
设置正确的线程数量
《高性能服务器架构 》中提到了SEDA,我搜了一下,发现这篇文章《SEDA性能优化的分析和模拟 》,对于线程数量的建议。假如一个Web请求,代码执行的时间为ST(Service Time),读文件、网络调用之类IO等待时间为为WT(Wait Time),CPU的个数是N、核数是M则线程数量TC(Thread Count)为: TC= N*M*(1+WT/ST) 假如只有1个单核的C...转载 2018-07-10 15:36:10 · 962 阅读 · 0 评论 -
面试常用代码
1、单例模式——懒汉式class LazySingleton { private static LazySingleton singleton; private LazySingleton() { } public static LazySingleton getInstance() { if (single...原创 2018-04-01 11:50:54 · 638 阅读 · 0 评论 -
上传、下载代码片
1、上传public static void upload(HttpServletRequest request, String tagName) throws IOException { // 1.获取支持文件上传功能的Request对象,MultipartHttpServletRequest MultipartHttpServletRequest req = (Mu...原创 2018-04-01 13:44:41 · 257 阅读 · 0 评论 -
汉字转拼音工具类
汉字转拼音工具类public class PinyinUtil { private HanyuPinyinOutputFormat format = null; private String[] pinyin; public PinyinUtil() { format = new HanyuPinyinOutputFormat();...原创 2018-04-01 13:49:33 · 361 阅读 · 0 评论 -
spring定时器使用说明
1. 原理介绍Spring定时器的功能非常强大,使用也相当复杂。Spring定时器支持用通配符设置运行机制,因此十分灵活。Quartz定时器是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 2. 配置文件2.1 导入jar包 首先在导入Spring所有包的前提下还要导入一个定时器包:quartz-all-1.6.1.jar,然后再写...原创 2018-04-01 13:51:28 · 386 阅读 · 0 评论 -
总结:JDK1.5-JDK1.8各个新特性
摘要: 引用:此文章意在借鉴前人经验,留作日后查看。如有侵犯,实属无意。我以后会注意,谢谢博友的提醒。也愿各大博友们能够共同学习和努力。 JDK各个版本的新特性 ...转载 2018-04-01 16:53:37 · 570 阅读 · 1 评论 -
浅谈如何理解Java虚拟机
网上关于虚拟机的解释固然是不少的,但是纵观这些言谈仿佛是一个门外汉般:“嗯,是的!有道理。”但是读过之后便又没有其他什么感觉了。我也是浅谈一下对于他的一个理解。1、什么是Java虚拟机 百度百科上是这样解释的: 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立...原创 2018-04-06 14:59:09 · 757 阅读 · 0 评论 -
最常用的15大Eclipse开发快捷键技巧
引言 做java开发的,经常会用Eclipse或者MyEclise集成开发环境,一些实用的Eclipse快捷键和使用技巧,可以在平常开发中节约出很多时间提高工作效率,下面我就结合自己开发中的使用和大家分享一下Eclipse中常用到的快捷键和技巧。 1、alt+?或alt+/:自动补全代码或者提示代码这个是我最得意的快捷键组合了,尤其是当输入syso几个字符之后,2个手指轻松按下这2个键...转载 2018-05-15 15:04:19 · 155 阅读 · 0 评论 -
eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?
对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情。如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助。eclipse代码里面的代码提示功能默认是关闭的,只有输入“.”的时候才会提示功能,用vs的用户可能不太习惯这种,vs是输入任何字母都会提示,下面说一下如何修改eclipse配置,开启代码自动提示功能打开 Eclipse -> Window -> P...转载 2018-05-15 15:32:50 · 484 阅读 · 1 评论 -
简单动态代理01
动态代理简单入门动态代理技术在实际开发中用到的非常多,所以有必要详解一下这门技术。这门技术非常难,因此学起来还是比较困难的,但我们不怕困难,定要啃下这块硬骨头。 要想理解动态代理这门技术,必须明确两个概念:代理对象存在的价值:主要用于拦截对真实业务对象的访问。代理对象有什么方法? 一般来说,真实业务对象具有什么方法,那么代理对象就会具备相应的方法。现在要生成某一个对象的代理对象,这个代理对象通常也...原创 2018-06-21 10:34:45 · 217 阅读 · 0 评论 -
动态代理简单应用02
动态代理应用在动态代理技术里,由于不管用户调用代理对象的什么方法,都是调用开发人员编写的处理器的invoke方法(这相当于invoke方法拦截到了代理对象的方法调用),并且开发人员通过invoke方法的参数,还可以在拦截的同时,知道用户调用的是什么方法,因此利用这两个特性,就可以实现一些特殊需求,例如:拦截用户的访问请求,以检查用户是否有访问权限、动态为某个对象添加额外的功能。使用动态代理技术包装...原创 2018-06-21 10:36:47 · 222 阅读 · 0 评论 -
redis应用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。一、Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过...转载 2018-07-09 17:19:47 · 208 阅读 · 0 评论 -
轻松理解AOP思想(面向切面编程)
本文旨在帮助还没有理解AOP的童鞋看透弄懂AOP,也欢迎高手批评指正。先说一个Spring是什么吧,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是从功能的角度来定义的,从本质意义上来讲,Spring是一个库,一个Java库,所以我个人觉得应该这样回答Spring是什么:Spring是一个库,它的功能是提供了一个软件框架,这个框架目的是使软件之间...转载 2018-07-16 14:39:57 · 279 阅读 · 0 评论 -
高性能服务器架构(High-Performance Server Architecture)
引言本文将与你分享我多年来在服务器开发方面的一些经验。对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或者请求的服务程序,网络服务器更符合这种情况,但并非所有的网络程序都是严格意义上的服务器。使用“高性能请求处理程序”是一个很糟糕的标题,为了叙述起来简单,下面将简称为“服务器”。本文不会涉及到多任务应用程序,在单个程序里同时处理多个任务现在已经很常见。比如你的浏览器可能就在做一些并行处...转载 2018-07-10 15:28:40 · 242 阅读 · 0 评论 -
SEDA性能优化的分析和模拟
在学习Mule的过程中,发现MULE对于服务调用的性能做了不少优化工作,其中最显著的就是实现SEDA模型。Staged Event Driven Architecture (SEDA) 是加州大学伯克利分校研究的一套优秀的高性能互联网服务器架构模型。其设计目标是:支持大规模并发处理、简化系统开发、支持处理监测、支持系统资源管理。它的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的St...转载 2018-07-10 15:33:51 · 311 阅读 · 0 评论 -
SSM整合各层详解
持久层:DAO层(mapper) DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此, DAO层的设计首先是设计DAO的接口, 然后在Spring的配置文件中定义此接口的实现类, 然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰, DAO...原创 2018-11-10 11:03:27 · 1038 阅读 · 0 评论