自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

达叔

天道酬勤

  • 博客(198)
  • 资源 (3)
  • 收藏
  • 关注

原创 程序员应该懂的经济学概念(二)

在上一篇程序员应该懂的经济学概念(一)中,给大家通俗解释了成本的经济学概念,还有用来解决社会成本问的科斯定律,以及边际成本、边际效用、边际平衡的概念。下面我们继续来说说其他的基础概念。需求1、需求第一定律:无论何时何地,价格提高,商品的需求量就减少,价格降到一定的程度,需求量就会增加。如下图所示↓这个很好理解了,比如我们找工作时,预期价位比较高的话,offer就会很...

2020-03-29 19:37:09 638

原创 程序员应该懂的经济学概念(一)

疫情影响下的经济形势扑朔迷离,风险与机遇并存,作为程序员,在苦练基本功的同时,再学习一些经济学知识就显得非常有必要了。最近在看《薛兆丰的经济学讲义》,把心得感悟分享给大家,这是第一篇,感兴趣的朋友记得点关注~成本、需求、价格,是经济学里最重要的三个基础概念,下面依次介绍下↓成本1、成本是放弃了的最大代价。做一个选择,人们放弃的是其他选项当中价值最高的那个,选项...

2020-03-29 19:35:54 751

原创 HBase入门看这篇就够了

1、HBase是什么?HBase 是一种类似于数据库的存储层,也就是说 HBase 适用于结构化的存储。并且 HBase 是一种列式的分布式数据库,是由 Google 公布的 BigTable 的论文而生。不过这里也要注意 HBase 底层依旧依赖 HDFS 来作为其物理存储,这点类似于 Hive。2、HBase和Hive的区别?Hive 适合用来对一段时间内的数据进...

2020-01-18 19:27:09 597

原创 巧用curl命令定位性能瓶颈

直接上图↓图1上面的命令,可以查看http请求各个环节的耗时情况,能够帮助我们排查和定位问题。要实现上图的输出效果,需要将下面格式化文本提前准备好。图2有的朋友可能好奇,图1的命令为什么要加-o /dev/null?不加的话,会把响应也显示出来,看起来不够美观了~那图1为啥还要加-s命令呢?如果不加的话,会显示下面的进度条信息↓这个命令...

2020-01-17 21:30:55 783

原创 奇妙的GC案例分享两则

一、20秒的young gc了解一下开门见山↓,图1惊讶之余,我们一起探探究竟。首先要会看gc log,一图胜千言↓图2有个细节很关键,user(用户耗时)+sys(系统耗时) <real(真实耗时)。再来看下,每个耗时的具体口径↓1、real time:GC事件整个过程自然流逝的绝对时间,这个跟钟表上的时间是一致的。(如果GC从10点开始,10点30...

2019-12-22 18:59:24 594

原创 聊聊cms GC中的concurrent mode failure

在上一篇,耗时20多秒的young gc,你见过吗?的结尾,给大家预告了一个有趣的case,现在开始分享一下。直接上图↓图1从红框1中,可以看到cms full gc开始进行初始化标记了,紧接着在红框二处,开始了并发标记,说到这里,再贴个好图,帮大家回忆一下cms的几个阶段↓图2言归正传,图1红框3中,可以看到,有7次由于新生代空间不足,导致allocation...

2019-12-22 18:37:25 3953 3

原创 耗时20多秒的young gc,你见过吗?

开门见山↓,图1惊讶之余,我们一起探探究竟。首先要会看gc log,一图胜千言↓图2有个细节很关键,user(用户耗时)+sys(系统耗时) <real(真实耗时)。再来看下,每个耗时的具体口径↓1、real time:GC事件整个过程自然流逝的绝对时间,这个跟钟表上的时间是一致的。(如果GC从10点开始,10点30结束,real ...

2019-12-14 18:25:57 1210

原创 程序员视角带你解读高以翔事件

近日,35岁艺人高以翔在录制《追我吧》真人秀综艺节目时,因心源性猝死不幸离世。这场意外让广大粉丝心痛不已,由于节目中游戏环节较多并且危险、对明星的体能和意志考验极大,这也让电视台背上了难以推卸的责任,作为程序员的我们,从事件中,应该得到哪些启示呢?应该有两方面,1、个人健康意识 ,2、风险管理意识。先老生常谈一下健康问题,现在越来越多的90后甚至95后,都已经不敢看体...

2019-11-30 15:50:17 1513 2

原创 从面试官视角解析如何拿到高薪offer(二)

今天我们来说说解决问题能力。我认为整体分为:设计能力、编码能力、问题排查能力,这三方面。如果说专业能力主要是考察你的知识储备的话,那么解决问题能力,则是考察你灵活运用专业知识的能力。面试官问道,如何设计一个xx功能/服务/系统,这时候,上一篇文章介绍的BeafQPS方法论就派上用场了。不仅要实现功能和业务,还要准确的识别出功能/服务/系统的难点,可能是需要高性能,或者需要高可用,或者需要高...

2019-11-24 15:45:28 813

原创 从面试官视角解析如何拿到高薪offer(一)

互联网的寒冬已经开始了,想必大家已经有了切身的感受,公司内部晋升要求变高、名额变少,外部机会的要求也水涨船高,并且限制涨幅、职级等。如何在较为恶劣的大环境下,从海量候选人中脱颖而出,获得心怡的工作机会,升职加薪,开启职场新篇章呢?我们另辟蹊径,思考下,面试官会从哪些方面考察候选人呢?整体上主要分为:专业能力、解决问题能力、沟通协作能力、成长潜力、文化匹配这五大方面。于是我们就有了方向,在面...

2019-11-17 20:52:10 2920 4

原创 领导力360°评估

1、主动通过内外不同渠道收集各种信息,积极研究行业变化与发展趋势。2、善于指出业务本质,识别潜在问题,总结规律,预判未来。3、能Think long term,确定符合公司长期利益的本领域发展方向。4、能兼具长短期的视角,把战略规划和现实相结合,确定清晰的步骤方法。5、能抓住主要矛盾,在理性分析的基础上找到最优问题解决方案。6、勇于做决定,并乐于承受经过评估的风险。7、投入精力提升招聘...

2019-11-12 16:53:50 2334

转载 《可伸缩架构:面向增长应用的高可用》读书笔记

术语定义 可靠性:系统是否具备无差错地执行预期操作的能力。 可用性:为了执行预期操作,系统当前可运行的能力。 可用性百分比:(该期间的总秒数-系统宕机的秒数)/该期间的总秒数。 风险缓和:通过降低风险发生的可能性,或者降低风险发生时的严重性,来降低风险的影响。 风险管理:在解决风险和缓和风险之间做出选择。 比赛日:通过测试来触发系统中某个失败模型,然后观察你的操作人员和工程师如何进行响...

2018-03-07 12:26:03 1062

翻译 mysql官方文档Clustered and Secondary Indexes翻译

mysql官方文档 聚簇索引与二级索引翻译

2017-07-30 20:08:53 1292

原创 互联网大厂面试题回忆录

博主工作3年了,面过几家大厂,应聘的岗位是高级Java开发工程师,以下是亲身经历的一些面试题,记录下来,留给需要的人~

2017-04-15 17:46:21 5137

转载 Java内存模型

java并发采用的是共享内存模型,线程之间的通信对程序员来说是透明的,内存可见性问题很容易困扰着java程序员,今天我们就来揭开java内存模型的神秘面纱。在揭开面纱之前,我们需要认识几个基础概念:内存屏障(memory Barriers),指令重排序,happens-before规则,as-if-serial语义。什么是 Memory Barrier(内存屏障)?内存屏障,又称内存栅栏,是一个CP

2017-03-15 11:51:28 757

原创 Runnable,Callable,Future,FutureTask的区别与联系

这几个接口和类,我们工作中可能会经常用到,但未必很清楚之间的区别和联系~

2016-09-09 19:16:40 1508

原创 如何读取Java项目不同路径的配置文件

搭建项目的时候离不开配置文件,项目的配置文件通常会出现在两种位置: 1、src->main->resources 2、磁盘文件夹中(比如D:\opt\wf\activity)对于第一种位置,可以使用下面这种方式ClassLoader cl = Thread.currentThread().getContextClassLoader();InputStream inputStream = cl.

2016-09-07 20:27:00 3227

原创 使用线程池与CountDownLatch多线程提升系统性能

下面这个业务场景,大家可能都会遇到,在遍历一个list的时候,需要对list中的每个对象,做一些复杂又耗时的操作,比如取出对象的uid,远程调用一次userservice的getUserByUid方法,这属于IO操作了,可怕的是遍历到每个对象时,都得执行一次这种RPC的IO操作(甚至不止一次,因为可能还有别的接口需要去调)还有复杂的业务逻辑需要cpu去计算。以上这种场景,属于IO操作和CPU操作混合

2016-08-17 21:03:23 7659

转载 AWK的NR和FNR详解

书上说:NR,表示awk开始执行程序后所读取的数据行数.FNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计.下面看两个例子:1,对于单个文件NR 和FNR 的 输出结果一样的 :awk ‘{print NR,$0}’ file11 a b c d 2 a b d c 3 a c b dawk ‘{print FNR,$0}’ file11 a b c d 2 a b

2016-06-21 18:28:42 2993

原创 使用Java如何让需求在指定时间内生效

比如说端午节有个运营活动,只在6月7号到6月11号之间,过期就自动下线。下面代码就可以实现这个功能。static{ String s1="2016-06-07 00:00:00"; String s2="2016-06-12 00:00:00"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd

2016-06-12 11:21:03 2872

转载 设计原则(开发必知必会)

1、单一职责原则一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。from:百度百科2、开闭原则(Open Close Principle)开闭原则就是说对扩

2016-05-14 11:55:10 766

转载 使用Redis的Java客户端Jedis

Jedis提供了多种操作方式:单机单连接方式、单机连接池方式、多机分布式+连接池方式。预备jedis-2.5.2commons-pool2-2.2.jar使用单连接此方式仅建议用于开发环境做调试用。// 创建连接String host = "192.168.56.102";int port = 6379;Jedis client = new Jedis(

2016-01-04 18:05:15 1598

原创 maven + jetty配置context path

在工作中,会遇到开发环境和线上环境,请求url不同的情况,就需要在开发环境中配置一下context path,来模拟线上环境。 org.mortbay.jetty jetty-maven-plugin 9966 foo 0 80 60000

2015-12-07 15:05:14 4644

转载 chrome jsonView插件安装

chrome 应用商店打不开,想装插件愁死人了。今天想到一个好方法,以 jsonView插件为例分享一下。1、打开 https://github.com ;2、搜索 jsonView 链接:https://github.com/search?utf8=%E2%9C%93&q=jsonview;3、选择需要的插件(我是选这个gildas-lormeau/JSONVie

2015-11-22 19:30:31 1452

转载 探索 ConcurrentHashMap 高并发性的实现机制

Java 内存模型由于 ConcurrentHashMap 是建立在 Java 内存模型基础上的,为了更好的理解 ConcurrentHashMap,让我们首先来了解一下 Java 的内存模型。Java 语言的内存模型由一些规则组成,这些规则确定线程对内存的访问如何排序以及何时可以确保它们对线程是可见的。下面我们将分别介绍 Java 内存模型的重排序,内存可见性和 happens-

2015-10-09 16:02:11 1102

转载 JVM参数优化指南

堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355

2015-09-18 13:59:23 1130

转载 使用jstat分析系统的垃圾回收情况

jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒输出结果S0 — Heap上的 Survivor space 0 区已使用空间的百分比     S1 — Heap上的 Survivor space 1 区已使用空间的百分比     E   — Heap上的 Eden space 区已使用空间的百分比

2015-09-16 15:31:56 8569

转载 使用 awk 命令行快速分析 accesslog访问日志

IBM HTTP Server 访问日志的格式定义日志的格式我们可以在 IBM HTTP Server 的配置文件中,使用预定义的经典格式,或者自定义访问日志的格式。下文中如无特别说明,将假设日志使用名称为 combined的经典格式。 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i

2015-09-15 17:34:14 8440

转载 log4j日志配置详解

1、配置根Logger:log4j.rootLogger = [ level ] , appenderName, appenderName2level:日志的级别,指定这条日志信息的重要性。分为ALL DEBUG , INFO ,WARN ,ERROR四种,分别对应Logger类的四种方法debug(Object message ) ;info(Object message

2015-08-27 10:50:05 851

原创 如何查看线上机器的QPS

注:本文作者是笔者的leader背景:线上有一个推荐服务,日志量比较大,想确认下是不是qps过高问题:如何根据日志查看一个服务的qpstail -f XXX.log,可以发现日志格式如下:[8708-10 14:51:44 638 INFO ] [async task worker[61]] recommend.components.KeywordService[8

2015-08-13 19:42:56 17754 6

原创 velocity中调用Java代码无效或者无法debug

velocity调用Java代码的标准写法是这样的$!{classname.staticMethod()}或者$!{objectname.instanceMethod()}比如:$!{salehelper.isWltUser($info.getCateID(),$info.getUserID())}这句代码,属于对象调用实例方法的类型,需要注意的是两个地方:1、语法格式必须

2015-06-19 17:00:37 5403

转载 Velocity官方指南-Velocity是如何工作的

基本模式当你在一个应用程序或者一个servlet里,或者在其他任何一个地方使用Velocity时,通常按照如下方式处理:初始化Velocity。Velocity可以使用两种模式,作为“单独的运行时实例”的单例模式(在下面的内容会介绍),你仅仅只需要初始化一次。创建一个Context对象(后面会介绍这是什么)。把你的数据对象添加到Context(上下文)。选择一个模板。‘合并’ 模板

2015-05-25 13:52:29 1201

原创 浅析JVM垃圾回收机制

首先我们需要知道Java的内存分配与回收全部由JVM垃圾回收机制自动完成。每种JVM实现可能采用不同的方法实现垃圾回收机制。在收购SUN之前,Oracle使用的是JRockit JVM,收购之后使用HotSpot JVM。目前Oracle拥有两种JVM实现并且一段时间后两个JVM实现会合二为一。HotSpot JVM是目前Oracle SE平台标准核心组件的一部分。市面上探讨垃圾回收机制,默认都是

2015-04-05 19:21:30 5971

转载 浅析Java虚拟机结构与机制

本文旨在给所有希望了解JVM(Java Virtual Machine)的同学一个概念性的入门,主要介绍了JVM的组成部分以及它们内部工作的机制和原理。当然本文只是一个简单的入门,不会涉及过多繁杂的参数和配置,感兴趣的同学可以做更深入的研究,在研究JVM的过程中会发现,其实JVM本身就是一个计算机体系结构,很多原理和我们平时的硬件、微机原理、操作系统都有十分相似的地方,所以学习JVM本身也是加深自

2015-03-22 22:54:21 1016

转载 Java8 Stream 教程

1. Stream初体验我们先来看看Java里面是怎么定义Stream的:A sequence of elements supporting sequential and parallel aggregate operations.我们来解读一下上面的那句话:Stream是元素的集合,这点让Stream看起来用些类似Iterator;可以支持顺序和并行的对原

2015-02-24 23:46:22 1455

原创 Java8 Stream初体验

如果你能说对下面这个语句的正确输出,那么恭喜你,这篇文章就不用看了~List nums = Arrays.asList(1,1,null,2,3,4,null,5,6,7,8,9,10); System.out.println("sum is:"+nums.stream().filter(num -> num != null).distinct(). mapToInt(num ->

2015-02-23 21:45:48 3134

转载 深入理解Java8 lambda表达式

本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化。本文是该系列的第一篇,主要介绍Java8对屌丝码农最有吸引力的一个特性—lambda表达式。java8的安装工欲善其器必先利其器,首先安装JDK8。过程省略,大家应该都可以自己搞定。但是有一点这里强调一下(Wi

2015-02-22 23:12:11 1848

原创 使用lambda表达式操作HashMap

Java8之前,如果想根据map的value值来排序话,比较繁琐参看如何将HashMap,按照value值排序 现在借助于lambda表达式,就方便多了。Map map=new HashMap<>(); map.put("derek",24 ); map.put("dad", 51); map.put("mom", 46); List> list=new ArrayList

2015-02-22 23:03:14 15007

转载 Java开发者易犯错误Top10

本文总结了Java开发者经常会犯的前十种错误列表。Top1. 数组转换为数组列表将数组转换为数组列表,开发者经常会这样做:[java] view plaincopyList list = Arrays.asList(arr);  Arrays.asList()将返回一个数组内部是私有静态类的Ar

2015-02-20 12:24:58 1273

原创 【leetcode SQL】Customers Who Never Order

Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never order anything.Table: Customers.+----+-------+| Id | Na

2015-02-01 22:06:54 2771

学生电子账本系统

软件工程课设,采用swing+jdbc,后台采用mysql数据库,两张表,一张登陆表,一张账本表,大家可以轻松自己创建。

2013-04-27

android入门到精通

不可多得,通过代码学习,迅速上手。熟能生巧,android开发不在话下哦!

2013-03-23

空空如也

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

TA关注的人

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