自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gs_albb的博客

一名java程序员的工作积累与感悟

  • 博客(75)
  • 收藏
  • 关注

原创 leetcode-数组中的第K个最大元素-215-最大堆

给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。示例1输入输出5示例2输入输出4提示。

2022-07-21 09:57:51 352 1

原创 leetcode-买卖股票的最佳时机

leetcode本质就是寻找数组中差值 (相对靠后的元素的值-相对靠前的元素值) 最大的两个元素。容易想到使用双指针,指针front 指向相对靠前的元素,初始值为0; 指针back指向相对靠后的元素,初始值为nums.length-1; int max 表示当前遍历到的所有情况下的最大差值。 现在的目标就是寻找一种移动,指针的方式,遍历所有可能的情况,获得最大差值。1 . 记录;2 . 如果且, 表示front后的一个元素比front当前元素可能更小,那么与back结合形成的差值就更大。所以 可以使f

2022-07-09 17:22:33 242

原创 Svn常见问题分析及解决方案

以下总结下工作中常见的Svn问题及解决方案Differences between svn merge left, right & working files after conflicts 这篇文章讲解的较为详细。主要说明的就是上创建了一个后,如果A分支改变了,B分支。那么将B分支合并到A分支的时候,就会产生冲突,产生上述的几个文件。...

2022-07-05 10:58:22 295

原创 Svn实践经验总结

SVN实践经验总结写这篇博客之前,之前所在的公司一直以来都是小组几个人在一条分支(主干)上进行开发,做的最多的工作就是与资源库同步,解决冲突之内的。现在刚入职的公司,代码管理正在从Svn上迁移到Git上,但这需要一个过程,所以目前还是经常会操作SVN。刚入职熟悉工作环境,尽快接手工作的感觉是痛苦的,希望自己能凤凰涅槃,更进一步。不多说了,下面就是我工作中关于SVN的一些针对eclipse中的操......

2022-07-05 10:57:22 181

原创 leetcode-二叉树的最近公共祖先-递归

leetcode我的第一想法就是判断p,q是否在root的同一侧子树上, 具体决策步骤就是:1 . 如果,则p就是p,q的最近公共祖先。2 . 如果,则q就是p,q的最近公共祖先。3 . 如果p,q分别在root的两侧的子树上,则root就是p,q的最近公共祖先。4 . 如果p,q都在root的同一侧子树上,比如都在root的左子树上,就可以运用递归思想,令root为当前root节点的左孩子节点,依然进行上述分析,分析的问题其实没有变,只是数据规模变小了。直至1或2或3中的条件满足就递归结束。我们需

2022-06-28 10:07:18 359

原创 leetcode-三数之和-15-排序+双指针

原题链接给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。思考点1:如何做到不重复a. 因为三元组要求不重复,我们第一感觉就是要对数组进行升序排序,否则分析会产生困难。比如 。不排序的话,会有多种方式选择到,而且去重也不好想办法。b. 基于a,数组排序后,因为可能存在连续的相同数值,比如。很明显,只有一个三元组符合要求。四个元素选取哪两个呢?这引发出第二个

2022-06-22 00:00:25 102

原创 leetcode-正则表达式-10

原题链接 https://leetcode.cn/problems/regular-expression-matching/给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。提示:官方的解释已经很不错了,无意间看到了英文版leetcode的一个分析总结,点这里...

2022-06-21 00:09:30 66

原创 leetcode7-整数反转-数学

原题链接 https://leetcode.cn/problems/reverse-integer/给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0分析:1 .

2022-06-19 23:32:34 181

原创 pico中的依赖注入方式

可是是PICO中最不容易理解但却非常有强大功用的特性了。它既是一个组件生产工厂(Component Factory),也是一个对象拦截器(Object Intercepter)[责任链模式]该接口最核心的方法是事实上,唯一的目的就是向容器提供真正的组件实例。容器并没有维护一个关于class map、instance map或者类似的属性,而是使用了一个以为value的map。每次时,框架背后就会创建一个实例。对于每一个组件,都会关联到一个实例。PicoContainer.getComponent() 调用时

2022-06-12 21:31:53 261

原创 jmockit学习使用笔记

jmockit是一款优秀的单元测试工具框架,项目官方网址在这里。我们这里学习它的使用,工作原理。设置环境设置maven pom依赖<dependencies> <dependency> <groupId>org.jmockit</groupId> <artifactId>jmockit</artifactId> <version>${jmockit.version}</v

2022-05-19 18:04:24 552

原创 pico container 入门介绍

pico container , 依赖注入

2022-05-13 13:16:01 384

原创 java good practice on basic function

导航集合排序要避免NPE集合排序要避免NPEpublic class CompareTest { private List<Student> studentList; @Before public void initStudents() { studentList = new ArrayList<>(); studentList.add(new Student(5, null)); studentLis

2022-01-15 17:58:54 136

原创 计算机系统基础-数据的表示和存储

相关资料数据的存储和表示

2021-09-12 19:08:40 236

原创 lucene增量编解码与单调性

目录编码原理新吸收了个单词 Monotonic(单调的),MonotonicBlockPackedWriter和MonotonicBlockPackedReader类主要用于对于单调递增的数据进行编解码。举个例子,现在有一批数据100个,是单调递增的,首元素是Interger.MAX_VALUE-88888,后面每个元素比前一个元素大1-10之间,如果不进行压缩编码的话,需要100*4=400个字节。如果编码的话,如果按照增量编码的话,基准元素需要4字节(最小元素,也是首元素), 100个源数据都用增

2021-08-07 18:44:46 239

原创 PackedInts Reader + Writer

PackedInts.ReaderReader定义了如何解码的过程,其子类Mutable还附加定义了设置源数据的过程。大的层面编解码存在紧凑型和对齐型两种方式,对齐型速度更快,但是存在空间浪费。相关文章

2021-08-07 14:54:06 91

原创 你的java对象占用了多少内存?

目录Java对象内存结构相关文档Java对象内存结构没什么可说的,可查看下方的相关文档Java对象的内存布局。只是需要多补充一个知识点,对象头(object header) 本身就是要求8字节对齐的,而不仅仅是object整个对象要求8字节对齐。相关文档Java对象的内存布局RamUsageEstimatorhotspot...

2021-08-07 11:46:47 451

原创 lucene工具包packed概述

目录包类结构lucene 中org.apache.lucene.util.packed包主要提供了高效压缩int(或者long)数组和解压的方法,以便压缩索引文件大小,以及快速读取索引文件内容。包类结构

2021-07-24 23:47:48 280

原创 nvd、nvm索引文件的生成

nvd, nvm文件主要描述的是索引阶段每个Field的域标准化值。nvd参考-nvd&&nvm

2021-07-10 22:52:12 371

原创 SmallFloat编解码

目录longToInt4longToInt4 public static int longToInt4(long i) { if (i < 0) { throw new IllegalArgumentException("Only supports positive values, got " + i); } // 表达i所需要的bit个数 int numBits = 64 - Long.numberOfLeadingZeros(i); if

2021-07-09 21:26:50 133

原创 ForUtil的原理与使用

目录原理使用参考lucene 中的倒排索引DocId压缩工具类,尽量将一组连续的int类型的docId压缩存储。原理看了源码中的forUtil.encode的代码,着实看不太懂,等待大佬指教。// Inspired from https://fulmicoton.com/posts/bitpacking/// Encodes multiple integers in a long to get SIMD-like speedups.// If bitsPerValue <= 8 then

2021-07-04 14:13:56 125

原创 lucene FST

FST相关的文章很多,这里就不再讲解了,将网上看到的比较好的文章,记录下来。关于Lucene的词典FST深入剖析FST(一)Lucene 8.4.0

2021-06-12 21:54:49 88

原创 字符编码分析

目录字符编码案例Binary string comparison with UTF-16相关文章字符编码案例从unicode字符百科上随机找到一个字符????,其code Point为U+1F600, codePoint的范围为0x0000到 100000。其编码结果如下:这里只做一个基本的解释,具体原因参考其他资料。uft-80x1F600用utf-8表示,需要4个字节,所以binary列 第一个11110xxx,4个连续的1表示表示需要4个字节表示,后面每个字节以10开头,将0x1F

2021-06-11 23:01:44 385

原创 lucene系列文章导航

工具类FutureArrays

2021-06-06 23:56:20 100

原创 lucene工具类FutureArrays

lucene7.x 引入,数组处理工具类。方法大多与与jdk 9 中Arrays的方法相同。在java 8的环境下,lucene仍然使用此类。当lucene的后续发行版本最低要求使用jdk9时,该类将移除,直接使用jdk9的Arrays类,功能一致。equals方法比较两个字节数组 /** * Behaves like Java 9's Arrays.equals * @see <a href="http://download.java.net/java/jdk9/docs/api/

2021-06-06 23:54:34 153

原创 lucene内存建立倒排索引分析

目录基本知识示例与分析总结参考本文基于lucene 8.8.2,总体介绍了倒排索引的写入过程基本知识基本可以参考倒排表上这篇文章。示例与分析测试源码见github /** * 测试只增加倒排索引 */ @Test public void testCreateInvertFieldDocIndex() throws IOException, URISyntaxException { IndexWriter writer = getIndexWr

2021-06-05 23:09:47 418

原创 文档相关性

目录tf-idf参考tf-idfTF-IDF(term frequency–inverse document frequency)词频-逆文档频率。从感性的角度看,一个词在一篇文档中出现的频率越高,则相关性越高,词频(tf)就越高,相关性也越高。 但是,如果该词在所有文档中出现的频率也很高,则说明该词很普遍,区分度没那么高,文档频率高,逆文档频率(idf)低,相关性就低。最终已 tf * idf 综合起来评估相关性。参考百度百科...

2021-05-04 17:43:20 275

原创 创建不可修改集合视图

在实际工作中,有一个集合,我们期望是只读的,不可修改。比如,从远程配置中心中拉取的配置,运行中,我们只可以调用read相关方法,不可调用write相关方法。如何从代码机制上,而不是人为认知上拒绝write误调用呢?创建不可修改集合视图/** * 集合视图 */public class CollectionView { /** * 白名单 */ private Set<String> whiteSet; /** * eg:初始

2021-05-01 17:33:39 176

原创 lucene analyzer

参考关于Tokenizer与TokenFilter的区别官网介绍

2021-04-24 16:29:26 138

原创 归并排序

考察递归使用package com.gson.algo.sort;import java.util.Arrays;/** * 归并排序 */public class MergeSort { /** * 假设a,b ,返回a,b合并后的排序结果 * * @param a * @param b * @return */ public static int[] merge(int[] a, int[] b) {

2021-04-10 20:26:19 60

原创 判断二叉树是否对称

牛课网剑指 offer JZ58特征提取&&递归对称二叉树具有以下特征假设x=root.left;y=x.right,则x,y具有以下特征x.val equals y.val &&x.left.val equals y.right.val &&x.right.val equals y.left.val则可以设置一个递归函数isSame(TreeNode left, TreeNode right)递归终止条件是 left,righ

2021-04-06 00:01:09 667 1

原创 子数组-letcode78

题目https://leetcode-cn.com/problems/subsets/给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]for循环假设, 如果已知 [1,2,3]的所有子数

2021-03-17 00:43:54 1872

原创 Interview Preparation

算法递归考察抽象能力、定义函数方法,大问题化为子问题,递归出口约瑟夫环题目:n个人围成一圈(编号从1到n),从第1个人开始报数,报到m的人出列,从下一个人再重新报数,报到m的人出列,如此下去,直至所有人都出列。求最后一个出列的人的编号(使用递归)...

2021-03-11 23:41:23 256 1

原创 初识elasticsearch

elasticsearch全文检索引擎,底层使用lucene,可扩展,高可用,易使用等特点使之成为最近几年来最炙手可热的搜索引擎开源项目,至今已发展到7.x版本,现在让我们初步安装并使用elasticsearch吧版本: 7.10.1系统环境:mac安装并启动安装并启动elasticsearch https://www.elastic.co/cn/downloads/elasticsearch安装并启动kibana https://www.elastic.co/cn/downloads/kib

2021-01-10 00:33:29 105

原创 依赖于Lock的Condition

Object对象存在一组监视器方法,如wait,notify,与synchronized关键字配合可以组建等待\通知模式。相应的, Condition接口配合Lock,也可以实现等待\通知模式, Condition对象的创建依赖于Lock(lock.newCondition())使用示例伪代码void conditionAwait(){ lock.lock() try{ //释放锁,进入到等待队列中 //等待被signal唤醒或者被中断 //能够返回说明已经再次获取

2021-01-02 17:48:53 155 2

原创 模板方法模式

欢迎阅读模板模式介绍使用案例模板方法模式,就是将公共不变部分封装起来,可变部分定义为抽象方法由具体子类去实现,公共不变方法内部会调用抽象方法,相当于整个操作的骨架不变。模板模式介绍https://www.runoob.com/design-pattern/template-pattern.html使用案例jdk中的同步器...

2020-12-27 18:24:15 49

原创 Java中的队列

目录参考Deque从初学者的角度,认真地学习Java中队列的使用和设计。参考java docDeque一个支持两端插入和删除的线性集合,此接口支持容量受限和不受限的双端队列(大多数实现容量不受限)。该接口定义了访问两端元素的方法,主要是插入、删除、检查元素方法。这些方法主要有两种形式,一种在操作失败时引发异常,一种在操作失败时返回特殊值(null 或者false)。这里着重提一下插入操作,只有当队列容量受限时,插入操作才可能失败。12个方法如下该接口扩展了Queue接口。 当双端队列

2020-12-22 00:52:11 1656

原创 工作中常用的linux命令小结

linux文件传输拷贝本地文件夹到目标机器 scp -r /home/search [email protected] : home – 拷贝文件夹,加-r参数

2020-12-13 21:24:51 1595

原创 事件驱动解析xml文件

前沿jdk自身的解析xml的工具方式dom解析和sax解析,开发人员应该耳熟能详了。但是对于开发者并不是非常友好,经常要写很长的繁琐代码,现在有一个开源工具基于事件驱动去解析xml文件,使用起来非常清晰易解。就是commons-digester。Commons DegisterApache Commons Digester 一 (基础内容、核心API)官方文档核心思想就是事件驱动, 模式,规则,当解析的文档刚好满足模式时,就会依次执行注册到模式上的规则, begin和body方法按照注册顺序依次

2020-12-13 15:15:42 315 1

原创 探索Filter

什么是FilterFilter就是用来过滤日志事件的,控制日志事件应不应该被输出。Logback classic模块主要有两类Filter, 分别是regular filtesr和 T=turbo F=filters。Filter接口内部最主要的方法就是FilterReply decide(E event),它决定了日志事件是否被过滤。package ch.qos.logback.core.filter;import ch.qos.logback.core.spi.ContextAwareBase

2020-12-12 21:14:44 221

原创 巧妙使用位运算

java中的二进制操作很多地方都有很好的使用,比如HashMap源码中就利用了当n等于2的次幂时,"hash%n"和"hash&(n-1)"的特性,下面列举几个巧妙使用位运算的例子。SpacePadder填充固定位假设又一个StringBuffer要求要有n(20或者更多)个字符,如果不足,向右填充空格直到满足为止,一般最简单的方式就是for循环,一个个append直到满足n个字符,但是效率就不高了,牛逼的做法如下public class SpacePadder { final st

2020-12-11 00:51:27 320

mac Wireshark 4.0.7 Intel 64.dmg

wireshark

2023-07-27

空空如也

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

TA关注的人

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