- 博客(243)
- 资源 (3)
- 收藏
- 关注
原创 十大经典排序算法最强总结(含JAVA代码实现)
0、排序算法说明 0.1排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; ...
2018-05-22 20:25:23
504
1
原创 springboot+shardingjdbc+mybatis+oracle与mysql坑
随着公司的业务增长,从一个工厂单表对应的数据量到达为2个亿数据量,现在引入4个工厂数据估计数量到达10个亿数据量,考虑后期数据量导致数据表崩溃。想引入现在比较流行的分库分表shardingjdbc技术,由于只分表不库的功能,按照厂site进行分成四张表。 ...
2021-10-20 13:45:25
2609
转载 剑客(二叉树中和为某一值的路径)
一:题目 输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 二、分析思路 三、代码实现 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val
2020-10-27 11:27:01
284
原创 剑客(链表的倒数第k个值)
一、题目 输入一个链表,输出该链表中倒数第k个结点 二解题思路 首先链表的长度是不确定的 所以可以用两个指针求解 定义快指针和慢指针。 快指针先走 k-1 步,到达第 k 个节点。 fast 然后两指针同时齐步走,当快指针到达末尾时,慢指针在倒数第 k 个节点上。 三 代码实现 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.va
2020-10-25 16:30:11
293
原创 剑客(求连续子数组的最大和)
一、题目描述 给定一个数组 array[1, 4, -5, 9, 8, 3, -6],在这个数字中有多个子数组,子数组和最大的应该是:[9, 8, 3],输出20,再比如数组为[1, -2, 3, 10, -4, 7, 2, -5],和最大的子数组为[3, 10, -4, 7, 2],输出18。 实现代码 public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(arr.
2020-10-05 22:51:23
220
原创 剑客(求一个数组中任意两个相加为目标数 target)
代码实现 package com.zhm.eurekaclient.config.test; import org.apache.catalina.LifecycleState; import org.bouncycastle.jcajce.provider.digest.MD2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** ......
2020-10-04 09:53:24
608
原创 剑指(用两个有序的链表合并一个有序链表 )
一 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null &...
2020-10-02 10:07:12
134
原创 剑指(整型数组奇数放左偶数放右 )
一:题目 给定一个整型数组奇数放左偶数放右 快手面试 竟然这个题目丢分了,是有点不甘心,面试结束后在那想了很久,面试结束后提示和快排序类似 ,面试官走了,自己想一下是啊 自己的怎么没有想到真是后悔丢分了 真笨 真笨。。。。,就写了以下代码 如: 1 2 3 4 5 6 输出: 1 5 3 4 2 6 二 、分析思路 /*** * 思路: 和快排序一趟思想一样的 * 1.从左边选择一个偶数放到右边去 * 2.从右边选择一个奇数放到左边去 * 3.交接两个数据 ...
2020-09-27 21:14:34
702
原创 剑指(反转链表 )
一 、题目 输入一个链表,反转链表后,输出新链表的表头 二 题目描述 如链表为:1->2->3->4->5 反转后的链表为:1<-2->3<-4<-5 三 分析过程 第一步:head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null 第二步:需要两个临时节点来保存指针移动 第三步:每个节点向后移动一位 四 代码实现 public class Solution { public ListNode ReverseLi.
2020-09-27 09:57:53
194
原创 剑指(滑动窗口的最大值 )
1.题目描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3, 那么一共存在6个滑动窗口, 他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}
2020-06-09 23:31:34
261
转载 世界上最好的学习法:费曼学习法
你是否曾幻想读一遍书就记住所有的内容?是否想学习完一项技能就马上达到巅峰水平?除非你是天才,不然这是不可能的。对于大多数的普通人来说,可以通过笨办法(死记硬背)来达到学习的目的,但效率低下。当然,也可以通过优秀的学习法来进行学习,比如今天讲的“费曼学习法”,可以将你的学习效率极大的提高。 ## 费曼学习法 费曼学习法是由加拿大物理学家费曼所发明的一种高效的学习方法,费曼本身是一个天...
2020-03-09 17:12:52
366
原创 两个线程轮流打印奇偶数
第一种方式 使用Object的wait和notify实现 package cn.zhm.Thread; import java.util.concurrent.atomic.AtomicInteger; public class test_02 { AtomicInteger count = new AtomicInteger(1); public void test(in...
2019-11-21 18:30:59
668
原创 JVM调优
1.GC调优思路 a.分析场景 例如:启动速度慢;偶尔出现响应慢于平均或者出现卡顿 b.确定目标 内存占用,低延时,吞吐量 c.收集日志 通过参数配置收集GC日志;通过JDK工具查看GC状态 d.分析日志 使用工具辅助分析日志,查看Gc次数,GC时间 e.调整参数 切换垃圾收集器或者调整收集器参数 2.JVM调优常用命令 1.查看进程号 jcmd | grep "perf...
2019-10-19 23:11:57
253
原创 JAVA锁
1.Lock ()(不死不休) 2.boolean tryLock = lock.tryLock();子线程获取锁(浅尝辄止) 只要别人占用了锁 则就会获取锁失败 new Thread(new Runnable() { public void run() { //子线程获取锁(浅尝辄止) boolea...
2019-09-27 23:09:51
281
1
原创 Elasticsearch(五)
1.图解partial update 实现原理以及动手实战演练 1.什么是partial update ? PUT /index/type/id 创建文档&替换就是一样 (1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改 (2)用户在前台界面修改数据发送到后台 (3)后台代码,会将用户修改的数据在内存中进行执行,然后封装好修改后的倒是数据...
2019-09-08 09:56:17
216
原创 Elasticsearch(四)
1.图解Elasticsearch 容错机制:master选举、replica容错、数据恢复。 master node宕机,自动master选举 red 初步解析document的核心元数:_index,_type,_id { "_index" : "test_index", "_type" : "test_type", "_id" : "1", "_version"...
2019-09-05 20:05:36
225
原创 Elasticsearch(三)
1.Elasticsearch对复杂分布式机制的透明隐藏特性。 分片 cluster discovery, shar负载均衡(举例 假如现在有3个节点 总共25个shard分配到3个节点去,es分自动进行均匀分配,以保持每个节点的均衡的读写负载请求) shard 副本 请求路由 集群扩容 shar ...
2019-09-05 00:57:36
174
原创 Elasticsearch(二)
1.索引的几种查询 1.query sting search GET /ecummerce/product/_search 1.took :耗费了几毫秒 2.timed_out 是否超时 这里没有 3._shards :数据拆成了一份,所以对于搜索请求,会打到所有primary shard(或者是它的某个replica shard 也可以) 4.hits.total 查询结果的数量 ...
2019-09-01 19:13:24
240
原创 Elasticsearch(一)
1.定义 如果用数据库做搜索会怎样? 1.每条记录的指定字段的文本可能太长 2.还不能将搜索词拆分来,尽可能去搜索更多的符合的期望的结果。比如输入:生化机 就搜索不出来"生化危机" 用数据库来实现搜索 是不太靠谱 效果比较差。 Elasticsearch 核心概念 vs 数据库核心概念 Document...
2019-08-30 23:53:53
246
原创 Rabbitmq(二)
1.Rabbitmq的消息确认机制(事务+confirm) 在rabbitmq中我们可以通过持久化数据,解决rabbitmq服务器异常的数据丢失问题 问题 :生产者将消息发送出去之后,到底有没有到达rabbitmq服务器 默认情况 不知道 两种方式: AMQP实现了事务机制 confirm模式 事务机制 txSelect txCommit txRollback txSelect :...
2019-08-18 01:31:27
191
原创 ideal
/** * create by: zhaohaiming * create time: $date$ $time$ * description: $TODO$ */
2019-08-16 17:08:49
620
原创 RabbitMq订阅模式
RabbitMQ 工作原理 对于 RabbitMQ 来说, 除了这三个基本模块以外, 还添加了一个模块, 即交换机(Exchange). 它使得生产者和消息队列之间产生了隔离, 生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列. 那么 RabitMQ 的工作流程如下所示: 说一下交换机: 交换机的主要作用是接收相应的消息并且绑定到指定的队列. 交换机有四种类...
2019-08-14 01:11:47
645
原创 RabbitMQ安装与简单队列
1.先安装esl-erlang_22.0~windows_amd64 2.第二安装:rabbitmq-server-3.7.17 3.在控制页面:rabbitmq-plugins enable rabbitmq_management 进入安装目录\sbin下,使用命令“rabbitmq-plugins enable rabbitmq_management”启动网页管理插件; 4.在浏览器中...
2019-08-11 20:21:57
212
原创 CAP理论原理与理解
CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得。 一、CAP的定义 Consistency (一致性): 在分布式系统中,一个数据存在多个副本的情况下,各个副本的值是否一致。一致性指的是并发访问时更新过的数据如何获取的问...
2019-08-08 22:50:54
472
原创 手写一个线程死锁
死锁的原因: a.系统资源不足 b.进程运行推进的 c.资源分配不 当 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相 等待的现象 若无外力干涉那它们都将无法推进下去。 代码如下: package cn.link.cn; public class DealLockThread implements Runnable { private Strin...
2019-08-05 22:06:43
507
原创 Java几种二叉树的遍历
二叉树节点数 代码如下: package cn.zhm.tree; /** * 二叉树的节点数 */ public class BinaryTreeNode { private int data; private BinaryTreeNode left; private BinaryTreeNode right; public int getDat...
2019-08-03 02:00:43
234
2
原创 Java几种方式实现生产者与消费者
第一种是 用wait 和 notify 第二种是await 和signal实现 代码实现如下: package cn.link.cn.jisun; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurr...
2019-07-26 00:40:53
390
原创 共享锁(读写锁)
1.指该锁可被多个线程所持有 不加出现问题 代码如下: package cn.link.lock; import java.sql.Timestamp; import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.concurrent.TimeUnit; import j...
2019-07-16 23:40:34
2326
原创 原字符翻转
题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。 测试样例: "This is nowcoder" 返回:"redocwon si sihT" 思路:将第一个字符与最后字符交换 即可。 代码实现 ...
2019-07-15 00:36:15
161
原创 剑指(从尾到头打印链表 )
题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值。结点定义如下: 思路 结点遍历顺序只能从头到尾,但是输出的顺序却为从尾到头,是典型的“后进先出”问题,这就要联想到使用栈,从而也可以联想到使用递归。 代码 package cn.link; public class LinkNode { private int value; private Link...
2019-07-13 22:45:24
140
原创 集合不安全
1.list集合 a.故障现象 异常:java.util.ConcurrentModificationException b.导致原因: 并发读写 c.解决方案: List list = new Vector();List list = new Collections.synchronizedList(new ArrayList<>());List list = new ...
2019-07-13 21:21:57
145
原创 剑指(斐波那契数列 )
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 现在代码 package zc.zhm.day1; public class Tset_2 { public int fibonacci(int n) { if (n < 2) return n; int fibleOn...
2019-07-11 23:08:45
205
原创 多线程下的单例模式(双端检索模式)
package zc.zhm.day1; public class SingletonDemo { private static volatile SingletonDemo instance = null; public SingletonDemo() { System.out.println("我是构造SingletonDemo()。。。。"); } public stat...
2019-07-06 18:37:07
4377
3
原创 剑指(数值的整数次方 )
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路: 这道题很容易实现,但需要注意以下陷阱:1)0的负数次方不存在;2)0的0次方没有数学意义;3)要考虑exponent为负数的情况。所以可以对exponent进行分类讨论,在对base是否为0进行讨论。 package cn.day18; publ...
2019-07-04 18:53:12
202
原创 剑指(旋转数组最小值)
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路: 这个问题的中心思想其实就是使用二分查找的方法,逐步的逼近这个最小值,首先这个旋转数组将一个非递减...
2019-07-04 11:15:26
244
原创 剑指(用两个栈实现队列 )
题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 分析思路: 1.只要stack2不为空则从stack2取数据 2.如果stack2为空则往sctack1插入数据 代码如下 package zhm.day1; import java.util.Stack; /** * 分析思路: * * 1.只要stack2不为空则从st...
2019-06-29 16:46:31
195
原创 剑指(替换空格)
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析思路: 1.先统计空格数量个数count 2.统计新的字符串的长度 originalLength +2*count 得到两个字条串一个是原字长度符串(originalLength),另一个是加个空格长度字符(...
2019-06-29 16:39:10
281
Java 并发编程大厂面试题:synchronized Lock JUC AQS CAS volatile 线程安全源码解析
2026-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅