java
coder吹雪
这个作者很懒,什么都没留下…
展开
-
直击面试现场:内透腾讯Java程序员面试10个问题拿走不谢
腾讯招聘面试流程:一面,技术,基础知识,算法,数据结构,网络,操作系统等。二面,技术,针对以往的项目具体提问,或者纸上写程序。三面,hr面。运气不好的没下文,否则给offer。之前西安西科软件也发过很多面试题,这也引来了不少程序员网友们的围观。其中,也有相当一部分网友是已经从事Java开发好多年的程序员,当他们阅读完JAVA面试题的反应是:一个也不会。废话不多说,下面拿出腾讯10个面试题,看看大家又知道几个:1、为什么用ssh框架2、Redis和memcache有什么区别?3、原创 2020-08-29 14:21:07 · 572 阅读 · 0 评论 -
大白话带你认识 ZooKeeper !重要概念一网打尽!
1. 前言相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢?拿我自己来说吧!我本人曾经使用 Dubbo 来做分布式项目的时候,使用了 ZooKeeper 作为注册中心。为了保证分布式系统能够同步访问某个资源,我还使用 ZooKeeper 做过分布式锁。另外,我在学习 Kafka 的时候,知道 Kafka 很多功能的实现依赖了 ZooKeeper。前几天,总结项目经验的时候,原创 2020-08-28 14:04:38 · 410 阅读 · 0 评论 -
java流程控制语句,用幽默读懂知识
Java 中涉及控制执行流程的关键字有 if-else、while-do-while、for、switch、return、break、continue 等等;我们来挑几个来说道说道。1、要么生,要么死在网络上看到这么一句话:“人生不过三条路,要么生,要么死,要么生不如死”,经典啊!这句话套用在 if-else 语句上也非常的贴切,不信你看:只有一个 if 语句if (布尔表达式) {// 语句}或者一个if语句加上一个else语句if (布尔表达式) {// 语句} else {//原创 2020-08-28 13:36:59 · 350 阅读 · 0 评论 -
详细解说脏读、幻读和不可重复读
一、引言脏读、不可重复读和幻读是数据库中由于并发访问导致的数据读取问题。当多个事务同时进行时可以通过修改数据库事务的隔离级别来处理这三个问题。二、问题解释1、脏读(读取未提交的数据)脏读又称无效数据的读出,是指在数据库访问中,事务 A 对一个值做修改,事务 B 读取这个值,但是由于某种原因事务 A 回滚撤销了对这个值得修改,这就导致事务 B 读取到的值是无效数据。2、不可重复读(前后数据多次读取,结果集内容不一致)不可重复读即当事务 A 按照查询条件得到了一个结果集,这时事务 B 对事务 A 查原创 2020-08-21 15:17:23 · 923 阅读 · 0 评论 -
求求大厂给个offer:list面试题
面试现场面试官:“你简单自我介绍一下吧”三歪:“我叫三歪,目前维护一个公众号叫做Java3y,这几年写了300+原创技术文章,近1000页的原创电子书和多个知识点的思维导图。我的愿景是:只要关注我并三连的同学都可以拿到大厂offer。我的…”面试官:“停停停,别吹了,我们正式开始吧。”面试官:“来讲讲Java的List吧,你对List了解多少?”三歪:“List在Java里边是一个接口,常见的实现类有ArrayList和LinkedList,在开发中用得最多的是ArrayList”面试官:“你再原创 2020-08-21 15:03:55 · 223 阅读 · 0 评论 -
好消息!Lettuce 已支持 Redis6 客户端缓存
Redis 客户端缓存缓存的解决方案一般有两种:【L1】 内存缓存(如 Caffeine、Ehcache) —— 速度快,进程内可用,但重启缓存丢失,出现缓存雪崩的问题。【L2】集中式缓存(如 Redis)—— 可同时为多节点提供服务,但高并发下,带宽成为瓶颈。业内有很多开源框架来解决以上问题,既能有 L1 速度,并且拥有 L2 集群态。如下J2Cache 两级缓存框架hotkey 热点数据实时同步在 「redis 6.0」 版本中,已经默认支持了客户端缓存功能,Java 中主流的连接客户..原创 2020-08-14 21:11:12 · 355 阅读 · 0 评论 -
还在使用MyBatis Generator?试试这个工具
代码生成在企业软件开发过程中,大多数时间都是面向数据库表的增删改查开发。通过通用的增删改查代码生成器,可以有效的提高效率,降低成本;把有规则的重复性劳动让机器完成,解放开发人员。MyBatis GeneratorMyBatis Generator 是 MyBatis 提供的一个代码生成工具可以帮我们生成表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql 的 xml(mapper)。<plugin> <groupId>org.mybati..原创 2020-08-14 20:54:33 · 136 阅读 · 0 评论 -
还在手动整理数据库文档?试试这个工具
简介在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是需要一个插件工具 screw[1]来维护。screw 特点简洁、轻量、设计良好。不需要 powerdesigner 这种重量的建模工具多数据库支持 。支持市面常见的数据库类型 MySQL、Oracle、SqlServer..原创 2020-08-14 20:46:42 · 132 阅读 · 1 评论 -
Spring框架之我见(五)——Spring boot
说完了Spring 我们来聊聊Spring的进阶版Spring Boot,如果你还不知道Spring Boot,那希望这篇文章能够为你指明方向。Spring Boot什么是Spring Boot?首先boot是‘引导’的意思,就是说Spring Boot 是Spring的一个引导程序。通过Spring Boot我们可以更轻松地入门,更简单的使用Spring的框架。为什么会有Spring Boot?随着应用的功能以及业务逻辑的日益复杂,传统Spring程序往往伴随着大量的XML配置文件以及...原创 2020-08-13 16:08:29 · 215 阅读 · 0 评论 -
Spring框架之我见(四)——Spring MVC
聊完了Spring,我们来看看Spring在web方面的应用Spring MVC。MVC首先我们来看什么是mvc?大家知道在jsp里面也是可以写java代码的,但是如果我们这样做就会有一个问题,就是代码全部都杂糅在一起,无论是阅读还是修改都将变得十分的困难。MVC是模型(model)-视图(view)-控制器(controller)的缩写,他将我们的程序分为个三部分,页面、控制层、模型层。这样使我们的程序的逻辑更清晰,更容易维护。它以将我们的业务逻辑、数据与界面显示分离,将众多的业务逻...原创 2020-08-13 16:03:34 · 140 阅读 · 0 评论 -
Spring框架之我见(三)IOC、AOP
下图是Spring官方给出的Spring框架的结构图。从图中我们可以看到Spring的四大部分:核心容器(container)、AOP模块、Web模块、Data模块。首先看核心容器,从核心俩字我们可以看出,这是Spring最重要的部分。主要的功能是实现了控制反转(IOC)与依赖注入(DI)、Bean配置、加载以及生命周期的管理。AOP模块:负责Spring的所有AOP(面向切面)的功能。Web模块:扩展了Spring的Web功能。使其符合MVC的设计规范,最重要的是提供了Spring MVC..原创 2020-08-13 15:57:49 · 113 阅读 · 0 评论 -
Spring框架(二)——代理模式,看完整个体系轻松进入BAT大厂
聊完了工厂模式,下面我们来说Spring框架中的另一个核心设计模式——代理模式(Proxy Pattern)。代理模式大家可以先不用看概念,先举个吃饭的例子:比如说我们想吃饭,我们可以选择自己做饭吃、去饭店吃、叫外卖吃。如果我们选择自己做着吃,我们就需要去买菜、做饭、吃饭、吃完饭还要刷碗。其实我们真正想做的就只有吃饭而已,其他的都是与业务无关,但是又不得不做的事。但是我们叫外卖就不一样了,外卖小哥会把饭送到我们手里,吃完饭我们也不需要刷碗,直接把包装扔掉就可以了,我们这里先不讨论环保的问题。这里的..原创 2020-08-12 21:10:12 · 134 阅读 · 0 评论 -
Spring框架之我见(一)——工厂模式,看完这些系列轻松进BAT大厂
大家好,今天给大家分享一些Spring的学习心得,在讲Spring之前,先和大家分享Spring中核心的设计模式。工厂模式在聊概念之前我先问问大家:什么是工厂?这个很简单,工厂就是生产物品的地方,比如,鞋子工厂生产鞋子,工厂衣服生产衣服,汽车工厂生产汽车。我们都是知道,Java是一种面向对象的语言,那么对象是不是也会有对象工厂呢?答案是肯定的,而工厂模式就是实现了Java对象工厂的一种创建性设计模式。概念:工厂模式(Factory Pattern)就是一个创建对象的接口。不同的子类可以创建.原创 2020-08-12 21:04:21 · 148 阅读 · 0 评论 -
Spring 源码第一篇开整!配置文件是怎么加载的?
1.从何说起Spring 要从何说起呢?这个问题我考虑了很长时间。因为 Spring 源码太繁杂了,一定要选择一个合适的切入点,否则一上来就把各位小伙伴整懵了,那剩下的文章估计就不想看了。想了很久之后,我决定就先从配置文件加载讲起,在逐步展开,配置文件加载也是我们在使用 Spring 时遇到的第一个问题,今天就先来说说这个话题。2.简单的案例先来一个简单的案例,大家感受一下,然后我们顺着案例讲起。首先我们创建一个普通的 Maven 项目,引入 spring-beans 依赖:<depen原创 2020-08-10 16:38:24 · 203 阅读 · 0 评论 -
Spring 源码解读计划
SSM 作为 Java 开发领域的经典框架组合,作为一个有追求的技术人,都是有必要认真去走一遍 Spring 源码的,搞懂 Spring 源码,不仅仅是为了掌握 Spring,也是为了学习其中优秀的设计思想。可以这么说,如果你看懂了 Spring 源码,再去看 MyBatis、Spring Security 源码,你会发现这些源码都非常容易,稍微瞅几眼就懂了。然而源码的学习是一个枯燥的过程,源码解读也是一个枯燥的过程,但是一旦你把源码搞懂了,技术上的提升也绝对是肉眼可见的,所以,去折腾一下源码绝对是有必原创 2020-08-10 15:35:26 · 174 阅读 · 0 评论 -
Java使用WebMagic 爬取网站
安装这里使用maven进行安装。根据maven下载相关的包<dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>0.7.3</version> </dependency> &原创 2020-08-10 15:10:52 · 231 阅读 · 0 评论 -
Spring事务的传播行为案例详细分析
1、spring给出经常面试的考点Spring事务的4个特性含义—这个很容易理解2、spring事务传播特性的定义以及案例分析一、事务的特性ACID这四个英文单词拼写我一直记不住,求记忆方法原子性(Atomicity):事务是一系列原子操作,要么全部成功,要么全部失败。一致性(Consistency):一旦完成(不管是成功还是失败),确保它所在的一系列业务状态保持一致,状态都是成功,或者都是失败,不能一部分成功一部分失败。隔离性(Isolation):不同事务同时进行某项业务,处理相同的数据时原创 2020-08-10 14:45:27 · 238 阅读 · 0 评论 -
快速学习数据结构和算法,这里有:动态图解十大经典排序算法(含JAVA代码实现)
本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法:冒泡排序选择排序插入排序希尔排序归并排序快速排序堆排序计数排序桶排序基数排序0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和转载 2020-08-08 14:34:23 · 269 阅读 · 0 评论 -
几张gif图让你捋清Java常用数据结构及其设计原理
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程.主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的.HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结构如下:LinkedList经典的双链表结构, 适用于乱序插入, 删除. 指定序列操作则性能不如ArrayList, 这也是其数据结构决定的.add(E) / addLas原创 2020-08-08 14:19:32 · 265 阅读 · 0 评论 -
十分钟读懂JDK7,8,JD9的hashmap,hashtable,concurrenthashmap及他们的区别
内容和标题一样长哦,人家写了好久的。如无特别指明,内容对应的源码是jdk1.7(后面会和1.8对比)1:hashmap简介(如下,数组-链表形式)HashMap的存储结构图中,紫色部分即代表哈希表,也称为哈希数组(默认数组大小是16,每对key-value键值对其实是存在map的内部类entry里的),数组的每个元素都是一个单链表的头节点,跟着的绿色链表是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就会采用头插法将其放入单链表中。2:hashmap原理(即put和get原理)2.1原创 2020-08-08 13:57:05 · 418 阅读 · 0 评论 -
【面经分享】互联网寒冬,7面阿里,终获Offer!
这次去阿里面试的是我老东家的好朋友,我们之前都是一个项目组的,一起吃饭,一起洗脚,一起。。。他们公司最近也裁员了,不过他是裁员前去的阿里,不知道谁捞到他简历了,莫名就走了流程,他莫名的就面了7轮过了。他想着行情这么不好,要不就去了,去了之后,他们公司就裁员了。。。总之今年大环境真的很差,大家都时刻做好准备,我朋友简历上是写了精通dubbo的源码,所以你们会发现,面试中dubbo的问题很多,他面经写得算是比较简单,但是真实问的过程肯定会扣肯定细节。正文面试总共花费20天左右,包含4轮电话面试、1轮笔转载 2020-07-20 12:48:33 · 119 阅读 · 0 评论 -
编程语言最新排名:Java最受欢迎、JS用户最多
IDE工具开发商JetBrains基于2万名开发者,对编程语言的最新情况进行了统计描摹。就受欢迎程度而言,Java高居第一位,但在使用人数上,JavaScript则名列榜首。欢迎程度的统计方法是,让参与的开发者选出三种立即觉得必要的语音,最后算结果。被访问时,JetBrains负责人指出,Java最后欢迎是因为很多项目都用JavaScript,但在后者身上并不花费很多时间。另外就使用情况而言,Python超越了Java,这可能与机器学习浪潮大热有关。最后是对于新语言的兴趣,Go、Kotlin、Ru原创 2020-07-15 16:49:38 · 2095 阅读 · 0 评论 -
62道Java核心面试题,祝你一路披荆斩棘,拿到offer!
最近,我得粉丝快要找工作了,问我有什么面试题,给我准备一下。想要冲击一下大厂面试。这次我花了两周的时间,准备了 62 道 Java 核心面试题,希望能够帮助到这位亲爱的粉丝,以及其他和这位粉丝类似情况的读者朋友。请说出Java14版本中更新的重要功能请说出Java13版本中更新的重要功能请说出Java12版本中更新的重要功能请说出Java11版本中更新的重要功能请说出Java10版本中更新的重要功能请说出Java9版本中更新的重要功能请说出Java8版本中更新的重要功能请说出面向对象编程原创 2020-07-14 16:28:16 · 277 阅读 · 0 评论 -
Java 10 大装 B 写法,装逼常用代码
想不想学习装 B 式的 Java 骚操作花式写法?没错,本文栈长来教你!1、集合初始化集合的创建、赋值一步到位,想不想学?来,上边跟我一起画个 List,在你下边画一个Map……List<String> list = new ArrayList<String>() {{ add("www."); add("javastack."); add("cn");}};Map<String, String> map = new HashMap<St原创 2020-07-13 19:24:17 · 4623 阅读 · 1 评论 -
10个最难回答的Java面试题,答出来了,BATM大厂随你进(附答案)
1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手的 Java 核心方面的面试问题。为什么 wait,notify 和 notifyAll 是在 Object 类中定义的而不是在 Thread 类中定义这是有名的 Java 面试问题,招2~4年经验的到高级 Java 开发人员面试都可能碰到。这个问题的好在它能反映了面试者对等待通知机制的了解,原创 2020-07-08 20:54:03 · 281 阅读 · 0 评论 -
字节一面,面试官问我Java中时间控制的几种解决方案?我懵逼了
面试官出了一个这样的题:需求是这样的,在与第三方对接过程中,对方提供了token进行时效性验证,过一段时间token就会失效。后台有定时任务在获取,但是偶尔会出现token失效,这是因为在获取的时候,定时任务正在跑,可能正在获取最新的token中,这个时候如何过一段时间(比如800毫秒之后)再请求呢?当时我听到这个题目的时候,顿时懵逼,就只说了一个线程解决方案,而且说得也不详细。最后面试完了以后,回去仔细的查阅资料,研究了一下。争取下次面试能够一举答出。下面是我写的几种时间控制的方案一:时间控制的几种原创 2020-07-08 20:29:25 · 274 阅读 · 0 评论 -
Java常用Json库很多,但是它的性能是最好的!
最近有很多网友再说这个库怎么怎么好,怎么碾压其他的库。口头说有什么用,咱们还是进行比较,写出来才知道哪个库好。JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心,除非是在性能要求比较高的系统。目前对于Java开源的JSON类库有很多种,下面我们取4个常用的JSON库进行性能测试对比, 同时根据测试结果分析如果根据实际应用场景选择最合适的JSON库。这4个JSON类库分别为:Gson,FastJson,Jackson,Json-li原创 2020-07-08 19:27:23 · 195 阅读 · 0 评论 -
研究了一个月的「拓扑排序」,给大家说一说
前言Topological sort 又称 Topological order,这个名字有点迷惑性,因为拓扑排序并不是一个纯粹的排序算法,它只是针对某一类图,找到一个可以执行的线性顺序。这个算法听起来高大上,如今的面试也很爱考,比如当时我在面我司时有整整一轮是基于拓扑排序的设计。但它其实是一个很好理解的算法,跟着我的思路,让你再也不会忘记她。有向无环图刚刚我们提到,拓扑排序只是针对特定的一类图,那么是针对哪类图的呢?答:Directed acyclic graph (DAG),有向无环图。即:原创 2020-07-07 19:47:43 · 224 阅读 · 0 评论 -
2020年7月程序员工资统计,平均14357元,又跌了,扎心
平均工资2020年7月全国招收程序员288685人。2020年7月全国程序员平均工资14357元。上个月是14404,又跌了50元。一顿午饭跌没了。总结看到今年七月份程序员的工资,大家有什么想说的呢。欢迎在评论区讨论。...原创 2020-07-07 17:27:40 · 246 阅读 · 0 评论 -
给老弟讲解java8中的marge()方法,一顿骚操作
今天我弟弟在家里学习java的时候问我java8特性中的map.merge()方法,当时刚下班回来,准备洗个澡回来就睡的,但是我觉得这个还是很好用的,所以还是给他详细说了一下。毕竟学习这么努力,我也不好打击他嘛。merge() 怎么用?这么跟你说吧。假设我们有这么一段业务逻辑,我有一个学生成绩对象的列表,对象包含学生姓名、科目、科目分数三个属性,要求求得每个学生的总成绩。加入列表如下:private List<StudentScore> buildATestList() {原创 2020-07-06 20:28:52 · 244 阅读 · 0 评论 -
面试官问:说说MySQL的InnoDB的幻读问题,瞬间懵了
MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)。提交读(READ COMMITTED)。本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果(不重复读)。可重复读(REPEATABLE READ)。在同一个事务里,SELECT的结果是事务开始时时间点的原创 2020-07-04 17:17:35 · 206 阅读 · 0 评论 -
真会玩!竟然可以这样用IDEA通过数据库生成lombok版的POJO
前言最近写需求时需要新建许多新表,设计完表结构还要一一写成对应的 POJO,很麻烦,就 Google 了一下。网上相关资料不多,借鉴了一篇博客,并在其基础上进行了完善。前置步骤使用 IDEA 自带的插件 Database 连接数据库在数据库的表上右键 Scripted Extensions -> Go to Scripts Directory在打开的目录下放入脚本文件源码脚本用的 Groovy 语言,语法类似 Java,并能调用 Java 类库,自己修改也很方便。唯一的麻烦是执行入口原创 2020-07-04 17:00:25 · 360 阅读 · 0 评论 -
Java并发编程二:重排序问题
重点知识来了,建议收藏哦1. 重排序概念在执行程序时为了提高性能,编译器和处理器常常会对指令做重排序。从 java 源代码到最终实际执行的指令序列,会分别经历下面三种重排序:编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。指令级并行的重排序。处理器将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。内存系统的重排序。处理器使用缓存和读/写缓冲区,使得加载和存储操作看上去可能是在乱序执行。举例:如下代码执行过程中,程序不一原创 2020-07-03 16:13:00 · 378 阅读 · 0 评论 -
Java并发一:Java并发编程三大核心
编写并发程序是比较困难的,因为并发程序极易出现Bug,这些Bug有都是比较诡异的,很多都是没办法追踪,而且难以复现。要快速准确的发现并解决这些问题,首先就是要弄清并发编程的本质,并发编程要解决的是什么问题。本文将带你深入理解并发编程要解决的三大问题:原子性、可见性、有序性。补充知识硬件的发展中,一直存在一个矛盾,CPU、内存、I/O设备的速度差异。速度排序:CPU >> 内存 >> I/O设备为了平衡这三者的速度差异,做了如下优化:CPU 增加了缓存,以均衡内存与CP原创 2020-07-03 16:00:11 · 289 阅读 · 0 评论 -
Spring Boot 2.3 中配置文件属性跟踪
背景当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下:spring: profiles: active: @project.profile@ #根据maven 动态配置profile---spring: profiles: devdemo: lengleng_dev---spring: profiles: prddemo: lengleng_prd或者使用 spring cloud 配置中心 (nacos/config)等再有就原创 2020-07-03 15:34:40 · 278 阅读 · 0 评论 -
Mybatis Plus代码生成器是个好东西,时间管理器,你值得拥有!
1. 前言对于写Crud的老司机来说时间非常宝贵,一些样板代码写不但费时费力,而且枯燥无味。经常有小伙伴问我,胖哥你怎么天天那么有时间去搞新东西,透露一下秘诀呗。好吧,今天就把Mybatis-plus的代码生成器分享出来,让你也成为一个优秀的时间管理大师。2. 基本依赖以Spring Boot和MySQL为例,你需要下面这些依赖:<!-- lombok 如果不使用 需要修改代码生成器的相关配置 --><dependency> <groupId>org原创 2020-07-02 17:36:30 · 213 阅读 · 0 评论 -
JAVA中byte为负数处理
java中一定有人遇见过byte取值为负数情况,比如0xc0对应的值-64,其实应该是192,这里就需要我们转化处理 * Description: 负数byte转正int <BR> * * @author dsn * @date 2018年12月29日 下午3:29:38 * @param b * @return * @version 1.0 */public static Integer byteToInteger(Byte b) { return 0xff &am原创 2020-07-01 19:52:01 · 1090 阅读 · 0 评论 -
用了这么多年的 Java 泛型,你对它到底有多了解?
作为一个 Java 程序员,日常编程早就离不开泛型。泛型自从 JDK1.5 引进之后,真的非常提高生产力。一个简单的泛型 T,寥寥几行代码, 就可以让我们在使用过程中动态替换成任何想要的类型,再也不用实现繁琐的类型转换方法。虽然我们每天都在用,但是还有很多同学可能并不了解其中的实现原理。今天这篇我们从以下几点聊聊 Java 泛型:Java 泛型实现方式类型擦除带来的缺陷Java 泛型发展史Java 泛型实现方式Java 采用**类型擦除(Type erasure generics)**的方原创 2020-07-01 19:33:59 · 170 阅读 · 0 评论 -
大白话 Java 多线程,小白都能看的懂的哦
什么是线程说到线程我们应该先了解下什么是进程,下面这个图片大家应该都比较熟悉吧。我们看到的这些单独运行的程序就是一个独立的进程,进程之间是相互独立存在的。我们上面图中的360浏览器、百度云盘等等都是独立的进程。那么什么是线程呢?线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程原创 2020-07-01 17:28:25 · 350 阅读 · 1 评论 -
策略模式、策略模式与Spring的碰撞
策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式。实际案例我工作第三年的时候,重构旅游路线的机票查询模块,旅游路线分为四种情况:如果A地-B地往返都可以直达,那么查询两张机票(往返)如果A地-B地去程无法直达,需要中转,但是返程可以直达,那么查询三张机票(去程两张,返程一张)如果A地-B地去程可以直达,但是返程需要中转,那么查询三张机票(去程一张,返程两张)如果A地-B地往返都无法直达,那么查询四张机票(去程两张,返程两张)在我重构前,代码差不原创 2020-06-30 16:17:16 · 213 阅读 · 0 评论