- 博客(95)
- 收藏
- 关注
原创 【Mycat1.6】缓存不生效问题处理
系统做读写分离,有大量读需求,基本没有实时获取数据业务需要,所以可以启用缓存来减缓数据库压力,传统使用mybatis的缓存需要大量侵入式声明,所以结合需求使用Mycat中间件来满足。
2023-09-06 11:32:34 364
原创 【Spring手写动态分表】异构数据库双写
有日志数据提供到一个kafka数据队列,要求将数据按月份动态分表(如table_2022_10),同步写入到前置库(MySQL)及业务库(Postgres)中,本次不涉及查询/修改/删除。
2023-04-18 15:56:11 822 1
原创 物联网基于pole异地组网
背景物联网设备使用5G流量,无公网IP,需要将这些设备通过虚拟组网形成VLAN的效果,虚拟局域网内互联互通。Pole介绍不仔细开展,大致作用是多个不同网络的客户端通过一个公网服务端连接,利用KCP/UDP协议,使客户端可以通过虚拟ip访问,非常符合我的要求,详细地址:https://github.com/polevpn/polevpn_router,放上一张官方架构参考。环境准备router服务端:临时租用阿里云ECS服务器,自带公网ip gateway客户端:模拟两...
2022-02-22 16:49:23 5129
原创 emmc闪存分区挂载
背景开发板中,emmc嵌入式多媒体控制器即闪存,设备参数有32G闪存,但实际使用命令查询则远远不足,所以怀疑存在未挂载的分区进行分区查询执行fdisk -l,显示出/dev/mmcblk0(即闪存)有29GDisk /dev/mmcblk0: 29 GB, 31037849600 bytes, 60620800 sectors947200 cylinders, 4 heads, 16 sectors/trackUnits: cylinders of 64 * 512 = 32768 byte
2021-11-01 10:06:42 2530
原创 某酷kux文件转mp4方法
背景优酷客户端下载的视频格式为专用的kux格式,无法进一步转换利用,需要转为MP4使用优酷客户端内置有ffmpeg,带有优酷的编码/解码器,所以可以利用其进行转换测试官方ffmpegffmpeg -y -i E:\1.kux -c:v copy -c:a copy E:\1.mp4会提示格式不存在E:\1.kux: could not find codec parameters优酷ffmpeg进入{客户端安装地址}\nplayer64,发现有ffmpeg.exe打开cmd,输
2021-10-06 11:58:35 4226 12
原创 VSCode开发gsoap项目中解决undefined reference
前提使用Win10,Mingw64,VSCode作为开发工具具体代码生成参考使用gSOAP生成Web Services框架代码,本文不再详述项目最终结构|--.vscode|--|--c_cpp_properties.json # 配置引入依赖|--|--launch.json # 配置启动|--|--settings.json # 全局配置|--|--tasks.json # 配置任务|--main.c # 程序主入口|--MobileCodeWSSoap.nsmap|--soa
2021-07-20 10:33:28 450
原创 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 1941 1
原创 django-admin动态多选框表单实现
背景借助django-admin,可以快速得到CRUD界面,但若需要创建多选标签字段时,需要对表单进行调整示例model.py一个tag(标签类),一个book(书本类) book携带tag,这里不借助有性能问题的外键class tag(models.Model): name = models.CharField(max_length=20, verbose_name='标签')class book(models.Model): name = models....
2021-05-12 14:58:50 4106 5
原创 记一次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 380 1
原创 Springboot版动态代理网关实现
背景首先使用代理,希望接口结果直接时代理方的,不希望有封装;其次使用一些云原生网关时,业务有时会希望干预一下代理流程,比如请求前做点通知、事后存点日志,这些云原生网关不好处理,还是得代码处理;所以引出下文。servlet方式(smiley-http-proxy-servlet)特点基于Servlet进行服务代理,只需要进行相关的配置之后,就能进行服务代理有特殊要求要对代理服务进行改造,如下文需要进行动态的路由代理,增删路由不需要修改代码/重启服务Spring Boot示例这里以动态网关
2020-10-26 22:28:49 3829 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 611
原创 【MockMvc】在Oauth2/Security下不能正常访问token解决
背景写单元测试的时候,用Mock模拟请求oauth2的token时,发现一直都为空;同时,带token头的校验也不被Security拦截了,这引起了我的疑惑核心根据不被拦截,不难发现,其实Oauth2/Security的拦截器没有被加载进单元测试中,使用MockMvcBuilders.addFilters方法即可代码添加上springSecurityFilterChain过滤链即可@S...
2020-03-03 23:35:51 1752 2
原创 【Swagger】动态多源的SwaggerAPI文档生成
背景新需求中需要实现动态生成API及文档的功能,生成API不说,但动态生成Restful风格的API一般没接触过,以往都是直接代码扫描产生文档的,这次需要进行研究设计思想首先在熟悉完整个OpenAPI设计规范及Swagger-UI后,设计起来没那么困难了,主要需要抓住两个关键点:开源的Swagger-UI项目,是可以传入不同的json/yaml来展现不同的API文档的,这个网上挺多的...
2020-02-06 15:21:46 1138
原创 【Oauth2】实现表单登录后返回jwt token
背景由于前后端分离的原因,在使用默认的表单登录时,希望能像密码模式一样直接返回JWT信息。(为什么不用授权码模式?用,但想保留默认的表单登录)思想通过认证成功后的成功处理器AuthenticationSuccessHandler,来处理登录后进行jwt生成并返回的流程。走过的弯路使用OAuth2RestTemplate用OAuth2RestTemplate来进行API...
2019-09-30 17:31:40 2595 2
原创 【Spring Security】增加RSA密文传输登录
背景由于原来登录表单和oauth/token使用时,是走明文传输的。为了保证传输中不容易被窃取,采用RSA加密明文密码后再进行传输,后台仍然是BCrypt的方式存入数据库。但通过查阅资料,有些写法是通过继承PasswordEncoder的方式实现,但在5.x版本中,自定义的加密器会缺少id,所以需要换个方式实现。版本 Spring Security:5.x 预定方案或许...
2019-09-30 16:20:09 4347 1
原创 Spring Cloud架构解析
前言工作需要,通读了许多关于Spring Cloud的资料,通过自身的消化,也总结出一些架构图来供参考,这里分为微服务中心以及监控中心解析,不足之处请指正(参考项目:https://github.com/zhoutaoo/SpringCloud)微服务中心网关:唯一外网,负责对外,同时可以对流量进行管理 微服务集群: Config Client:实时对接最新配置,保证应用自更新 ...
2019-05-22 17:01:41 1699
原创 LTS详细使用流程
前言工作需要使用实时任务,虽然该框架目前属于无人维护的状态,但综合考量下还是使用LTS。编译过程参考LTS框架,不再过多叙述,本文版本v1.7.2。启动流程基础环境:这里选用Zookeeper、MongoDB以及MySQL作为前提条件进行启动,具体不展开 按照官方文档编译出dist,备份好原有conf(很重要) 启动lts-admin(含monitor): 修改conf文件下的l...
2019-05-22 10:55:01 6020 1
原创 关于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 11284 4
原创 Openlayers利用原生Canvas绘制闪烁样式
背景项目需要地图上实现不断报警的闪烁样式,之前是通过Overlay来处理的,但Overlay遮挡要素,无法很好的触发事件,所以就转而使用Canvas原生实现。过程主要参考:openlayers4中闪烁点的实现、canvas-flashMarker-RunJS。改造原flashMarker的使用原本的做法是通过构造新的对象new FlashMarker(map, citys),每次构...
2019-03-07 21:04:53 2109 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 285
原创 【Mybatis】使用TypeHandler传递Postgis数据类型
前言postgresql数据库的geometry类型无法被mybatis识别,单独去写SQL函数看起来也有点蠢,刚好搜索到GIT上的项目mybatis-typehandlers-postgis,不需要再去造一遍轮子,里面的文档已经很清晰,这里主要讲用法。用法思路利用mybatis提供的BaseTypeHandler提供的类型转换能力,结合postgis提供的数据类型,得到转换实现。...
2019-01-25 19:58:32 3745 2
原创 通过SLD_BODY动态改变geoserver的图层样式
目录要点使用取标准样式修改为自定义规则GetMap使用URL调用方式Openlayers调用方式GetLegendGraphic使用访问报错问题geoserver的WMS服务支持url参数上传sld_body来动态定义访问图层的样式,本文以GetMap以及GetLegendGraphic为例进行说明。要点一定要注意样式格式的正确性,样式不能有缩进,否...
2018-11-07 23:11:01 3312
原创 Jfinal下使用WebUploader进行分片上传
背景大文件直传易受网络波动而失败,同时运维人员一直维护失败的队列不合理,需要实现分片上传,webuploader已经是很成熟的分片上传插件了,这里使用webuploader进行分片。前端分片通过常规配置可得,主要交互通过以下两个事件可得:beforeSend:分片发送前校验文件,分片若已存在则跳过(这里保证了失败重新传能快速跳过已上传部分) uploadSuccess:文件整体上...
2018-07-17 16:42:48 1004
原创 COS文件上传改为流上传
背景在COS上传组件中,频繁的上传大文件的情况下,临时文件夹不能及时清理,同时由于需要频繁的写入文件,上传效率大打折扣,所以需要研究流上传的内容。原理COS的上传组件中,写入文件的核心代码位于MultipartRequest.java中,需要改造这部分的代码,让写入文件变成写入流,得到流再处理其他事情。源代码点击此处代码先写个实体类,存流及其他信息。import java.io.InputStre...
2018-06-28 16:25:23 2873 3
原创 记一次MongoDB异常调试
背景在一些边界条件下,我写的关于读取MongoDB数据接口异常缓慢,请求一次差不多10s,但正常条件下访问基本在50ms左右。问题所在在分析结构后,发现原来正常情况快是因为我启动了缓存,已经查到的数据直接走内存,所以快;慢的原因是MongoDB数据庞大了,查一次大概需要10s。解决方法需要对查询语句进行优化,利用索引,将查询条件转化,提高速度。//此处的1代表升序,因为数据量大避免阻塞将backg...
2018-06-06 21:17:24 490
原创 【SSO简介】关于CAS的使用和注意事项
背景公司要对一些系统做一个集成,需要实现单点登录功能,我就被赶鸭子上架研究了几天SSO,其中发现CAS挺经典,就在短暂的时间内着重研究了CAS。原理以最简单的步骤来说明:搭建一个统一验证中心,用以处理登录状态保存及跳转逻辑对每个应用系统加上filter,保证访问会跳转到统一验证中心上访问未登录的应用系统,首先会跳转到统一验证中心进行登录(这里可以选择数据库去存储登录状态)登录成功后会携带上生成的t...
2018-04-28 23:18:26 563
原创 用思维导图的方式来描述整个项目
前言我在浏览项目时发现一篇文章《开源项目spring-shiro-training思维导图,让项目不再难懂》,关于项目总结写的很好,我借此改进并整理成我自己的惯用方式,也借此希望能带给大家一些启发。改进的目的主要是原楼主的导图过于冗长,不适合略读,同时也不符合我自身的习惯。我自己的导图结构项目简介:主要描述项目的信息安装使用:用于一些入门性的指导架构:一般项目开发都会有架构图,直接贴一张架构图,美...
2018-03-29 22:47:36 5312
原创 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 316
原创 利用Geotools来转换影像的坐标系
背景若有一幅航拍的原始影像,需要自动产品化,那就必须要在后端进行坐标系的统一转换,这时用到开源的Geotools就很简单了。处理使用Operations类下的resample方法(重采样)可以解决这个问题,它的方法定义如下: Coverage org.geotools.coverage.processing.Operations.resample(Coverage source, Coordina...
2018-03-06 09:08:45 5477 4
原创 【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 55967 8
原创 Tomcat下的WebSocket使用
环境tomcat 9JDK8带框架的web项目使用Jar包的选择由于网上的教程所使用的包很多很杂,可能一般人看不出到底怎么用,其实选择很简单J2EE:有j2ee的javaee-api其他:javax.websockettomcat:自带websocket-api其实另外的两种包都是封装了javax.websocket,由于这里用tomcat,所以直接使用
2018-01-25 21:00:11 6128 2
原创 利用SQuirreL SQL Client创建新连接
SQuirreL SQL Client简介SQuirreL SQL Client是一款使用JDBC连接的数据库客户端连接工具,只要有JDBC的定义就能进行连接,十分方便安装首先去百度搜索下载这个工具,是一个可执行的jar包双击会打开安装程序,这样就可以进行安装了,如果被其他打开方式占用了,可以用命令行java -jar squirrel-sql-3.7-standard.jar来打开然后就是安
2017-12-03 23:30:20 1190
原创 ODOO中数据库视图的支持
视图支持示例这是ODOO销售模块下报表里的一个销售报表模型,该模型是用于充当数据库视图的,即不存储成表而达到表的效果# -*- coding: utf-8 -*-# Part of Odoo. See LICENSE file for full copyright and licensing details.from odoo import toolsfrom odoo import api,
2017-11-17 16:39:05 1411
原创 ODOO通过JS写入模型的两种方法
问题来源ODOO在Qweb中是可以使用JQuery的,所以可以通过前端异步请求后端方法来使用。AJAX方法既然可以使用JQuery,那就可以用$.ajax()方法来请求Controller里的方法,后端控制器的例子如下:class Controller(http.Controller): @http.route("/model/add",type='http',auth="publi
2017-09-30 20:47:57 7364 5
原创 SSAS高级应用
维度属性归类为了方便对UI上的维度进行管理,可以定义好归类文件夹,让属性分类保存。打开其中一个【维度】,选中某个【属性】,打开它的属性窗口【AttributeHierarchyDisplayFolder】中输入或选择一个文件夹名,如下图 最终显示效果如图 对离散值进行分组针对维度里有离散的属性值,而希望分析它的范围的时候,可以使用这样的方法在SSAS里实现,而不必对源表
2017-08-11 10:58:58 975
原创 geoserver切片出现HTTP ERROR 403解决
问题来源在geoserver的【Tile Layers】里打开切片页面时会出现403,大概如图所示。 但在jetty里全是???,看不到原因。所以也转到tomcat试过,发现可能是权限上的原因。 思考问题的产生既然是权限的问题,肯定跟账号有关系,由于我用的geoserver内置的root账户登陆,但在geoserver中没有记录,也就没有权限,所以打不开切片页面,如果再使用已注册的admin
2017-08-05 20:28:01 2108
原创 SSAS对称维度与非对称维度
两种维度的不同对于我的理解来说,两种维度只是对父子级别的不同表达方式而已,对称维度适合子级的数量固定的结构,例如时间维度(年-季度-月-周等都是对称的,每一年有固定的4季度,以此类推);而非对称维度就是子级数量不固定的结构特别适用,例如产品维度(有些产品只有大类,有些还细分小类)。设计对称维度对称维度设计起来很简单,也很符合关系数据的理解。最主要的就是要建一个层次结构,来定义它的层级关系(注意这里
2017-07-28 17:28:24 446
原创 SSRS地图图例嵌入自定义图像显示解决
问题来源在Report Services上使用地图点图层时,想给点赋予一个特殊的图形来替代普通的图形时,发现图像虽然在地图上可以显示,却无法在图例上显示,下面通过我的解决方法来给大家解答。 浏览问题首先右键【点图层】,打开【点属性】,嵌入喜欢的图像。 然后将【点颜色规则】、【点大小规则】全部变为默认。要将图像显现在图例上,要在【标记类型规则】上下功夫,但打开窗口后却没有看到图像的选项,很让人尴
2017-07-26 21:39:50 1129
原创 SSRS项目创建
创建数据源首先要新建一个解决方案,然后再新建SSRS项目,步骤如图所示: 完成新建步骤后,就可以开始创建新数据源了,对【共享数据源】右键【新建数据源】,界面如图(这里匹配SSAS选Analysis Service数据库): 编辑数据源信息:点击【编辑】进入信息编辑,在这里可以配置好数据源信息(由于SSAS只有windows身份验证,所以无法填用户名密码) 到此数据源新建完毕创建数据
2017-07-24 22:19:57 583
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人