
Java Web
文章平均质量分 58
u013323965
这个作者很懒,什么都没留下…
展开
-
【Spring手写动态分表】异构数据库双写
有日志数据提供到一个kafka数据队列,要求将数据按月份动态分表(如table_2022_10),同步写入到前置库(MySQL)及业务库(Postgres)中,本次不涉及查询/修改/删除。原创 2023-04-18 15:56:11 · 904 阅读 · 1 评论 -
Elasticsearch作为时序数据库使用(Springboot版)
Spring-boot-elasticsearch-timeseries-demo该项目作为Elasticsearch用于时序数据库用途的demo,核心是使用ES模板来快速生成分片索引,查询时借助索引别名完成分片的聚合查询,本例按月进行分片,例如my_index_test_2021-6环境ES集群(7.1.1):node1:192.168.56.101:9200node2:192.168.56.102:9200node3:192.168.56.103:9200前提需要先创建好模板,原创 2021-06-11 12:01:42 · 2065 阅读 · 1 评论 -
记一次JDK类加载强转错误
背景业务需要在运行时动态加载class文件,并注册到spring bean中。由于JDK的类加载会拿到Object实例,所以要用到强转类型。加载例子一般见网上的例子即可,本例使用a.class,定义一个cn.demo.MyDemo类,继承于IDemo接口。public class MyDemo implements IDemo { @Overided public String show() { System.out.println("YES"); }}在Main方法中,强转后使用s原创 2020-10-28 23:07:57 · 401 阅读 · 1 评论 -
Springboot版动态代理网关实现
背景首先使用代理,希望接口结果直接时代理方的,不希望有封装;其次使用一些云原生网关时,业务有时会希望干预一下代理流程,比如请求前做点通知、事后存点日志,这些云原生网关不好处理,还是得代码处理;所以引出下文。servlet方式(smiley-http-proxy-servlet)特点基于Servlet进行服务代理,只需要进行相关的配置之后,就能进行服务代理有特殊要求要对代理服务进行改造,如下文需要进行动态的路由代理,增删路由不需要修改代码/重启服务Spring Boot示例这里以动态网关原创 2020-10-26 22:28:49 · 3970 阅读 · 3 评论 -
【动态JNDI】SpringBoot动态创建JNDI源
背景一般JNDI源都配置在tomcat之类的web容器里,供各个应用使用,但如何在应用内部动态创建JNDI数据源呢?若能在应用中依赖命名服务,则根据业务处理不同数据源核心利用InitialContext上下文的rebind方法绑定命名服务javax.naming.Reference代理使用apache-dhcp2的数据源工厂生成DataSourceSpring Boot项目参考pom<parent> <groupId>org.springframework.bo原创 2020-07-18 19:54:14 · 655 阅读 · 0 评论 -
【MockMvc】在Oauth2/Security下不能正常访问token解决
背景写单元测试的时候,用Mock模拟请求oauth2的token时,发现一直都为空;同时,带token头的校验也不被Security拦截了,这引起了我的疑惑核心根据不被拦截,不难发现,其实Oauth2/Security的拦截器没有被加载进单元测试中,使用MockMvcBuilders.addFilters方法即可代码添加上springSecurityFilterChain过滤链即可@S...原创 2020-03-03 23:35:51 · 1792 阅读 · 2 评论 -
【Swagger】动态多源的SwaggerAPI文档生成
背景新需求中需要实现动态生成API及文档的功能,生成API不说,但动态生成Restful风格的API一般没接触过,以往都是直接代码扫描产生文档的,这次需要进行研究设计思想首先在熟悉完整个OpenAPI设计规范及Swagger-UI后,设计起来没那么困难了,主要需要抓住两个关键点:开源的Swagger-UI项目,是可以传入不同的json/yaml来展现不同的API文档的,这个网上挺多的...原创 2020-02-06 15:21:46 · 1191 阅读 · 0 评论 -
【kafka】Java连接出现Connection refused: no further information
背景在CentOS配置好所有东西后,使用kafka消费者连接能查到东西,而使用Java远程就不行,提示Connection refused: no further information,仔细分析是poll时查不到节点的原因。解决那问题应该是出在kafka里,排除了防火墙端口问题,那就是配置导致节点不能被远程检测到,通过翻阅资料,发现通过改/config/server.properties,就能解...原创 2018-02-26 11:39:43 · 56154 阅读 · 8 评论 -
Zookeeper报Error contacting service. It is probably not running的处理
背景在使用./zkServer.sh status查看状态后发现出现Error contacting service. It is probably not running的错误,排除了zoo.cfg和myid的原因。解决其实是防火墙的原因,将集群所有的防火墙关闭就可以使用了,也可以特定打开以下端口:2181:提供服务3888:选举2888:集群内通讯...原创 2018-03-12 22:36:44 · 327 阅读 · 0 评论 -
COS文件上传改为流上传
背景在COS上传组件中,频繁的上传大文件的情况下,临时文件夹不能及时清理,同时由于需要频繁的写入文件,上传效率大打折扣,所以需要研究流上传的内容。原理COS的上传组件中,写入文件的核心代码位于MultipartRequest.java中,需要改造这部分的代码,让写入文件变成写入流,得到流再处理其他事情。源代码点击此处代码先写个实体类,存流及其他信息。import java.io.InputStre...原创 2018-06-28 16:25:23 · 2938 阅读 · 3 评论 -
Jfinal下使用WebUploader进行分片上传
背景大文件直传易受网络波动而失败,同时运维人员一直维护失败的队列不合理,需要实现分片上传,webuploader已经是很成熟的分片上传插件了,这里使用webuploader进行分片。前端分片通过常规配置可得,主要交互通过以下两个事件可得:beforeSend:分片发送前校验文件,分片若已存在则跳过(这里保证了失败重新传能快速跳过已上传部分) uploadSuccess:文件整体上...原创 2018-07-17 16:42:48 · 1039 阅读 · 0 评论 -
【Mybatis】使用TypeHandler传递Postgis数据类型
前言postgresql数据库的geometry类型无法被mybatis识别,单独去写SQL函数看起来也有点蠢,刚好搜索到GIT上的项目mybatis-typehandlers-postgis,不需要再去造一遍轮子,里面的文档已经很清晰,这里主要讲用法。用法思路利用mybatis提供的BaseTypeHandler提供的类型转换能力,结合postgis提供的数据类型,得到转换实现。...原创 2019-01-25 19:58:32 · 3823 阅读 · 2 评论 -
浅谈项目的缓存使用
背景以Spring boot 1.x为例,结合redis做数据缓存,下面将讲述Spring缓存与java对象缓存。Spring缓存@Cacheable方法,关于用法,网上已经有很多这样的例子,这里不展开了,主要要注意Spring boot 1.x与2.x的调用区别、统一命名格式的定义、默认使用JDK序列化还是JSON序列化。JDK序列化: 优点:反序列化不需指定类型 缺点:速...原创 2019-03-06 23:11:26 · 306 阅读 · 0 评论 -
关于docker-compose的volume映射发生Permission denied的解决
背景使用docker-compose命令加载redis官方镜像实例时,映射的卷发生Permission denied错误,如图docker-compose.yml可以看到,我将目录里的data/redis文件夹与实例里的/data进行映射version: '3'services: redis: image: redis:alpine container...原创 2019-04-22 09:51:47 · 11777 阅读 · 4 评论 -
LTS详细使用流程
前言工作需要使用实时任务,虽然该框架目前属于无人维护的状态,但综合考量下还是使用LTS。编译过程参考LTS框架,不再过多叙述,本文版本v1.7.2。启动流程基础环境:这里选用Zookeeper、MongoDB以及MySQL作为前提条件进行启动,具体不展开 按照官方文档编译出dist,备份好原有conf(很重要) 启动lts-admin(含monitor): 修改conf文件下的l...原创 2019-05-22 10:55:01 · 6164 阅读 · 1 评论 -
Spring Cloud架构解析
前言工作需要,通读了许多关于Spring Cloud的资料,通过自身的消化,也总结出一些架构图来供参考,这里分为微服务中心以及监控中心解析,不足之处请指正(参考项目:https://github.com/zhoutaoo/SpringCloud)微服务中心网关:唯一外网,负责对外,同时可以对流量进行管理 微服务集群: Config Client:实时对接最新配置,保证应用自更新 ...原创 2019-05-22 17:01:41 · 1738 阅读 · 0 评论 -
【Spring Security】增加RSA密文传输登录
背景由于原来登录表单和oauth/token使用时,是走明文传输的。为了保证传输中不容易被窃取,采用RSA加密明文密码后再进行传输,后台仍然是BCrypt的方式存入数据库。但通过查阅资料,有些写法是通过继承PasswordEncoder的方式实现,但在5.x版本中,自定义的加密器会缺少id,所以需要换个方式实现。版本 Spring Security:5.x 预定方案或许...原创 2019-09-30 16:20:09 · 4414 阅读 · 1 评论 -
【Oauth2】实现表单登录后返回jwt token
背景由于前后端分离的原因,在使用默认的表单登录时,希望能像密码模式一样直接返回JWT信息。(为什么不用授权码模式?用,但想保留默认的表单登录)思想通过认证成功后的成功处理器AuthenticationSuccessHandler,来处理登录后进行jwt生成并返回的流程。走过的弯路使用OAuth2RestTemplate用OAuth2RestTemplate来进行API...原创 2019-09-30 17:31:40 · 2664 阅读 · 2 评论 -
Tomcat下的WebSocket使用
环境tomcat 9JDK8带框架的web项目使用Jar包的选择由于网上的教程所使用的包很多很杂,可能一般人看不出到底怎么用,其实选择很简单J2EE:有j2ee的javaee-api其他:javax.websockettomcat:自带websocket-api其实另外的两种包都是封装了javax.websocket,由于这里用tomcat,所以直接使用原创 2018-01-25 21:00:11 · 6193 阅读 · 2 评论 -
RSA在前端加密后端解密的应用
问题来源本人要搭出一个系统的原型,需要账户登录功能,那最实用的密码加密算法肯定是RSA了,鉴于密钥使用的特殊性,所以在前端加密后端解密是最好的选择了。本文有两个可行的思路,主要详细写第一个(以JFinal框架为例)。思路为了避免密钥对传到前端被截获,所以密钥要在后端生成,并存于session里,然后把公钥传给前端供前端JS加密,前端ajax只传回账号和公钥加密密码,后端得到公钥加密密码原创 2017-04-03 23:06:21 · 1452 阅读 · 1 评论 -
POI获取excel的使用建议
问题来源一开始,为了跟别人的旧系统实现远程对接,借助excel来作为中介,来导入到新的库里。而主力就是大名鼎鼎的POI,优秀的读EXCEL组件。主要建议若引用jar包后仍出错,请注意Xmlbeans是否有加载,没有请下载,这是因为POI内部会将表解析成xml格式,必须用到这个包。注意HSSF和XSSF的区别:HSSF用于xls(即旧版),XSSF用于xlsx(即新版)。合理原创 2016-12-01 23:42:55 · 2379 阅读 · 0 评论 -
[Java基础笔记]常见事件与监听器部分
个人整理笔记,欢迎转载原创 2016-07-26 15:37:47 · 564 阅读 · 0 评论 -
[Java基础笔记]线程部分
个人笔记整理,欢迎转载原创 2016-07-26 16:09:26 · 443 阅读 · 0 评论 -
[Java基础笔记]服务器/客户端交互部分
个人笔记整理,欢迎转载原创 2016-07-26 17:15:00 · 305 阅读 · 0 评论 -
[Java基础笔记]读写部分
个人笔记整理,欢迎转载原创 2016-07-27 08:29:10 · 334 阅读 · 0 评论 -
[Java基础笔记]注释风格及杂项部分
个人笔记整理,欢迎转载原创 2016-07-27 16:51:57 · 302 阅读 · 0 评论 -
问题:Eclipse新建web项目出现The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build P
本文属于转载,经本人测试方法确实可用原文地址问题:Eclipse新建web项目出现The superclass "javax.servlet.http.HttpServlet" was not found on theJava Build Path新建web项目后都,jsp页面顶端出现“红色”的报错信息:The superclass "javax.servlet转载 2016-07-29 08:28:07 · 1568 阅读 · 0 评论 -
Struts2 动态Action的三种实现方法
备注:原文不详,故无法贴网址最早使用动态方式调用是在spring中,没想到Struts2也支持动态方法调用了,真是方便不少啊,呵呵,下面就来说说吧 :-) 1.动态方法调用 Struts2支持动态方法调用,它指的是一个Action中有多个方法,系统根据表单元素给定的action来访问不同的方法,而不用写多个Action。 使用动态转载 2016-07-29 08:33:26 · 4818 阅读 · 0 评论 -
Struts2动态方法调用
原文网址在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多第一种方式:指定method属性struts2.xml:method="add">add"type="chain">add.jsp method="plainText">plaintext.jsp转载 2016-07-29 08:38:02 · 283 阅读 · 0 评论 -
[Java基础笔记]JDBC初步
个人笔记整理,欢迎转载原创 2016-07-26 17:01:49 · 325 阅读 · 0 评论 -
[Web基础笔记]JavaScript部分
简介ECMAScript:核心DOM:文档对象BOM:浏览器对象编写自定义的JavaScript函数 var xx = function xx(){..}注意html最好还是从外部文件来包含js代码(用src属性指向url)面向对象创建类的原型//第一种var 类 = new Oblect();类.属性 = ..;类.方法 = fun原创 2016-07-29 16:11:30 · 311 阅读 · 0 评论 -
[Web基础笔记]html部分
个人笔记整理,欢迎转载原创 2016-07-29 16:09:19 · 317 阅读 · 0 评论 -
[Web基础笔记]JSP部分
个人笔记整理,欢迎转载原创 2016-08-01 10:50:59 · 461 阅读 · 0 评论 -
[Web基础笔记]EL及Ajax部分
个人笔记整理,欢迎转载原创 2016-08-01 11:11:49 · 392 阅读 · 0 评论 -
PL/SQL Server 的tnsname.ora注意事项
tnsname.ora 作为连接远程数据库的必要配置,一定要配置对。SID版配置如你的的URL地址为jdbc:oracle:thin:@127.0.0.1:1521:xx(xx即为你的SID名称),那么你的配置如下ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =原创 2016-08-07 17:26:40 · 1453 阅读 · 0 评论 -
split方法在java及javascript中的不同
java中例如特殊符号(@#$%等),在java中要考虑正则表达式的问题,所以进行分隔时要先用charAt方法拆开,再在每个字符的前面都添加上"\\",这样做表示转回String时会变成"\@\#\$\%",再进行split就会使用转义符得到正确的结果。javascript中与上边一样的特殊符号,在javascript中就不需要考虑正则表达式的问题,怎么直接怎么用。原创 2016-08-12 08:52:05 · 426 阅读 · 0 评论 -
对于javaweb项目的catalina错误解决
问题来源有时开svn用别人的项目都会报如下的错严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Show原创 2016-09-22 09:01:19 · 21963 阅读 · 0 评论 -
[Java基础笔记]可视化窗体部分
个人整理笔记,欢迎转载原创 2016-07-26 14:39:51 · 675 阅读 · 0 评论