自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jack 架构师之路

           stay hungry,stay young!

  • 博客(462)
  • 资源 (22)
  • 问答 (1)
  • 收藏
  • 关注

原创 并发三大特性——可见性

引言熟悉并发的童鞋们都知道,并发编程有三大特性,分别是可见性、有序性、原子性,今天我们从一个demo中分析可见性,以及我们如何保障可见性。JMM模型在我们分析可见性之前,我们需要了解一个概念,就是JMM模型,也就是我们常说的javamemorymodel .java虚拟机规范中定义了Java内存模型,用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现程序在各个平台上达到一致的并发效果,JMM规范了java虚拟机与计算机内存是如何协同工作的。规定了一个线程如何和何时可以看到由其他线程修改过..

2021-10-28 23:07:22 27340 2

原创 Linxu搭建maven环境,实现服务器修改代码

背景最近很多saas端的银行客户由于安全要求,将系统从云端部署到行内环境,但是很多银行的部署都需要协调行内的人去拷贝文件,有时候需要等很久才能上传上去,这样对于我们这种没有非常大量测试的项目团队来说非常的耗费时间,并且有时间行内的数据和需求说变就变,这就要求我们随时修改一些代码,但是走变更需要很长的流程,所以我就在想可以直接在linux服务器上修改代码 ,这样对于一些小改动的地方就可以随时支持了,所以我们需要搭建一个maven环境就OK了,将源代码放上去就可以了。1.前言这里,已经提前下载并安装

2021-10-24 15:41:36 26151

原创 java从腾讯邮箱获得文件

package com.jack.platformweb.email.service;import com.sun.mail.imap.IMAPStore;import com.jack.common.redis.service.RedisService;import com.jack.common.utils.DateUtils;import com.jack.common.utils.JsonUtils;import com.jack.common.utils.ZipUtils;impo.

2021-10-12 22:05:06 26891

原创 Java类加载的双亲委派机制

一、类加载器在JVM有 两种类型的类加载器,一种是由c++编写,一种是由java编写的,其中启动类加载器(Bootstrap Class Loader)是由c++编写,其余的都是有java编写,由java编写的类加载器都继承自类java.lang.ClassLoader,为什么小编要这么区分呢,这是因为c++编写的,开发者无法直接获取到, 所以不允许直接通过引用进行操作。下面我们分别介绍几个类加载器: 1、启动类(Bootstrap)加载器:是由本地代码实现的类加载器,他负责将<Java_..

2021-04-24 18:46:56 321

原创 quartz集群部署方式解决方案

需求最近有一个项目需要从原来的单机部署修改为 集群方式部署,因为银行要求所有的的服务不能有单点的情况,所以我们需要 对该项目就行改造,别的需求改造还是比较容易的,但是项目中采用了quartz执行定时任务,所以我们需要改造这个地方,在本文中采用quartz自身支持的基于DB的集群部署方案。版本2.2.3创建DBsql文件地址:https://download.csdn.net/download/u013045437/15534461数据字段说明:https://blog.csdn.ne

2021-03-02 18:17:55 1919 3

原创 quartz-2.2.3集群部署使用到的数据库字段说明

1|0qrtz_job_detailsqrtz_job_details 存储每一个已配置的 jobDetail 的详细信息表字段 含义 sched_name 调度名称 job_name 集群中job的名字 job_group 集群中job的所属组的名字 description 详细描述信息 job_class_name 集群中个notejob实现类的全限定名,quartz就是根据这个路径到classpath找到该job类 is_durab.

2021-03-02 18:16:59 640 2

原创 从源码分析JDK动态代理

引言动态代理非常的重要,虽然我们在日常的工作中没有非常底层的 编写过动态代理的代码,但是动态代理却起着非常重要的功能,想一下我们经常使用的框架: 日志框架、AOP等等,所以,如果我们需要看一些框架的源码的时候,还是需要非常熟悉的掌握动态代理的原理。基本的使用这里就不在介绍了,前面的的博客已经介绍过了《java动态代理》,本篇博客主要解决下面几个问题:1、JDK动态代理基本原理2、如何调用到我们自己的myInvoerCationHandler中的invoke方法3、 被代理的类位为什么要实

2021-02-23 09:20:50 1324 7

原创 从源码分析Dubbo的SPI机制

Java SPI在进行分析Dubbo SPI机制之前,我们还是从我们熟悉的java spi机制入手,其实在我们平常使用的开发框架中, 处处都是使用了SPI机制,比如我们使用的JDBC,日志框架等,我们可以根据配置集成我们需要的数据库例如mysql、oracle 等,下面从一个简单的例子来看一下Java SPI;Java Spi demo:public interface Tea { String getTeaName();}public class GreenTea im..

2021-02-14 17:59:37 420 3

原创 深入理解Java三种IO模式和Epoll模型

IO模型IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式:BIO,NIO,AIOBIO(Blocking IO )同步阻塞模型,一个客户端连接对应一个处理线程BIO代码示例:import java.net.ServerSocket;import java.net.Socket;import java.util.logging.Handler;public class SocketServer { public static

2021-01-27 15:19:37 1830 2

原创 Epoll的本质(内部实现原理)

从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。  因为epoll的重要性,在招聘服务端同学时,可能会问及epoll相关的问题。比如epoll和select的区别是什么?epoll高效率的原因是什么?如果只靠背诵,显然不能算上深刻的理解。文章核心思想  要让读者清晰明白EPOLL为什么性能好。  本文会从网卡接收数据的流程讲起,串联起CPU中断、操作系统进程调度等

2021-01-25 19:17:48 535 1

原创 nginx应用

基本概念正向代理和反向代理正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端正向代理中,proxy和client同属一个LAN,对server透明;反向代理中,proxy和server同属一个LAN,对client透明。实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理正向代理: 买票的黄牛反向代理: 租房的代

2021-01-13 16:14:38 291

原创 【2020总结】 一直坚持,一路向前!

【疫情笼罩下的我们】 最近北京的疫情又开始严重起来,这让我们不仅回想起年初恐慌的情景,年初因为没有提前收到在家办公的通知,所以还是和往年一样提前两天回京,但是和往年不一样的是路上多了很多医护人员,而零零散散的行人也是戴上了厚厚的口罩和各种防护装备,人和人之间几乎没有交流,整个大厅无限循环的播放着各种测体温、戴口罩等预防提示音,这就更加剧了我们的恐慌,但是无论疫情怎么严重,生活还得继续。。。。。 在复工的前一天我们收到在家办公的通知,但是随之而来就是我们MS系统日处理量需要提高一倍,因...

2021-01-07 17:17:56 40816 5

原创 求出任意非负整数区间中1出现的次数

引言最近想中有一个 类似标题的需求,看到需求的时候觉得非常简单,立马闪现出下面代码思路: public static int couts(int n) { int cout = 0; for (int i = 1; i <= n; i++) { String s = String.valueOf(i); String replace = s.replace("1", ""); int i

2020-12-24 16:12:34 310 1

原创 java动态代理

1、引言最近在看一些技术源码的时候,发现很多地方都是动态代理, 真可谓是一切皆代理啊,所以我们需要弄明白代理模式这样在看源码的时候会好受很多。2、基本概念代理(Proxy)模式提供了间接访问目标对象的方式,即通过代理对象访问目标对象,这样做的好处是:可以在目标对象的功能上,增加额外的功能补充,即扩展目标对象的功能。这就符合了设计模式低开闭原则,即在对既有代码不改动的情况下进行功能扩展。举个我们平常非常常见的例子, 明星和经纪人就是被代理和代理的关系,明细出演活动的时候,明细就是一个目标对

2020-12-14 17:59:02 50388 1

原创 Webflux系列之反应式编程核心基础详解

一. 反应式编程核心思想1、核心概念反应式反应式系统具有某些特性,使其成为低延迟、高吞吐量工作负载的理想选择。projectreactor和Spring组合一起工作,使开发人员能够构建响应性、弹性、弹性和消息驱动的企业级反应系统。反应式处理反应式处理是一种范例,它使开发人员能够构建非阻塞、异步的应用程序,从而能够处理背压(流控制)。为什么使用反应式处理?反应式系统更好地利用了现代处理器。此外,在反应式编程中加入背压可以确保解耦组件之间具有更好的弹性。反应式宣言英.

2020-12-07 18:06:21 52193

原创 java8中的map与flatmap

问题假如我们有这样一个需求给定单词列表["Hello","World"],你想要返回列表["H","e","l", "o","W","r","d"],如果我们使用java实现这个需求,你会怎么实现呢?可能我们第一个想法是下面这种写法:words.stream().map(word -> word.split("")).distinct().collect(toList());但是如果我们运行会发现这样的写法是不正确的,这个方法的问题在于,传递给map方法的Lambda为每个单词返回

2020-12-06 20:55:52 53671 1

原创 java8新特性—— Lambda表达式

Lambda表达式用来替代匿名函数,可以将一个函数赋值给一个变量作为参数传入另一个函数,java的闭包原则:可推导就是可省略,比如说参数类型,返回值// 1. 不需要参数,返回值为 5 {}只有一行代码,可以省略() -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值,()只有一个参数可以省略 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int

2020-12-06 19:18:06 50140 2

原创 从源码分析SpringMVC核心处理流程

引言之前我们都是从一些官方文档或者是博客中了解了springMVC的整个处理流程,并且在前面博客我们也自己动手模拟了一个简单的springMVC容器,那么今天我们就对照流程图从源码分析一下S pringMVC的核心处理流程。一、SpringMVC处理流程图这张图已经非常清楚的画除了整个SpringMVC的处理流程,里面还写出了每个处理环节当中的类,当然如果没有 分析过源码,那么上面的图看起来会非常的乱。尤其是里面的一些核心类,所以如果想很愉快的欣赏上面的 流程图,就需要我们看过几遍源码。..

2020-12-01 16:00:39 50460

原创 手写SpringMVC框架

引言在分析springMVC框架之前,我们根据我们对整个框架的流程分析,先来手写一个简易版的springMVC框架, 这样我们在看源码的时候会更清晰,毕竟框架源码还是非常庞大的, 如果我们一行一行的看的话, 那就完蛋了,直接陷到里面出不来了。所以本篇 博客我们基于现有的servlet和spring框架来手写模拟一个springMVC框架,在这个框架中我们主要是编写主流程,也就是我们最关系的处理器和适配器等。一、实现分析我们在动手之前,首先需要分析一下, springmvc框架到底帮我们做了什么功

2020-11-24 17:08:07 465 2

原创 从SpringMVC看适配器模式

引言最近在读springMVC源码的时候,发现在springMVC的整个流程架构当中,适配器模式是一个非常经典的应用,当然适配模式是一个比较简单的设计模式。springMVC为什么使用适配器模式?我们知道在springmvc的架构中,控制器(controller)的实现方式有多种,例如直接使用@Controller注解、直接实现 controller接口等, 每一种实现方式都对应不同的...

2020-11-23 23:27:06 718 1

原创 从源码分析tomcat如何调用Servlet的初始化

引言上一篇博客我们将tomcat源码在本地成功运行了,所以在本篇博客中我们从源码层面分析,tomcat在启动的过程中,是如何初始化servlet容器的。我们平常都是将我们的服务部署到 tomcat中,然后修改一下配置文件,启动就可以对外提供 服务了,但是我们对于其中的一些流程并不是非常的了解,例如如何加载的web.xml等。这是我们分析servlet 和 sringMVC必不可少的过程。一、代码启动tomcat平常我们不论是Windows还是linux,我们都是通过脚本来启动tomcat,这对于

2020-11-17 17:54:13 93384 3

原创 将tomcat源码以maven方式运行

前言最近在分析tomcat的启动流程,虽然我们可以在idea中查看到tomcat的源代码,但是我们不能在上面做一些代码注释,这就会 非常的不方便,所以我们还是能在本地 运行一份源码,这样非常有利于我们分析源码一、下载tomcat源码,选择tomcat-8.5.55版本进入tomcat官网,点击左侧菜单栏Download对应的版本,下载源码二、idea中创建项目1.在idea中创建一个空白项目,名称为tomcat_study2.打开项目源目录,将tomcat的源码解压到其中

2020-11-16 22:59:25 75019 1

原创 【面试必备】——快速排序算法

快速排序介绍快速排序使用的是分治策略它的基本思想:选择一个基数,通过一趟排序将要排序的数据分隔成 独立的两部分;其中一部分的所有 数据比另外一部分的所有数据都要小。 然后,按照此方法对这两部分数据分别就行快速排序,整个过程可以递归进行,以此达到整个数据变成有序序列快速排序的流程1)选择一个基准值(一般就采用第一个数)2)将所有比基准值小的数 移动到基准值前面,所有比基准值大的数移动到基准值后面(相同的数据可以放在任何一边);在这个分区退出以后,该基准就处在数列的中间位置3)采用递归方

2020-09-16 14:47:04 1446

原创 SSM集成kafka——注解,xml配置两种方式实现

引言最近在和甲方 对接数据的时候,甲方要求通过kafka将处理完成数据回传,所以我们需要在项目中集成kafka,由于之前项目采用的是SSM框架,并且么有集成过kafka,所以在这里分享一下。一、XML配置文件方式实现1、引入jar 这两有两个地方需要注意 1) kafka-clients 包版本与服务器端kafka-clients版本保持一致(查看服务器kafka版本方法 在kafka安装目录下libs 中查找kafka-clients开头的jar文件)  2)引入的sp...

2020-09-11 16:53:13 1796 4

原创 将mp3格式的音频转换为采样率8k的wav

需求最近系统上需要增加一个功能,就是测试我们系统的ASR识别引擎,这就需要上传一段音频,然后我们返回识别后的文字,但是我们的识别引擎需要采样率16k,格式为wav的音频文件,但是我们又不能限定用户上传的录音格式,所以需要我们在后台转换一下格式,然后再去识别。1、MP3转换wav做这个功能时候, 发现网上的资料真的很少,所以,只能安全上网了,在外面找到了方法。1.1 引入jar:<dependency> <groupId>javazoom&

2020-08-28 16:59:19 2545

原创 如何解决MD5后只有31位的坑

引言在和银行进行数据传输的时候, 签名采用了参数MD5的方式,具体做法参考我的博客《请求参数按照ASCII码从小到大排序后追加秘钥再进行加密得到签名值》由于在和行内进行交互的时候,起作用的一些 接口并没有采用验签的环节,所以签名的问题也一直没有暴露 出来,最近要上一个新接口,需要用到签名,在进行批量测试的时候,有些数据签名验证失败,而大部分数据是可以验签成功的, 这让我一时半会有些不解啊,最后我对比成功和失败的签名发现,失败的签名竟然只有31位,而MD5 一般是16位或者32位,那么问题肯定是出现在

2020-08-24 20:41:13 2510

原创 JAVA对接阿里语音识别引擎

1、官网SDK地址https://help.aliyun.com/document_detail/84430.html?spm=a2c4g.11186623.6.581.73f65edftbwk9R阿里的SDK比腾讯好一些,可以直接从中央仓库直接下载,并且demo 写的比较详细,在开始对接之前,我们需要仔细的看接口说明下面我们文档,这样可以减少开始对我们对接中的坑,下面开始对接:2、 先搞jar包<dependency> <groupId>co.

2020-08-19 16:47:28 2435

原创 JAVA对接腾讯语音实时识别引擎

一、官网地址https://cloud.tencent.com/document/product/1093/35727需要对接的朋友们,需要咨仔细的看一下文档,主要是一些重要参数,但是小编觉得,腾讯的这个SDK 真的不太友好,demo给的也不是很直接,需要我们自己再次封装,并且SDK不能从中央 仓库直接获取,需要我们自己下载源码,自己搞。。。。二、对接流程2.1 先搞jar我们需要从官网地址下载SDK源码,然后将源码导入我们的IDE中,将out文件夹中的real_asr_sdk_1.6.

2020-08-19 15:38:16 1270

原创 客服实时转译辅助系统架构

1、需求最近给银行客服部门做了一个“实时辅助系统”,具体需求就是,当有客户拨打客服电话的来咨询一些问题的时候,我们将用户和客服聊天的内容 实时显示到系统上,并且根据聊天内容,给客服展示出提示话术。2、需求分析首先我们看一下右下角聊天内容这一部分,这部分的要求时,在拨打电话的过程中实时的将聊天语音转换文字并且实时展示,所以我们需要采用websocket接口,FS将语音流通WS接口发给我后端,后端通过WS接口调动ASR识别引擎。3、架构 4、流程...

2020-08-18 16:55:12 271

原创 【高并发趣事三】——双重检查锁定与延迟初始化

一、引言在JAVA多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的 开销。双重检查锁定就是延迟 初始化技术。二、双重检查锁定的由来在jav进程中,有时候可能 需要推迟一些高开销对象的初始化操作,并且只有在使用这些对象时才进行初始化,此时,程序员可能会采用延迟初始化。还有一个经典的使用场景就是单利模式下的,为了提高性能 ,采用双重检查锁定模式。但是在使用的过程中我们需要一些技巧,否则很容易出现问题。上面代码在多线程环境下,我们很容易出现问题,所以改进代码。由于对ge

2020-07-23 17:53:19 331

原创 【高并发趣事二】——JMM及程序中的幽灵

引言在我们开始写正文之前,我们先看几行代码,各位读者是否能看出问题呢?第一段: public static void main(String[] args) { int v1 = 1073741827; int v2 = 1431655768; System.out.println(v1 + v2); }在各位读者看来,应该输出什么呢?第二段public class ThreadTestService { int

2020-07-23 11:35:25 264

原创 【高并发趣事一】——Amdahl(阿姆达尔定律)与Gustafson(古斯塔夫森定律)

在高并发程序设计中有非常重要的两个定律,这个两个定律从不同角度诠释了加速比与系统串行化程度、CPU核心数之间的关系,他们使我们在做高并发程序设计的理论依据:Amdahl(阿姆达尔定律) Gustafson(古斯塔夫森定律)一、Amdahl(阿姆达尔定律)1.1 加速比定义 加速比 = 优化前系统耗时 / 优化后系统耗时所谓加速比就是优化前的耗时和优化后的耗时的比值。加速比越高,表明优化效果越明显。下图是该公式的推导过程:其中n表示处理器个数,T表示时间,T1表示优化前耗时(...

2020-07-19 19:49:53 2669

原创 Mybatis Generator 自定义插件——指定查询字段

引言最近在使用Mybatis Generator 自动生成的方法中,发现不能指定查询字段,selectByExample将整个表的字段都 返回了,如果想要查询某个表的指定字段,就需要自己手动写sql,这样觉得不方便,所以小编参考了Mybatis Generator 的源代码,自己写了一个插件满足需求。相关注释在代码中都有,这里就不多说了,直接上代码:package com.zqf.db.plugin;import org.mybatis.generator.api.Introspected

2020-07-16 14:38:02 2923 1

原创 linux 创建SFTP

====================纯记录==================1、创建sftp组groupadd sftp2、创建一个sftp用户,用户名为gzcb,密码jdt1#$d修改用户密码和修改Linux用户密码是一样的。useradd -g sftp -s /bin/falsegzcb //用户名passwdgzcb //密码3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个gzcb目录,home为/data...

2020-07-10 18:49:05 445

原创 多线程环境下HashMap导致CPU100%

引言昨天早上线上系统开始作业了一段时间以后,突然收到服务器报警,服务器CPU持续占用100%,导致线上系统不能正常使用,我登录服务器top了一下,发现java进程占用cpu400%, 由于前天晚上上线了一些新的功能,所以我分析应该是某处代码出现了死循环导致,于是根据前面解决性能问题的经验来搞一下。具体流程参考我前面的博文《快速定位线上CPU100%问题》。排查结果:快速找到具体的代码,那么问题就可以很好的解决了,看一下具体代码public static Map<String,

2020-07-09 09:31:54 8089

原创 JAVA线程池总结及自定义线程池

引言在前几年小编写过一篇关于线程池的总结:《线程总结》,现在回过头来看,总结的 还是比较详细的,不过当时并没有在项目中有过真实刺激的 体验,最近项目中偶然遇到了一次任务丢失的问题,我追踪了一下 代码, 发现由于不正当采用java内置线程池导致的, 应该是当时配置线程池的参数没有仔细计算导致的,关于这个问题我们后面博文在介绍,今天我们在看我java 内置 线程池代码以后,我们先动手自己写一个线程池来实现任务的提交和执行。这样我们可以更好的理解线程池的执行流程。如果读者对于java内置的线程的核心参数和执行

2020-06-30 16:17:51 144982 2

原创 利用二分查找获得List中小于并且最接近的数

引言最近在老系统中看到了一大段代码,这个代码的目的是迁移迁移历史,在迁移的过程中需要很多计算,我大概看了一下代码,里面到处都是for 循环,虽然for循环的逻辑比较简单,但是循环的次数太多了, 这就导致这个方法非常的慢,其中有一个地方就是通过循环获得日期。如果list中有5000个日期,恰好这个要查找的日期在最后面一个,那么肯定完蛋。 如果通过二分查找肯定会会少很多循环。目标:找到集合中早于目标日期,并且最接近的一个日期,如果没有早于的则不返回代码:package com.zqf.pl

2020-06-22 11:58:14 143683 1

原创 通过shell的&命令执行“./startup.sh & tail -f ../logs/catalina.out”时造成tomcat的所属的jvm关闭并且对于的服务挂掉了

引言前两天有个显示系统最近升级完成以后,每天晚上tomcat自动shutdown, 非常奇怪的一个问题,因为系统晚上有很多定时任务需要执行,这就导致很多数据统计都错了,并且会影响第二天的使用, 连续两天出现这样的情况,第一次,正好是我们晚上升级系统,所以假定认为使我们升级导致的,但是第二天我们 并没有更新代码,系统仍然down掉了,这就非常严重了,于是,我接入了排查。先看一下日志:刚开始看到这个日志的时候,我们全部注意力都被上面的警告吸引,于是,认为是数据库连接池有问题,在检查了项目中的相关配.

2020-06-19 14:50:54 144149

原创 WebSocket在建立连接时通过@PathParam获取页面传值

最近在做的两个系统中都用到了webSocket,一个是实时转译系统,该系统就是通过收集端收音,然后实时将录音转换成文字显示到页面上,第二个是智能客服系统。由于之前用webSocket比较少,一直以为在创建连接的时候,不能传递参数,直到有一天看源码的时候,发现了新大陆,下面分享一下1、在被websocket映射的Java类中的注解如下:@ServerEndpoint("/websocket/{relationId}/{userCode}")2、在该Java类中的方法中:@OnOpenpu

2020-06-12 21:03:59 133476

原创 从零学SpringCloud系列(九):利用kafka实现消息总线Spring Cloud Bus

一、什么是消息总线相信大多数读者之前都使用过各种各样的消息队列,例如RabbitMQ、kafka等等,消息总线和他的概念差不多,在微服务系统的架构中,我们通常会使用轻量级的消息代理来 构建一个共用的消息主题让系统中所有的微服务都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以 我们称他们为消息总线。在总线上的各个实例都可以方便的广播一些需要让其他连接到该主题上的实例都知道的消息,例如配置的变更或者其他一些管理操作等。二、...

2020-05-14 10:39:20 17771

qrtz_blob_triggers.sql

quartz-2.2.3版本集群部署方式,需要创建的11张表的sql 文件,很多文章没有分享,一定要注意版本,不同的版本sql脚本不同

2021-03-02

Tomcat8.5.55.jar

通过构建源码得到的tomcat.jar,网上的都是源码,被坑了100个c币。所以今天通过源码构建出jar包。

2020-11-19

mysql-5.7.21-linux-glibc2.12-x86_64.tar下载.txt

linux 上安装可用的mysql 5.7.21版本,其他的资源下载需要的分数太多了。 安装教程:https://blog.csdn.net/hao134838/article/details/92114641

2020-08-28

oss可视化工具Borwser-win32-x64.zip

一个非常好用的oss可视化工具,使用这个工具我们就可以避免通过oss控制台来查看oss服务器上的文档了,非常的便捷好用。

2020-04-17

springcloud教程.zip

通过天气预报系统完整的介绍和学习springcloud框架内容,通过一个完整的项目从基础介绍整个springcloud生态圈的内容,非常好的入门视频

2020-04-07

drools实现demo

代码实现了基本的drools功能,并且在第二个demo中进行了和springboot的结合,实现了消费积分的累计,最后的demo是实现了springboot+mysql实现动态规则生成

2019-03-19

Drools技术开发指南中文版

Drools 是一个基于Charles Forgy's的RETE算法的,易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。 Drools 是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。Drools允许使用声明方式表达业务逻辑。可以使用非XML的本地语言编写规则,

2019-03-19

飞鸽快信使用教程

飞鸽快信使用教程,非常的详细。

2018-10-10

Qutartz 触发器表达式生成器

CronExpBuilder-1.0(触发器表达式生成器) 用于快速生成 触发器表达式

2017-08-13

SSH框架源码

下载后可以导入到myeclipse中可以直接运行

2017-02-05

java生成验图片验证码

项目已经运行过,完全没有问题,下载以后之间导入myeclipse就可以运行

2017-01-07

maven-archetype-quickstart-1.1.jar

1.http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/ 下载最新版maven-archetype-quickstart-1.1.jar 2.cmd窗口执行mvn install:install-file -DgroupId=org.apache.maven.archetypes -DartifactId=maven-archetype-quickstart -Dversion=1.1 -Dpackaging=jar -Dfile=maven-archetype-quickstart-1.1.jar

2016-11-13

基于ngMockE2E实现后台数据模拟

基于ngMockE2E实现后台数据模拟,本人亲自写的Demo,已经在项目中使用,本Demo可以直接运行,没有错误!

2016-08-27

angular-resource.js

angular-resource.js

2016-08-24

angular-mocks.js 1.5.0

angular-mocks.js 1.5.0

2016-08-24

angular.js1.5.0

angular.js1.5.0

2016-08-24

FlexPaper控件和对应js

这是FlexPaper控件的所需要的资源,在利用这个控件工作的时候需要用到,本人已经使用过,没有问题!请大家自行下载

2016-02-29

Aspose.words.dll

在处理各种文件的时候,我们需要借助此插件的强悍的功能,这是我找到最新版的Apose,word.dall文件,相比之前的功能更加的强悍!

2016-01-15

Aspose.wrod的API文档(英文)

此文档对于Apose.word控件的介绍非常的详细,所以大家在使用此控件的时候非常有必要参考此API,所以在此和大家分享

2016-01-15

基于jmail控件实现邮件发送源码

此代码已经在vs2013上面测试通过,没有任何问题,可以实现邮件的发送,并且可以实现附件的发送。zip

2015-11-15

JMail44_pro

利用此插件实现邮件的收发非常的方便,本人已经利用此插件实现了邮件的接收和发送

2015-11-15

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

TA关注的人

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