自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Apache Doris在京东广告的应用

Apache Doris主要负责京东的广告平台报表业务,京东的广告平台每天支撑了千万级以上的查询量,同时每天有百亿级的增量需要维护。所有的报表级查询需要毫秒级返回数据,场景主要包括报表查询、多维分析、日志分析等。京东广告平台在京东内部支持了十余个业务线,300+报表,涵盖了270个底层数据。在使用Doris前,原有的业务系统如图所示。报表系统下对接包括MySQL、Redis以及自有系统等,...

2020-03-06 21:00:38 1269

原创 使用MAC IDEA 单步调试 Apache Doris

最近希望实现在IDEA中单步调试fe的代码,因为这样可以直观的学习doris fe中的流程。但是因为doris fe/be的结构。导致实现起来比较困难。但是可以在本地搭建一个be的server,在idea中启动fe。就可以单步调试fe模块。1.使用Doris镜像部署be: docker run -p 9060:9060 -p 9070:9070 -p 8040:8040 -p 9050:90...

2020-03-06 19:46:52 1535

转载 Apache Kylin VS Apache Doris

转凯森大神的博客:https://blog.bcmeng.com/post/apache-kylin-vs-baidu-palo.html

2020-03-05 13:47:49 455

转载 Apache Doris 基于 Bitmap的精确去重和用户行为分析

转凯森大神的博客:https://blog.bcmeng.com/post/doris-bitmap.html

2020-03-05 13:46:34 1647

原创 Apache Doris 参数配置

因为Doris文档并没有说明很多fe和be的参数的功能,所以在这里记录下,全凭个人理解,不一定准确BE:参数 默认值 doris_max_scan_key_num 1024 doris会将可枚举的类型拆分查询,比如id=5 and date>='2019-01-01' and date<='2019-01-31'的查询,doris会将其拆分成31...

2019-05-14 16:29:03 5764

原创 Apache Doris使用经验

由于近期使用了Doris,发现有一些关键点新手需要注意,故列出如下Tips。1. 建表时一定要根据数据量,以及查询时间跨度合理分区,且尽量不要使用无分区模式(Create table 时如果不分区会默认生成一个分区,且无法repartition)。Doirs在查询时,会根据时间条件选择合适的分区,会减少Scan的数据量,提升查询性能。而且使用分区在数据备份,数据删除等方面均会更方便。2.如...

2019-04-04 16:51:22 7103 1

原创 LeetCode 341. Flatten Nested List Iterator

class NestedIterator {public: NestedIterator(vector &nestedList) { ipos = 0; Serilize(nestedList); } int next() { return nums[ipos++]; } bool hasNext() {

2016-05-13 14:41:41 162 1

原创 LeetCode 338. Counting Bits

1的个数可以归纳为,num/2 中的 1的个数 加上 num%2中 1 的个数class Solution {public: vector countBits(int num) { vector vec; if(num == 0) vec.push_back(0); if(num == 1) {vec.push_back(0);vec.

2016-05-13 12:29:47 185

原创 LeetCode 342. Power of Four

这个问题,不允许使用循环和递归,那么首先想到的就是位运算。只有位运算才能满足条件。进一步的,有一个性质:如果一个数是2的幂,那么num&(num-1) == 0。我们可以根据这个性质,首先排除不是2的幂的数字。然后再分析发现,如果是4的幂,那么其中的位的1,只会出现在一个4位二进制的第1位,或者第3位。比如4(0100),16(0001,0000)。所以将数对0x55555555做与运算即

2016-05-12 16:52:43 193

原创 LeetCode 343. Integer Break

class Solution {public: int integerBreak(int n) { if (n == 2) { return 1; } if (n == 3) { return 2; } int i = (n-4)/3; int

2016-05-12 11:43:50 188

原创 LeetCode 347. Top K Frequent Elements

class Solution {public: vector topKFrequent(vector& nums, int k) { unordered_map hash; for(auto item : nums) hash[item]++; priority_queue> heap; for(auto it = hash.begi

2016-05-12 11:04:49 178

原创 LeetCode 345. Reverse Vowels of a String

class Solution {public:    string reverseVowels(string s) {    string vowels = "aeiouAEIOU";    int end = s.size()-1;    int start = 0;    while(start     while(vowels.find(s[start]) ==

2016-05-09 19:04:53 192

原创 LeetCode 209. Minimum Size Subarray Sum

class Solution {public: int minSubArrayLen(int s, vector& nums) { int mmin = numeric_limits::max(); if(nums.size() ==0 ) return 0; int start = -1,end = 0; int sum

2016-04-25 16:10:10 196

原创 LeetCode 114. Flatten Binary Tree to Linked List

class Solution {public: void flatten(TreeNode* root) { func(root); } TreeNode* func(TreeNode* root) { if(root == NULL) return root; TreeNode* right = root->right;

2016-04-21 13:37:17 188

原创 LeetCode 88. Merge Sorted Array

class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { auto it1 = nums1.begin(); auto it2 = nums2.begin(); if(n == 0) return; if(m == 0){

2016-04-21 11:57:10 196

原创 LeetCode 51. N-Queens

class Solution {public: vector> solveNQueens(int n) { use.resize(n); mmap.resize(n,vector(n)); count = 0; dfs(0,n); return ret; }private: vector use; vector>

2016-04-20 12:57:16 172

原创 LeetCode 52. N-Queens II

class Solution {public: int totalNQueens(int n) { use.resize(n); mmap.resize(n,vector(n)); count = 0; dfs(0,n); return count; }private: vector use; vector> m

2016-04-20 12:00:51 191

原创 LeetCode 153. Find Minimum in Rotated Sorted Array

class Solution { public: int findMin(vector& nums) { if(nums.size() == 1) return nums[0]; return findMinR(nums,0,nums.size()-1); } private: int findMinR(vector nums,int le

2016-04-20 11:32:13 166

原创 LeetCode 143. Reorder List

找出后半段,然后倒排链表,最后插入class Solution {public: void reorderList(ListNode* head) { int len = 0; ListNode* tmp = head; while(tmp) { tmp = tmp->next; len++; } i

2016-04-18 16:51:42 180

原创 LeetCode 134. Gas Station

暴力搜索直接跪了。转为贪心算法,因为是一个圈,所以可以把所有的花费和储备加起来,如果小于0。说明肯定没有解。class Solution {public: int canCompleteCircuit(vector& gas, vector& cost) { if(gas.size() == 0) return -1; int sum = 0; fo

2016-04-18 15:05:55 172

原创 LeetCode 14. Longest Common Prefix

class Solution {public: string longestCommonPrefix(vector& strs) { map mmap; for(int i = 0;i<strs.size();++i) { for(int j = 1;j<=strs[i].size();j++){ string temp = str

2016-04-13 12:50:19 172

原创 LeetCode 39. Combination Sum

class Solution {public: vector> combinationSum(vector& candidates, int target) { sort(candidates.begin(),candidates.end()); copy(candidates.begin(),candidates.end(),back_inserter(nums))

2016-04-13 12:16:28 52

原创 LeetCode 40. Combination Sum II

深度搜索,路径记录class Solution {public: vector> combinationSum2(vector& candidates, int target) { sort(candidates.begin(),candidates.end()); copy(candidates.begin(),candidates.end(),back_ins

2016-04-12 15:16:04 186

原创 LeetCode 164. Maximum Gap

如果想在O(n)的时间复杂度完成这道问题,需要用到桶排序的思想。学习过后,完成了这个问题。这道问题需要找到排序之后相邻的数字的差值的最大值。所以排序是一定的,那么桶排序是少有的能在O(n)的时间复杂度下完成排序的算法。但是对数据类型有限制。所以我们要完成向桶排序类型的转化。继续思考,可以发现其实排序好的数据是可以分成若干段的。这就可以符合桶排序的思想。段的划分方法:假设排序过后的最

2016-04-12 12:21:44 333

原创 LeetCode 215. Kth Largest Element in an Array

寻找第K大的数字,基本思路和快速排序一样,一趟快速排序后返回的值就是已经排好的数字的个数。如果返回值需要的个数,那么在之前的一小段中找到最大的值(因为没有像快排那样,前半的也排序)class Solution {public: int findKthLargest(vector& nums, int k) { k = nums.size() - k + 1;

2016-04-12 12:16:39 212

原创 LeetCode 205. Isomorphic Strings

class Solution {public: bool isIsomorphic(string s, string t) { if(s.size() != t.size()) return false; map mmap; for(int i=0;i<s.size();++i) { if(mmap.find(s[i]) == mmap

2016-04-11 12:20:29 156

原创 LeetCode 290. Word Pattern

class Solution {public: bool wordPattern(string pattern, string str) { vector strvec; map mmap; stringstream stringcin(str); while(stringcin >> str) strvec.push_back(str

2016-04-11 10:04:01 211

原创 LeetCode 187. Repeated DNA Sequences

这道问题因为数据量太大,如果存储字符的话,会造成内存过多。所以需要转换为位存储。因为有四个数,A,C,G,T. 那么可以分别用00,01,10,11来表示。那么就可以每次将原来的数字乘以4,再加上新数字就可以了。因为要寻找是个的字符。所以每次的最后求和过后的数字与0xFFFFF做与运算就能把最靠前的超过是个的数字去掉。class Solution {public: vecto

2016-04-09 16:31:55 207

原创 LeetCode 24. Swap Nodes in Pairs

class Solution {public: ListNode* swapPairs(ListNode* head) { bool first = true; ListNode *p,*l,*h; if(!head || !(head->next)) return head; p = head; while

2016-04-06 17:53:02 182

原创 LeetCode 213. House Robber II

class Solution {public: int rob(vector& nums) { vector dp(nums.size(),0); vector dp2(nums.size(),0); if(nums.size() == 0) return 0; if(nums.size() == 1) return num

2016-04-06 16:57:50 255

原创 LeetCode 336. Palindrome Pairs

题意:给出一个有n个单词的字典,问有多少不同的两个单词的组合使得新组合成的单词是回文串。思路:对于每个单词,从左到右遍历一遍,对于任意一个位置,如果它的左边是回文串且右边的逆序在字典中出现,那么就存在这么一种组合,同理,如果它的右边是回文串且左边的逆序在字典中出现,那么也存在这么一种组合。class Solution {public: vector> palindrome

2016-04-01 10:38:56 990 1

原创 LeetCode 107. Binary Tree Level Order Traversal II

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */clas

2016-03-30 22:45:03 239

原创 LeetCode 82. Remove Duplicates from Sorted List II

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* de

2016-03-30 22:19:18 208

原创 LeetCode 85. Maximal Rectangle

首先计算矩阵的每一行,存入二维数组mmap中,代表着从左到右到这个点为止的最大连续的1的个数为多少。然后计算mmap中存储的值,计算每一个点,以当前点为基准,向上寻找,向下寻找,寻找大于等于当前mmap点中的值,如果大于,就代表连续的1个个数大于等于当前点,那么就说明可以和当前行凑成一个矩形。最后得出最大值。class Solution {public: int maximalR

2016-03-30 16:51:05 231

原创 LeetCode 283. Move Zeroes

class Solution {public: void moveZeroes(vector& nums) { int count = 0; for(vector::iterator it = nums.begin();it!=nums.end();++it) { if(*it == 0) count++;

2016-03-19 17:21:08 185

原创 LeetCode 303. Range Sum Query - Immutable

class NumArray {private: vector dp;public: NumArray(vector &nums) { dp.resize(nums.size()); int sum = 0; for(int i = 0 ;i<nums.size();++i) { sum +

2016-03-19 15:02:03 197

原创 LeetCode 231. Power of Two

class Solution {public: bool isPowerOfTwo(int n) { if(n == 0 ) return false; int a = log(n)/log(2); if(pow(2,a) == n) return true; else return false;

2016-03-19 14:23:45 211

原创 LeetCode 299. Bulls and Cows

简单的模拟题,一个数只能用一遍,先把能匹配上的“A”找到,再找“B"class Solution {public: string getHint(string secret, string guess) { vector flag_S(secret.size(),false); vector flag_G(secret.size(),false);

2016-03-18 22:56:51 214

原创 LeetCode 27. Remove Element

class Solution {public: int removeElement(vector& nums, int val) { int count = 0; for(int i = 0;i<nums.size();i++) { if(nums[i] == val) count++

2016-03-18 22:04:36 189

原创 LeetCode 198. House Robber

简单的动态规划题目dp[i] = max((dp[i-2]+nums[i]),dp[i-1])要注意i比较小的情况class Solution {public: int rob(vector& nums) { vector dp(nums.size(),0); if(nums.size() == 0) return 0; i

2016-03-18 18:28:56 257

空空如也

空空如也

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

TA关注的人

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