自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(343)
  • 资源 (2)
  • 收藏
  • 关注

原创 celery:celery介绍、架构、基本使用,celery执行异步任务、延迟任务、定时任务,django中使用celery。

celery介绍、架构、基本使用,celery执行异步任务、延迟任务、定时任务,django中使用celery。

2022-07-18 19:55:05 4582 3

转载 Python 优雅地利用两点经纬度计算地理空间距离

处理地理数据时,经常需要用到两个地理位置间的距离。以点(经度值,纬度值)表示地点的经纬度坐标,比如 A 点经纬度(30.553949,114.357399),B点经纬度(129.1344,25.5465),求 AB 两点之间的距离。已知地球上任意两点(lng1,lat1),(lng2, lat2)的经纬度坐标,本文讲解如何求两点间的距离。...

2022-06-25 17:41:49 8233 2

原创 python pip 安装报错 error in setup command: use_2to3 is invalid. 解决方法

python pip 安装报错 error in setup command: use_2to3 is invalid. 解决方法

2022-06-20 14:59:06 6940

原创 leetcode206---反转链表---java实现

给你单链表的头节点 ,请你反转链表,并返回反转后的链表。

2022-06-11 10:54:33 357 1

原创 求解多机作业调度问题

有m台相同的机器,需要处理n个独立的作业,作业i所需的处理时间为t[i]。 每个作业都可以在任何一台机器上加工处理,但未完工之前不允许中断处理。任何作业不能拆分成更小的作业。 如何对作业进行调度,使得所给的n个作业在尽可能短的时间内由m台机器加工处理完成。

2022-05-31 20:32:03 1781

原创 钱币找零问题java实现

钱币找零问题在我们的日常生活中非常普遍。假设纸币金额为1元、5元、10元、20元、50元、100元,123元应该尽可能兑换少的纸币。很显然,每一步尽可能用面值大的纸币即可,123元应该兑换1张100、1张20元和3张1元的。算法思路很简单,只需要尽可能从最大的面值往下一直减即可。...

2022-04-25 20:28:31 3591

原创 背包问题之完全背包算法详解

一、完全背包问题描述有5种物品和1个背包,每种物品的个数是无限的,背包最多只能装下10公斤的物品。怎样选择物品,使得背包能装下并且得到的价值最大。物品的重量、价值如下所示:物品编号 重量 价值 1 2 6 2 2 3 3 6 5 4 5 4 5 4 6 二、解题思路我们先看下多重背包实现原理:背包问题之多重背包_爱思考的实践者的博客-CSDN博客对比分析发现,完全背包与多重背包的差别就是:对物品

2022-03-28 20:19:56 3891

原创 背包问题之多重背包

一、多重背包问题描述有3种物品和1个背包,背包最多只能装下15公斤的物品。怎样选择物品,使得背包能装下并且得到的价值最大。物品的重量、价值和个数如下所示:物品编号 重量 价值 件数 物品1 3公斤 2元 4件 物品2 4公斤 3元 3件 物品3 5公斤 4元 2件 二、解题思路我们先看下0-1背包实现原理:背包问题之0-1背包算法详解_爱思考的实践者的博客-CSDN博客。对比分析发现,多重背包与0-1背包

2022-03-23 20:56:04 2237 1

原创 背包问题之0-1背包算法详解

一、0-1背包问题描述有5件物品和1个背包,背包最多只能装下8公斤的物品。怎样选择物品,使得背包能装下并且得到的价值最大。物品的重量和价值如下所示:物品1: 6公斤   价值48元物品2: 1公斤   价值7元物品3: 5公斤   价值40元物品4: 2公斤   价值12元物品5: 1公斤   价值8元

2022-03-21 23:06:56 12292 2

原创 动态规划求解最短路径问题

现有一张地图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间的距离。如下图所示,请找出从起点A到终点E的最短距离。二、算法描述利用动态规划的思想,求解最短路径问题,算法过程如下:1.节点标号。将节点A到节点E进行标号,A节点序号0,B1节点序号1......以此类型,节点E序号10。2.描述最优解方程。令f(i)表示从起点0到节点i的最短距离,节点j为与节点i相连接的节点,d[j][i]表示节点j与节点i之间的距离,则:f(i) = mi..

2022-03-11 14:33:30 15175

原创 ThreadPoolTaskExecutor和ThreadPoolExecutor区别

工作中发现, 在创建线程池的时候,有些同事使用ThreadPoolTaskExecutor,有些同事则使用ThreadPoolExecutor,容易令人混淆。于是,决定探究下这两个线程池的区别以及使用,也方便其他同学理解清楚。一、ThreadPoolExecutorThreadPoolExecutor是JDK中的线程池类,实现了Executor接口。 顾名思义,Executor 是一个专门用来处理多线程工作的接口,所有多线程处理相关的类都实现了这个接口。线程池主要提供一个线程队列,队列中保存着所

2022-02-28 18:12:22 2230

原创 HBase常用Shell命令详解

一、hbase数据模型介绍hbase数据模型包括:1.表(table)---------hbase用表来组织数据。表名是字符串(string),由可以在文件系统路径里使用的字符组成。2.行(row)---------在表里,数据按行存储。行由行健(rowkey)唯一标识。行健没有数据类型,总是视为字节数组byte[].3.列族(column family)-----------行里的数据按照列族分组,列族也影响到hbase数据的物理存放。因此,它们必须事前定义并且不轻易修改。表中每行拥有相同

2022-02-24 15:49:21 24804

原创 LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue、ConcurrentLinkedQueue、TransferQueue原理简介

一、jdk中队列特点在jdk中有许多队列,其使用还是有一些难度的,因为涉及到了并发等概念。现在,我们列举一下队列的特点:(1)并发情况下,不会有线程安全问题。(2)队列都有元素。(3)都有添加(生产者端使用)、获取(消费者端使用)功能。(4)在多线程、高并发场景下使用。二、jdk中队列有哪些2.1、LinkedBlockingQueueLinkedBlockingQueue是一个无界、有缓存的等待队列。在SingleThreadPool(单个线程的线程池)、FixedThre

2022-02-18 20:48:32 708

原创 Spring三级缓存详解

Spring三级缓存是为了解决对象间的循环依赖问题。

2022-02-17 17:35:30 17706 10

原创 dynamic-datasource-spring-boot-starter源码分析

一、简介dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。github: https://github.com/baomidou/dynamic-datasource-spring-boot-starter文档: https://github.com/baomidou/dynamic-datasource-spring-boot-starter/wiki它与mybatis-plus属于同一个生态圈,很容易集成m

2022-02-10 17:53:29 7050 1

原创 @PostConstruct、InitializingBean、initMethod使用详解

一、@PostConstruct与@PreDestroy介绍从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解:@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法,使用示例如下:@PostConstructpublic void someMethod1(){} @PreDestroypublic void someMethod2(){}被@PostConstruct修饰的方法,会在服务器加载Serv

2022-02-08 17:27:30 5723

原创 MongoDB---使用TTL索引自动删除过期数据

目录一、前序二、TTL索引介绍三、TTL索引生效机制四、创建TTL索引五、修改TTL索引的expireAfterSeconds属性值六、动态指定TTL索引的过期时间七、TTL索引使用限制条件八、验证TTL索引功能一、前序 由于公司业务需求,对于1个月前的过期数据需要进行删除,以释放空间和方便维护。 本来想使用crontab写个脚本定时执行删除操作,但是看到Mongo本身就有自动删除过期数据的功能,就是使用TTL索引。决定使用TTL自动...

2022-02-07 16:26:20 3514

转载 MySQL和MySQL驱动mysql-connector-java升级到8.0.X版本

目录一、MySQL升级到8.0.X版本1.1 升级的原因及MySQL8.0版本新特性1.2 下载MySQL1.3 备份数据1.4 卸载原版本MySQL1.5 安装下载的新版本。1.6 MySQL升级后的兼容性问题二、升级MySQL驱动mysql-connector-java到8.0.X版本2.1 为什么要升级驱动版本2.2 升级版本2.3 修改配置2.4 mysql-connector-java升级到8.0之后的一些兼容问题三、MySQL8.0和5.7性能

2022-02-07 14:09:01 4351 1

原创 python3使用openpyxl生成xlsx类型的excel表格

一、使用介绍使用openpyxl生成xlsx类型的execl,非常方便。先介绍下用到的相关模块与函数:(1)Workbook:工作簿模块,在内存创建一个工作簿。(2)ExcelWriter:使用它向exel中写数据。(3)get_column_letter:给一个数字得到一个列名,如A、B、C。二、openpyxl模块安装模块安装命令:pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple三、操作示

2022-01-25 17:37:36 4808 1

转载 Maven中央仓库地址大全

一、一般使用Maven中央仓库地址1. http://www.sonatype.org/nexus/2. http://mvnrepository.com/ (本人推荐仓库)3. http://repo1.maven.org/maven2关于 Maven 远程仓库地址的配置方式有两种:第1种:直接在项目的 pom.xml 文件中进行修改(不推荐,尤其是在多人协助的开发过程中非常的费事费力);第2种:将 Maven 的远程仓库统一的配置到 Maven 的 Settings.xml 的配

2021-12-20 20:52:29 80975 2

原创 用jackson的@JsonProperty注解属性名多出一个字段问题解决方案

一、问题今天在用jackson的@JsonProperty注解属性名时,发现输出结果里面多了一个字段。二、原因Jackson2在初始化序列器时,首先,对pojo类型对象会收集其属性信息,属性包括成员变量及方法;然后,将属性名称和处理过后的方法名称作为key,保存到一个LinkedHashMap中。在对pojo类型对象收集的过程中,Jackson2会调用com.fasterxml.jackson.databind.util.BeanUtil中的legacyManglePropertyName方法来

2021-12-01 20:14:24 2067

转载 [ElasticSearch]ES操作之游标查询Scroll Search

一、什么是ES游标查询(Scroll)  顾名思义,相当于用“一把游标”标记“查询的位置”。二、为什么要使用游标查询  在默认情况下,ES查询每次返回的数量最多只有1W条,且只能是前1W条。这意味着,在不修改配置的情况下,想通过分页的方式(如下)拿到1W条之后的数据是做不到的。GET /索引/类型/_search{ "size": 10000, "from": 5000, "query": { ... }, "aggs": { ...

2021-11-12 20:45:01 5680 1

原创 Elasticsearch分页解决方案研究

1.1 常见的分页方式:from+sizeelasticsearch默认采用的分页方式是from+size的形式。但是,在深度分页的情况下,这种使用方式的效率是非常低的,比如from=5000,size=10,es需要在各个分片上匹配排序并得到5000*10条有效数据,然后在结果集中取最后10条数据返回。除了会遇到效率上的问题,还有一个无法解决的问题:es目前支持最大的skip值是max_result_window(默认为10000),也就是说,当from+size > max_resul...

2021-11-12 17:12:49 3949

转载 zookeeper是如何保证创建的节点是唯一的?

目录一、问题背景二、zookeeper源码级保证原子性三、java源码级CAS四、汇编级别CAS五、操作系统(处理器)级别的CAS一、问题背景zookeeper是一个分布式协调服务,可以保证数据的一致性。由于所有的写请求都会被Follower节点转发到Leader节点执行,创建节点的请求也是一样的,所以只会由Leader节点创建新的节点,然后把数据同步到其他Follower节点。那么,它是如何保证创建的节点是唯一的呢?二、zookeeper源码级保证原子性zook

2021-11-11 20:54:12 559

原创 数据库分库分表策略的参考实现方案

随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。对于数据库的扩展方案,主要包括:业务拆分、主从复制,数据库分库与分表。这篇文章主要讲述数据库分库与分表。一、MySQL扩展方案具体的实现方式(1)业务拆分业务起步初始,为了加快应用上线和快速迭代,很多应用都采用集中式的架构。随着业务系统的扩大,系统变得越来越复杂,越来越难以维护,开发效率变得越来越低,并且对资源的消耗也变得越来越大,通过硬件提高系统性能的方式带来的成本也越来越高。因此,在选型初期

2021-11-05 21:14:15 850

转载 Guava Cache用法介绍

背景缓存的主要作用是:暂时在内存中保存业务系统的数据处理结果,等待下次访问使用。在日常开发中,有很多这种场合:有一些数据量不是很大,不会经常改动,并且访问非常频繁;但是,由于受限于硬盘IO的性能,或者远程网络等原因,获取可能非常耗时,导致我们的程序非常慢。这在某些业务上是不能忍的!缓存正是解决这类问题的神器!缓存在很多系统和架构中都用广泛的应用,例如:CPU缓存 操作系统缓存 HTTP缓存 数据库缓存 静态文件缓存 本地缓存 分布式缓存在计算机和网络领域,缓存无处不在。只要存在硬件

2021-10-29 16:37:07 4451

原创 8皇后回溯算法递归方案探究及JAVA实现

8皇后问题简介八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上,不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。第一种方案算法思考,初步思路:(1) 构建二维int或者short型数组,在内存.

2021-10-12 15:06:48 146

转载 Shiro框架学习

一、学习目标① 认识shiro的整体架构、各组件的概念。② shiro认证、授权的过程。③ shiro自定义的realm、Filter。④ shiro session管理。⑤ shiro的缓存管理。⑥ shiro继承spring。二、shiro安全框架简介① Shiro 是 Apache 提供的一个强大、灵活、易用的Java安全框架。② shiro提供了身份认证、授权、会话管理、加密、缓存管理等功能,使用shiro可以非常方便地进行项目的权限管理模块开发,从最小的移动

2021-10-08 19:11:24 286

转载 Java-http连接池的使用

最近项目开发中有很多外部http调用,因为我方的接口相应有时效性要求,所以就需要针对项目使用到的http调用进行连接池改造。原先没做,是因为时效性要求不是很严格;但是现在强调时效性了,就需要整体调整。项目中使用到的http调用方式,有三种。为什么有三种?项目初期没做严格要求,导致大家都是使用自己习惯的方式去完成功能。目前有三种:httpclient、resttemplate、feign,接下来对每种的处理过程做个记录。1、httpclientpom依赖的引用: <!-- ht.

2021-08-30 11:18:56 3643

原创 深入理解python多线程和多进程

本篇介绍Python多线程,以及其与多进程的比较。一、Python多线程一个进程由若干个线程组成。在Python标准库中,有两个模块 thread 和 threading 提供调度线程的接口。鉴于thread是低级模块,很多功能还不完善,我们一般只会用到threading 这个比较完善的高级模块。因此,这里我们只讨论 threading 模块的使用。1. threading要启动一个线程,我们只需要把一个函数传入Thread实例,然后调用start()运行。#!/usr/bin/env

2021-05-29 11:05:10 331

原创 Java中multiMap 与 ListMultiMap理解

一、问题与现象对于map中的每个key,其value为一个列表。传统的实现方式: @Test public void testTraditionMap() { Map<String,List> map = new HashMap<String,List>(); putMyObject(map, "key1", "value1"); System.out.println(map); } voi

2021-05-17 20:43:18 2024

原创 解决Mac OS下JDK 1.8无法使用JMC问题

一、问题由于应用出现了一些性能问题,准备在本地启动应用,使用JMC分析下应用运行时的详细内存信息。本地开发环境使用macbook,由于是使用的安装包安装的jdk,直接在命令行输入jmc,就可以启动JMC(如果没有配置path,可能需要到jdk安装目录下的bin内启动jmc)。启动jmc:结果:发现启动后界面上只有三个窗口操作按钮,界面根本无法显示出来。二、原因这个问题是由于Eclipse/SWT老版本的bug导致的,可以通过替换相关jar解决。bug reference: JMC

2021-05-14 10:08:26 2075 1

转载 golang gRPC 入门

golang gRPC 入门网上有不少的页面都提供 golang gRPC 的简单例子,但是大都有些问题:给出的例子可以看,但是自己运行总是失败; 不告诉大家怎么配置环境,执行什么命令,直接就讲 gRPC 语法,不疼不痒; 关键步骤不告诉大家为什么这么做,就是贴代码;新手最需要的是手把手教,否则挫折感会让他失去尝试的信心。网上的文章,要么是新手抄来抄去,要么老手不屑于写,导致文档质量奇差无比。1. 安装 golanggo 语言是一个编译型的语言,一旦编译(linux)好后,就可以独立运

2021-05-10 15:03:42 484

原创 protobuf生成Go代码插件gogo/protobuf

1. 从json开始谈到序列化,大家最先想到的,可能是 JSON 或者 XML,这两种序列化协议都是基于文本的编码方式进行数据传输。类似的还有 YAML 等。JSON 拥有许多优点,使之成为最广泛使用的序列化协议之一。JSON 协议简单,人眼可读,序列化后十分简洁且解析速度快。此外,JSON 具备 JavaScript 的先天性支持,被广泛应用于 Web Browser 的应用场景中,并且是 Ajax 的事实标准协议。JSON 的适用场景比较多,典型应用场景包括: 公司外部之间传输数据量相

2021-05-07 18:05:31 2389

原创 go juju/ratelimit 简单使用示例

从接口限流了解到令牌桶。经过调研,发现 go语言 juju/ratelimit 令牌桶限流器使用比较多,于是研究了下。具体令牌桶原理,请自行查询资料。下面给出一个简单应用的例子:package mainimport ( "fmt" "github.com/juju/ratelimit" "time")func main() { b := newBucket(1*time.Second, 100) for i := 0; i < 1000; i++ { before

2021-04-22 17:25:19 1030

原创 修改es mapping字段类型

背景:数据库:esindex: eventlisttype: event原有的需求:用户前端填入工单信息,其中有一个字段(工单号——workOrderNum)的类型在建库时定义为long,在用户前端输入的时候也是数字类型的。同时,有一个实体bean(后台是Spring Boot)对应着输入的信息。新的需求: 这个工单号不一定是数字,有可能是字符+数字的结构。这导致后端服务在进行实体映射时报错——实体转换错误。解决办法:首先,es环境库分为测试库和线上库,为了测试功能,测试库和线上库ind

2021-04-20 23:02:54 2606

转载 限流(Rate limit)算法详解

一、前言保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式。本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。为什么需要限流呢?按照服务的调用方,可以分为以下几种类型服务:1.1 与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮的情况:用户增长过快(这是好事) 因为某个热点事件(微博热搜) 竞争对象爬虫 恶意的刷单这些情况都是无法预知的,不知道什么时候会有10倍、甚至20倍的

2021-04-19 20:59:59 1175

原创 ElasticSearch设置字段的keyword属性

es查询时候,我们经常会遇到这种场景:对text类型的文档进行查询或者聚合,却发现聚合的字段被es分词了。这个时候,我们就需要对该字段设置一个keyword属性,并将该keyword属性的type设置为keyword。这样,我们在查询或者在聚合时候,通过该属性下的keyword字段,可以实现完全匹配。示例:对一个nested对象下的name字段设置keyword属性。(1)创建映射。PUT /my_store/_mapping/products?pretty{ "propertie.

2021-04-12 13:15:00 7529

原创 ElasticSearch索引拆分方案

一、概况在生产项目中,由于ElasticSearch单个索引数据量大,索引中部分数据不常用,在搜索和写入文档时,效率较低。为了减小单个索引的数据量,提升搜索和文档写入效率,将大索引根据一定的规则拆分为小的索引。拆分索引的关键点在于:建立索引、文档同步、多索引搜索。建立索引的关键是:索引的设置,以及字段的属性设置。最常见的问题是:对于某个字段,我们希望ElasticSearch按照我们的想法进行分词。采用自动生成索引(默认模板),索引字段的类型就会根据第一条文档的数据进行字段转换,无法实现指定某个字段

2021-04-10 11:23:34 3346

转载 Java版本kafka-clients的介绍

本文介绍Java版本kafka生产者和消费者客户端的配置和使用方式。

2021-04-07 15:22:11 4759

VA_X_Setup.zip

软件介绍: 下载的压缩包内提供了原版的安装文件和破解补丁,虽然破解后显示还是trial版本,但是已经没有使用的时间限制了,不会再弹出注册对话框了,本人在VC6 VC2008 VC2010 VC2012中测试过没有任何问题的。 VA小组这次时隔两个月才陆续发布了这次的两个新版本,这次的版本更新了很多内容,新增了18项新特性,修复了10余处bug,而且居然都开始支持VS2014了,真是太前卫了。 下载的补丁包中的 VA_X.dll ,直接拷贝到安装目录中覆盖一下即可。 另外在Win7中,执行破解补丁,还有覆盖破解补丁时出现提示权限问题,或者没有破解成功的,请自行处理自己Win7的权限设置问题,或者干脆就把自己帐户的权限提升至超级管理员权限就OK了。 切记:将VA_X.dll文件复制到C:\Users\你的用户名\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\下每个自然生成的文件夹中,以替代原文件夹中的该.dll文件,实际是每个文件夹即代码你安装的一个visual assistant版本。

2015-01-24

SQL2005安装图解.doc

seq server 2005的安装流程(图形化界面)

2011-12-19

空空如也

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

TA关注的人

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