自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tomcat的博客

码农人生

  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 JTS多边形自相交异常问题处理

这个问题和同事谈论了下,最终在Stack Overflow上找到了解决方案,intersection前先判断下两polygon或者GeoMetry是否完整,通过isValid来判断,上链接。看了下报错信息的含义,是说对于红色区域的多边形来说,线段GH和JE之间是没有交点的,但是在做相交运算时,则需要有交点,但需要的时候却发现没有,所以报找不到交点的错。就是下图中的交错点。从逻辑上讲写的没问题,然后本地验证了下,发现是JTS自身报的异常。//去除超过空间的部分。//去除柜体重叠部分。

2023-08-18 15:28:42 551

原创 JTS Java常用空间几何算法

/ 最后确定是在已知两点之间的某点。//point在直线上(pt1_pt2)// // 两根x1,x2= [-B±√(B^2-4AC)]/2A。* @param l 距离 正数时取直线之间的点,负数时取直线之外的点。* 根据直线方程获取在直线上且与p1距离为L的某点的坐标。* 点(point)到直线(pt1_pt2)的垂足点。* @param vertx 区域的所有x点。* @param verty 区域的所有y点。* @param p1 l1的起点。//拓展,点正好在边界上。

2023-06-27 17:32:56 381

原创 搭建最新版jekins+docker问题记录

1.拉取最新镜像docker pull jenkins/jenkins。2.启动jekins。

2023-03-30 11:24:17 161

原创 推荐使用构造器注入

为什么要使用构造器的注入方式

2022-11-22 22:44:04 1030 1

原创 DDD 项目包结构 + 调用关系说明

采用充血模型的设计。聚合转换类,领域实体、入参和出参互相转换。

2022-08-17 14:54:35 1311

原创 阿里云环境使用redisson分布式锁产生线上问题

一、问题与背景:非线上环境使用的redis架构是集群,并且直连各个节点,而线上环境使用的是阿里云redis集群代理模式。在非线上环境使用redisson作为分布式锁解决方案是正常的,而线上环境则会报ERR unknown command 'WAIT'的错误。由于目前尝试使用redisson实现分布式锁的时候出现无法执行WAIT命令(实际分布式锁命令是执行成功的,只是3.14.1及之后的redisson版本会报未知WAIT命令的错误,见下面的原因解释)。二、原因:经排查,发现是由于使.

2022-03-30 19:04:22 5978 3

原创 kafka切换节点数据丢失问题和配置优化

公司项目遇到消息队列数据丢失的问题,以此记录下解决方案。如果kafka的leader挂掉,切换副本节点时产生数据丢失问题,此时一般是要求起码设置如下 4 个参数:给 topic 设置replication.factor参数:这个值必须大于 1,要求每个 partition 必须有至少 2 个副本。 在 Kafka 服务端设置min.insync.replicas参数:这个值必须大于 1,这个是要求一个 leader 至少感知到有至少一个 follower 还跟自己保持联系,没掉队,这样才能...

2022-02-13 16:01:21 2085

原创 mysql中文字段转拼音首字母,以及中文拼音模糊查询

创建存储过程,将中文字段转拼音首字母 1 2 3 4 5 6 7 8 9 10 CREATE DEFINER=`root`@`%` FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE V_RETURN VARCHAR(255); SET...

2022-01-05 16:39:44 224

原创 启动脚本记录

jar启动:nohup java -jar -Dspring.config.location=config/application.yml platform-0.0.1-SNAPSHOT.jar > log.log 2>&1 &docker容器启动:sudo docker run -d -p 5020:5020 -v /home/lanwon/webapps/platform:/home --network lanwon-network --name platform -

2022-01-05 11:48:53 793

原创 webservice请求数据时类com/sun/tools/internal/xjc/api/XJC找不到的原因

最近对接东软的一个项目中,有需要请求webservice数据的地方用invoke方法,起初在开发环境中测试的时候,没有出现任何问题,但是将包部署到服务器的时候,出现client调用invoke方法的时候,出现了一段异常:Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJCat java.lang.Class.forName0(Native Method)at java.lang.Class...

2021-10-11 10:07:41 2323 3

原创 记录一次项目OOM内存飙升的问题

碰到一个问题,现场医院的接口服务经常因为内存满的原因导致容器自动重启。这边k8s容器重启后会清除历史日志,所以也看不到错误信息。新到公司咱也不知道docker编排文件为啥这样写,只能靠自己逐步分析了。看监控图里的内存使用量,每个机器是2G,使用量逐步上升最终导致容器崩溃重启。定位问题首先想到是mysql的问题,vpn登录跳板机连接现场数据库,查看对应库的运行情况。通过SELECT * FROM information_schema.INNODB_TRX来查看事务运行情况,发现有很多RUN

2021-06-22 15:38:41 517 1

转载 MySQL高阶面试题(转)

1、MySQL的复制原理以及流程(1)、复制基本原理流程1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;3. 从:sql执行线程——执行relay log中的语句;(2)、MySQL复制的线程有几个及之间的关联MySQL 的复制是基于如下 3 个线程的交互( 多线程复制里面应该是 4 类线程):

2021-04-13 13:44:41 828

转载 MyBatis工作流程简述

传统工作模式:public static void main(String[] args) { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = ...

2021-04-11 11:40:11 461

原创 Redisson源码阅读记录

概述分布式系统有一个著名的理论CAP,指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。所以在设计系统时,往往需要权衡,在CAP中作选择。当然,这个理论也并不一定完美,不同系统对CAP的要求级别不一样,选择需要考虑方方面面。在微服务系统中,一个请求存在多级跨服务调用,往往需要牺牲强一致性老保证系统高可用,比如通过分布式事务,异步消息等手段完成。但还是有的场景,需要阻塞所有节点

2021-03-05 22:15:23 313

原创 分布式事务常见的三种解决方案

(一)、基于可靠消息的最终一致性方案概述实现:业务处理服务在业务事务提交之前,向实时消息服务请求发送消息,实时消息服务只记录消息数据,而不是真正的发送。业务处理服务在业务事务提交之后,向实时消息服务确认发送。只有在得到确认发送指令后,实时消息服务才会真正发送。 消息:业务处理服务在业务事务回滚后,向实时消息服务取消发送。消息发送状态确认系统定期找到未确认发送或者回滚发送的消息,向业务处理服务询问消息状态,业务处理服务根据消息ID或者消息内容确认该消息是否有效。被动方的处理结果不会影响主动方的处理结

2021-03-04 21:16:24 224 2

转载 ThreadLocal用开放寻址法解决Hash冲突

解决HASH冲突有以下方法:  1.链式地址法  2.开放寻址法  3.再HASH法  4.建立公共溢出池  等等为什么不用3和4?4方法浪费内存,3增加了算法的复杂度,不推荐。其实我也不清楚。链式地址法和开放地址法的优缺点分别是什么?链式地址法(HashMap)优点:  处理冲突简单,且无堆积现象,平均查找长度短;  链表中的结点是动态申请的,适合构造表不能确定长度的情况;  相对而言,拉链法的指针域可以忽略不计,因此较开放地址法更加节省空间。  插入结点应该在链

2021-02-24 21:48:48 1282

原创 工作中总结的一些常用linux操作命令

平时工作常用到的一些查询 统计 等命令 写这里留作参考以后随时看看GREP配合wc命令 统计在文件中出现的行数grep -o '108034' web.log.2020-07-24 | wc -lgrep 'PIS-log-track:2020/05/12 15:[0-1][0-9]:[0-5][0-9]|queryLatestItem' pis.client.log.2020-05-12 -cgrep '00U4OTI2ODQ4MDAwMTY0ODE403C2EBEA...

2020-07-30 18:15:01 218

原创 金额元转分精度丢失问题

处理之前人遗留的问题,在某些金额场景下会少一分钱,debug更进下发现是下面这段金额转换代码的问题 double price=Double.valueOf(req.getTotalFee()); DecimalFormat df = new DecimalFormat("#.00"); price = Double.valueOf(df.format(price)); in...

2020-07-01 10:07:01 615

原创 Redis使用lua脚本实现increase + expire 的原子操作

lua脚本代码:public Integer incrEX(String key, long defaultExpire){ String script = "local current = redis.call('incr',KEYS[1]);" + " local t = redis.call('ttl',KEYS[1]); " + ...

2020-01-09 10:57:48 537

原创 CurrentHashMap在1.8的新特性

与1.7相比的重大变化:1、取消了segment数组,直接用table保存数据,锁的粒度更小,减少并发冲突的概率。2、存储数据时采用了链表+红黑树的形式,纯链表的形式时间复杂度为O(n),红黑树则为O(log2n),性能提升很大。当key值相等的元素形成的链表中元素个数超过8个并且容量大于64的时候链表转红黑树,如果容量小于64就直接扩容。扩容操作:transfer()方法进...

2019-08-28 17:00:33 1561

原创 解决微信小程序不刷新的问题

     前排吐槽:小程序这玩意真是坑啊。。。。     话不多说,最近在公司做关于微信小程序的项目,由于小程序没有自带的刷新功能,所以每次业务请求后都要想办法自己刷新页面。这里总结了两种方法:           1.在onShow事件里通过调用 that.onReady() 和 that.onLoad() 方法来重新请求数据,做到页面数据刷新,注意这里是请求了两次后台,如果你要通过页面...

2018-08-08 15:48:40 11377 1

原创 git初步了解与使用

用的win的git,在官网下​载后直接点下一步下一步就行。完成后在“开始”里打开Git——》GitBash输入git version 查看版本号 进入上git文件夹,输入git init。git init是初始化一个本地仓库 设置一个记录操作的姓名和邮箱。git config --global user.name <name>git config --global user.email...

2018-07-03 19:45:15 194

原创 Dubbo的初步认识与安装使用的过程

Dubbo介绍随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用...

2018-04-30 13:58:16 228

原创 快速排序和归并排序详解

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这其中一部分数据进行快速排序,这是递归调用。再按此方法对另一部分数据进行快速排序,这也是递归调用。算法介绍设要排序的数组是A[0]……A[n-1],首先任意选取一个数据作为关键数据,然后将所有比它小的数都放到它前面,所有比它...

2018-04-23 12:41:28 681

转载 转:30分钟学会如何使用Shiro

一、架构要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例:(1)使用用户的登录信息创建令牌UsernamePasswordToken token = new UsernamePasswordToken(username, password);to...

2018-03-31 22:23:08 238

翻译 Java 10新特性前瞻

从Java 9发布到现在已经过去两个月了,根据最新的发布计划,距离下一个Java版本发布只有四个月时间。Java 10的新特性还在确认当中,所以从现在到GA版中间还是有可能加入重大的变更。不管怎样,在这四个月里,开发者还是可以期待一些新的特性能够被添加到Java 10中。新的特性和增强一般通过Java Enhancement Process(JEP)或Java Community Process标...

2018-03-23 18:06:57 153

转载 对cas算法的理解

cas算法主要关心3个值:内存值V,预期值A,要更新的新值B 如下图所示:注:t1,t2线程是同时更新同一变量56的值因为t1和t2线程都同时去访问同一变量56,所以他们会把主内存的值完全拷贝一份到自己的工作内存空间,所以t1和t2线程的预期值都为56。 假设t1在与t2线程竞争中线程t1能去更新变量的值,而其他线程都失败。(失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次发起尝试)。...

2018-03-20 13:46:14 193

原创 关于JVM和GC的初步了解

推荐各位看下周志明的《深入理解JVM虚拟机》第二版Java 虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是:程序计数器程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。也就是说,程序计数器里面记录的是当前线程正在执行的那一条字节码指令的地址。 Java 虚拟机栈当一个方法即将被运行时,Java虚拟机栈首先会在Java虚拟机栈...

2018-03-18 19:10:42 309

转载 心跳机制、轮询、长连接的概念

心跳机制: 心跳机制的原理很简单:客户端每隔N秒向服务端发送一个心跳消息,服务端收到心跳消息后,回复同样的心跳消息给客户端。如果服务端或客户端在M秒(M>N)内都没有收到包括心跳消息在内的任何消息,即心跳超时,我们就认为目标TCP连接已经断开了。轮询: 短轮询:浏览器发起一个“询问”请求,服务器无论有无新数据,都立即响应(有就返回新数据,没有就返回一个表示’空’的自定义数据格式),一个HTT...

2018-03-11 17:33:02 368

转载 JS闭包面试题

说明最近看到这样一段代码 function fun(n,o){ console.log(o); return { fun:function(m){ return fun(m,n); } }; } var a = fun(0);a.fun(1);a.fun(2);a.fun(3); var b = fun(0)....

2018-03-11 14:20:46 971

原创 一个大三狗的SSM博客系统练手项目

岁月匆匆,晃眼现在大三了,想起半年前学完ssm后,只做过类似于erp,oa的管理系统,都没有做过什么拿得出手的项目,感觉人生灰暗QAQ。于是寒假时闲情之中做了个整合的ssm博客系统,就当练练手吧,毕竟学了spring boot后感觉全注解开发贼爽,就没怎么用spring mvc了。 首先奉上链接点击打开链接,www.javalove.top,服务器买的阿里云...

2018-03-10 15:30:38 19206 10

原创 关于ConcurrentHashMap的初步认识

            根据码码在线老哥们面试情况来看,ConcurrentHashMap是面试中必考的知识点,所以在此对它进行些许了解,以便实习面试时不会太难堪。            ConcurrentHashMap,这个东西是1.5以后出现的,在java.util.concurrent包下的.先了解HashMap,HashTable,Synchronized,Lock等技术点后我们才能进一...

2018-03-10 14:09:05 859

原创 java 集合的特点

一、Map:键必须是唯一同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));Hashtable:基于散列表的实现  允许空键空值  线程安全HashMap:基于散列表的实现  允许空键空值  线程不安全  (与Hashtable基本一致)TreeMap: 基于红黑树数据结构的实现  不允许空键空值  线程不安全WeakHashMap...

2017-10-12 17:00:55 309

转载 java反射处理数组

Java反射中,如果Method的参数里含有数组或者可变参数形式,那么在调用Invoke的时候,稍有点诡异,这里记录一下。可变参数实质就是数组,调用方式和普通数组一样。用反射方式执行某个类中的main方法 public class ReflectTest {      public static void main(String[] args) throws Exception {        ...

2017-10-12 16:35:34 1039

转载 转:list与Set、Map区别及适用场景

转载:http://blog.csdn.net/qq_22118507/article/details/51576319               list与Set、Map区别及适用场景1、List,Set都是继承自Collection接口,Map则不是2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放

2017-10-12 12:26:53 187

java文本转语音服务语音测试文本

java文本转语音服务语音测试文本

2021-04-30

jsmartcom_zh_CN

支持中文的jspSmartUpload.jar包下载:jsmartcom_zh_CN.jar jsp(SUN企业级应用的首选)SmartUpload是一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的jsp(SUN企业级应用的首选)文件中。该组件有以下几个特点: 1、使用简单。在jsp(SUN企业级应用的首选)文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载,方便。 2、能全程控制上传。利用jsp(SUN企业级应用的首选)SmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。 3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。 4、下载灵活。仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jsp(SUN企业级应用的首选)SmartUpload进行下载。 5、能将文件上传到数据库中,也能将数据库中的数据下载下来。这种功能针对的是MySQL(和PHP搭配之最佳组合)数据库

2017-10-12

空空如也

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

TA关注的人

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