自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (4)
  • 收藏
  • 关注

原创 DOCKer

目录导读:导读:如果没有虚拟机的小伙伴(或者想用和我一样搭建虚拟机的小伙伴)可以参照下面的方式先下载安装好软件,课程中会用到在同级目录中我放了一个virtualbox.box,课程中也会用到一、下载安装vagrant 01 访问Vagrant官网 https://www.vagrantup.com/ 02 点击Download Windows,MacOS,Linux等 03 选择对应的版本 04 傻瓜式安装 05 命令行输入...

2021-03-05 15:33:47 179

原创 dubbo的SPI

package com.yunfei.dubbo.dubboprovider;import org.apache.dubbo.common.URL;import org.apache.dubbo.common.compiler.Compiler;import org.apache.dubbo.common.extension.ExtensionLoader;import org.apache.dubbo.rpc.Filter;import org.apache.dubbo.rpc.Protoc.

2021-03-05 15:27:25 180 2

原创 zk源码理解

zk源码理解:启动zk server肯定会加载main方法,加载配置文件zoo.cfg网络通信(socke io)包括: 1.选举(多个zk节点的数据通信) 2.客户端请求(应用程序要链接到zkserver) 3.数据同步(leader和follower之间的数据同步)执行main方法主要是开始一个thread:将zoo.cfg信息封装到QuorumPeer1.loadDataBase()//加载数据2.cnxnFactory.start();//跟通信有关,是一个工厂方法,暴.

2021-03-02 15:44:11 248

原创 JAVA中批量下载文件,将下载多个文件打包成zip文件下载。

/** * 文件下载* @param request* @param response* @param filePath 文件路径* @param filename 下载时文件名称*/ public static void downLoadFile(HttpServletRequest request,HttpServletResponse response,String filePath,String filename){ try { Fi..

2020-08-07 16:11:56 1391

原创 IPV6开启状态下,tomcat监听IPV4端口

2020-07-31 11:33:35 816

原创 AQS

目录AQS 是什么AQS 的两种功能AQS 的内部实现(node)Node 的组成释放锁以及添加线程对于队列的变化AQS 是什么在 Lock 中,用到了一个同步队列 AQS,全称 AbstractQueuedSynchronizer,它 是一个同步工具也是 Lock 用来实现线程同步的核心组件。如果你搞懂了 AQS,那 么 J.U.C 中绝大部分的工具都能轻松掌握。AQS 的两种功能从使用层面来说,AQS 的功能分为两种:独占和共享独占锁,每次只能有一个线...

2020-05-20 17:56:59 325

原创 远程通信协议

一个 http 请求的整个流程负责域名解析的 DNS 服务首先,用户访问一个域名,会经过 DNS 解析 DNS(Domain Name System),它和 HTTP 协议一样是位于应用层的协议,主要提供域名到 IP 的解析服务。我们其实不用域名也可以访问目标主机的服务,但是 IP 本身不是那么容易 记,所以使用域名进行替换使得用户更容易记住。加速静态内容访问速度的 CDN我这里只讲了比较简单的解析流程,在很多大型网站,会引入 CDN 来加速静态内容的访问, 这里简单给大家解释一下什么是..

2020-05-20 16:46:56 498

原创 synchronized 的应用

synchronized 有三种方式来加锁1. 修饰实例方法,作用于当前实例加锁,进入同步代码前 要获得当前实例的锁2. 静态方法,作用于当前类对象加锁,进入同步代码前要 获得当前类对象的锁3. 修饰代码块,指定加锁对象,对给定对象加锁,进入同 步代码库前要获得给定对象的锁。 不同的修饰类型,代表锁的控制粒度思考锁是如何存储的可以思考一下,要实现多线程的互斥特性,那这把锁需要 哪些因素?1. 锁需要有一个东西来表示,比如获得锁是什么状态、无 锁状态是什么状态2. 这个状态需要对.

2020-05-18 19:06:11 386

原创 java并发编程基础

线程的生命周期:线程有6种状态:(NEW,RUNNABLE,BLOCKED,WAITING,TIME_WAITING,TERMINATED)NEW:初始状态,线程被构建,但是还没有调用start方法RUNNABLE:运行状态,java把操作系统中的就绪和运行两种状态同意称为“运行中”BLOCKED:阻塞状态:表示线程进行等待状态:也就是因为某种原因放弃了CPU的使用权,阻塞分为几种情况: 等待阻塞:运行的线程执行wait()方法,jvm会把当前的线程放入等待队列 同步阻塞:运行的线...

2020-05-18 16:54:57 158

原创 JDK proxy 与 CGLIB proxy

CGLib 和 JDK 动态代理对比1.JDK 动态代理是实现了被代理对象的接口,CGLib 是继承了被代理对象。2.JDK 和 CGLib 都是在运行期生成字节码,JDK 是直接写 Class 字节码,CGLib 使用 ASM框架写 Class 字节码,Cglib 代理实现更复杂,生成代理类比 JDK 效率低。3.JDK 调用代理方法,是通过反射机制调用,CGLib 是通过 FastClass 机制直接调用方法,CGLib 执行效率更高4.cglib实现是实现MethodIntercepto

2020-05-14 16:30:30 243

原创 MySQL

MySQL执行流程1、查询缓存2、解析器生成解析树3、预处理再次生成解析树4、查询优化器5、查询执行计划6、查询执行引擎7、查询数据返回结果表结构对性能的影响1、冗余数据的处理(可以提高系统的整体查询性能<三范式>)1、每一列只能有一个值2、每一行可以被唯一的区分3、不包含其他表的已包含的非关键信息2、大表拆小表1、一般不会设计属性过多的表2、一般...

2020-04-08 21:38:54 218

原创 Java CountDownLatch应用

Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的await()方法都会阻塞,直到这个计数器的计数值被其他的线程减为0为止。...

2020-04-08 16:30:04 141

原创 ReentrantLock使用场景和实例

转载来源:使用场景:https://my.oschina.net/noahxiao/blog/101558实例:http://hyxw5890.iteye.com/blog/1578597从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。可重入概念若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入...

2020-04-08 16:03:52 2463 1

转载 elk 【一】 使用

https://www.jianshu.com/p/ceb82b2b1e9d

2020-04-02 15:18:01 132

原创 在Chrome浏览器中点击链接,打开IE浏览器,跳转到指定页面并传递参数

求:在Chrome浏览器中点击链接,打开IE浏览器,跳转到指定页面并传递参数过程:一些应用软件可以通过点击URL链接启动并执行操作(例如迅雷),这是如何做到的呢?主要是通过修改注册表,注册URL Protocol。可以增加属性必须生成到c盘阶段一:点击链接,打开IE浏览器,并传递单个参数新建alert.reg Windows Registry Ed...

2020-03-16 15:19:18 6989 11

原创 关于Oracle数据库同义词的讲解

、定义同义词顾名思义,是数据库方案对象的一个别名。这里的数据库方案对象指表、视图、序列、存储过程、包等。二、同义词的好处1、不占内存空间,节省大量的数据库空间2、简化了数据库对象的访问3、提高了数据库对象访问的安全性4、扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接三、创建同义词语法crea...

2019-11-04 11:11:29 356

原创 Oracle按指定字段值排序

需求:对字段里边的值,按照值的内容进行排序方法一使用decode函数处理,将值转变成统一的样式,这在按asc/desc排序select t.* from demo t order by decode(t.num,-1,99,t.num) asc;方法二使用case … when … 处理,当时,让其变大,与方法一同理select t.* from demo t orde...

2019-09-29 11:36:53 2418

原创 oracle导入excel和txt数据

目录1.准备数据:在excel中构造出需要的数据2.将excel中的数据另存为文本文件(有制表符分隔的)​3.将新保存到文本文件中的数据导入到pl*sql中4.在configuration中进行如下配置(格式可能不对,需要自己调整)5.点击data to oracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联(中文软件叫到oracle数据)...

2019-09-23 19:22:21 554 1

原创 前后台数据传输压缩(前后台都压缩)

目录传回数据的压缩Response:传入数据的压缩request(前台后台统一压缩方式后台进行解压):配置压缩数据生效:传回数据的压缩Response:package com.pds.report.core.config.mvc;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;im...

2019-09-20 11:49:09 3900

转载 js中多个数字运算后值不对

​​​​​​​​​​​1.乘法函数2.除法函数3.加法函数4.减法函数1.乘法函数 /**乘法函数,用来得到精确的乘法结果*说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。*调用:accMul(arg1,arg2)*返回值:arg1乘以arg2的精确结果*/function accMul(a...

2019-09-19 15:33:08 765

原创 bigDecimal的加减乘除,小数位保留,小数位截取

首先是bigdecimal的初始化 BigDecimal num1 = new BigDecimal(0.005); BigDecimal num2 = new BigDecimal(1000000); BigDecimal num3 = new BigDecimal(-1000000); //尽量用字符串的形式初始化 ...

2019-09-10 18:00:53 18620

原创 数据库中的删除有多少种方式,分别是什么,各有什么不同?

1.DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。2.TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。TRUNCATE 只能对TABLE;DELETE可以是table和view...

2019-08-14 15:22:05 1177

原创 mybatis中"![CDATA[]]"的作用

在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决。<![CDATA[ ]]> 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。如果文本包含了很多的"<"字符 <=和"&"字符...

2019-08-13 15:47:56 387

原创 idea创建git分支

选择根据哪个分支去创建新的分支,

2019-08-09 14:30:47 328

原创 新建Git仓库并添加本地项目

目录1.在自己的GitHub上创建一个仓库。2.打开命令行工具,切换到需要上传的工程目录下。3.初始化当前目录作为Git仓库4.添加目录下的文件到本地仓库。5.提交staged的文件6.从GitHub上拷贝之前新建的仓库地址。7.使用命令行添加远程仓库的地址。8.Push本地仓库到远程GitHub。1.在自己的GitHub上创建一个仓库。2.打开命令...

2019-08-09 12:01:41 150

原创 jenkins项目构建设置

1

2019-07-25 18:25:00 173

原创 Jenkins安装与配置

目录1.什么是Jenkins2.Jenkins安装3.Jekins系统设置4.Jekins工具设置5.Jekins插件安装1.什么是JenkinsJenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用...

2019-07-25 15:56:54 164

转载 IOUtils.closeQuietly:在finally中关闭流时不需要再catch一遍IOException

在使用 stream 的时,往往要 try catch IOException。eric教导我要把流的关闭放到 finally 中去写,并且在 close 之前要判断一下是否为 null。但是 stream.close() 也会 throw IOException,这就导致在 finally 中 也需要 try catch 一下,于是代码就很长。如下: byte[] data = new b...

2019-07-23 18:38:28 2737

原创 单例模式获取配置文件.properties

package com.pds.WebConfig;/** * <p>Title: </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2008</p> * * <p>Company: </p> * * @a...

2019-07-23 17:55:28 624

原创 默认加载全部配置文件*.properties

package com.pds.PropertiesLoad;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;import org.springframework.beans.fac...

2019-07-23 17:52:39 458

原创 (Spring中资源的加载Resource)默认加载全部配置文件*.properties

默认加载全部的配置文件(完整代码路径:https://blog.csdn.net/zhaoyunfei1/article/details/97015274)Spring中资源的加载是定义在ResourceLoader接口中的,它跟前面提到的抽象资源的关系如下:ResourceLoader的源码package org.springframework.core.io;impo...

2019-07-23 15:11:20 2696

原创 @NotNull :@NotEmpty @NotBlank :@NonNull:@Nullable 的区别

@NotNull : 用在基本类 型上 不能为null 但可以为空字符串 @NotEmpty : 用在集合类上 不能为空 并且长度必须大于0 @NotBlank :只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 @NonNull:在方法或构造函数的参数上使用,生成一个空值检查语句 @Nullable 表示定义的参数可以为空....

2019-07-23 10:57:16 2127

原创 Nginx整合tomcat笔记

Nginx概述与安装 Nginx概述 Nginx是一款高性能的、轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上Ngin...

2019-07-17 21:13:40 376

原创 Linux三大常见软件安装(java,tomcat,mysql)

一\安装jdk1\下载linux对应版本的jdk安装包 jdk-8u131-linux-x64.tar.gz2\把安装包上传到linux服务器上 \root3\首先确认一下你的linux服务器上面是否有安装过jdk rpm -qa|grep java rpm -qa|grep jdk 如果查询到已经安装过jdk就卸载java rpm -e --n...

2019-07-17 20:59:13 151

原创 Oracle中ROWNUM伪列和ROWID伪列的用法与区别

做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两个伪列的用法与原理,同样还是以scott用户的emp表为例;一、ROWNUM伪列ROWNUM伪列是Oracle首先进行查询获取到结果集之后在加上去的一个伪列,这个伪列对符合条件的结果添加一个从...

2019-07-17 19:34:37 158

原创 将一个数组分成2个数组,使得2个数组的差值最小

/** * 用java写个程序,将一个数组分成2个数组,使得2个数组的差值最小 * 思路是: 1).先求出数组的总和sum, sum/2=mid 2).然后将数组的元素跟mid比较,取出跟mid最接近的元素,放在第一个小数组里,然后在原来数组删除刚刚被取出的元素,更新原来数组 3).接着再取出离mid最近的元素,放在第二个小数组,在原数组中删...

2019-07-16 16:56:36 11149 5

原创 Collections.unmodifiableList方法的使用与场景

在公司接触到Collections.unmodifiableList(List<? extends T> list)) 觉得用法挺特殊的,所以学习了下,简单而言,看名字就知道,将参数中的List返回一个不可修改的List.觉得以下这篇文章写得很好,说 明了它的应用场景。-------------------------------------------------------...

2019-07-11 15:02:17 320

原创 批量删除微博脚本

浏览器F12打开 开发者工具执行如下脚本// ==UserScript==// @name Weibored.js// @namespace https://vito.sdf.org// @version 0.2.0// @description 删除所有微博// @author yunfei.zhao// @match ...

2019-07-11 10:37:49 2329

原创 如何实现一个流控程序,用于控制请求的调用次数?

package com.pds.ThreadPool;import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;import java.util.concurr...

2019-07-10 12:05:11 540

原创 如何使用阻塞队列实现一个生产者和消费者模型

如何使用阻塞队列实现一个生产者和消费者模型?请写代码使用基于数组的阻塞队列,有限次取水果和放水果package com.tom.jdk5.concurrent.collections;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/*******...

2019-07-10 11:57:31 566

【笔记】远程通信协议.pdf

在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要 通信。这个通信的过程一定会涉及到通信协议相关的知识点,当然大家也可能知道一些,但 是我会尽可能的把通信这一块的内容串起来,加深大家的理解。 我们每天都在用浏览器访问各种网站,作为用户来说,只需要需要输入一个网址并且正确跳 转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程。所以我想通过一个 http 请求的整个流程来进行讲解通信的知识

2020-05-20

jenkins的war包与操作手册.zip

Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中 解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。 Jenkins 官方地址为:http://jenkins-ci.org/

2019-07-25

mysql-java8-tomcat8

一\安装jdk 1\下载linux对应版本的jdk安装包 jdk-8u131-linux-x64.tar.gz 2\把安装包上传到linux服务器上 \root 3\首先确认一下你的linux服务器上面是否有安装过jdk rpm -qa|grep java rpm -qa|grep jdk 如果查询到已经安装过jdk就卸载 java rpm -e --nodeps 要卸载的文件名称 4\解压缩jdk安装 tar -xvf jdk-8u131-linux-x64.tar.gz -C /usr/local/ 5\进入到解压缩文件目录 传的 cd /usr/local 6\修改jdk解压缩后的目录mingc mv jdk1.8.0_131/ jdk rpm 7\配置环境变量 vi /etc/profile JAVA_HOME=/usr/local/jdk CLASSPATH=$JAVA_HOME/lib:. PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH 8\让环境变量立刻生效 source /etc/profile 9\测试java是否安装成功 java -version 二\mysql安装 cd 1\下载安装包,上传到服务器 mysql-5.7.20-1.el7.x86_64.tar.gz 2\首先确认一下你的linux服务器上面是否有安装过mysql rpm -qa|grep mariadb rpm -qa|grep mysql 如果查询到已经安装过jdk就卸载 rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 3\解压缩安装包 tar -xvf mysql-5.7.20-1.el7.x86_64.tar.gz -C /usr/local/ 4\进入到解压缩目录 cd /usr/local/mysql 5\安装MySQL需要的类库包 perl \net-tools yum install perl net-tools -y 6\安装mysql的安装包 --千万要注意安装顺序 rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm 7\初始化MySQL数据库 ca mysqld --initialize 8\查看root密码 iFngLyRoE5+x cat /var/log/mysqld.log 在这个文件里面有root的临时密码 9\更改mysql数据库目录的所属主和所属组权限 chown mysql:mysql /var/lib/mysql -R 10\启动MySQL systemctl start mysqld systemctl stop mysqld //停止 systemctl restart mysqld //重启 systemctl enable mysqld //设定mysql服务随着系统启动自动启动 11\登录MySQL数据库 mysql -u root -p 输入密码: 出现mysql> //表示登录成功 12\修改root的密码 set password=password('123'); 13\修改MySQL数据库打开root账号远程连接 mysql -uroot -p mysql> update mysql.user set host='%' where user='root'; mysql> flush privileges; mysql>exit 14\配置防火墙规则 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload 三\安装tomcat 1\上传tomcat安装包 apache-tomcat-8.5.15.tar.gz 2\解压缩Tomcat安装包 tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local/ 3\进入到解压缩目录,修改tomcat的解压缩目录名称 cd /usr/local mv apache-tomcat-8.5.15/ tomcat 4\进入tomcat的启动目录 cd tomcat/bin 5\启动tomcat ./startup.sh 6\查看端口号是否监听 netstat -antp|grep 8080 7\增加tomcat的防火墙规则 firewall -cmd --zone=public --add-port=8080/tcp --permanent firewall -cmd --reload 8\配置管理控制台界面登录 (1)修改 tomcat/conf/tomcat-users.xml 在节点上增加如下配置: <role rolename="manager-gui"/> <user username="tomcat" password="123" roles="manager-gui"/> (2)修改 tomcat/wepapps/manage/META-INF/context.xml 把里面的内容注释: &lt;!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+|::1|0:0:0:0:0:0:0:1" />--&gt; (3)关闭tomcat tomcat/bin ./shutdown.sh (4)启动 ./startup.sh

2019-07-17

java_JFreeChart

java的JFreeChart文档和现在流行的ECharts图标生成文档

2018-03-24

空空如也

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

TA关注的人

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