自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

因特马

我是因特马,一个爱分享的斜杠程序员~

  • 博客(85)
  • 收藏
  • 关注

原创 开发技巧 | 如何修改 jar 包中的源码?

开发中,我们有时候想要修改 jar 中的代码,方便我们调试或者作为生产代码打包上线。但在 IDEA 中,jar 包中的文件都是 read-only(只读模式)。那如何才能修改 jar 包中的源码呢?下载 jar 包源码。如果无法获得源码,需要用反编译工具反编译。找到 jar 中你想要修改的类,在自己的工程目录下,创建一个同该类一样的包(package)。把你要修改的类复制到该包中。此时,可以对该类进行修改。debug 项目,在该类中打上断点,可以看到代码执行时会进入这个新的类中,说明走的是改后的代

2021-04-30 01:09:13 7721

原创 深入解读 Spark 宽依赖和窄依赖(ShuffleDependency & NarrowDependency)

目前,网上有关宽窄依赖的博客大多都使用下面这张图作为讲解:实际上,这幅图所表达的内容并不完善。其中,窄依赖的内容表达的不够全面,而宽依赖的部分容易让人产生误解。本文,我将用新的绘图带大家搞清楚究竟什么是宽依赖(ShuffleDependency),什么是窄依赖(NarrowDependency)。为什么会有宽窄依赖?我们知道,在 Spark 中,数据抽象表示为统一的数据模型 RDD。每一次对 RDD 进行转换(Transformation)操作,我们都会得到一个新的 RDD。例如,rdd2 = rd

2021-01-06 23:18:49 6957

原创 如何用正确姿势安装 PyTorch(With CPU or GPU-CUDA-cuDNN)

随着 PyTorch 的不断发展,其生态也越来越繁荣。现如今,安装 PyTorch 是一件非常简单的事情。我们只需要安装 Anaconda,并通过 conda 就可以安装 PyTorch 环境。目前,网络上大多数 PyTorch 安装教程中有关 CUDA、cuDNN 的安装方法比较混乱且已经过时。本文创作时间为 2020-09-10,接下来我就根据个人实践以及相关资料,整理下如何用正确姿势安装 PyTorch。安装 Anaconda下载并安装 AnacondaAnaconda 是一个基于 Pytho

2020-09-10 18:25:14 3924

原创 SpringBoot 开发实践(8):使用 Lombok 净化重复代码

前言在日常开发中,我们时常需要编写一些重复的、非业务相关的功能性代码。比如实体类私有属性的 get / set 方法、创建日志输出类等。这也是 Java 饱受诟病的地方之一。往往这些冗余的代码虽然跟业务无关,但由于其功能性又不得不写,十分浪费时间,影响美观不说,后期如果有改动还不方便维护。为了解决上述痛点,就不得不提到神器 Lombok 了。有了 Lombok,在开发中我们就可以使用简单的注解,来避免编写那些重复的功能性代码。在编译的时候,Lombok 会根据注解自动帮我们生成我们省去的那些代码。是不

2020-07-03 17:29:09 865

原创 SpringBoot 开发实践(7):读取自定义配置

前言在开发中,我们可以通过自定义配置来灵活配置我们的项目。过去,在 SpringMVC 中,我们需要在各种 XML 中定义我们的各项配置,使用起来相对繁琐。而 SpringBoot 为我们提供了更为方便的方式定义配置,只需要在 application.yml 中添加我们需要的配置,然后通过注解读取配置即可。使用 @Value 读取配置在类中,我们可以通过给属性打上 @Value 注解,将配置中的参数值绑定到属性上。在 application.yml 中,我们添加如下配置。myconfig: n

2020-06-27 20:12:48 380

原创 SpringBoot 开发实践(6):@Async 异步执行方法及配置自定义线程池

前言SpringBoot 中的方法调用,默认是单线程顺序执行的。但是在开发中我们可能会存在这样一些场景,例如发送邮件或者记录日志等,这些操作往往比较耗时,但是又不是主业务中跟业务相关的内容。这种场景我们就可以选择使用 @Async 异步方法执行,即用其它线程来异步执行某些耗时操作,从而节省主线程的运行等待时间。使用 @Async 异步执行方法想要使方法异步执行非常简单,简单来说,只需要在需要异步执行的方法上添加 @Async 注解即可。编写一个 @Service 服务类,模拟耗时操作。在方法的前后,

2020-06-23 01:52:01 754

原创 SpringBoot 开发实践(5):定时任务 @Scheduled

前言在开发中,我们会有定时执行某些任务的需求,例如定时清理过期文件、定时发送邮件等等。SpringBoot 为我们提供了便捷的方式来配置定时任务,只需要打上几个注解即可。那么下面让我们来看看 SpringBoot 中如何开发定时任务。开启定时任务想要使用定时任务,需先打开定时任务开关。在入口类中添加 @EnableScheduling 注解@SpringBootApplication@EnableSchedulingpublic class SchedulerTaskApplication {

2020-06-19 01:48:14 1578

原创 SpringBoot 开发实践(4):使用 @Controller 实现 RESTful Web 接口

在之前的章节,我们已经用到了 Controller 的部分功能。那么在本章,我们就来整理下如何使用 @Controller 实现 RESTful Web 接口。@Controller基本介绍@Controller 注解用于标识一个类,被标识的类就是个 SpringMVC Controller 对象,即一个控制器。SpringBoot 在启动时,会自动扫描被 @Controller 标记的类,并扫描该类中的方法。使用 @RequestMapping 标记的方法即为一个处理器,不同的请求会由分发器分发到对

2020-06-12 21:24:34 1155

原创 SpringBoot 开发实践(3):优雅使用 SpringBoot + Druid + MyBatis 访问数据库

前言作为 Java 后端开发,我们免不了要和数据库打交道。那么我们如何在 SpringBoot 中优雅地与数据库交互呢?目前,主流的方式是使用 JPA 或者 MyBatis 作为访问数据库的框架。JPA 的前身是 Hibernate,其宣传的亮点是不需要写 SQL 就能实现数据的交互。对于简单的单表查询来说,JPA 有其优势,可以使开发效率大大提高。但是对于复杂的多表关联查询场景,MyBatis 灵活的优势就凸显出来了。我在一开始用 SpringBoot 访问数据库的时候,用的就是 MyBatis,所

2020-06-06 20:32:31 529

原创 SpringBoot 开发实践(2):SpringBoot 必备小知识

本章会不断总结更新一些有关 SpringBoot 的小知识,这类知识大都比较基础,而且比较零碎,单独拿出来作为一篇博客显得有些单薄,但是不写的话可能会使很多新手对某些地方产生疑惑。所以就单独开设本章,集中整理这些杂碎知识。因为本系列博客还在给不断更新中,所以我会在后面博客的编写中,不断整理这类零碎知识到这章中来,请持续关注。配置文件 application.properties 与 application.ymlresources 中的 application.properties 和 applica

2020-06-06 19:58:36 411

原创 SpringBoot 开发实践(1):三分钟入门搭建你的第一个 SpringBoot 工程

前言从大四实习第一次接触 SpringBoot 到现在,已经有 4 四年了。这期间,我也摸过一些其他的后端框架例如 JFinal 等,但回顾接触过的项目,还是用 Spring 体系开发居多。我上大四那会儿是 2016 年,那时候的 SpringBoot 刚刚在国内开始流行。网上大部分的资料还都是基于 SpringMVC 的,看得我是一头雾水,搞不清楚他俩是什么关系,也没有几篇博客能解释清楚。记得当时,我还曾纠结于 SpringBoot 和 SpringMVC 之间,到底该从哪个入手。后来我的第一个师傅

2020-06-06 01:40:11 634

原创 在职非全日制计算机考研上岸心得分享

从考研备考那天开始,到收到了北京交通大学计算机学院的拟录取通知,历时 460 天。在这一年多的备考日子里,除了掌握了几门考试科目的知识外,更多的是收获了对有关学习、工作、人生问题的新的思考。考研的意义是什么、如何平衡工作与学习、人生未来的目标是什么等诸如此类的问题,在考研过程中逐渐有了清晰的答案,我觉得这非常难得。当对这些问题有了越来越深的认识时,就会在成长过程的迷茫态中慢慢找到自己的位置、明确自己的方向。这也是考研成功上岸后,除了那一纸录取通知书之外,带给我的宝贵的人生财富。写这篇经验分享,一是想记录

2020-05-28 13:18:33 7248 6

原创 学校官网没有导师检索功能怎么办?Python + BeautifulSoup 爬取导师信息自制检索工具

1 背景考研分数下来后,感觉成绩不错的就要开始联系目标院校的导师了。选择导师要按照自己感兴趣的研究生方向进行选择,如果能按关键字检索导师信息就会方便许多。我报考的是北京交通大学计算机学院,但官网中一栏 导师风采 并没有检索功能,只能按照拼音顺序查找老师。这一页一页点进去看导师的信息效率实在是太低,筛选过程很不方便。所以想着干脆直接用爬虫把导师信息入库,这样就能自己实现检索功能了,想怎么查就怎么查。下面记录一下我用 Python + BeautifulSoup 爬取导师信息的过程。因为我平时不是做 Py

2020-05-24 18:03:10 1320 2

原创 北交大计算机在职非全考研初试心得

2019 年 2 月 12 日,我正式踏上了考研之路,报考的是北京交通大学计算机学院电子信息软件工程方向(非全日制)。初试成绩 322,超去年分数线 50 多分,目前正在准备复试。闲暇之余,我想把初试复习规划、过程、踩过的坑作以总结,分享给大家,希望能帮到有需要的人。总体复习规划决定考研后,我首先根据自身的情况,对全年考研过程做了一个初步的规划。考研一共四个科目,数学、英语、政治、专业课。其...

2020-03-14 00:51:54 2685 3

原创 我为什么要考非全日制研究生

趁年轻要多读书,工作是一辈子的事,而读书就那么几年。先说说我目前的情况。本人是 2020 考研在职考生,互联网开发相关从业者,目标院校是北京交通大学计算机学院电子信息专业软件工程方向非全日制。初试成绩尚可,超去年分数线 50 多分,目前正在准备复试。大学那时候没有选择读研而是直接工作,其实就有考虑过如果以后有机会的话读个非全研究生。而真正开始决定考研是从去年,也就是 2019 年春节之后。...

2020-03-14 00:47:25 9734 4

原创 Hexo Theme NexT 主题个性化配置最佳实践

一般情况下,当我们在使用 Hexo 的 NexT 主题时,都希望把博客改造成自己喜欢的风格。NexT 主题经过不断的迭代积累,目前提供了非常丰富的配置来满足使用者的个性化需求。经过一段时间的摸索,我总结了一些有关 NexT 主题配置的最佳实践方案,能够优雅的对博客进行个性化改造及持续升级。核心思想就是,使用官方的推荐的方式配置主题,多挖掘博客自带的功能,尽可能少得修改源码。下面分享我的做法。版...

2019-07-29 01:59:14 3296

原创 如何搭建自己的博客 - 基于 Hexo + Docker + Nginx + Git + Linux

过去两年一直在 CSDN 上写博客,不过有广告、等待审核等一些不方便的地方,一直想搭建一个自己的博客。正好手里有一台闲置的腾讯云服务器,于是下定决心准别搭建一个个人博客。经过两天的折腾,终于初步搭建成功。下面分享下搭建过程。准备材料注:本方案非 hexo + GitHub 的免费方案,需要拥有一台个人公网服务器。公网服务器一台GitHub 仓库个人域名(非必须)搭建思路用个人公网...

2019-06-27 01:16:12 2968

翻译 Tomcat Servlet 工作原理(An Introduction to Tomcat Servlet Interactions)

本文译自:An Introduction to Tomcat Servlet InteractionsTomcat Servlet 功能介绍Apache Tomcat 因其灵活的配置和交互能力其实是作为通用的 web 应用服务运行在多种环境上的,但主要还是作为一个 Java Servlet 容器。Tomcat 利用它对 Java Servlet 和 JSP API 的实现,可以从客户端接...

2019-04-15 01:03:40 877 1

原创 JavaMail 发送邮件阻塞问题解决——设置 smtp 超时时间

一. 起因最近发现项目中有关发送邮件的模块偶尔会阻塞住,导致整个线程阻塞。诡异的是没有捕获到任何异常日志,程序莫名其妙就卡在了 sendMail 上。后来想到发送邮件的内容过大,可能由于这个原因导致,所以找了一下有关 JavaMail 超时设置的资料。现做整理,顺便聊聊一些小坑。二. JavaMail smtp 超时参数参数类型描述mail.smtp.connecti...

2019-04-11 19:20:34 17874 2

原创 SpringBoot 全局异常处理进阶:使用 @ControllerAdvice 对不同的 Controller 分别捕获异常并处理

一. 引言之前发表过一篇 SpringBoot 捕获 controller 层全局异常并处理(@ControllerAdvice + @ExceptionHandler),讲述了如果在 SpringBoot 工程中对 Controller 配置全局异常。后来在实际工程中,又有了如下需求:有些接口在发生异常时,需要持久化错误信息,而有的接口则不需要。如果使用了全局异常处理,那每次发生了异常,还需要...

2019-03-15 15:05:00 10583 2

原创 在 SpringBoot 2.x 中使用 @Transactional 对 Redis 事务管理

一.添加 Redis 基础配置spring: redis: host: 127.0.0.1 port: 6379 password:二.开启 Redis 事务配置@Configuration@EnableTransactionManagement // 1public class RedisConfig { @Bean public Stri...

2019-03-04 16:46:43 11778 11

原创 HttpClient Java 常用写法总结

1. HttpClient 简介HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。2. Java 中使用方法2.1 创建实例官方推荐方法是创建 CloseableHttpClient 类CloseableHttpClient httpcl...

2019-01-25 16:12:50 1618

原创 SpringBoot 配置邮件服务

1. 有关 SpringBoot 邮件服务Spring Framework 自己有一套基于 JavaMail 的邮件服务包 org.springframework.mail,并通过 JavaMailSender 接口提供了一种简易的发送邮件的方式。这样,开发人员就可以不用操心底层的邮件系统,使用 Spring 提供的接口即可方便地使用邮件服务。官方文档:https://docs.spring.i...

2018-11-30 15:21:21 7418 4

原创 SpringBoot 对 controller 层捕获全局异常并处理的方法(@ControllerAdvice 和 @ExceptionHandler)

一. 引言在开发中,我们会有如下的场景:某个接口中,存在一些业务异常。例如用户输入的参数校验失败、用户名密码不存在等。当触发这些业务异常时,我们需要抛出这些自定义的业务异常,并对其进行处理。一般我们要把这些异常信息的状态码和异常描述,友好地返回给调用者,调用者则利用状态码等信息判断异常的具体情况。过去,我们可能需要在 controller 层通过 try/catch 处理。首先 catch 自...

2018-11-28 21:25:20 16340 5

原创 如何用 Phoenix JDBC 连接 HBase

一.引入Mavan依赖<!-- https://mvnrepository.com/artifact/org.apache.phoenix/phoenix-core --><dependency> <groupId>org.apache.phoenix</groupId&a

2018-10-29 20:54:45 8153 1

原创 如何用Phoenix(4.14版本)映射HBase中已有的表

解决4.10版本后,查不到数据的问题一.为什么要做映射?二.如果进行映射?1.创建一个 HBase 表并插入一定量数据。2.创建一个 HBase 表并插入一定量数据。3.使用 SELECT 语句查询4.特殊强调:三.视图映射四.总结一.为什么要做映射?本地安装好 Phoenix 之后,用 phoenix 的 !talblse 命令列出所有表,会发现 HBase 原有的表没有被列出来。而使用 P...

2018-10-25 22:57:38 5288 1

翻译 有关Kafka的介绍(Introduntion of Kafka)

翻译自:http://kafka.apache.org/intro介绍Apache Kafka®是一个分布式流处理平台。那么,如何正确理解它呢?一个流处理平台应该有三个核心能力:发布和订阅数据流,类似于一个消息队列或者是企业消息系统。以可容错并持久的方式储存数据流。加工生成的数据流。Kafka通常被用于两大类应用:建立实时的、能可靠地从系统或应用中获取...

2018-09-14 01:09:00 467

原创 SpringBoot + Maven实现多环境动态切换yml配置及配置文件拆分

一.引言在实际的的开发中,对于一个工程,经常会有多种环境配置,例如开发环境、测试环境、生产环境等。在不同的环境下,配置有可能是不一样的,比如接口地址、数据库连接配置等。为了避免频繁的修改配置文件,我们想要简便地切换各种环境配置。好在SpringBoot提供了这样的功能,可以很方便地切换不同场景下的配置。本文就来讲解如果在SpringBoot项目中动态切换配置,以及用Maven控制配置的选择...

2018-08-28 11:43:47 29365 5

原创 Mac OS 安装Maven及其配置

一.下载Maven的压缩包1.登录Maven官方下载地址:http://maven.apache.org/download.cgi 2.下载 apache-maven-xxx-bin.tar.gz。 - binary:编译后的二进制文件,开发的话选这个就行。 - source:是带源码的,需要源码的下这种。3.将下载的压缩包解压,放在合适的位置。二.配置Maven环境1....

2018-08-27 19:43:24 1024

原创 如何避免成为一个低级的码农?

计算机科学与技术专业的学生要怎样做才能避免成为 一个低级的码农? 知乎上计算机的似乎很多,大神也有不少,作为一个计算机科学与技术专业的学生,真心的请教一下要怎样做,要学什么,要怎样做,才能避免那种月工资两三千的码农甚至码奴的生活呢。 之前也有过类似的提问,但是本人看了一下那个问题下的答案,调侃者居多,希望大神们能够给小弟指一条不是那么荒唐的道路。。。在知乎上看到上面这个问题...

2018-08-03 17:20:18 9476 18

原创 Mac跳过SourceTree Atlassian账户登录的方法(不需要改文件、不需要科学用网)

一.引言前一段买了个Mac。除了要熟悉一些Mac的基本操作之外,另一件大事就是在Mac上配置之前Windows上的开发环境。SourceTree是一个免费的Git可视化工具。之前在Windows上用得还不错,所以打算在Mac上安装一个。SourceTree在2.0之后,需要登录Atlassian账户或者Google账户才能使用。但是如果不科学用网的话,账户是无法注册或者登录的。在Win...

2018-07-29 18:15:06 16474 5

原创 [数据结构与算法]-排序算法之归并排序(MergeSort)及其实现(Java)

一.合并两个已经排序的数组要搞清楚什么是归并排序(MergeSort),我们首先要搞清楚一个基本操作:合并两个已经排序的数组。因为两个数组A、B是排序好的,所以,我们可以定义两个指针,初始化的时候两个指针分别指向A、B的第一个元素,然后比较两个指针指向的元素。比较得出较小的元素放在第三个空数组中,然后该元素所在的数组的指针下移一位,之后继续比较。直到某个数组都被放在了第三个数组,此时将另一...

2018-07-22 18:37:56 652

原创 一个毕业一年程序员的感悟

前一段看到朋友圈里的学弟学妹们开始晒毕业照,这一晃据我毕业也一年多了。走出了校园,工作了一年,见得多了,体会和感触也随之变多。所以,又开始习惯性地复盘过去的一段经历,用现在不成熟的想法去回顾之前更不成熟的想法,哈哈。挑出我认为比较重要的四点感受来说吧。一.理论知识的重要性这个问题,我在毕业半年之后就意识到了。经常听到有人说“学校里的知识都是过时的,没用的,工作中顶多也就能用...

2018-07-22 00:01:04 11917 7

原创 [数据结构与算法]-排序算法之堆排序(HeapSort)及其实现(Java)

一.什么是堆排序?堆排序(HeapSort)顾名思义,一想就是跟堆有关,也就是说利用堆进行排序。如果对堆不是很了解的朋友,可以参考我之前写过的一篇介绍堆的博客 [数据结构与算法]-二叉堆(binary heap)介绍及其实现(Java)。堆排序的思路如下:对给定元素个数为N的数组arr,我们先把arr构建成最大堆(max-heap)结构。然后获取堆的最大值,即第一个元素,与最后一...

2018-07-14 18:07:34 792

原创 [数据结构与算法]-二叉堆(binary heap)介绍及其实现(Java)

本文欢迎转载,转载前请联系作者。若未经允许转载,转载时请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN一.什么是二叉堆?二叉堆(binary heap)是一种通常用于实现优先队列的数据结构。要想知道二叉堆是什么东西,得从两方面介绍它:结构性和堆序性。1.结构性二叉堆是一颗除底层...

2018-07-08 21:52:59 3828

原创 [数据结构与算法]-排序算法之希尔排序(shell sort)及其实现(Java)

本文欢迎转载,转载前请联系作者。若未经允许转载,转载时请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN一.什么是希尔排序?希尔排序(Shellsort)可以是说是简单排序的一种改进版本(有关插入排序可见我的另一篇博文排序算法之插入排序(insertion sort)及其实现(Java)),...

2018-07-02 00:02:54 486

原创 [数据结构与算法]-排序算法之插入排序(insertion sort)及其实现(Java)

本文欢迎转载,转载前请联系作者,经允许后方可转载。转载后请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN一.什么是插入排序?插入排序(insertion sort)是最简单的排序算法之一。它是一个稳定的排序算法。(Tips:所谓稳定,即两个相同元素,排序前和排序后他俩的顺序不发生改...

2018-07-01 14:53:40 1226

原创 [数据结构与算法]-平衡二叉树(AVL)介绍及其简单实现(Java)

本文欢迎转载,转载前请联系作者,经允许后方可转载。转载后请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN一.什么平衡二叉树(AVL)AVL(Adelson-Velskii & Landis)是带有平衡条件的二叉查找树,即一种特殊的二叉查找树,它保证树的深度必须为O(logN)。...

2018-06-20 22:12:39 765

原创 [数据结构与算法]-二叉查找树(BLT)介绍及其实现(Java)

本文欢迎转载,转载前请联系作者,经允许后方可转载。转载后请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN一.什么是二叉查找树?二叉查找树(Binary Search Tree, BST)是二叉树的一种。简单来说,二叉查找树的特有性质是:对于树中的每个节点N,它的左子树中所有的元素值...

2018-06-18 01:07:26 642

原创 [数据结构与算法]-二叉树的先序、中序、后序遍历的方法及其递归与非递归的实现(Java)

一.先序、中序、后续遍历简介对于列表结构的数据,我们很容易就能通过for循环遍历它。那么对于树形结构的数据,我们如何遍历它呢? 本文介绍有关二叉树的遍历方法,主要有三种——先序、中序、后续遍历。1.先序遍历先序遍历是最好理解的一种遍历方法,可以想象它为顺腾摸瓜,摸到一个节点就直接访问它。那么怎么摸呢?先摸根节点,再摸左节点,最后摸右节点。在摸左右节点的时候,如果子节点还有左或右节点,...

2018-06-15 22:35:26 576 3

空空如也

空空如也

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

TA关注的人

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