Browsed by
分类:Database (综合、MySQL、Oracle)

高性能短链设计

高性能短链设计

閱讀本文約花費: 17 (分鐘) 前言 今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。 本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获 短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计 注:里面涉及到不少布隆过滤器,snowflake 等技术,由于不是本文重点,所以建议大家看完后再自己去深入了解,不然展开讲篇幅会很长 短链有啥好处,用长链不香吗 来看下以下极客时间发我的营销短信,点击下方蓝色的链接(短链) 浏览器的地址栏上最终会显示一条如下的长链。 那么为啥要用短链表示,直接用长链不行吗,用短链的话有如下好外 1、链接变短,在对内容长度有限制的平台发文,可编辑的文字就变多了 最典型的就是微博,限定了只能发 140 个字,如果一串长链直接怼上去,其他可编辑的内容就所剩无几了,用短链的话,链接长度大大减少,自然可编辑的文字多了不少。 再比如一般短信发文有长度限度,如果用长链,一条短信很可能要拆分成两三条发,本来一条一毛的短信费变成了两三毛,何苦呢。另外用短链在内容排版上也更美观。 2、我们经常需要将链接转…

Read More Read More

CTO的职责是什么

CTO的职责是什么

閱讀本文約花費: 5 (分鐘) 每个公司行业不同,业务不同,技术占比不同,不同公司对CTO的要求和职责也都会不一样。我们不能想象一家化工企业的CTO和移动App的CTO做的事情是一样的。所以我们先说说CTO有几种类型。 一图胜千言: 其中横轴是公司产品中技术占的比重,纵轴是指公司业务变化的快慢。 下面介绍下每种类型的CTO Visionary and Operations Manager 比如大家关注的互联网公司,技术占整个公司的比例是很大的。而且互联网创业是一个瞬息万变的事情,所以互联网创业公司的CTO应该落到了第一象限,即Visionary and OperationsManager。具体是什么意思呢?所谓Visionary就是制定技术战略,Operation就是战术和落地执行。 这类型的CTO通常是互联网和其他高科技公司,技术在这类公司业务中起着至关重要的作用。从Technology Visionary的角色看,CTO对如何利用技术实现商业战略有重大的决策权。同时,CTO也兼任Operation Manager的角色,即负责推动和整合技术的实施。在这种情况下,通常CTO是公司的联合创始人,或者是第一个被雇佣的员工。 例如大家熟悉的:亚马逊 CTO WernerVogels,是云计算领域的领军人物,以及亚马逊AWS业务的核心推动者。Werner Vogels在云计算领域的高瞻远…

Read More Read More

创业公司的 CTO 应当做什么?

创业公司的 CTO 应当做什么?

閱讀本文約花費: 10 (分鐘) 英文:http://www.startuplessonslearned.com/2008/09/what-does-startup-cto-actually-do.html 你的首席技术官(CTO)整天都在做什么?很多时候,在一般人眼里的 CTO 形象等同于“那个拿着高薪坐在角落里,对‘技术’进行深层次思考的家伙” 或者 “那个在最后一刻突然一时兴起,跳起来重新安排我的项目的家伙”。我已经努力不让人产生这种印象,但这不容易做到。我们缺乏一个对 CTO 的一致而明确的角色定位。 当我问起我那些曾在大公司任 CTO 的导师们如何看待这一角色,他们通常会谈起 CTO 应该成为公司技术平台的对外形象,对开发者、客户(尤其是技术型产品)、员工来说,CTO 是布道者。毫无疑问,技术布道是一项非常重要的工作,我总是被要求做这件事。然而,我不认为大多数初创公司真正需要某人来做全职的布道者。 所以 CTO 意味着什么,除了只是 “不负责直接管理任何人的技术合伙人?”。 我一直认为我不会管理任何人。我打心底认为成为一个经理一点也不好玩,谁会真的想对别人的行为负责?我的意思是,公司大了,什么人都有(不好管理)!所以我被 CTO 的职位吸引,而不愿意成为分管工程师的 VP。我认为公司会招一个专业的家伙来专门负责管理和安排日常事务,而我只要将精力集中于确保我们的技术确实很牛…

Read More Read More

shell的dirname $0和readlink用法

shell的dirname $0和readlink用法

閱讀本文約花費: 1 (分鐘) 获取当前脚本路径 path.sh #!/bin/bash path=$(cd `dirname $0`;pwd) echo $path path2=$(dirname $0) echo $path2 当前脚本存在路径:/home/software sh path.sh /home/software . 解释: dirname $0 只是获取的当前脚本的相对路径. cd `dirname $0`;pwd 先cd到当前路径然后pwd,打印成绝对路径 方法二: path.sh #!/bin/bash path=$(dirname $0) path2=$(readlink -f $path) echo path2 sh path.sh /home/software 解释: readlink -f $path 如果$path没有链接,就显示自己本身的绝对路径 readlink readlink是linux用来找出符号链接所指向的位置 例1: readlink -f /usr/bin/awk 结果: /usr/bin/gawk #因为/usr/bin/awk是一个软连接,指向gawk 例2: readlink -f /home/software/log /home/software/log #如果没有链接,就显示自己本身的绝对路径 获取路径的比较 path.sh…

Read More Read More

围观CTO的工作

围观CTO的工作

閱讀本文約花費: 6 (分鐘) via: https://www.quora.com/What-does-a-CTO-do 偶然读到维基百科上关于CTO的定义,和我以前理解的不太一样,再到Quora上找到一些讨论,惊喜的发现原来我现在所做的和CTO的工作有很高的重合性。Amr Awadallah总结的很详尽,也具有很强的操作性,摘译出来分享给大家。 [1] CTO的使命 (1)对长期技术策略负责 必须持续有效地思考、制定、宣传公司的技术策略方向。要确保公司在高度竞争、动态变化的环境中持续的提供最佳技术方案。是公司对内对外技术沟通的桥梁,要保证技术策略和商业策略的协同。 (2)技术布道者 激发员工对公司愿景的认同,说服外界对公司愿景的认同,以及公司是实现该愿景的最佳选择。是研发团队内关于市场需求的权威,是客户最可信赖的技术顾问,能够对不同层次的听众有效阐述技术的商业价值和投资回报率。 (3)研发团队的精神领袖和研发文化建设者 引领整个研发团队为公司长期技术策略和目标而团结努力。能够识别和吸引优秀人才的加入。帮助建立和维护良好的研发氛围。 [2] 如何评估CTO的业绩 (1)是否错失关键技术趋势?所制定的技术策略是否和商业策略一致?(2)研发氛围(3)其他关键业务部门的满意度 [3] CTO应该如何平衡内外部事务的时间分配 答案是具体情况具体分析(废话),原则是两者兼顾。CTO如果缺乏…

Read More Read More

PLSQL Developer常用设置及快捷键

PLSQL Developer常用设置及快捷键

閱讀本文約花費: 7 (分鐘) 1、登录后默认自动选中My Objects (已验证可用)    默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的。 设置方法:Tools菜单 –> Brower Filters,会打开Brower Folders的定单窗口,把“My Objects”设为默认即可。Tools菜单--Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。 2、记住密码        这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 设置方法:菜单Tools –> Preferences –> Oracle –> Logon History –…

Read More Read More

后端架构师技术图谱

后端架构师技术图谱

閱讀本文約花費: 5 (分鐘) 数据结构 二叉树完全二叉树平衡二叉树二叉查找树(BST)红黑树B-,B+,B*树LSM 树队列集合链表、数组字典、关联数组栈树BitSet 常用算法 KPM 算法选择排序冒泡排序插入排序快速排序归并排序希尔排序堆排序计数排序桶排序基数排序二分查找Java 中的排序工具排序、查找算法布隆过滤器字符串比较深度优先、广度优先贪心算法回溯算法剪枝算法动态规划朴素贝叶斯推荐算法最小生成树算法最短路径算法 并发 Java中的锁和同步类公平锁 & 非公平锁悲观锁 & 乐观锁 & CASABA 问题CopyOnWrite容器RingBuffer可重入锁 & 不可重入锁互斥锁 & 共享锁死锁事务 ACID 特性事务的隔离级别多线程线程安全一致性、事务锁 操作系统 计算机原理进程线程协程Linux 设计模式 康威定律设计模式的六大原则23种常见设计模式应用场景单例模式责任链模式MVCIOCAOPUML微服务思想 运维 & 统计 & 技术支持 OpenStackDockerKVMXenOpenVZTDD 理论单元测试压力测试全链路压测A/B TestAnsiblepuppetchefJenkins环境分离常规监控APM统计分析持续集成(CI/CD)自动化运维测试虚拟化容器技术云技术DevOps文档管理 中间件 日志搜…

Read More Read More

Dockerfile部署Nginx、Apache、Tomcat

Dockerfile部署Nginx、Apache、Tomcat

閱讀本文約花費: 1 (分鐘) nginx #安装nginx并用CMD设置默认启动命令 #默认初始镜像为centos:7 FROM centos:7 RUN yum install -y epel-release && yum install -y nginx CMD [“nginx”,”-g”,”daemon off;”] apache #安装http并用CMD设置默认启动命令 #默认初始镜像为centos:7 FROM centos:7 RUN yum install -y httpd CMD [“httpd”,”-D”,”FOREGROUND”] tomcat #安装jdk tomcat并启动 #默认初始镜像为centos:7 FROM centos:7 ADD ./apache-tomcat-9.0.12.tar.gz /root ADD ./jdk-8u181-linux-x64.tar.gz /root ENV JAVA_HOME /root/jdk1.8.0_181 ENV PATH $JAVA_HOME/bin:$PATH RUN echo JAVA_OPTS=”-Djava.security.egd=file:/dev/./urandom” >> /root/apache-tomcat-9.0.12/bin/catalina.sh ENTRYPOI…

Read More Read More

@FeignClient注解的深度交流

@FeignClient注解的深度交流

閱讀本文約花費: 8 (分鐘) 那天晚上和@FeignClient注解的深度交流 Feign 基本介绍 首先来个基本的普及,怕有些同学还没接触过 Spring Cloud。Feign 是 Netflix 开源的一个 REST 客户端,通过定义接口,使用注解的方式描述接口的信息,就可以发起接口调用。 GitHub 地址: https://github.com/OpenFeign/feign[1] 下面是 GitHub 主页上给的一个最基本的使用示列,示列中采用 Feign 调用 GitHub 的接口。 interface GitHub { @RequestLine(“GET /repos/{owner}/{repo}/contributors”) List contributors(@Param(“owner”) String owner, @Param(“repo”) String repo); @RequestLine(“POST /repos/{owner}/{repo}/issues”) void createIssue(Issue issue, @Param(“owner”) String owner, @Param(“repo”) String repo); } public static class Contributor { String login; int con…

Read More Read More