Linux文件

总结 点击查看原图

发布日期: 2018-05-05

七周七并发之数据并行

本周总结 点击查看原图

发布日期: 2017-12-23

七周七并发之通信顺序进程

本周总结 点击查看原图

发布日期: 2017-12-03

七周七并发之Actor

本周总结 点击查看原图

发布日期: 2017-11-25

七周七并发之Clojure分离标识与状态

本周总结 可以查看原图

发布日期: 2017-11-12

架构设计原则

软件设计原则 GRASP 通用职责分配软件模式 信息专家 为对象分配职责的通用原则 – 把职责分配给拥有足够信息可以履行职责的专家 多态 将职责分配给多个具有同名方法的多态子类,运行时根据需要动态切换子类,让系统行为变得可插拔 纯虚构 针对真实问题域中不存在,但是设计建模中有用的概念,设计虚构类并赋予职责。 间接 在两个或者多个对象间有交互的情况下,为避免直接耦合,提高重用性,创建中间类并赋予职责,对象的交互交由中间类协调。 受保护的变化 简单讲就是封装变化。识别系统中可能的不稳定或者变化,在不稳定组件上创建稳定的抽象接口,将可能的变化封装在接口之后,使得系统内部的不稳定或...

发布日期: 2017-10-05

七周七并发之函数式编程

概述 函数式编程有别于面向对象编程,它具有如下特性 函数是一等公民,可以把它当作参数传递给另外一个函数,也可以把函数作为返回值 函数式语言里面的数据是不可修改的 状态被维护在函数的参数上,而参数放在栈(stack)上面,不会被维护在全局的堆(heap)上面 其中特性2、3 能够很好的支持我们在函数级别的并行,而不带来副在用。 Clojure Start 书中用Clojure这样一个基于JVM的语言举例,Clojure的名字由来也比较有意思 “我想把这就几个元素包含在里面: C (C#), L (Lisp) and J (Java). 所以我想到了 Cloj...

发布日期: 2017-09-24

七周七并发之线程与锁

本章介绍了并发(同时应对)最基本的概念,与并行(同时处理)的区别。 点击查看原图

发布日期: 2017-06-04

七周七并发之Lambda架构

今天翻了翻《七周七并发模型》,没想到里面也有Lamdbad架构的介绍,因为对lambda架构已经有了一定的了解与实践,所以先记录了这一章节的学习笔记。 点击查看原图

发布日期: 2017-04-30

如何使代码审查更高效

如何使代码审查更高效 要点 代码审查者在审查代码时有非常多的东西需要关注。一个团队需要明确对于自己的项目哪些点是重要的,并不断在审查中就这些点进行检查。 人工审查代码是十分昂贵的,因此尽可能地使用自动化方式进行审查,如:代码格式、代码样式、检查常见bug、确定常见安全问题以及运行自动化测试。 可以借助sonar工具等进行定期review 当针对性能进行审查时,了解系统的性能需求是明确潜在问题的关键。 一些简单的人工检查可以显著提升应用的安全性。 代码审查是应该在互相沟通中进行讨论的,而不是相互对抗。预先确定哪些是要点哪些不是,可以减少冲突并拟定预期。 比如到达...

发布日期: 2017-04-09

cglib简介

cglib简介 cglib是啥? 首先上一段官方介绍 Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access. 简单一点说cglib是一个字节码的操作库,能够动态的更改Java的class文件 那它能干什么呢,其实能干的事情又很多,...

发布日期: 2017-03-25

linux命令

awk 如何快速删除一个文件里面的重复行? awk '!a[$0]++' 文件名 命令格式 awk [ -F field-separator ] [ -v var=value ] [ 'program' | -f progfile ] [ file ... ] 第一个为可选项 表示分隔符,默认是以空格b进行分割 第二个为可选项 表示初始变量的赋值, 第三个为可选项 表示编码的程序,支持从文件中读取 (-f)程序一般是Pattern { Action }这种格式,与指定模式(Pattern)相匹配,或包含与该模式匹配的字段,那么执行相应的操作(Action)...

发布日期: 2017-03-22

getResouce()方法对比

#getResouce()方法对比 ##方法一 LoadSource.class.getResourceAsStream("source.properties") ##方法二 LoadSource.class.getClassLoader().getResourceAsStream("source.properties"); 首先要明确的是以/开头的,代表绝对路径,没有/的是相对路径,绝对路径是从根目录开始,而在我们这一个打好的jar包,实际就是classpath文件下。 方法一是从当前class为查找的开始路径,找它的相对路径,例如 文件路径为com/...

发布日期: 2017-01-01

实时流计算与踩过的坑

0 概述 随着业务的推进,对数据的实时性要求更高,比如需要知道一个业务上线带来的实时流量,去衡量它上线之后的效果,实时的获取预算消耗情况,实时的掌握应用的响应情况,并且根据聚合结果再处理。 基于有一定实时流计算基础的情况,下面着重介绍设计过程中应该注意的地方。 1 设计方面 1.1 数据的倾斜、不平均 在APP中,统计一个活动区块的实时流量,区块可能被划分为多块,针对不同的用户,个性化推荐不同的活动,每个活动有bizId 比较简单的设计就是直接对bizId进行field grouping,然后统计bizId的PV,UV等。但是有些活动会被推荐给多个用户,有些活动只会推荐少数用户,导...

发布日期: 2016-10-15

java性能指南学习笔记

2016-09-10

发布日期: 2016-09-10

threadlocal学习笔记

概述 threadlocal 字面意思,线程本地,进一步理解,即线程持有的,每个线程保存自己线程的变量值,相互之间不会影响。所以threadlocal其实就是一个特殊类型的变量,可以理解为线程类的变量。 每个线程维护自己的变量,这需要占用更多的存储空间,但是相应的,对于这个变量,线程之间不需要去关注协同操作带来的同步问题,是一种比较典型的通过空间换却时间的方案,但是这种变量仅限于,每个线程之间的操作相互不影响的。 用法 它主要有几下几个方法 初始化 Returns the current thread’s “initial value” for this thread-lo...

发布日期: 2016-08-25

线上年老代异常追踪及分析解决

现象 观察自己机器性能时候发现年老代在缓慢增长, 如在 2016-08-12 10:00:00至11:00:00 年老代在 40MB-60MB之间 到2016-08-13 10:00:00到11:00:00 年老代已经达到将近160MB 现在进行jvmdump分析 dump了两个时间点的内存,并且用较大内存的时间点和较小内存的时间点进行比较,发现如下 这样看不出什么效果,想到应该是我们自己的代码问题,就进行了过滤(此处省略过滤结果图) 可以看到marinFieldEntity类的实例数增加比较多,初步猜测是由marinlog引起的问题 因此在beta上,我这边移除了m...

发布日期: 2016-08-17

aop 学习与理解

还在写中,待更新

发布日期: 2016-08-12

git diff文件显示异常

代码提交之后,会显示各种异常 在进行code review的时候无法正确显示差异,让人心中不爽,今天有点空,就研究了一下。 如果你没有耐心看下去,可以快速设置 git config –global core.autocrlf input 想根源 首先,想了想,这应该是利用 git diff 进行文件对比,然后修改的文件,加了一些样式才这样的,就想先看看git diff 有没有异常呢 在命令行中 输入 git diff HEAD^ HEAD 这个命令就是比较当前版本 和上个版本之间文件的差异 果然有异常! 有很多的^M符号,这个符号,之前在其它场景也有遇到过,当时.g...

发布日期: 2016-07-18

jvm内存对象学习

今天在学习JVM内存模型中,学习到线程之间共享数据这块,涉及到主内存和工作内存之间数据的交换和线程之间数据共享的问题。其中说到数据原子性的时候,说在32位JVM中,如果对long型等64位数据进行读写时,会分成2次32位的读写操作,破坏原子性。 看到这里我就迷惑了,大学学习C+ +课程的时候,记得数据长度在不同机型上会有不一样,并不是绝对的,所以一段代码可能并不是放之四海而皆准的,和编译器有关。难道java里面所有的数据长度都是固定的和jvm无关? 查询相关资料[https://en.wikibooks.org/wiki/Java_Programming/Primitive_Typ...

发布日期: 2016-07-04

crontab使用手册

crontab 是linux下用于设置被周期性的执行的指令 格式 *  *  *  *  *  command 分  时  日  月  周  命令 范围 列 分 时 日 月 周 range 0~59 0~23 1~31 1~12 0~6 多个值用 ,分隔 比如 在周列 可以使用 1,3表示周一、周三 范围值用 -分隔 比如 在时列 可以使用 1-7...

发布日期: 2016-06-12

disruptor学习笔记

disruptor学习分享 是什么? LMAX在线交易出品的一个高效的无锁并发框架 它高效核心在于其无锁队列RingBuffer的独特设计。 它可以用来进行线程之间的数据交互。 老生重谈:锁 并发编程中,为了保证准确性,引入了锁的机制,包括乐观锁,悲观锁等。有锁就涉及到资源的竞争,竞争就可能出现死锁,这样的情况下,你只能重启你的机器了。 考虑一个简单自增的问题: 从1加到10亿,(测试机器 Mac Air) 单线程简单自增,耗时5S左右 单线程加锁自增,仅仅简单加锁,没有竞争,耗时40S左右,慢一个数量级 考虑并发 两个线程简单自增,耗时减少,但是结果无法保证...

发布日期: 2016-05-26

基于github的博客搭建过程

本来打算这做第一篇博文的,但是之前有碰到一些继续分享记录的东西,这个就拖了拖~下面进入正题吧 一直想要搭建一个博客,尝试过hexo,台湾人编写的,基于nodejs的静态博客,也很方便,但是需要自己的云主机,维护起来比较麻烦。后面发现全球最大的同性交友网站也支持博客搭建 基于git的操作符合一般工作流 支持markdown 部署在github上,宕机可能性小 基于以上考虑,选择了github,下面开始详细步骤 1、环境准备 本文是基于mac的教程,如果你是win,出门左拐,默认大家已经做好了以下准备 ruby (ruby -v检测,一般mac自带) ...

发布日期: 2016-03-31

OAuth2.0学习笔记

OAuth2.0学习笔记 OAuht简介 所谓OAuth(即Open Authorization,开放授权),它是一种让用户允许第三方应用在某一个网站上获取自己相关信息的协议,它能在不告诉第三方应用密码的情况下,使得第三方应用可以获得相关信息,并且对第三方应用可以使用的权限进行一定的划分控制。 名称解释 Resource Owner 资源所有者,即用户 Resource Server 资源服务器,即用户存放资源的服务器 Authorization Server:认证服务器,即服务提供商专门用来处理认证的服务器。可以和Resource Server在同一台服务器也...

发布日期: 2016-03-29

基于alfred的自动化图片处理实践总结

在日常工作中,需要有一个比较好的图床,把自己的图片直接变成URL,这个时候结合alferd和七牛云可以完美的达成目的! 操作步骤主要参考 博文 其中有几点是自己在配置中遇到的问题 QRSync的使用 配置conf.json 替换成自己的AccessKey 和 SecretKey 时 ,不要带上尖括号<>,否则你会报错如下 { "error":"bad token", "reqid":"MBoAABzL4reGaj8U", "details":["UP:1/401"], "code":401 } 使用七牛云的时候,需要把你...

发布日期: 2016-03-26

mac一些配置的备份

公司开发会用到一个gitlab账号,github也会用到一个账号,这个时候需要用到多账号配置, 进入~/.ssh 下新建config cd ~/.ssh && vim config 粘贴如下内容 host github.com HostName github.com User kkzzzzzz IdentityFile ~/.ssh/github_rsa host code.dianpingoa.com HostName code.dianpingoa.com User kevin...

发布日期: 2016-03-23