自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CodeHunter_qcy

如果我有两块面包,我愿用其中一块去换取一朵水仙花。

  • 博客(88)
  • 资源 (1)
  • 收藏
  • 关注

原创 golang入门系列之Go GC

前言      因为之前作为兴趣粗略的研究过Java的各种垃圾回收(CMS、G1、ZGC等),今天来大概了解一下Go的GC,如有错误,欢迎斧正。一、先来了解一下常见GC算法 常见的 GC 算法。引用计数法、复制算法、标记-清除法、标记整理法、三色标记法、分代收集法。1. 引用计数法原理是在每个对象内部维护一个整数值,叫做这个对象的引用计数;当对象被引用时引用计数加一,当对象不被引用时引用计数减一。当引用计数为 0时,自动销毁对.

2020-10-07 00:51:40 2473 8

原创 golang入门系列之浅谈 goroutine

写在前面       本文内容是我继上篇入门学习go的个人理解,如有错误,欢迎斧正。       之前早有耳闻 Go 在高并发场景下,能够充分利用多核,在语言层面支持并发、轻量高效等优点,奈何沉迷Java生态,未曾尝试跳出来了解。前天花了几个小时入门,冲着goroutine我入坑了(当然并不是无脑吹,协程是解决问题的思维方式,并不能解决所有的问题),所以秉承着或奉献或分享或记录的.

2020-10-06 17:19:56 2260 2

原创 Java程序员学习golang六小时后,竟然深夜

写在前面       竟然大半夜不睡觉写博客。这个标题,是不是像一些无良卖课吸睛公众号,点开一看味同嚼蜡。       好吧,大半夜码字,因为实在激动。从下午六点多开始学习golang,花了三个小时了解变量、指针、数据类型、结构体、语法、函数以及golang的切片、管道、(go程)协程等特性,用半小时思考我该写个啥,花了一个半小时写了个小白入门爬虫,最后傻乐了半小时。文章目录写.

2020-10-04 02:24:10 4257 8

原创 分布式系统之CAP原则

什么是CAP原则?分布式系统的基础理论,描述分布式系统在CAP三个特性中,最多满足其中两个,不能同时满足CAP。C:一致性(Consistency)A:可用性(Availability)P:分区容错性(Partition tolerance)特性说明一致性分布式系统中的写操作之后的读操作,都应该读到写操作最新写入的值。也就是说要保证分布式系统各个节点每时每刻的数据一致性。(PS:有点类似volatile在JMM中的可见性)可用性客户端可以一直得到系统的正常响应,也就

2020-06-22 00:48:33 901

原创 【简单递归】之逆序栈

神~经病!翻来翻去package com.stack;import java.util.Scanner;import java.util.Stack;/* * 用递归逆序栈*/public class RecStack { public static void main(String[] args) { Stack<Integer> stack = new Stack<>(); Scanner scanner = new Scanner(System.i.

2020-06-06 23:51:56 533 1

原创 Stream流之List、Integer[]、int[]相互转化

Stream流之List、Integer[]、int[]相互转化一、int[ ]1.1、int[ ] 转 Integer[ ]public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList()); list.forEach(e -> System.

2020-06-06 19:22:32 4758 1

原创 【数组】之宇宙无敌360度反复横跳之旋转打印数组

算法上没有难度,需要注意逻辑问题设计。思路:最容易理解的方法是层层剥开,一圈一圈打印左上角来两个指针横纵坐标,右下角也是写一个方法用来打印圈当左上角和右下角撞见了,停止打印圈: int curR = r1;//左上角横坐标 int curC = c1;//左上角纵坐标 while (curC != c2) {//从左到右 System.out.print(matrix[curR][curC] + " "); curC++; }//到头了 whi.

2020-06-05 21:04:27 221

原创 二分变形之排序数组查找数字次数

思路:找左边界,找右边界,做差。class Solution { public int search(int[] nums, int target) { int i = 0, j = nums.length - 1; while(i <= j) { int m = (i + j) / 2; if(nums[m] <= target) i = m + 1; else .

2020-06-03 11:42:01 252

原创 栈之字符串解码

注意:拼接时把两个括号直接字符都拿过来,注意顺序考虑多位数的情况结果拼接顺序class Solution { public String decodeString(String s) { String res = ""; Stack<String> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == ']') { .

2020-05-29 00:10:22 182

原创 把数组排成最小的数

搬运工,又是看了大佬的答案才写出来的。排序:规定,对于nums的数字,如果X+Y>Y+X(拼接而非加),则X>Y。“3”+“30” > “30”+“3”,所以排序 30,3public class MinNUMS { public String minNumber(int[] nums) { String[] strings = new String[nums.length]; for (int i = 0; i < nums.length; i++) { .

2020-05-17 23:06:40 139

原创 摩尔投票算法

之前用的方法:数组排序:排序后数组中点的数一定为众数。Map统计长度,大于数组一半长度是众数。时间空间复杂度均O(N)今天学到了摩尔投票算法(隐约记得高中数学老师提到过)核心理念为 “正负抵消” ;时间和空间复杂度分别为 O(N) 和 O(1);是本题的最佳解法。class Solution { public int majorityElement(int[] nums) { int v=0,x=0; for(int num:nums){ .

2020-05-12 23:16:55 162

原创 字符串全排列

和数字的全排列有相似点回溯这里把字符串非为两部分:前部分固定,和后面全部进行一次交换class Solution { List<String> res = new ArrayList<String>(); char[] ch; public String[] permutation(String s) { ch=s.toCharArray(); dfs(0); return res.toArray(new.

2020-05-11 18:20:00 138

原创 X的N次幂

class Solution { public double myPow(double x, int n) { double res = 1.0; for (int i = n; i != 0; i /= 2) { if (i % 2 != 0) { res *= x; } x *= x; } return n > 0 ? res : 1 / res; }}

2020-05-11 16:56:23 480

原创 【层次遍历】序列化、反序列化二叉树

借助辅助队列,层次操作结果做处理public class Codec { String res; // 序列化 public String serialize(TreeNode root) { if (root == null) { return "[]"; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); res = "[" + root.val; whil.

2020-05-09 23:49:36 761

原创 【睡前水题】之X的平方根

方法一:公式法(了解即可,面试别写,不能调用库函数)方法二:二分查找class Solution { public int mySqrt(int x) { int l=0,r=x,res=0; while(l<=r){ int mid= l+(r-l)/2; if((long)mid*mid<=x){ res= mid; l=mid+1; ..

2020-05-09 22:57:04 160

原创 二叉搜索树转化为双向有序链表

思路:二叉搜索树中序遍历即为有序找到最左子树节点,作为头节点head关键步骤:当 pre为空时: 代表正在访问链表头节点,记为 head当 pre不为空时: 修改双向节点引用,即 pre.right = cur,cur.left=pre保存 cur : 更新 pre = cur ,即节点 cur是后继节点的 pre ;class Solution { Node head,pre; public Node treeToDoublyList(Node root) { .

2020-05-08 22:04:32 268

原创 最大正方形两种解法

方法一:暴力遍历二维数组,找到等于‘1’的地方开始行和列加一(边界是min(行数-i,列数-j))如果等于‘1’,结果加一class Solution { public int maximalSquare(char[][] matrix) { int res= 0; if(matrix==null||matrix.length==0||matrix[0].length==0){ return res; } .

2020-05-08 21:23:18 523

原创 【双递归】树的子树

双递归递归s树递归判断树左右节点是否相等判断两棵树是否相同:参数(俩棵树)、返回值(boolean)如果t空并且s空,返回T如果t为空或者s为空,返回F如果t的值不等于s的值,返回F递归两棵树左右子树class Solution { public boolean isSubtree(TreeNode s, TreeNode t) { if(s==n...

2020-05-07 12:36:44 157

原创 拷贝链表

思路:复制节点的 val ,next 和 random 暂时为空将源节点和克隆节点形成映射存放在一个 HashMap 中public class CopyList { public Node copyRandomList(Node head) { if(head==null) { return null; } Node p=head; Map<Node, ...

2020-05-06 23:16:52 333

原创 【又是回溯+递归】二叉树路径和

思路:带着sum去遍历二叉树,将每一个节点先加进来,不合适就回溯,找到路径加入到结果集当中;每一步递归要完成:将节点加入,更新目标值递归出口:到底部,node==null加上回溯代码:class Solution { LinkedList<List<Integer>> res=new LinkedList<>(); Linked...

2020-05-06 21:53:51 1223

原创 二叉树的后续遍历序列

思路:二叉搜索树后根遍历,序列尾部一定是根节点元素。根往前部分,分为两部分:小于根节点的是左子树,大于根节点的是右子树判断完一次,分开左右子树分别判断递归加分治找到左右子树区间代码:class Solution { public boolean verifyPostorder(int[] postorder) { int len = postorder....

2020-05-06 20:19:29 279

原创 睡前水题:验证二叉搜索树

利用二叉树特性:中序遍历递增方法一:class Solution { long pre = Long.MIN_VALUE; public boolean isValidBST(TreeNode root) { if(root==null){ return true; } if(!isValidBST(ro...

2020-05-05 23:54:57 129

原创 synchronized的锁优化

synchronized的锁优化锁的四种状态无锁状态偏向锁轻量级锁重量级锁随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁,但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级。偏向锁偏向锁是Java6之后加入的新锁,为了减少同一线程获取锁的代价而引入偏向锁。偏向锁的核心思想:如果一个线程获得了锁,那么锁就进入偏向模式,此时Mark Word 的结构...

2020-05-05 22:06:36 138

原创 复习synchronized之底层原理

synchronized是什么关键字,Java利用锁机制实现线程同步的一种方式。Java实现线程同步的方式:1.显式锁(lock,需要自己写代码去获取锁和释放锁);2.隐式锁(synchronized,自动的)。synchronized怎么用修饰方法//普通方法//锁对象public synchronized void synTest (){ //TODO}//静态方...

2020-05-05 21:24:58 1476

原创 从上到下打印二叉树

层次遍历,之前写过,加层次输出,这个不要,之间添加。在这里思路一样,辅助队列存nodeif (root == null) { return new int[0]; } List<Integer> res = new ArrayList<Integer>(); Queue<TreeNode> queue = new LinkedList&...

2020-05-05 00:04:04 154

原创 栈的弹出序列问题

给定栈的压入序列判断栈的弹出序列是否合法附上动图,一看就会代码在此:class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { Stack<Integer> stack =new Stack<>(); int i =...

2020-05-04 23:12:44 368

原创 四月拜拜了

        想到哪写到哪吧!明天就五月了,新的一个月,希望可以拥有好运,整个四月,充斥着焦躁和不安,人的一切痛苦,本质上都是对自己无能的愤怒。        要下雨了,乌云带着沉寂想冲破窗户压进屋子,没有狂风,平静的让人心头发闷。&...

2020-04-30 23:12:29 142

原创 判断快乐数,做出来就快乐

啥是快乐数字,无限拆分,直到平方和可以等于1,就是快乐数字。恍惚间我领悟了快乐的真谛:不断磨练自己,直到剩下内心最坚固的纯真,即为快乐。哇,刷(明)题(天)真(放)好(假)!我好快乐!思路:分两步第一步:写个方法,获取下一个拆分后求完平方和的n值第二步:防止重复,陷入环路返回falseclass Solution { public boolean isHappy(int n) ...

2020-04-30 21:34:07 332

原创 最小栈min方法

辅助栈,存放严格降序入A栈if(stackB.peek()>=x){入B栈}class MinStack { Stack<Integer> stack,minStack; /** initialize your data structure here. */ public MinStack() { stack= new Stac...

2020-04-30 20:24:43 169

原创 水题结束今天,二叉树镜像

左右反着,交换左右节点就可以了递归,每一次交换左右节点,空就退出class Solution { public TreeNode mirrorTree(TreeNode root) { if(root==null){ return root; } rec(root); return root; ...

2020-04-29 20:07:40 114

原创 树的子结构

递归啊递归,一看就会,一写就废。思路:1.遍历A树2.看以A树的每一个节点为根节点的树是不是包含Bclass Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { return (A!=null&&B!=null)&&(rec(A,B)||isSub...

2020-04-29 18:44:20 121

原创 顺时针打印矩阵

public class Solution4_29 { public int[] spiralOrder(int[][] matrix) { if(matrix.length==0) { return new int[0]; } int l=0,r=matrix[0].length-1,t=0,b=matrix.length-1,x=0; int[] res=new i...

2020-04-29 17:36:35 103

原创 一个数的整数次方(快速幂)

其实并没有想象中那么简单class Solution { public double myPow(double x, int n) { if(n==0){ return 1; } if(n==1){ return x; } double res=1; ...

2020-04-28 20:38:26 312

原创 合并两个排序链表

迭代class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode node=new ListNode(0); ListNode cur=node; while(l1!=null&&l2!=null){ if...

2020-04-28 19:17:31 112

原创 位运算解决找不同数字、2的幂、1的个数等

限制空间、时间复杂度,所以无法用Map位运算大显身手4 ^ 1 ^ 4 ^ 6 => 1 ^ 66 对应的二进制: 1101 对应的二进制: 0011 ^ 6 二进制: 111但是通过111无法得知是1^6所以分组解决,奇数在一起,偶数在一起,各玩各的(异或)class Solution { public int[] singleNumbers(int[] n...

2020-04-28 18:12:03 171

原创 机器人又来运动了,我却坐了一天。

剑指Offer做过一次,奈何没充分理解,又忘记了。思路:之前上下左右都走,写完看别人写的发现只需向右向下就可以了。(i/0+i%0+j/0+j%10)>k跳出。class Solution { public int movingCount(int m, int n, int k) { boolean visited[][]= new boolean[m...

2020-04-27 22:55:28 122

原创 DFS又不会了!矩阵中的路径DFS+回溯

细节忘记了再看看这个两天前做的DFS,这里又卡壳!深搜岛屿数量数组全排列思路:从word第一个字符进行深搜,递归函数(矩阵,word,坐标x,坐标y,指针k)指针k每次++,当指针k等于word的长度时,到了递归出口,return true。遍历时,超出边界||矩阵字符与 word[k] 不相等,false。class Solution { public boolean ...

2020-04-27 21:18:42 121

原创 判断对称二叉树

相等条件:1.(走到最底层还一样,说明相等)root.left==null&&root.right==null,return true;2.(一端有叶子一端没有叶子,肯定不想等)if(left==null||right==null) return false;3.(值相等&& 左的右等于右的左&&左的左等于右的右)class Soluti...

2020-04-27 15:33:54 131

原创 双指针大法

起初想装到容器倒着输出发现多此一举不如双指针截取拼接输出1.去掉首尾空格2.倒着遍历,双指针截取3.拼接class Solution { public String reverseWords(String s) { s = s.trim(); int len = s.length(); int i = len - 1, j = len - 1; S...

2020-04-25 20:40:05 143

原创 通过数组全排列复习dfs+回溯+剪枝

全排列啊!画图,虽然丑的要命,依稀可以辨认出是一颗树那么,从root遍历,把路径记下来,遍历时把重复的去掉,得到结果就是全排列个鬼说的简单如何去重复做标记数组,访问过就不访问如何存路径啥都行,动态数组、栈随便选然后拿到123,装进结果没了吗这里回溯,李白一技能或者艾克大招退回到上一步也就是12,因为2访问过了换3进入3的情况只剩2没有访问所以132一直这样这样...

2020-04-25 18:41:18 604

mysql-5-winx64.rar

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL的5.5版本,win64位

2019-06-19

空空如也

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

TA关注的人

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