自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hongchangfirst

不以物喜,不以己悲

  • 博客(323)
  • 收藏
  • 关注

原创 Charles 在iOS设备抓包

正常的进行配置proxy,enable ssl on host and port,安装证书,信任证书,但是有些域名的访问还是出现了:SSLHandshake: Remote host closed connection during handshake还需要最后一步是full trust:General > About > Certificate Trust Settings, and...

2018-05-10 12:00:44 894

原创 Sublime Text建立sftp进行文件同步

1 打开sublime,按下Ctrl+Shift+P,如果是Mac,按下Command+Shift+P.2 输入install packages,按回车。3 在接下来出现的对话框中,输入sftp,按回车。4 安装好后,右键单击你想要同步的文件夹,点击SFTP,map to remote.5 自动打开了一个sftp-config.json文件,注意下边的配置:字面意思很容易理解:"save_befo...

2018-05-10 11:59:15 1957 1

原创 Spark处理数据如何获得行号

因为Spark并行的处理数据,所以你不能在自己的driver program中计数到底是处理到第几个。Spark提供了zipWithIndex可以给你提供索引号。这个索引号是全局有序和唯一的。public RDD<scala.Tuple2<T,Object>> zipWithIndex()Zips this RDD with its element indices. The...

2018-05-10 11:57:02 3161

原创 SQL中LAG和OVER函数的意义

做BI查询时,有时会需要看上一条纪录的情况,那么需要怎么做呢?现代的数据仓库系统或者RDBMS系统一般都会提供一个一个函数来供你分析上几条或下几条的数据。比如LAG和LEAD。LAG( shorten_url IGNORE NULLS ) OVER ( PARTITION BY hit_day, session_id ORDER BY click_id )  Oracle从8.1.6开始提供分析函...

2018-04-04 17:00:21 47383

原创 团队管理 - Bus Factor

在lead一个team的时候,怎么样来应对人员流失而导致项目进度受到影响呢?其中可以思考的一个问题是公车因子(Bus Factor).我们先来看看Bus Factor的定义:The "bus factor" is the minimum number of team members that have to suddenly disappear from a project before the ...

2018-03-09 17:55:46 916

原创 sun.zip.disableMemoryMapping

有时候你如果修改了JVM正在load的jar文件,会导致JVM crash。stacktrace是在java.util.zip.ZipFile.getEntry() 时发生的。There are three possible scenarios here:1. While a class is in use it is dynamically reloaded from a jar file.2....

2018-02-11 14:22:11 3514 1

原创 Linux source命令解决alias not found issue

有时候在我们当前的shell中,是有某个alias command可用的,但是当我们sh script.sh或者./script.sh后,就发现出错alias command not found问题。这是怎么回事呢?是因为当你用当前shell执行新的脚本的时候,当前shell的alias并不会自动复制到新的执行script.sh脚本的shell,所以就不会有这个alias command.一种解决...

2018-02-11 14:21:12 5801 1

原创 什么是IDFA

IDFA全称应该是Identifier For Advertising, 一个跟device相关的唯一标识符,可以用来打通不同app之间的广告。比如你在淘宝里搜索了某个商品之后,你在用浏览器去浏览网页的时候,那个网页的广告就会给你展示相应的那个商品的广告。当然你可以重置你的IDFA,使别人不能再track到你的行为。因为IDFA是可以改变的,所以之前很多人都想拿到一个唯一不变的值比如说UDID(U...

2018-02-11 14:18:27 53582 3

原创 给AWS S3添加事件

有时候当我们的系统完成了计算得到了新的数据时,把新的数据存储在S3上,这时候我们需要进行下一步的处理。有几种方式来处理:1 特定时间去触发,比如你知道每天早上8点左右数据就能处理完,所以你可以将下一个处理程序定时每天9点开始跑。2 你下一个特定程序,每天8点的时候去check数据是否complete,如果完成就开始处理,如果没有完成则先过个五分钟,再check一次,如此循环往复。类似与Pull操作...

2018-02-11 10:50:58 1066

原创 TLDR让你更加方便快捷的查看命令用法

之前我们如果用一个命令,但是忘了具体的参数是什么的时候,通常会用man,比如man tar但是man有时候特别的冗长,你要找到想要的例子非常困难,所以tldr命令就是一个很好的补充,里边会有经常用到的例子和用法。安装特别简单:sudo curl -o /usr/local/bin/tldr https://raw.githubusercontent.com/rayl

2018-01-18 10:36:43 2792

原创 AWS EC2主机类型的区别和联系

AWS EC2 Instance Type 有很多种类型,什么t2.small, m4.xlarge, c3.2xlarge等,那么这些t啊,m啊到底是什么意思呢?我们接下来一一介绍。按照用途分为五大类:1 通用型,提供平衡的计算,内存,和网络能力,t2,m5系列。2 计算优化型,c5,c4,c3系列。3 内存优化型,x1,r4系列。4 加速计算型,p3,p2,g3,f

2017-12-18 12:31:19 23656 1

原创 openssl向SSL服务器发送请求

打印所有server端发过来的请求openssl s_client-connect hongchang.corp.amazon.com:4443将客户端发送的内容也显示出来。openssl s_client-connect hongchang.corp.amazon.com:4443 -msg将状态也打印出来openssl s_client-connect ho

2017-11-06 12:45:47 4140 1

原创 CURL - SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

curl -G -v https://www.zhc.com:443/* Adding handle: conn: 0x1fee30* Adding handle: send: 0* Adding handle: recv: 0* Curl_addHandleToPipeline: length: 1* - Conn 0 (0x1fee30) send_pipe: 1, rec

2017-10-20 16:36:51 14674

原创 怎么迅速将Java对象的详细内容打印下来

可以利用JSONObject和JSONArray.import net.sf.json.JSONObject;比如你有一个复杂的对象:Person, 里边有姓名,电话,地址,地址又是一个复杂的类。你有一个Person的对象person,你可以先将此对象转化成JSONObject对象,personJSON = JSONObject.fromObject(person);

2017-10-19 14:21:02 12460 1

原创 TCPDump抓包然后Wireshark进行分析

在服务器上输入下面的命令, 会讲eth0网卡上面,端口号是443的tcp流量都存入zhc.data文件。sudo tcpdump -i eth0 -w ~/zhc.data port 443Ctrl + C^C192 packetscaptured194 packetsreceived by filter0 packets droppedby kernel然后将zh

2017-10-19 12:16:16 1837

原创 Java SSL - CertificateException: No name matching

用java去连接SSL网站时,有时候出现:Caused by: java.security.cert.CertificateException: No name matching ...这是因为虽然server的certificate被trust了,但是host name verify验证失败,因为你connect的service的hostname和证书中的subject CN nam

2017-10-11 13:27:09 10918

原创 系统设计 - 关于用户体验与安全性之间的折衷

有时候想安全,就得牺牲掉一些用户体验,而一些更好的用户体验会牺牲掉一定的安全性,所以安全性与用户体验有时候是一对矛盾体,得想办法做tradeoff。比如说验证码,CAPTCHA,现在很多网站在登陆或者提供的其它服务会让用户输入验证码来验证操作是由人发出的,而不是robot发出的,前提是robot无法破解你所采用的验证码。而这样所有的登陆操作,不管是人还是robot都会面临验证码,也就是

2017-09-14 15:18:14 1922

原创 状态模式,命令模式和策略模式的区别

设计模式中有三个模式State, Command, Strategy,这三种设计模式都是行为型设计模式,在结构上又都很像,所以很多时候分不清楚。区分这三种模式不要focus在结构上,这三种模式最主要是在使用意图上有区别:状态模式:内部维护一个状态,会随着public api的调用进行相应的状态转移。外界不需要知道状态及其变化情况。命令模式:根据客户的请求封装相应的命令,处理者就

2017-09-14 15:01:24 4296

原创 三分钟教你学Git(二十五) 分拣文件

有时候我们需要将某一个commit中的部分改动提取出来,然后放入一个新的commit中,可以怎么做呢?我们举一个简单的例子:假设说commit_1中有5个文件修改分别叫做A, B, C, D, E.情况1:然后想将A文件作为一个单独的commit,剩下的四个文件作为另一个单独的commit,可以这样做:首先将commit_1的改动重新还原到工作区。git reset --m

2017-09-06 14:00:21 820

原创 JVM如何设置DNS缓存失效时间

JVM为了提高效率,会将第一次的DNS结果缓存起来。

2017-09-04 10:42:47 2783 1

原创 三分钟教你学System Design

系统设计问题有很多,比如:1 设计一个短域名系统2 设计一个搜索引擎3 设计一个在线象棋游戏4 设计一个社交平台,实现follow notification。在面对这些系统设计问题时,不要怕,让我们一步一步的搞定它。第一步:澄清问题,Clarify and  Scope it.我们首先要做的就是弄清楚问题,包括限制条件,各个接口的TPS有多大,数据量有多

2017-08-15 21:27:58 2384

原创 JWT是什么

JWT(JSON Web Token), 顾名思义就是可以在Web上传输的token,这种token是用JSON格式进行format的。它是一个开源标准(RFC 7519),定义了一个紧凑的自包含的方式在不同实体之间安全的用JSON格式传输信息。紧凑:意味着size小,所以可以在URL中,Header中,Post parameter中进行传输。自包含:里边的信息包含了所有需要的信息

2017-08-15 21:17:23 8017

原创 Java Remote Debug出现connection refused

现象是无法remote debug,但是在本地可以debug。如果服务器的debug端口号是8000,那么我们首先看一下在本地上8000能不能建立TCP连接:telnet localhost 8000如果可以,那么我们在另外一个机子上使用IP或者DNS看看是否可以连接上:telnet zhc-2.zhclab.com 8000如果连接不上,那么我们就锁定是因为外部机

2017-08-15 21:15:27 9492 2

原创 Server性能提升趣谈 - 思考篇

问题一,你有一个service, 对外提供两个接口,operationA需要执行20ms, operationB需要执行200ms, 然后可以将operationA的性能从20ms提升到18ms, 将operationB的性能从200ms提升到180ms. 如果我们只能提升一个,我们提升哪个呢?从现在的信息来看,我们需要将operationB提升到180ms,因为我们节省的时间是20m

2017-08-15 21:10:33 373

原创 Linux不能删除文件的问题

今天在remove一个文件的时候发现不能remove,出现:rm cannot remove "..." read-only file system但是查看了文件夹的权限,都有执行权限,在目录下touch一个文件也不可以。一般这种情况可能是文件系统数据损坏造成的,操作系统为了保护数据不丢,就将此文件系统设置成Read Only,所以就不能执行任何的写或者删除的操作了。可以使用m

2017-05-03 22:05:19 6627

原创 redis安全防护策略

对应的安全处理:1、限制Redis的访问IP,如指定本地IP获指定特定IP可以访问。2、如果是本地访问和使用,打开防火墙(阿里云等操作系统,默认把防火墙关了),不开放Redis端口,最好修改掉Redis的默认端口;3、如果要远程访问,给Redis配置上授权访问密码;

2017-04-20 14:12:14 1563

原创 三分钟教你学Git(二十四) error: insufficient permission

有时候我们git pull的时候出现:remote: Counting objects: 15, done.remote: Compressing objects: 100% (9/9), done.remote: Total 9 (delta 6), reused 0 (delta 0)error: insufficient permission for adding an

2017-04-18 16:33:34 4645 1

原创 三分钟教你学Git(二十三) - 左右并列的diff

我们知道可以用git diff来看差异,但是diff展示新添的是用每行的前置+号(绿色的),删除的是用每行的前置-号(红色的)。如果是你rename了一个文件从badName变成goodName,那么它就会展示badName整个文件是红色的,然后goodName整个文件是绿色的。如果我们想让两种diff左右并列,这样我们就能直观的看到两个版本之间的区别,怎么办呢?可以用icdiff

2017-04-11 11:26:23 4667 1

原创 Java SSL证书问题

一般来说访问一些自己的私有SSL服务器都会遇到SSL Exception,因为服务器证书不被信任。那么除了可以买一个公有证书外还有其它办法吗?如果你有对客户端的控制权的话,你可以自己生成一个证书,然后导入到客户端来使这个客户端信任这个证书。至于Java可以怎么导入证书呢?可以在虚拟机启动的时候告知证书的位置和密码:java -Djavax.net.ssl.trustStore=

2017-04-01 16:18:21 4592

原创 Linux启动时出现 an error occurred during the file system check错误

启动linux时,出现:an error occurred during the file system check. dropping you to a shell; the system will rebootwhen you leave the shellwarning security enforcement for system recoveryrun'setenfo

2017-03-13 18:15:52 13416

原创 大型网站技术架构读书笔记

1 软件架构师的价值不是掌握了多少新技术,而是将一个大系统切分成N个低耦合的子系统的能力。子系统之间通过依赖调用和消息传递能方式聚合成一个大系统。2 通过消息传递message queue,比如SQS,Apache ActiveMQ等是通过消息对象分解系统耦合性。而通过依赖调用如SOA,则是通过接口分解系统耦合性。3 马克思理论说,产品的价值在于劳动的时间,而劳动的时间不在

2017-03-08 14:32:49 727

原创 Protocol Buffer入门

protobuf就是一种二进制协议,你可以写一些proto文件定义传输的数据类型,然后可以使用protoc进行编译,可以翻译成各种语言:比如C, Java, Ruby, Python, C#等各种语言。然后protobuf帮你做序列化和反序列化。这种双方就可以通过这种协议进行沟通交流了。比如你可以定义message Person {    required string nam

2017-03-03 14:58:02 716

原创 Amazon Kinesis简介

Amazon Kinesis就是流式计算。Architecture架构:producer_a                                                          Kinesis Application 1       -> Amazon S3producer_b            ->   Amazon Kinesis

2017-03-01 17:22:25 4302

原创 Linux临时修改dns到IP的映射

如果应用请求操作系统某个DNS对应的IP是什么时,Linux OS会先去比如/etc/hosts文件里找,如果没有,再去响应的dns server去查。而/etc/hosts的文件格式大概为:127.0.0.1 localhost比如说我们现在在调试一个应用,这个应用会去call 某个server的service,比如call www.zhc.com:5280, 如果我

2017-02-09 18:14:18 3602

原创 服务器上的tomcat怎么判断版本

先找到tomcat的安装路径,在lib目录下有catalina.jar, 执行以下命令就可以显示出了.java -cp catalina.jar org.apache.catalina.util.ServerInfoServer version: Apache Tomcat/7.0.52Server built:   May 15 2015 01:37:14Server

2017-02-09 18:11:42 8484

原创 三分钟教你学Git(二十二) - 互动式改写历史

我们之前讲过可以使用merge squash将多个commit合并成一个commit,其实还有另外的思路可以帮你完成任务,那就是互动式rebase。比如,用git rebase -i HEAD^^可以对当前分支的最近两个commit进行改写(注意是开区间,因为git在实现层面需要知道父亲节点)。然后git会将你带入到一个编辑器里,按照历史commit从老到新的顺序从上到下依次列出,每一

2017-02-08 11:31:12 877

原创 Spring下@Resource, @Autowired和@Inject的区别与联系

这三种注解都可以实现依赖注入,那么它们有什么区别呢?它们三者之间在依赖注入的时候行为非常相近。所以如果想要知道有什么不同,就得看具体实现了。@Resource是用CommonAnnotationBeanPostProcessor类实现的依赖注入。@Autowired和@Inject是用AutowiredAnnotationBeanPostProcessor类实现的依赖注入。

2017-02-03 18:30:43 1553

原创 iOS和Android系统的webview远程调试

如果有一个app是用的OS提供的webview,那么我们可以像PC那样调试web一样调试app的webview。iOS的app可以用Safari浏览器来进行远程调试,步骤如下:1 将iphone用USB线连接到电脑上。2 打开Safari浏览器, 点击develop菜单,然后可以看到机器的名字,里边会有一系列webview的名字,选择你要调试的即可。Android的

2017-01-05 14:48:14 3530

原创 MongoDB的地理空间索引

db.users.ensureIndex({"position" : "2d"})MongoDb就会在position这个键上建立二维的地理索引。position的值必须是某种形式的一对值,一个包含两个元素的数组或者包含两个键的内嵌文档,比如:{"position" : [34, 67]}{"position" : {"latitude" : 33, "longitude" : 67}

2017-01-05 14:44:03 972

原创 MongoDB简介

MongoDB是一种NoSQL,面向文档存储,文档是MongoDB的一种特别重要的概念,你可以想象成是一种Map或者字典,散列。如果想要对比的话,文档就相当于关系型数据库的行,大小上线是4MB。集合相当于表。所有的文档都有一个内置的_id键作为唯一标识符。它的类型可以是任意的,但默认是ObjectId。ObjectId是12字节,每个字节用两位十六进制表示,所以就是一个二十四位的字符串

2017-01-04 14:12:53 629

空空如也

空空如也

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

TA关注的人

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