首页
学习
活动
专区
工具
TVP
发布

Java3y

专栏作者
559
文章
764951
阅读量
96
订阅数
外包干了四年,废了!
如果不是被女朋友抛弃,我估计现在还没醒悟。大专生,18年通过校招进入湖南某软件公司,干了接近4年的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的CRUD,已经让我变得不思进取,谈了2年的女朋友也因为我的心态和工资和我分手了。于是,我决定要改变现状! 刚开始准备时,自己都蒙了,四年的CRUD让我的技术没有一丝的进步,提升的只有我的年龄... 没办法,我找到了我在腾讯的老哥,作为他的小老表,在他了解了我的情况后(几乎就是Java基础开始),直
Java3y
2022-03-18
5490
《求求大厂给个Offer》Map面试题
我,三歪,最近开始写面试系列。我给这个面试系列取了一个名字,叫做《求求大厂给个Offer》
Java3y
2020-08-28
3450
听说新版IDEA支持中文,三歪体验了一把
在前一阵子,转载了一篇IDEA相关的教程,里边的作者用的就是「汉化版」的IDEA。有很多小伙伴都在评论区留言:这个IDEA是怎么汉化的啊
Java3y
2020-04-14
2.6K0
外行人都能看懂的WebFlux,错过了血亏
如果有关注我公众号文章的同学就会发现,最近我不定时转发了一些比较好的WebFlux的文章,因为我最近在学。
Java3y
2019-11-18
8740
CAS机制是什么鬼?
大家都知道悲观锁、乐观锁吧?这里的悲观锁、乐观锁指的是线程方面的锁,不是数据库方面的锁。其实CAS机制就是乐观锁。synchronized操作就是一种悲观锁,这种线程一旦得到锁,其他需要锁的线程就挂起,等待持有锁的线程释放锁。当一个线程正在等待锁时,它不能做任何事,所以悲观锁有很大的缺点。
Java3y
2019-11-07
2.6K0
Java集合必会14问(精选面试题整理)
答:通过分析源码我们知道了HashMap通过resize()方法进行扩容或者初始化的操作,下面是对源码进行的一些简单分析:
Java3y
2019-09-18
4750
Spring事务“套路”面试
与这个面试者聊了一会儿,咦,发现他水平还可以,我内心有点儿喜出望外,终于遇到一个“合格”的“陪聊者”了,我要用Spring事务“好好套路”他一下。 我:你在开发中,一般都把事务加到哪一层? 他:都加到Service层。 我:现在基本都是基于注解的配置了,那和事务相关的注解是哪个? 他:我不太会读那个单词,就是以@T开头的那个。 我:我明白你的意思,就是@Transactional。 他:是的。 我:与自己写代码来开启和提交事务相比,(先给他来个小的套路),这种通过注解来使用事务的方式叫什么? 他:(犹豫了两、三秒),不知道。 我:如果把写代码那种叫编程式事务,那与之相对的应该是什么式事务? 他:哦,声明式事务。 我:(先铺垫),不加注解,没有事务,加上注解,就有事务,可见事务和注解有莫大的关系。(开始套路),那加上注解后,到底发生了什么变化呢,就有了事务? 他:(犹豫了几秒钟),不知道。 我:(哈哈,意料之中),那我换一问法,Spring声明式事务的底层是怎么实现的? 他:是通过代理实现的。 我:(铺垫),代理这个词不仅计算机里有,现实生活中也经常见到代理,比如招华北地区总代理等等。(套路),那你能不能在生活中举一个代理的例子? 他:(想了一会儿),我没有想到什么好例子。 我:(开始聊会天),我看你老家离这还挺远的,你一般都什么时候回去啊? 他:一般都国庆节或春节会回去。其它时间假期短就不回去了。 我:(引子),国庆节和春节,人都很多啊,票不好买吧? 他:是啊,都在网上抢高铁票,不停地刷。 我:(引子),现在有了高铁,出行确实方便了很多。那你知道以前没有高铁、没有12306的时候,人们都是怎么买票的吗? 他:我虽然没有经历过,但是我知道。那时候春运,都在火车站售票大厅买票,人们排很长的队,有时需要等半天,还不一定有票。 我:(切入正题),除了火车站售票大厅外,你有没有见过在城市里分布的一些火车票代售点? 他:现在偶尔还能见到几个,但都已经关门了。 我:是啊,现在都网上买票了,代售点算是被历史抛弃了。(开始套路),那你觉得代售点算不算火车站售票大厅的代理呢? 他:火车站售票大厅可以买票,代售点也可以买票,应该算是代理吧。 我:从广义讲算是代理。但有两点需要注意: 一是,代售点卖的也是售票大厅的票,它自己是没有票的,它只是行使售票大厅的权利。 二是,它可以有属于自己的行为特征,比如不需要排队啊,每张硬座票收5元手续费啊等等。 我们平时听到的中间商/代理商,其实都差不多是一回事儿。 他:经你这么一说,我明白了。 我:那我们再说回到Spring中的代理,在Spring中生成代理的方式有几种? 他:两种,JDK动态代理和CGLIB。 我:那它们分别用于什么情况下? 他:JDK动态代理只能用于带接口的,CGLIB则带不带接口都行。 我:(铺垫),假如有个接口,它包含两个方法a和b,然后有一个类实现了该接口。在该实现类里在a上标上事务注解、b上不标,此时事务是怎样的? 他:a标注解了,肯定有事务,b没有注解,所以没有事务。 我:嗯,是这样的。(开始套路),现在来做个简单的修改,在方法b里调用方法a,其它保持不变,此时再调用方法b,会有事务吗? 他:应该有吧,虽然b没有注解,但a有啊。 我:(我需要带带他),假设现在你和我都不知道有没有事务,那我们来分析分析,看能不能找出答案。你有分析思路吗? 他:没有。 我:行吧,那我们开始。这是一个带接口的,那就假定使用JDK动态代理吧。从宏观上看,就是Spring使用JDK动态代理为这个类生成了一个代理,并为标有注解的方法添加了和事务相关的代码,所以就具有了事务。那你知道这个代理大概会是什么样子的吗? 他:这个不知道。 我:通过代售点的例子我们应该知道,所有的代理都具有以下特点: 代理是一个空壳,它背后才是真正的老板。 代理可以行使老板的权力,所以它看起来“很像”老板,除非仔细查看,否则不易区分。 代理自己可以按需加进去一些行为特征,除非仔细查看,否则老板都不一定知道这些。 那我们回到程序世界,使用接口和类再套一下上面的特点: 代理类是一个空壳(或外观),它背后才是真正的类,通常称为目标类。由此得出代理类要包含目标类。 对目标类和代理类的使用方式是一样的,甚至你都不知道它是代理类。由此得出代理类和目标类的类型要兼容,对外接口一致。所以目标类实现的接口,代理类也要实现。 代理类在把执行流程代理给目标类的过程中,可以添加一些行为代码,如开启事务、提交事务等。 他:经你这么一分析啊,我知道该怎么写代码了,应该是这样的,请仔细看下代码,虽然很简单:
Java3y
2019-08-27
5200
策略模式原来就这么简单!
我一次听到策略模式这个词,是在我初学JDBC的时候。不知道大家有没有用过DBUtils这个组件。当时初学跟着视频学习,方立勋老师首先是让我们先自己封装一下JDBC的一些常用的操作(实际上就是模仿DBUtils这个组件)。
Java3y
2018-12-29
5900
还在用Synchronized?Atomic你了解不?
之前在学习的时候也看过AtomicInteger类很多次了,一直没有去做相关的笔记。现在遇到问题了,于是就过来写写笔记,并希望在学习的过程中解决掉问题。
Java3y
2018-12-18
5710
从零单排学Redis【黄金】
好的,今天我们要上黄金段位了,如果还没经历过青铜和白银阶段的,可以先去蹭蹭经验再回来:
Java3y
2018-12-07
4910
【Java】几道让你拿offer的面试题
之前在刷博客的时候,发现一些写得比较好的博客都会默默收藏起来。最近在查阅补漏,有的知识点比较重要的,但是在之前的博客中还没有写到,于是趁着闲整理一下。
Java3y
2018-08-08
1.2K0
List集合就这么简单【源码剖析】
前言 声明,本文用得是jdk1.8 前一篇已经讲了Collection的总览:Collection总览,介绍了一些基础知识。 现在这篇主要讲List集合的三个子类: ArrayList 底层数据结构是
Java3y
2018-06-11
5770
Map集合、散列表、红黑树介绍
前言 声明,本文用得是jdk1.8 前面已经讲了Collection的总览和剖析List集合: Collection总览 List集合就这么简单【源码剖析】 原本我是打算继续将Collection下的
Java3y
2018-06-11
7830
HashMap就是这么简单【源码剖析】
前言 声明,本文用得是jdk1.8 前面已经讲了Collection的总览和剖析List集合以及散列表、Map集合、红黑树的基础了: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 本篇主要讲解HashMap,以及涉及到一些与hashtable的比较~ 看这篇文章之前最好是有点数据结构的基础: Java实现单向链表 栈和队列就是这么简单 二叉树就这么简单 当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、HashMap剖析 首先看看HashMa
Java3y
2018-06-11
5190
LinkedHashMap就这么简单【源码剖析】
前言 声明,本文用得是jdk1.8 前面已经讲了Collection的总览和剖析List集合以及散列表、Map集合、红黑树还有HashMap基础了: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 本篇主要讲解LinkedHashMap~ 看这篇文章之前最好是有点数据结构的基础: Java实现单向链表 栈和队列就是这么简单 二叉树就这么简单 当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、LinkedH
Java3y
2018-06-11
5410
TreeMap就这么简单【源码剖析】
前言 声明,本文用得是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 本篇主要讲解TreeMap~ 看这篇文章之前最好是有点数据结构的基础: Java实现单向链表 栈和队列就是这么简单 二叉树就这么简单 当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、TreeMap剖析 按照惯例,我简单翻译了一下顶部的注释(我英文水平渣,如
Java3y
2018-06-11
7740
ConcurrentHashMap基于JDK1.8源码剖析
前言 声明,本文用的是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 本篇主要讲解ConCurrentHashMap~ 看这篇文章之前最好是有点数据结构的基础: Java实现单向链表 栈和队列就是这么简单 二叉树就这么简单 当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、ConCurre
Java3y
2018-06-11
5430
Set集合就这么简单!
前言 声明,本文用的是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 ConcurrentHashMap基于JDK1.8源码剖析 现在这篇主要讲Set集合的三个子类: HashSet集合 A:底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树 TreeSet集合 A:底层数据结构是红黑树(是一个自平
Java3y
2018-06-11
6420
Java集合总结【面试题+脑图】,将知识点一网打尽!
前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈….),现在来总结一下吧~~ 回顾目录: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 ConcurrentHashMap基于JDK1.8源码剖析 Set集合就这么简单! Java容器可分为两大类: Collectio
Java3y
2018-06-11
1.2K0
多线程三分钟就可以入个门了!
前言 之前花了一个星期回顾了Java集合: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 ConcurrentHashMap基于JDK1.8源码剖析 Set集合就这么简单! Java集合总结【面试题+脑图】,将知识点一网打尽! 在写文章之前通读了一遍《Java 核心技术 卷一》的并发章节和《Java并发编程实战》前面的部分,回顾了一下
Java3y
2018-06-11
6630
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档