自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 跨域问题与SpringBoot解决方案

什么是跨域?定义:浏览器从一个域名的网页取请求另一个域名下的东西。通俗点说,浏览器直接从A域访问B域中的资源是不被允许的,如果想要访问,就需要进行一步操作,这操作就叫“跨域”。例如,你从百度的页面,点击一个按钮,请求了新浪的一个接口,这就进行了跨域。不单单只有域名不同就是跨域,域名、端口、协议其一不同就是不同的域,请求资源需要跨域。为什么要跨域?为什么需要跨域,而不直接访问其他域下的资源呢?...

2019-06-12 20:23:28 3960 3

原创 来着一 名40岁” 老 “ 程序员 的感慨,如何才能突破瓶颈,成为优秀的架构师

本文是国外一位 40 岁“老”程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期、衰竭期较长的知识领域中。译文大意如下:我是一名程序员,几个月前刚过完四十岁生日。某个星期六的早晨,我参加了一个 React Native 技术交流会,演讲者正在竭力说服我们为什么它会成为移动开发领域真正的下一个大事件。但对我来说,它有点像十五年前的 jsp ,将所有的逻辑都放在演示代码里面。但我“...

2019-06-04 14:03:01 2931

原创 JVM系列之Java内存结构详解

#Java内存结构详解相信大多数Javaer对Java的内存结构都有一定的了解,但如果对于Java的内存结构只停留的"堆","栈"中显然是不够的。今天来给大家详细谈一谈Java的内存区域结构,本文基于 JDK7 的内存结构做讲解,JDK8的内存结构加上了metaspace,有些许变动,想详细了解的同学请自行翻阅相关资料。文章结构1.内存结构图2.根据内存结构图各个区域做详细讲解##1...

2019-05-30 20:29:59 440

原创 2019 程序员下半年跳槽如何找准方向?资深猎头顾问告诉你!

作为一名即将求职的程序员,面对一个可能跟近些年非常不同的 2019 年,你的就业机会和风口会出现在哪里?在这种新环境下,工作应该选择大厂还是小公司?已有几年工作经验的老兵,又应该如何保持和提升自身竞争力,转被动为主动?针对这些问题,资深职业顾问Osborn将从他丰富的候选人和互联网企业客户的服务经验出发,在本文中为你分析 2019 年程序员求职的必备技能和职业规划技巧。2019 年程序员就业...

2019-05-28 20:09:29 338

原创 Java虚拟机必学之四大知识要点

作为一位 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,我们还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutOfMemory 等异常时,不会束手无策,不会一脸懵逼地上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。这次,我会从我专栏里提取了学习 Java 虚拟机的 X 大知识要点,助力大家深入理解 JVM...

2019-06-15 21:52:35 237

原创 Java异常处理最佳实践及陷阱防范

前言不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”。无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时,往往还会导致其他新的问题出现。所以我们要时刻注意这些陷阱以及需要一套“最佳实践”来建立起一个完善的异常处理机制。正文异常分类首先,这里我画了一个异常分类的结构图。在JDK中,Throwable是所有异常的父类,其下分为”Erro...

2019-06-14 21:21:14 255

原创 如何提高使用Java反射的效率?

难道反射真的很慢?那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过,只是“道听途说”。下面我们就直接通过一些测试用例来直观的感受一下“反射”。前言在我们平时的工作或者面试中,都会经常遇到“反射”这个知识点,通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另一种声音的出现,那就是“反射”很慢,要少用。难道反射真的很慢?那跟我们平时...

2019-06-14 21:17:08 373

原创 java写入文件的几种方法分享

这篇文章主要介绍了java写入文件的几种方法,需要的朋友可以参考下一、FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。替换所有现有的内容与新的内容。new FileWriter(f...

2019-06-14 21:15:26 3132

原创 Java和操作系统交互细节

结合 CPU 理解一行 Java 代码是怎么执行的根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单元,存储单元。控制单元是 CPU 的控制中心, CPU 需要通过它才知道下一步做什么,也就是执行什么指令,控制单元又包含:指令寄存器(IR ),指...

2019-06-14 21:11:02 290

原创 Java对象在内存的结构

一、内存布局对象在内存中存储的结构由三部分组成:对象头、实例数据、对齐填充。对象头MarkWord(标记字段) :哈希码、分代年龄、锁标志位、偏向线程ID、偏向时间戳等信息。Mark Word被设计成了一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。例外:如果是数组的话,还需要有一块区域存放数组大小,因为没办法从元数据确认数组大小,所以要存...

2019-06-14 21:10:01 238

原创 Java并发 -- 线程生命周期

1. 初始状态线程已经被创建,但还不允许分配CPU执行该状态属于 编程语言 所特有,仅仅在编程语言层面被创建,在操作系统层面,真正的线程还没有创建2. 可运行状态线程可以分配CPU执行,该状态下真正的操作系统线程已经被创建3. 运行状态当有空闲的CPU时,操作系统会将其分配给处于 可运行状态 的线程,被分配到CPU的线程的状态就转换为 运行状态休眠状态处于 运行状态 的...

2019-06-14 21:09:04 176

原创 一线互联网常见的14个Java面试题,你颤抖了吗程序员

跳槽不算频繁,但参加过不少面试(电话面试、face to face面试),面过大/小公司、互联网/传统软件公司,面糊过(眼高手低,缺乏实战经验,挂掉),也面过人,所幸未因失败而气馁,在此过程中不断查缺补漏,养成了踏实、追本溯源、持续改进的习惯,特此将自己经历过、构思过的一些面试题记录下来,如果答案有问题,欢迎拍砖讨论,希望能对找工作或者感兴趣的同学有所帮助,陆续整理中。一、 synchroniz...

2019-06-14 21:08:03 170

原创 面试这样回答Java调优,至少加1000块!!!

Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将 Java ...

2019-06-14 16:56:43 280

原创 来自一位架构师的分享,学习Java多线程的一些总结

Java多线程的应用复杂性之如jvm有限的几个内存方面的操作和规范,就像无数纷繁复杂的应用逻辑建立在有限的指令集上。如何写出线程安全的程序,有各种各样需要遵循的规则,如果硬是去记忆这些写法或者规则,就事倍功半了,最好是先学习原理,抓住问题的主干,再拓展细节,这也是大家公认的学习某种技术的方式。对于多线程的问题,java使用java内存模型 JMM来保证多个线程可以有效地,正确地工作。学习...

2019-06-14 16:55:07 200

原创 如何从 Java 8 升级到 Java 12,升级收益及问题处理技巧

核心要点从 Java 8 之后,Java 引入了很多有用的新语言特性,以及新工具和性能改善(尤其是垃圾收集相关的优化)。在选择升级时,我们所面临的选择是升级到最新的 Java(12)并准备每六个月升级一次,还是升级到最新的 LTS(11)版本,这样能够给自己三年的时间再去考虑下一次升级;不要忽略编译器警告。在现代 Java 领域中,废弃的功能要被更严肃地对待,Java 10 和 Java ...

2019-06-13 21:30:59 3112

原创 如何做高可用的架构设计?

定义目标既然我们的目标是做到高可用,那么我们就有必要先明确清楚高可用的含义,并通过拆解目标,让目标可以被量化。按照我的理解,可以将目标按照以下三条进行拆解:1. 保持业务高稳定性系统稳定性是高可用的根本目的,通俗的说,系统能持续可用,不会无故宕机,在高压下仍然能正常工作。2. 支持快速定位故障从实际工程的角度看,不出故障的服务是不存在的,所以出了故障要能够快速发现和定位,在外部用户发现前...

2019-06-13 21:30:12 623

原创 数据库中的建表小技能

一、如何从建表来展现自己的能力在数据库方面,对于java 高级程序员而言,不仅需要会基本的增删改查,而且需要具备一定的“优化”方面的技能。优化是个大话题,可以从索引,建表和SQL 调优(SQL Tuning)方面入手,这个我们来分析下建表时需要注意的优化点。我一般会问候选人,“你有没有设计过数据表?”,大多数回答是设计过,接着我会比较阴险地问下:“你在设计表时是否用到了三泛式”?很多计算机专业的...

2019-06-13 21:28:53 280

原创 Java面试题:类加载器

1. Java类加载器Java源代码.java文件通过编译成字节码.class文件后,需要被加载到Java虚拟机的内存空间中使用,这个过程就是类加载。类加载依靠的是Java类加载器Java类加载器是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载的,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件的位置与文件系...

2019-06-13 21:17:40 395

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

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

2019-06-13 21:16:32 277

原创 面试京东Java架构师,竟然被问这些题,学到了!

前言其实收到jd的面试邀请的时候,我真心有点小激动。因为在地理位置上,jd应该是最合适我也是最想去的。但是我在看到方向的时候其实心里有很多的问题,也做好了被拒的准备。面试过程及感受因为是开车去,所以到亦庄的时候第一个问题是找车位,但是京东周边的马路上是基本不可能找到的了,还看到一个司机因为倒车慢了一点,被另外的小车司机迅速停入,吵吵了半天。最后在一个角落找到一个停车场,需要预约码才能停,门口...

2019-06-13 21:09:22 843 1

原创 15款Java程序员必备的开发工具

如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言,我们没有办法不接触它。对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂。下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是——它们都是为了给Java编码和开发提供卓越的支持。1. JDK(Jav...

2019-06-13 21:01:41 1231

原创 关于Netty我们都需要知道什么?

1.BIO、NIO和AIO的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的I/O请求都是由...

2019-06-13 21:00:43 198

原创 Java学习总结——多线程编程

Java多线程编程一、创建线程的方法一:继承:extends Thread 重写run()方法举个栗子

2019-06-13 20:39:18 153

原创 彻底理解Spring容器和应用上下文

有了Spring之后,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程,走啊走啊,走到哪里,需要另外的对象来协助了,就给Spring说,我想要个对象——于是Spring就很贴心的给你个对象。听起来似乎很简单,使用起来也不难,但是如果仅仅是这样的拿来主义,倒也洒脱,不用费什么脑子。。。可是,你就真的不关心,Spring是从哪里把对象给你的吗?如果...

2019-06-13 16:03:28 144

原创 Java多线程-Callable和Future

Callable和Future出现的原因创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执...

2019-06-12 21:36:17 163

原创 Java多线程傻瓜入门介绍

现代计算机能够同时执行多个操作。在硬件改进和更智能的操作系统的支持下,多个操作的功能使您的程序在执行速度和响应速度方面运行得更快。编写利用这种功能的软件既迷人又棘手:它要求您了解计算机引擎盖下发生的情况。进程和线程:以正确的方式命名现代操作系统可以同时运行多个程序。这就是为什么您可以在浏览器(程序)中阅读本文,同时在您的媒体播放器(另一个程序)上听音乐。每个程序都被称为正在执行的进程。操作系...

2019-06-12 21:35:31 288

原创 架构师:每月最不愿给java程序员们做讲座了!总监要求,没办法!

在一些互联网公司,一些技术部门,为了提高整体团队的技术实力,公司会采取各种个样的方式与办法,比如从行业内找一些技术大牛来给员工们来一个技术讲座,有的讲座的确干货满满,的确让程序员们受益匪浅,特别是思想上感悟,能提少一些层次,当然请一些技术大牛肯定也是需要成本的,公司采取更多的方式是,让内部员工之间相互技术分享的活动,近期,一名架构师网友就分享了关于他的一些情况。据这名架构师网友说,他们公司用的...

2019-06-12 20:43:58 446

原创 论JVM爆炸的几种姿势及自救方法

前言如今不管是在面试还是在我们的工作中,OOM总是不断的出现在我们的视野中,所以我们有必要去了解一下导致OOM的原因以及一些基本的调整方法,大家可以通过下面的事例来了解一下什么样的代码会导致OOM,帮助我们以后在工作中能够通过异常信息来判断是JVM里面哪个区域出现了问题。先介绍一下笔者的相关编码环境。jdk:java version “1.8.0_121”ide:IntelliJ ...

2019-06-12 20:41:50 109

原创 JVM 优化

JVM优化配置OOM这 个缩写就是Java程序开发过程中让人最头痛的问题:Out of Memory。在很多开发人员的开发过程中,或多或少的都会遇到这类问题,这类问题定位比较困难,往往需要根据经验来判断可能出现问题的代码。原因主要是 两个:对象没有被释放(多种情况引起,往往是比较隐蔽的引用导致被Hold而无法被回收)。另一种就是真的Memory不够用了,需要增加JVM的 Heap来满足应用程序的...

2019-06-12 20:41:02 112

原创 Java 枚举 switch的用法

因有个判断需要处理不同系统类型跳转不同 系统。 考虑用switch + 枚举的方式。 具体使用案例如下:package com.b2b.common.constant; import com.base.utils.base.StringUtils; /** * 系统类型枚举 * @author shijing */public enum SystemType {...

2019-06-12 20:40:08 252

原创 Netty 简单样例分析

Netty 是JBoss旗下的io传输的框架,他利用java里面的nio来实现高效,稳定的io传输。作为io传输,就会有client和server,下面我们看看用netty怎样写client和serverClient:需要做的事情:配置client启动类ClientBootstrap bootstrap = new ClientBootstrap(…)根据不同的协议或者模式为c...

2019-06-12 20:39:06 94

原创 谈谈我们为什么要前后端分离

随着不同终端的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本,为了提升开发效率,前后端分离的需求越来越被重视,前端主要负责页面的展现和交互逻辑,后端主要负责业务和数据接口,同一份数据接口,我们可以定制开发多个版本。前后端不分离:在之前的开发方法,php代码写在HTML中,不存在纯粹的PHP文件和HTML文件,这就是前后端...

2019-06-12 14:58:52 284

原创 Java 面试:投行的 15 个多线程和并发面试题

多线程和并发问题已成为各种 Java 面试中必不可少的一部分。如果你准备参加投行的 Java 开发岗位面试,比如巴克莱银行(Barclays)、花旗银行(Citibank)、摩根史坦利投资公司(Morgan Stanley),你会遇到很多有关多线程的面试题。多线程和并发是投行面试的热门知识点,尤其是在面试有关电子交易开发工作时,他们喜欢用棘手的 Java 线程面试题轰炸面试者。他们希望确保面试者对...

2019-06-12 14:50:53 239

原创 Java后端开发三年,你不得不了解的JVM

JAVA程序员,三年是个坎,如果过了三年你还没有去研究JVM的话,那么你这个程序员只能是板砖的工具了。下面来个JVM的解析可好?JVM是Java Virtual Machine(Java虚拟机)的缩写,也就是指的JVM虚拟机,属于是一种虚构出来的计算机,在我们实际的电脑上来进行模拟各种计算机的功能的这么个东西。因为有了JVM的存在,搞JAVA的不再需要去关心什么时候去释放内存,也不会像C++程...

2019-06-06 20:50:02 200

原创 Netty 简单样例分析

Netty 是JBoss旗下的io传输的框架,他利用java里面的nio来实现高效,稳定的io传输。作为io传输,就会有client和server,下面我们看看用netty怎样写client和serverClient:需要做的事情:配置client启动类ClientBootstrap bootstrap = new ClientBootstrap(…)根据不同的协议或者模式为c...

2019-06-05 21:50:03 186

原创 Java+Netty实现的RESTful框架--netty-rest-server

在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。该框架提供了控制器注解、全局异常控制器、拦截器等功能。注解名称参考了Spring MVC,编译理解和记忆,主要包括如下注解:@RestController@RequestMapping@Ge...

2019-06-05 21:47:47 377

原创 Netty使用实战

一、Netty简介从Java1.4提供了NIO使开发者可以使用Java编写高性能的服务端程序,但使用原生的NIO API就像Linux C中网络编程一样,还是需要做IO处理、协议处理等低层次工作。所以,就像C服务端程序大量使用libevent作为网络应用框架一样,Java社区也不断涌现出基于NIO的网络应用框架。在这其中,Jboss出品的Netty就是个中翘楚。Netty是个异步的事件驱动网...

2019-06-05 21:44:40 398

原创 JAVA多线程笔试题

一、题目内容二、我的答案利用了线程池、考虑了超时处理、不知道这样写是否还有其他问题,或者更好更优的解决方案?import java.util.;import java.util.concurrent.;public class Main {public static void main(String[] args) { List<String>...

2019-06-05 21:43:27 250

原创 Java多线程的几种写法

Java多线程的在开发中用到的很多,简单总结一下几种写法,分别是继承Thread方法,实现Runnable接口,实现Callable接口;继承Thread方法class TestThread extends Thread{ String name; public TestThread(String name){ this.name=name; } ...

2019-06-05 21:39:39 4862

原创 JAVA:一篇文章理清多态

很多人总是喜欢,或者说错误地将JAVA中的多态理解得很复杂,最常见的错误说法就是所谓“方法的多态”,他们会给出类似下面的例子来佐证“多态是指方法的多态”://Enginner和Mechanic是Employee的子类,构造函数参数均为月薪salaryEmployee a=new Enginner(100);Employee b=new Mechanic(100);//getAnnualS...

2019-06-05 21:38:55 126

空空如也

空空如也

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

TA关注的人

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