- 博客(42)
- 资源 (7)
- 收藏
- 关注
原创 guava限速器原理及使用
背景: ergate-realtime在大流量情况下无法对任务dump数据进行读写限制,导致影响正常业务的读请求,那么如何对ergate中的任务通过配置化的方式进行读写限速呢?技术: guvav中提供了对应用中接口进行限速的API->RateLimiter,RateLimiter中提供了两种方式实现对接口 进行限速,一种是平滑突出流,另一种是预热突出流。平滑突发限流是对陡增流量进行限速,限制1s内的QPS大小。平滑预热限流是对陡增流量进行缓慢降速,而不是直接降...
2021-01-06 22:37:56 866
原创 Elasticsearch分词器介绍
ES自带分词器有哪些?有哪些特点?Standard Analyzer:标准分词器,也是ES的默认分词器,按词切分,小写处理,默认停用词默认是关闭的。Simple Analyzer:按照非字母切分,非字母都会被去除,即只处理字母,小写处理。Whitespace Analyzer:按照空格切分。Stop Analyzer:相对于Simple Analyzer多了stop filter,会把is,a,the等无语义的词去除,即含有停用词。Keyword Analyzer:不
2020-10-15 00:09:26 1897
原创 ElasticSearch入门
ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位,文档在ES中会被序列化层JSON格式的数据,每个文档都一个一个文档ID,唯一标识一个文档数据。
2020-10-13 23:42:17 133
原创 wget安装过程记录
首先去https://ftp.gnu.org/gnu/wget/下载wget安装包,根据需求下载所需要的即可。我是在Mac上进行安装,所以下载的是wget-1.9.1.tar.gz这个版本的,我是使用比较简单的安装方式,加压,编译,运行。加压下载的文件:tar zxvf wget-1.9.1.tar.gz 进入加压的文件夹中:./configure 编译:make 安装:sudo make install如果安装了homebrew软件,使用这个软件的一些命令也可以安装,可以搜相关教程。..
2020-07-12 16:51:47 971
原创 IDEA常用快捷键记录以备自己使用
向下复制一行 command + D 删除某一行 command + Y 自动补充数据返回类型 command + Alt + V 回退或返回光标到上一个位置或后一个位置 Alt + command + 左右键...
2020-02-24 20:39:36 133
原创 Java类加载机制
理解Java的类加载机制过程类加载的概述虚拟机把描述类的数据从Class文件加载到内存,并对这些数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类加载的时机类从被加载到虚拟机内存中开始,到卸载为止,整个生命周期包括:加载(Loading),验证(Verification),准备(Preparation),解析(Resolutio...
2019-11-25 11:10:09 99
原创 归并排序
思想:归并思想有点像二分法,将一个无序数组进行两两分隔,分别对两个子数组进行排序,然后进行合并。分组的过程可以使用递归和非递归,时间复杂度都是O(logn),归并的过程中时间复杂度为n,因为需要对整个数组进行归并。我采用递归的方式进行操作://分隔数组操作private static void Merge_Sort(int[] arr, int L, int R) { if...
2019-09-24 10:15:55 128
原创 翻转链表
输入一个链表,翻转链表后,输出新链表的表头。解:此题,和从尾到头打印链表相似,可以采取相似的方法,采用两个栈,先入栈再出栈,那么元素的出栈顺序就是倒着输出的。代码如下:Stack<ListNode> stack = new Stack<ListNode>();ListNode curr = head;while(curr != null){ st...
2019-08-19 11:50:47 253
转载 Java并发包concurrent------ConcurrentHashMap
ConcurrentHashMap从JDK1.5开始开始随java.util.concurrent包一起引入JDK中,主要解决HashMap线程不安全和Hashtable效率不高的问题。HashMap是线程不安全的,而Hashtable中的方法加上了synchronized关键字而线程安全了,但是效率低下,所以ConcurrentHashMap的出现解决了这个问题,ConcurrentHashMa...
2019-08-17 19:22:04 168
原创 树的子结构
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解:可以想到遍历每一个B中的元素是否能够在A中找到,如果每一个元素都能在A中一一对应找到那B就是A的子树。因此可以采用递归的方法就行一一匹配。代码如下:第一步:只有在左右树的根节点不为空的情况下才会进行比对。临时变量result作为返回值。 如果左右根...
2019-08-14 11:56:08 104
原创 二叉树的镜像
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5解:由...
2019-08-14 09:31:40 119
原创 链表中倒数第K个结点
输入一个链表,输出该链表中倒数第K个结点。解:倒数第K个结点,也就是正着数链表的第(链表元素个数 - K + 1)个元素,所以,可以先获取链表元素的个数,然后在根据计算获取倒数第K个结点。代码如下:ListNode curr = head;int nums = 0;while(curr != null){ //获取结点个数 nums++; curr = cur...
2019-07-25 17:12:26 98
原创 数值的整数次方
给定一个double类型的浮点数baseint类型的整数exponent。求base的exponent次方。解:由于exponent给的是int类型,不确定正负,所以需要进行判断,正负之分使得结果不同。代码如下:double sum = 1.0;if(exponent < 0){ for(int i = 0; i < (-exponent); i++){ ...
2019-07-25 10:49:49 79
原创 二进制中1的个数
输入一个整数,输出该数二进制中1的个数。其中负数用补码表示。解:最简单的想法就是将整数转化为二进制数,放入数组中,然后遍历数组,记录1的个数。使用JDK提供的方法转化成二进制数,代码如下:char[] binary = Integer.toBinaryString(n).toCharArray();int a = 0;for(int i = 0; i < binary.le...
2019-07-25 10:42:23 97
原创 从尾到头打印链表
输入一个单链表,按照链表值从尾到头的顺序返回一个ArrayList。解:首先最容易想到的就是先正序输出到ArrayList,然后在翻转ArrayList即可。代码如下:ArrayList<Integer> lists = new ArrayList<>();while(listNode != null){ lists.add(listNode.va...
2019-07-25 10:31:46 111
原创 用两个栈实现一个队列
用两个栈实现一个队列,完成队列的Push和Pop操作,队列中的元素的int类型。解:创建两个栈,入队就直接向其中一个栈执行入栈操作即可;出队操作:由于栈的出入和队列的出入刚好相反,所以在出队时,需要将之前入栈的元素进行一一出栈并且入栈到另一个栈,然后执行出栈操作,也就是出队操作。具体如下代码所示:Stack<Integer> stack1 = new Stack<...
2019-07-25 10:07:02 80
原创 数据库事务
事务定义 事务保是指数据库在对一个或多个关联的数据库操作,比如对一个员工信息进行存储时,和他相关联的角色信息,所属部门等信息,即数据库事务就是对数据操作的一个完整的持久化。## 满足事务的条件 一个事务需要满足四个规则:1. 原子性(Atomicity):规定一个事务的操作要么全部完成,要么不完成,不会在中间的某个环节结束。如果事务在中间发生错误或异常,会被回滚到最初事...
2019-06-22 22:48:28 93
原创 Java实现二叉搜索树
概述:和链表一样,是一种动态数据结构,也是使用指针来实现,在Java中使用类来实现其数据结构。二叉树包含了根节点,孩子节点,叶节点,每一个二叉树只有一个根节点,每一个结点最多只有两个节点,左子树的键值小于根的键值,右子树的键值大于根的键值;二叉搜索树也是一种二叉树,每一个颗二叉树的子树也是一颗二叉搜索树。也可以定义重复元素的二叉搜索树,只要让左节点值小于等于其根节点或右节点大于等于其根...
2019-06-08 14:30:30 1766 3
转载 解决 Error:No suitable device found: no device found for connection "System eth0"
今天在虚拟机中下载Redis时,发现CentOS的网络不可用,晚上也搜了很多帖子,重置网络设置也没用,重新启动网卡也没有,后来有一个帖子解决了,主要问题是CentOS中的HWAddr和虚拟机中虚拟出来的网卡HWAddr地址不一样。解决方法如下:首先使用ifconfig命令查看HWAddr是多少然后进入到 /etc/sysconfig/network-scripts/ 然后进...
2019-06-04 17:36:56 1506
原创 简单工厂模式
概述这是设计模式中最简单的模式,虽然他不是23中GOF中的一种,但是应用也是很频繁的;这也是学习其他设计模式的基础,在简单工厂模式中,只需要记住一个参数就可以获取所需对象实例,他提供专门的核心工厂类来负责对象的创建,实现对象创建和使用的分离。通过一个例子来理解简单工厂模式:有一个农场,当用户需要一中水果时该农场能够根据用户所描述的水果名称返回水果。这里面,水果农场被称为工厂,而生成的水果被...
2019-05-28 21:36:38 183
原创 链表的实现
数据结构:一个链表是由一个个节点连接而成,每一个结点又包含数据和指向下一节点的指针;还需要一个计数器,记录节点的个数;对于不同的实现可能对头结点有不同的要求,比如头结点直接就是指向第一个元素,或者设置一个虚拟头结点,不存储任何值,直接指向链表的第一个元素。带头结点:首先需要有一个节点类,类中应该包含指向下一个节点的指针,在Java中就是引用,还应该有一个当前节点存储的元素。然后需要...
2019-05-26 11:39:15 180
原创 LeetCode第六题(20):有效的括号
给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false...
2019-05-25 13:49:08 109
原创 Java设计模式之单例模式
在一个程序中有时候对于一个类只产生一个对象是很重要的,比如数据库中进行连接数控制就是利用单例模式的思想,只不过可能是产生多个对象,这个也是通过单例模式来实现的;再比如Windows中的任务管理器的窗口,只会打开一个,如果能够打开多个那么怎样显示呢,因为同时系统资源利用,CPU占有率是一样的,控制只会产生一个窗口就不会出现问题,而且就算多个窗口显示都一样,这样就会浪费内存资源;单例模式想要做到的...
2019-05-21 09:18:52 146
原创 JDK源码分析(一)------java.lang.Object
概述Object是所有类的根类,其它所有类都默认继承Object类,也就是说所有对象或数组都实现这个类的所有方法。只有一个无参的构造方法。方法getClass(),会返回一个运行时的类的信息,可以通过反射在程序运行时选择要执行的方法。表示某对象运行时类的Class对象。hashCode(),返回该对象的哈希码,Java中虚拟机会为每一个对象一个唯一的哈希码来标识对象,对于程序中...
2019-05-20 21:43:50 349
原创 线程的同步
同步的概述:当多个线程同时对某一个数据区域或内存区域进行操作时,如果不施加任何措施,很有可能造成数据操作混乱。比如说最直接的例子,你从网上定车票,一共有100张票,但是有3个窗口同时售这100张票,假设此时有两个人同时买同一张票,那么就卖出了两张一样的票,而这在实际中是不能出现的。临界区:某一段被多个线程共享的数据区域,线程必须对它进行互斥访问,线程中访问共享数据的那段代码称为临...
2019-05-20 21:24:39 125
原创 Java内存区域与内存溢出异常
Java虚拟机简单介绍一.Java虚拟机Java 虚拟机屏蔽了与具体操作系统平台相关的信息,使得 Java 语言编译程序只需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行,可以说Java的跨平台性就是依赖于JVM。二.JVM 是 Java 的核心和基础,在 Java ...
2019-05-18 10:23:55 122
原创 并行程序需要掌握的基础知识点
一.线程和进程在操作系统中,进程是作为独立运行的基本单位,是程序一次执行的过程,对应着从代码加载,执行到执行结束这样一个完整的过程;操作系统中可以同时运行很多个应用程序,每一个应用程序对应着一个进程,例如用户写文档时,可以听音乐,还可以上网搜索资料。线程是比进程更小的,能独立运行的基本单位。进程是提高程序间的并行执行能力,线程是程序内部并行执行能力的。线程与进程相比较有哪些特点:①线程...
2019-05-15 21:08:38 423
原创 LeetCode第五题(14):最长公共前缀
题目内容:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。解析:第一种解法:暴...
2019-03-12 19:00:03 213
原创 LeetCode第四题(13):罗马数字转整数
题目内容:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为...
2019-03-12 18:34:51 268
原创 LeetCode第三题(9):回文数
题目内容:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此...
2019-03-11 22:17:59 198
原创 LeetCode第二题(7):整数翻转
题目内容:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返...
2019-03-11 17:55:08 210
原创 LeetCode第一题(1):两数之和
题目内容:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...
2019-03-10 21:17:36 160
原创 Java数组实现栈
Java实现数据结构栈可以基于数组实现,基本代码如下:public class Stack { //栈底层使用数组 int[] elements; //初始化栈 public Stack() { elements = new int[0]; } //压栈 public void push(int num) { int[] newArray = new ...
2019-03-10 19:44:33 295
原创 异常处理相关
异常简介:Throwable类,所有的异常类都继承于它!它有两个类:Error和ExceptionError一般是指虚拟机错误(VirtualMachineError)和线程死锁(ThreadDeath)Exception一般是指编码,环境,用户操作输入出现问题,它又有RuntimeException(非检查异常)和检查异常RuntimeException:运行时异常是由JVM自动抛出...
2019-03-09 11:35:52 127
原创 关于字符串
概述:String对象创建后是不能修改的,是不可变的!所谓修改其实是创建了新的对象,所指向的内存空间不同了。注意事项:1.多次出现相同的字符串常量,Java只会编译一个!例 String s1 = "爱慕课";String s2 = "爱慕课";String s3 = new String("爱慕课");String s4 = new String("爱慕课");Sys...
2019-03-09 11:32:54 134
android-studio-bundle安装包(Windows)
2018-06-01
MyBatis学习视频及其所需要的相关资源
2018-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人