自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小浩子的博客

生活就像海洋,只有意志坚强的人才能到达成功的彼岸。

  • 博客(202)
  • 资源 (5)
  • 问答 (3)
  • 收藏
  • 关注

原创 java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/...

原因我也不清楚,百度很多说法,这里只说解决办法:jdk1.8、window环境1.在jre/lib/ext下放一个jar包: bcprov-jdk15on-1.66.jar2.在jre/lib/security下的java.security文件添加security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider最后坑来了,如果安装jdk的同时,也安装了jre,就是下面这种:那么,上面的改动一定要放在下面的单独jre目录

2022-03-06 11:49:57 2600 1

原创 记录常用的代码工具(三)--Id生成策略

生成唯一id,用于日志、业务唯一标识。一:uuidpublic static String getMD5String(String str) { try { // 生成一个MD5加密计算摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 计算md5函数 md.update(str.getBytes()); // digest()最后确定返回md5 ha

2022-01-17 15:27:51 294

原创 记录常用的代码工具(二)--Poi工具类

这里用的是apache的poi,提供API给Java程序对MicrosoftOffice格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件依赖的jar包:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependenc

2022-01-17 15:23:28 818

原创 记录常用的代码工具(一)--HttpClient

在企业环境中,httpclient基本是http最常用的工具,根据自己的开发经历,整合了一个通用的工具类包:<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version></dependency>工具类:单例模式支持多种请

2022-01-17 11:34:56 551

原创 开发者如何定义产品的对外协议

背景:近期遇到的一个问题,产品设计了好了一个方案,如何让开发者转化成技术上的协议,给到客户,能给予产品和技术评估。经过一段时间的探索,记录了一个方案。1.理解产品原型图,一定要非常的仔细2.将产品原型图的关系转化成数据库的关系3.将数据库关系转化成能支持的对外json格式第一步就不说了,先说说第二步,为什么要转化成数据库格式,因为产品的各个关系,最终的体现就是数据库关系,把产品划分到最小粒度,每个粒度表示一个数据库的字段,在通过组合成一张数据库网。为第三步做铺垫,产品能提供什么样的对外协议,可以由数

2021-03-02 20:17:04 175

原创 普通日志的记录

在很多情况下,相信查日志是一件很频繁的事情,那么怎么记录日志,会让查验问题的效率提高呢。其实也很简单,总结起来就是两个方面:全面精要日志的查询满足满足两个条件,大部分的问题可以通过简单快速的查询方式,少部分需要深入的问题可以直接使用代码打印的日志。对于大部分的日志查询,可以通过平台实现,比如,服务器在自己的机房,可以搭个elk,如果服务器在第三方,可用第三方的日志平台。这一块的日志,要全面,包含每个节点、模块。举个例子:一个完整的业务由好几个服务组成,那么日志就要把每个服务参与的方法,通过切面

2020-12-17 16:59:36 180

原创 高并发下的JSON处理方案

前提条件: JSON 的开源框架选择Jackson直接上货:ObjectMapperObjectMapper提供了读写JSON的功能支持pojo和流式构造是ObjectMapper是非常轻量级的操作,通常适合在每次调用时创建所有配置都是完全线程安全的在整个工程中涉及到json的处理通用方法:public class JsonParser { // 线程安全的,可以采用全局共享 private static volatile ObjectMapper objectMappe

2020-10-12 17:27:45 1113

原创 内部http接口调用推荐用Feign

什么是Feign,摘自官方文档的介绍:Feign是一个声明式web服务客户机。它使编写web服务客户机变得更容易。使用Feign创建一个界面并注释它。它支持可插入注释,包括伪注释和JAX-RS注释。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注释和使用Spring Web中默认使用的httpmessageconverter的支持。Spring Cloud集成了Ribbon和Eureka,以及Spring Cloud load均衡器,在使用Feign时提供负载

2020-09-02 16:37:41 495

原创 分享一个关于数据链的技巧

假设有这么场景,一个考试系统,有两种题型,一种题是一个问题,一种题是一堆题,后者是属于问题链,也就是,要答对一堆题,才能算是完成一个题目。那么,我们在数据中是怎么去表示这种一堆题呢,方法有多种,可以加个表作为连接信息,也可以加个字段表示,表示方法也有很多种,有总-分,也有分。我推荐用最小的操作,即加一个下一题的字段,如果一道题的完成需要完成a,b,c三个子问题,可以在a的下一题填入b,b的下一题填入c,如果不填,则表示只有一个问题的题目。现在问题来了,数据库倒是不难,可是传输数据怎么设计,假设用json

2020-08-10 10:46:20 516

原创 Mybatis in查询传入字符串参数最好的解决方法

今天遇到一个问题,要在mybatis的语句中把string传入in,如果用#{} ,则会被解析成一个参数,比如:#(‘aa,bb,cc’),网上有一个解决方法,使用KaTeX parse error: Expected 'EOF', got '#' at position 6: {},不过#̲传入参数可以预防sql注入攻击…不行,所以不推荐该方法。我自己想了一个笨方法,如果能确定in的选项个数不多,10个以内,可以采用逐个添加,比如:xxx xxx(... @Param("aa

2020-08-05 20:08:30 1927 1

原创 springboot 配置多数据源

原理很简单,是利用spring的ioc,可以这么理解,数据源也是一个bean,这个bean读取一套数据库连接信息,多数据源便是多创建几个这样的bean,只要名字不同即可。如下:spring: datasource: test1: driver-class-name: xxx jdbc-url: xxx username: xxx password: xxx test2: driver-class-name: xxx

2020-06-30 15:56:11 234

原创 springboot、springcloud、dubbo版本兼容

开发的时候版本不兼容挺折腾的,springboot、springcloud、dubbo这三者之间的兼容,以springboot为中间连接:springbootdubbo-spring1.x0.1.2.RELEASE2.0.0~2.0.90.2.1.RELEASE2.1.x0.2.1.RELEASEspringcloudspringbootAngel版本兼容Spring Boot 1.2.xBrixton版本兼容Spring Boot

2020-06-06 12:07:53 1386

原创 spring项目中单例模式的最简便实现

背景:引用客户端的类,这个类很庞大,创建耗费的资源也大,我希望能复用,创建一次就足够了,因此想到了单例模式,于是创建了一个工具类,在工具类里面写一个创建、调用上述类的方法,再保证创建方法只能被执行一次,赋值给调用的方法,这样就能实现在系统中只创建一次了,写着写着,发觉有点麻烦…忽然想到了spring有一个注解@Bean,用@Bean就可以,spring只会调用一次,然后spring会将这个bea...

2020-05-06 16:39:46 527

原创 java枚举类型的使用小窍门

我直接说使用背景,在涉及到跟第三方的交互中,网络状态、数据状态/类型等等都是半固定的,可以用常量,也可以用变量,还可以用枚举类型,个人感觉枚举是维护起来最轻松,也对系统影响最小的。比如以下的例子,用来定义对第三方资源的操作:public enum Operate { QUERY(xxx,xxx); DELETE(xxx,xxx, xxx); ...

2020-04-07 17:35:15 287

原创 Idea 通过配置 Vm options 参数选择配置文件

我先说一个场景:如果在idea开发中,设计到好几个环境,开发环境、内测环境、线上环境…这么多个环境对应的配置参数,像数据库连接参数、缓存参数…管理起来蛮麻烦的这里介绍一种方法,可以简单的切换配置文件,利用idea设置Vm options 参数,以一个Test类为例:public class Test { public static void main(String[] args) ...

2020-03-19 11:32:38 7378 1

原创 git拉取远程分支、开发完合并到主分支

1.从Git仓库中拉取一个分支到本地//初始化本地Git仓库git init //将本地仓库和远程仓库相关联git remote add origin 地址//获取远程的dev分支git fetch origin dev //在本地创建分支dev,并将远程分支develop的信息同步到本地分支devgit checkout -b dev origin/deve2.在dev...

2020-02-26 18:08:36 2958

原创 清理数据策略

1.为什么要清理数据?硬盘的空间不会无限大,数据库的数据也不可能一直增长,为了保证系统的运行,需要让数据量保持在一个区间内可控。2.清理什么样的数据?清理数据的策略主要有两个方面:一个是数据库的数据,一个是硬盘数据(缓存数据也算)3.如何清理?清理数据的方法有很多,如果系统已经上线了,那么数据清理是作为该系统的一部分的。最开始上线的时候,我们采用定期清理,只让系统保存最近一个月(或者一...

2020-01-22 17:56:30 1292 1

原创 记录一些kafka的常用命令

1.启动zookeeperbin/zkServer.sh start config/zookeeper.properties2.关闭zookeeperbin/zkServer.sh stop config/zookeeper.properties3.启动kafkabin/kafka-server-start.sh config/server.properties4.关闭kafka...

2020-01-02 15:46:22 144

原创 程序员之不可忽视技能-编写FPA文档

在我的理解中,一个项目从需求到立项到交付再到落地,编码过程其实只占用了30%的部分。其他的部分也许跟开发人员关系不大,但是后期在项目验收/交付时,设计到的文档中,有一个FPA文档,就需要开发人员协助。先解释下概念FPA:功能点估算法DET:动态控件FTR:数据子集其实说白了,FPA就是一个功能点列表,反映出整个项目的功能点数。功能点的划分子系统为一级功能子系统中的模块为二级功...

2019-12-18 16:47:39 913

原创 fasfdfs 实际应用整合思路

如果需要用到fasfdfs,那相信对fasfdfs 有过基本的了解,原理和应用就不说了,说下核心的,怎么快速的将fasfdfs 整合到项目中来。首先第一步,求助大神,在github上搜索fasfdfs :跟java相关就有挺多的,第一第二的星星都比较多,我就选第一个了。下载下来,导进本地eclipse,看看人家的源码,对源码的结构有个大致的了解,就看看测试用例,怎么使用,其实像在githu...

2019-11-21 15:06:20 374

原创 leetcode 解题启发 --滑动窗口

滑动窗口的应用广泛,常用于减少线性逻辑的时间复杂度问题上。滑动窗口思想:在线性逻辑中,允许用单位长度方向性的移动,通过计算窗口的值,求解最终值滑动窗口特点:依附于动态规划(大解分为多个小解)线性移动滑动窗口思路:确定窗口大小窗口进出策略窗口内部逻辑滑动窗口在定义上更好理解,但是在应用中却更麻烦,窗口移动、进进出出涉及的细节比较多,容易遗漏,下面通过一个直观的例子感受下, ...

2019-10-22 17:45:56 232

原创 leetcode 解题启发 --动态规划

leetcode 中另一个重要的解题思想–动态规划动态规划是一种思想,不是具体的指某种算法,与分治法类似,通过拆分问题,定义问题状态和状态之间的关系,使问题能够以递推(分治)的方式去解决。动态规划的特点:局部解 - 全部解局部解 - 最优解动态规划的思路:将大问题分解为子问题状态转移方程边界情况这里用一个具体的例子说明,leetcode70.爬楼梯题目描述:假设你正在...

2019-10-22 16:12:56 157

原创 leetcode 解题启发 -- 递归

递归的定义:直接或间接的调用自身称为递归递归的特点:本质是分而自治的思想,顾名思义,递和归。递是传递、归是回归,所以递归满足一下的两点:递、继续调用归、收敛条件递归的思路:将原问题分解为规模较小的问题进行处理( 分解后的问题与原问题完全相同,但规模较小)设置收敛条件(递归未到达边界时,继续递归,到达边界条件时,递归结束)这里通过一个简单的例子直观感受下,leetcode617...

2019-10-22 12:32:42 128

原创 分享一点数据库内水平分表的小技巧

在业务中,经常会遇到单一表数据量过大的问题,在查找时速度逐渐变慢,更新操作也不敢太频繁,存在高并发时的性能问题,还有心理问题,一张数据量庞大的表,总会担心什么时候会崩掉为了解决这个问题,我们可以对一张大数据量的表进行水平切分,水平切分的意思就是把数据记录分摊出去,不会影响业务,提高一点性能,不是按照列切分(这叫垂直切分)。但是呢,水平切分也会造成数据维护起来比较麻烦。怎么个切分法?我的做法是...

2019-10-11 14:40:12 364

原创 基于idea开发的spring boot 复杂项目结构搭建

现在要搭建一个业务比较复杂的系统,复杂的意思就是说不能把所有业务都集中到一个模块里面,需要划分成多个模块。idea和eclipse创建的结构也不同。eclipse相对比较自由,但是idea是看一个项目的。我现在需要在idea中进行多么快开发,结构要怎么设计?看图:假设我的系统叫a,那么从右到左:base表示最底层的部门,编码格式、路由控制…common 表示公共的部分,例如文件服务、工...

2019-08-20 20:55:15 839

原创 分享两个权限设计的亮点

权限在各种业务应该是很常见的了,资料也有很多,但对于使用者来说,为了避坑,还是需要先了解下。先看看权限设计的万能思路:设计原理遵循三原则:who、what、how,这个就不多说了。最近在使用一个开源的项目,其数据权限模块设计全面,挺好用的,有两个亮点值得学习:1.上下级之间使用一张表,比如用户表,如果用户之间也分上下级,不要分表,只要是用户,都用一张表,加parent_id字段标识即...

2019-08-06 17:26:43 532

原创 快速开发平台的灵活性问题

关于使用开发平台快速开发项目的问题,规划起来确实很美好,一张表设计好,生成xml、dao、service、controller、前端页面(包含单表的增删查改、导入导出…)...

2019-08-01 09:59:47 269

原创 jeecg前端框架之上传图片(vue)

jeecg里面的vue是封装过的,语法与原生vue有很大差别,开发时遇到问题,资料也不多,比如现在要讲的图片上传问题。先给出解决方案:1.模态框2.列表显示1.先看模态框怎么展示的,照片用picture表示:控件<a-form-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol"> ...

2019-07-08 20:41:10 3499 1

原创 springboot打包成jar在服务器无法运行

情况是这样的,用springboot做的应用,在本地eclipse、idea都能跑起来,且功能正常,打包成war包,扔到服务器的tomcat里面,也能正常运行。但是打包成jar包,在服务器运行:java -jar xxx.jar,启动也没问题,但是访问出错:SpringBoot Whitelabel Error Page根据网上的解决方法:1.访问不到页面,可能是jsp文件没有打包进去,但是...

2019-06-15 14:57:25 2871

原创 浅谈支撑百万级的架构设计

先看图,总览一下:上图的架构是这几个月来开发的总结,照一列一列来看,从右到左先看右边两列,可归为一类,这一部分可以叫做依赖,作为公共部分。在设计架构之时,要先考虑每一个组件的应用框架,把这些框架的基本部分写好,封装成依赖包,给业务系统调用。这些基础的部分包括以下:缓存:redis redis的地址、端口、线程配置从配置文件读取,把redis的连接释放都做成工具,只提供使用接口日志:推荐...

2019-06-06 11:57:33 6452 3

原创 kafka处理超大消息的配置

总会遇到各种各样的需求,kafka达到最佳吞吐量的消息大小是10k,而在我们的项目中,消息有的是1k,有的是100M,最大可达400M,这种消息很少很少,但是会有,所以整套环境必须要使用1K~400M。kafka最近的版本对消息的最大限制是2G,是足够的,这里有3个地方要配置:brokermessage.max.bytes :500000000B(500M),这是单个消息的最大值repl...

2019-05-20 10:30:15 16636 1

原创 聊聊压测的注意事项

测试环境压测做完后,在生产环境下也要做一下压测,生产环境如果是现网在用的话,测试起来比较麻烦。这些麻烦事项包括:1.测试的时间点,往往在0点后开始,熬夜吧2.测试数据准确性,现网环境的干扰因素更多,需要获取的数据指标就得更加细致3.测试结果输出,为了不影响现在业务,一些指标的变化不能即时呈现出来,需要做好备份,测试完收集后用图形表示,比如cpu使用率,内存4.测试模型要考虑全面,生产环境的...

2019-05-07 11:45:55 2809

原创 最简单的 spring 整合 kafka 例子

这周到联调阶段,回顾项目的开发,之前在spring跟kafka这块吃了不少亏,网上的资料太繁琐、配置好了还各种报错,我今天整理一个最最简单的demo,以供参考。前提条件:安装zookeeper,下载解压,更改配置文件名称、配置环境变量,启动即可,资料比较全,搜一下就有安装kafka, 更简单,下载解压,启动即可jdk8 + 的环境,现在的spring基本指spring boot在kaf...

2019-04-03 10:24:43 16685 2

原创 线上OOM问题实战

项目在测试环境运行一段两天后,会出现OutOfMemoryError: Java heap space 的错误,导致程序崩溃停止遇到这种错误,往往很难知道是哪里出错,我去年有记录定位OOM的问题的文章,刚好重温一下:线上java.lang.OutOfMemoryError问题定位三板斧先不着急重启,先看看内存情况:top 查看java运行的pidjmap -heap pid 查看内存占用...

2019-03-26 11:43:30 1224

原创 基于多线程应用的高级消费者(kafka)

从Kafka读取消息的逻辑并不关心处理消息偏移量,它只需要数据。因此,高级消费者可以从Kafka中抽象出消费事件的大部分细节。线程模型围绕主题的分区数,有一些具体的规则:如果线程多于主题上的分区,那么有些线程将永远不会看到消息如果分区比线程多,一些线程将从多个分区接收数据如果每个线程有多个分区,则无法保证接收消息的顺序,除非在分区中偏移量是顺序的。例如,从分区1接收到5条消息,...

2019-03-13 14:57:00 1110 1

原创 kafka优化之多线程消费

我之前用ssm消费kafka,在注解配置了消费队列,这是一种来生产多少,消费多少的形式,为了提升性能,加了一些优化:消费分为两部分:接收生产消费不变,执行消费行为用线程跑,但又不能无限制的开启线程,所以,最好用线程池管理先看不需要返回结果的(runnable),应用:把消费代码封装,实现runnable接口,用线程池跑即可public class ThreadPoolManager { p...

2019-02-23 14:15:22 2206

原创 kafka开发小结

最近两个月,项目开发用到kafka,今天终于跑通了线上环境,这期间也踩了不少坑,在这里做一个总结。大致需求:做一个图像处理工具,每天处理10w的图片,由于机房分布在不同地方,这里有两套kafka集群环境,业务系统也有好几个开发思路:1.先准备内网环境2.创建单机kafka3.开发业务系统4.跑通业务流程5.配置两套kafka、和集群kafka6.每个子系统配置双机,模拟集群7.迁移...

2019-02-16 15:12:16 443

原创 kafka运行时某个节点丢失

最近在开发的过程中用到kafka做消息中间件,在测试高并发的时候,发现了一系列的问题。这两天也明白一点,做出产品跟做好产品是两回事!程序能跑起来跟程序能稳定运行更是两回事!开发的过程中,只要测试数据能否通,业务逻辑能不能被执行,只需要测试小数据量。但是程序开发完成后,性能测试是另一个工作。第一个问题:kafka生产者数据包丢失这个原因大多是生产者配置没配好,kafka的通信有接收到数据之后...

2019-01-28 11:16:00 1672

原创 监控任务的设计思路

这里就不画图了,文字表述即可。假如现在有好几个业务子系统共同完成一个任务,当大量的任务来临时,怎么去保证每个任务都能跑完?这就需要我们对任务进行监控,我的思路是这样的:创建一个新的监控项目,定时遍历数据库的任务表,看看有没有新来的任务,有的话取出来,加入一个待执行队列,并计算超时时间,再开一个线程去判断该任务是否跑完,若超时了,则触发重发机制,若跑完了,则关闭线程。这里有三个问题要特别注意1...

2019-01-09 21:00:55 1215

原创 超时/重发机制架构设计(单机版)

在上一篇博文中提到用超时线程监控程序,那是对一整条业务的,如果要细分到每个子业务呢。这几天不断修修改改,总结出一套模型,直接上图,一目了然:这里假设一个业务有3个子业务,这是针对单台物理机的,如果是多台机器,还需要在修改一部分内容,待我测试好再分享分布式的模型...

2018-12-10 19:46:36 1936

基于Three.js的360度全景图所需的js和css文件

基于Three.js的360度全景图所需的js和css文件

2017-04-06

Three.js 包括的css 和 js

Three.js 包括的css 和 js

2017-04-05

xheditor1.1.14

xheditor-1.1.14.zip

2017-03-02

Spring4,2Springmvc4.2Hibernate4.2

Spring4,2Springmvc4.2Hibernate4.2整合所需jar包

2016-07-01

spring4.2+hibernate4.2+struts2.3.29整合所需jar包

spring4.2+hibernate4.2+struts2.3.29整合所需jar包

2016-06-27

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

TA关注的人

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