自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 【惨遭被裁】985毕业,依然过不好这一生

看到标题,可能很多读者朋友恐怕又要骂我了,985这个特殊的字眼也确实异常晃眼,实际上现在985,211也越来越多,它能代表你能够进入到更高的平台,拿到“高级工厂”的入场券,但并不意味着你会成为赢家,或者说也不代表着你会站在金字塔的顶端,因为顶端往往是少数人,位置有限,太挤了总会掉下来,而我就是被挤下来的那一拨人中的一个。985毕业,依然过不好这一生?当我想写这篇文章的时候,实际上内心我也给自己打上了一个大大的疑问号,这句话我是不确定的。对于我的人生来说,同许多打工人一样,并非那么顺利,也因此让我迷茫

2021-07-27 16:14:05 213

原创 Java 泛型的学习

虽然写了一段时间的 Java 代码,但是一直以来只要看到泛型,还是会摸不着头脑选择性放弃。但是今天在看公司大佬的代码发现很多地方会用到泛型,所以今天就整理一下我理解的泛型。什么是泛型泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。 泛型的定义主要有以下两种: 1⃣️ 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。 2⃣

2021-07-27 14:13:40 133

原创 什么是Spring的AOP特性?

我工作遇到的第一个问题就是用 Spring AOP 解决的。Spring AOP 真正用起来的时候很少,但是无一不是解决重要问题。用一种轻松的手法解决了重要的问题,Spring AOP 做到了。Spring AOP 的登场在工作中经常会遇到维护老 WEB 项目的任务,老项目有很多问题,其中一个就是没有日志系统,出现问题,排查困难。当时我的任务就是给老项目增加日志。按理来说,增加日志不难,增加 Log4j 依赖,填好配置。在每个 Controller 类和 Server 类里创建日志对象,然后在关键位

2021-07-27 14:10:41 141

原创 深入理解 Java 中的 final 关键字

前言对于Java中的 final 关键字,我们首先可以从字面意思上去理解,百度翻译显示如下:final 英文意思表示是最后的,不可更改的。那么对应在 Java 中也是表达这样的意思,可以用 final 关键字修饰变量、方法和类。不管是用来修饰什么,其本意都是指 “它是无法更改的”,这是我们需要牢记的,为什么要无法更改?无非就是设计所需或者能提高效率,牢记 final 的不可变的设计理念后再来了解 final 关键字的用法,便会顺其自然了。正文修饰变量首先我们看一个例子

2021-07-27 14:08:54 202

原创 2021,你还在写“赤裸裸”的API吗?

前言新的项目要开始了,由于项目中涉及到和第三方厂商的接口对接,所有对接口的安全性有要求,下来我们看看如何写好一个规范的接口如何保证接口传输中数据安全保证数据安全,大家首先能想到的就是对内容进行加密。加密的话主要有两种方式,对称加密和非对称加密。1、对称加密我们先一起看一张图 可以看到,上图中采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加

2021-07-27 14:01:07 135

原创 Java虚拟机之CMS垃圾收集器

1. 前言Concurrent Mark Sweep (CMS) 收集器是hotspot虚拟机中一款低延迟的并发型垃圾收集器。CMS垃圾收集器的关注点是:尽可能缩短垃圾收集时用户线程的停顿时间,停顿时间越短(低延迟)就是越适合与用户交互的程序,良好的响应速度能提升用户体验。CMS 垃圾收集器 以获取最短回收停顿时间为目标,采用“标记-清除”算法,分 4 大步进行垃圾收集,其中初始标记和重新标记会 STW ,多数应用于互联网站或者 B/S 系统的服务器端上,JDK9 被标记弃用,JDK14 被删除,详

2021-07-27 13:57:29 492

原创 看完这篇文章,你也可以手写MyBatis部分源码(JDBC)

一、持久化机制持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。就是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 而在 Java中,数据库存取技术只能通过 JDBC 来访问数据库。JDBC 访问数据库的形式主要有两种:直接使用 JDBC 的 API 去访问数据库服务器 (MySQL...

2021-07-27 13:49:06 95

原创 秒懂 Java 的三种代理模式

前言代理(Proxy)模式是一种结构型设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需要修改,可以通过代理的方式来扩展该方法。代理模式大致有三种角色:Real Subject:真实类,也就是被代理类、委托类。用来真正完成业务服务功能; Proxy:代理类,将自身的请求用 Real Subject 对应

2021-07-27 13:42:11 72

原创 还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!

SpringBoot实战电商项目mall(50k+star)地址:github.com/macrozheng/…摘要之前写过一篇文章《再见 Jenkins !几行脚本搞定自动化部署,这款神器有点厉害!》 ,讲的是使用Gogs+Drone来实现自动化部署。最近发现Gitlab的CI/CD功能也能实现自动化部署,用起来也挺简单!如果你使用的是Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。本文还是以SpringBoot的自动化部署为例,实践下Gitlab的CI/DI功能,希望对大家有所帮.

2021-07-27 13:39:02 175

原创 面试官:java for循环,你知道几种写法?

这是一道初级题目,但是中级的朋友,甚至高级的朋友也未必能回答上来。背景J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单的方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为fo...

2021-07-26 14:55:05 266

原创 19个小细节,让你提升Java代码的运行效率

1.使用局部变量可避免在堆上分配由于堆资源是多线程共享的,是垃圾回收器工作的主要区域,过多的对象会造成 GC 压力。可以通过局部变量的方式,将变量在栈上分配。这种方式变量会随着方法执行的完毕而销毁,能够减轻 GC 的压力。2.削弱变量的作用范围注意变量的作用范围,尽量减少对象的创建。如下面的代码,变量 a 每次进入方法都会创建,可以将它移动到 if 语句内部。3.使用类名方式访问静态变量有的同学习惯使用对象访问静态变量,这种方式多了一步寻址操作,需要先找到变量对应的类,再找到类对...

2021-07-26 14:50:19 615

原创 每日三道面试题,成就更好的自我

1. 昨天你讲到创建线程后使用start方法去调用线程,为什么run方法不行呢?有什么区别?这道题也是非常经典的一道题,虽然难度不大,但是突然忘了,也就答不上来了。我们先来看看代码吧。public class ThreadDemo { public static void main(String[] args) { MyThread myThread = new MyThread(); MyThread myThead2 = new MyThrea

2021-07-26 14:45:56 60

原创 Java 提效神器 Stream 的冷门技巧

Stream使用这个方法创建一个 Stream 对象。new ArrayList<>().stream()Filter过滤器,里面传递一个函数,这个函数的返回结果如果为 true 则保留这个元素,否则的话丢弃这个元素。 stringCollection .stream() .filter((s) -> s.startsWith("a")) .for...

2021-07-26 14:43:55 188

原创 Java 10的10个新特性,将彻底改变你写代码的方式!

Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了。。这时候我真想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK 10……刚学Java的同学是不是感觉一脸蒙?!!!Java 更新越来越快,我们做技术的也要跟上步伐,不然总会慢别人一拍,这新东西从国外到国内应用一般要好几年的时间,如果我们提前了解并应用这些新技术对自己不是坏事。Java 10的新特性说了这么多,看Java 10都会有哪些特性来改变我们写代..

2021-07-26 14:41:43 89

原创 初学者必看的JavaScript 七大点!

这里有一些 Javascript初学者应该知道的技巧和陷阱。如果你已经是专家了,顺便温习一下。Javascript也只不过是一种编程语言。怎么可能出错嘛?1. 你有没有尝试给一组数字排序?Javascript 的sort()函数在默认情况下使用字母数字(字符串Unicode码点)排序。所以[1,2,5,10].sort() 会输出 [1, 10, 2, 5].要正确的排序一个数组, 你可以用 [1,2,5,10].sort((a, b) => a — b)很简单的解决方案,

2021-07-26 14:40:34 50

原创 Java:文件操作

本文内容:文件操作 文件过滤器文件操作:Java中对文件和目录的操作,通常通过File类来操作。File类有几个构造函数,常用的是下面三个:File(String pathname):根据路径名创建一个对象File(String parent, String child):根据路径名跟子路径名创建一个对象(就是第一个的拆分版本)File(File parent, String child):跟第二个相同功能,不过这里第一个可以给一个File对象。当有了一个File对象之后,就

2021-07-26 14:37:53 63

原创 PS教程:打造贱兮兮的的doge表情~

欢迎留言评论哦~— END —

2021-07-26 14:35:45 149

原创 MySQL 查询优化选择最佳索引

本教程关注的重点是 MySQL、MariaDB 和 PerconaDB 数据库。这些信息也可能与其他数据库供应商有关,但在某些情况下可能不会。我应该为我的 SQL 查询创建哪些索引?根据通常的经验规则,当尝试优化你的 SQL 查询时,你可以依照以下步骤构建复合索引:首先列出你的查询中所有使用的表,并为查询中的每个子查询创建一个独立的列表。如果你有一个包含 2 个 SELECT 子查询的 SELECT 查询,那你应该建立 3 个列表,每个列表包含引用在其中的表。 在此过程结束时,你可能会在每个查

2021-07-26 14:33:02 501

原创 MySQL中的存储过程详解

什么是存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;有哪些特性有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;函数的普遍特性:模块化,封装,代码复用;速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省

2021-07-26 14:31:15 74

空空如也

空空如也

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

TA关注的人

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