SpringForAll社区

其他

Spring Boot 实现多租户架构:支持应用多租户部署和管理

租户权限控制在多租户应用中必须为每个租户分别设置对系统资源的访问权限。例如,A租户和B租户不能访问彼此的数据。@EnableGlobalMethodSecurity(prePostEnabled
2023年5月26日
其他

微服务之间的数据依赖问题,该如何解决?

关注我,回复关键字“spring”,免费领取Spring学习资料。微服务,顾名思义,就是将我们程序拆分为最小化单元来提供服务。在一体化系统中,各个微服务也是不可能独立存在的,那么微服务之间涉及到的数据依赖问题,应该怎么处理呢?我们从场景入手来分析考虑此类问题。一、场景在一个供应链系统中,存在商品、销售订单、采购三个微服务,他们的主数据部分数据结构如下:商品:图片订单和子订单:图片采购单和子订单:图片在设计这个供应链系统时,我们需要满足以下两个需求:根据商品的型号/分类/生成年份/编码等查找订单;根据商品的型号/分类/生成年份/编码等查找采购订单。初期我们的方案是这样设计的:严格按照的微服务划分原则将商品相关的职责存放在商品系统中。因此,在查询订单与采购单时,如果查询字段包含商品字段,我们需要按照如下顺序进行查询:先根据商品字段调用商品的服务,然后返回匹配的商品信息;在订单或采购单中,通过
2023年5月24日
其他

详解Spring 中的 @NotEmpty、@NotBlank、@NotNull

进行校验的时候,当校验不通过的时候,程序会抛出400异常,阻止方法中的代码执行,这时需要再写一个全局校验异常捕获处理类,然后返回校验提示。4:总体来说,@Validated
2023年5月24日
其他

如何在 Spring Boot 应用中做单元测试

userService#countAllUsers方法并让它返回统计的用户总数(88),最后检查该方法的返回值是否和预期一致,测试结果如下图所示。单元测试通过,也可以使用
2023年5月23日
其他

Spring Boot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多

关注我,回复关键字“spring”,免费领取Spring学习资料。作者:小目标青年来源:https://blog.csdn.net/qq_35387940本篇内容:后端
2023年5月23日
其他

Spring Boot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案

关注我,回复关键字“spring”,免费领取Spring学习资料。动态数据导出是一般项目都会涉及到的功能。它的基本实现逻辑就是从mysql查询数据,加载到内存,然后从内存创建excel或者csv,以流的形式响应给前端。参考:https://grokonez.com/spring-framework/spring-boot/excel-file-download-from-springboot-restapi-apache-poi-mysql。SpringBoot下载excel基本都是这么干。虽然这是个可行的方案,然而一旦mysql数据量太大,达到十万级,百万级,千万级,大规模数据加载到内存必然会引起OutofMemoryError。要考虑如何避免OOM,一般有两个方面的思路。一方面就是尽量不做呗,先怼产品下面几个问题啊:我们为什么要导出这么多数据呢?谁傻到去看这么大的数据啊,这个设计是不是合理的呢?怎么做好权限控制?百万级数据导出你确定不会泄露商业机密?如果要导出百万级数据,那为什么不直接找大数据或者DBA来干呢?然后以邮件形式传递不行吗?为什么要通过后端的逻辑来实现,不考虑时间成本,流量成本吗?如果通过分页导出,每次点击按钮只导2万条,分批导出难道不能满足业务需求吗?如果产品说
2023年5月23日
其他

@Autowire和@Resource注解使用的正确姿势,别再用错的了!!

Boot,那么推荐一个连载多年还在继续更新的免费教程:http://blog.didispace.com/spring-boot-learning-2x/基于构造函数的依赖注入public
2023年5月20日
其他

Spring MVC中处理Request和Response的策略

最近很多交互要同原生的HttpServletRequest和HttpServletResponse打交道。从HttpServletRequest中读取body数据封装成某种数据结构;向HttpServletResponse写入数据并响应。传统的写法非常不优雅,今天给大家介绍一种比较优雅的方式。HttpMessageConverterHttpMessageConverter是Spring框架提供的一个消息转换器模型,用于在
2023年5月20日
其他

和 if else说再见,SpringBoot 这样做参数校验才足够优雅!

关注我,回复关键字“spring”,免费领取Spring学习资料。作者:T-OPEN来源:blog.csdn.net/weter_drop/article/details/130046637一、概述当我们想提供可靠的
2023年5月20日
其他

RESTful 是什么??

便获取到了这个对应的资源。表述(REpresentations)资源的表述是一段对于资源在某个特定时刻的状态的描述,通过表述捕获资源,并在组件间(客户/服务器)移交该表述。表述有多种格式,如
2023年5月19日
其他

Zabbix 和 Prometheus 到底怎么选?

Pull(拉)的方式获取数据,不仅降低客户端的复杂度,客户端只需要采集数据,无需了解服务端情况,而且服务端可以更加方便的水平扩展。如果监控数据达到告警阈值
2023年5月19日
其他

Spring Boot中使用注解的方式实现数据权限控制

关注我,回复关键字“spring”,免费领取Spring学习资料。来源:http://spring4all.com/forum-post/2738.html在业务开发过程中,经常会碰到需要查询某个人所在部门的数据或者某个人所在部门相关子部门的数据等需要做数据权限的场景,这里结合若依开发平台描述下如何实现数据权限的控制。原理:通过自定义注解的方式在查询数据之前查询配置的权限标记(如:当前部门数据权限等),拼接出相应的sql作为变量传递给Mapper层进行关联查询1、定义数据权限注解import
2023年5月19日
其他

支付宝二面:使用 try-catch 捕获异常会影响性能吗?

关注我,回复关键字“spring”,免费领取Spring学习资料。来源:blog.csdn.net/bokerr/article/details/122655795前言不知道从何时起,传出了这么一句话:Java中使用try
2023年5月18日
其他

Spring Boot 玩一玩代码混淆,防止反编译代码泄露

关注我,回复关键字“spring”,免费领取Spring学习资料。来源:https://blog.csdn.net/qq_35387940编译简单就是把代码跑一哈,然后我们的代码
2023年5月18日
其他

干掉Random,这个类已经成为获取随机数的王者

型的值,也几乎不会出错。那么这两个方法”不安全”在哪呢?它们的不安全并不是在这两个方法执行期间报错,而是未经保护地改变内存,会引起别的方法在使用这一段内存时报错。public
2023年5月17日
其他

Spring Boot 一个注解,优雅的实现重试机制

关注我,回复关键字“spring”,免费领取Spring学习资料。重试,在项目需求中是非常常见的,例如遇到网络波动等,要求某个接口或者是方法可以最多/最少调用几次;实现重试机制,非得用Retry这个重试框架吗?那肯定不是,相信很多伙伴手写一下控制流程的逻辑也可以达到重试的目的。那么用Retry的好处是什么?简单来说,就是优雅。Retry重试框架,支持AOP切入的方式使用,而且能使用注解;想想,重试次数、重试延迟、重试触发条件、重试的回调方法等等我们都能很轻松结合注解以一种类似配置参数的方式去实现,优雅无疑。那么,我们接下来就来一起使用Springboot整合这个Retry重试框架:首先是pom.xml:
2023年5月17日
其他

Spring Boot 集成 Dubbo 启用 gRPC 协议

协议在代码开发时的区别。如果对gRPC协议不了解的,后续文章会有更新,请持续关注。项目结构根据现在微服务开发的常见方式,先搭建一个项目,结构如下这样的项目结构可以将服务的声明和实现隔离开,如果有
2023年5月16日
其他

Spring Boot 面试:说说自动配置的原理?

Boot关于自动配置的源码在spring-boot-autoconfigure-x.x.x.x.jar中:当然,自动配置原理的相关描述,官方文档貌似是没有提及。不过我们不难猜出,Spring
2023年5月16日
其他

动态线程池!不要太香~

MdcTaskWrapper、TtlTaskWrapper、SwTraceTaskWrapper,可以支持线程池上下文信息传递多配置中心支持:基于主流配置中心实现线程池参数动态调整,实时生效,已支持
2023年5月16日
其他

一款基于 Spring Cloud 开源的医疗信息系统

关注我,回复关键字“spring”,免费领取Spring学习资料。今天给大家介绍一个医院信息系统开源项目,相对比较完整,采用的技术栈是
2023年5月15日
其他

Spring Boot + Mybatis + Redis二级缓存实例

IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
2023年5月15日
其他

Spring Boot 配置中的敏感信息如何保护?

Boot配置文件中的各种细节用法,比如:参数间的引用、随机数的应用、命令行参数的使用、多环境的配置管理等等。这些配置相关的知识都是Spring
2023年5月15日
其他

Spring Boot中使用Elastic Job实现定时任务

org.apache.zookeeper.server.quorum.MultipleAddresses2021-07-20
2023年5月12日
其他

一文带你入门 JMeter 性能测试!

走起,然后一起登录。实际使用场景可能是9点钟上班,那么从8:30开始,考勤系统会陆陆续续有人开始登录,直到9:10左右,那么如果完全按照用户的使用场景,设计该测试的时候此处应输入40(分钟)*
2023年5月12日
其他

ES+Redis+MySQL,这个高可用架构设计太顶了!

关注我,回复关键字“spring”,免费领取Spring学习资料。一、背景会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。随着同程和艺龙两家公司的合并,越来越多的系统需要打通同程APP、艺龙APP、同程微信小程序、艺龙微信小程序等多平台会员体系。例如微信小程序的交叉营销,用户买了一张火车票,此时想给他发酒店红包,这就需要查询该用户的统一会员关系。因为火车票用的是同程会员体系,酒店用的是艺龙会员体系,只有查到对应的艺龙会员卡号后,才能将红包挂载到该会员账号。除了上述讲的交叉营销,还有许多场景需要查询统一会员关系,例如订单中心、会员等级、里程、红包、常旅、实名,以及各类营销活动等等。所以,会员系统的请求量越来越大,并发量越来越高,今年五一小长假的秒并发tps甚至超过2万多。在如此大流量的冲击下,会员系统是如何做到高性能和高可用的呢?这就是本文着重要讲述的内容。二、ES高可用方案1.
2023年5月12日
其他

20个使用 Java CompletableFuture的例子

assertTrue(cf.isDone());}通过这个例子可以学到两件事情:CompletableFuture的方法如果以Async结尾,它会异步的执行(没有指定executor的情况下),
2023年5月11日
其他

使用 IDEA 远程 Debug 调试(一篇懂所有)

即可,即-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055改造后的启动脚本如下nohup
2023年5月11日
其他

Spring Guides 中文版找回来了

Security专题教程最近也在抽空去填补这些内容,目前Spring
2023年5月10日
其他

如何设计API返回码(错误码)?

关注我,回复关键字“spring”,免费领取Spring学习资料。来源:ken.io/note/api-errorcode-or-resultcode-desgin一、前言客户端请求
2023年5月10日
其他

想让代码更优雅?Mybatis类型处理器了解一下!

使用MyBatis提供的枚举类型处理器我们通常会使用枚举来解决这种场景。首先新建com.zwwhnly.mybatisaction.type包,然后在该包下新建枚举Enabled:package
2023年5月9日
其他

Spring Boot 定时任务动态管理通用解决方案

关注我,回复关键字“spring”,免费领取Spring学习资料。来源:blog.csdn.net/qq_34886352/article/details/106494637一、功能说明SpringBoot的定时任务的加强工具,实现对SpringBoot原生的定时任务进行动态管理,完全兼容原生@Scheduled注解,无需对原本的定时任务进行修改“推荐下自己做的
2023年5月9日
其他

Google Guava 工具包用起来太爽了!

关注我,回复关键字“spring”,免费领取Spring学习资料。文章来源:https://www.jianshu.com/p/97778b21bd00Spring官方教程中文版重新上线了!之前老版本的社区丢了一些教程,比如:官方Spring
2023年5月9日
其他

Spring Boot中使用Redis的发布订阅功能

通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K、V存储的高性能缓存。接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦!社区福利进行中,传送门:http://spring4all.com/fuli-huodong发布订阅模式如果你看过之前我写的关于MQ的相关文章,那么对于发布订阅功能应该不会陌生。如果没看过,那也不要紧,这里先做一个简单介绍,已经了解的可以跳过直接看下一节内容。什么是发布订阅模式?在发布订阅模式中有个重要的角色,一个是发布者Publisher,另一个订阅者Subscriber。本质上来说,发布订阅模式就是一种生产者消费者模式,Publisher负责生产消息,而Subscriber则负责消费它所订阅的消息。这种模式被广泛的应用于软硬件的系统设计中。比如:配置中心的一个配置修改之后,就是通过发布订阅的方式传递给订阅这个配置的订阅者来实现自动刷新的。不就是观察者模式吗?看到这里,学过设计模式的同学可能很容易将它与设计模式中的观察者模式联系起来,你会觉得发布订阅模式中的两个概念与观察者模式中的两个概念似乎干的是一样的事情?所以:Publisher就是观察者模式中的Subject?Subscriber就是观察者模式中的Observer?重要区别在哪里?从这两种模式的角色任务来说确实是非常相似的,但从实现架构上来说有一个核心不同点!我们通过下面的图示来理解,就很清晰了:观察者模式发布订阅模式可以看到这里有一个非常大的区别就是:发布订阅模式在两个角色中间是一个中间角色来过渡的,发布者并不直接与订阅者产生交互。回想一下生产者消费者模式,这个中间过渡区域对应的就是是缓冲区。因为这个缓冲区的存在,发布者与订阅者的工作就可以实现更大程度的解耦。发布者不会因为订阅者处理速度慢,而影响自己的发布任务,它只需要快速生产即可。而订阅者也不用太担心一时来不及处理,因为有缓冲区在,可以一点点排队来完成(也就是我们常说的“削峰填谷”效果)。而我们所熟知的RabbitMQ、Kafka、RocketMQ这些中间件的本质其实就是实现发布订阅模式中的这个中间缓冲区。而Redis也提供了简单的发布订阅实现,当我们有一些简单需求的时候,也是可以一用的!如果你已经理解了这个概念,那么就进入下一节,一起来做个例子吧!动手试一试下面的动手任务,我们将在Spring
2023年5月6日
其他

GitLab CI/CD:开发和运维管理的效率神器

效率,是所有互联网公司追求的。新服务/产品上线之时,往往是全团队最紧张的时刻。一旦出现异常情况,大家熬通宵全网替换程序,一旦出现异常情况还得全部回滚。然后开发人员白天紧急改
2023年5月6日
其他

把 Spring Boot 系统启动时间从 7 分钟降到了 40 秒!

上有许多注解,重点关注下@Import({CacheConfigurationImportSelector.class}),CacheConfigurationImportSelector
2023年5月6日
其他

Java 20 正式发布

中的进程。虚拟线程避免了上下文切换的额外耗费,兼顾了多线程的优点,简化了高并发程序的复杂,可以有效减少编写、维护和观察高吞吐量并发应用程序的工作量。结构化并发
2023年5月5日
其他

Spring Boot中使用LDAP来管理用户与组织数据

很多时候,我们在做公司系统或产品时,都需要自己创建用户管理体系,这对于开发人员来说并不是什么难事,但是当我们需要维护多个不同系统并且相同用户跨系统使用的情况下,如果每个系统维护自己的用户信息,那么此时用户信息的同步就会变的比较麻烦,对于用户自身来说也会非常困扰,很容易出现不同系统密码不一致啊等情况出现。如果此时我们引入LDAP来集中存储用户的基本信息并提供统一的读写接口和校验机制,那么这样的问题就比较容易解决了。尤其在一些内部管理系统的开发和搭建时,往往我们的内部系统一开始并不全是自己开发的,还有很多第三方产品支持,比如:OA系统、财务系统等,如果自己开发一套用户管理系统,那么这些系统对接还得二次开发,成本很大。由于LDAP并不是什么新技术,大部分成熟软件都支持用LDAP来管理用户,所以时至今日,LDAP的应用依然可以经常看到。下面我们就具体来看看,当使用Spring
2023年5月5日
其他

Spring Boot + MyBatis 多模块项目搭建教程

点击关注,每天学点关于Spring的干货!来源:https://mp.weixin.qq.com/s/A39tbLtO_5TV50vSraF3AA最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程。1、开发工具及系统环境IDE:IntelliJ
2023年5月5日
其他

Spring Boot 实现读写分离,还有谁不会??

编译并打开-parameters编译参数。来源:www.liaoxuefeng.comEND关注下方公众号,回复【JAVA宝典】获取最新免费Java资料大全往期推荐Spring
2023年4月28日
其他

面试官:Spring 注解 @After,@Around,@Before 的执行顺序是?

关注我,回复关键字“spring”,免费领取Spring学习资料。AOP中有@Before,@After,@Around,@AfterRunning注解等等。首先上下自己的代码,定义了切点的定义@Aspect@Componentpublic
2023年4月28日
其他

4.6k Star,SpringBoot+Vue+App+硬件实现的智能家居系统,一套带走!

关注我,回复关键字“spring”,免费领取Spring学习资料。今天,推荐一个智能家居系统项目。这是我目前见过的最好的智能家居系统项目,功能完整,代码结构清晰。值得推荐。简介FastBee是一个简单易用的物联网平台。可用于搭建物联网平台以及二次开发和学习。适用于智能家居、智慧办公、智慧社区、农业监测、水利监测、工业控制等。系统功能权限管理:
2023年4月28日
其他

用漫画讲解 Java,太秀了!

Java语言在企业级开发中的地位一直很稳固,几十年下来,Java语言不管在开发者数量还是企业级应用部署量都是领先的。每年有大量的新人立志学好Java,但是又因为Java体系过于庞大,让很多初学者不知如何下手,一些抽象的概念和思想,很容易让初学者还没入门就放弃,比如:1、面向对象编程思想,包括类、对象、继承、多态等抽象概念2、大量的关键字、语法规则和标准库函数等语法3、搭建相应的开发环境,包括JDK、Eclipse或者其他集成开发环境等4、异常处理的基本原理和常见的异常类型5、面向对象设计模式,如工厂模式、单例模式、观察者模式等而这些重要的基础知识对于掌握Java编程又至关重要,如何从庞大的Java体系中抽丝剥茧,找到一条对初学者最友好的学习路径呢?为此B站Java网红+畅销书作家两位大佬联合打造了这本《漫画Java编程》按照一套科学的Java学习路线风趣幽默地讲解了所有细枝末节的技术要点还结合编程实战和视频讲解让你打牢Java语言地基的同时还能学有所用、兴趣昂然!书中漫画风格是这样子的,萌趣又好懂!超牛作者的诚意之作两位作者在圈内都很有知名度一位擅长写技术书,一位擅长视频讲解孙卫琴知名IT作家和Java开发专家对技术的领悟入木三分很多人都看过她写的畅销书《Tomcat与Java
2023年4月25日
其他

Spring Boot配置保存日志文件

关注我,回复关键字“spring”,免费领取Spring学习资料。springboot日志配置:springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。一、使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了)1、在项目的resources目录下创建一个【logback-spring.xml】日志配置文件名称只要是一
2023年4月25日
其他

Spring Boot中一个注解优雅实现重试

关注我,回复关键字“spring”,免费领取Spring学习资料。重试,在项目需求中是非常常见的,例如遇到网络波动等,要求某个接口或者是方法可以最多/最少调用几次;实现重试机制,非得用Retry这个重试框架吗?那肯定不是,相信很多伙伴手写一下控制流程的逻辑也可以达到重试的目的。那么用Retry的好处是什么?简单来说,就是优雅。Retry重试框架,支持AOP切入的方式使用,而且能使用注解;想想,重试次数、重试延迟、重试触发条件、重试的回调方法等等我们都能很轻松结合注解以一种类似配置参数的方式去实现,优雅无疑。那么,我们接下来就来一起使用Springboot整合这个Retry重试框架:首先是pom.xml:
2023年4月25日
其他

一种非侵入式幂等性的Java实现

注解即可。这基本上就是代码非侵入式了呀!!!image.png客户端:服务端处理好后,在客户端访问接口的时候需要执行以下步骤:需要先获取幂等号然后将幂等号添加到请求头中1.获取幂等号
2023年4月24日
其他

Spring Boot 接口加密解密,新姿势!

关注我,回复关键字“spring”,免费领取Spring学习资料。在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用如果我们想保证数据传输的安全,对接口出参加密,入参解密。但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能
2023年4月24日
其他

Spring 面试题之循环依赖的理解

关注我,回复关键字“spring”,免费领取Spring学习资料。作者:凯凯雄雄链接:https://www.jianshu.com/p/c4dbdc3369f4最近面试的时候发现很多人会问Spring是如何解决循环依赖的,虽然知道是通过三级缓存去解决的,但是也仅仅只是知其然,不知其所以然,抱着学习的心态还是好好捋一捋:三级缓存是如何解决循环依赖的?为什么是三级缓存?二级缓存行不行?有什么好的方式可以避免构建IOC的时候产生循环依赖?循环依赖的场景这个场景其实分为很多种:简单一点场景:A
2023年4月21日
其他

ThreadLocal 搭配线程池时为什么会造成内存泄漏?

关注我,回复关键字“spring”,免费领取Spring学习资料。ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。下图为ThreadLocal的内部结构图从上面的结构图,我们已经窥见ThreadLocal的核心机制:每个Thread线程内部都有一个Map。Map里面存储线程本地对象(key)和线程的变量副本(value)但是,Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向map获取和设置线程的变量值。所以对于不同的线程,每次获取副本值时,别的线程并不能获取到当前线程的副本值,形成了副本的隔离,互不干扰。ThreadLocalMapThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也独立实现。和HashMap的最大的不同在于,ThreadLocalMap结构非常简单,没有next引用,也就是说ThreadLocalMap中解决Hash冲突的方式并非链表的方式,而是采用线性探测的方式。(ThreadLocalMap如何解决冲突?)在ThreadLocalMap中,也是用Entry来保存K-V结构数据的。但是Entry中key只能是ThreadLocal对象,这点被Entry的构造方法已经限定死了。static
2023年4月21日
其他

9 款日志采集和管理工具对比,选型必备!

关注我,回复关键字“spring”,免费领取Spring学习资料。来源:blog.csdn.net/xcswswswws/article/details/122558274简介对于日志管理当前网络上提供了大量的日志工具,今天就给大家分析总结一下这些常用工具的特点,希望对你们在选型时有所帮助,如果有用记得一键三连。1、FilebeatFilebeat是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或Logstash进行索引。Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取一个日志以获取新内容,并将新日志数据发送到libbeat,libbeat会汇总事件并将汇总的数据发送到您为Filebeat配置的输出。图片1.1
2023年4月21日
其他

畅销15年的Java经典,再次重磅升级!速送3套,先到先得!

畅销15年的Java经典——《疯狂Java讲义》出第6版啦!!!而且买套装纸书免费送电子书!!!经常有读者买了纸质书以后来找博文菌要电子书~~其实,纸质书和电子书是分开售卖的,一般情况下买纸质书是不会送电子书的,电子书是另外的价钱!但是,这次不一样了!为了方便大家学习,京东、电子工业出版社和作者通力合作,让大家可以只要购买了《疯狂Java讲义(第6版)》上下册套装,就能获赠价值125.5元的电子书。有了电子书,以后跟着书里的案例操作时,再也不需要一个个字母码入了。此外,在赠送电子书的基础上,博文菌还为大家争取到五折购买《疯狂Java讲义(第6版)》上下册套装的福利!也就是说,128.5买一本纸质书的价钱,可以获得两本纸质书+一本价值125.5元的电子书!这样的福利,简直不要太值有没有!!!虽然给大家争取到了福利低价,但像《疯狂Java讲义》这样名声在外的书,它的好和价值,我想是大家众所周知的!无数小伙伴通过这套书转行IT领域不少技术大佬通过这套书成长起来博文菌在朋友圈转发李刚老师直播海报,一位作者在朋友圈下的回复更有各位自媒体大V诚心力荐百万粉丝大V九边老师在公众号“九边”的一篇文章中强烈推荐《疯狂Java讲义》百万粉丝大V九边老师在《向上生长》一书中提到《疯狂Java讲义》多所985、211院校将其选作教材和参考书这套从2008年出版第1版,如今畅销15年的Java经典,绝对是被时间和读者验证过的口碑之作!学Java,看它准没错!已经过了入门期或已买过前5版,还要不要入手这一版?建议入!第6版是针对Java
2023年4月19日