自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(175)
  • 资源 (5)
  • 收藏
  • 关注

原创 垂直电商搜索

垂直电商搜索文章目录垂直电商搜索1. 搜索引擎分类2. 搜索优化的目标3. 搜索结果综合排序4. 搜索的关键词抽取5. 索引5. 技术难点1. **单字** 较难解决的问题2. 停用词的问题3. 组合词问题4. 输入错词的问题5. 命名实体识别6. 用户意图识别6. 冷启动数据问题总结1. 搜索引擎分类当前的搜索引擎的分类主要分为:全网搜索引擎。比如:“百度”、“谷歌”对互联网的各种数据进行搜索。垂直搜索引擎。垂直搜索引擎的数据限定于垂直领域,垂直领域是针对某一个行业或者细分领域的,这些垂直领域

2021-04-22 00:01:37 514

原创 RESTful 风格url守则

指导准则:类似电脑里面的文件夹位置1. RESTful的概念REST 的英文全称“Representational State Transfer”,即“表现层状态转移”。REST的名称“表现层状态转化”中,省略了主语,“表现层”其实指的是“资源”(Resources)的“表现层”。**所谓“资源”,就是网络上的一个实体,或者说是网络上的一个一个具体信息。**它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT.

2020-09-26 23:02:01 861

原创 让你的java业务代码并发的调用,并正确的处理返回结果

1 背景实际的java web开发过程中,在业务处理的过程中,需要调用多次外部的服务(可能是http服务,也可能是rpc服务),而这写调用是可以并行的。然而,目前网上能找到如何编写这类代码的资料极少,对于初学者来说想要实现起来会有一定的难度。因此,本篇文章将给出一个简单易用的并行处理代码,希望对你有帮助。2 实现的demo2.1 工具类 ConcurrencyDataTagEnum.java@Getter@AllArgsConstructorpublic enum ConcurrencyData

2020-09-20 16:20:25 840

原创 MySQL 索引

1. 什么是索引?客户端-》【缓存-》语法解析器-》查询优化器-》查询执行引擎】-》索引和数据索引是辅助存储引擎高效获取数据的一种数据结构,索引是数据的目录,便于搜索引擎快速定位数据2. 索引的分类数据结构: B+ tree、Hash、Full-text索引物理存储:聚簇索引和二级索引(辅助索引)字段特性:主键索引、唯一索引、普通索引、前缀索引字段个数: 单列索引和联合索引(复合索引)2.1 数据结构InnoDBMyISAMMemoryB+tree 索引YesY

2020-09-13 18:02:05 192

原创 一次kafka集群重启引发的线上问题

1. 背景在某次运维发现线上的kafka server集群的默认配置的size太小,不能满足业务发送数据的要求,导致业务阻塞,于是,更改了kafka server的某项参数的size大小之后,并重启了线上kafka server集群。在重启集群之后,线上实时业务消费kafka topic的消费者开始报错,在消费端的错误信息为:消费方的error错误信息为:"Container exception":org.apache.kafka.common.errors.TimeoutException:

2020-09-12 11:50:42 7232

原创 关于搜索建议词的分析以及相应的优化方案

1. 背景不管是全文搜索引擎,还是垂直搜索系统中,当用户在搜索????输入框中输入几个字的时候,会自动下来一些词去自动补全用户可能要搜的词语,这部分的功能,我们称作搜索建议器的功能(英文叫做"suggest")。本文将介绍下目前主流的搜索建议器的做法,并且给出了一个我们认为更好的搜索建议器的做法。2. 搜索建议器的指导原则这里,我们给出如下搜索联想词指导原则:搜索联想词的个数是非常有限的,所以必须尽量有效搜索联想词应该是能够最贴近用户想要的结果搜索联想出来的词应该是能够**99%**搜索到商品

2020-09-09 22:53:15 1416

转载 HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3的区别

1. HTTP 基本知识1.1 HTTP是什么?HTTP是超文本传输协议,也就是HyperText Transfer Protocol。HTTP的名字「超文本传输协议」,它可以拆成三个部分:超文本传输协议1.2 HTTP 常见的状态码有哪些?五大类HTTP状态码大类具体含义常见的状态码1××提示信息,表示目前协议处理的中间状态,还需要后续的操作2××成功,报文已经收到并被正确处理200、204、2063××重定向,资源位置发生变动,需要客户端重

2020-09-08 09:10:58 2760

原创 番茄工作法(简单易行的时间管理方法)

概念让你在25分钟内,一次只做一件事情,集中精力只做当前任务的事情,意味着全力以赴,任何其他的事情都不得打断当前的任务。当时间到后,就立即放下手头的事情,休息5分钟,这5分钟不可以做任何和工作相关的事情,包括:回复邮件等事情,你可以去喝一杯咖啡,或者眯一会儿,让大脑休息一会儿。如何实施作者强调如果想改变25分钟这个时间安排,至少尝试两个礼拜,因为更长的时间意味着在此期间更容易被打断。在每天开始前,进行计划;每天结束时,进行记录、处理和可视化。番茄工作法的好处在于,可以持续的学习,特别适合备考阶段或

2020-08-30 17:02:44 395

原创 idea中maven依赖包识别不了的问题

项目开发过程中遇到依赖的jar包无法识别到,可以通过查看idea的help=>“Show log in finder”解决上面问题,只要删除掉本地的maven仓库相关的jar包即可。...

2020-03-30 22:20:51 3594

原创 共享变量在线程中的可见性问题分析

导致共享变量在线程间不可见的原因:1)线程交叉执行2)重排序结合线程交叉执行3)共享变量更新后的值没有在工作内存与主存间及时更新可见性-synchronizedJVM中关于synchronized的两条规定:1)线程解锁前,必须把共享变量的最新值刷到主内存2)线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值(注意:加锁和解...

2020-02-07 19:47:43 3039

原创 利用Swagger2 构建api文档

背景介绍:Swagger是一个用于java代码中写注解,然后可以通过访问指定的网页,自动生成接口文档,并且可以通过接口进行功能测试。使用介绍:(1)添加Maven依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</arti...

2018-11-12 21:26:06 1127

原创 idea 使用说明以及常用插件介绍

一、idea使用说明导入idea的配置(如果之前有配置好的idea的配置文件)设置idea的缺省配置文件(1)设置默认的jdk(2)设置默认的Maven仓库地址(3)设置默认的Java文件的头部格式(4)设置文件编码UTF8格式(重要)(5)设置点击Java 文件自动弹出对应的包列表(6)设置idea软件自身可以使用软件的内存大小idea...

2018-10-09 00:03:32 1137

原创 Java 动态代理

Java动态代理的实现有两种方式:1、jdk 自带的动态代理2、spring 中的cglib实现的动态代理区别:jdk自带的动态代理一定要有接口interface类,而cglib不需要。(1)基本信息UserInfoService.java 类:public interface UserInfoService { String getUserNa...

2018-10-08 22:42:47 273

原创 guava SimpleTimeLImiter进行方法超时调用控制

1、基于类级别的调用(1)编写接口类UserInfoService.javapublic interface UserInfoService { String getUserName() throws InterruptedException;}(2)编写对应的实现类UserInfoServiceImpl.javapublic class UserInfoServ...

2018-09-29 21:38:47 5614 1

原创 自定义log4j Appender

MySQL中可以自定义Appender,这里给出一个自定义的将日志输出到指定的文件的appender:1、继承AbstractAppender类FileAppender.class@Plugin(name = FileAppender.FILE_APPENDER, category = "Core", elementType = Appender.ELEMENT_TYPE, pr...

2018-09-27 22:10:27 1355

原创 Spring boot 多数据源配置

这里讲下如何在一个Spring Boot项目中配置多个数据源:Mave中添加依赖:<!-- Spring Boot Mybatis 依赖 --><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring...

2018-09-26 23:46:46 232

原创 Spring 不通过注解加载bean

工具类:SpringUtil@Componentpublic class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContex...

2018-09-06 22:29:25 1462

原创 Spring boot 具体化类和配置来缩短单元测试时间

我们在写完业务代码之后,都需要编写测试用例来验证代码逻辑是否正确,这样不仅方便自己后期检查,也方便后面接手的人快速测试我们的代码。编写测试用例时,我们可以通过如下快捷键:ctrl+shift+T,然后会出现如下提示:点击,Create New Test....通常,只是帮助我们生成一个包下对应的类,以及方法名,然后我们在类上面,简单粗暴的添加:@RunWith(Sprin...

2018-08-22 22:52:44 2892 1

原创 一种MySQL 分类查询方法

在开发过程中,经常会遇到需要对不同的分类情况下获取相应分类下制定排序的前N条数据。一种比较慢的办法是先查询总共有几个分类,然后根据分类id再去获取前N条数据,这样一共需要进行1+N次数据库查询。这里给出一种,可以只根据一条MySQL语句查询,然后把查询结果在JAVA代码中进行处理获取需要的结果。举个栗子:1、 创建表 tb_infocreate table tb_info(...

2018-08-16 21:54:24 2025

原创 Spring 事务 注解@Transaction 用法

在实际开发中,对于一组数据库操作特别是增删改操作,为了保证原子性,通过需要用事务来控制,要么全部成功,要么全部失败。Spring中可以通过注解@Transaction常用的方法如下: @Transactionalpublic void testTransaction(User user) { int rowNum = userMapper.insertUser(user);...

2018-08-09 00:06:12 27899 5

原创 一种Spring web 统一异常处理切面设计

这里给出一种对控制层处理错误时,会抛出异常,导致返回给客户端的数据比较奇怪,因此,给出一个统一异常处理的类,ExceptionHandle,具体结构如下:具体代码如下:具体代码如下:@ControllerAdvice@Slf4jpublic class ExceptionHandle { @ExceptionHandler(value = Exception...

2018-07-24 23:32:57 615

原创 谈ThreadLocal中InheritableThreadLocal的用法以及ThreadLocalUtil类

例子1:public class TestThreadLocal { public static ThreadLocal<Integer> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { threadLocal.set(n...

2018-07-24 23:31:11 2906

原创 一种多层级机构数据库表设计的思路

在实际开发过程中,经常存在多个层级结构的设计,而且多个层级结构还需要排序。这里通过将多级结构的数据在同一张表中(无需多张表进行关联),并通过level的巧妙设计来实现单表查询。level的设计原则:0.*.* 其中,0是顶级结构,第一个*是顶级结构下的结构,第二个*是顶级结构下的结构下的结构。举个栗子:1、创建部门架构表:CREATE TABLE department ( ...

2018-07-23 21:39:33 31251 15

原创 java web中通过fork join来子任务拆分提高处理速度

场景分析: 在项目中,我们可能一次会请求较多数据(比如:一千条),此时,我们可以用fork/join将一次请求分解成N个子任务(每个任务请求1000/N条数据),假如一次请求一千条耗时5s,则我们分解子任务后耗时大概只需要5/N秒多一点。这里各处fork join的demo例子,如下所示举个栗子:@Slf4jpublic class ForkJoinTaskExample extends Rec...

2018-07-13 22:33:40 1425 1

原创 Spring MyBatis generator自动生成配置

1、需要在pom.xml中添加插件配置:<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <configuration> &l...

2018-07-10 22:10:56 512

原创 Java 注解的原理及自定义注解

1、@Deprecated与SupressWarnings("deprecation")对于废弃的方法,我们会用注解@Deprecated来显示注解表示,但是有的时候我们用了废弃的@Deprecated注解,会出现中横线,如果用了废弃的方法,又不想显示横线,可以添加注解@SupressWarnings("deprecation")举个栗子:public class DeprecateExample...

2018-07-09 22:07:39 399

原创 Spring 线程池定时监控

在上一篇Spring异步线程池:https://blog.csdn.net/timchen525/article/details/80672186,该文介绍了如何使用Spring的注解来配置异步线程操作。本篇博文中,补充介绍如何通过Spring定时任务来配置定时检测线程池的使用情况。ThreadPoolExecutor线程池提供了如下几个方法:getTaskCount():线程池已执行和未执行的任...

2018-07-09 21:59:53 4485 3

原创 Java中如何存储金额的问题

背景分析:在实际开发过程中,对于金额(一般是元为单位)前端输入一般为小数点两位,比如:1.10,小数点第二位到分。而且数据库的存储粒度可以为分或者元,如果为分,则传入的值需要乘以100。解决方法:前端传入的的为小数点2位(小数点合法的位数是2位,大于2位前端和服务端都要校验),服务端这边用Decimal来接收金额类型数据,数据库存储的类型可以为bigInt(此时传入的Double或者Decimal...

2018-07-05 21:11:48 4706

原创 Java查看字节码文件(基于JDK和IDEA)

Java虚拟机执行的是Java字节码文件(也就是.class文件),比如写一个Demo.java类:public class Demo { private static int num = 1; public static void main(String[] args) { System.out.println("say hello " + num);...

2018-06-28 22:10:55 3001

原创 Java 中包装类型的比较注意事项

Integer不能用比较等号==进行判断1)示例1:Integer a = 127;Integer b = 127;if (a == b) { log.info("a == b");} else { log.info("a != b");}输出:a == b2)示例2:Integer a = 128;Integer b = 128;if (a == b) { l...

2018-06-20 23:15:42 915

原创 MySQL中乐观锁和悲观锁

乐观锁:乐观的认为操作不会导致冲突,在操作数据时,并不进行任何其他特殊处理(也就是不加锁),而是在进行更新时,再去判断是否有冲突。MySQL数据库不支持乐观锁,需要开发者自己实现。乐观者开发者通常实现方案:给表添加一个版本号或者时间戳(基于version、基于timestamp字段),每次操作后,将记录的版本号加1。实际的做法为,先查询出来那条记录,获取version字段,如果要对那条记录进行更新...

2018-06-20 22:55:49 525

原创 Guava 常用工具类

引入guava包:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>11.0.2</version></dependency>1、Pr

2018-06-20 22:53:40 4201

原创 再谈StringBuilder和StringBuffer的区别

通常字符串的拼接我们可能会用加号"+"拼接,或者用StringBuilder、StringBuffer进行拼接。已经知道加号"+"拼接的字符串可能会创建多个对象(注意:我用的是可能,因为在一两个的拼接时候,jdk编译器会帮我们优化,而没有创建多个对象,不过,对于for循环里面的字符串拼接,推荐用StringBuilder或者StringBuffer)。区别:StringBuilder是线程不安全的...

2018-06-12 23:45:27 185

原创 日期工具:非线程安全SimpleDateFormat 和线程安全JodaTime(推荐)

1、SimpleDateFormat不是线程安全的对象举个栗子:@Slf4jpublic class DateFormatExample1 { private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); // 请求总数 public static i...

2018-06-12 23:43:20 1614

原创 Spring Boot异步线程池及异步编程

线程池中的两个概念:线程和任务,任务是需要线程去执行的。这里写一个支付相关的异步线程池的栗子:1、在application.properties中添加线程池的配置参数:# 支付相关的配置pay.threadNamePrefix=pay-exec-pay.maxPoolSize=20pay.corePoolSize=10pay.queueCapacity=10002、基于注解进行参数的配置在...

2018-06-12 22:32:38 3941

原创 MySQL中Select语句返回用List来接收

MySQL根据条件查询Select记住,永远用List<>几首返回。对于,确定只有单条记录,一般我的写法为:public int getPayStatusByPayno(OrderInfoRequest orderInfoRequest) { if (orderInfoRequest == null) { throw new DonationException(...

2018-06-09 23:49:25 10719 1

原创 MySQL 插入数据后返回自增id的方法

不推荐方法:INSERT INTO tim_test(`name`)values("tim");SELECT max(id) from tim_test;首先性能较低,且在高并发情况下,返回的值是不正确的。推荐方法:SELECT LAST_INSERT_ID();因为LAST_INSERT_ID是基于Connection的,只要每个线程使用独立的Connection对象,LAST_INSERT_...

2018-06-09 23:48:13 36111 1

原创 关于log该如何打以便后期排查问题

以前打印log前,没有考虑之后排查问题的方便与否,而只是觉得重要的信息才打印,但是什么是重要信息呢?这里总结了以下几点经验:1、通过打印log来跟踪一组行为在前面的博文:https://blog.csdn.net/timchen525/article/details/80358723中我写了用logId来跟踪一次request请求所打印的所有log日志,但是对于一个完整的操作步骤,比如,对于一个项...

2018-06-09 23:44:55 388

原创 ThreadLocal在实际项目中的应用

首先,分析下ThreadLocal的源码:在分析ThreadLocal的具体用法前,我们来看下ThreadLocal对外提供的三个方法(set、get、delete)的源码:1)set方法 设置变量public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t);...

2018-06-07 00:17:52 3853 1

转载 Java 开发四张技术栈图

1、分布式专题2、高并发/高性能3、性能优化专题4、源码分析专题

2018-06-05 00:44:27 7264

jmeter性能测试和linux指标查看

jmeter 性能测试和linux指标查看

2016-12-04

一个简单的web springMVC+hibernate

一个简单的web springMVC+hibernate,可以基于该框架进行后续开发!

2015-09-22

C# 多线程——可执行源代码

C# 多线程,可执行源代码,需要的可以下载

2014-03-15

latex IEEE会议模板

latex IEEE会议模板,有需要的同学可以去下载!

2014-03-15

CVTE 网测题目

cvte 题目,有需要参加笔试和面试的同学可以下载看下

2014-03-15

空空如也

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

TA关注的人

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