
java
文章平均质量分 63
it_haha
微信公众号:IT哈哈
展开
-
java 相关学习资料汇总下载(全)
《JAVA解惑[JAVA PUZZLERS]》《Java虚拟机规范(Java_SE_7)》Java语言规范:基于Java SE 8SOA与Java 用Java技术实现面向服务Java深入解析 透析Java本质的36个话题Java虚拟机规范 Java SE 8版Java.进入IT企业必读的324个JAVA面试题全端Web开发 使用JavaScript与Java从Java走向JavaEEJava 并发工具包 java.util.concurrent用户指南《Java典型应原创 2020-07-06 11:27:18 · 1154 阅读 · 0 评论 -
jsoup完整教程
jsoupjsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。官网:https://jsoup.org/内容介绍jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。主要功能从一个URL,文件或字符串中解析HTML原创 2020-05-12 17:53:33 · 524 阅读 · 0 评论 -
Hibernate完整教程
Hibernate 是一个高性能的对象/关系型持久化存储和查询的服务,其遵循开源的 GNU Lesser General Public License (LGPL) 而且可以免费下载。Hibernate 不仅关注于从 Java 类到数据库表的映射(也有 Java 数据类型到 SQL 数据类型的映射),另外也提供了数据查询和检索服务。这个教程将指导你如何以简单的方式使用 Hibernate 来开...原创 2020-05-06 10:02:05 · 1144 阅读 · 0 评论 -
Shiro完整教程
Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro 要简单的多。Shiro简介Shiro身份验证Shiro授权Shiro授权方式Shiro授权的访问控制Shiro 的Permission字符串通配符权限Shiro授...原创 2020-04-29 13:33:24 · 623 阅读 · 0 评论 -
Spring Security完整教程
Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。本教程对 Spring Security 的使用进行一个比较全面的简要介绍。Spring Security初体验Spring Security关于登陆Spring Security核心类简介:A...原创 2020-04-27 11:06:13 · 1452 阅读 · 0 评论 -
Java 8 中 Map 骚操作之 merge() 的用法
Java 8 最大的特性无异于更多地面向函数,比如引入了 lambda等,可以更好地进行函数式编程。前段时间无意间发现了 map.merge() 方法,感觉还是很好用的,此文简单做一些相关介绍。首先我们先看一个例子。merge() 怎么用?假设我们有这么一段业务逻辑,我有一个学生成绩对象的列表,对象包含学生姓名、科目、科目分数三个属性,要求求得每个学生的总成绩。加入列表如下:...转载 2019-10-23 15:15:35 · 229 阅读 · 0 评论 -
Logback配置文件这么写,TPS提高10倍
受台风利奇马的影响很多地方都迎来了强降雨,双休日不能出去玩一起学习吧,就先从最基本的配置讲起再介绍高级特性异步输出日志。如果只想看异步输出日志提升性能的部分请将文章往下拉一点。通过阅读本篇文章将了解到1.日志输出到文件并根据LEVEL级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘IO提高性能 3.异步输出日志的原理配置文件logback-spring.xmlSpr...转载 2019-08-12 16:44:08 · 701 阅读 · 0 评论 -
从CPU Cache出发彻底弄懂volatile/synchronized/cas机制
变量可见吗共享变量可见吗首先引入一段代码指出Java内存模型存在的问题:启动两个线程t1,t2访问共享变量sharedVariable,t2线程逐渐将sharedVariable自增到MAX,每自增一次就休眠500ms放弃CPU执行权,期望此间另外一个线程t1能够在第7-12行轮询过程中发现到sharedVariable的改变并将其打印private static int share...转载 2019-08-28 15:48:23 · 1291 阅读 · 1 评论 -
单点登录解决方案-CAS
本文目标目标1:搭建单点登录服务端,开发单点登录客户端 目标2:实现CAS 认证数据源设置 目标3:更换CAS 登录页面 目标4:掌握CAS与SpringSecurity集成 目标5:完成用户中心单点登录功能单点登录单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有...转载 2019-08-28 19:44:55 · 1144 阅读 · 0 评论 -
Java 8 In Action
函数式编程函数式编程给我的直观感受: 让方法参数具备行为能力,以使方法能够从容地应对频繁的业务需求变更。(替代接口的匿名实现类的编写) 简化代码的编写,并增强代码的可读性 引言——让方法参数具备行为能力假设你现在是一个农场主,你采摘了一筐苹果如下:Apple现在需要你编写一个方法,挑选出箩筐中颜色为绿色的苹果,于是你轻而易举地写了如下代...转载 2019-09-10 10:50:12 · 1062 阅读 · 0 评论 -
java 代理模式:静态代理与动态代理
最近在研究SpringAOP,当然要学习AOP就要知道这么健硕、强大的功能的背后究竟隐藏着怎样不可告人的“秘密”?接下来就是查阅了许多资料详细的研究了一下Java的代理模式,感觉还是非常非常重要的,我们作为一个有“内涵的”程序员就更应该掌握啦!(本文需要细心、带有审视的目光来甄别其中的内容)在学习代理模式的时候我首先要提出几个问题:1、什么是代理模式?举个例子吧:...转载 2019-09-11 09:25:56 · 175 阅读 · 0 评论 -
2019最新整理JAVA面试题附答案
包含的模块:本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM如下图所示:共包含 208 道面试题,本文的宗旨是...转载 2019-09-21 19:04:24 · 835 阅读 · 0 评论 -
RPC框架的简单实现
一、RPC理论1.什么是RPC① RPC简介RPC(Remote Procedure Call Protocol)-远程过程调用协议。通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。它假定某种传输协议的存在,如TCP,UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层,因分布式,微服务等而兴起其实简单点来理解,就是比如有一个应...转载 2019-09-23 14:20:35 · 616 阅读 · 0 评论 -
Java CAS 原理剖析
在Java并发中,我们最初接触的应该就是synchronized关键字了,但是synchronized属于重量级锁,很多时候会引起性能问题,volatile也是个不错的选择,但是volatile不能保证原子性,只能在某些场合下使用。像synchronized这种独占锁属于悲观锁,它是在假设一定会发生冲突的,那么加锁恰好有用,除此之外,还有乐观锁,乐观锁的含义就是假设没有发生冲突,那么我正...转载 2019-09-25 07:31:05 · 182 阅读 · 0 评论 -
面试官最爱的volatile关键字
在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,深入地话还可以考察JVM底层实现以及操作系统的相关知识。下面我们以一次假想的面试过程,来深入了解下volitile关键字吧!面试官: Java并发这块了解的怎么样?说说...转载 2019-09-26 09:20:14 · 148 阅读 · 0 评论 -
面试官:你了解乐观锁和悲观锁吗?
前言乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。一、基本概念乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。 乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是...转载 2019-09-27 11:06:30 · 123 阅读 · 0 评论 -
一文看懂java io系统
学习java IO系统,重点是学会IO模型,了解了各种IO模型之后就可以更好的理解java IOJava IO 是一套Java用来读写数据(输入和输出)的API。大部分程序都要处理一些输入,并由输入产生一些输出。Java为此提供了java.io包java中io系统可以分为Bio,Nio,Aio三种io模型关于Bio,我们需要知道什么是同步阻塞IO模型,Bio操作的对象:流,以及如何...转载 2019-08-07 15:28:30 · 132 阅读 · 0 评论 -
面试必备:Java线程池解析
前言掌握线程池是后端程序员的基本要求,相信大家求职面试过程中,几乎都会被问到有关于线程池的问题。我在网上搜集了几道经典的线程池面试题,并以此为切入点,谈谈我对线程池的理解。如果有哪里理解不正确,非常希望大家指出,接下来大家一起分析学习吧。经典面试题面试问题1:Java的线程池说一下,各个参数的作用,如何进行的? 面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。 面试...转载 2019-08-13 20:36:59 · 200 阅读 · 0 评论 -
Java程序性能优化:让你的Java程序更快、更稳定
Java是目前应用为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。 《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排斥等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念...原创 2018-06-30 14:25:56 · 457 阅读 · 0 评论 -
6月份文章分类汇总
1 技术类《高级架构进阶之HashMap源码就该这么学》《高级架构进阶之HashMap源码就该这么学(二)-get方法,remove方法》《分布式发布订阅消息系统 Kafka 架构设计(一)》《分布式发布订阅消息系统 Kafka 架构设计(二)》《分布式发布订阅消息系统 Kafka 架构设计(三)》《分布式发布订阅消息系统 Kafka 架构设计(四)》《高可用Redis服务架构分析与搭建》《性能优...原创 2018-07-01 05:49:42 · 173 阅读 · 0 评论 -
MyBatis入门
安装要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis&...原创 2018-07-02 16:33:26 · 220 阅读 · 0 评论 -
MyBatis之properties配置
这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。例如:<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <proper...原创 2018-07-04 00:18:00 · 1600 阅读 · 1 评论 -
MyBatis之Mapper XML 文件详解(一)
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):cache – 给定命名空间的缓存配置。 cache-re...原创 2018-07-05 11:09:47 · 371 阅读 · 0 评论 -
MyBatis之Mapper XML 文件详解(二)-sql和入参
sql这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如:<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>这个 SQL 片段可以被包含在其他语句中,例如:<selec...原创 2018-07-08 01:00:58 · 430 阅读 · 0 评论 -
Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
对于高并发架构,毫无疑问缓存是最重要的一环,对于大量的高并发,可以采用三层缓存架构来实现nginx+redis+ehcache。Nginx对于中间件nginx常用来做流量的分发,同时nginx本身也有自己的缓存(容量有限),我们可以用来缓存热点数据,让用户的请求直接走缓存并返回,减少流向服务器的流量。 1.模板引擎通常我们可以配合使用freemaker/velocity等模板引...转载 2018-11-08 07:03:43 · 204 阅读 · 0 评论 -
jdk8新特性之双冒号 :: 用法及详解
jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法。概念类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function。比如:Function<String,String> func = String::toUpperCase; (Function在java.util.function包下,也是jdk8新加入的...转载 2018-11-20 23:32:13 · 7350 阅读 · 2 评论 -
最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面的。 我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。 但现实情...转载 2018-12-04 12:07:20 · 2859 阅读 · 0 评论 -
Java语言规范:基于Java SE 8 下载
Java语言规范:基于Java SE 8pdf原创 2019-04-17 16:50:56 · 2820 阅读 · 2 评论 -
Spring 使用注解方式进行事务管理
原文:https://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html使用步骤:步骤一、在spring配置文件中引入tx:命名空间<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XML...转载 2019-07-29 17:28:39 · 627 阅读 · 0 评论 -
Java程序员必备的一些流程图
前言:整理了一些Java基础流程图/架构图,做一下笔记,大家一起学习。1.spring的生命周期Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;首先容器启动后,对bean进行初始化 按照bean的定义,注入属性 检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给bean,如Bean...转载 2019-08-03 21:20:42 · 188 阅读 · 0 评论 -
必看!java后端(最全知识点)
你可能有所感悟。零散的资料读了很多,但是很难有提升。到处是干货,但是并没什么用,简单来说就是缺乏系统化。另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧。这里,我大体根据基础、Java基础、Java进阶给分了下类,挑的也都是最常用最重要的工具。这篇文章耗费了我大量的精力,你要是觉得好,请不要吝啬你的赞。如果你认同,可以关注我的微信公众号xjjdog,里面讲的就...转载 2019-08-04 15:42:48 · 7209 阅读 · 1 评论 -
线程池的原理及实现
1、线程池简介:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。一个线程池包括以下四个基本组成部分: 1、线程池管理器(ThreadPool):用...转载 2019-07-31 16:58:01 · 108 阅读 · 0 评论 -
高级架构进阶之HashMap源码就该这么学(二)-get方法,remove方法
高级架构进阶之HashMap源码就该这么学(一)七、get方法public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ? null : e.value; //根据key及其hash值查询node节点,如果存在,则返回该节点的value值...原创 2018-06-29 17:20:53 · 175 阅读 · 1 评论