自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 java实现多线程的两种方式

Java需要并发控制三个原因:多线程环境存在共享资源多个线程操作(修改)共享资源下面分别用继承Thread类和实现Runnable接口俩种方式实现并发控制,继承Thread类继承Thread类方式,最后创建对象是因为会是三个不同的线程对象,所以需要将共享资源和锁都静态化,如果不这样的话,就不存在共享资源一说了,自然也没有并发控制的说法。class MyThread extends T...

2018-09-30 19:25:13 156

原创 通过线程编写一个简单的并发服务器

概述之前在上一节通过使用fork来实现了一个并发程序,它很经典但是效率不高主要是太消耗资源因为fork一个进程的开销很大,假如100客户端连接就需要100个进程,这样不是不可以只是这种方式不太高级,下面我们通过使用线程来实现并发,因为产生一个线程的开销要小的多,当然对于大规模并发的场景使用线程也不是最好的选择,但是学习socket编程的过程中这些东西是需要了解的。代码段服务器端通过线程编写...

2018-09-30 14:51:10 192

原创 java对象的序列化和反序列化

引言:  序列化是将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其带你过去的状态写入到临时或持储存区,反序列化就是重新创建对象的过程,此对象来自于临时或持久储存区。序列化的作用:  就好比如存储数据到数据库,将一些数据持久化到数据库中,而有时候需要将对象持久化,虽然说将对象状态持久化的方式有很多,但是java给我们提供了一种很便捷的方式,那就是序列化,序列化可以实现对...

2018-09-29 20:52:18 224

原创 为什么我们做分布式使用Redis?

绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里对 Redis 常见问题做一个总结,解决大家的知识盲点。1、为什么使用 Redis在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Red...

2018-09-29 16:11:57 103

原创 MyBatis框架原理4:插件

插件的定义和作用首先引用MyBatis文档对插件(plugins)的定义:MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)Par...

2018-09-29 14:21:23 184

原创 Java 读写锁实现原理

最近做的一个小项目中有这样的需求:整个项目有一份config.json保存着项目的一些配置,是存储在本地文件的一个资源,并且应用中存在读写(读>>写)更新问题。既然读写并发操作,那么就涉及到操作互斥,这里自然想到了读写锁,本文对读写锁方面的知识做个梳理。为什么需要读写锁?与传统锁不同的是读写锁的规则是可以共享读,但只能一个写,总结起来为:读读不互斥,读写互斥,写写互斥,而一般的独占...

2018-09-28 21:12:45 228

原创 没有危机感的程序员,你在指望高薪从天而降?

程序员的30岁现象在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把。很明显嘛,权力过期作废,再不捞就要退休了,没有机会了。在程序员的圈子里,也有一个30岁现象。程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险。30岁,是一个程序员伤不起的年龄。明天,何去何从?当然,如果你有铁饭碗,比如在国企或政府机关,那你是无法理解底层劳动人民的感受的。同...

2018-09-28 19:49:34 239

原创 JAVAORM框架之MYBATIS篇(IBATIS)

欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解ORM(对象关系映射关系)框架之Mybatis(Ib...

2018-09-28 14:47:47 548

原创 80%的程序员不了解的调试技巧

程序员的工作内容,除了大部分时间写代码之外,因为有不少的时间是用在调试代码上。甚至说不是在调试代码,就是即将调试代码。

2018-09-27 19:34:51 1090

原创 阿里十年架构经验总结的Java学习体系

Java学习这一部分其实是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学!一、分布式架构架构分布式的英文( Distributed computing 分布式计算技术)的应用和工具,...

2018-09-26 21:06:49 493 2

原创 Java分布式锁,搞懂分布式锁实现看这篇文章就对了

前言随着微处理机技术的发展,人们只需花几百美元就能买到一个CPU芯片,这个芯片每秒钟执行的指令比80年代最大的大型机的处理机每秒钟所执行的指令还多。如果你愿意付出两倍的价钱,将得到同样的CPU,但它却以更高的时钟速率运行。因此,最节约成本的办法通常是在一个系统中使用集中在一起的大量的廉价CPU。所以,倾向于分布式系统的主要原因是它可以潜在地得到比单个的大型集中式系统好得多的性价比。实际上,分布式...

2018-09-26 14:13:37 203

原创 最近刷爆朋友圈的一道面试题

前言:最近在网上有一道面试题掀起了劲爆的浪潮,好多家公司都模仿提问了这么一道面试题,而且好多人也都在讨论这道面试题要是自己回答的话该怎么回答!这道题也是在个网站上刷爆了。面试题如果不用Spring,你打算怎么做开发工作?就是这么一道spring面试题,要是面试官问你,你该如何回答?答案各有千秋,接下来看看网友们是怎么说的。开源动弹知乎度娘问答社区看了这些截图,相信你们自己...

2018-09-25 20:12:52 459

原创 从普通Java程序员到阿里高级架构师,他用了六年!

六年间,这位架构师待过四大门户中的两家,完成了工程师到架构师的蜕变。经手多款从零到一产品的开发和增长,也经历国内最大社交平台亿级流量和用户的架构设计及优化工作。工作上思路清晰、认真负责,是同事们心目中优秀 Problem Solver。工作年限:8 年服务公司:4 家(含四大门户中的两家)最近职业:Java 架构师职场关键词:社交平台、高并发系统架构设计、技术团队管理、多款从零到一的产品城...

2018-09-25 15:02:34 232

原创 普通程序员,三年成为年薪70w架构师,只因做到了这些

每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。今天给大家分享的是一篇来自阿里Java架构师对普通程序员的职业建议,希望对你有启发。程序员的三个阶段第一阶段-——三年我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容...

2018-09-21 20:51:22 1453

原创 这样看java内存模型其实很简单

java内存模型,简称JMM(Java Memory Model), 个人对于JMM理解是:JVM屏蔽了操作系统对于物理内存访问的复杂性,目的从软件设计角度呈现出的一种内存访问的逻辑视图 。也就是JMM是JVM为软件工程师提供的一系列内存访问的逻辑规则,理解并合理使用这些规则就能正确访问内存,至于底层和物理内存直接交互动作已经被透明化了,无须关心。下图是JMM内存模型视图,是内存访问规则的基础。...

2018-09-21 14:48:52 235

原创 通往架构师路上的经验总结

前言:我先介绍一下我的新同事,据说他是美国篮球运动员詹姆斯的死忠粉,公司好多同事都这么叫他James,有8年开发经验的架构师,之前在AL待过,我一听说是AL的,啧啧啧…,就有种莫名的种亲切感,就立马找新同事聊了起来。我们在空余的时间聊了很久,也聊了好多。毕竟之前都在AL待过,感觉话题还是有的。在聊天过程中,我们也聊到了他为什么离开AL,也聊到了他在成为架构师的道路上的辛酸历程,聊过后,才发现,...

2018-09-20 19:23:33 203

原创 关于Java面试,你应该准备这些知识点

自天子以至于庶人,壹是皆以修身为本《礼记·大学》马老师说过,员工的离职原因很多,只有两点最真实:钱,没给到位心,受委屈了当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真的要跳槽,想要拿到一个理想的offer,除了运气,基本功也要足够的扎实,希望下面的面试经验能给你们能够提供一些帮助。项目经验面试官在一开始会让你进行自我介绍,主要是想让你介绍一下自己做过的一些项目,看看你对这...

2018-09-20 14:03:33 158

原创 揭开java内存模型的神秘面纱

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

2018-09-19 21:45:10 126

原创 【面试必备】透过源码角度一步一步带你走近阿里

一 先从 ArrayList 的构造函数说起ArrayList有三种方式来初始化,构造方法源码如下:/*** 默认初始容量大小*/private static final int DEFAULT_CAPACITY = 10;private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};/** *默认构造函...

2018-09-19 19:18:24 176

原创 深入理解Java虚拟机之类运行时栈帧结构

栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。每一个栈帧都包括了局部变量表、操作数栈、动态连接、方法返回地址和一些额外的...

2018-09-19 15:54:54 257

原创 你应该这样理解JVM内存管理

在进行Java程序设计时,一般不涉及内存的分配和内存回收的相关代码,此处引用一句话: Java和C++之间存在一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里面的人想出来 ,个人从这两句话中,捕获到了 两个点 。获取java资料 加群:874811168java的自动内存管理机制,极大的节省了开发人员的精力,避免了易错且复杂的内存管理设计,相对于手动的内存管理这是极大的飞跃。...

2018-09-18 17:39:48 156

空空如也

空空如也

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

TA关注的人

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