自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(207)
  • 资源 (3)
  • 收藏
  • 关注

原创 LinkedList源码分析2

LinkedList<Integer> ls = new LinkedList<>(); ls.add(1); ls.add(3); ls.add(5); ls.add(7); Integer peek = ls.peek();//1 Integer peekFirst = ls.peekFirst();//1 Integer peekLast = ls.peekLa...

2021-02-28 16:58:18 14455

原创 LinkedList源码分析1

1 LinkedList介绍1 LinkedList继承了AbstractSequentialList,实现了接口List。是一个双向链表的实现。2 LinkedList实现了接口Deque。表示实现了双端队列。可以FIFO。也可以LIFO(后进先出)3 LinkedList实现了接口Cloneable、Serializable,表示可以克隆。也可以序列化。2 属性介绍/** * 元素的个数 */transient int size = 0;/** * 指向第一个结点的指针 */

2021-02-21 22:45:17 14329

原创 Java单向链表的实现

package com.gosaint.collection;/** * @Author: gosaint * @Description: * @Date Created in 21:25 2021/2/20 * @Modified By: */public class TsLinked<E> { /** * 指针指向第一个结点。 */ private Node<E> first; /** * 链表的长度 .

2021-02-21 00:23:05 103

原创 ArrayList源码分析2

主要谈下fail-fast机制。fail-fast机制是一种迭代器在迭代集合的时候,不允许对集合的结构发生改变,如果改变,那么就报错。并发修改异常ConcurrentModificationException。private class Itr implements Iterator<E> { int cursor; // 返回下一个元素的位置 int lastRet = -1; // 返回最后一个元素的位置。-1表示没有 //ex

2021-02-20 15:39:09 118 1

原创 ArrayList源码分析1

ArrayList源码分析属性解释构造器API1 boolean add(E e) 添加元素2 void add(int index, E element) 添加元素指定位置3 boolean addAll​(Collection<? extends E> c) 添加集合4 trimToSize() 将当前数组容量设置为元素的长度5 ensureCapacity(int minCapacity) 确保容量6 size() 获取数组元素的个数7 isEmpty() 判断是否为空8 indexO

2021-02-20 12:38:59 180 3

原创 直接插入排序的几种写法

直接插入排序时间复杂度插入排序的平均时间复杂度也是O(n^2),空间复杂度为常数阶O(1),具体时间复杂度和数组的有序性也是有关联的。插入排序中,当待排序数组是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较N-1次,时间复杂度为O(N)。最坏的情况是待排序数组是逆序的,此时需要比较次数最多,最坏的情况是O(n^2)。直接插入排序稳定性直接插入排序是稳定的算法,它满足稳定算法的定义。算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,...

2021-02-19 20:25:43 253

原创 ArrayList扩容实现

2021-02-19 13:40:48 133

原创 排序--快速排序

相信我们在没接触过排序知识之前,一定会觉得快速排序非常具有魅力,不因别的单纯快排这个名字就让人不明觉厉,但是了解一个算法不应该只知道code,了解思想,应用非常重要。我先问出我心中非常好奇的问题:快排为啥叫快排,快排是所有排序里面性能最好的吗?快排适合什么情况呢,还是无论什么情况下快排总是最好的(显然× ?快排算法的思想是什么?其性能优良的原因是依赖于算法中的哪个部分?首先回答前两个问题:快排的性能在所有排序算法里面是最好的,数据规模越大快速排序的性能越优。快排在极端情况下会退化成O(n²)

2021-02-08 15:00:56 157

原创 Lock wait timeout exceeded; try restarting transaction

该错误是一个事务没有提交,而另一个事务开始。在循环插入或者更新数据的时候,使用多线程,但是没有保证线程安全的情况下回出现该问题。<update id="updateByFileOcsIdSn"> update file_ocs_info SET assessment_sn=#{assessmentSn} where file_ocs_id=#{fileOcsId}</update>if (selfEvaluationApplicationFiles != nul

2021-01-19 18:31:28 217

原创 ES的模糊查询

这里说的模糊查询,其查询效果和mysql的Like相同。比如我查询appName为bot-tts。mysql语法为select * from table where appName like '%bot-tts%'这样相关的数据可以查询出来了。但是ES有时候也可能需要相同的查询效果。其DSL语法如下:GET sdl/_search{"query":{ "wildcard":{ "appName.keyword":{ "value":"*bot-tts*" } }

2021-01-06 09:47:29 10002 2

原创 Spring之ScopeMetadata

Spring之ScopeMetadata概述ScopeMetadataScopedProxyMode概述Spring在注册bean的时候。会通过bean的作用域来决定是否使用代理模式去创建bean。如果是单例模式,那么不会使用代理,非单例就会使用。并且如果这个bean实现了接口,就会使用JDK动态代理,如果继承类,就会使用Cglib代理。在AnnotatedBeanDefinitionReader方法doRegisterBean中,最后组装BeanDefinitionHolder的时候会决定使用代理

2021-01-06 09:29:58 367 1

原创 部门工资最高的员工

这里写自定义目录标题Leecode经典的SQL题目描述解题Leecode经典的SQLLeecode的题目。关于in的应用。感觉很经典,这里列出解题过程。题目描述Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。SQL如下:SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for emplo

2021-01-03 21:55:53 178

原创 Java new一个Object()到底占用多少个字节?

Java Object obj = new Object()到底占用多少个字节?Java中没有类似C的sizeof的操作符,如何获取一个对象实际占用的字节数呢?方法一:有一种比较方便的方式是通过启动jdk自带的jvisualvm来观察。先写一个测试类public class ObjectSizeInfo { public static void main(String[] args) throws IOException { ObjectSizeInfo sizes=new

2020-12-09 12:38:05 834

原创 Spring IOC源码分析(基于注解)中

public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); register(componentClasses); refresh();}回顾回顾上一节的基本流程。this()方法的主要作用是完成SpringIOC容器的初始化操作。这里包括如下几点:创建BeanDefinitionReader,bean定义读取器。该读取器读取对应的ioc容器实例。获取beanF.

2020-11-30 14:49:30 174

原创 Spring IOC源码分析(基于注解)上

1 入口代码public class Info { public static void main(String[] args) { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); System.out.println(ac.getBean(AppConfig.class).name); }}2 AnnotationConfigApplicatio

2020-11-19 12:23:35 260

原创 git新分支替换master分支步骤

需求现在远程仓库和本地仓库分支同步,分别有master和develop两个分支,需求是master很古旧了,需要使用新的develop替换master步骤如下对master备份(GitHub支持备份)进入setting设置develop为默认仓库本地操作删除远程master分支:git push origin -d master本地仓库删除master分支:git branch --delete master本地创建新的master分支,并拉取远程develop分支最新内容git

2020-09-16 17:29:25 931

转载 HttpStatusEnum - Http状态码枚举

package com.zuozuo.general.enums.common;/** * Created by 谭健 2018/3/11. 19:36. * All Rights Reserved */public enum HttpStatusEnum { CONTINUE(100, "Continue", "请继续发送请求的剩余部分"), SWITCHING_PROTOCOLS(101, "Switching Protocols", "协议切换"), PROCES

2020-09-01 09:51:55 1046

转载 新一代垃圾回收器ZGC的探索与实践

很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰,作为新一代的低延迟垃圾回收器,ZGC在大内存低延迟服务的内存管理和回收方面,有着非常不错的表现。本文从GC之痛、ZGC原理、ZGC调优实践、升级ZGC效果等维度展开,详述了ZGC在美团低延时场景中的应用,以及在生产环境中取得的一些成果。希望这些实践对大家有所帮助或者启发。ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括:停顿时间不超过10ms;停顿时间不会随着堆的大.

2020-08-28 14:34:04 386

原创 Guava ListenableFuture

ListenableFuture顾名思义就是可以监听的Future,它是对java原生Future的扩展增强。我们知道Future表示一个异步计算任务,当任务完成时可以得到计算结果。如果我们希望一旦计算完成就拿到结果展示给用户或者做另外的计算,就必须使用另一个线程不断的查询计算状态。这样做,代码复杂,而且效率低下。使用ListenableFutureGuava帮我们检测Future是否完成了,如果完成就自动调用回调函数,这样可以减少并发程序的复杂度。ListenableFuture是一个接口,它从jd.

2020-08-05 11:23:24 221

转载 韦氏拼音对照

a — aai — aian — anang — angao — aoba — pabai — paiban — panbang — pangbao — paobei — peiben — penbeng — pengbi — pibian — pienbiao — piaobie — piehbin — pinbing — pingbo — pobu — puca — ts’acai — ts’aican — ts’ancang — ts’angcao .

2020-08-03 12:39:19 28150 2

原创 Es7.x 分组聚合查询

DSL查询如下:Java代码如下:public class BankTest extends BaseTests{ @Autowired @Qualifier("elasticsearchTemplate") private ElasticsearchRestTemplate elasticsearchRestTemplate; @Qualifier("elasticsearchClient") @Autowired private RestHigh

2020-07-22 18:37:01 2048

原创 Es7.x 获取分词结果

@SpringBootTestclass DemoApplicationTests { @Autowired private RestHighLevelClient restHighLevelClient; @Test void contextLoads() throws IOException { String text="xxxxx"; AnalyzeRequest request=AnalyzeRequest.withIndexAnalyzer("mao", "ik-max-w.

2020-07-21 14:14:28 964 3

原创 rejected from java.util.concurrent.ThreadPoolExe错误

线程池被关闭 解决:在调用时判断线程池是否关闭

2020-07-20 14:47:34 5714

原创 ES只索引别名操作

es之索引的别名操作1:增加别名为索引school添加一个别名alias1:1.1:创建索引PUT school{ "settings": {"number_of_shards": 3 , "number_of_replicas": 1}}1.2:添加别名POST _aliases{ "actions" : [{"add" : {"index" : "school" , "alias" : "in1"}}]}​​2:查询别名..

2020-07-15 17:16:29 380

原创 古希腊地图

2020-07-12 20:54:34 5260

原创 ES深度分页以及搜索实战(基于ES7.x)

@Service@Slf4jpublic class DynamicSecurityScanServiceImpl implements DynamicSecurityScanService { @Qualifier("elasticsearchTemplate") @Autowired private ElasticsearchRestTemplate elasticsearchRestTemplate; @Qualifier("elasticsearchClie.

2020-07-07 15:54:42 1030

原创 概率 插空法和捆绑法

 一、基础理论:  捆绑法:遇到有“相邻元素”的问题,先把规定的相邻元素捆绑在一起参与排列,当需要考虑元素的相对顺序时,再进行松绑。  题干中常见的词语如: 相邻站位、相连、连续等。  插空法:遇到有“不相邻元素”的问题,先把无要求的元素进行排序,然后行程中间的空位或两端的空位,然后进行插空。  运用插空法解决排列组合问题时,一定要注意插空位置包括先排好元素“中间空位”和“两端空位”。解题过程是“先排列,再插空”。  可见:捆绑法主要解决相邻问题,而插空法主要解决的是不相邻的问题。  .

2020-07-06 23:19:52 7906 1

转载 ES集群核心概念

1)Cluster:集群ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群,集群内的节点的cluster.name相同。2)Node:节点形成集群的每个服务器称为节点。ES 为分配不同的任务,定义了以下几个节点角色:Master,Data Node,Coordinating Node,Ingest NodeMaster 节点:每个 ES 节点启动之前都会有个默认配置 node.master:t

2020-06-18 18:36:19 474

原创 自定义线程池名称

public class NamedThreadFactory implements ThreadFactory{ private final AtomicInteger poolNumber = new AtomicInteger(1); private final ThreadGroup threadGroup; private final AtomicInteger threadNumber = new AtomicInteger(1); .

2020-06-18 15:21:10 361

转载 倒排索引原理补充

---------------------------导语---------------------------倒排索引,好像大家都这么叫。倒排索引对应的英文术语为inverted index,有的papers里也成为inverted files,说的都是同一种东西。倒排索引是区别于正排索引(forward index)来说的。---------------------------我是正文---------------------------文档是有许多的单词组成的,其中每个单词也可以在同一个文.

2020-06-18 12:42:31 155

原创 ElasticSearch之版本变动

ElasticSearch之版本变动Elasticsearch是一个分布式文档存储。Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个Elasticsearch节点时,存储的文档会分布在整个集群中,并且可以从任何节点立即访问。上面是ES7.x官方文档的介绍。在我之前的ES的文章中是基于ES6.x的版本。因此格式时候为了方便记忆,和关系型数据库做了一个比较。关系型数据库ElasticSearch数据库索引 inde

2020-06-18 11:39:41 592

原创 Micronaut框架之控制反转

当大多数开发人员想到控制反转(也称为Dependency Injection,从现在起被称为Dependency Injection)时,就会想到Spring框架。Micronaut的灵感来自Spring,实际上,Micronaut的核心开发人员是以前为OCI工作的SpringSource / Pivotal工程师。与Spring完全依赖于运行时反射和代理不同,Micronaut使用编译时数据来实现依赖注入。Google的Dagger之类的工具也采用了类似的方法,该工具的设计首...

2020-05-14 16:23:41 375

转载 微服务治理之道

The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.These services are built aroun..

2020-05-14 14:10:45 259

原创 Stream关于排序、遍历、topN、非空代码片段

@Override public List<ProductListVo> getList() { List<Product> products = listActivity(null); List<ProductListVo> vos = new ArrayList<>(); //按照时间降序排列 获取前7条数据 products.stream() .so.

2020-05-14 13:27:37 567

转载 如何设计一个良好的接口

在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性、接口的稳定性、接口的跨域性、接口的协议规则、接口的路径规则、接口单一原则、接口过滤和接口组合等诸多因素,本篇文章将简要分析这些因素。一 规范性建议1.职责原则在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等2.单一性原则在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一件事,而非两件以上。很多非资深接口设计者,在设计接口时,总认为接口所做的事越多,越牛叉,这是非常严重的错误认识。

2020-05-13 15:32:49 797

原创 Micronaut框架入门 一

1 介绍官网地址:https://micronaut.io/Micronaut 基于JVM的现代全栈框架,用于构建模块化,易于测试的微服务和无服务器应用程序优点快速启动时间-低内存消耗基于反射的IoC框架为代码中的每个字段,方法和构造函数加载和缓存反射数据,而使用Micronaut,应用程序的启动时间和内存消耗不受代码库大小的限制。基于JVM的现代全栈框架,用于构建模块化,易于测试的微服务和无服务器应用程序2 下载安装。下载地址:https://micronaut...

2020-05-13 14:31:42 2647

转载 正式支持多线程!Redis 6.0与老版性能对比评测

前天晚上不经意间看到 Redis 作者 Salvatore 在 RedisConf 2019 分享,其中一段展示了 Redis 6 引入的多线程 IO 特性对性能提升至少是一倍以上,内心很是激动,迫不及待地去看了一下相关的代码实现。目前对于单线程 Redis 来说,性能瓶颈主要在于网络的 IO 消耗, 优化主要有两个方向:提高网络 IO 性能,典型的实现像使用 DPDK 来替代内核网络栈的方式 使用多线程充分利用多核,典型的实现像 Memcached协议栈优化的这种方式跟 Redis 关系不大,

2020-05-12 14:29:13 1452

转载 你真的了解kafka架构原理吗?

系统缓存+顺序写+批处理+mmap(生产者角度-高并发写入)零拷贝技术(消费者角度-高并发读取)Kafka在生产者写入消息的时候会将数据最终写入磁盘,既然它是基于磁盘读写,那么频繁的IO操作肯定会影响读写的性能,为何会有高性能呢?1.系统缓存+顺序写+批处理+mmap(生产者角度-高并发写入)在这里,Kafka生产者将消息写入各个broker中的时候,并不会直接写入磁盘,会将数据先写入缓存OS Cache(基于操作系统,所以命名OS),然后操作系统会决定什么时候将消息成批地将数据写入..

2020-05-12 14:12:09 279

原创 快递100 物流公司编码

中通快递 zhongtong 国内运输商 韵达快递 yunda 国内运输商 圆通速递 yuantong 国内运输商 百世快递 huitongkuaidi 国内运输商 申通快递 shentong 国内运输商 邮政快递包裹 youzhengguonei 国际邮政 顺丰速运 shunfeng 国际运输商 京东物流 jd 国内运输商 天天快递 tiantian 国内运输商

2020-05-12 11:49:35 2646

原创 JWT 入门教程

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。一、跨域认证的问题互联网服务离不开用户认证。一般流程是下面这样。1、用户向服务器发送用户名和密码。2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。3、服务器向用户返回一个 session_id,写入用户的 Cookie。4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。5、服务器收到 ...

2020-05-11 10:43:24 212

Github基于Java的Rpg游戏

Github基于Java的Rpg游戏

2024-03-18

FMG-win32-x64.zip

架空地图本地windows安装,自由绘制。用于模拟战争,国家等信息。github下载速度比较慢。

2020-08-27

gpg4win-3.1.11.exe

GpG4加密工具。用于软件和资源加密操作。通常在jar上传maven中央仓库的时候使用。

2020-07-22

JPA培训笔记

JPA开发技术,详细的介绍了JAP的原理以及demo.结合Spring data jpa

2018-05-11

空空如也

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

TA关注的人

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