自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 CoreJava -- 02 -- Java静态代码块、构造代码块、普通代码块的区别以及加载顺序

一、静态代码块定义使用 static 进行修饰,定义在类中 (static {}),当类加载的时候执行,且只执行一次一个类中可以存在多个静态代码块,按照定义的先后顺序进行执行当调用类的静态变量或静态方法时,只会执行静态代码块中的代码当创建对象时,静态代码块优先于构造方法执行当创建对象时,静态代码块优先于构造代码块执行举例说明public class CodeBlockTest { static int i; static {

2020-06-22 21:30:38 202

原创 CoreJava -- 01 -- Java静态变量、成员变量、局部变量之间的区别

一、静态变量静态变量 (类变量) 使用 static 进行修饰,有默认值,定义在类里,方法体外,存储在方法区中方法区用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据Java 8 之前,方法区的具体实现为永久代;Java 8 开始,方法区的具体实现为元空间永久代使用的是虚拟机的内存;元空间使用的是本地内存静态变量在类加载的时候创建,直到该类被销毁前一直存在,是类级别的变量类的生命周期加载 --> 验证 --> 准备

2020-06-21 19:44:47 234

原创 Collection -- 01 -- Comparable和Comparator的区别

在 Java 中,我们可以使用 Comparable 或者 Comparator 来实现两个元素之间比较与排序,现在让我们一起来看看它们之间有什么区别一、ComparableComparable 是一个内部比较器,表示有能力比较的,其核心方法是 compareTo(T o)当一个类实现了 Comparable 接口时,除了要实现 compareTo(T o) 方法外,我们还要覆盖 equals(Object obj) 和 hashCode() 方法,这是遵守了 Object.hashCode

2020-06-21 15:55:03 235

原创 Java8 -- 07 -- IntStream类常用方法解析

在了解完流的常用方法后,我们接着来了解下数值流的常用方法在 Java8 中,引入了三个数值流 (原始类型流特化),分别是:IntStream、LongStream、DoubleStream,它们会将流中的元素分别特化为 int、long、double,从而避免了暗含的装箱成本映射到数值流mapToInt()将对象流映射为 int 数值流mapToDouble()将对象流映射为 double 数值流mapToLong()将对象流映射为 long 数值流转换

2020-06-21 11:28:46 631

原创 Java8 -- 06 -- Stream类常用方法解析

在了解完 Stream 的定义以及 Collectors 的常用方法之后,我们再来看看 Stream 类的常用方法Student.javapublic class Student { private String name; private int age; private double score; public Student(String name, int age, int score){ this.name = name;

2020-06-20 23:04:12 478

原创 Java8 -- 05 -- Collectors类常用方法解析

在使用流之前,我们先来了解下 Collectors 类,因为在使用流的过程中,会经常用到该类的相关方法Collectors 工具类提供了许多静态工具方法来创建收集器,比如将元素装进一个集合中、将元素分组、根据不同标准对元素进行汇总等,现在我们就来看看它具体使用Student.javapublic class Student { private String name; private int age; private double score; public

2020-06-20 17:36:22 1398 4

原创 Java8 -- 04 -- 引入Stream

在 Java8 中还引入了一个十分重要的成员,那就是流 (Stream),它允许我们使用声明性方式来处理数据集合,我们可以将它看作是一个遍历数据集的高级迭代器,流有以下特点:声明性:更简洁、更易读可复合:更灵活可并行:性能更好一、流的定义简短的定义就是:从支持数据处理操作的源中生成的元素序列元素序列跟集合一样,流提供了一个接口,用于访问特定元素类型的一组有序值与集合不同的是,流的目的在于表达计算,而集合的目的在于以特定的时间/空间复杂度存储和访问元素流

2020-06-20 13:33:23 281

原创 Java8 -- 03 -- lambda表达式

Java8 中的一个重要特性就是支持了 lambda 表达式,所谓 lambda 表达式可以简单地理解为传递匿名函数的一种方式,它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表,有以下几点特点:匿名lambda 表达式不想普通方法那样拥有一个明确的名称函数lambda 表达式不想普通方法那样属于某个特定的类,但和方法相同的是,lambda 表达式也有参数列表、函数主体、返回类型,以及可能还有一个可以抛出的异常列表传递lambda 表达式可以作为参

2020-06-19 22:02:28 358

原创 Java8 -- 02 -- 函数式接口

函数式接口,是指只定义了一个抽象方法的接口,它可以拥有多个非抽象方法,同时可以被隐式转换为 lambda 表达式一、函数式接口在 Java8 中,接口可以拥有默认方法 (即在类没有对方法进行实现时,其主体为方法提供默认实现的方法),哪怕有很多默认方法,只要一个接口只定义了一个抽象方法,它就仍然是一个函数式接口,此外我们将函数式接口的抽象方法的签名称为函数描述符举例说明// 下面哪些接口是函数式接口public interface Adder { int add(int a, in

2020-06-19 15:24:19 300

原创 Java8 -- 01 -- 行为参数化

Java8中出现了许多新特性,行为参数化就是其中之一,所谓行为参数化,就是可以帮助你处理频繁变更的需求的一种软件开发模式;简单来说,就是拿出一个代码块,把它准备好却不执行它,这个代码块以后可以被程序的其他部分调用,这就意味着我们可以推迟这个代码块的执行在软件开发中,一个众所周知的问题就是,不管你做什么,需求总是会在变。比如说,有个程序帮助农民了解自己的库存,第一天农民想知道库存中绿色的苹果有多少个,你写好了代码,但第二天,农民想知道自己的库存中有多少重量大于150克的,这次你又修改好了代码,之后农民又想知

2020-06-19 14:48:37 293

原创 Calculation -- 07 -- Java生成前N个斐波那契数列

常规方法private static int[] getFibonacci1(int n) { int[] fibonacci = new int[n]; if (n < 1) { return null; } if (n == 1) { fibonacci[0] = 1; return fibonacci; } if (n == 2) { fibonacci[0] = fibonac..

2020-06-19 13:46:05 290

原创 Calculation -- 06 -- Java遍历打印文件内容

常规方法private static String printFileContent1(String path) { InputStream is = null; StringBuilder builder = new StringBuilder(); try { is = new FileInputStream(path); int length; byte[] data = new byte[1<<10]; ..

2020-06-19 11:14:47 197

原创 Calculation -- 05 -- Java给定两个数字列表,返回所有的数对

常规方法private static List<int[]> getNumberPairs1(List<Integer> list1, List<Integer> list2) { List<int[]> list = new ArrayList<>(); for (Integer i : list1) { for (Integer j : list2) { list.add(new i..

2020-06-18 23:28:53 258

原创 Calculation -- 04 -- Java获取1到N之间的勾股数

常规方法private static List<double[]> getPythagoras1(int n) { List<double[]> list = new ArrayList<>(); for (int i = 1; i <= n; i++) { for (int j = i; j <= n; j++) { double sqrt = Math.sqrt(i * i + j * j);..

2020-06-18 11:09:09 369

原创 Calculation -- 03 -- Java分解质因数

分解质因数:把一个合数用质因数相乘的形式表示出来,分解质因数只针对合数 (如 30=2×3×5)每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数private static List<Integer> list = new ArrayList<>();private static boolean isPrime(int number) { if (number < 2) { return false; } fo

2020-06-17 22:50:38 187

原创 Calculation -- 02 -- Java筛选出1到N之间的质数

常规方法public static boolean isPrime(int number) { if (number < 2) { return false; } for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { return false; } } return true;}publi..

2020-06-17 20:57:39 225

原创 Calculation -- 01 -- Java判断一个数是否为质数

质数 (素数):在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数合数:在大于 1 的自然数中,除了能被 1 和它本身整除外,还能被其他数 (0 除外) 整除的数public static boolean isPrime(int number) { if (number < 2) { return false; } for (int i = 2; i <= Math.sqrt(number); i++) { if (numbe

2020-06-17 20:13:29 177

原创 Linux -- 08 -- Linux任务前后台切换

这里主要记录下 Linux 下前后任务切换的命令一、命令&将任务放入后台运行ctrl + z将正在执行的任务暂停,并放入后台jobs查看当前后台运行的所有任务jobs 命令可以查看到所有任务的编号,即为下面命令用到的 nfg %n将后台中某一任务切换到前台继续执行bg %n将后台中某一暂停的任务,变为继续执行kill %n杀死后台中某一任务二、参考资料Linux任务前后台的切换...

2020-06-17 10:35:31 220

原创 Linux -- 07 -- 编写Shell项目启动脚本

在日常开发中,我们经常会将项目打成 jar 包,部署到服务器上运行,但每次启动项目都要使用 jar -jar 命令,停止项目还需要先查找程序进程 pid,然后再进行 kill。如果只是部署一两次,手动操作没有什么多大问题,要是需要经常重新部署,每次输入命令也是挺麻烦的,因此我们可以通过编写 shell 脚本来解决这个问题一、编写 shell 脚本首先我们需要一个可运行的项目 jar 包,将其部署到服务器上 (springboot-0.0.1-SNAPSHOT.jar)然后我们再来编写 she

2020-06-16 23:12:37 834

原创 Linux -- 06 -- 查看并解决端口号占用情况

平常我们在服务器上运行项目或者是开启服务时,或多或少都会碰到过端口被占用的情况,现在让我们来看看如何解决这个问题方法一netstat -pan | grep 8080如上所示,29216 即为占用 8080 端口所在进程,因此我们将其 kill 掉就可以了kill -9 29216方法二lsof -i :8080kill -9 29216不过为了安全起见,我们可以通过 ps -ef | grep 29216 来查看该进程所在的程序,判断该程序是否有用

2020-06-16 23:07:07 261

原创 SpringBoot -- 04 -- ApplicationRunner和CommandLineRunner的区别

ApplicationRunner 接口用于在项目启动后做一些初始化的工作,与之相类似的还有一个接口 CommandLineRunner,两者作用相同,那他们之前又有什么区别呢?让我们来一起看看一、执行顺序不同MyApplicationRunner.java@Componentpublic class MyApplicationRunner implements ApplicationRunner { @Override public void run(Application

2020-06-16 10:46:49 879 1

原创 Zookeeper -- 01 -- Linux上源码包安装Zookeeper

一、下载 Nginx首先我们上官网,下载最新稳定的版本,这里我下载的是 zookeeper-3.4.14.tar.gz二、上传至 Linux 并解压第一种方式mkdir /usr/local/zookeepercd /usr/local/zookeeperrztar -zxvf zookeeper-3.4.14.tar.gzrm -rf zookeeper-3.4.14.tar.gz第二种方式mkdir /usr/local/zookeeper

2020-06-15 15:32:11 493

原创 Nginx -- 03 -- 正向代理、反向代理

Nginx 是时下最流行的 HTTP 服务器之一,同时也是一个反向代理服务器,提到反向代理,就不得不提到正向代理了,现在我们就来深入了解下这两个概念

2020-06-14 16:13:30 243

原创 Nginx -- 10 -- Nginx之ngx_http_stub_status_module模块

ngx_http_stub_status_module,该模块提供对基本状态信息的访问官方文档:Module ngx_http_stub_status_module默认情况下,该模块未被构建,可以使用 –with-http_stub_status_module 配置参数来启用该模块./configure --prefix=/usr/local/nginx/ --with-http_stub_status_modulemakemake install通过 nginx -V 命令,我们可以查看

2020-06-14 13:17:26 558

原创 Nginx -- 01 -- 网络代理

一、代理(Proxy)代理,也称为网络代理,是一种特殊的网络服务,允许一个网络终端通过这个服务与另一个网络终端进行非直接的链接二、代理服务器(Proxy Server)提供代理服务的计算机系统或其他类型的网络终端称为代理服务器三、代理流程客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源在获取目标服务器的...

2020-06-14 11:31:59 332

原创 Tomcat -- 09 -- Tomcat远程Debug

在日常的开发过程中,不管是在开发环境还是生产环境,Tomcat 应该是我们经常能用到的 Web 服务器,这里主要介绍下如何进行 Tomcat 远程 Debug在这之前,我们先来了解下一个概念:JDWP (Java Debug Wire Protocol),其定义了调式器 (debugger) 和被调试的 Java 虚拟机 (target vm) 之间的通信协议一、下载 Tomcat首先我们上官网下载最新的 Tomcat,这里我下载的是 apache-tomcat-9.0.36.tar.gz,将其

2020-06-13 14:19:48 385

转载 Tomcat -- 08 -- Tomcat启动时卡住 (Deploying web application directory) 解决方法

本文转载自:(亲测解决)Tomcat启动时卡在“ Deploying web application directory ”很久的解决方法在 Linux 上运行 Tomcat 时,有时候会碰到 Tomcat 启动卡住的问题 (卡在 “INFO: Deploying web application directory …” 这一步),需要等待好长时间才能启动完成在上网查找了相关资料后,解决方法如下cd /usr/local/java/jdk1.8/jre/lib/security (需要替换为自.

2020-06-13 13:41:08 1216

原创 Tomcat -- 07 -- Linux上部署war包

这里主要介绍下如何将项目打包成 war 包,并将其部署到服务器上进行访问用到的工具如下IntelliJ IDEA 2018.3.1 x64apache-tomcat-9.0.36apache-maven-3.5.2一、编写项目首先我们先创建一个 SpringBoot 项目,该项目里只有一个类,如下所示@RestControllerpublic class HelloController { @GetMapping(value = "/hello")

2020-06-13 13:03:14 318

原创 Tomcat -- 06 -- Linux上Tomcat多实例部署

当我们在一台服务器上想要部署多个 Tomcat 实例时,在不了解 Tomcat 的相关参数时,我们通常会下载多份 Tomcat 来安装使用,而实际情况下,多个 Tomcat 实例可以共用同一个安装目录,现在就让我们来看看 Tomcat 多实例部署的流程官方文档:introduction一、CATALINA_HOME 和 CATALINA_BASE 的区别在了解流程之前,我们先来了解下 CATALINA_HOME 和 CATALINA_BASE 的区别CATALINA_HOME表示

2020-06-12 21:49:52 469

原创 Tomcat -- 05 -- tomcat-users.xml配置文件详解

当我们在服务器上部署好 Tomcat 并运行之后,此时我们去访问 Tomcat 的默认页面,点击 Server Status、Manager App、Host Manager 时,会报 403 异常,这是由于我们没有配置 Tomcat 的用户名和密码导致的,我们可以通过 tomcat-users.xml 配置文件来进行设置官方文档 --> Manager App How-To官方文档 --> Host Manager App – Text Interface一、服务作用.

2020-06-12 11:10:09 1507

原创 Tomcat -- 04 -- logging.properties配置文件详解

logging.properties 是 Tomcat 的日志配置文件,主要用于配置日志的输出级别、输出路径、编码等,现在让我们来看看其中的具体配置官方文档 --> Logging in Tomcat一、日志级别SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)二、日志分类catalina.out即 Tomcat

2020-06-12 10:18:16 6941

原创 Tomcat -- 03 -- server.xml配置文件中各个端口的作用

在平常使用 Tomcat 的过程中,用来用去似乎就只用到了 8080 一个端口,而我们去查看 Tomcat 的配置文件 server.xml 时会发现,除了 8080 端口外,还存在好几个其他端口,这里就让我们来看看它们的具体作用8005负责监听关闭 Tomcat 的请求,当监听到关闭请求时,会向该端口发送关闭服务器的命令字符串 (即 “SHUTDOWN”)8080HTTP 服务连接器端口,负责建立 HTTP 连接,即我们平常通过浏览器访问部署在 Tomcat 上 Web 应用的端口

2020-06-11 22:41:36 526

微信公众号开发微信支付工具类

微信支付工具类,我自己的博客也用到了https://blog.csdn.net/goodbye_youth/article/details/80552265

2018-06-11

微信公众号开发消息加解密工具类

该工具类主要用于微信公众号消息的加解密,我自己的博客也用到了https://blog.csdn.net/goodbye_youth/article/details/80653132

2018-06-11

空空如也

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

TA关注的人

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