- 博客(265)
- 资源 (8)
- 收藏
- 关注
原创 twproxy 配置
vi nutcracker_cache_6201.ymlbeta: listen: 0.0.0.0:8102 hash: murmur distribution: ketama auto_eject_hosts: false redis: true preconnect: true servers: - 10.20.49.223:6201:1 se...
2019-04-01 18:13:27 371
原创 redis配置
daemonize yespidfile /home/qqdz/redis/6666/pid/redis_6666.pidport 6666tcp-backlog 511timeout 0tcp-keepalive 0loglevel noticelogfile "log_6666.log"databases 4save 900 1save 300 600save 60 10...
2019-04-01 18:10:00 158
转载 红黑色-跳跃表-有序链表效率对比
原贴: https://github.com/cpp2go/rbtree_skiplist_benchmark go语言实现,红黑树用的nginx源码,跳跃表用的redis实现,map用go原生,sortlist自己实现,二分查找go test -test.bench=.*测试结果: RbTreeSkipListMapSortListNew116 ns/op169 ns/op60.1 ns/op0...
2018-04-04 00:13:28 721
原创 nginx 配置
user me;worker_processes 4;events { worker_connections 102400;}http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; keepalive_...
2018-03-19 17:00:15 169
原创 redis 主从配置
主redis配置daemonize yespidfile redis/pid/redis_6103.pidport 6103tcp-backlog 511timeout 0tcp-keepalive 0loglevel noticelogfile "log_6103.log"databases 16#save 900 1#save 300 10#save 60 10000stop-writes-o...
2018-03-19 16:53:25 172
原创 linux 服务器网路内核配置
/etc/sysctl.conf kernel.sysrq = 0kernel.core_uses_pid = 1net.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.core.netdev_max_backl...
2017-12-27 22:57:49 215
原创 关于nginx平滑均匀加权轮询算法的思考
缘起:http://blog.csdn.net/gqtcgq/article/details/52076997关于nginx算法的平滑均匀性的一点分析(只考虑两个的情况,多个的可以类比)。假设a出现的权重为M,b出现的权重为N1均匀性:把算法的操作分成两个,max操作(只有选中的才执行,执行后代价是要被减去total权重(M+N))和add操作(不管怎么选中都会执行)。对于a,
2017-12-14 21:50:24 1310
转载 进程线程以及协程
http://www.godiscoder.com/?p=521进程线程以及协程前段时间在看nodejs,主要是因为nodejs的IO处理性能非常高,号称能够同时支持上万的长连接,这个当时太让我惊讶了,主要是了解其实现原理以及设计思想。要说起这个实现原理,必须要从操作系统中最基本重要的概念——进程来开始逐步了解现代现代才做系统是如何进行程序调度的。进程是操作系统中最重要的一
2016-02-04 10:10:31 646
转载 Linux内核的进程、线程问题
Linux进程、线程问题2010年8月15日,今天研究的是Linux的进程管理,昨天是内存寻址,感慨颇深啊,《深入理解Linux内核》这本书真是浪得虚名,根本没有说到问题的本质,一些概念的由来、定义、区别以及联系,技术的原理,运行过程,整体结构,各部分衔接等等问题统统没有说明白,甚至根本没说,全书都是Linux的数据结构,及各种变量,接口函数,却根本没说是什么,为什么。对于新手来说简直是灾难,
2016-01-21 13:51:22 1903
转载 Golang适合高并发场景的原因分析
http://blog.csdn.net/ghj1976/article/details/27996095典型的两个现实案例:我们先看两个用Go做消息推送的案例实际处理能力。360消息推送的数据:16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10
2016-01-20 16:16:25 188
转载 linux 二进制 安装mysql 5.5.46
我用的是5.5.46,最后远程访问不了,要在my.cnf里屏蔽 skip-networking就可以了Ref: http://gadelkareem.com/2012/02/27/install-mysql-5-5-21-64-bit-rpm-on-centos-6-2-x86_64/http://forums.cpanel.net/f354/usr-bin-mysqladmin-co
2015-11-30 14:37:19 931
转载 C++开发者都应该使用的10个C++11特性
C++开发者都应该使用的10个C++11特性 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。 auto在C++11之前,auto关键字用来指定存
2014-10-09 18:37:48 775
转载 gdb输出stl-终结者
gdb中输出vectorWith GCC 4.1.2, to print the whole of a std::vector called myVector, do the following:print *(myVector._M_impl._M_start)@myVector.size()To print only the first N elements, do:p
2014-09-04 12:15:19 937 1
转载 Makefile与Shell的问题
大概只要知道Makefile的人,都知道Makefile可以调用Shell脚本。但是在实际使用时,并不那么简单,一些模棱两可的地方可能会让你抓狂。你若不信,可以先看几个例子,想象一下这些这些例子会打印什么内容,记下你想象的结果,然后在计算机上运行这些例子,对照看一下。 示例一:if [ "$(BUILD)" = "debug" ]; then echo
2014-09-01 11:42:23 698
原创 shell脚本 dos文件转unix 类似dos2unix命令
#! /bin/shdostype=dosIFS=$(echo -en "\n\b")function iterate_dir(){for file in $1/*; doif [ -f $file ]; thentypename=`file $file | grep -q CRLF && echo dos || echo unix`if [[ $typename ==
2014-08-28 17:48:25 4955
原创 No module named google.protobuf
01#!/bin/sh 02cd /usr/local/src03tar zxvf protobuf-2.4.1.tar.gz04cd protobuf-2.4.1 05./configure
2014-08-21 18:44:01 12471 2
转载 Linux命令pkg-config
一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的 不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用 -L 参数,也会造成连接界面的不统一。编译和连接界面不统
2014-08-21 17:39:18 4280
转载 sourceinsight建立linux源码浏览
用Source Insight建立一个Linux内核代码工程具体步骤如下:(一)打开Source Insight,单击【项目】按钮,弹出下拉菜单。(二)单击【新项目】按钮,弹出【新项目】对话框,输入项目名和存放路径,单击【确定】按钮。(三)弹出【添加删除文件】对话框,在内核源代码路径下选择全部 2.6.25内核代码,单击【关闭】按钮。(四)弹出【
2014-08-04 22:55:10 951
原创 LeetCode Word Ladder
终于憋出来了,虽说还不是特别好。没想到一点点的改动竟然是过于不过的差别就是这句:if(temp>1) break;。这题最令我为难的是我不能用unordered_set这个数据结构,原因简单的很,我用的是XP,VS是2008版的,所以操作都是基于vector的,首先就是复制到vector,这题就是找两点之间的最短距离呗,先是试了佛洛依德,后来迪杰斯克拉,后来广度优先,都没通过(要么时间要么空间),
2014-03-21 22:16:05 749
原创 LeetCode Valid Palindrome
这题感觉没什么,就是判断输入是否为数字,字符时比较麻烦,其他没啥。bool isPalindrome(string s) { int lens = s.length(); if(lens==0) return true; int i=0,j=lens-1; while(i<j) { if(s[i]<'0') { i++; continue; } if(
2014-03-16 17:26:04 618
原创 LeetCode Binary Tree Maximum Path Sum
提也不怎么难,马虎了好几次,剑指offer上有类似的找最大和,那题是找叶子节点,这题是任意的节点,反正就是求和,一样的方法。int maxPathSumRecursive(TreeNode *root,int &maxsumtoroot){ if(root==NULL) { maxsumtoroot = INT_MIN; return INT_MIN; } int leftm
2014-03-16 17:00:50 699
原创 LeetCode Best Time to Buy and Sell Stock III
这是好题,所谓的好题就是必须用优化的方法解,否则通不过。只能交易两次股票,本来想到第二题中的方法,找每个最小值最大值的差值,找两个最大的,仔细分析发现,这样的方法是错的,比如5,9,6,12,按上面的方法回提取两个最大差值,5和9,6和12,如果后面还有数,假设还是5,9,6,12,那么最大的利润值应该是两次5和12,也就是说不能选择每临近的最大值最小值的差值。接下来想到了二分法,从某一点划分开,
2014-03-16 15:23:37 727
原创 LeetCode Best Time to Buy and Sell Stock II
屡明白就行了,就是找小的,然后找大的,没找到这样一个组合就进行一次交易,把利润加到结果里,继续找。假设小数是5大数是9,对于之间出现的按序的数比如6,7,8不影响结果,因此直接略过,但对于不安续出现的比如5,8,7,9这样的话因为可以进行两次交易,这样利润会更大。int maxProfit(vector &prices) { if(prices.size()==0||prices.size(
2014-03-14 19:50:03 632
原创 LeetCode Best Time to Buy and Sell Stock
就是找后面的数减去前面的数的最大差值,做过。int maxProfit(vector &prices) { if(prices.size()==0||prices.size()==1) return 0; int maxdiff=0; int minvalue = prices[0]; for (int i=1;i<prices.size();i++) { if (price
2014-03-14 19:14:25 672
原创 LeetCode Triangle
题目得说明路径不能跨越,否则的话,每层找最小的就可以了。为什么多提交两次呢?dp[j] = (dp[j]>dp[j+1]?dp[j+1]:dp[j]) + triangle[i][j];要是条件表达式不加括号的话不可以,那样的话后面的加法就没加上。还有一点就是j从小到大遍历,否则的话会覆盖结果,正常人都会从小到大。// LeetCode_Triangle.cpp : 定义控制台应用程序的入口点
2014-03-14 18:51:46 572
原创 LeetCode Pascal's Triangle II
不让用开辟空间的话不知道怎么做,要是让开辟空间,真没什么,但是容易马虎,所有parr[j] = parr[j] + parr[j-1];用一维数组解决时都应j从大到小,否则的话会覆盖原来的值。vector getRow(int rowIndex) { vector ret; if(rowIndex<0) return ret; int *parr = new int[rowIndex
2014-03-13 22:09:48 559
原创 LeetCode Pascal's Triangle
见过无数次了,终于写了一次,一个数组都没用。vector > generate(int numRows) { vector oneresult; vector > ret; if(numRows==0) return ret; oneresult.push_back(1); ret.push_back(oneresult); oneresult.clear(); int le
2014-03-13 21:46:27 512
原创 LeetCode Populating Next Right Pointers in Each Node II
有意思,看了题意,我只想说一句:上一题的方法依然好使,我只把64改成640就提交通过了。我却迷惑了,任意的二叉树640层完全不够用呀,1000层,10000层也有可能呀,难道还有什么更好的方法吗?TreeLinkNode* layers[640];void preOrderLayer(TreeLinkNode *root,int layer)//,TreeLinkNode *&layers
2014-03-13 20:59:31 569
原创 LeetCode Populating Next Right Pointers in Each Node
这题很有新意,刚开始想到后序遍历,可是对于给的例子5和6之间怎么连接呢?无论怎么遍历5和6之间都隔好几个数,递归引用传参数的方法肯定不行,题中又说常量的空间,对于完全二叉树最多也不过64层吧,所以每一层设定一个指针用于建立连接。传递指针数组不太容易,用了全局变量解决。如下:// LeetCode_PopulatingNextRightPointers.cpp : 定义控制台应用程序的入口点。
2014-03-13 20:53:38 567
原创 LeetCode Distinct Subsequences
这题有有意思,比前面的题好多了,刚开始时理解题意有误,就是没明白什么意思,看了别人的博客才明白。之后就是方法的问题,递归,动态规划,然后是动态规划的优化,不优化的动态规划不通过。所谓的优化,其实就是用一维数组代替DP的二维数组,dp式子dp[i][j]=dp[i-1][j-1]+dp[i-1][j](S[i]==T[j])时;dp[i][j]=dp[i-1][j](S[i]!=T[j])时;只要是
2014-03-13 20:14:19 574
原创 LeetCode Flatten Binary Tree to Linked List
这题还算有点意思,有意思的地方就是虽说是按先序遍历的方式连接的,却不能按先序的方式遍历(这样的话递归时会改变树的结构,导致找不到后面的节点),于是按照先序相反的方式遍历(注意,这可不是后序遍历),程序是写出来了,问什么多提交了几次,我理解成的双向链表了,结果居然提示时间超时,看看别人的程序才知道自己错哪了。void flattenRecursive(TreeNode *root,TreeNod
2014-03-11 21:24:49 574
原创 LeetCode Path Sum II
没什么新意,就是在遍历到叶子节点的时候把一个结果存入结果集中,注意恢复临时结果。void pathSumRecursive(TreeNode *root,int sum,vector &oneresult,vector > &ret){ if (root->left==NULL&&root->right!=NULL) { oneresult.push_back(root->val);
2014-03-11 19:39:47 619
原创 LeetCode Path Sum
做这题感觉像大妈在菜市场买菜唠唠叨叨,没什么技术含量,感觉有点烦。bool hasPathSum(TreeNode *root, int sum) { if(root==NULL) return false; if (root->left==NULL&&root->right!=NULL) { return hasPathSum(root->right,sum - root->v
2014-03-11 19:26:44 485
原创 LeetCode Minimum Depth of Binary Tree
没什么难度的,刚开始又马虎了。。。int minDepth(TreeNode *root) { if(root==NULL) return 0; if (root->left==NULL&&root->right!=NULL) { return minDepth(root->right)+1; } else { if (root->left!=NULL&&root->r
2014-03-11 19:08:40 504
原创 LeetCode Balanced Binary Tree
剑指offer上的题目,马虎了多提交了两次。bool isBalancedRecursive(TreeNode *root,int &lenth){ if(root==NULL) { lenth = 0; return true; } int leftlenth,rightlenth; if (isBalancedRecursive(root->left,leftlenth
2014-03-11 18:54:45 575
原创 LeetCode Convert Sorted List to Binary Search Tree
这题刚开始的做法是把链表中的元素放到数组,然后按照上一题的做法,结果出现内存不够用而通不过,再想想,和上题相似,对链表递归操作,每次找到中间位置就行了,只不过时间复杂度增加了点,但对于链表这不可避免的。如下:TreeNode *resusiveListToBST(ListNode *head,int num) { if(head==NULL||num<=0) return NULL;
2014-03-10 22:10:27 507
程序员面试题精选100题.doc
2013-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人