- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 args 2019.12.08
1.algorithm:https://leetcode.com/problems/combination-sum-iv/这一题适合面试,虽然用到了动态规划,但是非常简单,比较容易想到。2.review:本人工作于一家备份软件公司的erp部门,下面小文列举了备份软件行业的两个主要对手commvault和veritas。虽然这个小文写的有些笼统,但还是能让人对这两家公司有个基本的认识。大家...
2019-12-08 16:16:10
141
原创 2019.11.23 arts
本周arts:1. algorithm:下面这题我直接把数字转换成字符串,然后排序,这样的代码比较清晰。优化的算法是找出lexicographical的规律,也挺容易理解的。但我更喜欢简单直白的解法。https://leetcode.com/problems/lexicographical-numbers/2. review:我司新收购的一家公司的博客,下文讲述了 hedvig软件定义...
2019-11-23 21:47:05
135
原创 补 2019.11.11-2019.11.17 arts:
1. algorithm:下面这题我用了暴力算法解题。优化算法是先对于magazine生成一个map,然后用ransom查这个map。对于leetcode的题目,我喜欢先用暴力算法写一个简单思路的解法,然后再优化,最后再对比讨论区的解法。https://leetcode.com/problems/ransom-note/discuss/?currentPage=1&orderBy=mo...
2019-11-23 19:25:10
426
原创 2019.11.4-2019.11.10 arts
1. algorithm:下面这题应用蓄水池算法。即使不能事先知道所有链表元素的个数,也能保证随机抽取k个样本。不得不感叹算法的精妙。https://leetcode.com/problems/linked-list-random-node/2. review:读了2篇蓄水池算法的文章,一篇中文,一篇英文。都不错。wiki的介绍太简单,只能大致看看。中文版的介绍很详尽。https://...
2019-11-23 18:56:58
119
转载 Cache与内存二三事
本文搜集了几个与内存和缓存相关的技巧,对于代码调优比较有帮助。即使你在工作中不需要写出极致性能的代码,也应该读一下这篇文章。因为看似对软件工程师透明的内存以及CPU Cache,其实并不“透明”,代码的细微差别可能明显的影响缓存以及内存的性能。1.会导致缺页中断的内存分配下文代码采用两种方式分配pBuffer,请比对两种不同方式的耗时。#include "stdafx.h"#inc...
2019-11-02 22:50:56
528
原创 arts 20191102
本周arts:1.algorithm:https://leetcode.com/problems/first-unique-character-in-a-string/submissions/本周做了一道简单题如上,我对比了讨论区里面c++和python的方案,再次感叹python的简洁,以及觉得python实在是为了处理字符串而生。2.review:一篇好文讲解什么是kubernet...
2019-11-02 17:44:36
90
原创 arts 20191027
本周arts:1.algorithm:https://leetcode.com/problems/find-the-difference/discuss/86826/Concise-C%2B%2B-solution-using-XOR本周做了一道算法题如上。一拿到题目我就知道这道题可以用类似two sum的方法解,就是把字符串里的每个字符插入一个set或者从set里面删除,从而找到t追加的那...
2019-10-30 09:19:12
67
原创 arts 20191027
本周arts:1.algorithm:https://leetcode.com/problems/find-the-difference/discuss/86826/Concise-C%2B%2B-solution-using-XOR本周做了一道算法题如上。一拿到题目我就知道这道题可以用类似two sum的方法解,就是把字符串里的每个字符插入一个set或者从set里面删除,从而找到t追加的那...
2019-10-27 22:18:08
111
原创 20191019 arts
本周arts:1.algorithm:https://leetcode.com/problems/perfect-rectangle/discuss/?currentPage=1&orderBy=most_votes&query=本周做了一道难度为hard的题目,我的暴力算法逻辑是很清晰的。但是有一个test case会因为超时而失败下面是讨论区里面优化的算法,作者的思路...
2019-10-20 11:53:37
88
原创 ARTS 20190929
以下是本周arts:1.algorithm:本周足了下面这道题,使用栈来解码一个字符串。我提交了C++和python两个版本的代码,python的代码非常简洁,又一次感叹python处理字符串的强大。下面给出讨论区里面的c++和python版本对比。https://leetcode.com/problems/decode-string/submissions/https://leetcod...
2019-09-29 23:09:46
119
原创 C和C++ 你必须知道的知识点
C和C++的知识浩如烟海,但是下面的知识点是我们一定要知道的,也是面试过程中大概率会问到的。这篇文章的内容我会不定期更新。1.结构体对齐这是面试中最常问的一个问题。下面是我多年前整理的一篇文章,讲解得十分详细。http://tassardge.blog.163.com/blog/static/172301708200810955123227/2.forward、move、左值和右值...
2019-09-29 22:59:23
209
原创 ARTS 20190921 technique lambda 架构 wiki
wiki对lambda架构的解释很简明:https://en.wikipedia.org/wiki/Lambda_architecture1.数据库不覆盖已有的数据,新数据加时间戳保存;2.采用预计算+缓存的方式加速查询;3.对最新数据实时计算结果,结合缓存数据返回给用户一个实时结果。...
2019-09-22 10:37:45
109
原创 ARTS 20190921 technique: Stuff 函数的用法
https://www.w3schools.com/sql/func_sqlserver_stuff.aspSELECT STUFF('SQL Tutorial', 1, 3, 'HTML');本周学了一个小技巧:sql的stuff函数可以用来替换文本。
2019-09-21 21:00:00
151
原创 ARTS 20190921 algorithm 395. Longest Substring with At Least K Repeating Characters
今天做了一道算法题 https://leetcode.com/problems/longest-substring-with-at-least-k-repeating-characters/我的C++实现是暴力算法,思路比较简单,O(n2)算法复杂度。我看leetcode里面的讨论,下面这个思路不错,是O(n)算法复杂度。https://leetcode.com/problems/longe...
2019-09-21 20:56:22
103
原创 系统设计面试题之 怎么设计一个打分系统
上周我参加了一个面试,其中有一道系统设计题:某公司的内网有个质询系统。该公司的每个职员都可以对本公司的任何部门的任何事件提问题,并且所有的其他职员都能看到这些问题,还可以对问题打分,打分的范围是一颗星到五颗星。现在让我们来设计打分系统,不用考虑提问功能。以下是面试官给出的基本的测试用例:1.用户可以对任意一个问题评分,打分范围是一颗星到五颗星;2.公司的分析部门需要一个查询api,这个ap...
2019-07-14 17:16:18
2981
1
原创 死锁二三事
最近解了一些死锁的bug。问题代码如下:lock.enter();//do something with so much codelock.leave();然后,“do something”代码块抛出异常,导致锁没有被释放。这里的问题是上面的代码在持有锁的时候做了太多的事情,我们使用锁的原则应该是快进快出。最初,我的解决方法如下,但我后来发现就算这么实现,如果“do someth...
2019-04-22 21:23:22
161
原创 如何强制vc检查自定义函数的格式字符串是否合法
如果自定义的log函数采用类似printf的格式字符串的话,visual studio 2017没有提供编译选项检查格式是否有效。我们可以用下面的技巧强制检查。#define LOG_WRAPPER(...) mylog(__VA_ARGS__); if(false) printf(__VA_ARGS__); else;这样就可以强制VC检查格式字符串是否合法。之所以要在最后加 else;...
2019-04-14 12:13:56
166
原创 ARTS 20190329
好久没更新arts了,这次内容有点多。1.Algorithm复习了前几个月做的算法题,我觉得一道题要做至少2遍,并且要看熟,才会对这道题背后的思想有感觉。https://blog.csdn.net/tassardge/article/details/82052007https://blog.csdn.net/tassardge/article/details/82318946https:...
2019-03-29 17:32:09
123
原创 linux porting 总结(未完待续)
最近做了很多跨平台(主要是linux和windows)C++代码的移植工作,本文做一下总结。跨平台移植技术是由大量的细节构成的,所以下文包含了大量的针尖大小的细节,内容很庞杂。主要遇到以下几个类问题:1.系统api的移植windows和linux的api背后的理念是类似的,接口参数略微不一样,但是差别不大,所以完全可以使用一套接口封装。1)文件查找windows和linux文件查找ap...
2019-03-25 04:52:26
812
原创 找一个xml特殊字符在线处理的网页 xml escape/unescape
https://www.freeformatter.com/xml-escape.html
2019-03-22 16:45:51
1698
原创 ARTS 20190217
本周arts:1.Algorithm:本周继续复习前几个月做的leetcode。这道题计算一张grid里面的“岛”的个数。https://blog.csdn.net/tassardge/article/details/852125832.Review:继续读APUE的英文版。3.Technique:本周学了一个awk脚本删除字符串的小技巧。awk并不提供删除函数,所以这个技巧其实...
2019-02-17 17:34:16
97
原创 linux下各种工具以及shell经验总结
这篇文章是从我多年前的博客倒腾过来的,以后我会继续慢慢更新这篇文章。1.ls1)选项-1:所有结果显示为一列2.grep-c:只显示匹配结果的总行数grep -c "gejun" test.txt-v:不匹配选项grep -v "UHCI" test.txt显示不匹配UHCI的行cat ./test.log | grep -v 'XXX'过滤不含有XXX的文本grep t...
2019-02-17 16:53:57
691
原创 ARTS 20190209
本周arts:1.Algorithm:复习前几个月做的一道题目:bst的两个节点被调换了,怎么找到这两个节点并恢复bst?https://blog.csdn.net/tassardge/article/details/834189652.Review:本周读了一片好文章,讲解怎么用windbg分析stackoverflow的问题https://docs.microsoft.com/en...
2019-02-09 16:57:18
131
原创 ARTS 20190202
本周arts:1.Algorithm:本周继续复习前几个月做的arts题目,有两道题是关于树的遍历,另一道题是关于二维动态规划,这道题比较难。https://blog.csdn.net/tassardge/article/details/83214361https://blog.csdn.net/tassardge/article/details/83378692https://blog....
2019-02-02 17:44:09
113
原创 Crack LeetCode 之 300. Longest Increasing Subsequence
https://leetcode.com/problems/longest-increasing-subsequence/以下为C++和Python解法,时间复杂度是O(n2),空间复杂度是O(n)。本解法需要一个辅助数组nums,数组中的第i个元素表示:由0到第i个元素构成序列的最大升序序列的元素个数,然后再扫描这个数组就得到了结果。struct Solution { int len...
2018-12-23 12:02:06
97
原创 Crack LeetCode 之 200. Number of Islands
https://leetcode.com/problems/number-of-islands/本题解法的巧妙之处在于,把含有1的岛合并,这样只要统计1的个数就能知道有多少个岛。另外,本解法直接在传入的gird中保存合并结果,也节约了内存。以下为C++和python的代码,时间复杂度为O(m*n),空间复杂度为O(1)。struct Solution { int numIslan...
2018-12-22 17:10:11
116
原创 Crack LeetCode 之 15. 3Sum
https://leetcode.com/problems/3sum/3Sum实际上是对2sum的封装。这道题目里会有重复的数,所以2sum使用夹逼的方法求解。算法的时间复杂度是,空间复杂度是O(n)。以下分别为C++和Python实现。struct Solution { vector<vector<int>> threeSum(vector<int>...
2018-12-22 12:53:22
113
原创 linux进程那些事 ---- 进程基础知识杂谈
下文整理了linux进程相关的知识点,都比较实用。各个知识点可能没什么相关性,跳跃性比较强,所以我称之为“杂谈”。1.如何在linux上启动一个daemon进程?如何停止一个daemon进程?为什么要fork两次?1)linux平台上,我们应该fork父进程两次以启动一个后台服务进程。原因是为了保证daemon进程完全脱离terminal。为什么要脱离terminal呢?因为我们要避免daem...
2018-12-16 12:00:23
158
原创 Crack LeetCode 之 1. Two Sum
https://leetcode.com/problems/two-sum/基本思路是做一个hanshmap,然后迭代查询/插入这个hashmap。时间复杂度是O(n),空间复杂度也是O(n)。下文给出了C++和python的代码,python的代码非常简洁,只有7行。struct Solution { vector<int> twoSum(vector<int&...
2018-12-14 17:01:09
88
原创 Crack LeetCode 之 149. Max Points on a Line
https://leetcode.com/problems/max-points-on-a-line/这题代码比较太长不适合面试,解法参考:https://blog.csdn.net/linhuanmars/article/details/21060933
2018-12-11 15:15:47
126
原创 Crack LeetCode 之 29. Divide Two Integers
https://leetcode.com/problems/divide-two-integers/本题的O(log(n))解法请参考:https://blog.csdn.net/linhuanmars/article/details/20024907
2018-12-10 22:31:51
96
原创 Crack LeetCode 之 50. Pow(x, n)
https://leetcode.com/problems/powx-n/本题可采用二分法+递归解。以下是c++和python的代码。时间复杂度是O(log(n)),空间复杂度是O(log(n))。本题还有一种解法,就是以2为基数进行迭代,可参考:https://blog.csdn.net/linhuanmars/article/details/20092829struct Solutio...
2018-12-10 22:17:39
106
原创 怎么用牛顿法解平方根?
牛顿法求平方根的本质就是在抛物线上任取一点做切线,再把该切线与x轴的交点代入该抛物线方程又得到一根更逼近根的切线,如此迭代最终获得结果。但是牛顿法求函数根,需要该函数有二阶导数,否则牛顿法会在根附近抖动甚至越来越远。好在抛物线函数符合这个条件,所以可以安全使用牛顿迭代法。以下是我找到的两篇讲解牛顿法的文章,第一篇通俗讲解了牛顿法的思想,第二篇推导了牛顿法求平方根的公式。都是很好的文章,但是都不完...
2018-12-09 18:01:47
3320
1
原创 Crack LeetCode 之 69. Sqrt(x)
https://leetcode.com/problems/sqrtx/本题可以采用二分法和牛顿法,以下分别为C++和python实现。struct Solution { int sqrt(int x) { if (x == 0) return 0; double lastY = 0; double y = 1; while (y != lastY) { ...
2018-12-09 14:13:20
140
原创 Crack LeetCode 之 7. Reverse Integer
https://leetcode.com/problems/reverse-integer/这一题很简单,需要注意检查越界的代码。以下是C++和python的实现。struct Solution { int reverse(int x) { long long sum = 0; for (; x; x = x / 10) { sum = sum * 10 + x % 1...
2018-12-08 13:21:20
106
原创 Crack LeetCode 之 9. Palindrome Number
https://leetcode.com/problems/palindrome-number/这一题巧妙运用取余和除法运算来取十进制数字的高位和低位。之前我还想到过把数字转为字符串,然后再检查,但是这样效率比较低。以下为C++的代码和python的代码,时间复杂度是O(n),空间复杂度是O(1)。struct Solution { bool isPalindrome(int x...
2018-12-05 16:52:17
82
原创 Crack LeetCode 之 23. Merge k Sorted Lists
https://leetcode.com/problems/merge-k-sorted-lists/本题有两种解法,一是采用之前归并排序里面的merge函数把链表两辆合并;二是采用堆算法,具体参考这个链接:https://blog.csdn.net/linhuanmars/article/details/19899259解法一的时间复杂度是O(n log(n)),空间复杂度是O(1);解...
2018-12-03 13:04:42
92
原创 Crack LeetCode 之 148. Sort List
https://leetcode.com/problems/sort-list/对于链表的排序,非常适合用归并排序算法。但本题还要求只用O(1)的内存空间;如果考虑归并算法的栈的话,实际上本题的解法使用的是O(n)的内存空间。所以本题解法的时间复杂度是O(n Log(n)),空间复杂度是O(n)。其实归并排序也可以使用遍历的方法实现,每次遍历使用不同的步长即可,但是本人懒得修改了~~C++...
2018-12-01 23:22:12
94
原创 Crack LeetCode 之 124. Binary Tree Maximum Path Sum
https://leetcode.com/problems/binary-tree-maximum-path-sum/本题的难点在于每条路径可以由树中的任意两个节点相连组成,解题方法还是递归。需要注意的是递归函数的返回值不是子树的和,而是包含根节点的左子树、根节点或者包含根节点的右子树,这也是本题的递归函数和其他题目不同的地方。本题的时间复杂度是O(n),空间复杂度也是O(n)。以下是C++代...
2018-11-27 12:11:11
81
原创 Crack LeetCode 之 101. Symmetric Tree
原题链接:https://leetcode.com/problems/symmetric-tree/本题有递归和遍历两种做法,对于遍历,其实是广度优先遍历。以下分别给出了c++和python版本的实现。其实思路一旦清楚了,代码并不复杂。class Solution {public: bool isSymmetric(TreeNode* root) { if (root == NU...
2018-11-26 22:23:24
89
自己动手写操作系统(含代码)
2016-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人