自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sql 参数自动替换

【代码】sql 参数自动替换。

2023-08-02 10:41:05 798

原创 Redis zset 完成历史搜索功能

需求:小程序的搜索框展示历史搜索的最近10条,且支持删除功能。

2023-08-02 10:35:33 260

原创 去掉回车和换行符

把Linux 等环境下的日志打印出来的sql 复制出来时包含换行符和回车符,无法直接在数据库客户端工具直接执行,需要去掉换行符和回车符。使用notepad++ 中的替换功能批量替换回车符和换行符。1.工具用notePad++

2023-07-19 11:43:13 1311

原创 在zuul 中基于RateLimter 限流

在开发中使用zuul 作为微服务的网关,并使用google 的RateLimter 实现限流功能。3.这个RateLimter 类是基于令牌桶算法实现限流的。1.实现ZuulFilter 过滤器。

2023-06-25 11:31:02 176

原创 webSocket 使用(spring boot)

2.websocket 方法实现。1.开启websocket。

2023-06-05 14:23:38 157

原创 excel 样式设置

【代码】excel 样式设置。

2023-06-02 16:43:48 138

原创 word 模板转pdf

实现:通过word 模板,设置word 标签,然后word 转pdf 导出。需求:导出表格数据到pdf。

2023-06-02 16:34:40 99

原创 spring中@Qualifier 注解使用

首先我们先来看@Autowired这个注解是怎么使用的?先准备好测试代码://service接口public interface TestService { public void testHello();}//service实现类 (暂时只有一个实现类)@Servicepublic class TestServiceImpl1 implements TestService { @Override public void testHello() {

2020-12-12 23:33:15 688 1

原创 StringBuilder 在多线程环境下不安全的原因

面试经常会问到,StringBuilder和StringBuffer的区别,大家都回答StringBuilder是线程不安全的,StringBuffer是线程安全的,那么StringBuilder到底是哪里不安全了呢?public class DemoUtil { public static void main(String[] args) throws Exception{ StringBuilder stringBuilder = new StringBuilder()..

2020-11-16 23:09:12 1482

原创 java中的进制转换

最近在做项目重构,C语言的项目重构成java项目,并且使用gradle构建成微服务项目放到云平台上运行。看到c代码中的进制转换,突然发现java中的进制转换都是已经封装好了。 Integer num =10; String binary = Integer.toBinaryString(num);//10进制转2进制 String octal = Integer.toOctalString(num);//10进制转8进制 String hex = Integer.toHexString(num)

2020-11-12 22:52:52 275

原创 springCloud常见面试题

1.什么是springCloud? spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署 2.springCloud的核心组件及其作用? 1)Eureka: 主要用于服务注册与发现,它既包含了服务端的组件也包含了客户端的组件,服务端和客户端都是java编写,因此Eureka主要适用通过...

2020-10-18 21:47:14 1625 1

原创 面试必问之JVM

一、jvm运行时的数据区域jvm运行时数据区域在jvm运行时的数据区域,方法区和堆是线程共享的区域,而java 栈,本地方法栈,程序计数器 这三部分是每个线程私有的空间。1.程序计数器程序计数器是很小的一块内存区域,可以看成是所执行的字节码文件的行号指示器,字节码解释器就是通过程序计数器的值选取下一条需要执行的指令。处理器切换线程时不会记录上个线程执行到了那个位置,为了每个线程能够切换到上次执行的位置,因此程序计数器是每个线程私有的。在执行Native方法时,由于Native方式不.

2020-10-18 17:15:48 134 1

原创 DispatcherServlet执行流程

spring MVC中的DispatcherServlet执行流程图如下:DispatcherServlet执行流程图1、用户发送请求至前端控制器DispatcherServlet。2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、 DispatcherServlet调用Hand.

2020-10-13 23:44:52 2603

原创 JVM 之java内存模型

一、硬件的效率与一致性 在计算机中处理器是用来处理任务的,而内存是用来存储数据的,计算器处理任务仅仅靠处理器是无法完成任务的,通常需要读取内存数据,处理器处理完后,再把处理结果保存到内存中。由于计算机的处理速度和存储速度有几个数量级的差距,所以计算机不得不加入一层速度更加接近处理器处理速度的高速缓存作为内存与处理器之间的缓冲。计算机把数据从内存复制到缓存中,使用处理器处理完毕后,再把处理后的数据同步到内存中。 但是在多个处理器中就会存在多个缓存,但是多个处理器又公用一个内存。...

2020-10-12 23:03:49 81

原创 JVM 类加载机制

一、类加载机制的描述什么是虚拟机的类加载机制呢? 作为一个java程序员,应该知道我们写的java程序是要编译成class文件的,也就是说我们写的需要jvm执行的信息都存放在class文件中,那么jvm怎么获取class文件中的信息呢?虚拟机把class中的信息加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是JVM的类加载机制。二、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括加载、验证、准备、解析、初始化、使用

2020-10-11 23:29:04 78

原创 java pdf 转word

使用java api 简单实现pdf文档转word文档功能。import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.util.PDFTextStripper;import java.io.*;public class PdfToWord { public static void main(String[] args) { String pdfPath = "D:\\Tools\\.

2020-10-03 17:00:05 1489

原创 委派模式详解

委派模式的基本作用就是负责任务的调用和分配,类似于代理模式,但是代理模式注重过程,而委派模式注重结果。委派模式在spring中应用的非常的多,现实生活中场景也是非常的多。比如程序员,当老板给项目经理下达任务后,项目经理再把任务分派给相应的员工。创建员工接口public interface IEmployee { public void doing(String commond);}创建员工类,员工Apublic class IEmployeeA impleme...

2020-09-14 22:46:09 319

原创 Docker 安装 Nginx

对于开发人员来说,要学习很多的容器、缓存、消息中间件、数据库等。比如:tomcat,jboss,websphere,redis,mongoDB,mq,mysql等。但是在自己项目中不一定都会用到,为了学习,经常会在自己的电脑上安装虚拟机,然后把这些工具安装到虚拟机上,再抽出时间来学习、研究。但是由于下载麻烦并且还会涉及版本的问题,以及下载源都是英文的,下载非常的不方便。现在我们会简单的使用docker,这些问题就迎刃而解了。今天我们就通过docker安装nginx来给大家举个例子吧。一、什...

2020-09-09 21:50:58 551

原创 详解TCP协议

一、TCP协议简介。TCP协议是面向连接的可靠的网络传输层协议。无论是哪一方向另一方发送消息之前都会通过3次握手,建立连接后才能够发送消息。而且消息发送方能够确认消息最终是否准确送达。tcp提供了可靠的字节流服务,通过字节码传输数据。二、TCP协议的三次握手。我们可以通过客户端和服务端的方式,通俗的理解三次握手,客户端需要向服务端发送消息,首先客户端和服务端进行三次握手,三次握手要保证无论是服务端还是客户端都要知道自己和对方的读写功能都是正常的,在这个基础上才能够进行数据传输。1.客户端向服

2020-09-03 00:21:15 242

原创 TCP的拆包和粘包

一、什么是TCP的拆包和粘包? 粘包:比如客户端发送了第一个数据包内容为abc,然后又发送了第二个数据包为bcd,服务端接收到了数据,内容是abcbcd,对于接收数据的服务端来说,是无法区分哪些内容是哪个数据包的,也无法区分客户端到底发送了几个数据包。当然了也许不止2个数据包粘在一块。这样的情况就称为粘包。粘包 拆包:比如客户端发送了2个数据包,服务端也收到了2个数据包,但是这2个数据包属于同一条消息,因为消息太大等原因,被拆成了几个数据包发送。这样的情况就称为...

2020-08-31 22:32:50 296

原创 docker 镜像的使用

从前面的文章可知,当我们运行一个web项目时需要在一个容器上运行,而当我们运行一个容器时需要一个镜像,如果我们本地没有镜像,那么docker就会自动从镜像仓库中下载,默认是从docker hub公共镜像资源库下载。一、查看本地主机镜像:docker imagesdocker images我的本地主机中只有ubuntu和busybox 2个镜像,ubuntu镜像是我自己下载的,busybox镜像是docker自动下载的。镜像列表的各个选项说明:REPOSITORY...

2020-08-29 23:32:21 480

原创 对象拷贝工具类BeanUtils

常用的对象拷贝方法有三种:1.通过set,get方法://创建user类public class User { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Stri

2020-08-27 23:44:16 1509

原创 docker容器的使用

首先我们看下我们本地的镜像。docker images只有一个busybox镜像,如果我们想要一个ubuntu镜像,通过ubuntu来启动一个容器,那么我们需要一个ubuntu镜像,但是我们本地并没有,怎么办呢?docker pull ubuntu //是不是非常的方便,一个pull命令就ok了ubuntu镜像获取成功,再次查看镜像。docker images可以看到我的本地镜像多了一个ubuntu镜像。我们现在使用ubuntu镜像启动一个容器...

2020-08-24 23:21:36 117

原创 Docker 入门之hello world

据说程序员写的第一个程序都是输出hello world,前2天在contos7中安装了docker,今天就输出个hello world 来入门吧。docker允许在容器内部使用docker run 运行应用程序,我们可以使用docker run 来输出hello world。一、检查下docker是否正确安装。docker info //如果安装正确就会有很多docker的信息,如下图:docker-info如果安装正确执行docker info 后就回输出如图很多信息,我.

2020-08-23 21:08:18 2766

原创 Docker的安装(centos7)

作为一个程序员,如果到现在还不知道Docker是什么的话,就有点太不像话了,我虽然很早就知道了,但是还没有系统的学习过,哈哈,今天开始自己安装学习下,有想学习的一起呀。一、Docker到底是什么呢?Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。二、Docker有什么用呢?Docker的启动速度相比传统的虚拟机要快很多,

2020-08-19 23:41:24 131

原创 java 8 中的日期时间API

java 8中除了Lambda表达式,Stream流等新特性,还有新的日期时间API,为什么会引入新的日期处理API呢?旧的日期处理类,线程不安全,而且对于时区处理起来非常的麻烦。因此java 8 在java.time包下增加了很多新的API,主要包括Local(本地,简化了日期时间的处理,没有时区的问题)和Zoned(时区,通过制定的时区处理日期时间)。具体怎么用,简单举几个例子吧。 //本地API LocalDateTime currentime =...

2020-08-17 22:52:58 117

原创 Java 8 Optional 类

作为一个程序员,经常遇到的问题就是空指针异常,为了避免这个异常,代码中会出现非常多的空值判断,也因此引入了大量的if else进行控制判断,java 8 中提供了Optional类来解决空指针的问题。那么Optional类有什么用呢?Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检

2020-08-16 22:30:04 108

原创 java 8 Stream简单用法

之前一直用的jdk6,现在项目用上jdk8了,听说了很多的java 8 的特性,骚操作很多,赶紧来学习一番。java 8中添加了一个新的抽象,叫做Stream流,据说可以极大提高程序员的生产力,使代码更加的简洁,干净,高效率。那么Stream到底是怎么使用的呢?java 8中集合提供了2个方法来生成Stream,Stream()为集合创建串行流,parallelStream()为集合创建并行流。流常用的方法有,forEach(),map(),filter(),limit(),sorted(),col

2020-08-16 18:40:29 100

原创 网络编程之五种I/O模型

在网络编程中有5中I/O模型,今天我们就来聊一聊这5中模型的原理和区别。1.阻塞I/O模型。阻塞I/O模型通信示意图如下:阻塞I/O模型通信示意图当用户调用了recvfrom这个系统调用后,内核就开始准备数据。对于网络I/O来说,很多时候数据还没有到达,这个时候要等足够的数据到来。而在这个时候,用户的进程会被阻塞,当数据准备好的时候,它就会将数据从内核拷贝到用户内存,然后返回结果,用户进程这时候才会解除阻塞的状态,重新运行起来。在阻塞I/O模型中,进程阻塞挂起不消耗cpu的资源,及时响应

2020-07-26 21:24:17 360

原创 Netty框架之Reactor线程模型

作为一个程序员,平时少不了要学习新的东西,最近学习Netty框架,Netty是由JBOSS提供的一个java开源框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,Netty简化和流线化了网络应用的编程开发过程。Netty就是基于Reactor线程模型开发的,我们今天来简单分析下:Reactor模型...

2020-07-19 19:35:15 328

原创 spring 中的JMS是什么?

程序员看源码是成长的必要条件,最近在看spring的源码,看到spring框架中有一个模块是JMS,那么JMS到底是什么呢?那我们分成几个步骤来了解下吧。1.什么是JMS?以及JMS的作用。JMS:Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用来在两个应用程序之间,或分布式系统中发送消息,进行异步通信。比如2个应用程序之间需要进行消息传递,我们可以使用JMS服务进行消息的传递,通过使用JMS使2个应用程序之间

2020-07-11 22:58:13 4938

原创 centos7 部署redis6

1.首先下载reids的安装包,我下载的是redis-6.0.4.tar.gz这个版本。2.在opt目录下创建redis文件夹, cd /opt makdir redis3.cd redis,进入reids目录后,把下载的redis安装包放到这个目录下,然后执行 tar –zxvf redis-6.0.4.tar.gz 生成redis-6.0.4文件夹,进入redis-6.0.4, cd redis-6.0.4 然后检查gcc的版本 gcc -v 如图所示,ce..

2020-06-13 18:20:50 4951

原创 设计模式之原型模式

原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。在原型模式中的复制分为2种,一种是浅克隆,一种是深克隆。我们先来看个浅克隆的例子吧。//创建订单表并实现克隆接口public class Order implements Cloneable{ private String orderNo; private OrderDetail orderDetail; public OrderDetail getOrderDetail() {

2020-06-09 21:54:14 141

原创 WebService 服务中MTOM 和Base64传输附件的区别

在于银联对接过程中需要获取附件,银联规范中传输附件的形式有2中,一种是MTOM,一种是Base64,那么这2种方式有什么区别呢?Base64:如果是做支付系统的话,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行传输。所以做支付系统的都会用到base64进行转码,那么base64到底有什么用呢? 其实系统之间的报文交互无非就是参数的传输,参数都是英文的当然没有什么问题,但是如果传输一个文件呢?或者是传输一个图片?base64就是通过使...

2020-06-06 20:47:03 511

原创 使用idea创建Springboot项目

基于本地的maven,使用idea工具创建一个简单的Springboot项目。点击 Create New Project ,创建一个新项目。选择spring initialier ,选择Next 下一步,Type 选择maven project,选择Next,点击web,选择spring web,再点击Next,然后点击idea的file --settings ,如图配置自己本地的maven点击ok,配置本地maven结束。创建HelloController

2020-05-28 00:12:01 148

原创 DB2修改表字段类型

DB2数据库修改表字段类型比较麻烦,搜索了几个方法也不好用,因此选择了一个最笨的方法,不过方法挺好使。就是把原来表结构和表数据导出,然后删除原表,重新建立新表,导入数据。1.连接数据库db2 connect to 库名 user 表名 using 密码2.导出表定义db2look -d 库名 -i 用户名 -w 密码 -e -nofed -t 表名 -o 表名.sql3.导出表数据db2 "export to 表名.del of del select * from 表名"4.删除要修改的

2020-05-10 19:29:33 3806

原创 flex 资源不存在

文件明明在,但是打开的时候,显示资源不存在。如下图:打开后报错,资源不存在,然后修改文件名称,能打开,原因是文件的引用出现了问题,文件的引用很难看到,因此可以新建一个文件,把打不开的文件使用其他文本工具打开,然后把内容复制到新建文件中,删除旧文件,把新文件重新命名,就ok了。...

2020-05-10 19:12:21 3428

原创 1084语法错误,rightparn应在rightbrace之前

使用flex,出现错误,1084语法错误,rightparn应在rightbrace之前。如图:错误原因:缺少括号,小括号或者是大括号。

2020-05-10 19:07:25 1931

原创 java自定义注解

java中自定义注解使用的4个注解1.@Target({}) 用于声明该注解使用在什么地方,例如:@Target({ElementType.FIELD})ElementType的参数及含义如下:TYPE:用于类、接口(包括注解类型)或enum声明CONSTRUCTOR:用于构造器的声明FIELD:用于域声明(包括enum实例)LOCAL_VARIABLE:用于局部变量声明ME...

2020-03-29 22:42:11 106

原创 java并发编程之Fork/Join框架

Fork/Join是java提供的一个用于并行执行任务的框架,通过把一个大的任务分成若干个小任务,最后再把每个小任务的结果汇总得到这个大任务的结果。举个例子,比如你要计算1+2+3+4+5+6的和,可以把这个任务分为2个小任务,小任务1负责计算1+2+3的和,小任务2负责计算4+5+6的和,然后再把这2个小任务的和汇总就是1+2+3+4+5+6的和了。我们通过一个运行流程图来看下吧。...

2020-01-05 22:09:43 232

空空如也

空空如也

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

TA关注的人

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