自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 FeignClient支持运行时动态指定URL

FeignClient支持运行时动态指定URL

2023-12-28 14:45:10 2974

原创 Linux系统搭建FTP服务器

linux 系统 ftp服务器搭建全过程

2023-03-13 18:18:15 1574

原创 Redis与Spring Cache使用简介

展示了Spring Cache与Redis的使用

2023-01-16 15:08:14 1503 1

原创 Spring事务实践

spring 事务 传播机制

2023-01-11 18:15:39 456

原创 spring-amqp

对spring amqp的一些常用的只是做了简单的介绍如容器、消息转换等

2022-05-13 15:11:42 679

原创 com.rabbitmq:amqp-client

com.rabbitmq:amqp-client开发包的相关说明,涉及到AMQP协议、队列等函数、队列结构、队列设计等内容

2022-04-20 17:33:07 5239

原创 Redis 与 Java API 学习与应用(一)

Redis基本介绍Redis简介高性能键值缓存服务器memcached也经常被拿来与Redis进行比较:这两者都可用于存储键值映射,性能也相差无几,但是Redis能够自动以两种不同的方式将数据写入硬盘,并且Redis除了能存储普通的字符串键 之外,还可以存储其他4种数据结构,而memcached只能存储普通的字符串键。这些不同之处使得Redis可以用于解决更为广泛的问题,并且既可以用作主数据库( primary database)使用,又可以作为其他存储系统的 辅助数据库( auxiliary da

2020-11-24 00:07:41 157

原创 Spring Batch学习与实践(三)

扩展与并行处理多线程Step并行Step远程分块分区健壮的Job重复执行重试

2020-11-22 13:44:08 928 2

原创 Spring Batch学习与实践(二)

批处理通过Tasklet完成具体的任务,Chunk类型的Tasklet定义了标准的读、处理、写步骤。

2020-11-07 15:51:21 961

原创 Spring Batch学习与实践(一)

简单介绍核心架构如下所示为Spring Batch的三层架构:应用层、核心层、基础架构层。应用层:包含所有批处理作业,通过Spring框架管理程序员自定义的代码; 核心层:包含Spring Batch启动和控制所需的核心类,如:JobLauncher、Job、Step等。 基础架构层:提供通用的读、写和服务处理。应用场景基本概念Job配置Step配置ItemReader、ItemWriter与ItemProcessorStep FlowJob健壮性并行.

2020-11-01 22:36:09 948

原创 Easy Rules core包 规则引擎

概述:1、依赖:可以只引入core包即可使用规则引擎;以引入easy-rules-support。支持XOR logic、json描述规则、yaml描述规则。如果要使用SpEL(Spring Expression Language)、MVEL(表达式解析器)则还需要引入easy-rules-spel[4.1.0开始引入]、easy-rules-mvel <dependency> <groupId>org.jeasy</groupId>

2020-09-04 00:03:24 1502

原创 责任链模式-优化系统元数据特殊处理

最近在工作中,涉及到元数据的特殊处理,由于系统需要兼容多级经销商和多组织模式;对于不同的租户类型、不同的业务控制方式、不同的登录用户,同一模块的元数据存在差异。注:此处的【元数据】用于构建前端界面的基本元素,前端调用服务获取元数据后构建界面...

2020-08-25 18:27:14 199

原创 数据库版本管理:springboot + flyway 、shell脚本维护

最近在公司项目中,随着产品的迭代,需要维护数据库表结构、数据升级等问题。最初采用了平台数据库版本维护框架,需要写shell脚本,然后配置rundeck节点实现数据库一键升级。简单的介绍下shell脚本编写思路:首先数据库中,维护一张表history记录数据库版本,类似于flyway的flyway_schema_history表。在history中记录几个关键数据:ex、git-commit-id,DEMO连接:https://github.com/wanghowie/flywaydemo.gi

2020-08-14 00:37:03 742

原创 JAVA程序性能优化--笔记2、设计模式:单例与代理

单例模式单例模式是设计模式中使用最为普遍的模式之一。它是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。Java语言中,这样的行为能带来两大好处:(1)对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。(2)由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间。最简单的单例实现:public class Singleton { private Sin...

2020-07-23 20:10:30 137

原创 JAVA程序性能优化--笔记1、Java性能调优的相关知识概述

程序的性能通过以下几个方面来表现:执行速度:程序的反映是否迅速,响应时间是否足够短。 内存分配:内存分配是否合理,是否过多地消耗内存或者存在泄漏。 启动时间:程序从运行到可以正常处理业务需要花费多长时间。 负载承受能力:当系统压力上升时,系统的执行速度、响应时间的上升曲线是否平缓。可以用于定量评测的性能指标有:执行时间:一段代码从开始运行到运行结束,所使用的时间。 CPU时间:函数或者线程占用CPU的时间。 内存分配:程序在运行时占用的内存空间。 磁盘吞吐量:描述I/O的使用情.

2020-07-10 13:59:16 149

原创 SPRING实战(3)、超媒体与Spring HATEOAS之一

超媒体作为应用状态引擎(Hypermedia as the Engine of Application State,HATEOAS)是一种创建自描述API的方式。API所返回的资源中会包含相关资源的链接,客户端只需要了解最少的API URL信息就能导航整个API。如果API启用了超媒体功能,那么API将会描述自己的URL,从而减轻客户端对其进行硬编码的痛苦。这种特殊风格的HATEOAS被称为HAL(超文本应用语言,Hypertext Application Language),这是一种在JSON响应中嵌入超

2020-06-23 23:00:01 1008

原创 Linux学习-1、系统目录结构

目录的解释: /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 /dev : dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。 /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。 /home: 用户的主目录,在Linux中,每个用户..

2020-06-18 22:45:32 125

原创 SPRING实战(2)、Spring基础之配置

在Spring的XML方式和基于Java的配置中,这两种类型的配置通常会在同一个地方显示声明。在基于Java的配置中,带有@Bean注解的方法一会同事初始化话bean并立即为它的属性设置值。Spring的环境抽象是各种配置属性的一站式服务。它抽取了原始的属性,这样需要这些属性的bean就可以从Spring本身中获取了。Spring环境会拉取多个属性源,包括: JVM系统属性; 操作系统环境变量; 命令行参数; 应用属性配置文件。Spring Boot自动配置的bean都可以通过Spring环境提取的属性进行

2020-06-16 21:19:59 154

原创 SPRING实战(1)、Spring基础

Spring的核心是提供了一个 容器(container),通常称为Spring应用上下文(Spring application context),它们会创建和管理应用组件。将bean装配在一起的行为是通过一种基于 依赖注入(dependency injection,DI) 的模式实现的。Spring通过配置文件或者基于java配置将bean装配在一起。@Configuration注解会告知Spring这是一个配置类,会为Spring应用上下文提供bean。这个配置类的方法使用@Bean注解进行了标注,

2020-06-11 21:00:58 241

原创 Java并发编程学习-日记12、Redis 和 Java

Redis的配置项清单如下:(1)port:端口配置项,查看和设置Redis监听端口,默认端口为6379。(2)bind:主机地址配置项,查看和绑定的主机地址,默认地址的值为127.0.0.1。(3)timeout:连接空闲多长要关闭连接,表示客户端闲置一段时间后,要关闭连接。如果指定为0,表示时长不限制。这个选项的默认值为0,表示默认不限制连接的空闲时长。(4)dbfilename:指定保存缓存数据库的本地文件名,默认值为dump.rdb。(5)dir:指定保存缓存数据的本地文件所存放

2020-06-01 00:05:05 201

原创 Java并发编程学习-日记11、ZooKeeper实现分布式命名服务器

命名服务是为系统中的资源提供标识能力。ZooKeeper的命名服务主要是利用ZooKeeper节点的树形分层结构和子节点的顺序维护能力,来为分布式系统中的资源命名。 分布式命名服务器应用场景:分布式API目录:为分布式系统中各种API接口服务的名称、链接地址,提供类似JNDI(Java命名和目录接口)中的文件系统的功能。借助于ZooKeeper的树形分层结构就能提供分布式的API调用功能。著名的Dubbo分布式框架就是应用了ZooKeeper的分布式的JNDI功能。在Dubbo中,使用ZooKeepe.

2020-05-31 23:40:46 283

原创 Java并发编程学习-日记10、ZooKeeper

连接假死什么是连接假死呢?如果底层的TCP连接已经断开,但是服务器端并没有正常地关闭套接字,服务器端认为这条TCP连接仍然是存在。连接假死的具体表现如下:(1)在服务器端,会有一些处于TCP_ESTABLISHED状态的“正常”连接。(2)但在客户端,TCP客户端已经显示连接已经断开。(3)客户端此时虽然可以进行断线重连操作,但是上一次的连接状态依然被服务器端认为有效,并且服务器端的资源得不到正确释放,包括套接字上下文以及接收/发送缓冲区。连接假死通常是由以下多个原因造

2020-05-24 16:18:23 241

原创 Java并发编程学习-日记9、JSON 与 Protobuf

1、JSON:Jackson开源库的优点是:所依赖的jar包较少、简单易用、性能也还不错,另外Jackson社区相对比较活跃。 Jackson开源库的缺点是:对于复杂POJO类型、复杂的集合Map、List的转换结果,不是标准的JSON格式,或者会出现一些问题。 Gson可以完成复杂类型的POJO和JSON字符串的相互转换,转换的能力非常强。 从性能上说,FastJson库采用独创的算法,将JSON转成POJO的速度提升到极致,超过其他JSON开源库。在POJO序列化成JSON字符串的应用场景

2020-05-24 15:46:28 293

原创 Java并发编程学习-日记8、netty的编码和解码

Netty解码器ByteToMessageDecoder一个标准的解码器将输入类型为ByteBuf缓冲区的数据进行解码,输出一个一个的Java POJO对象。Netty内置了这个解码器,叫作ByteToMessageDecoder,位在Netty的io.netty.handler.codec包中。所有的Netty中的解码器,都是Inbound入站处理器类型,都直接或者间接地实现了ChannelInboundHandler接口。ByteToMessageDecoder解码的流程,大致具体可以描述

2020-05-24 15:22:39 526

原创 Java并发编程学习-日记7、第二个netty程序回显服务器

代码示例: public class NettyEchoServer { private final int serverPort; ServerBootstrap b = new ServerBootstrap(); public NettyEchoServer(int port) { this.serverPort = port; } public void runServer() { ...

2020-05-24 14:39:36 298

原创 Java并发编程学习-日记6、Netty基础知识点

Netty的服务启动类ServerBootstrap:Bootstrap类是Netty提供的一个便利的工厂类,可以通过它来完成Netty的客户端或服务器端的Netty组件的组装,以及Netty程序的初始化。它的职责是一个组装和集成器,将不同的Netty组件组装在一起。另外,ServerBootstrap能够按照应用场景的需要,为组件设置好对应的参数,最后实现Netty服务器的监听和启动。Netty中的各种组件:服务器启动器、缓冲区、反应器、Handler业务处理器、Future异步任务监听、数据传输通道。

2020-05-23 21:52:19 604

原创 Java并发编程学习-日记5、Netty从DiscardServer实践开始

DiscardServer所示,创建netty服务端,一共有8步,重点在:监控事件的线程组、通道及通道参数、出入站的处理器(绑定在流水线上)、异步监控事件处理 public class NettyDiscardServer { private final int serverPort; /* Netty的服务启动类ServerBootstrap,它的职责是一个组装和集成器,将不同的Netty组件组装在一起。另外,ServerBootstrap能够按照应用场景...

2020-05-22 23:33:22 211

原创 Java并发编程学习-日记4、 Future异步回调

JION join操作的原理是:阻塞当前的线程,直到准备合并的目标线程的执行。在Java中,线程(Thread)的合并流程是:假设线程A调用了线程B的B.join方法,合并B线程。那么,线程A进入阻塞状态,直到B线程执行完成。(1)join是实例方法,不是静态方法,需要使用线程对象去调用,如thread.join()。(2)join调用时,不是线程所指向的目标线程阻塞,而是当前线程阻塞。(3)只有等到当前线程所指向的线程执行完成,或者超时,当前线程才能重新恢复执行。(4)join有...

2020-05-20 20:51:49 625

原创 Java并发编程学习-日记3、Reactor反应器模式

本博文记录了学习Reactor反应器模式的一些笔记。java.util.concurrent包的作者,大师Doug Lea关于分析与构建可伸缩的高性能IO服务的一篇经典文章——《Scalable IO in Java》,在文章中Doug Lea通过各个角度,循序渐进的梳理了服务开发中的相关问题,以及在解决问题的过程中服务模型的演变与进化,文章中基于Reactor反应器模式的几种服务模型架构,也被Netty、Mina等大多数高性能IO服务框架所采用。所以可以仔细拼读一下《Scalable IO...

2020-05-19 22:17:34 279

原创 Java并发编程学习-日记2、NIO实现Discard服务器实践

源码分析: ServerSocketChannel是一个可以监听新进来的TCP连接的通道,就像标准IO中的ServerSocket一样。 通过ServerSocketChannel.accept()方法监听新进来的连接。当accept()方法返回的时候,它返回一个包含新进来的连接的SocketChannel。 ServerSocketChannel可以设置成非阻塞模式:serverSocketChannel.configureBlocking(false);在非阻塞模式下,accept(...

2020-05-18 21:56:08 243

原创 Java并发编程学习-日记1、常见的IO模型、NIO、OIO

常见的IO模型:1、同步阻塞IO(Blocking IO): 在Java中,默认创建的socket都是阻塞。同步IO,是一种用户空间与内核空间的IO发起方式。同步IO是指用户空间的线程是主动发起IO请求的一方,内核空间是被动接受方。异步IO则反过来,是指系统内核是主动发起IO请求的一方,用户空间的线程是被动接受。阻塞IO的特点及优缺点:阻塞IO的特点是:在内核进行IO执行的两个阶段,用户线程都被阻塞。 阻塞IO的优点:应用的程序开发非常简单;在阻塞等待数据期间,用户线程挂起。在阻塞期间,用户线程

2020-05-18 21:17:33 576

原创 常用的排序算法实现(2)-堆排序

堆排序相对来说比较复杂。这里使用了两种是实现方案,方案1,heapSort1()需要借助于二叉堆类,这个算是一个入门;有助于理解堆排序。方案2,heapSort2()将数组看成是一棵二叉树,首先要对树转换,使其变成大顶堆。然后再进行排序。这里需要注意1.数组索引从0开始。所以计算元素索引的时候要转换,而且要注意越界问题。2.大顶堆和堆排序都只用了下沉操作;2.1在构建大顶堆的时候,要从...

2020-04-15 22:04:40 121

原创 常用的排序算法实现(1)-选择排序、插入排序、希尔排序、归并排序、快速排序

package sort;import java.util.Arrays;/** * 描述: * 排序算法 * * @author wanghui email:wanghuiaf@yonyou.com * @create 2020-04-13 上午11:03 */public class SortAlgorithm { private static Compara...

2020-04-15 10:39:44 149

原创 Java服务端开发面试题汇总

       近期在换工作中,参加了形形色色的公司的面试,现在将聚焦到面试的具体内容上。在这里需要强调的是,我参与的面试是面向中高级开发的工程师;对于某一个问题的展开往往都是由浅到深,以及个人在领域中的应用的理解。这里我没有给出答案。当然面试的时候面试官处理固定的会提问的一些东西外,简历中的技能栏可能会是提问的重点区域。以下是我总结的可能会问到的问题,但是每一个问题都可以继续深挖三到四层,所以...

2018-08-25 17:45:04 3884

原创 AMQP之RabbitMQ安装及安装文档介绍

以下内容都是在windows环境下的记录,如果是linux中出现的问题,可能需要参考官方文档,进行修改。首先,安装和使用RabbitMQ:https://www.rabbitmq.com/——&gt;getstarted——&gt;Downloading and Installing RabbitMQ——&gt;Windows: With installer在安装时,官网有一段话值得我...

2018-08-05 01:32:39 866

原创 微信支付与支付宝支付——扫码支付

最近由于产品增加支付需求,研究了一下微信与支付宝的扫码支付。现在把学习心得和踩过的坑写出来,供大家参考。前提扫码支付分类两种情况:卖家通过扫码设备,扫描买家的二维码,完成支付。——这种支付方式的应用环境:便利店、超市等的收银台 卖家调用支付平台的预订单接口,返回支付二维码连接地址,卖家系统调用二维码生成器,生成二维码,买家扫描二维码,完成支付。——这种支付方式的一个实际的案例就是亚马逊...

2018-07-25 22:13:35 7578 2

原创 Java Web编程——1、Servlet

1、Servlet是一个运行在Web服务器中的Java小程序。Servlet将会接收和响应来自Web客户端的请求,使用HTTP进行同行。(A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually...

2018-05-02 00:19:40 313

原创 python学习之文章中单词出现频率统计

思路:统计一篇文章中单词出现的次数,首先应该知道该文章中,有多少个单词(去重后),然后再统计单词在文章中的出现频率。这里使用最简单的方式来实现该功能。基础:读者应该已经掌握python的主要数据结构的用法,——字典、列表、元组与集合。多数的函数和方法的注释已经在源代码中注释,这里对sorted()函数进行一下特别说明。python中对sorted()函数做出的解释如下所示(可以通过help(fun...

2018-02-14 16:39:49 3837

原创 最近在JavaWeb项目开发遇到的一些问题

1、使用maven模块化:通过IDEA使用maven构建项目的模块化较为简单,只需要在主(父)项目上右键new——module即可。这里要说明的时,在构建模块项目时,可能出现的循环依赖问题。此时项目启动时将会报错“The projects in the reactor contain a cyclic reference.”。出现这种情况往往是因为不同模块存在直接或间接的相互依赖的情况。此时,

2018-02-01 00:18:23 7715

原创 MongoDB学习笔记2——创建、更新和删除文档

首先我们先使用use指令创建数据库,在MongoDB中,use dbname,如果数据库不存在,则创建,并切换到使用该数据库,如果存在则直接切换到该数据库。其中,第一个db为别名,第二个db为数据库的名字。这个地方我的命名不太好。其次,说明在shell中查询函数的方法:例如我们查询删除函数remove()的方法,我们可以使用如下的形式获取remove的实现形式:> db.foo.removefun

2018-01-18 00:24:13 408

scikit-learn学习代码

机器学习python算法库:常用的算法及代码实践,K邻近算法、逻辑回归算法、线性回归算法、决策树、支持向量机、朴素贝叶斯算法、PCA、K-均值算法

2020-11-30

powerdesigner16破解文件

直接替换安装目录下的pdflm16.dll即可。本人亲测,没问题。

2017-10-22

pdfbox实现打印功能

这个代码是前段时间要做一个打印功能时,研究了一下pdfbox。发现pdfbox给的demo有很多是可以稍作修改直接拿过来用的。

2016-10-25

ERmaster_eclipse

ERmaster这是一个好用的eclipse插件对我们数据库的设计很有帮助。详细软件下载可以google收索ermaster下载安装

2013-04-22

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

TA关注的人

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