
java
qq345oo
踏踏实实做自己
展开
-
CAS的几个问题和模拟实现
什么是CAScompare and Swap,是一种区别于synchronized同步锁的一种乐观锁.如何应用底层api中要四个值, 要操作的对象,内存偏移量,期望值,目标值.public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);更上层的接口只要内存值, 希望值,目标值即可.原理是什么CAS本质还是加锁,(只在赋值部分代码进行加锁),只是JDK使用JNI调用C语言方法原创 2021-12-17 14:33:42 · 884 阅读 · 0 评论 -
红黑树 五个性质
红黑树是平衡二叉树, 但又不是严格意义上的平衡,查找复杂度为O(logN).性质一:节点是红色或者是黑色;性质二:根节点是黑色;性质三:每个叶节点(NIL或空节点)是黑色;性质四:每个红色节点的两个子节点都是黑色的(也就是说不存在两个连续的红色节点);性质五:从任一节点到其没个叶节点的所有路径都包含相同数目的黑色节点红黑树是 2-3-4树的一种等同。换句话说,对于每个 2-3-4 树,都存在至少一个数据元素是同样次序的红黑树...原创 2021-12-14 09:24:32 · 1716 阅读 · 0 评论 -
hashmap 面试问题抄袭
内部数据机构是什么?jdk7 是数组+链表, jdb8是数组+链表+红黑树允许空键空值么?key只能存在一个null值, value可以多个都为null原创 2021-12-09 14:46:07 · 451 阅读 · 0 评论 -
二叉树的深度优先遍历及广度优先遍历
深度优先用栈, 广度优先用队列package com.zzk.data;import java.util.*;/** * @author zzk * @Title: DfsAndBfs * @Description: 二叉树的深度优先及广度优先 * @date 2021-12-2 15:00 */public class DfsAndBfs { private Node root; static class Node { public Integ.原创 2021-12-02 15:42:49 · 468 阅读 · 0 评论 -
AVL树的平衡
我不知道树该怎么平衡, 好在AVL三位科学家告诉了我们平衡的规则.官谢 这位up主提供的代码思路,要不我就算知道规律我也写不出来package com.zzk.data;import java.util.Scanner;public class AVL<T extends Comparable> { Node root; public AVL() { this.root = null; } static class Node.原创 2021-11-18 09:50:10 · 115 阅读 · 0 评论 -
判断二叉树是否为平衡的二叉树
二叉搜索树判断是否平衡有两种方法自顶向下, 比较容易,由上到下遍历每个元素,判断左子树和右子树的高度, 大于1就不平衡, 多次判断节点高度, 复杂度为O(n²)自下向上, 其实就是后续遍历判断树的高度, 其中-1代表不平衡, 那么代码的主要逻辑就是左子树不平衡 或者 右子树不平衡 或者 左子树和右子树高度大于1(也就是自己不平衡), 那么返回-1 . 否则返回数的高度即可package com.zzk.data;/** * @author zzk * @Title: .原创 2021-11-15 11:07:19 · 712 阅读 · 0 评论 -
maven maven-compiler-plugin无法下载
在开发环境中,我配置好了自己的私服nexus, 里面阿里云,geo等等的资源库代理都写好了, 按理说只要连上我们的私服, 公共的jar包下载应该不是问题, 但是发现还是下载不了maven-compiler-plugin等等 的maven插件经过测试研究发现,maven的 pluginRepositories 属性没有配置, 如果不写pluginRepositories ,plugins还是走默认的maven仓库, repositories 和 pluginRepositories 都写好之后, 全部.原创 2021-11-10 15:32:40 · 3624 阅读 · 0 评论 -
逆波兰表达式
public class Test1 { public int evalRPN(String[] tokens) { Stack<Integer> stack = new Stack<>(); for (String token : tokens) { if (isInteger(token)) { stack.push(Integer.valueOf(token));原创 2021-11-10 08:45:00 · 85 阅读 · 0 评论 -
括号匹配(栈)
public class BracketMatch { static Map<Character,Character> map = new HashMap<>(); static { map.put('{','}'); map.put('[',']'); map.put('(',')'); } public static void main(String[] args) { Strin原创 2021-11-09 09:15:08 · 85 阅读 · 0 评论 -
最大子序和
题目: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。N^3 和 N^2 两个实现比较容易实现. 穷举即可贪心法是动态规划的特例 (子数组有最优解, 退出整个数组有最优解)分治法比较难考虑: 一个数组的最大子序和, 由左半边,右半边,包括中点部分, 这三者的最大值确定在写代码的时候碰到了两个问题>>>右移符号的优先级 小于 加减乘除的, (left + right) >>> 1 + 1 其实相当.原创 2021-11-04 16:08:50 · 99 阅读 · 0 评论 -
maven <server>标签的id属性
如果要在项目中deploy到nexus maven私服, 肯定要写下面配置<distributionManagement> <repository> <id>qqtt Releases</id> <name>SES Releases</name> <url>http://192.168.168.123:2019/repository.原创 2021-11-04 16:00:15 · 2773 阅读 · 0 评论 -
微信订阅通知实战
微信订阅通知实战原创 2021-11-02 09:27:23 · 1201 阅读 · 0 评论 -
Big O 的数学定义
Big O 的数学定义比较绕, 我的理解是:一个程序, 你通过分析程序,发现他的执行次数为: 3n² + 5n +4, 科学家为了统一标准,引入了 “O” 这个标志, 那么3n² + 5n +4 怎么用 "O"来表示呢?通过 f = O(g), 我们只要找到g这个函数,那么 O(g)就可以表达这个程序的执行时间了.g 怎么找? 由这个求极限的公式更好理解, g除以f的 极限, 是一个大于零的常数, 那么你就找到g了,o(g) 就能表达f 函数的执行时间了....原创 2021-10-29 11:40:49 · 363 阅读 · 0 评论 -
斐波那契 迭代实现(java)
public class Itera { public int fun(int n) { int f0 = 0; int f1 = 1; if (n == 0) { return f0; } if (n == 1) { return f1; } while (n - 1 > 0) { int temp = f原创 2021-10-28 15:05:58 · 197 阅读 · 0 评论 -
Bag 数据结构
Bag 数据结构背包是一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素用处在于收集和遍历信息,也可以自己添加一些统计方法(例如在下面示例中的avg方法).public class Bag<T> implements Iterable<T> { public Node first; int size; public Bag() { first = null; size =.原创 2021-10-28 08:00:00 · 804 阅读 · 0 评论 -
二叉搜索树(BST)
package com.zzk.data;/** * 二叉搜索树(BST) */public class BinarySearchTree<T extends Comparable> { Node root; public BinarySearchTree() { this.root = null; } static class Node<T extends Comparable> { public T原创 2021-10-25 10:50:33 · 115 阅读 · 0 评论 -
java 位操作符及常见用法
原理: Java 位运算(移位、位与、或、异或、非)这篇文章讲的很清楚需要重点记忆的应该是 左移 右移 和 无符号右移左移 : 正负数 都是低位补0右移: 正数高位补0 负数高位补1无符号右移 : 正负数都是高位补0常见用法:判断奇偶性int a = -1;if ((a & 1) == 0) { System.out.println("偶数");}else{ System.out.println("奇数");}是不是2的指数boolean isPow原创 2021-04-23 11:23:02 · 103 阅读 · 0 评论 -
哈希函数及哈希冲突
hash函数的确定 hash函数应当尽量将key值均匀分配在hash表中hash冲突的避免 无限多的数据统一到有限多的集合中,冲突难免, 出现冲突该如何解决/** * Computes key.hashCode() and spreads (XORs) higher bits of hash * to lower. Because the table uses power-of-two masking, sets of * hashes .原创 2021-04-22 16:31:18 · 484 阅读 · 0 评论 -
cpu架构 如何记忆
cpu架构如何记忆查了忘,忘了查,很烦.cpu架构主要两种 x86和ARM先记天天用的,x86,intel的cpu,IBM PC都使用这个,所以是空前成功,后来amd("阿马德"公司)发展成64位的,所以也叫amd_64,intel后来也发明出来了64位的,叫x86_64.所以 x86,x86_64,x64,amd_64,,他们是一起的.后记不常用的,ARM: arm胳膊的意思, 节能,常用在嵌入式系统中...原创 2021-04-20 08:36:22 · 206 阅读 · 0 评论 -
java 外部类和内部类
外部类只可以被default和public访问修饰符修饰。只可以被abstract和final 非访问修饰符修饰内部类成员内部类 可以被所有 访问修饰符修饰访问方式:方式一:在外部类中提供一个方法创建内部类的对象进行访问方式二:在其他类中创建内部类的对象: 格式:外部类.内部类 变量名=new 外部类().new 内部类();静态内部类 就是在成员内部类的基础上加了一个static属性,也可以被所有访问修饰符修饰访问方式:外部类.内部类 变量名 = new..原创 2021-04-16 09:03:10 · 181 阅读 · 0 评论 -
多线程二分法查询效率问题求解
首先是一个简单的二分查找 private int binaryTree(int key, int[] whitelist){ int min = 0; int max = whitelist.length-1; while (min max){ int middle = min + (max-min)/2;原创 2017-06-15 11:12:30 · 645 阅读 · 0 评论 -
java7 date
原创 2017-06-09 15:16:04 · 254 阅读 · 0 评论 -
冒泡排序四种写法
package com.zzk.suanfa;/** * Created on 2017/6/16. */public class Bubbler { //排序算法1,冒泡排序法 第一种写法 public static void main(String[] args) { int[] in = new int[]{4,5,3,6,8,45,3,4,6,7,23,原创 2017-06-16 15:33:34 · 2079 阅读 · 0 评论