- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 JTS多边形自相交异常问题处理
这个问题和同事谈论了下,最终在Stack Overflow上找到了解决方案,intersection前先判断下两polygon或者GeoMetry是否完整,通过isValid来判断,上链接。看了下报错信息的含义,是说对于红色区域的多边形来说,线段GH和JE之间是没有交点的,但是在做相交运算时,则需要有交点,但需要的时候却发现没有,所以报找不到交点的错。就是下图中的交错点。从逻辑上讲写的没问题,然后本地验证了下,发现是JTS自身报的异常。//去除超过空间的部分。//去除柜体重叠部分。
2023-08-18 15:28:42
761
原创 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
416
原创 阿里云环境使用redisson分布式锁产生线上问题
一、问题与背景:非线上环境使用的redis架构是集群,并且直连各个节点,而线上环境使用的是阿里云redis集群代理模式。在非线上环境使用redisson作为分布式锁解决方案是正常的,而线上环境则会报ERR unknown command 'WAIT'的错误。由于目前尝试使用redisson实现分布式锁的时候出现无法执行WAIT命令(实际分布式锁命令是执行成功的,只是3.14.1及之后的redisson版本会报未知WAIT命令的错误,见下面的原因解释)。二、原因:经排查,发现是由于使.
2022-03-30 19:04:22
6298
3
原创 kafka切换节点数据丢失问题和配置优化
公司项目遇到消息队列数据丢失的问题,以此记录下解决方案。如果kafka的leader挂掉,切换副本节点时产生数据丢失问题,此时一般是要求起码设置如下 4 个参数:给 topic 设置replication.factor参数:这个值必须大于 1,要求每个 partition 必须有至少 2 个副本。 在 Kafka 服务端设置min.insync.replicas参数:这个值必须大于 1,这个是要求一个 leader 至少感知到有至少一个 follower 还跟自己保持联系,没掉队,这样才能...
2022-02-13 16:01:21
2154
原创 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
255
原创 启动脚本记录
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
815
原创 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
2505
3
原创 记录一次项目OOM内存飙升的问题
碰到一个问题,现场医院的接口服务经常因为内存满的原因导致容器自动重启。这边k8s容器重启后会清除历史日志,所以也看不到错误信息。新到公司咱也不知道docker编排文件为啥这样写,只能靠自己逐步分析了。看监控图里的内存使用量,每个机器是2G,使用量逐步上升最终导致容器崩溃重启。定位问题首先想到是mysql的问题,vpn登录跳板机连接现场数据库,查看对应库的运行情况。通过SELECT * FROM information_schema.INNODB_TRX来查看事务运行情况,发现有很多RUN
2021-06-22 15:38:41
568
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
879
转载 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
472
原创 Redisson源码阅读记录
概述分布式系统有一个著名的理论CAP,指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。所以在设计系统时,往往需要权衡,在CAP中作选择。当然,这个理论也并不一定完美,不同系统对CAP的要求级别不一样,选择需要考虑方方面面。在微服务系统中,一个请求存在多级跨服务调用,往往需要牺牲强一致性老保证系统高可用,比如通过分布式事务,异步消息等手段完成。但还是有的场景,需要阻塞所有节点
2021-03-05 22:15:23
335
原创 分布式事务常见的三种解决方案
(一)、基于可靠消息的最终一致性方案概述实现:业务处理服务在业务事务提交之前,向实时消息服务请求发送消息,实时消息服务只记录消息数据,而不是真正的发送。业务处理服务在业务事务提交之后,向实时消息服务确认发送。只有在得到确认发送指令后,实时消息服务才会真正发送。 消息:业务处理服务在业务事务回滚后,向实时消息服务取消发送。消息发送状态确认系统定期找到未确认发送或者回滚发送的消息,向业务处理服务询问消息状态,业务处理服务根据消息ID或者消息内容确认该消息是否有效。被动方的处理结果不会影响主动方的处理结
2021-03-04 21:16:24
243
2
转载 ThreadLocal用开放寻址法解决Hash冲突
解决HASH冲突有以下方法: 1.链式地址法 2.开放寻址法 3.再HASH法 4.建立公共溢出池 等等为什么不用3和4?4方法浪费内存,3增加了算法的复杂度,不推荐。其实我也不清楚。链式地址法和开放地址法的优缺点分别是什么?链式地址法(HashMap)优点: 处理冲突简单,且无堆积现象,平均查找长度短; 链表中的结点是动态申请的,适合构造表不能确定长度的情况; 相对而言,拉链法的指针域可以忽略不计,因此较开放地址法更加节省空间。 插入结点应该在链
2021-02-24 21:48:48
1322
原创 工作中总结的一些常用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
229
原创 金额元转分精度丢失问题
处理之前人遗留的问题,在某些金额场景下会少一分钱,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
643
原创 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
566
原创 CurrentHashMap在1.8的新特性
与1.7相比的重大变化:1、取消了segment数组,直接用table保存数据,锁的粒度更小,减少并发冲突的概率。2、存储数据时采用了链表+红黑树的形式,纯链表的形式时间复杂度为O(n),红黑树则为O(log2n),性能提升很大。当key值相等的元素形成的链表中元素个数超过8个并且容量大于64的时候链表转红黑树,如果容量小于64就直接扩容。扩容操作:transfer()方法进...
2019-08-28 17:00:33
1610
原创 解决微信小程序不刷新的问题
前排吐槽:小程序这玩意真是坑啊。。。。 话不多说,最近在公司做关于微信小程序的项目,由于小程序没有自带的刷新功能,所以每次业务请求后都要想办法自己刷新页面。这里总结了两种方法: 1.在onShow事件里通过调用 that.onReady() 和 that.onLoad() 方法来重新请求数据,做到页面数据刷新,注意这里是请求了两次后台,如果你要通过页面...
2018-08-08 15:48:40
11518
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
207
原创 Dubbo的初步认识与安装使用的过程
Dubbo介绍随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用...
2018-04-30 13:58:16
247
原创 快速排序和归并排序详解
快速排序(Quicksort)是对冒泡排序的一种改进。基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这其中一部分数据进行快速排序,这是递归调用。再按此方法对另一部分数据进行快速排序,这也是递归调用。算法介绍设要排序的数组是A[0]……A[n-1],首先任意选取一个数据作为关键数据,然后将所有比它小的数都放到它前面,所有比它...
2018-04-23 12:41:28
693
转载 转:30分钟学会如何使用Shiro
一、架构要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例:(1)使用用户的登录信息创建令牌UsernamePasswordToken token = new UsernamePasswordToken(username, password);to...
2018-03-31 22:23:08
248
翻译 Java 10新特性前瞻
从Java 9发布到现在已经过去两个月了,根据最新的发布计划,距离下一个Java版本发布只有四个月时间。Java 10的新特性还在确认当中,所以从现在到GA版中间还是有可能加入重大的变更。不管怎样,在这四个月里,开发者还是可以期待一些新的特性能够被添加到Java 10中。新的特性和增强一般通过Java Enhancement Process(JEP)或Java Community Process标...
2018-03-23 18:06:57
162
转载 对cas算法的理解
cas算法主要关心3个值:内存值V,预期值A,要更新的新值B 如下图所示:注:t1,t2线程是同时更新同一变量56的值因为t1和t2线程都同时去访问同一变量56,所以他们会把主内存的值完全拷贝一份到自己的工作内存空间,所以t1和t2线程的预期值都为56。 假设t1在与t2线程竞争中线程t1能去更新变量的值,而其他线程都失败。(失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次发起尝试)。...
2018-03-20 13:46:14
197
原创 关于JVM和GC的初步了解
推荐各位看下周志明的《深入理解JVM虚拟机》第二版Java 虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是:程序计数器程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。也就是说,程序计数器里面记录的是当前线程正在执行的那一条字节码指令的地址。 Java 虚拟机栈当一个方法即将被运行时,Java虚拟机栈首先会在Java虚拟机栈...
2018-03-18 19:10:42
322
转载 心跳机制、轮询、长连接的概念
心跳机制: 心跳机制的原理很简单:客户端每隔N秒向服务端发送一个心跳消息,服务端收到心跳消息后,回复同样的心跳消息给客户端。如果服务端或客户端在M秒(M>N)内都没有收到包括心跳消息在内的任何消息,即心跳超时,我们就认为目标TCP连接已经断开了。轮询: 短轮询:浏览器发起一个“询问”请求,服务器无论有无新数据,都立即响应(有就返回新数据,没有就返回一个表示’空’的自定义数据格式),一个HTT...
2018-03-11 17:33:02
388
转载 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
976
原创 一个大三狗的SSM博客系统练手项目
岁月匆匆,晃眼现在大三了,想起半年前学完ssm后,只做过类似于erp,oa的管理系统,都没有做过什么拿得出手的项目,感觉人生灰暗QAQ。于是寒假时闲情之中做了个整合的ssm博客系统,就当练练手吧,毕竟学了spring boot后感觉全注解开发贼爽,就没怎么用spring mvc了。 首先奉上链接点击打开链接,www.javalove.top,服务器买的阿里云...
2018-03-10 15:30:38
19247
10
原创 关于ConcurrentHashMap的初步认识
根据码码在线老哥们面试情况来看,ConcurrentHashMap是面试中必考的知识点,所以在此对它进行些许了解,以便实习面试时不会太难堪。 ConcurrentHashMap,这个东西是1.5以后出现的,在java.util.concurrent包下的.先了解HashMap,HashTable,Synchronized,Lock等技术点后我们才能进一...
2018-03-10 14:09:05
883
原创 java 集合的特点
一、Map:键必须是唯一同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));Hashtable:基于散列表的实现 允许空键空值 线程安全HashMap:基于散列表的实现 允许空键空值 线程不安全 (与Hashtable基本一致)TreeMap: 基于红黑树数据结构的实现 不允许空键空值 线程不安全WeakHashMap...
2017-10-12 17:00:55
336
转载 java反射处理数组
Java反射中,如果Method的参数里含有数组或者可变参数形式,那么在调用Invoke的时候,稍有点诡异,这里记录一下。可变参数实质就是数组,调用方式和普通数组一样。用反射方式执行某个类中的main方法 public class ReflectTest { public static void main(String[] args) throws Exception { ...
2017-10-12 16:35:34
1050
转载 转: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
194
jsmartcom_zh_CN
2017-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人