- 博客(403)
- 资源 (11)
- 收藏
- 关注
原创 《关键跨越:从业务高手到优秀主管》:最大化团队产出
失控最鲜明的特征之一是管理者工作的时间越来越长,但结果越来越糟。很多新手管理者看到下属无法完成任务,或者担心出错,对下属不放心,出于对效率和成果的考量,会索性选择自己上手干。管理者事必躬亲,在执行性工作上投入大量时间,会渐渐发现自己每天都有做不完的事情。本书重点介绍的是从“管理自我”到“管理他人”的关键跨越,也是刚开始做管理工作的新手管理者需要具备的关键能力。旨在帮助新手管理者:第一,聚焦发展目标;第二,简化发展路径;
2023-08-30 20:43:04 361
原创 Redis 对象
在中我们介绍了Redis用到的所有主要数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。
2022-12-21 20:58:41 677 1
原创 Redis 底层数据结构
根据BGSAVE命令或BGREWRITEAOF命令是否正在执行,服务器执行扩展操作所需的负载因子并不相同,这是因为在执行BGSAVE命令或BGREWRITEAOF命令的过程中,Redis需要创建当前服务器进程的子进程,而大多数操作系统都采用写时复制(copy-on-write)技术来优化子进程的使用效率,所以在子进程存在期间,服务器会提高执行扩展操作所需的负载因子,从而尽可能地避免在子进程存在期间进行哈希表扩展操作,这可以避免不必要的内存写入操作,最大限度地节约内存。
2022-12-12 23:41:07 654
原创 给程序员的职场建议
我是一位在大厂打拼多年的程序员,今天想结合自己的工作经历给初入职场的程序员们提出若干建议,希望能够在一定程度上帮助大家在职场脱颖而出。
2022-12-10 14:14:59 2457 1
原创 程序员做需求时容易忽视的若干问题
程序员大部分时间都在承接一个个的需求,在做需求的过程中,有一些问题是我们容易忽视的,究其原因,主要是在做需求的过程中缺少思考,或者思考不够全面。而思考的缺失,正是导致部分人所说的“做业务需求没有成长”的主要原因之一。今天主要从研发流程中重要的几个阶段出发,跟大家谈谈做需求的过程中有哪些是我们容易忽视的问题。
2022-12-10 14:06:01 1082
原创 Docker之容器使用
文章目录容器使用获取镜像启动容器:启动已停止运行的容器启动已停止运行的容器后台运行停止一个容器进入容器导出和导入容器导出容器导入容器容器使用获取镜像$ docker pull ubuntu启动容器:$ docker run -it ubuntu /bin/bash# 要退出终端,直接输入 exit启动已停止运行的容器$ docker ps -a启动已停止运行的容器$ do...
2020-01-12 22:31:12 481
原创 SO_REUSEADDR & SO_REUSEPORT
SO_REUSEADDR当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。SO_REUSEADDR允许同一port上启动同一服务器的多个实例(多个进程)。但每个实例绑定的IP地址是不能相同的。在有多块网卡或用IP Alias技术的机器可以测试这种情况。SO_REUSEADDR允许单个进程绑定...
2020-01-07 18:37:52 1051
原创 Go1.13标准库http包重大bug
2019年11月21日,golang的官方github仓库提交了一个https://github.com/golang/go/issues/35750,该issue指出如果初始化 http.Server 结构体时指定了一个非空的 ConnContext 成员函数,且如果在该函数内使用了 context.Value 方法写入数据到上下文并返回,则 Context 将会以链表的方式泄漏。据官方开发人...
2019-12-17 22:15:03 1214
原创 Git常用操作总结
文章目录修改最近一次的提交取消最近一次提交合并其他分支的某一次commit用 `rebase -i` 修改提交用`rebase -i`汇合提交用 `git rebase` 合并分支用`git merge -–squash`合并分支修改最近一次的提交# 修改你的代码$ git add .$ git commit --amend取消最近一次提交# 正常的写代码$ git aad .$...
2019-11-21 23:03:53 797
原创 JSON Web Token入门手册
文章目录跨域认证问题什么是JWT?JWT 的原理JWT 的使用场景JWT 的数据结构HeaderPayloadSignatureJWT 的使用方式JWT 的几个特点跨域认证问题互联网服务离不开用户认证。一般流程是下面这样:用户向服务器发送用户名和密码。服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。服务器向用户返回一个 session_id,...
2019-11-21 22:03:25 523
原创 Consul入门手册
文章目录Consul是什么?基本架构安装Consul运行Agent启动Agent集群成员停止Agent注册服务定义一个服务查询服务DNS APIHTTP API更新服务Consul是什么?Consul是一个服务发现和配置工具,它是分布式和高可用的,而且极易扩展。Consul主要提供了以下特性:服务发现:Consul使得服务注册和服务发现(通过DNS或HTTP接口)变得非常简单。健康检查...
2019-11-20 22:46:49 1000
原创 Kubernetes概述
文章目录Kubernetes 简介Kubernetes 是一个平台Kubernetes 不是什么核心组件Kubernetes 基本概念ContainerPodNodeNamespaceServiceLabelAnnotationsKubernetes 简介Kubernetes 是谷歌开源的容器集群管理系统,是 Google 多年大规模容器管理技术 Borg 的开源版本,主要功能包括:基于容...
2019-11-18 23:02:19 491
原创 云原生Cloud Native概述
云原生的定义云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。云原生的设计哲学云原生本身甚至不能称为是一种架构,它首先是一种基础设施,...
2019-11-17 22:40:50 1134 1
原创 Service Mesh概述
文章目录什么是服务网格?服务网格的特点理解服务网格为何使用服务网格?服务网格架构服务网格的实现模式Istio 架构解析从边车模式到 Service Mesh什么是边车模式边车模式设计边车模式解决了什么问题从边车模式到 Service MeshKubernetes vs Service Mesh什么是服务网格?服务网格是用于处理服务间通信的专用基础设施层。它负责通过包含现代云原生应用程序的复杂服...
2019-11-16 23:54:31 608
原创 API网关概述
API网关接收客户端的所有请求,并将请求路由到相应的后端服务,并提供接口聚合和协议转换。通常来说,API网关通过调用多个后端服务,并聚合结果的方式处理请求。它可将web协议转化为非web的内部后台协议。
2019-10-13 13:02:18 1064
原创 Caffe 运行平台支持DenseNet模型
文章目录1 集成DenseNet的报错信息2 caffe源码分析及修改2.1 pooling层源码分析2.2 caffe源码修改3 总结在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如GoogLenet、VGG-19、Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核...
2019-03-23 23:39:22 1167
原创 RSA加密解密及制作软件license
1 RSA算法倘若在加解密信息的过程中,能让加密密钥(公钥)与解密密钥(私钥)不同,即:甲要传密信给乙,乙先根据某种算法得出本次与甲通信的公钥与私钥;乙将公钥传给甲(公钥可以让任何人知道,即使泄露也没有任何关系);甲使用乙传给的公钥加密要发送的信息原文m,发送给乙密文c;乙使用自己的私钥解密密文c,得到信息原文m。就可以很好的克服对称加密算法的弱点,这种新的加密模式被称为“非对称加...
2019-03-16 15:45:53 5077
原创 Docker之镜像使用
获取镜像用法:$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]例如:docker pull ubuntu:18.04启动容器$ docker run -it --rm ubuntu:18.04 bash简要的说明一下上面用到的参数:-it:这是两个参数,一个是 -i表示交互式操作,一个是-t表示终端。我们这里打算进入 bash 执行一些命令并...
2018-12-27 00:00:30 1586
原创 CentOS安装docker
移除旧的版本:sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ dock...
2018-12-24 22:39:27 936 1
原创 Caffe SSD编译、训练及测试
SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征以用于检测。SSD的网络结构如上图所示(上面是SSD模型,下面是Yolo模型),可以明显看到SSD利用了多尺度的特征图做检测。安装clone代码(假设代码clone到$CAFFE_ROOT目录)。git clone https://github.com/weiliu89/caffe.gitcd ca...
2018-11-25 23:10:07 2918
原创 Caffe 运行平台支持DSSD模型
DSSD源码在https://github.com/chengyangfu/caffe/tree/dssd,在cuda9环境下编译,首先把Makefile.config里面的USE_CUDNN := 1开关打开,编译报如下的错:make: *** [.build_release/src/caffe/layers/multibox_loss_layer.o] Error 1In file inc...
2018-11-08 22:26:12 1022
原创 Caffe nvcc编译问题:Unsupported gpu architecture
最近学习DSSD,从https://github.com/chengyangfu/caffe/tree/dssd下载源码后编译报错:Unsupported gpu architecture 'compute_20',具体如下:CXX src/caffe/util/db.cppCXX src/caffe/util/benchmark.cppCXX src/caffe/util/im2col.c...
2018-11-05 21:43:12 3229
原创 cat less more head tail命令比较
linux查看文件内容常用命令有:cat、more、less、head、tail等。主要区别cat命令可以一次显示整个文件,如果文件比较大,使用不是很方便;more命令可以让屏幕在显示满一屏幕时暂停,按空格往前翻页,按b往后翻页。less命令也可以分页显示文件,和more命令的区别就在于: 支持上下键卷动屏幕、查找。不需要在一开始就读取整个文件,打开大文件时比more、vim更快...
2018-09-09 14:09:09 1575
原创 SSH交互式脚本StrictHostKeyChecking选项
SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查。什么是SSH公钥检查SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机:The authenticity of host '10.0....
2018-09-05 15:52:22 2654
原创 [Golang] 分布式id生成算法SnowFlake
SnowFlake算法是一种以划分命名空间来生成ID的一种算法,生成id的结果是一个64bit大小的整数。优点:毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的。可以根据自身业务特性分配bit位,非常灵活。缺点:强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态...
2018-06-20 21:38:30 1754
原创 ctags使用详解
ctags的功能:扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来。查看ctags支持的语言ctags --list-languages查看语言和扩展名的对应关系ctags --list-maps查看ctags可以识别和记录的语法元素ctags --list-kinds单独查看可以识别的C++的语法元素:[chuxi...
2018-05-15 21:26:54 61403 3
原创 Shell入门教程[2]
Shell 流程控制if elseifif elseif else-if elsefor 循环while 语句case跳出循环break命令continue命令esacShell 函数函数参数Shell 输入/输出重定向重定向深入讲解Here Document/dev/null 文件Shell 文件包含Shell 流程...
2018-05-13 16:14:42 685
原创 Shell入门教程[1]
Shell 环境第一个shell脚本:运行 Shell 脚本有两种方法:Shell 变量定义变量使用变量只读变量删除变量变量类型Shell 字符串单引号双引号拼接字符串获取字符串长度提取子字符串查找子字符串Shell 数组定义数组读取数组获取数组的长度Shell 注释Shell 传递参数实例Shell运算符算术运算符关系运算...
2018-05-13 16:11:58 1256
原创 读写HDFS的三种方式
1 HttpFSAuthenticator.setDefault(new MyAuthenticator());URL url = new URL("http://dev.test.com:14000/webhdfs/v1/tmp/test?op=OPEN");InputStream ins = url.openConnection().getInputStream();Buffered...
2018-05-03 15:33:00 3315
原创 Linux文件传输的三种方式
1 命令执行如下命令,在目标机器(假设ip为10.11.12.13)上监听端口8415 nc -l 8415 > data.txt往目标机器发送数据 nc -v 10.11.12.13 8415 < ~/Downloads/data.txt2 SimpleHTTPServer在服务器(假设ip为10.11.12.13)上执行如下命令: python -m S...
2018-05-03 15:09:22 2060
原创 vim常用命令总结
本文主要作为对博文《vim编辑器使用》的补充。1. vim复制单行复制:将光标移动到将要复制的行处,按”yy”进行复制;多行复制:按”nyy”复制n行;其中n为1、2、3……粘贴:将光标移动到将要粘贴的行处,按”p”进行粘贴2. vim删除行把光标移动到要复制的位置,按dd3. 显示行号:输入:set nu3. 移动光标ctrl+u:到文件头...
2018-03-29 21:20:48 611
原创 常用hadoop dfs命令
创建目录hadoop dfs -mkdir /home上传文件或目录到hdfshadoop dfs -put hello /hadoop dfs -put hellodir/ /查看目录hadoop dfs -ls /创建一个空文件hadoop dfs -touchz /361way删除一个文件hadoop dfs -rm /361way...
2018-03-29 21:14:45 8552 1
原创 Hadoop环境搭建详解
Hadoop部署模式有:本地模式、伪分布模式、完全分布式模式、HA完全分布式模式。区分的依据是NameNode、DataNode、ResourceManager、NodeManager等模块运行在几个JVM进程、几个机器。 模式名称 各个模块占用的JVM进程数 各个模块运行在几个机器数上 本地模式 1个 1个 伪分布式模式 N个 1个...
2018-03-29 21:02:26 6020
原创 浅谈Bloom Filter基本原理及使用方式
一提到元素查找,我们会很自然的想到HashMap。通过将哈希函数作用于key上,我们得到了哈希值,基于哈希值我们可以去表里的相应位置获取对应的数据。除了存在哈希冲突问题之外,HashMap一个很大的问题就是空间效率低。引入Bloom Filter则可以很好的解决空间效率的问题。原理Bloom Filter是一种空间效率很高的随机数据结构,Bloom filter 可以看做是对bit-map
2018-02-02 20:40:05 6947
原创 ThreadPoolTaskExecutor使用详解
当我们需要实现并发、异步等操作时,通常都会使用到ThreadPoolTaskExecutor,现对其使用进行介绍。配置ThreadPoolTaskExecutor通常通过XML方式配置,或者通过Executors的工厂方法进行配置。
2017-09-23 20:15:30 79170 3
原创 Douglas-Peucker压缩算法
Douglas-Peucker算法(道格拉斯-普克算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法。它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定。Douglas—Peucker算法通常用于线状矢量数据压缩、轨迹数据压缩等。算法步骤连接曲线首尾两点A、B形成一条直线AB;计算曲线上离该直线段距离最大的点C,计算其与AB的距离d;比较该距离与预先给定的阈值thresho
2017-09-22 20:24:59 9987
原创 高并发服务设计——缓存
缓存回收策略1 基于空间即设置缓存的存储空间,如设置为10MB,当达到存储空间时,按照一定的策略移除数据。2 基于容量基于容量指缓存设置了最大大小,当缓存的条目超过最大大小,则按照一定的策略将旧数据移除。3 基于时间TTL(Time To Live):存活期,即缓存数据从缓存中创建时间开始直到它到期的一个时间段(不管在这个时间段内有没有访问都将过期)。TTI(Time To Idle):空闲期,即缓
2017-09-17 18:34:29 3186 1
原创 高可用服务设计概述[2]
3 限流在开发高并发系统时,有很多手段保护系统,比如缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力,可谓是抗高并发的银弹。而降级是当服务出问题或者影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开的场景。而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页)等。因此,需要有一种手段来限制这些场景下的
2017-09-17 17:21:34 1132
原创 高可用服务设计概述[1]
Nginx提供的负载均衡机制可以实现服务器的负载均衡、故障转移、失败重试、容错、健康检查等,当某些上游服务器出现问题时可以将请求转到其他上游服务器以保障高可用,并通过OpenResty实现更智能的负载均衡,如将热点与非热点流量分离、正常流量与爬虫流量分离等。Nginx负载均衡器本身也是一台反向代理服务器,将用户请求通过Ningx代理到内网中的某台上游服务器处理,反向代理服务器可以对响应结果进行缓存、压缩等处理以提升性
2017-09-16 16:45:52 1436
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人