自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈鹏万里

让代码飞~

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

原创 博客已迁移到 https://imroc.io

以后不在CSDN博客更新了,新博客地址:http://www.jianshu.com/u/72d7de0c62af

2017-09-03 15:22:05 1416

原创 Centos7 快速安装Docker

换更快的软件源(可选):sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupsudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.reposudo yum makec

2017-09-02 20:31:24 750

原创 Docker中CMD与ENTRYPOINT的简明理解

CMD提供容器启动的默认行为,运行不指定运行的命令及参数,会默认执行CMD中的。例如hello镜像的Dockerfile中有 CMD ["echo","'hello world'"]执行 docker run hello,输出hello world执行 docker run hello /bin/sh -c "shit" 则会覆盖CMD中所有的东西,输出shitENTRYPOINT让容器可以当

2017-09-02 20:16:40 2342

原创 docker logs

作用是用来查看容器里面运行程序的输出,经常用的例子: 1. 输出全部: docker logs container_name 2. 输出最新几行: docker logs --tail 20 container_name 3. 持续输出(类似tail -f): docker logs -f container_name

2017-09-02 20:01:35 1911

原创 单体应用缺陷与微服务特点

单体应用(All in one) 程序缺陷1. 先天性缺陷:难以分布式部署和扩容2. 系统性风险:一个组件的缺陷导致真个进程崩溃3. 运维风险:系统升级、Bug修复、故障排查存在风险4. 难以可持续发展:业务范围拓展后,难以复用原有的服务,又要重新开发微服务特点1. 先天分布式:每个微服务能独立部署和提供服务,通常部署多个实例2. 无状态:微服务基本都是无状态服务,容易平滑扩容3. 积木

2017-07-08 17:30:22 1176

原创 Docker学习笔记:容器间通信

容器每次启动时会分配个一个IP地址,这个IP地址只在宿主主机内部有用,其它主机上的程序无法访问此IP。一台机器上的docker容器之间默认是可以通过分配的IP进行通信的,可以通过启动参数 -icc=false —iptables=true 来关闭互通,严格隔离以提高安全性3.虽然每次启动分配的IP可能会变,但启动时加类似 —link redis:db 这样的参数给容器起别名,可以起到DNS作用,

2017-07-08 17:25:44 1167

原创 golang动态规划求解最大连续子数组和

// 求最大连续子数组和func MaxSubArray(arr []int) int { currSum := 0 maxSum := arr[0] for _, v := range arr { if currSum > 0 { currSum += v } else { currSum =

2017-05-15 16:17:25 1184

原创 求n次方的高效算法

**注:**次幂n为整数,底数可以是整数、小数、矩阵等(只要能进行乘法运算的 举个求整数的n次方的例子(Go语言版):``` gofunc pow(x, n int) int { ret := 1 // 结果初始为0次方的值,整数0次方为1。如果是矩阵,则为单元矩阵。 for n != 0 { if n%2 != 0 { ret = ret * x } n /= 2 x = x *

2017-04-22 00:30:29 10329

原创 docker搭建私有仓库v2(Private Registry v2),自签发证书、公网访问、登录认证

如果不用自签发的证书,直接照着官方的步骤做就是了,已经很直白,但是如果需要用自签发的证书,稍微就比较麻烦,特别在用mac版的docker的时候有点坑,不过最后还是搭建成功了,现来分享下经验。假设registry的域名准备用hub.domain.com(后面出现它的地方均替换为你自己要用的域名),先ssh登录服务器,执行下面的步骤: 1. 先生成自签发证书,执行下面的命令:mkdir -p cert

2017-04-06 22:24:17 5127 1

原创 Go语言(golang)包设计哲学/原则与项目结构组织最佳实践

总结下Go的package设计哲学明确目的 在准备设计一个包之前,我们需要明确它的目的。包的命名就必须明确体现其目的,而不仅仅是为了存放代码。像标准库的io,http,fmt这些包名就很好,而像util.helper,common这种命名就是反面教材。可用性 想想使用这个包的人真正的需求,包的使用一定要直观、简单。在不断迭代开发、优化、完善的时候,不能让引用这个的程序出错。防止出现需要

2017-04-02 21:24:38 4799

原创 leetcode 367. Valid Perfect Square(golang解题)

Given a positive integer num, write a function which returns True if num is a perfect square else False.Note: Do not use any built-in library function such as sqrt.Example 1:Input: 16Return

2017-03-12 23:04:58 1108

原创 Go语言技巧:使用for range time.Tick()固定间隔时间执行

直接上代码,比如每隔30ms重绘界面:for range time.Tick(30 * time.Millisecond) { repaint()}因为time.Tick()返回的是一个channel,每隔指定的时间会有数据从channel中出来,for range不仅能遍历map,slice,array还能取出channel中数据,range前面可以不用变量接收,所以可以简写成上面的形式

2017-02-23 23:40:53 8731

原创 Go语言技巧:使用select{}阻塞main函数

很多时候我们需要让main函数不退出,让它在后台一直执行,例如:func main() { for i := 0; i < 20; i++ { //启动20个协程处理消息队列中的消息 c := consumer.New() go c.Start() } select {} // 阻塞}可能大多数人想到阻塞的方法是用channel,当然都是可以

2017-02-23 22:59:42 13333 3

原创 解决Mac下tmux不能访问剪贴板

解决Mac下tmux不能访问剪贴板我用macOS+iTerm2+tmux+neovim做开发,在neovim中想从系统剪贴板粘贴或复制到系统剪贴板的时候提示 clipboard error,后来知道原来是macOS剪贴板服务机制的问题,有个开源项目解决了这个问题:https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard操作很简单,命令行执行:bre

2016-12-14 15:30:26 3842

原创 vim移动、定位命令与快捷键速查表(简练通俗)

光标位置移动(方向) 位置 键 使用频率 左 h ★★★★★★ 下 j ★★★★★★ 上 k ★★★★★★ 右 l ★★★★★★注:也可用小键盘区的方向键移动光标方向,但不建议,因为离得太远了光标位置移动(行) 位置 键 使用频率 首行 gg ★★★★☆ 末行 G ★★★★☆ 第{n}行 {n}G

2016-11-19 11:38:06 8147

原创 解决Jetbrains的开发工具不能运行或调试(run/debug)go/golang程序[Intellj Idea,Webstorm,PyCharm,PhpStrom,Android Studio]

Go插件首先确保装了go插件:Files-Settings-Plugins-Browse repositories,搜索Go,然后Install设置Project SDK需要给你打开的项目设置一个Go的SDK它才能辨别这是Go的项目,如果没设置请先设置:File-Project Structure,选择Go的SDK,如果还没添加就New一个 设置完后根据提示Reload一下Run packag

2016-09-29 10:24:47 16316

原创 golang(Go语言) byte/[]byte 与 二进制形式字符串 互转

效果把某个字节或字节数组转换成字符串01的形式,一个字节用8个”0”或”1”字符表示。比如: byte(3) –> “00000011” []byte{1,2,3} –> “[00000001 00000010 00000011]” “[00000011 10000000]” –> []byte{0x3, 0x80}开源库 biu实际上我已经将其封装到一个开源库了(biu),其中的一个功能就能

2016-09-28 20:03:49 54596

原创 解决ubuntu打不开软件更新器和软件中心的问题

打不开可能是软件源的问题,试试:sudo gedit /etc/apt/sources.list然后把第三方软件源全部删除掉,重启软件更新器. 如果能够启动,但有提示请检查网络连接的信息,那么点设置,在其它软件选项卡看情况取消勾选一些软件源,可以先只保留Canonical合作伙伴试试:然后切换到Ubuntu软件选项卡,勾选可从互联网下载的一些勾选框: 下载自-其它站点-选择最佳服务器: 等待几

2016-08-05 09:41:26 44949 5

原创 求两圆交点算法代码实现(Golang/Go语言)

数学求解原理请看:http://blog.csdn.net/qq245671051/article/details/52017403下面是golang代码实现:package mainimport ( "math")//代表一个点,包含横纵坐标type Point struct { X, Y float64}//代表一个圆,包含横纵坐标及半径

2016-07-25 15:10:56 1643

原创 求两圆相交的交点的方法

最近研究三角定位算法,研究了下怎样求两圆的交点,现给出求解方法:

2016-07-25 00:02:30 12990 3

原创 解决Jetbrains旗下产品的插件下载失败问题(IntelliJ IDEA、RubyMine、WebStorm、PhpStorm、PyCharm、AppCode、Android Studio等)

自己在用Idea装go语言插件的时候,几乎每次都下载失败,下载速度很慢,而且中途的时候就中断了,又没有断点续传功能,重新开始下还是会中途断掉。解决办法其实很简单,进入Jetbrains官方插件仓库地址:https://plugins.jetbrains.com选择你所用的开发工具,然后在左上角搜索框搜索你需要的插件:比如我想要go语言的插件,输入go,再点击Go:

2016-07-22 21:38:18 33752 1

原创 Golang二叉查找树

为简单起见,键值均为整型。定义接口(tree.go):type Tree interface { Put(k, v int) //新增或修改 Get(k int) int //查询 Delete(k int) //删除 Size() int //树的大小 Min() int //最小键 DeleteMin() //删除最小键}二叉查找树(

2016-03-07 20:44:50 1009

原创 算法代码实现之二分法查找,C/C++实现

封装成函数://二分法查找//数组a是升序的,len为数组长度//k为待查找的整数//如果查到有就返回对应角标,//没有就返回-1int search(int *a,int len, int k){ int lo = 0, hi = len - 1; while (lo <= hi) { int m = (lo + hi) >> 1;

2016-03-03 18:52:58 1804

原创 算法代码实现之二分法查找,Java实现

封装成类:package com.roc.algorithms.search;/** * 二分法查找 * * @author roc */public class BinarySearch { /** * @param a 升序排列的数组 * @param k 待查找的整数 * @return 如果查到有就返回对应角标,没有就返回-1

2016-03-03 18:46:39 2450

原创 算法代码实现之二分法查找,Golang(Go语言)实现

封装成函数://二分法查找//切片s是升序的//k为待查找的整数//如果查到有就返回对应角标,//没有就返回-1func BinarySearch(s []int, k int) int { lo, hi := 0, len(s)-1 for lo hi { m := (lo + hi) >> 1 if s[m] k { lo = m + 1 } else if s[m]

2016-03-03 18:40:02 2690

原创 算法代码实现之选出第k小元素、中位数、最小的k个元素(线性复杂度),C/C++实现

封装成函数:#include void swap(int *a,int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}int partition(int *a,int lo,int hi){ int i,j; i=lo; j=hi+1; while(1) {

2016-03-03 12:39:33 1123

原创 算法代码实现之选出第k小元素、中位数、最小的k个元素(线性复杂度),Java实现

封装成类:package com.roc.algorithms.common;import java.util.Arrays;/** * 选出第k小元素、中位数、最小的k个元素(线性复杂度) * * @author roc */public class Select { //选出第k小元素,k为1~a.length public static int se

2016-03-03 12:14:49 2990

原创 算法代码实现之选出第k小元素、中位数、最小的k个元素(线性复杂度),Golang(Go语言)实现

封装成函数://选出第k小元素,k为1~len(s)func SelectKthMin(s []int, k int) int { k-- lo, hi := 0, len(s)-1 for { j := partition(s, lo, hi) if j k { lo = j + 1 } else if j > k { hi = j - 1 } else { r

2016-03-02 21:25:48 1249

原创 算法代码实现之堆排序,C/C++实现

封装成函数://交换数组元素void swap(int *a,int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}//下沉(由上至下的堆有序化)void sink(int *a,int k,int N){ while (1) { int i = 2 * k; i

2016-03-01 21:03:58 890

原创 算法代码实现之堆排序,Java实现

封装成类:package com.roc.algorithms.sort;/** * 堆排序 * a[0]不用,实际元素从角标1开始 * 父节点元素大于子节点元素 * 左子节点角标为2*k * 右子节点角标为2*k+1 * 父节点角标为k/2 * * @author roc */public class HeapSort { public static voi

2016-03-01 20:52:25 541

原创 算法代码实现之堆排序,Golang(Go语言)实现

封装成函数://堆排序//s[0]不用,实际元素从角标1开始//父节点元素大于子节点元素//左子节点角标为2*k//右子节点角标为2*k+1//父节点角标为k/2func HeapSort(s []int) { N := len(s) - 1 //s[0]不用,实际元素数量和最后一个元素的角标都为N //构造堆 //如果给两个已构造好的堆添加一个共同父节点, //将新添加的节点作一次下

2016-03-01 20:41:33 2265 2

原创 算法代码实现之三向切分快速排序,C/C++实现

封装成函数://交换数组元素void swap(int *a,int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}//在lt之前的(lo~lt-1)都小于中间值//在gt之前的(gt+1~hi)都大于中间值//在lt~i-1的都等于中间值//在i~gt的都还不确定(最终i会大于gt,即不确定的将不复存在)

2016-02-29 22:08:48 804

原创 算法代码实现之三向切分快速排序,Java实现

封装成类:package com.roc.algorithms.sort;/** * 三向切分快速排序 * 适合有较多重复元素的排序算法 * * @author roc */public class ThreeWayQuickSort { public static void sort(int[] a) { sort(a, 0, a.length -

2016-02-29 21:46:54 1711

原创 算法代码实现之三向切分快速排序,Golang(Go语言)实现

封装成函数://三向切分快速排序func ThreeWayQuickSort(s []int) { sort3way(s, 0, len(s)-1)} //在lt之前的(lo~lt-1)都小于中间值//在gt之前的(gt+1~hi)都大于中间值//在lt~i-1的都等于中间值//在i~gt的都还不确定(最终i会大于gt,即不确定的将不复存在)func sort3way(s []int,

2016-02-29 21:34:47 990

原创 算法代码实现之快速排序,C/C++实现

封装成函数://快速排序void quick_sort(int *a,int len){ sort(a,0,len-1);}void sort(int *a,int lo,int hi){ int i,j,k; if(lo>=hi) { return; } k = partition(a,lo,hi); sort

2016-02-29 19:49:15 563

原创 算法代码实现之快速排序,Java实现

封装成类:package com.roc.algorithms.sort;/** * 快速排序 * * @author roc */public class QuickSort { public static void sort(int[] a) { sort(a, 0, a.length - 1); } private static vo

2016-02-29 19:34:32 645

原创 算法代码实现之快速排序,Golang(Go语言)实现

封装成函数://快速排序func QuickSort(s []int) { sort(s, 0, len(s)-1)} func sort(s []int, lo, hi int) { if lo >= hi { return } k := partition(s, lo, hi) sort(s, lo, k) sort(s, k+1, hi)} func partition(s [

2016-02-29 19:18:33 1181

原创 算法代码实现之Union-Find,C++实现,quick-find、quick-union、加权quick-union(附带路径压缩优化)

本算法主要解决动态连通性一类问题,这里尽量用精炼简洁的话来阐述。数据结构描述:有N个节点(索引0~N-1),可以查询节点数量可以连接两个节点可以查询两个节点是否连通算法大致设计思路:每个节点初始化为不同的整数标记通过一个辅助函数查询某个节点的标记值如果两节点标记相同,说明两节点是连通的抽象基类:class UnionFind{public:

2016-02-29 09:49:08 2669

原创 算法代码实现之归并排序,Java实现,自顶向下与自底向上两种方式

封装成类:package com.roc.algorithms.sort;/** * 归并排序 * * @author roc */public class MergeSort { //自顶向下方式 public static void sortUpToDown(int[] a) { int[] aux = new int[a.length];

2016-02-28 22:18:43 1493

原创 算法代码实现之归并排序,C/C++实现,自顶向下与自底向上两种方式

封装成函数merge_sort_up_to_down(自顶向下方式)和merge_sort_down_to_up(自底向上方式):#include //归并操作void merge(int *a,int *aux,int lo,int mid,int hi){ int i,j,k; for(k=lo; k<=hi; k++) { aux[k] =

2016-02-28 22:05:53 2521

搭建Spring4+Spring MVC web工程的最佳实践 源码.zip

Spring是个非常非常非常优秀的java框架,主要是用它的IOC容器帮我们依赖注入和管理一些程序中的Bean组件,实现低耦合关联,最终提高系统可扩展性和可维护性,用它来辅助我们构建web工程将会感觉非常非常非常地愉悦。 Spring旗下的Spring MVC又是后来居上,设计得非常非常非常的优雅,可以用来替代Struts来做界面视图的控制(Controller)等。 现在我们就来搭建一个利用Spring和Spring MVC结合的web工程最佳实践的例子。以Spring Framework 4.2.0为例,IDE为Myeclipse。

2015-08-02

空空如也

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

TA关注的人

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