自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(226)
  • 资源 (24)
  • 收藏
  • 关注

原创 比你更懂你的自动配置

上一篇我们从 run() 方法切入,分析了 Spring 容器的启动流程。今天我们拿 @SpringBootApplication 注解开刀,我们来看看这个注解为我们做了什么。可以看到,@SpringBootApplication 是一个组合注解。

2023-03-12 17:30:05 265 1

原创 为啥一个 main 方法就能启动项目

在 Spring Boot 出现之前,我们要运行一个 Java Web 应用,首先需要有一个 Web 容器(例如 Tomcat 或 Jetty),然后将我们的 Web 应用打包后放到容器的相应目录下,最后再启动容器。在 IDE 中也需要对 Web 容器进行一些配置,才能够运行或者 Debug。而使用 Spring Boot 我们只需要像运行普通 JavaSE 程序一样,run 一下 main() 方法就可以启动一个 Web 应用了。这是怎么做到的呢?

2023-03-05 11:58:05 4909 1

原创 (文末有彩蛋,不看白不看)兑现一下之前答应读者的事

大家过年好呀!(我)明天就要开工上班啦!在假期的最后一天踢了会球,简单吃点东西,晚上来兑现答应一位读者的事情。开整!前情提要这篇文章缘起于「开发者」技术交流群中一位读者遇到的问题:简单来说,就是 Spring Boot 3 + Swagger3 的组合用之前的方式配置有问题。趁着假期还在,咱们把问题解决了,也算是兑现之前的承诺。问题重现我们先来复现一下这位读者描述的问题,首先下载《Spring Boot趣味实战课》Swagger 章节的相关源码:https://github.com/liush

2023-01-30 15:59:31 310 1

原创 Volatile:JVM 我警告你,我的人你别乱动!

Volatile 的意思是,易变的,动荡不定的,反复无常的。volatile 的作用就是告诉 JVM,被我修饰的变量它非常善变,你要给我盯好了,一旦有风吹草动要立马通知大家;另外,你不要自作聪明的调整它的位置(为了性能重排序),它可是说翻脸就翻脸的主儿。最后,留一个小问题:内存可见性的那个程序中,就算 flag 没有被 volatile 修饰,线程顶多不是第一时间读到 flag 的修改,但也不应该一直读不到呀,这是为啥?这太反直觉了!开动你的脑筋思考一下吧!...

2022-08-08 11:10:20 295 1

原创 为什么 ThreadLocal 可以做到线程隔离?

ThreadLocal的get()方法其实和set()方法逻辑很相似,先从当前线程的threadLocals属性中取,如果该属性为null,那么就初始化。OK,从效果上看,ThreadLocal确实是线程隔离的,那么,它是如何做到线程隔离的呢?当线程结束时,会调用当前线程实例的exit()方法,将threadLocals设置为null,以便垃圾回收器将其回收掉。进入到两个方法内部后发现,不管执行哪个分支,最终是把值保存到了当前线程的threadLocals属性中。...

2022-07-25 09:30:00 339 2

原创 Java 程序在 JVM 中是怎样执行的?(一定要看到最后)

代码很简单,一个类,main()方法调用a()方法,a()方法中定义了一个int变量a,然后调用b()方法,b()方法中new了一个User对象b。一个方法被执行的时候,会创建一个栈帧,用来存放局部变量表、方法出口等信息。堆堆可谓是与程序员打交道最多的一块区域了,也是JVM中最大的一块内存区域了。面向对象的核心成员就是对象和对象的行为(也就是方法),而堆和栈刚好是管着两块儿的。b()方法执行结束,b变量销毁,断开对User实例的引用,出栈。.........

2022-07-16 19:20:07 736 4

原创 上个厕所的功夫,就把定时任务的三种调度策略说得明明白白

Spring Task 无疑是 Spring 环境下单机定时任务的首选。它用起来非常简单,功能也够用。Spring Task 有三种模式,分别是:fixedDelay、cron 和 fixedRate。话不多说,我们先看代码:这三种模式的用法都很简单,使用方式也很类似。那么它们究竟有什么不同呢?下面我们通过一个五星级豪华公测的故事来说明一下。话说某地有一个五星级豪华厕所,大家都喜欢来这里如厕。因此坑位经常供不应求,需要排队如厕。一天,厕所外有四个人排队,每个人如厕需要的时间如下:从第一个人开始如厕进行计时

2022-07-03 18:35:57 1909 1

原创 一个99%的人都说不清楚知识点——Spring 事务传播行为

面试过很多人,大部分都能把事务的四个特性及隔离级别说得七七八八,但当问到 Spring 的传播行为时,就基本上没人能说出个一二三了。我们都知道,一个事务要么成功,要么失败。但当若干个事务配合完成一个复杂任务时,就不能简单的这样一刀切了。我们需要根据任务之间的亲疏关系来指定哪些任务需要联动回滚,哪些任务即使失败也不会影响其他任务。要解决这个问题,就需要了解事务的传播行为了。Spring 中有七种事务的传播行为,如下表所示:Spring 可以通过 @Transactional 注解的 propagation 属

2022-06-28 20:14:17 429 4

原创 没遇到过这三个问题都不好意思说用过Redis

缓存是互联网应用中不可或缺的一部分。而提到缓存,就不得不提它的三个经典问题——缓存穿透、缓存击穿和缓存雪崩,我称它们为缓存问题三兄弟。缓存的作用主要有两个:一来提升访问速度;二来保护数据库。在业务量不大的时候,通常没什么大问题。但当业务量起来以后,如果缓存使用不合理,三兄弟一定会如约而至,让你体验一下现实的残酷。三兄弟不来则已,一来轻则影响系统性能,重则直接拖垮数据库,导致系统瘫痪。因此,我们不可掉以轻心,要防患于未然。一个请求到达服务器时,正常情况下是按照如下流程进行的。即按照如下步骤:如果每次都是这样按

2022-06-20 20:50:59 276 2

原创 哎 这个年代找本好书 难呀

哎!这个年代找个好女(男)人难呀! 看完这段对话,我不禁感叹:哎… 这个年代,找本好书难呐。有意思的没深度,有深度的又太晦涩,通俗易懂的又缺实战,实战性强的又不够全面,全面的又太啰嗦,不啰嗦的又不实用,实用的又太无聊。基于这个现状,我在写《趣味实战课》之前就想着要把它打造成一本美貌.

2022-05-17 11:56:56 771 2

原创 如何长期且快乐的学习?

这是一个飞速发展的时代,IT 行业更是其中的佼佼者。IT 行业发展的速度有多快呢?就是每当你刚刚熟练掌握一项技术时,它的新版本(或替代者)就来了。如今,Java 18 已经发布一段时间了,而我经常在面试的时候遇到 Java 8 的特性还不太会用的候选人。面对如此快速的技术迭代,我们除了不断打磨自身的学习能力,以便不被时代所抛弃,貌似也没有其他更好的办法了。所以,这个时代拼来拼去,拼的其实就是你的学习能力。我们知道学习的重要性,但是一路走来的经历给我们造成了一种学习是痛苦的假象。所以,要想持续学习,先得解

2022-05-13 16:02:26 303 2

原创 面试官:生产环境中 CPU 利用率飙高怎么办?

生产环境中 CPU 利用率飙高的情况该如何排查?你是否在面试的时候也被问到过类似的问题呢?今天,我们就一起研究一下。问题排查让 CPU 燥起来首先,我们需要让 CPU 燥起来。写一个死循环来疯狂占用 CPU 资源:public class CPU { public static void main(String[] args) { Thread thread = new Thread(() -> { while (true) {

2022-03-25 22:39:54 1177 1

原创 带你搞懂 Redis 中的两个策略

面试的时候问到候选人 Redis 相关问题时,发现一个现象:一部分候选人分不清 Redis 的「键过期策略」和「内存淘汰策略」。今天就来说一说这老哥俩。简单来说,过期策略就是当 key 到了指定的过期时间后,Redis 是用什么方式将其删除的;而淘汰策略指的是当内存不够用时,Redis 如何处理。过期策略Redis 的键过期方式有两种:被动和主动。**被动方式:**当客户端尝试访问某个过期 key 时,Redis 发现该 key 已过期,将其删除。**主动方式:**为每个设置了过期时间的 key.

2022-03-02 16:47:22 9096 4

原创 你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL 执行太慢怎么办?我们通常会使用 EXPLAIN 命令来查看 SQL 的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介EXPLAIN 的用法很简单,只需要在你的 SQL 前面加上 EXPLAIN 即可。例如:explain select * from t;PS:insert、update、delete 同样可以通过 explain 查看执行计划,不过通常我们更关心 select 的执行情况你会看到如下输出:+----+-------------+-------+-----

2022-02-11 11:08:56 7053 2

原创 写了那么多 Java 代码,却不一定见过它的真面目

我们都知道那句著名的宣传语——「一次编写, 到处运行(Write Once, Run Anywhere)」,这是对 Java 平台无关性的精准概括。字节码 + JVM 使其平台无关,与此同时也衍生出另一个无关性——语言无关性。像 Kotlin、Groovy、Scala、Clojure、JRuby 等语言都可以运行在 JVM 之上。理论上只要能将源代码编译成符合 JVM 规范的字节码,任何语言都可以在 JVM 中运行。字节码是连接语言和 JVM 的关键桥梁,今天我们就一起聊聊这个关键人物。概览我们创建.

2022-02-02 14:52:49 2158 1

原创 MySQL 是如何实现 ACID 的?

我们都知道,事务具有 ACID 四个特性——原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。但你知道 MySQL 是通过什么技术手段来实现的吗?ACID 简介先来简单回顾一下 ACID 的定义:原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性:事务开始前和事务结束后,数据库的完整性没有被破坏。即写入的数据必须完全符合所有的预设约束、触发器、级联回滚等。隔离性:多个事务并发执.

2022-01-28 10:00:00 625 1

原创 玩转 IDEA 花式打断点,从此告别 996

写代码离不开调试,调试离不开断点。IDEA 对于断点的支持非常丰富。掌握这些技巧以后,可以大大的提升开发效率。是帮助程序员保住头发,远离 996 的秘密武器。断点类型IDEA 支持以下四种断点类型:行断点(Line breakpoints):最常用的一种,可以设置在任意可执行的代码行上面。方法断点(Method breakpoints):设置在方法签名上,当进入或退出方法时,断点可被唤醒。字段断点(Field watchpoints):设置在字段(成员变量)上,当该字段被读取或者赋.

2022-01-21 11:23:02 2754 3

原创 Spring Boot 整合各种常用技术的代码都在这了

SwaggerJUnitSpring MVCRestFul APISpring Data JPAMyBatisTransactionRedisRedis LockDruidLog BackGlobal ExceptionSpring TaskDevtoolsActuatorGitHub 地址

2020-06-16 08:40:08 736 2

原创 作为一个程序员,你的学习能力够强吗?

1 前言3 学习理念接下来简单说一下笔者对与学习的肤浅理解,我们学习知识好比武侠世界里的人修炼武功一般,有人天赋异禀骨骼清奇是天生的练武奇才——学神;有人天资平平,但通过后天的努力孜孜不倦,终成一代大侠——学霸;还有人一路奇遇不断,屡屡遭到高人指点,然后成为绝世高手——妥妥一个外挂玩儿家。这三类人在金庸武侠中可以找到很多,学神-萧峰,学霸-郭靖,开挂-虚竹。这三个人大家应该比较熟悉,这里就那他们三位做例子来说明。先说萧峰,萧峰在武学天赋方面绝对是神一般的存在,天龙中有段原文是这样说的:萧峰右手

2020-06-08 08:24:26 3287 4

原创 看了这个教程以后,才知道学技术可以这么有意思!

前言你是不是有过这样的经历,想好好学一门技术,买了各种书、视频教程,但最终因为太枯燥乏味而不了了之呢?不但浪费了钱和时间,还对于学习技术有了一个非常不好的印象——技术都是枯燥无味的。有这样的经历和感觉很可能是你还没有看到这个教程:《Spring Boot 趣味私房课》(早遇到早就瘸了,哈哈)。课程亮点刚需 - 跳槽晋升必会 Spring Boot;实用 - 在实例中解锁 Spring Boot 多种开发知识;深入 - 剖析原理,带你学透 Spring Boot;私房 - 大牛积累多年精华,干

2020-06-01 08:28:22 2240 3

原创 WindowsPhone刷机教程,Mango升级Tango——超级简单!

随着软考的结束,半年来所有的考试也都结束了,一直紧绷的弦也稍微得到了一下缓解。一时兴起就将我的小福给刷了。我手机之前的系统是Mango,版本号是8107,此教程是将系统升级为最新的Tango,版本号为8773。Tango相对Mango来说,虽不算什么重大更新,但其意义却是非同一般的。它不仅仅增加了一些小功能——例如,彩信可以添加多个附件、通过SIM卡导入联系人、网络共享等,

2020-03-15 14:18:21 12278 51

原创 如何高效的远程办公(在家办公)

由于众所周知的原因,很多公司春节过后都开启了远程办公模式。这也一度使得钉钉、企业微信挂掉。还真是人多力量大,不怕你不挂呀。其实很多年前我就开始期待着有一天可以实现在家办公,没想到这个愿望在 2020 年变成了现实。当然,我宁愿永远也不要实现这个愿望,也不希望是因为这样的原因而在家办公。不过话说回来,目前支持我们远程(在家)办公的基础实施已经非常完善了。高速宽带(以后 5G 普及就...

2020-02-10 08:55:39 3896 6

原创 菜鸟教程之工具使用——IDEA 查看子类(实现类)类图

查看类图可以帮助我们快速的了解代码的主要逻辑,绝对是学习源码钻研技术的好帮手。我们都知道在 IDEA 中通过 Option+Shift+Command+U 或者通过鼠标右击 ==》Diagrams ==》Show Diagram 可以查看一个类以及它父类的关系图。但是想要看一个类或者接口的所有子类或实现类的话,网上并没有一个特别好的教程可以参考(也许是我没有找到)。基于这个原因,我就过一番研究(其实就是到处乱点)找到了对应的方法。于是写出来与大家分享,如有雷同纯属巧合。

2019-12-02 22:17:42 4259 4

原创 Mac(OSX)下媲美XShell的神器Termius

文章目录简介特点软件环境配置配置项配置密钥配置说明配置主机配置项简介XShell的大名不用多说,称它为Windows平台最好用的远程终端不为过吧。唯一不足的地方就是它只有Windows版本。所以今天跟大家介绍一款全平台的远程终端——Termius。Termius不仅涵盖了Windows、Linux、OSX,还变态得支持Android和iOS(以后在地铁、公交上都可以随时拿出手机来排查线上问题啦............

2019-01-07 15:41:06 121981 50

原创 菜鸟学Spring Cloud——创建服务提供者(Eureka)

书接上回软件环境Windows 10JDK 1.8IDEA 2018.2Spring Boot 2.1.0.RELEASESpring Cloud Greenwich.M1步骤创建工程创建工程的具体步骤在上回书中已经详细展示,这里就不赘述了,只是在选择依赖的环节稍有不同,这次需要分别选择左侧Web中的Web依赖和左侧Cloud Discovery中的Eureka Discov...

2018-11-06 09:18:22 1638 6

原创 菜鸟学Spring Cloud——创建注册中心(Eureka)

文章目录扯一扯软件环境步骤创建工程pom文件配置声明为注册中心属性配置yamlproperties坑效果下集预告扯一扯以下内容将引起极度舒适,请在女朋友的陪同下观看。什么?你没有女朋友?哦,不好意思,我忘了,程序员是没有女朋友的。那就好好学习吧,女朋友总会有的。软件环境Windows 10JDK 1.8IDEA 2018.2Spring Boot 2.1.0.RELEASESpr...

2018-11-03 10:27:55 6954 4

原创 菜鸟带你看源码——看不懂你打我ArrayList源码分析(基于java 8)

文章目录看源码并不难软件环境成员变量:构造方法核心方法看源码并不难如何学好编程?如何写出优质的代码?如何快速提高自己的编程能力?等等一系列的问题下面,我们通常都会看到一个相同的答案——看源码。But,每次点开JDK的源代码,不到五分钟就又关上了。为啥呢?因为看不懂,因为太枯燥等等。总结成一句话就是——看源码是一件很痛苦的事情。其实,之所以觉得看源码很痛苦,看不下去,不是因为源码太难。其实写J...

2018-10-23 11:25:57 3412 7

原创 菜鸟学Spring Boot——简单到令人发指的CRUD

前情提要上回书说到,用Spring Boot写了一个Hello World小例子,那么今天就来完成上篇结尾留下的增删改查的实例。软件环境Windows 10JDK 11IDEA 2018.2Maven 3.5.4MySQL 8.0.12代码pom文件中需要添加一下依赖:<dependency> <groupId>org.springfra

2018-10-16 09:59:52 1288 1

原创 菜鸟学Spring Boot——Hello Spring Boot

闲聊本文的目的是让没接触过Spring Boot感受一下它令人发指的方便、快捷、高效率,第一次接触Spring Boot是在16年上半年的事情了,那时候还在日企工作,当时正准备重构一个老项目,太君将Spring Boot引入了进来。那时候Spring Boot在国内还没有太多人用呢,如今它早已火得一塌糊涂。初次见面就被它简洁高效深深吸引,时隔两年多才来跟大家分享,深感惭愧!闲言碎语不要讲,表一...

2018-10-15 09:04:00 724 2

原创 菜鸟调错——Spring Boot+JPA方式报错:MappingException: Could not get constructor for org.hibernate.persister

文章目录错误信息软件版本错误背景前提推理可能遇到的一些问题结束错误信息018-10-04 15:58:02.540 ERROR 4572 --- [ main] o.s.boot.SpringApplication Application run failedorg.springframework.beans.factory.BeanCreationException: Error cr...

2018-10-10 14:00:53 2763 14

原创 菜鸟学数据库——Windows 10 安装 MySQL 8.0.12 解压版

文章目录步骤下载解压配置环境变量初始化安装、启动服务修改密码步骤下载解压配置环境变量初始化安装、启动服务修改密码下载下载地址解压解压到你想要的位置配置环境变量新建 MYSQL_HOME ,对应的值为你刚刚解压的目录,如D:\mysql-8.0.12-winx64。在path中添加 %MYSQL_HOME%\bin 。初始化在MySQL根目录下新建 my.ini文...

2018-10-04 15:43:01 920 1

原创 五分钟教会你任何进制之间的互相转换

什么是进制? 进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。常见的进制二进制 Binary八进制 Octal十进制 Decimal十六进制 Hexadecimal对应关系 二进制 八进制 十进制 十六进制 00

2017-10-26 16:02:06 16638 16

原创 菜鸟调错——POI导出Excel报错No such file or directory

POI 3.8版本导出excel问题 使用poi 3.8版本导出excel时,在本地和测试环境都是好使的,但是部署到线上环境(linux+tomcat)后直接报错,报错日志如下:java.lang.RuntimeException: java.io.IOException: No such file or directory at org.apache.poi.xssf.strea

2016-09-12 10:10:53 11591 6

原创 菜鸟学习JVM——分代回收

分代回收上篇文章介绍了几种垃圾回收的算法,但这些算法当中并没有一个是完美的,可以代替其他所有算法,他们各自有各自的优势。因此JVM需要根据垃圾回收对象的特性,选择合适的回收算法。JVM中大部分对象的生命周期非常短,朝生夕灭;还有一些对象,他们的生命周期很长,有的甚至长生不老、寿与JVM齐。于是就有了分代的概念。分代新生代(Young Generation) +Eden +

2016-05-24 14:56:21 7814 12

原创 菜鸟学习JVM——垃圾回收算法

Java垃圾回收算法所有的垃圾回收算法都是为了解决三个问题: * 哪些内存需要回收 * 什么时候回收 * 怎么回收引用计数法(Reference Counting) 引用计数法原理很简单,给每个对象分配一个计数器,当被引用时就加一,引用失效就减一。计数器为零时,则说明该对象不可能再被使用。引用计数法效率不错,大部分情况下是个不错的算法,但它有一个非常明显的缺点,就是无法回收互相引用的对象,从

2016-05-20 00:34:54 7444 12

原创 菜鸟调错——启动Tomcat报错“Unsupported major.minor version xxx ”

最近项目更新JDK,由之前的1.7更新到1.8。下载并安装好新的JDK以后,编译、启动Tomcat的时候,报错了,提示:“Unsupported major.minor version xxx ”。具体解决的过程就不在这详细说明了。跟大家分享一下解决方案吧。 首先,出现这个错误是因为编译的JDK版本,跟运行时所用的JDK版本不一致所导致的。所以解决方案就是统一JDK的版本。具体如下:1...

2016-01-19 00:35:49 7433 8

原创 好文推荐(十六)——Git使用详细教程

一:Git是什么?Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如...

2015-09-30 22:51:43 7961 5

原创 菜鸟学JS——JS在文本域光标位置插入文本

很久没有写关于JS的博客了,说实话,对于JS小弟仅限于会简单使用的程度。作为一个非前端人员,个人觉得更好更深入的掌握JS还是很有必要的。这不仅仅可以提高自身价值,更重要的是很多情况下使用JS可以更好的解决问题,带来更好的用户体验。扯得稍微远了一些,回归正题,今天跟大家分享一个很实用的小实例——在光标处插入文本。 JS代码:  function insertAtCursor(myF...

2015-09-30 22:51:23 11516 5

原创 菜鸟教程之工具使用——解决m2eclipse插件无法执行Maven命令

在使用m2eclipse编译的时候报错,错误信息如下: -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.  Maven3.3.x才有这个问题,之前的版本并不会出现这个错误,所以想只要换成...

2015-08-31 23:35:14 4449 5

原创 菜鸟好文推荐(十五)——9个基于Java的搜索引擎框架

在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广告骗子)。那么如果在你自己开发的网站系统中需要能让用户搜索一些重要的信息,并且能以结构化的结果展现给用户,下面分享的这9款Java搜索引擎框架或许就可以帮助到你了。1、Java 全文搜索引擎框架 Lu

2015-08-31 22:24:57 4931 3

SpringBoot集成MQTT之消息订阅处理程序

Spring Boot 集成 MQTT 之消息订阅处理程序 含有AES加密算法工具类、BASE64的编码解码。

2019-11-15

springboot,mqtt,emq,物联网

spring boot 整合 mqtt 订阅与发布示例源码

2019-11-15

大话重构-高清-完整版-带书签-目录

本书内容给力,但通俗易懂。读者群适应面广,对初、中、高级程序员均有相当大的帮助。 对初、中级程序员:让他们见识专业级软件开发是如何进行的。掌握重构七步的技巧,成为优秀的程序员。 对高级程序员:让他们理解重构如何成为一种习惯,以提高代码质量。 对项目经理和产品经理:让他们掌握如何运用重构的手法管理遗留系统,延续产品生命力。

2018-12-11

图解设计模式-带目录-高清扫描版

原版连续畅销12年、重印25次! 194张图表 + Java示例代码 = 轻松理解GoF的23种设计模式 《程序员的数学》《数学女孩》作者结城浩又一力作 ◆图文并茂 194张图表(包括57张UML类图)穿插文中,帮助理解各设计模式 ◆通俗易懂 用浅显的语言逐一讲解23种设计模式,读完此书会发现GoF书不再晦涩难懂 ◆专业实用 编写了Java程序代码来实现设计模式,每章附带练习题和答案,用以熟练掌握设计 模式 ◆拓展进阶 必要时对Java语言的功能进行了补充说明,可加深对Java的理解。此外,如果了解C++语言,同样可以轻松理解本书内容 本书适合以下读者阅读 •对面向对象开发感兴趣的人 •对设计模式感兴趣的人(特别是阅读了GoF书但是觉得难以理解的人) •所有Java程序员(特别是对抽象类和接口的理解不充分的人) 本书以浅显易懂的语言逐一说明了GoF的23种设计模式。在讲解过程中,不仅搭配了丰富的图片,而且理论结合实例,用Java语言编写代码实现了设计模式的程序,让程序真正地运行起来,并提供了运用模式解决具体问题的练习题和答案。除此以外,本书在必要时还对Java语言的功能进行补充说明,以加深读者对Java的理解。

2018-08-21

火球:UML大战需求分析

《火球:UML大战需求分析》融合UML、非UML、需求分析及需求管理等各方面的知识,帮助读者解决UML业界问题、需求分析及需求管理问题。全书主要介绍UML的基本语法、面向对象的分析方法、应用UML进行需求分析的最佳实践及软件需求管理的最佳实践四个方面的内容。

2018-08-16

How to Get Started with IntelliJ IDEA as an Eclipse User

一个Eclipse用户如何开始intellij idea之旅 How to Get Started with IntelliJ IDEA as an Eclipse User

2016-05-05

MyI18N-struts国际化实例

MyI18N-struts国际化实例

2014-09-06

struts_i18n1_login

struts国际化登录实例

2014-09-06

MsysGit+TortoiseGit+简体中文包

MsysGit+TortoiseGit+简体中文包

2014-07-05

spring-dwr-2.0.xsd

Spring与DWR集成的schema文档, spring-dwr-2.0.xsd

2014-05-08

Java反射实例源码

Java反射实例源码,具体讲解内容见博客http://blog.csdn.net/liushuijinger 菜鸟学编程(九)——Java反射机制(一) 菜鸟学编程(十)——Java反射机制(二)

2013-11-11

mysql-essential-5.0.22-win32

mysql-essential-5.0.22-win32

2013-10-21

struts登录实例

一个简单的struts登录实例,分享个初学者。

2013-10-07

Ajax异步检查用户名是否存在

Ajax异步检查用户名是否存在,一个简单的小实例,是从整个系统中择出来,如果有什么多余代码,直接忽略

2013-06-01

七种CSS圆角框解决方案

七种经典的CSS圆角框解决方案,各自有各自的优缺点,总有一种让你喜欢,

2012-09-01

简单圆角框

用三张图片加简单的CSS样式实现圆角框,不是最好的方法,但也是一种可以采用的方式。

2012-09-01

jQuery源文件

Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。

2012-08-31

尽管去做:无压工作的艺术

非常著名的时间管理书籍 管理好时间可以让你事半功倍

2012-04-10

有史以来最简单的三层实例(C#)

有史以来最简单的三层实例(C#) 来自 http://blog.csdn.net/liushuijinger/article/details/7343319

2012-03-12

windows8硬盘安装引导工具

用于采用硬盘方式安装windows系统支持xp、vista、7、8

2012-03-06

rational rose 2007 破解版

rational rose 2007 破解版 115网盘下载地址 如果分享到期 请联系我 liushuijinger163.com

2011-12-11

SQL语句教程

一些常用的SQL命令,涵盖了数据库的增删改查,非常实用

2011-12-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除