自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (1)
  • 收藏
  • 关注

原创 异步化,高并发大杀器

聊聊如何让项目异步化的一些事。1.同步和异步,阻塞和非阻塞同步和异步,阻塞和非阻塞, 这个几个词已经是老生常谈,当时常常还是有很多同学分不清楚,以为同步肯定就是阻塞,异步肯定就是非阻塞,其他他们不是一回事。同步和异步关注的是结果消息的通信机制同步:同步的意思就是调用方需要主动等待结果的返回异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等。...

2019-09-29 21:40:28 156

原创 大型互联网架构演化简史

对于一个大型网站,主要有以下几个特征:支撑海量数据2非常高的访问量我们常见的大型网站,如百度、淘宝、京东等,都是一个分布式系统。这么复杂的系统也不是一天建成的,每个系统都经历了漫长的演变过程。架构演变在大型网站中,其最核心的功能就是 计算 和 存储。因此系统演变过程也主要围绕这两点进行。1 单机系统在网站刚刚起步时,数据量、访问量都非常小,通常情况下,只需一台应用服务器就可以了。...

2019-09-29 21:39:41 88

原创 被裁员不是寒冬重点,重点是怎么破解职业瓶颈!

回顾过往,2017年是互联网高速发展的一年,共享经济仅仅一个概念就成就了多少家公司,各种共享单车满天飞。然而到了2018年下旬,好像所有的情况都发生了变化,你会发现所有互联网从业人员都在大喊,互联网寒冬来了,摩拜卖身于美团,美团又大裁员引发职言的刷屏,网易、滴滴、爱奇艺、京东这些各自领域的强者企业也都发生着裁员。除此之外,相对小些的公司比如知乎、锤子科技、斗鱼等企业也分别进行了不同程度的裁员,...

2019-09-29 21:36:03 167

原创 来自招聘官:很现实、很暴力的面试法则

编者有言:面试,毫无疑问是“金九银十”大家伙儿最熟悉的场景之一。简历是面试者与招聘者的博弈,你懂得包装,招聘官也懂得拆装。那么究竟怎样做才能顺利地通过面试,亦或是从海量面试者中找到最匹配的人才?本文将从招聘官角度提出一些建议和看法。在互联网极速膨胀的社会背景下,各行各业涌入互联网的IT民工日益增大。早在2016年,我司发布了Java、IOS工程师的招聘信息,就Java工程师单个岗位而言,日收简...

2019-09-29 21:34:57 235

原创 不看后悔的腾讯面试题:SQL语句为什么执行的很慢?

说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。之前腾讯面试的实话,也问到这个问题了,不过答的很不好,之前没去想过相关原因,导致一时之间扯不出来。所以今天,我带大家来详细扯一下有哪些原因,相信你看完之后一定会有所收获,不然你打我。分类讨论:一条 SQL 语句执行的很慢,那...

2019-09-29 21:29:41 173

转载 一个很懂业务的资深技术Leader的技术管理成长之路

大概两个多月前,一次跟双生聊天交流时,谈到了一些技术管理上的故事和心路历程,双生建议我写下来,分享给大家。我当时没放在心上,心想这种管理上的事情, 各有各的方法,本身没有对和错,只有合适不合适,何况都是一些不成篇的经历而已,适合互动交流,但很难提炼成文章。无独有偶,后来某次,在北邮漫咖啡与 Airbnb Engineering Manger 陈扬交流时,他问了我同样的事情,关于我在技术管理上的...

2019-09-29 21:22:33 651

原创 在阿里一年,我颠覆了曾经坚信不疑的技术思维

2018.5.31~2019.5.31,一段精彩的旅程,渡过了在阿里一年的时光,这段时光有快乐、有焦虑、有迷茫、更有思考,思考的是自己过去的种种不足、思考的是一些现在看来之前错误的想法、思考的是如何成为一个更好的技术人,将这一些思考分享给看到这些文字的每个人,共勉。一、应当如何面对线上的异常/故障看起来毫无意义的一个问题,碰到线上异常/故障如何面对,排查解决了不就好了,但是这真的只是第一层。...

2019-09-29 21:17:39 165

原创 如何写出没有Bug的代码?

1947年9月9日,美国海军准将Grace Hopper在哈佛学院计算机实验室里使用MarkII和MarkIII计算机进行研究工作。她的团队跟踪到MarkII上的一个错误,操作人员发现是由于一只飞蛾钻到了MarkII的继电器里导致的。团队清除了这只飞蛾,一切恢复正常。当时的工作人员记录了这样一句日志:“First actual case of bug being found.”这次著名的事件,犹...

2019-09-29 21:12:50 317

原创 编写高性能Java代码的最佳实践

介绍在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法。我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。我们还将看到一些常见的Java代码优化方法以及最佳编码实践。最后,我们将看看用于提升Java应用程序性能的JVM调优技巧和架构调整。请注意,性能优化是一个很宽泛的话题,而本文只是对JVM探索的一个起点。性能指标在...

2019-09-28 21:44:01 130

原创 如何优化Java程序设计和编码提高性能

前言:通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。一、对象的生成和大小的调整。JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数,从而常常会生成大量的对象(或实例...

2019-09-28 21:39:26 118

原创 软件项目管理的流程控制分析

前言软件项目管理是指在软件项目研发过程中,对软件项目进行高效率的计划、组织、指导和控制,将研发任务与公司有关部门和相关人员紧密关联起来,使部门和工作人员目标明确、业绩清晰。项目管理更强调项目负责人的作用和团队的协作精神,其组织形式灵活,更加关注人的因素,关注客户和服务客户,着重于提高软件项目研发的效率和质量,体现为一种工作流程管理。一、项目启动阶段项目启动阶段的任务是识别客户需求内容,对客户...

2019-09-28 21:31:38 833

原创 如何编写出拥抱变化的代码

摘要:编写高效优质的代码一直是程序员所追求的目标之一,那么什么样的代码才叫优质呢?其中最重要的莫过于易维护、易修改。本文作者从面向对象和SOLID两大方面,非常详细地总结了如何编写出易修改的代码,绝对让你受益匪浅。在实际的开发中,编写出易维护和易接受变化的代码并非易事,想要实现可能更加困难重重:源码难于理解、依赖关系指向不明、耦合也很令人头疼。难道就真的就没有办法了吗?本文中我们一起探讨几个技...

2019-09-28 21:23:26 154

原创 深度解析:清理烂代码

摘要:烂代码不一定是问题,只要它们没有出错,没有人会对它嗤之以鼻。但不幸的是,它们没被发现的概率太小了。错误会被发现。需要新的功能,新系统发布了。现在你不得不面对这堆恐怖的代码,试着去清理它们。猜猜看怎么了!你正”继承“(接收)了一堆混乱的旧代码。恭喜你!现在都是你的了。混乱的代码可能来自任何地方。中间件,网络,可能来自你自己的公司。你知道在一个角落里有一个家伙,没有人过去管他在做什么。猜猜...

2019-09-28 21:15:10 205

原创 Java编程性能优化的技巧

1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2.尽量避免随意使用静态变量要知道,当某个对...

2019-09-28 21:10:54 197

原创 深入理解Java虚拟机——学习感悟以及笔记

一、为什么要学习Java虚拟机?这里我们使用举例来说明为什么要学习Java虚拟机,其实这个问题就和为什么要学习数据结构和算法是一个道理,工欲善其事,必先利其器。曾经的我经常害怕处理内存溢出的问题,因为不知道他为什么会出现这个问题,当我在看了这本书以后明白了垃圾回收算法,以及JVM是如何帮助我们处理GC的,这个时候当出现这个问题的时候我就明白需要查找GC Root,或者查看GC日志,去查找这个问题...

2019-09-28 21:06:56 469

转载 分布式事务解决方案框架(LCN)

一、事物概念事物特性(ACID)原子性(A):所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。一致性(C):事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后...

2019-09-28 21:02:25 1145

转载 Java基础知识的三十个经典问答

1、面向对象的特点抽象:抽象是或略一个主题中与当前目标的无关的因素,一边充分考虑有关的内容。抽象并不能解决目标中所有的问题,只能选择其中的一部分,忽略其他的部分。抽象包含两个方面:一是过程抽象;一是数据抽象。继承:继承是一种联接类的层次模型,允许和鼓励类的重用,提供了一种明确的共性的方法。对象的一个新类可以从现有的类中派生,这叫做类的继承。心累继承了原始类的特性,新类称为原始类的派生类或者是...

2019-09-28 21:01:09 203

转载 使用 Spring 更好地处理 Struts 动作

一、为什么 Spring 这么了不起?Spring 的创立者 Rod Johnson 以一种批判的眼光看待 Java? 企业软件开发,并且提议很多企业难题都能够通过战略地使用 IOC 模式(也称作依赖注入)来解决。当 Rod 和一个具有奉献精神的开放源码开发者团队将这个理论应用于实践时,结果就产生了 Spring 框架。简言之,Spring 是一个轻型的容器,利用它可以使用一个外部 XML 配置...

2019-09-28 20:58:38 145

原创 redis搭建集群并用TreeSoft管理

前言:redis作为一款高效的NOSQL数据库已经深入贯彻和落实到我们的日常开发代码中,作为缓存、时间控制、数据仓库、队列等使用方法层出不穷,简直是开写代码、居家旅行之必备良药。曾经,我们的项目都是单体的,直到后来逐渐演变为微服务—— 一个将我们的工程解耦成多个工程的体系。然后随着我们项目的访问量越来越高,后台的吞吐量也越来越大。如果我们还采用的单体redis,性能很容易形成瓶颈。如何突破单体r...

2019-09-27 17:05:27 301

原创 基于线程池技术的web服务器

前言:首先简单模拟一个场景,前端有一个输入框,有一个按钮,点击这个按钮可以实现搜索输入框中的相关的文本和图片(类似于百度、谷歌搜索).看似一个简单的功能,后端处理也不难,前端发起一个请求,后端接受到这个请求,获取前端输入的内容,然后用搜索服务查找相关的数据返回给前端。但是问题来了,可能不是一个用户在搜索,假如有一万个用户同时发起请求呢?后端如何处理?如果按照单机的 处理方式,很容易线程堵死,程序...

2019-09-27 16:59:04 185

原创 阿里P8技术心得:java反射机制的核心原理

一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。Java垃圾回收(Garbage Collection):自动释放不用对象内存空...

2019-09-27 16:51:02 131

原创 Java的常用开发工具总汇

java常用的开发工具。都说工欲善其事必先利其器,要想学好java这门语言,选择一款好用顺手的开发工具是必不可少的。另外面试java工作时开发工具的使用也是一个重要的考核点。要想全面了解java开发工具,我们首先需要先了解一下java程序的开发过程,通过这个过程我们能够了解到java开发都需要用到那些工具。首先我们先了解完整项目开发过程,如图所示:从上图中我们能看到一个完整的java项目的...

2019-09-27 16:31:06 404

原创 阿里架构师的Java总结篇系列——Java泛型

一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); list.add("corn"); list.add(100);...

2019-09-27 16:23:03 115

原创 阿里架构师的Java总结篇系列——Java多线程(三)

一.一个典型的Java线程安全例子public class ThreadTest { public static void main(String[] args) { Account account = new Account("123456", 1000); DrawMoneyRunnable drawMoneyRunnable = new DrawMoneyRunnable(acc...

2019-09-27 16:16:40 143

原创 阿里架构师的Java总结篇系列——Java多线程(二)

四.Java多线程的阻塞状态与线程控制上文已经提到Java阻塞的几种具体类型。下面分别看下引起Java线程阻塞的主要方法。1.join()join —— 让一个线程等待另一个线程完成才继续执行。如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继续执行。 public class ThreadTest { public static voi...

2019-09-27 16:08:30 100

原创 阿里架构师的Java总结篇系列——Java多线程(一)

多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t ...

2019-09-27 16:03:25 203

原创 阿里架构师讲解Java核心技术的14个问题,你都知道吗?

1.Java是解释运行的?我们开发的Java的源代码,首先通过Javac编译成字节码(bytecode),然后再运行时通过Java虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码。但是常见的JVM,比如我们大多是情况使用的Oracle JDK提供的Hotspot JVM,都提供了JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT(Just-In-Time)能够在...

2019-09-27 15:51:58 198

原创 搭建java项目开发环境

一、开发工具1、JDK版本: jdk1.8.0_252、Maven版本 apache-maven-3.2.33、Jboss版本: jboss-eap-6.2.04、Eclipse版本:Eclipse Java EE IDE for Web Developers.Version: Luna Service Release 1 (4.4.1)二、安装步骤1、JDK...

2019-09-27 15:43:38 394

原创 Java架构师必备的十种能力模型

架构师在很多人眼中是一个非常高大上的职业, 就像武侠小说中的绝世高手一样, 关键时刻可以起到扭转乾坤的作用, 是团队中的灵魂人物. 回想我自己做一线架构师的过程中, 也没有经历过比较系统的培训, 都是摸着石头过河. 近期在培养架构师的过程中, 促使我一直在思考, 一个合格的架构师到底应该具备哪些能力? 对希望成长为架构师的同学, 或者在承担架构师职责的同学, 需要提供哪些方面的指导和帮助, 才能让...

2019-09-26 15:35:51 763

原创 你有成为互联网团队管理者的潜力吗?

上个星期,某朋友在朋友圈发了一张在医院挂水的照片,并自嘲地写到“连续996一个月了,在互联网团队工作,真心扛不住啊”,有个调皮的小伙伴在评论区嘲讽道:“一个月?都一年多了,没见你们公司业务有啥增长呀,你们天天都在瞎忙啥呢?”记得去年在罗振宇的跨年演讲中,他说互联网公司的996时代已经过去,247才是大势所趋,并声称某讯某团队是247——一天24小时,上7天班,如何如何努力,如何如何勤奋。的确,...

2019-09-26 15:33:59 121

原创 阿里架构师教你微服务化后缓存怎么做

摘要最近接手的代码中遇到几个缓存的问题,存在一些设计原则的问题,这里总结一下,希望可以对你有帮助问题问题1: 店铺数据的获取,将用户关注的数据放在店铺信息一起返回对外提供的接口List<Shop> getPageShop(final Query query,final Boolean cache);返回的店铺信息当调用方设置cache为true时,因为有缓存的存在...

2019-09-26 15:31:31 208

原创 深入学习Java序列化

前言对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题,就抽时间看了下 Java序列化的底层实现,这篇文章算是这次的学习小结吧。第一部分:WhatJava序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程。那么为什么需要序...

2019-09-26 15:26:45 122

原创 在面试中如何展示虚拟机和内存调优技能

在这个寒冬中,我们得不断提升自己的能力,所以这次,我就针对“虚拟机描述”这个点扩展出去,具体讲些在面试中展示虚拟机内存调优能力的话术。在面试中展示出这个技能有什么好处?初学者或初级程序员在面试时如果能证明自己具有这方面的能力,这相当有利,因为这是针对5年左右相关经验的高级程序员的要求。如果在面试时面试官主动问及这方面的问题,大家可以按照如下的思路由浅入深地依次阐述,如果没问,大家也可以用到下面提...

2019-09-26 15:25:10 123

原创 每个Java工程师,都应该掌握数据库事务!

一、认识事务1.1 为什么需要数据库事务转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:将A账户的金额减少100元将B账户的金额增加100元。在这个过程中可能会出现以下问题:转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户...

2019-09-26 15:23:42 184

原创 程序员的职场晋升,别人为什么总比你走得快?

阅读前请先思考:你最重要的竞争力是什么?你为何焦虑?每个程序员心里多多少少都有一个成为技术大牛的梦,毕竟梦想总是要有的,万一实现了呢?奇葩说第五季里有一期辩题是《高薪不喜欢的还是低薪喜欢的工作,你选哪一个?》在所有人的发言中,蔡康永的一句话最让人触动:不管怎样,选一份能让自己持续成长的工作。如何才能持续成长,是每一个程序员都绕不开的话题。每年大量涌入刚毕业的年轻人以及培训机构出来的...

2019-09-26 15:17:09 155

原创 架构师能力模型,架构师应该掌握那些东西?

架构师在很多人眼中是一个非常高大上的职业, 就像武侠小说中的绝世高手一样, 关键时刻可以起到扭转乾坤的作用, 是团队中的灵魂人物. 回想我自己做一线架构师的过程中, 也没有经历过比较系统的培训, 都是摸着石头过河. 近期在培养架构师的过程中, 促使我一直在思考, 一个合格的架构师到底应该具备哪些能力? 对希望成长为架构师的同学, 或者在承担架构师职责的同学, 需要提供哪些方面的指导和帮助, 才能让...

2019-09-26 15:13:45 182

原创 什么是面向切面编程AOP

一、前言看过一些描述关于AOP切面编程的文章,写的太概念化让人很难理解,下面是我自己的理解,希望能帮到新人,如有错误欢迎指正。二、AOP是什么,它的应用场景是什么?AOP也跟IOC,OOP这些思想一样它只是一种编程思想。Autofac、Spring.Net、Castle这些组件实现了AOP切面编程思想的框架。AOP说白了就是在运行时,动态的将代码切入到类的指定方法的指定位置上,这种思想就是面...

2019-09-26 15:12:04 200

原创 作为外包的Java程序员,你冤枉了吗?

俗话说“男怕入错行,女怕嫁错郎”,这句式套到程序员身上,又能衍生出不少版本,其中有一条便是,“程序员怕入外包”。似乎一旦做了外包,就和“不甚专业”画上了等号,大有“一入外包深似海,从此初心是路人”的怀才不遇感。那么,你的能力真的配得上这份野心吗?作为外包,你真的冤枉了吗?如果你是 IT 职场的一员,想必知道外包吧?外包通俗说来,就是程序员等技术类型的工作人员,被第三方劳务派遣公司外包到一些大...

2019-09-26 15:09:34 496

原创 Java新特性之JavaScript引擎

一. 什么是JavaScript引擎早在Java 6时就引入了JavaScript引擎Rhino,它支持ECMAScript 5.1规范,它使用JSR 292言特性。Java 7时引入了invokedynamic,将JavaScript编译成Java字节码。Java 8引入的新的JavaScript引擎Nashorn比Rhino性能提高多倍,Nashorn就是javax.script.Scrip...

2019-09-25 16:06:35 1159

原创 什么是慢查询?如何通过慢查询日志优化?

日志就跟人们写的日记一样,记录着过往的事情。但是人的日记是主观的(记自己想记的内容),而数据库的日志是客观的,根据记录内容分为以下好几种日志:错误日志:记录启动、运行或停止mysqld时出现的问题。通用日志:记录建立的客户端连接和执行的语句。更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。二进制日志:记录所有更改数据的语句。还用于复制。慢查询日志:记录所有执行时间...

2019-09-25 15:59:48 588 1

Java中高级核心知识全面解析.pdf

今天分享给大家的都是目前主流企业使用最高频的面试题库(包含:Java基础、网络、Linux、数据库结构与算法、数据库、系统设计、必会工具、面试简历模板等),也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂。

2021-02-19

空空如也

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

TA关注的人

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