自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

寒泉

一只野生程序猿

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

原创 集群搭建:CentOS 7 模板机封装、配置静态 IP、简单优化

最小化安装关闭内核转储安装常用工具yum install -y wget vim net-tools lrzsz配置静态ipcd /etc/sysconfig/network-scriptsvim ifcfg-ens33将 ifcfg-ens33 文件配置如下TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_A

2020-07-06 20:21:34 67789 3

原创 【Golang】火焰图空白部分是什么?

被同事灵魂拷问:图中这块空白是什么东西?豆包回答说是数据采样不完整,特定函数或代码段未被调用之类的原因,感觉都不太合理。之前看过一篇说:Heap Profiling的采样是无时无刻不在发生的,执行一次profiling仅仅是dump一下迄今为止的数据快照。这篇文章更加推翻了前面"数据采样不完整"的假设。那火焰图中的空白到底是啥,我们亲自试一下。

2024-08-18 17:42:23 640 1

原创 【端智能】端智能技术演进与实践

端智能(On-Device Machine Learning)是指把机器/深度学习算法模型应用和部署到端设备上,这里“端设备”是相对于云服务而言的,可以是手机,也可以是物联网IoT设备。机器学习已进入生活中各个方面,在移动端上也有着非常多的应用场景:视觉:扫码、人脸手势识别、肢体姿态估计、目标检测跟踪、图像分割、OCR文字识别提取、图片视频实时超分等语音:语音分类识别等文本:翻译、对话系统、文本分类、智能回复等其他:推荐精排、无人驾驶、运动检测、智能预加载、AR、VR等。

2024-07-21 12:03:38 507

原创 【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

给定一个每一行有序、每一列也有序,整体可能无序的二维数组再给定一个数num,返回二维数组中有没有num这个数。

2023-08-15 00:01:14 941

原创 【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题

体系学习班18节有讲暴力递归的汉诺塔原题。给定一个数组arr,长度为N,arr中的值只有1,2,3三种arr[i] == 1,代表汉诺塔问题中,从上往下第i个圆盘目前在左arr[i] == 2,代表汉诺塔问题中,从上往下第i个圆盘目前在中arr[i] == 3,代表汉诺塔问题中,从上往下第i个圆盘目前在右那么arr整体就代表汉诺塔游戏过程中的一个状况如果这个状况不是汉诺塔最优解运动过程中的状况,返回-1如果这个状况是汉诺塔最优解运动过程中的状况,返回它是第几个状况(而不是还剩几个状况)

2023-08-14 23:57:51 802

原创 【左神算法刷题班】第16节:累加和为k的数组、逆序对问题、约瑟夫环问题

当我们将“ 4(2的2次方)个数字组成的小组”内部逆序的时候,它只影响“2(2的1次方)个数字一组”的小组,和“4(2的2次方)个数字一组的小组”,不会影响“8(2的3次方)一组的小组”。普遍的,我来到 i 位置发现 arr[i]=17,range=100,代表从 0 到 i-1 位置能够得到 1~100 里的所有数,由此可以推断,加上 i 位置之后,可以得到 1~117 所有的数。例如power = 2, arr = {3, 1, 4, 2},reverse = {0, 1, 0, 2}

2023-08-11 19:20:19 689

原创 leetcode 873. Length of Longest Fibonacci Subsequence | 873. 最长的斐波那契子序列的长度

https://leetcode.com/problems/length-of-longest-fibonacci-subsequence/被注释掉的部分是负优化。本意是,然而对set做C(2,992)=491536次insert,比优化掉的logM开销还大。

2022-07-06 14:18:41 738 3

原创 leetcode 869. Reordered Power of 2 | 869. 重新排序得到 2 的幂(状态压缩)

https://leetcode.com/problems/reordered-power-of-2/

2022-07-04 22:03:55 874

原创 leetcode 866. Prime Palindrome | 866. 回文素数

https://leetcode.com/problems/prime-palindrome/参考了答案:https://leetcode.com/problems/prime-palindrome/solution/自己实现的时候,我把奇数位回文串和偶数位回文串拆开来了,最后去返回两种回文串当中的最小值,觉得这样更严谨,尽管这种严谨可以被数学证明是没有必要的。因为如果位数不同的话,结果的大小不是单调增的,不应该直接return。例如,因为如果先算奇数,再算偶数的话,奇数是比偶数少一位的,这样有可能返回

2022-07-03 13:30:16 14713 1

原创 leetcode 865. Smallest Subtree with all the Deepest Nodes | 865.具有所有最深节点的最小子树(树的BFS,parent反向索引map)

层序遍历,记录最深层;建立树反向索引表;从最深层每个节点向上找parent,路过时,节点经过次数count++,找到最早出现count==n的祖先

2022-07-02 22:26:56 12979

原创 leetcode 853. Car Fleet | 853. 车队(Golang)

题目https://leetcode.com/problems/car-fleet/题解看了答案分析我们首先对这些车辆按照它们的起始位置降序排序,并且用 (target - position) / speed 计算出每辆车在不受其余车的影响时,行驶到终点需要的时间。对于相邻的两辆车 S 和 F,F 的起始位置大于 S,如果 S 行驶到终点需要的时间小于等于 F,那么 S 一定会在终点前追上 F 并形成车队。这是因为在追上 F 之前,S 的行驶速度并不会减小,而 F 却有可能因为追上前面的车辆而速

2022-02-12 11:29:07 13328

原创 Golang 清理本地图床中所有未被引用的图片

背景除了博客以外,我还有一些笔记存在 https://github.com/HanquanHq/MD-Notes 上了。在用 typora 的时候,图片都默认自动存到一个本地的文件夹里了,有时候粘贴的时候,回自动保存图片,后来内容删了,图片被留下了,相当于产生了一堆”需要回收的垃圾“,所以我们来手动清理下。代码package mainimport ( "fmt" "io/ioutil" "os" "path/filepath" "regexp" "strings")func Is

2022-02-04 22:11:24 13302

原创 leetcode 822. Card Flipping Game | 822. 翻转卡片游戏(Java)

题目https://leetcode.com/problems/card-flipping-game/题解这个题描述挺复杂,总结起来就一句话:正反面相同的肯定不行,所以找除了正反面相同的以外,其余的数字中最小的那个。class Solution { public int flipgame(int[] fronts, int[] backs) { Set<Integer> invalid = new HashSet<>(); for

2022-01-16 17:51:27 14837

原创 leetcode 1345. Jump Game IV | 1345. 跳跃游戏 IV(BFS)

题目https://leetcode.com/problems/jump-game-iv/题解好久没做 hard 了,今天时间多,挑战一下。用 lqy 同学的话说,这题叫做 “苦难题”,哈哈哈。暴力解其实不难,就是个带 seen 数组的 BFS,看草稿吧~class Solution { public int minJumps(int[] arr) { Map<Integer, Set<Integer>> map = new HashMap&lt

2022-01-15 13:22:02 14610

原创 leetcode 816. Ambiguous Coordinates | 816. 模糊坐标(Java)

题目https://leetcode.com/problems/ambiguous-coordinates/题解related topics 说是回溯,我偷了个懒,每次都 new 一个新的 String,就不用回溯了。思路是:把字符串分割成左右两边,分别生成左 list 和右 list,然后左右 list 两两组合。class Solution { public List<String> ambiguousCoordinates(String s) { St

2022-01-11 23:23:13 13323

原创 leetcode 813. Largest Sum of Averages | 813. 最大平均值和的分组(暴力递归->傻缓存->DP)

题目https://leetcode.com/problems/largest-sum-of-averages/题解好久不 dp 了,来一道快乐的 dp 保持手感。经典的暴力递归 -> 傻缓存 -> dp,竟然有点手生…class Solution { public double largestSumOfAverages(int[] nums, int k) { // Solution 1: 带缓存的暴力递归 double[][] dp = n

2022-01-10 00:14:37 12650

原创 Flink Checkpoint 机制:如何保证 barrier 和数据之间不乱序?

Flink Checkpoint 机制:如何保证 barrier 和数据之间不乱序?1 前言1.1 什么是 state?要说 checkpoint,首先要从 state 聊起。之前有被问到对于 Flink state 的理解,state 的字面含义就是状态。所谓状态,它本身不难理解,简单的说,state 就是你在处理事件的时候需要保存的状态信息。举个例子,如果你要计时,就要保存开始时间,然后用结束时间减去开始时间,这里的“开始时间”就是先前的状态。Flink 官方对 state 也有解释:St

2022-01-08 20:27:06 37982 3

原创 Purpose of cmove instruction in x86 assembly? | cmove 指令如何避免错误的分支预测带来的开销?

cmove 指令是用来做什么的?(Purpose of cmove instruction in x86 assembly?)The purpose of cmov is to allow software (in some cases) to avoid a branch.For example, if you have this code: cmp eax,ebx jne .l1 mov eax,edx.l1:…then when a modern CPU sees t

2022-01-03 01:08:34 37887 2

原创 How to Activate Typora on Windows 10? (2022.01)

On November 23, 2021, Typora officially released version 1.0 and entered the charging era.Version 1.0 is a one-time payment rather than a subscription and can be used on three devices for rmb89.Of course you can continue to use the 0.x vers

2022-01-01 22:39:38 36836

原创 leetcode 802. Find Eventual Safe States | 802. 找到最终的安全状态(有向图DFS)

题目https://leetcode.com/problems/find-eventual-safe-states/题解用 circle 表示所有环上节点和所有能到达环的节点。DFS,实际上每一次遍历都是像遍历链表一样,判断链表是否有环,如果有环,则将整个链放进 circle 中。有个剪枝优化:如果 DFS 过程中,遇到了 circle 中的元素,则说明之前走过的路径也应该被放进 circle 中。最后,返回所有不在 ciecle 中的元素即可。class Solution { i

2022-01-01 20:39:52 39246

原创 leetcode 476. Number Complement | 476. 数字的补数(位运算)

题目https://leetcode.com/problems/number-complement/题解class Solution { public int findComplement(int num) { int i = Integer.numberOfLeadingZeros(num); return ~num << i >> i; }}也可以参考评论区的答案:Idea:Flip all bits usin

2021-12-27 12:02:55 40043

原创 leetcode 312. Burst Balloons | 312. 戳气球(暴力递归->DP)

题目https://leetcode.com/problems/burst-balloons/题解好久不 DP 了,DP 一下吧,结果被坑了很久,看了答案。递归的时候,我知道分成L,R两边,但是一直按着先删M,再删左右想的,结果删除顺序有依赖。看了答案之后发现,要先删左右,最后删M。因为:如果最后删M,能确定M的左边一定是L-1,右边一定是R+1如果先删M,就不能确定M-1的右边是什么,也不能确定M+1的左边是什么class Solution { public int maxC

2021-12-25 23:35:54 37560

原创 leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)

题目https://leetcode.com/problems/number-of-subarrays-with-bounded-maximum/题解一看数据规模,这题只能 O(1)乍一看,以为是单调栈。一画图,发现是一个排列组合问题。思路如下:首先,将大于 right 的数字圈出来,看作是挡板,把整个数组分割成好几个段。每个段中,包含小于 left 的数字,这些数字是不能单独成群的。所以每个段中的所有可能组合数量 = 段内所有可能组合数量 - 不能单独成群的数字的组合数量。计算组合数量

2021-12-23 21:25:16 37055

原创 leetcode 794. Valid Tic-Tac-Toe State | 794. 有效的井字游戏(Java)

题目https://leetcode.com/problems/valid-tic-tac-toe-state/题解1、X必须比O多1个或者相同,否则false2、X和O不能同时都是赢家,否则false3、X赢的时候必须比O多1个,否则false4、O赢得时候个数与X相同,否则false;其他的都是trueclass Solution { public boolean validTicTacToe(String[] board) { int x = 0; // x

2021-12-21 11:13:48 38823

原创 leetcode 792. Number of Matching Subsequences | 792. 匹配子序列的单词数(Java)

题目https://leetcode.com/problems/number-of-matching-subsequences/题解一看数据规模,普通暴力解法肯定超时了。想了半天怎么用 Trie,没有想出来,于是直奔评论区。作者的代码很简洁易懂,看完之后自己写了一遍。class Solution { public int numMatchingSubseq(String s, String[] words) { ArrayList<StringBuilder&gt

2021-12-21 00:03:43 36703

原创 计算机科学中的“边际效益递减”理论

计算机科学中的“边际效益递减”理论边际效益递减,不仅仅是一个经济学词汇,在计算机硬件领域,也是这样的。在经济学中,边际效益递减受人的心理影响,当消费某种物品时,开始的刺激一定大,从而人的满足程度就高,但不断的消费同一种物品,即同一刺激不断反复时,人在心理上的兴奋程度或满足必然减少。在计算机科学中,不管是单机还是分布式集群,都存在一个问题:规模越大,维护成本越高。在经济学中,导致这个结果的原因是人的心理。在计算机科学中,导致这个结果的原因是一些瓶颈。经济学中的“不断消费同一种物品”,是物品的增加。对

2021-12-16 13:50:25 38122

原创 leetcode 787. Cheapest Flights Within K Stops | 787. K 站中转内最便宜的航班(BFS)

题目https://leetcode.com/problems/cheapest-flights-within-k-stops/题解这题挺坑的实际上。DFS 超时了,因为涉及到步数限制 k,所以并不能加缓存,然后去看了答案。答案给了一种 BFS 解法,看完思路我就开始一顿写。一开始是按照如果走回头路的开销比不走回头路更小的话,就走回头路这种思路来写的。提交的时候发现,能不能走回头路,这个问题会比较复杂。回头路是可以走的,但是不能简单的用回头路的开销去覆盖原有的开销,因为在你走回头路的时候,3步

2021-12-16 13:12:26 37811

原创 思考:固态硬盘的普及,是否影响到了存储引擎的设计?

思考 1:固态硬盘的普及,是否影响到了存储引擎的设计?Reference: Let’s Talk About Storage & Recovery Methods for Non-Volatile Memory Database SystemsDBMSs have always dealt with the trade-off between volatile and non-volatile storage devices. In order to retain data after a

2021-12-15 16:05:28 40925

原创 从另一个角度理解分布式系统与CAP定理

从另一个角度理解分布式系统与CAP定理参考:性能之殇(七)-- 分布式计算、超级计算机与神经网络共同的瓶颈分布式计算的本质分布式系统的产生,来源于源于人们日益增长的性能需求与落后的x86架构之间的矛盾。人们想办法利用网络和一大票便宜的PC机,通过一顿猛如虎的数学操作,来自己构建一个宏观上更强性能、更高负载能力的计算机,去替换掉昂贵的小型机、大型机。单体服务器 VS 分布式计算:系统规模问题分布式系统的设计,摆脱了单机昂贵的x86服务器,但没有摆脱冯诺依曼结构。原有的单机瓶颈,在分布式系统中仍

2021-12-13 18:01:30 36578

原创 Flink 能够改写成 FlinkSQL的理论依据:命令式代码 vs 声明式代码

普通的业务逻辑是否能改写成 SQL?Flink 能够改写成 FlinkSQL的理论依据是什么?当关系模型最初被引入时,就包含了查询数据的不同方法:SQL 是一种声明式查询语言,而 IMS 和 CODASYL 则是命令式。这种差别意味着什么呢?命令式代码 vs 声明式代码例如,我有一个动物物种的列表,想要查询列表中的鲨鱼:1、命令式代码:function getSharks() { var sharks = []; for (var i = 0; i < animals.len

2021-12-13 18:00:19 38279

原创 leetcode 785. Is Graph Bipartite? | 785. 判断二分图(DFS,地图着色)

题目https://leetcode.com/problems/is-graph-bipartite/题解有点像简化版的地图着色问题。每走一步,颜色翻转一下,并且染色。当遇到已经染过色的节点时,如果颜色正确,则停止此路径如果颜色错误,则返回 falseDFS完成之后,返回 true。另外,由于本题不保证是连通图,所以对于非连通图来说,可以将两个连通分量独立考察。详见草稿:class Solution { int N; public boolean isBipa

2021-12-12 12:42:34 36963

原创 leetcode 911. Online Election | 911. 在线选举(加强堆 + 二分查找)

题目https://leetcode.com/problems/online-election/题解我的解法是,用预计算(加强堆,O(nlogn)) + 二分查找(用的自带TreeMap,查找复杂度O(logn))。实际上,最优解可以达到预计算 O(n),只需要比较当前新元素的 count 与当前最大元素的 count,并更新最大元素即可。下面来说一下为什么用加强堆。系统自带的堆,它不能动态修改元素。就是说,已经入堆的元素,如果参与排序的指标方法变化,它不能自动调整。所以有了加强堆。对于已

2021-12-12 00:25:05 38453

原创 leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)

题目https://leetcode.com/problems/nth-magical-number/题解看了答案:草稿:class Solution { public static final long MOD = 1000_000_007; public int nthMagicalNumber(int n, int a, int b) { long L = lcm(a, b); // 最小公倍数 long M = L / a + L /

2021-12-12 00:18:56 39649

原创 leetcode 790. Domino and Tromino Tiling | 790. 多米诺和托米诺平铺(暴力递归->DP)

题目https://leetcode.com/problems/domino-and-tromino-tiling/题解比较像剑指 offer 里的一道矩形填充题,一看就是个 dp,见草稿:经典的暴力递归 -> DPclass Solution { int N; int MOD = 1000_000_007; int[] dp1; int[] dp2; public int numTilings(int n) { N = n;

2021-12-10 09:14:32 35006 2

原创 leetcode 1306. Jump Game III | 1306. 跳跃游戏 III(BFS)

题目https://leetcode.com/problems/jump-game-iii/题解正如 hint 所说:用 BFS,跳过的就不跳了,直到全部跳过,即 count == arr.length, 则返回 fasle.过程中,如果遇到 arr[i] == 0,则返回 true.class Solution { public boolean canReach(int[] arr, int start) { boolean[] visited = new bool

2021-12-09 11:09:43 41112

原创 leetcode 781. Rabbits in Forest | 781. 森林中的兔子(Java)

题目https://leetcode.com/problems/rabbits-in-forest/题解另 answers 中的每一个元素称为 n,那么,n 最多能抵消 n+1 个同类元素。class Solution { public static final int N = 1001; public int numRabbits(int[] answers) { int[] count = new int[N]; for (int i : a

2021-12-07 11:28:21 38673

原创 leetcode 779. K-th Symbol in Grammar | 779. 第K个语法符号(Java)

题目https://leetcode.com/problems/k-th-symbol-in-grammar/题解思考 15 分钟,编码 1 分钟。其实目标位置在哪一行不重要,因为每一行都有相同的前缀。详见草稿:class Solution { public int kthGrammar(int n, int k) { boolean reverse = false; while (k != 1) { int sub = 1;

2021-12-06 11:34:22 37808

原创 leetcode 1217. Minimum Cost to Move Chips to The Same Position | 1217. 玩筹码(Java)

题目题解所有的 chips,要么在奇数位置,要么在偶数位置class Solution { public int minCostToMoveChips(int[] position) { int p0 = 0; int p1 = 0; for (int n : position) { if (n % 2 == 0) p0 += 1; else p1 += 1; }

2021-12-06 11:31:24 35609

原创 leetcode 777. Swap Adjacent in LR String | 777. 在LR字符串中交换相邻字符(双指针)

题目https://leetcode.com/problems/swap-adjacent-in-lr-string/题解本来以为是个带 visited 集合的 DFS,一看数据量,居然是 10^4。然后看了下 hint,Think of the L and R's as people on a horizontal line, where X is a space. The people can't cross each other, and also you can't go from XRX

2021-12-05 19:38:13 39841

原创 leetcode 775. Global and Local Inversions | 775. 全局倒置与局部倒置(Java)

题目https://leetcode.com/problems/global-and-local-inversions/题解看了评论区答案。局部倒置一定是全局倒置;局部倒置是连续递减;所以只需判断是否有不连续的全局倒置即可。即,找是否存在 nums[i] 小于 i-1 前的最大值。class Solution { public boolean isIdealPermutation(int[] nums) { if (nums.length <= 2) retur

2021-12-04 12:39:27 40796

Java小球躲避小游戏

Java开发的小球躲避小游戏。通过上下左右按键控制小球移动,小球移动的方向包括:横向、纵向、斜向,小球具有初始生命值。小球通过移动来躲避炮弹,当小球碰到炮弹时,产生爆炸的动画效果。注释很全面,速度、初始子弹数量都可以通过全局变量修改。适合入门学习使用。

2019-06-24

空空如也

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

TA关注的人

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