自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

饥渴计科极客杰铿的博客

海纳百川,有容乃大

  • 博客(188)
  • 资源 (2)
  • 收藏
  • 关注

翻译 Go日记——你想让Go快一点吗?

译自>https://bravenewgeek.com/so-you-wanna-go-fast/编写高性能Go的技巧到目前为止,我已经忘记了我在写什么,但是我保证这篇文章是关于Go的。确实如此,并且很大程度上取决于性能的提高,而不是交付的速度—两者常常彼此矛盾。到目前为止,一切都只是无用的上下文和抱怨。但这也向您表明,我们正在解决一些难题,以及为什么我们要保持现状。总有历史。我和很...

2019-10-08 17:42:05 326

翻译 GO日记——fasthttp client为什么快

翻译自 https://weekly-geekly.github.io/articles/443378/index.html我们使用fasthttp的例子编写了一个高性能的http客户端。Alexander Valyalkin(VertaMedia)Fasthttp库是标准Golang软件包中net / http的加速替代品。怎么安排?它为什么这么快?我是Alexander Valyalk...

2019-08-11 10:50:48 3533

转载 操作系统日记——使用 curl 命令分析请求的耗时情况

转自https://cizixs.com/2017/04/11/use-curl-to-analyze-request/最近工作中遇到一个问题,某个请求的响应特别慢,因此我就希望有一种方法能够分析到底请求的哪一步耗时比较长,好进一步找到问题的原因。在网络上搜索了一下,发现了一个非常好用的方法,curl 命令就能帮你分析请求的各个部分耗时。curl 命令提供了 -w 参数,这个参数在 man...

2019-04-11 12:35:57 530

原创 Go日记——defer的用途

关闭锁/释放资源 l.Lock() defer l.Unlock()恢复错误 defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() panic(2)统计耗时 defer func(begin ...

2019-03-27 10:04:38 422

原创 在字节跳动的100天

寒冬里的一把火从菜鸟回来后就一直参与秋招,秋招起步比较晚,总得来说不是特别地顺利,大公司的秋招很多都结束了,小公司由觉得我不会去他们公司,面BIGO的时候连续面了3个小时,差点要晕倒,之后还发生了一些让我很失望的事,在互联网的裁员寒冬和现实的寒冬中,我终于披荆斩棘地来到头条。年轻的大家庭再过4天就是字节跳动7周年了,7周年看起来很长,但相比起BAT这些传统大企业来说还算是比较年轻。这里工作的...

2019-03-08 22:54:36 969

转载 Go日记——使用pprof和go-torch做性能分析

转自https://www.cnblogs.com/li-peng/p/9391543.html软件开发过程中,项目上线并不是终点。上线后,还要对程序的取样分析运行情况,并重构现有的功能,让程序执行更高效更稳写。 golang的工具包内自带pprof功能,使找出程序中占内存和CPU较多的部分功能方便了不少。加上uber的火焰图,可视化显示,让我们在分析程序时更简单明了。pprof有两个包用来...

2019-02-11 15:23:58 674

转载 Go日记——Go 1.9 sync.Map揭秘

转自https://colobu.com/2017/07/11/dive-into-sync-Map/在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。本文...

2019-01-21 17:28:42 253

转载 Go日记——morestack与goroutine pool

Go语言的goroutine初始栈大小只有2K,如果运行过程中调用链比较长,超过的这个大小的时候,栈会自动地扩张。这个时候会调用到一个函数runtime.morestack。开一个goroutine本身开销非常小,但是调用morestack进行扩栈的开销是比较大的。想想,如果函数的栈扩张了,有人引用原栈上的对象怎么办?所以morestack的时候,里面的对象都是需要调整位置的,指针都要重定位到新的...

2019-01-21 16:01:33 657

转载 Go日记——反向RPC

背景通常的RPC是基于C/S结构,RPC的服务端对应网络的服务器,RPC的客户端也对应网络客户端。但是对于一些特殊场景,比如在公司内网提供一个RPC服务,但是在外网无法链接到内网的服务器。这种时候我们可以参考类似反向代理的技术,首先从内网主动链接到外网的TCP服务器,然后基于TCP链接向外网提供RPC服务。声明接口type HelloService struct {}func (p *H...

2019-01-07 10:46:36 2454 9

原创 NoSQL日记——Redis,Mongodb,Memcached区别和使用场景

工作中一旦遇到很多数据,高并发,这时就需要用到NoSQL来帮忙,NoSQL主要用到以下三种:Redis,Mongodb,Memcached。下面的表格介绍了他们之间的区别和使用场景。 对比项 Redis Mongodb Memcached 数据存储 Redis的存储格式和Memcache一样,也是Key-Value模式,但是Redis有另外的实现,除了基本的s...

2018-09-14 11:04:01 346

原创 在阿里的100天

赶上了春招最后一趟车我在春节前已经开始了阿里的一面了,那时还没什么经验,到四面就止步了,当时挺绝望的。没想到有再次复活的机会,我在阿里春招面试的最后一天结束了第六轮面试,次日收到意向书。成为小菜鸟入职的流程非常简单,一个上午就搞定了。入职后就是要跟师兄会面了,在我脑海中师兄一般都是比我大几岁的年轻的少年,没想到竟然是一个30岁的大叔。在同事的帮助下申领了macbook pro,在这...

2018-09-11 11:59:27 555

原创 Scala日记——Monad的概念简介

前言Scala一种结合面向对象(OO)和函数式编程(FP)的语言,学习函数式编程的话经常会遇到Monad(单子)这个概念,Monad是用于控制副作用的,这篇文章不介绍它是如何控制副作用,只介绍Monad涉及的概念。Haskell大神Philip Wadler说:“一个单子(Monad)说白了不过就是自函子(Endofunctor)范畴上的一个幺半群(Monoid)而已,这有什么难以理解的?...

2018-07-13 17:16:51 2808

转载 架构师日记——Kafka、RabbitMQ、RocketMQ等消息中间件的对比

原文:http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/?utm_source=tuicool&utm_medium=referral 分布式系统中,我们广泛运...

2018-05-07 20:16:42 6360 2

转载 Tomcat日记——四张图带你了解Tomcat系统架构

本文转自https://blog.csdn.net/xlgen157387/article/details/79006434 俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以游刃而解,了解了To

2018-04-09 18:51:43 427 1

原创 算法日记——LRU和LFU的O(1)实现

LRU和LFU都可以用作缓存置换算法LRULRU是Least Recently Used的缩写,即最近最久未使用 主要有两种实现方式继承LinkedHashMappublic class LRUCache<K, V> extends LinkedHashMap<K, V> { private final int MAX_CACHE_SI...

2018-03-31 21:54:43 1713

转载 架构师日记——消息队列技术点梳理(思维导图版)

本文转自neoremind.com。消息队列作为服务/应用之间的通信中间件,可以起到业务耦合、广播消息、保证最终一致性以及错峰流控(克服短板瓶颈)等作用。本文不打算详细深入讲解消息队列,而是体系化的梳理消息队列可能涉及的技术点,起到提纲挈领的作用,构造一个宏观的概念,使用思维导图梳理。 再介绍之前,先简短比较下RPC和消息队列。RPC大多属于请求-应答模式,也包括越来越...

2018-03-19 18:38:32 1732

原创 Kotlin日记——Kotlin+SpringBoot+Jpa入门

Kotlin是一门很新的语言,它的设计和一些语法糖使它开发起来比Java要简洁很多,效率自然也提高了不少,性能方面,跟java也是不相上下的。 没有接触过Kotlin的朋友可以先到官网看详细教程 https://www.kotlincn.net/docs/reference/server-overview.html众所周知SpringBoot是一个对新手极其友好的框架,它使开发者省

2018-03-13 11:44:37 6447 1

转载 区块链日记——【译】用Java创建你的第一个区块链-part2:可交易

本文转自http://www.spring4all.com/article/814 【译】用Java创建你的第一个区块链-part2:可交易 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。前言本系列教

2018-03-13 07:37:34 718

转载 区块链日记——【译】用Java创建你的第一个区块链-part1

本文转自http://www.spring4all.com/article/811 【译】用Java创建你的第一个区块链-part1 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。前言本系列教程旨在帮

2018-03-13 07:33:03 367

原创 在百度实习的100天

北漂之始在6月份完成了上一份实习之后,一直忙于自己的一个视频社交项目。在繁忙中,也尝试投一下简历,发现要19届的并不多,只有百度对19届的需求比较多。因为之前有师兄也是到了百度实习,我想趁着年轻也可以去闯一下。真没想到还真收到了面试的电话。总算磕磕绊绊的过了两轮面试,一边是焦头烂额的等待着Offer的发放,一边又对北漂各种事情的筹备。没等到Offer,我已经订好了去往北京的火车票。怀着满腔热血...

2018-02-16 21:58:55 3447 4

原创 MongoDB日记——MongoDB的写安全机制

写过程介绍当使用insert/update/remove/save等操作更新集合中的数据时,只是修改了数据在内存中的映像,数据更新并没有同步地保存到磁盘上,而且更新内存中的数据之前,更新操作会被记录到journal日志文件中。 写安全级别介绍写入安全是一种由客户端设置的,用于控制写入安全级别的机制,通过使用写入安全机制可以提高数据的可靠性MongoDB提供了四种写入界别,分别是:

2018-02-02 12:47:29 419

原创 Spring日记——BeanFactory中Bean的生命周期

BeanFactory中Bean的生命周期流程图如下Created with Raphaël 2.1.2开始调用InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法实例化调用InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation方法

2018-01-31 16:39:35 229

转载 架构师日记——基于redis的分布式锁实现

很久之前有讲过并发编程中的锁 并发编程的锁机制:synchronized和lock。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记

2018-01-06 13:45:32 1765

转载 Go日记——手写一个资源池

本文转自http://www.flysnow.org/2017/05/01/go-in-action-go-pool.html《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续笔记。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。这篇文章演示使用有缓冲的通道实现一个资源池,这个资源池可以管理在任意多个go

2017-12-08 19:29:50 445

转载 Redis日记——分布式锁

目前实现分布式锁的方式主要有数据库、Redis和Zookeeper三种,本文主要阐述利用Redis的相关命令来实现分布式锁。 相关Redis命令 SETNX 如果当前中没有值,则将其设置为 并返回1,否则返回0。 EXPIRE 将设置为 秒后自动过期。

2017-11-09 12:07:33 539

原创 Java并发编程日记——线程池介绍和使用建议

JDK中有四种线程池,分别是FixedThreadPool,SingleThreadExecutor,CachedThreadPool,ScheduledThreadPool,他们都依赖一个核心类ThreadPoolExecutorThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize,

2017-10-19 09:11:41 386

原创 架构师日记——MongoDB简介和安装使用

MongoDB是什么MongoDB是一个使用C++编写的、开源的、面向文档的NoSQL(Not Only SQL)数据库,也是当前最热门的NoSql数据库之一。 关系型数据库是面向记录的,在关系型数据库中一个item是一条记录,在非关系型数据库中一个item是一个文档,举个例子 uuid name age 1 u1 zhangsan在NoSQL

2017-10-06 22:52:36 575

原创 架构师日记——ActiveMQ使用场景和优化建议

ActiveMQ主要有以下几种使用场景异步调用一对多通信做多个系统的集成,同构、异构作为RPC的替代多个应用相互解耦作为事件驱动架构的幕后支撑为了提高系统的可伸缩性ActiveMQ优化可以从以下几个方面ActiveMQ的性能依赖于很多因素,比如: 1:网络拓扑结构,比如:嵌入、主从复制、网络连接 2:transport协议 3:service的质量,比如topic还是queu

2017-10-04 15:27:09 2197

原创 架构师日记——ActiveMQ简介

ActiveMQ是什么ActiveMQ是Apache推出的,一款开源的,完全支持JMS(Java Message Service)1.1和J2EE 1.4规范的JMS Provider实现的消息中间件(Message Oriented Middleware,MOM)ActiveMQ能干什么最主要的功能就是:实现JMS Provider,用来帮助实现高可用、高性能、可伸缩、易用和安全的企业级面向消息服

2017-09-26 14:18:25 591

原创 架构师日记——Memcached的限制和使用建议

Memcached的限制在Memcached中可以保存的item数据量是没有限制的,只要内存足够Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程Memcached设置Item为最大30天的过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA为60*60*24*30控制Memcached缺乏认证以及安全管制,应

2017-09-09 14:57:30 515

原创 Html日记——实现全平台覆盖的复制到粘贴板

我们这次会利用的神器有clipboard.js,但它对ios设备支持不太友好,所以我们ios部分用纯js实现兼容 这次我实现的效果的是直接点击文字复制,你们也可以根据自己的需求和clipboard.js的API是实现例如点击按钮复制文字<html><head><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></s

2017-09-03 14:02:17 625

原创 架构师日记——理解Memcached的分布式方式

Memcached尽管是“分布式”的缓存系统,但服务器端并没有分布式功能。各个Memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现Memcached的分布式客户端客户端可以通过配置SockIOPool的servers参数保存服务器地址列表,通过weight参数配置每台服务器的权重。SockIOPool提供了连接池的服务,可以通过SockIOPool来配置memc

2017-09-01 20:32:17 363

原创 架构师日记——Memcached简介和工作原理

Memcached是什么Memcached是一款开源的、高性能的、分布式的内存对象缓存系统Memcached能干什么最主要的功能就是:在内存中缓存数据,以减轻数据库负载。 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached特点1.在内存中以键/值对存储,性能好 2.协议简单(基于文本行),功能强大 3.基于libevent的事件处理,无阻

2017-08-30 09:43:35 405

转载 c++日记——WIndows和Linux下左移模板函数的不同

学习C++时,有时候我们会使用微软提供的VS软件,在学习到模板类重载左移操作符时会遇到一些问题,下面写一个简单的程序来举例:#include <iostream>using namespace std;template<class T>class Complex{private: T a;public: Complex(T a); friend ostream &

2017-08-27 21:22:24 298

原创 架构师日记——手写利用HTTP协议远程模块调用

远程模块调用比较流行的协议有RPC协议、RMI协议和HTTP协议 本篇博客教大家如何使用HTTP协议试远程模块的调用1.定架构总体架构如下 接下来我一个一个讲解他们的作用2.ModuleModel这个类的作用是记录不同uuid对应的module的信息,包括远端ip和url等,代码如下/** * 调用远端方法的协议类 */public class InteractiveModel {

2017-08-24 09:41:57 575

原创 架构师日记——规划Varnish的缓存大小和提高命中率

给Varnish选择多少内存,是个很艰巨的问题,需要考虑以下事情: 1:应用的热门数据集有多大? 对一个门户或者新闻站来说,这个数据集可能就只是首页和它相关内容的大小。这里包括的两部分,一部分是只首页本身的文字图片内容,另一部分是首页会链接到的页面或象(比如图片),这个很容易理解,首页的内容是最可能被点击的,命中率也会很高。 2:产生一个对象的花费有多大? 有时候,如果从后端返回并不太消耗资

2017-08-16 21:25:21 1854

原创 架构师日记——使用CLI管理Varnish

在启动Varnish的时候,已经通过-T的参数来指定了管理Varnish的ip和端口,现在就可以 连接这个ip和端口来进行Varnish的管理有两种连接方式:telnet ip port 的方式,会进入一个纯文本的命令行管理界面varnishadm –T ip:port的方式,进入varnish的命令行管理界面 两种方式都是进入Varnish Command Line Interface,简

2017-08-12 20:20:39 359

原创 架构师日记——VCL的变量和常用片段

在VCL中,有3个重要的数据结构:1.req:请求目标,当varnish接收到一个请求,这是req object就被创建了,在vcl_recv中的大部分工作,都是在req object上展开的。 2.beresp:后端服务器返回的目标,它包含返回的头信息,在vcl_fetch中的大部分工作都是在beresp onject上开展的。 3.obj:被cache的目标,只读的目标被保存于内存中,obj

2017-08-11 21:51:49 565

原创 架构师日记——Varnish的性能调优

Varnish的性能调优分成两个部分1.一个是硬件、操作系统和网络部分的优化 2.另外一个,也是最重要的一个,就是VCL的调优。 要进行硬件、操作系统和网络部分的优化,了解Varnish的进程和线程架构是有必要的,他们能帮助你更好的去调整优化,以及整合应用系统。Varnish的进程架构图管理进程(The management process) Varnish主要有两个进程,管理进程和子进程,

2017-08-10 11:13:45 3345 1

原创 架构师日记——Varnish的VCL子程序

一个子程序就是一串可读和可用的代码,子程序在VCL中没有参数,也没有返回值。示例如下:sub pipe_if_local{ if(client.ip ~ local){ pipe; }}调用一个子程序,使用子程序的关键字名字,如下所示call pipe_if_local;varnish的工作流程有很多默认子程序和varnish的工作

2017-08-09 09:53:07 349

mybatis-3.1.1.jar

mybatis核心jar包

2016-12-11

破解后的MyBastis插件

破解后的MyBastis插件,支持自动生成mapper,model和example

2016-12-11

空空如也

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

TA关注的人

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