
java相关
java相关技术
涂宗勋
从事java开发,现居湖北武汉,有过支付、OA、CA、OAUTH2、小程序等工作经验,现从事车联网行业。
爱好分享,个人博客blog.tzxcode.cn
-
原创 若依管理系统RuoYi-Cloud版搭建记录
现在快速构建web应用程序的系统有很多,若依RuoYi是其中一个,根据官网说明,使用最流行的技术SpringBoot、Shiro、Thymeleaf、Vue、Bootstrap,这个系统分为一体化版本和前后端分离版本。不管是学习某些技术,学习整体架构设计思想,还是拿来进一步二次开发,都是不错的选择。最近抽空搭了下这个环境,基本按照官网说明,但也有一些细节略有差异,以下为踩坑记录:RuoYi-Cloud代码下载若依系统官网是http://ruoyi.vip/,springcloud微服务版本的代码下载地2020-10-30 13:13:041093
4
-
原创 个人聚合支付demo
需求在上一家公司和目前公司均参与支付项目的开发,但因为都是中途参与,因此一直对整体业务不是很熟,所以觉得有必要从头到尾自己开发一遍。各支付机构实际都封装有自己的sdk,可以集成之后进行很方便的开发,例如支付宝的sdk,可以让开发者把签名等很多过程都忽略掉。但是集成支付机构sdk的缺点也很明显,那就是每接一个机构就需要继承该机构的sdk,会导致jar包不断增多。同时,一旦支付机构的sdk进行...2019-01-18 13:16:415050
3
-
转载 Jackson对泛型的序列化和反序列化方法汇总
说明:Jackson对于简单泛型是可以正常操作的,但是如果对于太过于复杂的泛型类有时会不成功。目前还在找着更合适的Json库。不过这一点在dotnet原生方案JavaScriptSerializer可以完美解决这一些问题,无论泛型多复杂。例子如下:package com.jsoft.springboottest.springboottest1.controller;import java.io.IOException;import java.lang.reflect.Type;import .2020-07-17 16:36:29426
0
-
原创 前后台打通之springboot后台要点记录
接着之前的vue前端项目搭建成功,在实现了一些基本的页面功能之后,现在再搭建一下基础的后台,从而实现前后台打通,以下是整个打通过程中的一些关键点及感悟记录:springboot的后台项目搭建比较简单,如果单纯的实现接口的话,实际上没什么好说的,但是为了看起来不那么单调,就先暂时集成了一些非常基础的组件,例如logback、mybatis、lombok等。mybatis关联查询和特定标签使用s...2020-03-05 19:15:47494
0
-
原创 vue前端项目搭建和要点记录
vue-cli2和vue-cli3(vue-cli4)的一些区别据我目前的了解,创建vue项目,vue-cli不是必须的,但是在实际开发时,几乎就是必须的。vue-cli既可以看做是一种创建vue项目的快捷工具,也可能理解成是vue的一种规范。由于本机的vue-cli安装较早,还是vue-cli2的版本,而如今早已经是vue-cli4,所以也是时候进行一定的升级了,升级过程以及升级之后的部分区别...2020-03-01 13:00:403270
4
-
原创 tzxblog博客系统-接口文档
V1.0接口安全说明所有接口需要实现签名,前台向后台发起请求前需要在header中添加签名参数和签名,以减少后台服务器的被攻击可能性。签名参数至少包含url、时间戳,有token的接口也需要对token签名,以参数名首字母排序后使用&符号拼接后,进行rsa256算法签名。环境说明环境名称协议IP/域名端口私钥开发环境HTTP127.0.0.180...2020-02-02 16:32:181628
0
-
原创 tzxblog博客系统-概要设计
v1.0系统概述tzxblog博客系统旨在创建一个可持续迭代的,以博客系统为基础并辅以文件下载、论坛讨论、商城等功能为一体的综合性站点。重在持续性迭代,巩固工作中主流技术的同时,练习工作中未使用但主流或者不可或缺的技术。整体架构系统整体采用前后台分离思想,后台以springboot为基础框架,前台以vue为基础技术,辅以redis缓存、mysql存储、nginx转发以及ssl通信,力...2020-02-01 10:37:181804
0
-
原创 tzxblog博客系统-需求及立项说明
v1.0项目背景这是一个模拟的博客系统,利用业余时间开发,旨在巩固整个软件开发周期内的各项流程,以开发技术练习为主,文档和工具练习为辅。力求重要的流程都有文档可以追溯、关键的技术点都有笔记进行记录。由于之前实现的功能选择的部分技术并非主流,因此本次算是对原项目的优化和重构。再由于之前并没有完整的流程,因此本次实际也可以看成是一个全新的项目。项目流程说明项目预计可练习的流程有:需求和...2020-01-30 17:11:542596
0
-
原创 oauth2模式理解笔记
oauth2这个词,很多java开发应该都不陌生,但是真的好好了解过、理解过的可能并不多,理解清楚的可能就更少了。由于近期多个业务中遇到相关需求,便不得不特意系统性的了解了一番,却不知道理解的是否正确,做记录的同时也算是求证。oauth2本身分为授权和认证两块,是有区别的,本身可以分开。只是大多数时候为了方便,认证和授权混在了一起,或者说是交给了同一个系统处理。oauth2有四种授权模式,简...2019-12-18 22:07:111179
0
-
原创 记软件开发满五年(二)——盘点这些年的改变
前言人生从来就不是单一和乏味的,总是充满着理性和感性。作为一个喜欢文科的人,我应该是比较感性的,但是作为一个程序员,我似乎更多的是应该保持理性。感性容易引起别人的共鸣,而理性更应该拿数据说话,也许显得有些无趣,却可能更有实用的价值。行业的改变五年来,我经历了三家公司,也可以说是两家。前两家都是外包给移动,后边这一家是外包给联通。乍一看,似乎我一直从事的都是电信行业,但实际上并不是,我只...2019-11-15 00:11:262468
12
-
原创 java字符串替换的问题
今天工作中遇到一个问题,需要输出mongodbObject中的部分内容,当我转换成字符串以后出现了好像无法替换的问题,经过验证,发现并非是不能替换,只是想法错误而已。package demo;/** * 输出字符串中的chenggongzhimu,shibai,count,123 * @author tuzongxun * */public class Test19 {/***2015-03-29 17:29:56788
0
-
原创 java使用poi读取doc和docx文件
这几天在学习java io流的东西,有一个网友看到博客后问了一个问题,就是说他的doc文档为什么用我所说的方法死活就是乱码。 我一开始以为是他方法问题,结果自己试了之后发现和他的结果一样也是乱码。 于是在网上搜寻了一阵之后才发现原来doc文档和excel一样不能用普通的io流的方法来读取,而是也需要用poi,于是进行了一番尝试后,终于以正确的编码格式读取了这个doc文件。2016-07-22 10:53:0251204
50
-
原创 md5加密用户登陆遇到的问题及解决办法
有个项目的登陆模块使用到了cas,应需求要求,用户名和密码传输时使用了md5加密模式,加密的密码可以直接保存在数据库,但是加密的用户名则必须解密出来才行,于是后台的java代码中便写了针对用户名的解密代码。而前台,是在输完用户名和密码后,点击登陆按钮的时候调用相应的方法进行加密并发请求传输。但是测试过程中却发现了一个问题,就是在有的时候输完用户名、密码和验证码以后回车,后台会报如下的数组下标越界的2016-05-24 16:17:435961
0
-
原创 我的下载资源整理(持续更新)
博客中spring event示例:http://download.csdn.net/detail/tuzongxun/9711034博客中spring_mongo示例:http://download.csdn.net/detail/tuzongxun/9710276博客中activiti自定义流程demo:http://download.csdn.net/detail/tuz...2016-12-18 12:44:202925
0
-
原创 spring+mybatis+c3p0数据库连接池或druid连接池使用配置整理
在系统性能优化的时候,或者说在进行代码开发的时候,多数人应该都知道一个很基本的原则,那就是保证功能正常良好的情况下,要尽量减少对数据库的操作。 据我所知,原因大概有这样两个: 一个是,一般情况下系统服务器和数据库服务器应该是不在同一硬件上,这时候对数据库的连接、操作就和网络有了很大的关系,连接、操作数据库越多就越影响性能。 二是,数据库的数据持久化在硬件磁盘上,对数据库数据的操作就要进行磁盘的2017-02-15 15:19:0914151
7
-
原创 java中servletContextListener、httpSessionListener和servletRequestListener使用整理
在java web应用中,listener监听器似乎是必不可少的,常常用来监听servletContext、httpSession、servletRequest等域对象的创建、销毁以及属性的变化等等,可以在这些事件动作前后进行一定的逻辑处理。 比较常用的应用场景是利用监听器来初始化一些数据、统计在线人数、统计web应用浏览量等等。 这里所说的监听器实际上是servlet规范中定义的一种特殊类,需2017-02-16 11:03:1710962
6
-
原创 java程序日志管理
初入软件开发这一行的人,可能对日志管理的概念并不是很明确,大概是由于经验所限,以至于根本还考虑不到这个问题。 而从某种意义上来说,日志管理实际上也不需要初入这一行的人来管,他们只需要负责实现自己的主要业务逻辑和功能就好了。 我当初刚入行的时候就有很长一段时间完全不用去关心日志,到后来偶尔涉及到的时候,也都是从其他地方采用cv大法直接搬用。 不过,随着工作时间的变化,随着手头上任务重要程度的变化2017-02-22 19:59:067013
6
-
原创 使用CXF和spring搭建webService服务
虽然下一个项目需要使用xfire,但是在查资料的过程中还是看到有不少地方都说cxf比xfire更好,cxf继承了xfire,但是不仅仅包含xfire,因此便也一起来尝试尝试。大概是有了xfire的经验吧,cxf的搭建比xfire快了许多。cxf的许多参数感觉和xfire差不多,因此便不做太多的解释,如果不明白的可以参考之前的xfire搭建来促进理解。搭建过程如下:1、使用eclipse创建一个ma2016-06-08 17:33:574711
0
-
原创 java中的mvc和三层结构究竟是什么关系
一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了。 屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库和其他一些细节上的技术如何,总的来说大的框架结构都是差不多的。 说白了,也就是mvc和三层结构。 而mvc和三层结构究竟是什么关系,我曾在面试的过程中被人问过几次,也曾仔细的想过、查过这个问题,但2016-12-12 17:21:5214504
12
-
原创 项目优化总结
最近一个多月算是比较忙的,但是具体忙了什么却不太好说清楚,主要是因为做的事比较繁琐还不太容易量化,说简单点,就是和组内其他几个同事一起接手一个算是开发好的项目,并进行一定的优化。 说到这个项目,就需要先说一下我们公司的一些情况。 我们公司算是众多外包公司的一员,公司内的人员架构可以按两种类别来说,一种说法是本公司员工和其他公司的员工;另一种说法是,外援和厂商。这里的外援说白了就等于是人员外包,有2016-11-23 17:02:055258
0
-
原创 java代码中init method和destroy method的三种使用方式
在java的实际开发过程中,我们可能常常需要使用到init method和destroy method,比如初始化一个对象(bean)后立即初始化(加载)一些数据,在销毁一个对象之前进行垃圾回收等等。 周末对这两个方法进行了一点学习和整理,倒也不是专门为了这两个方法,而是在巩固spring相关知识的时候提到了,然后感觉自己并不是很熟悉这个,便好好的了解一下。 根据特意的去了解后,发现实际上可以有2016-12-12 11:15:4436640
4
-
原创 使用poi和jfreechart生成excel图表图片
最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西。有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现。 除此之外,也有一些功能只需要生成对应的图标样式的图片就好,我们实现的时候主要用了两种方式,一种就是由前台生成图片base64码,然后后台解码生成图片插入到excel,但是这种方式有 一定的局限性,也就是当某些功能需要后台定时生成excel2016-09-19 11:17:057947
2
-
原创 java字符流
网上有很多地方说inputStreamReader和outStreamWriter、BufferedReader和BufferedWriter都是字符流。不过也有地方说inputStreamReader和outStreamWriter只是转换流,实现字节流到字符流的转换。 而在我看来,两种说法都有道理,如果一定要分个高下的话,那就更加趋向于认同前一种。 因为只要和FileInputStr2016-07-21 14:25:472310
0
-
原创 (一)java的由来
java的诞生:每一次设计语言的革新都是为了解决先前语言所遇到的不能解决的问题,B语言导致C语言的诞生,C语言演变成C++,java则继承了这两种语言的大部分特性。java最初的推动力是为了找到一种能够解决独立平台的、能够嵌入多种电器设备的语言。 java虽然受到了C++很大的影响,但是java并不是C++的增强版,他们在实践和理论上都有很大的不同,java与C++既不向上兼容,也不向下2015-03-03 16:47:081648
2
-
原创 java特征
java的核心是面向对象,与之相对的是面向过程的编程,在对整个java编程没有足够的理解和运用的情况下恐怕没办法很好的理解这两个概念。 在我的初步理解中,写一个程序就例如做一件事情,面向过程的思想或许就是指这一步做什么,下一步又做什么,直到完成这件事,突出的是做的步骤;而面向对象的思想则是这个人做什么,那个人做什么,直到合起来完成这件事;虽然结果都是完成这件事,但是一个着重点是做的步骤,2015-03-03 17:31:07658
0
-
原创 (三)java的数据类型
java是一种强类型的语言,所谓强类型,意味着每个变量都要有确定的类型,每个表达式也要有明确的类型,包括传递的某些参数。java中从大的方面分有两大数据类型,分别是基本数据类型和引用数据类型,基本数据类型是java中规定的八种,引用数据类型则是除此八种以外的所有类型,一般都是在程序中根据需要自定义的。 基本数据类型包括整形int、字节形byte、短整型short、长整型long、字符型c2015-03-12 09:02:41610
0
-
原创 问题解决了,可是为什么呢?could not find the main class.program will exitmain
今天重新学习socket编写简单的在线聊天,简单功能实现的情况下,一时心血来潮便想要把这程序打成可执行的jar包,以便于在桌面直接双击运行。参照自己之前写的那篇《》打好两个jar包以后却发现双击运行弹出如下错误:could not find the main class.program will exitmain错误如图所示:看到这错误,我不由的开始怀疑是否自己打包的过程有误,但是仔仔细细再看几遍2016-05-18 22:51:078593
0
-
原创 java发送邮件时遇到的坑
之前用163邮箱发邮件时明明是成功的,但是使用中国移动自己的邮箱时,无论如何在linux服务器中都发送不成功,一开始报如下错误:javax.mail.MessagingException: Unknown SMTP host: mail.chinamobilesz.com at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTrans2016-06-15 11:31:4011727
1
-
原创 jwt、oauth2和oidc等认证授权技术的理解
前言jwt、oauth2、oidc等,都是和认证授权相关的规范或者解决方案,因此要理解他们,就需要从业务场景的适用性一步步的分析和认识。一、认证授权业务场景理解就个人目前的理解来看,一个好的软件系统的构成可能需要包含但不限于以下几个方面:功能性能拓展安全不论是从公司或者项目角度而言,还是从个人开发者的角度而言,有相当大一部分可能都只在功能部分停留。何谓功能,我的理解就是实现业...2019-10-08 20:09:232808
0
-
原创 近期keycloak、nginx、https杂记
一、keycloak和nginx部署问题1.问题描述单独使用keycloak进行sso,在本地可以正常的单点登录。但部署到nginx,并且经过spring gateway时,却在输入用户名、密码之后抛出401错误码,提示no state cookie。2.解决思路经观察,发现正常情况下单点登录的请求url和参数中redirect_url是一致的,而经过nginx和spring gatew...2019-09-11 19:58:162291
0
-
原创 springboot2集成oauth2和keycloak以及admin rest api
前言以keycloak作为sso认证中心服务端,springboot2的客户端集成方式有很多种,例如仅集成keycloak的jar包方式、集成spring security的方式、以及security+oauth2的方式等。上述三种方式,从实现以及功能上来说均是一个比一个复杂。另外,springboot作为普通客户端的同时,也可以进行更多的集成,进而实现对keycloak服务端的操作,这就涉...2019-08-07 21:52:126808
0
-
原创 keycloak使用及sprinboot集成客户端记录(一)
一、SSOSSO,中文名称“单点登录”,英文全称是SingleSignOn。个人理解,大概就是统一入口登录、统一用户和鉴权管理、共用服务认证的意思。百度百科的标准解释如下:单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他联邦系统和应用软件的权限。同时这种实现是不需要管理员对用户的登录状态或其他信...2019-07-23 11:50:104613
0
-
原创 nginx获取ca证书信息并传递到java后端使用
背景说明在多数开放性的网络系统中,https的证书校验可能都只需要进行单向认证,即只需要客户端校验服务端证书,例如12306、支付宝等。但是,在一些特定交互的系统中,并不完全开放的网络场景下,为了进一步提升交互双方的可靠性,客户端和服务端都需要校验对方的证书信息,即双向认证。服务端和客户端这样一个网络架构中,一般是一对多的关系,即一个服务端对应着多个客户端。因此在证书双向认证的过程中,也就...2019-06-11 22:40:153004
2
-
原创 加密解密和CA证书杂记
最近两三个月,断断续续的一直在处理CA证书相关的事情。CA证书本质上也是一种加解密,因此就自然而然的涉及到一些加密和解密的技术,这就让我在了解CA的同时,也对加密和解密有了更进一步的认识和理解。以下便是一个比较杂,但是似乎又有一定关联性的总结,我分了这样几个部分:1.加密和签名2.对称加密和非对称加密3.密钥、公钥和私钥4.图解签名和加密的必要性5.CA证书转换加密和签名网络通...2019-05-21 20:11:092075
0
-
原创 CA双向认证补充:java客户端使用优化及证书链和Android证书
说明上篇详细描述了自定义ca证书的步骤以及浏览器作为客户端和java作为客户端的使用方法。但是之前的java客户端使用代码还存在一定的问题:首先,之前的客户端根证书是在代码外部使用keytool安装到jdk证书库,次数多了就显得麻烦;其次,之前的代码只能支持域名访问,这样没有真实域名时就必须更改host文件;于是通过查找网络资料修改之后,便有了新的操作方式,使得java客户端可以支持ip...2019-04-11 18:15:421673
16
-
原创 支付宝支付开发要点记录
完整的走完一个支付业务流程后,发现还是有不少需要注意的地方,为了避免时间长了忘记一些细节,这里先对一些流程和要点进行记录。整体业务流程支付宝支付分很多种支付方式,例如wap、web、app、当面付(扫码和条码)等,细节上有区别,但是大的流程其实都差不多,尤其是各个支付方式的前期准备工作都差不多,整理后大致如下:创建支付宝账号并登陆;创建应用;添加相应支付功能并签约,需要营业执照;...2019-02-12 11:47:161388
0
-
原创 码云托管小项目-本地笔记文件管理系统
项目描述这是一个很简单的类博客系统,旨在方便管理本地笔记文档,整体采用spring+springmvc+angularjs+bootstrap+markdown实现,主要包括分类、查看、搜索等功能。项目背景由于记忆有限,学的东西难免忘记,因此就需要一定的笔记来帮助记忆。 之前基本都是在CSDN用博客,或者有道云笔记,或者直接本地文件系统的文档来充当笔记。 这些方式都有他们的优势...2018-03-29 17:22:422687
0
-
原创 记java动态加载配置文件不成功的问题
一、问题背景:在我们之前的项目中,很多数据是配置在application.properteis文件中的,这样很多时候修改了数据后,只需要重启应用,而不需要重新打包编译。 但是近期有一个新的需求,运维希望不仅不用重新打包编译,即便是重启,也要省掉。二、问题描述:之所有之前修改了数据后需要重启应用,是因为我们的项目中application.properties文件只会加载一次,然后就放在...2018-03-02 13:21:24586
0
-
原创 JAVA代码发送邮件示例和解释(二)
之前有使用过一次在程序中发邮件的功能,也写了一篇相关的笔记,当时使用的是163邮箱,经过测试多个163账号都是可行的。但是最近把账号换成中国移动@chinamobilesz.com这种结尾的时候,却一直连接不上服务器,验证不通过,于是只好重新进行了一些改动,这期间也有参考另一个同事之前的写法,成功实现。这种实现方式和上一种大同小异,只是经过测试后,这种方式不仅163的邮箱没有问题,中国移动@chi2016-06-06 09:12:333155
1
-
原创 CA双向认证完整实现步骤(附java客户端代码)
一、基础概念注:以下概念除专业名词外,均为个人理解,不具备权威性。1、什么是系统安全管理置于公网的系统,通常都需要一定的安全管理,据我个人理解,这里的安全管理主要分三个方面:一是应用内的权限控制,比如具体应用的用户名、密码等;二是应用数据传输过程中的安全机制,例如各种报文的加解密方案;三是数据传输前的通讯安全机制,保证通讯双方都是可靠可信任的,PKI就是其中一个解决方案。2、什么是P...2019-03-18 18:35:419243
10