java
文章平均质量分 73
starryninglong
这个作者很懒,什么都没留下…
展开
-
根据经纬度,使用h3算法获取所有方向上的索引,并且按照距离排序
H3是一个针对地球的空间划分和空间索引系统。H3地理空间索引系统是一个离散的全局网格系统,该系统由具有层次结构索引的球形多精度六边形拼贴组成。在球形外接二十面体的平面上创建六边形网格系统,然后使用反面为中心的多面体结构投影将网格单元投影到球体的表面。从单纯的点到点覆盖范围计算,查询效率低下,而Uber H3通过为全球地理位置定制了一套,正六边形构成的覆盖图,每个覆盖图有一个唯一Id,通过空间换时间的思想,让点对点的查询变成了索引结构的匹配查询。实现了在没有巨大误差前提下的高效查询。原创 2023-01-17 17:09:10 · 1266 阅读 · 0 评论 -
http和dubbo接口调用主动设置超时时间
动态修改每个http接口的超时时间,使用RestTemplate调用和OkHttp3ClientHttpRequestFactory封装主动设置dubbo接口的超时时间原创 2022-11-29 11:11:58 · 2098 阅读 · 0 评论 -
java业务代码自动降级实现
我们设想的是,在需要降级的方法上,加上一个注解,就能够实现降级的全部功能。所以先定义一个注解。/***是否需要降级的注解配置*35/***是否降级**@return/***需要降级的部门接口*假设有部门A和部门B*部门A有接口C和D*部门B有接口E和F*则在C和D的方法上配置A,并且降级开关打开的时候,就会直接降级接口C和D*@return/***降级日志描述,方便定位问题**@return}...原创 2022-07-30 14:14:03 · 1677 阅读 · 0 评论 -
mybatis plus分页查询count数量和返回list结果不一致
本地调试一个方法,方法名为 模拟分页参数为 ,出现奇怪的现象 分页插件使用threadlocal保存当前的分页参数并在调用查询的时候先count一次,此问题现象为count的时候是有1条数据的,但是返回的list结果集却没有数据并且没有打印执行select list的sql语句,好奇怪啊,按道理是两者的数据量肯定是一样的并且要执行2次sql查询 于是进入debug查看,首先进入到executeForMany方法 接着进入selectList方法 继续进入P..原创 2022-04-11 10:35:02 · 4556 阅读 · 2 评论 -
http接口返回中文数据偶现乱码问题排查
目录问题产生排查过程问题分析结论问题产生本地环境(spring框架)调试一个http接口,数据从数据库获取并缓存到redis,偶现接口返回的数据有乱码,如下图排查过程去掉缓存,每次都从数据库获取,不会产生乱码 每次都从缓存获取,不会乱码(前提缓存的数据都是正确的) 只使用测试环境,不管数据从缓存还是从数据库都不会产生乱码 只使用本地开发环境,不管数据从缓存还是从数据库都不会产生乱码 测试环境和本地环境都启动,每次请求都删除缓存,让缓存重新生成,偶现乱码...原创 2021-08-05 16:46:49 · 2603 阅读 · 0 评论 -
如何应对spring框架的HTTP ERROR 400 Bad Request错误返回
HTTP ERROR 400产生的流程和应对方法HTTP ERROR 400 Bad Request 产生的流程HTTP ERROR 400 Bad Request 产生的原因400错误为什么不能被自定义的异常处理器捕获并且处理为什么不能自己定制输出内容目前可以做的HTTP ERROR 400 Bad Request 产生的流程在使用springmvc相关的框架的时候,调用接口经常产生以下错误这种错误往往在info的log级别下看不到日志,难以排查,我们先来模拟错误产生的其中一个原因从spring原创 2020-09-27 17:21:45 · 8682 阅读 · 0 评论 -
基于cglib的接口代理和非接口代理的区别
这是目录jdk动态代理cglib动态代理cglib代理接口cglib代理实现类对比源码版权所有jdk动态代理jdk动态代理只可以代理接口,因为最后的实现类要继承Proxy并实现该接口cglib动态代理cglib既可代理接口又可以代理实现类,那背后的源码是如何实现的呢?cglib代理接口接口代码package com.tqy.document.reader.extention.de...原创 2019-05-01 14:04:53 · 7465 阅读 · 0 评论 -
spring源码学习之1--spring扩展之自定义XmlWebApplicationContext和DefaultBeanDefinitionDocumentReader实现动态修改配置文件内容
spring扩展之自定义XmlWebApplicationContext和DefaultBeanDefinitionDocumentReader断点加载配置文件的流程自定义配置文件和类文件实现修改配置效果展示总结断点加载配置文件的流程首先我们在AbstractApplicationContext文件的refresh()方法加上断点进入obtainFreshBeanFactory()方法...原创 2019-04-13 15:41:07 · 733 阅读 · 0 评论 -
JAVA中JOIN和WAIT的关系
JAVA中JOIN和WAIT的关系首先上代码1:执行结果1:main end !!!Thread-0 running ...Thread-0 end ...代码2:执行结果2:Thread-0 running ...Thread-0 end ...main end !!!可以知道,join方法,可以使得某个线程阻塞执行,让出cpu给其他线程,此示例就...原创 2018-07-21 15:06:54 · 8721 阅读 · 2 评论 -
Java获取package下所有的class对象,根据包名获取class字节码(普通文件包和Jar文件包)
读取一个package路径下面所有的class/** * 获得包下面的所有的class * * @param pack * package完整名称 * @return List包含所有class的实例 */public static List<Class> getClasssFromPackage(String pack) { List<Class> cla转载 2017-07-07 16:07:04 · 5913 阅读 · 0 评论 -
JDK动态代理实现原理
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 package dynamic.proxy; import java.lang.reflect.InvocationHandler;转载 2017-07-12 14:10:44 · 932 阅读 · 0 评论 -
静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式
百度众说纷纭的情况下就不如自己写例子测试理论,话不多说,上代码:public class Sta { public static long date=System.currentTimeMillis();//1 public int da=1;//3,5 static{ System.out.println("Sta:"+System.curr转载 2017-07-01 18:03:27 · 487 阅读 · 0 评论 -
SprignMVC+myBatis整合+mybatis源码分析+动态代理实现流程+如何根据mapper接口生成其实现类
首先熟悉三个概念: SqlSessionFactoryBean –为整合应用提供SqlSession对象资源 MapperFactoryBean –根据指定的Mapper接口生成Bean实例 MapperScannerConfigurer –根据指定包批量扫描Mapper接口并生成实例SqlSessionFactoryBean: 在单独使用MyBatis时,所有操作都是围绕SqlSes转载 2017-04-03 16:12:30 · 1158 阅读 · 1 评论 -
git rebase 和 git fetch 区别
dev分支状态如下: test分支状态如下: 使git merge test之后: 可见dev分支有了一次新的提交并且test分支之后的提交都当作当前分支的提交依次在log中显示。对test分支的log木有影响。 使用git reset –hard HEAD^和git rebase test之后dev状态: 可见没有新增新的commit且test分支合并到了dev分支 test分支状原创 2017-02-21 19:43:46 · 7531 阅读 · 1 评论 -
mybatis的sql语句生成器
all,再也不用为生成一大坨mybatis格式的sql而烦恼了,只要有数据库建表语句,上传后,就可以得到javabean和常用增删改查sql,赶快试试吧 使用部分功能链接:http://tqyebook.duapp.com/manage/fileUpload.html 试用阶段请大家提提宝贵的意见! git地址: https://git.oschina.net/tengqingya/gen原创 2017-02-21 19:54:45 · 1297 阅读 · 6 评论 -
Spring框架访问静态资源处理方式
Spring框架访问静态资源处理方式 目录 [隐藏] 1 web.xml配置如下: 2 其中applicationContext.xml中配置如下: 3 Controller如下: 4 解决方法一: 5 解决方法二: 6 解决方法三: web.xml配置如下:<servlet> <servlet-name>web</servlet-name> <s原创 2017-02-21 14:25:49 · 598 阅读 · 1 评论 -
java使用反射给对象属性赋值的两种方法
java反射无所不能,辣么,怎么通过反射设置一个属性的值呢? 主程序:/** * @author tengqingya * @create 2017-03-05 15:54 */public class TestReflectSet { private String readOnly; public String getReadOnly() { return原创 2017-03-05 16:22:32 · 49426 阅读 · 3 评论 -
模拟发送带cookies的http请求的两种方法
如果想发送带cookies的请求,有两种方式,一种使用工具,一种使用java代码,干货如下:使用工具使用的工具是postman和Postman Interceptor使用谷歌浏览器的扩展程序下载(需要科学上网或者修改本机host,不过此方法稍微麻烦点) 使用postman发送带cookies的请求,必须启动谷歌浏览器和postman两者的Interceptor,缺一不可 首先必须得启用浏原创 2017-03-05 16:54:05 · 28112 阅读 · 0 评论 -
ThreadLocal原理和项目中如何使用
本教程分如下三个部分 1. 项目中如何使用Threadlocal 2. Threadlocal和Thread关系以及Threadlocal源码分析 3. Threadlocal的DEMO练习(提供github和码云下载源代码)首先上干货。讲讲我司项目中如何使用ThreadLocal。 这是一个登录会话保持的静态类,用来保存当前线程的登录信息。 使用AssertionContent原创 2017-03-19 14:49:15 · 2600 阅读 · 5 评论 -
JAVA设计模式讲解(原理+实例)---装饰模式
本文讲下什么是装饰模式。装饰模式类图如下: 这里有父组件Component是一个抽象类或者一个接口,这个看具体业务的需求,ConcreteComponent是一个继承了父类(接口)的具体实现类,也就是被装饰的类。Decorator是装饰器,其实也是可有可无的,看具体业务,如果装饰器是一个抽象类,辣么它的存在就表示子类必须实现装饰器的某些方法,如果装饰器的某些方法已经自己实现了,说明子类可以实现也可原创 2017-03-26 16:16:50 · 635 阅读 · 1 评论 -
Hystrix(Netflix)使用教程-1
Hystrix(https://github.com/Netflix/Hystrix)是Netflix(https://www.netflix.com/global)的一个开源项目,主要作用是通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。 其可以看做是Netflix团队对分布式系统运维的各种理念和实践的总结。值得一提的是在ThoughtWorks最新的Tech原创 2017-03-25 14:05:23 · 6169 阅读 · 3 评论 -
java动态代理--代理接口无实现类
使用通过接口定义,或解析接口注解等完成相关功能,如mybatis的SqlSession.getMapper的实现接口定义package cn.proxy; public interface IHello { String say(String aa); } 代理实现package cn.proxy; import java.lang.reflect.Invocatio转载 2017-04-03 13:15:32 · 1460 阅读 · 0 评论 -
Jsonp跨域请求服务端之动态替换页面数据
html页面代码<a id='downloadAndroid' class="button-text " href="http://tqy.res.***.com/freeapk/tqy.apk" target="_bank"><img src="http://www.tqy.com/images/android_08ced5b.png"/> Android 下载</a><script> fu原创 2017-02-21 14:39:18 · 1073 阅读 · 1 评论