自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tqy的博客

tqy的博客

  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

原创 根据经纬度,使用h3算法获取所有方向上的索引,并且按照距离排序

H3是一个针对地球的空间划分和空间索引系统。H3地理空间索引系统是一个离散的全局网格系统,该系统由具有层次结构索引的球形多精度六边形拼贴组成。在球形外接二十面体的平面上创建六边形网格系统,然后使用反面为中心的多面体结构投影将网格单元投影到球体的表面。从单纯的点到点覆盖范围计算,查询效率低下,而Uber H3通过为全球地理位置定制了一套,正六边形构成的覆盖图,每个覆盖图有一个唯一Id,通过空间换时间的思想,让点对点的查询变成了索引结构的匹配查询。实现了在没有巨大误差前提下的高效查询。

2023-01-17 17:09:10 964

原创 http和dubbo接口调用主动设置超时时间

动态修改每个http接口的超时时间,使用RestTemplate调用和OkHttp3ClientHttpRequestFactory封装主动设置dubbo接口的超时时间

2022-11-29 11:11:58 1991

原创 java业务代码自动降级实现

我们设想的是,在需要降级的方法上,加上一个注解,就能够实现降级的全部功能。所以先定义一个注解。/***是否需要降级的注解配置*35/***是否降级**@return/***需要降级的部门接口*假设有部门A和部门B*部门A有接口C和D*部门B有接口E和F*则在C和D的方法上配置A,并且降级开关打开的时候,就会直接降级接口C和D*@return/***降级日志描述,方便定位问题**@return}...

2022-07-30 14:14:03 1421

原创 mybatis plus分页查询count数量和返回list结果不一致

本地调试一个方法,方法名为 模拟分页参数为 ,出现奇怪的现象 分页插件使用threadlocal保存当前的分页参数并在调用查询的时候先count一次,此问题现象为count的时候是有1条数据的,但是返回的list结果集却没有数据并且没有打印执行select list的sql语句,好奇怪啊,按道理是两者的数据量肯定是一样的并且要执行2次sql查询 于是进入debug查看,首先进入到executeForMany方法 接着进入selectList方法 继续进入P..

2022-04-11 10:35:02 4214 2

原创 http接口返回中文数据偶现乱码问题排查

目录问题产生排查过程问题分析结论问题产生本地环境(spring框架)调试一个http接口,数据从数据库获取并缓存到redis,偶现接口返回的数据有乱码,如下图排查过程去掉缓存,每次都从数据库获取,不会产生乱码 每次都从缓存获取,不会乱码(前提缓存的数据都是正确的) 只使用测试环境,不管数据从缓存还是从数据库都不会产生乱码 只使用本地开发环境,不管数据从缓存还是从数据库都不会产生乱码 测试环境和本地环境都启动,每次请求都删除缓存,让缓存重新生成,偶现乱码...

2021-08-05 16:46:49 2499

原创 shardingsphere批量插入引起的mysql主键和分布式自增键递增顺序不一致的bug

shardingsphere批量插入,数据库主键和分布式自增键递增顺序不一致问题复现和排查过程版本相关关键词使用背景bug分析进入debug调试问题复现和排查过程版本相关shardingsphere版本:4.1.1mybatis版本:3.5.3关键词mybatis、shardingsphere、sharding-jdbc、shardingjdbc、批量插入、自增主键、分布式主键、排序不一致、desc、递增使用背景使用 INSERT INTO *** VALUES \<fore

2021-03-27 16:27:49 3052 4

原创 如何应对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 6945

原创 基于cglib的接口代理和非接口代理的区别

这是目录jdk动态代理cglib动态代理cglib代理接口cglib代理实现类对比源码版权所有jdk动态代理jdk动态代理只可以代理接口,因为最后的实现类要继承Proxy并实现该接口cglib动态代理cglib既可代理接口又可以代理实现类,那背后的源码是如何实现的呢?cglib代理接口接口代码package com.tqy.document.reader.extention.de...

2019-05-01 14:04:53 7260

原创 spring源码学习之1--spring扩展之自定义XmlWebApplicationContext和DefaultBeanDefinitionDocumentReader实现动态修改配置文件内容

spring扩展之自定义XmlWebApplicationContext和DefaultBeanDefinitionDocumentReader断点加载配置文件的流程自定义配置文件和类文件实现修改配置效果展示总结断点加载配置文件的流程首先我们在AbstractApplicationContext文件的refresh()方法加上断点进入obtainFreshBeanFactory()方法...

2019-04-13 15:41:07 692

原创 pomelo使用采坑记(学习使用部署相关)

pomelo学习、使用和部署pomelo推送方式频道推送直接推送bearcat集成remote和handler集成非pomelo框架的service、util等的集成bearcat优势默认路由规则采坑未进行用户Id绑定的多服务器远程调用路由配置log按照时间日期服务器分割按服务器和天分割按服务端和小时分割按天分割IDEA调式服务器配置IDEA配置步骤分布式部署ssh方式非ssh方式pomelo推...

2018-10-20 15:32:29 3768 1

原创 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 8615 2

原创 记录一次索引优化经历

表结构如下: 主要用到FIS_BACKUP、FID和FSTATUS几个字段做查询。索引如下:整张表,前半部分数据FIS_BACKUP都是1,后半部分数据FIS_BACKUP都是0,共2000w多条数据查询语句如下:SELECT * FROM `T_MP_COMMENT` C WHERE C.FID>=15041538 AND C.FSTATUS!=9 AND C.FIS_B

2017-09-15 20:21:34 460

转载 JDK动态代理实现原理

之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 package dynamic.proxy; import java.lang.reflect.InvocationHandler;

2017-07-12 14:10:44 902

转载 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 5796

转载 静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式

百度众说纷纭的情况下就不如自己写例子测试理论,话不多说,上代码: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 447

原创 Vue实现app中搜索页面的炫酷搜索热词布局样式

首先是效果图可以自适应屏幕大小可以每次刷新改变热词底色在电脑显示如下下面是实现过程数据准备:原始数据为["透视小医神","白鹿原","我的绝色美女房客","首席总裁:契约宠妻","仕途天骄","择天记","爆宠狂妻:神医五小姐","溺宠成妃","很纯很暧昧","我的名模总裁","极道军医","斗破苍穹"]布局:其中hotWords是上面的数据。以上代码是根据原始数据的个数自动生成hotW

2017-05-29 17:06:57 1917 1

原创 集成vue到jquery/bootstrap项目

说明,项目本身使用jquery和bootstrap做的管理后台,部分登录接口跑在node服务端,大部分接口使用springmvc实现。现在,使用vue开发,集成vue到原先的项目中。不影响原先的框架。原来的打包方式是使用fis打包,集成vue之后,先用webpack打包,再用fis打包。互不影响。由于原先使用jquery和bootstrap,所以package.json文件夹下面没有数据。使用vu

2017-04-27 19:55:48 4332

原创 使用Twemproxy搭建redis服务器集群

Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展。使用proxy就可以实现。 源码:https://github.com/twitter/twemproxy 1. 首先,选一台安装了zookeeper的机器。 2. 这里不讲解如何安装zookeeper。将twemproxy-master解压到目录/data下。 3. 修改proxy配置v

2017-04-26 20:00:04 2973

转载 SprignMVC+myBatis整合+mybatis源码分析+动态代理实现流程+如何根据mapper接口生成其实现类

首先熟悉三个概念: SqlSessionFactoryBean –为整合应用提供SqlSession对象资源 MapperFactoryBean –根据指定的Mapper接口生成Bean实例 MapperScannerConfigurer –根据指定包批量扫描Mapper接口并生成实例SqlSessionFactoryBean: 在单独使用MyBatis时,所有操作都是围绕SqlSes

2017-04-03 16:12:30 1132 1

转载 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 1408

原创 使用fetch代替ajax发送数据实践(node+webpack)--whatwg-fetch

安装whatwg-fetch(和ajax一样,新的获取数据方式,支持promise语法)获取数据。安装方法:npm install whatwg-fetch --save; orbower install fetch.导入依赖。注意这里的导入只能使用**import 'whatwg-fetch';**接着是发送xhr请求的代码,我们将其封装成一个方法,如下function myFetch(

2017-03-29 15:34:04 14277 2

原创 JAVA设计模式讲解(原理+实例)---装饰模式

本文讲下什么是装饰模式。装饰模式类图如下: 这里有父组件Component是一个抽象类或者一个接口,这个看具体业务的需求,ConcreteComponent是一个继承了父类(接口)的具体实现类,也就是被装饰的类。Decorator是装饰器,其实也是可有可无的,看具体业务,如果装饰器是一个抽象类,辣么它的存在就表示子类必须实现装饰器的某些方法,如果装饰器的某些方法已经自己实现了,说明子类可以实现也可

2017-03-26 16:16:50 596 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 6118 3

原创 redis的setbit,getbit,bitcount的使用详解

可以先看下这篇文章,https://www.zhihu.com/question/27672245里面一定能解决你的大部分疑惑。 接着,我连上redis服务器。redis-cli -p 6383 (端口号填写自己的)BITCOUNT bit:查找key值为bit的bit位为1的个数redis 172.16.10.228:22121> BITCOUNT bit(integer) 0接着使用4

2017-03-24 13:06:43 8858 3

转载 Redis架构之防雪崩设计:网站不宕机背后的兵法

一、缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步:缓存层不命中存储层不命中,所以不将空结果写回缓存返回空结果 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。 缓存穿透模型 缓存穿透问题可能会使后端存储负载

2017-03-24 11:04:53 1474 1

原创 添加react到已存在的项目中(Adding React to an Existing Application)-2

接着上一篇 上一篇讲到使用IDE工具如webstorm检测文件的变化,自动编译jsx、es6格式的文件,使其编程浏览器识别的javascript代码。但是最后还是有点问题,就是有些语法还是不支持。 最终只能使用强悍的打包工具webpack来实现了。 安装webpack:mkdir webpack-demo && cd webpack-demonpm init -ynpm install -

2017-03-23 13:10:40 1365 1

转载 ES6之Babel的各种坑总结

自从 Babel 由版本5升级到版本6后,在安装和使用方式上与之前大相径庭,于是写了这篇入坑须知,以免被新版本所坑。 坑一:本地安装和全局安装 全局安装只需: $ npm install --global babel-cli这时候我们可以使用 Babel 命令编译文件: $ babel index.js --out-file compiled.js或 $ babel index.

2017-03-22 20:02:53 1142 1

原创 添加react到已存在的项目中(Adding React to an Existing Application)-1

将react功能添加到已有的项目中去,不必担心要重构你的项目。 你只需要按以下步骤:如果你的项目中没有package.json文件则在项目根目录敲:npm init,初始化一个配置文件,如果有则跳过这一步npm install -p react react-dom先安装一个全局的react和react-dom(这步可做可不做),然后,进入项目根目录安装npm install --save re

2017-03-22 19:58:37 2771 1

转载 详细讲述MySQL中的子查询操作

新建一个测试数据库TestDB;create database TestDB;创建测试表table1和table2;CREATE TABLE table1( customer_id VARCHAR(10) NOT NULL, city VARCHAR(10) NOT NULL, PRIMARY KEY(customer_id))ENGINE=INNODB DEFAULT CHAR

2017-03-22 12:21:25 375 1

转载 MySQL "replace into" 的坑

MySQL 对 SQL 有很多扩展,有些用起来很方便,但有一些被误用之后会有性能问题,还会有一些意料之外的副作用,比如 REPLACE INTO。比如有这样一张表:CREATE TABLE `auto` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `k` int(10) unsigned NOT NULL, `v` varchar(1

2017-03-22 09:53:49 549 1

转载 JS中箭头函数详解=>

箭头函数表达式的语法比函数表达式短,并且不绑定自己的 this,arguments,super或 new.target。此外,箭头函数总是匿名的。这些函数表达式最适合非方法函数,它们不能用作构造函数。语法EDIT 基础语法(param1, param2, …, paramN) => { statements }(param1, param2, …, paramN) => expression

2017-03-21 16:18:26 1701 1

转载 JS函数的 this 关键字详解

与其他语言相比,函数的 this 关键字在JavaScript中的行为略有不同。它在严格模式和非严格模式之间也有一些区别。在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,在每次函数被调用时this的值也可能会不同。ES5引入了bind方法来设置函数的this值,而不用考虑函数如何被调用的。在全局运行上下文中(在任何函数体外部),this指代全局

2017-03-21 15:58:35 455 1

转载 React创建组件的三种方式及其区别

React创建组件的三种方式及其区别React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归;具体的三种方式:函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的extends React.Component定义的组件 虽然有三种方式可以定义react的组件,那么这三种定义组件方式有什么不同呢?或者说为什么会出现对应的定义方式呢

2017-03-21 11:32:56 356 1

原创 react学习--2

本文就讲解了如何通过react生命周期删除元素、生命周期的理解、react创建简单定时器和组件的创建方式等知识点。

2017-03-19 19:38:48 336 1

原创 react学习--1

首先万事皆有源,react的github地址附上:https://github.com/facebook/react看完这些之后。可以再来看本人学习的过程,本人也是在看了上面的博客然后结合官网的例子,继续学习的。推荐几个react必备网址:react生命周期学习:getDefaultProps,getInitialState,componentWillMount,render,componentDidMount等

2017-03-19 16:55:55 469 1

原创 ThreadLocal原理和项目中如何使用

本教程分如下三个部分 1. 项目中如何使用Threadlocal 2. Threadlocal和Thread关系以及Threadlocal源码分析 3. Threadlocal的DEMO练习(提供github和码云下载源代码)首先上干货。讲讲我司项目中如何使用ThreadLocal。 这是一个登录会话保持的静态类,用来保存当前线程的登录信息。 使用AssertionContent

2017-03-19 14:49:15 2558 5

原创 模拟发送带cookies的http请求的两种方法

如果想发送带cookies的请求,有两种方式,一种使用工具,一种使用java代码,干货如下:使用工具使用的工具是postman和Postman Interceptor使用谷歌浏览器的扩展程序下载(需要科学上网或者修改本机host,不过此方法稍微麻烦点) 使用postman发送带cookies的请求,必须启动谷歌浏览器和postman两者的Interceptor,缺一不可 首先必须得启用浏

2017-03-05 16:54:05 27900

原创 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 49087 3

原创 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 1208 6

原创 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 7470 1

myEncrypt.js

RSA加密和解密长字符串,解决传统RSA加密和解密过长的字符串报错问题(js版本)

2021-09-27

RSAUtil.java

RSA加密和解密长字符串,解决传统RSA加密和解密过长的字符串报错问题(java)

2021-09-27

毕业论文答辩ppt专属模版

毕业论文答辩ppt专属模版,本科毕业答辩,研究生毕业答辩 专属 模版。动态效果很好。

2016-05-27

空空如也

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

TA关注的人

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