向JAVA高级开发工程师目标前进
詠聖wK
如果你足够努力,任何事情都是可能的
展开
-
(九)java线程池详解
java线程池详解一、什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。 在开发过程中,合理地使用线程池能够带来3个好处: 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺原创 2017-12-19 18:39:52 · 375 阅读 · 0 评论 -
Netty快速入门
Netty快速入门异步非阻塞IO什么是Netty Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。Netty应用场景1.分布式开源框架中dubbo、Zookeeper,RocketMQ,底层rpc通讯使用就是netty。 2.游戏开发中,底层使用netty通讯。为什么选择net...原创 2018-02-22 18:32:17 · 585 阅读 · 0 评论 -
NIO编程(同步阻塞与同步非阻塞详解)
NIO同步阻塞与同步非阻塞BIO与NIOIO为同步阻塞形式,NIO为同步非阻塞形式,NIO并没有实现异步,在JDK1.7后升级NIO库包,支持异步非阻塞 同学模型NIO2.0(AIO)BIO(同步阻塞式IO) 同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当...原创 2018-02-22 15:56:50 · 12018 阅读 · 0 评论 -
NIO编程(字符集Charset)
字符集Charset编码:字符串->字节数组 解码:字节数组 -> 字符串代码示例public class CharsetDemo { public static void main(String[] args) throws CharacterCodingException { Charset gbk = Charset.forName...原创 2018-02-20 18:10:19 · 250 阅读 · 0 评论 -
NIO编程(直接缓冲区与非直接缓冲区别)
直接缓冲区与非直接缓冲区别分散读取与聚集写入非直接缓冲区 通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中!案例展示 这里提供一个名为Python1,大小为397.1MB的zip文件; 现分别用直接缓冲区和非直接缓冲区对上面文件进行文件复制,看哪个缓冲区耗时最短,效率更高? 代码示例public c...原创 2018-02-20 15:09:09 · 544 阅读 · 0 评论 -
NIO编程(Buffer的概述)
NIO编程NIO概述什么是NIO?Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的, 而NIO是基于通道(Channel...原创 2018-02-15 11:52:37 · 330 阅读 · 0 评论 -
NIO编程(mark与reset用法)
mark与reset用法 标记是一个索引,通过Buffer中的mark()方法指定Buffer中一个特定的position,之后可以通过调用reset()方法恢复到这个position。代码用例public class BufferTest { public static void main(String[] args) { ByteBuffer...原创 2018-02-20 15:15:35 · 1092 阅读 · 0 评论 -
Tomcat配置调优测试
Tomcat配置调优测试Jmeter压力测试工具 JMeter是一款在国外非常流行和受欢迎的开源性能测试工具,像LoadRunner 一样,它也提供了一个利用本地Proxy Server(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用。所以在本文中介绍一个更为常用的方法——使用Badboy录制生成 JMeter 脚本。...原创 2018-02-27 23:53:24 · 330 阅读 · 0 评论 -
垃圾收集器
垃圾收集器什么是Java垃圾回收器 Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一。 为应用程序提供内存的自动分配(Memory Allocation)、自动回收(Garbage Collect)功能,这两个操作都发生在Java堆上(一段内存快)。 某一个时间点,一个对象如果有一个以上的引用(Rreference)指向...原创 2018-02-27 23:34:38 · 220 阅读 · 0 评论 -
Netty高级(Netty5.0的用法,TCP粘包、拆包问题解决方案)
Netty5.0的用法《Netty官方文档》5.0中的变化和注意点这篇文档将引领你了解netty在4.1 release版本之后所做的一系列显著升级和新特性,以便让你能把应用升级到新版本。不像netty在3.X和4.0之间的升级变化,5.0版本虽然在设计上做出了重大突破和简化,但(在调用层面)并没有改变很多。我们尽可能让4.X版本可以平滑地升级到5.0版本,但是如果你在升级过程...原创 2018-02-24 17:06:33 · 2015 阅读 · 0 评论 -
序列化协议与自定义序列化协议
序列化协议与自定义序列化协议序列化定义 序列化(serialization)就是将对象序列化为二进制形式(字节数组),一般也将序列化称为编码(Encode),主要用于网络传输、数据持久化等; 反序列化(deserialization)则是将从网络、磁盘等读取的字节数组还原成原始对象,以便后续业务的进行,一般也将反序列化称为解码(Decode),主要用于网络传输对象的解码,以便...原创 2018-02-24 17:48:56 · 1328 阅读 · 0 评论 -
zooKeeper安装以及基础介绍
zookeeper基础介绍、用Java语言实现原理zookeeper安装mac在mac OSX中安装启动zookeeperlinuxlinux安装zookeeperwindows1、zookeeper安装和使用(Windows环境) 2、zookeeper 在Windows下的安装过程及测试什么是Zookeeper Zookeeper是一个分布...原创 2018-09-03 19:36:51 · 356 阅读 · 0 评论 -
Redis实现分布式锁与Zookeeper实现分布式锁区别
Redis实现分布式锁思路基于Redis实现分布式锁(setnx)setnx也可以存入key,如果存入key成功返回1,如果存入的key已经存在了,返回0.Zookeeper实现分布式锁思路基于Zookeeper实现分布式锁 Zookeeper是一个分布式协调工具,在分布式解决方案中。 多个客户端(jvm),同时在zookeeper上创建相同的一个临时节点,因为临时节点路径是保证...原创 2018-09-05 19:50:51 · 4051 阅读 · 0 评论 -
使用Java代码实现zookeeper分布式锁
产生问题 例:在分布式(集群)环境下,每台JVM不能实现同步,比如将一个项目部署到多台tomcat服务器,那么用多台JVM在使用时间戳生成唯一的订单号时,会出现订单号重复问题。解决办法: 分布式情况下,怎么解决订单号生成不重复: 1. 使用分布式锁 2. 提前生成好,订单号,存放在redis。获取订单号时,直接从redis中取。实现分布式锁的方式...原创 2018-09-05 19:35:34 · 2670 阅读 · 4 评论 -
maven常用命令及maven的核心概念
maven常用命令及maven的核心概念Maven常用命令 命令 解释 mvn compile 编译项目 mvn package 打包发布 mvn clean 清理(删除target目录下编译内容) mvn install 打包后将其安装在本地仓库maven的核心概念项目对象模型说明:...原创 2018-03-28 16:53:07 · 1841 阅读 · 0 评论 -
Servlet核心内容
Servlet核心内容Servlet重要的四个生命周期方法构造方法: 创建servlet对象的时候调用。默认情况下,第一次访问servlet的时候创建servlet对象只调用1次。证明servlet对象在tomcat是单实例的。init方法: 创建完servlet对象的时候调用。只调用1次。service方法: 每次发出请求时调用。调用n次。destroy方法: 销毁ser...原创 2018-03-30 10:12:42 · 726 阅读 · 0 评论 -
JVM参数调优(内存溢出解决办法)
JVM参数调优(内存溢出解决办法)设置堆内存大小错误原因:java.lang.OutOfMemoryError: Java heap space 堆内存溢出解决办法:设置堆内存大小: -Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError代码案例public class JvmHeapOutOfMemory {...原创 2018-02-25 23:46:22 · 6170 阅读 · 0 评论 -
JVM参数调优(虚拟机参数配置)
虚拟机参数配置什么是虚拟机参数配置 在虚拟机运行的过程中,如果可以跟踪系统的运行状态,那么对于问题的故障 排查会有一定的帮助,为此,在虚拟机提供了一些跟踪系统状态的参数,使用 给定的参数执行Java虚拟机,就可以在系统运行时打印相关日志,用于分析实际 问题。我们进行虚拟机参数配置,其实就是围绕着堆、栈、方法区、进行配置。堆的参数配置 参数...原创 2018-02-25 22:39:36 · 1132 阅读 · 0 评论 -
JVM参数调优(堆、栈、方法区概念区别)
JVM参数调优JVM概念 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标...原创 2018-02-25 15:09:56 · 861 阅读 · 0 评论 -
垃圾回收机制算法分析
垃圾回收机制算法分析垃圾回收机制概述Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。 ps:内存泄露是指该内存空间使用完毕之...原创 2018-02-27 22:53:34 · 297 阅读 · 0 评论 -
Socket网络编程
Socket网络编程什么是网络模型? 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据。 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。客户端与服务端 在网络原创 2018-01-29 00:36:36 · 274 阅读 · 0 评论 -
(四)wait()、notify()、notifyAll()方法||wait()与sleep()的区别
wait()、notify()、notifyAll()方法wait()与sleep()的区别一、wait()、notify、notifyAll()方法方法介绍 wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。 这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。 如果对象调用了原创 2017-12-13 16:51:25 · 922 阅读 · 0 评论 -
(三)多线程之间实现通讯
多线程之间实现通讯学习目标有明确的学习目标,学起来会更有趣哦:多线程之间如何通讯synchronized用法wait、notify、notifyAll()方法lock锁如何停止线程面试总结一、多线程之间如何实现通讯什么是多线程之间通讯?多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。多线程之间通讯需求 案例:第一个线程写入(input)用户,另一个线程取读取(原创 2017-12-13 11:32:43 · 743 阅读 · 0 评论 -
(A5,一)java反射机制
java反射机制什么是Java反射 就是正在运行,动态获取这个类的所有信息。反射机制的作用 1、反编译:.class–>.java 2、通过反射机制访问java对象的属性,方法,构造方法等;反射机制的应用场景Jdbc 加载驱动 Spring ioc 框架 反射机制获取类有三种方法定义类:public class UserEntity { private String原创 2017-12-21 17:56:22 · 263 阅读 · 0 评论 -
(A4,二)java数据交换格式---Xml详解
java数据交换格式—Xml详解Xml简单使用什么是XML?它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。 XML 主要用于描述数据和用作配置文件。 XML 文档在逻辑上主要由一下 5 个部分组成: XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息 文档类型声明:指出 XML 文档所用的 DTD 元素:原创 2017-12-21 15:22:56 · 445 阅读 · 0 评论 -
(二)多线程之间实现同步
多线程之间实现同步学习目标有明确的学习目标,学起来会更有趣哦:理解线程安全synchronized用法死锁多线程创建方式练习题线程生命周期面试总结一、什么是线程安全?为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。 但是做读操作是不会发生数据冲突问题。 案例:需求现在有100张火车票,有两个窗口同时抢原创 2017-12-01 00:22:59 · 780 阅读 · 0 评论 -
(A4,一)java数据交换格式---Json详解
java数据交换格式—Json详解一、什么是数据交换格式 客户端与服务器常用数据交换格式xml、json、html二、数据交换格式使用场景 1、移动端(安卓、IOS)通讯方式采用http协议+JSON格式 走restful风格。 2、很多互联网项目都采用Http协议+JSON 3、因为xml比较重,WebService服务采用http+xml格式, 银行项目使用比较多!移动端原创 2017-12-21 14:07:25 · 840 阅读 · 0 评论 -
(十)java锁机制深度化
java锁机制深度化一.悲观锁 悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时加上排他锁。每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 Select * from xxx for update; 锁原创 2017-12-20 18:34:53 · 322 阅读 · 0 评论 -
(A5,二)利用java反射机制----手写SpringIOC框架
利用java反射机制—-手写SpringIOC框架什么是SpringIOC 就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理。applicationContext.xml配置:<?xml version="1.0" encoding="UTF-8"?><beans> <bean id="user1" class="com.wangys.reflect原创 2017-12-21 18:18:41 · 847 阅读 · 0 评论 -
(五)Lock锁的用法||Lock锁与 synchronized 关键字的区别
Lock锁的用法Lock锁机制与 synchronized 关键字的区别一、Lock锁的用法 Lock lock = new ReentrantLock(); lock.lock(); try{ //可能会出现线程安全的操作 }finally{ //一定在finally中释放锁 //也不能把获取锁在try中进行,因为有可能在获取锁的时候抛出异常 l原创 2017-12-13 18:05:58 · 837 阅读 · 0 评论 -
java23种设计模式详解
java23种设计模式详解设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。本教程将通过 Java 实例,一步一步向您讲解设计模式的概念。现在开始学习设计模式!———>>>传送门总结很详细!原创 2018-01-12 00:08:43 · 801 阅读 · 1 评论 -
(八)java并发队列
Java并发队列在并发队列上JDK提供了两套实现: 一个是以ConcurrentLinkedQueue为代表的高性能队列; 一个是以BlockingQueue接口为代表的阻塞队列; 无论哪种都继承自Queue。 一、ConcurrentLinkedQueue定义 ConcurrentLinkedQueue : 是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通原创 2017-12-18 18:02:31 · 1072 阅读 · 0 评论 -
(七)java并发包
Java并发包同步容器类一、Vector与ArrayList区别 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。 数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查原创 2017-12-15 18:22:49 · 407 阅读 · 0 评论 -
(A7,一)java设计模式--单例模式详解
java设计模式—单例模式什么是单例模式?单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。详细介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点原创 2017-12-26 11:38:19 · 327 阅读 · 0 评论 -
一步到位的学习网址---岁月中沉淀下来的小经验分享给大家
一步到位的学习网址—岁月中沉淀下来的小经验分享给大家 分享资源:把自己平常见到的好网站记录下来,把平时搜索的时间直接拿来学习,一步到位 版本:v1.0一、JAVA学习网址开源中国:开源中国社区最代码:最代码-最全面最专业的源代码分享网站易百教程:易百教程-专注于IT教程和实例 易百教程:不光有java、javaee、也有前端技术、数据...原创 2017-12-06 18:30:51 · 622 阅读 · 0 评论 -
(A6,一)java自定义注解
java自定义注解什么是注解?Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。 注解分类:内置注解(也成为元注解 jdk 自带注解)、自定义注解(Spring框架)什么是内置注解?例如: (1) @SuppressWarn原创 2017-12-22 19:06:24 · 336 阅读 · 0 评论 -
(一)多线程快速入门
多线程快速入门学习目标有明确的学习目标,学起来会更有趣哦:线程与进程为什么要使用多线程?多线程应用场景多线程创建方式练习题线程生命周期面试总结一、线程与进程线程与进程的区别1、每个正在系统上运行的程序都是一个进程。 2、每个进程包含一到多个线程。 3、线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。 4、所以线程基本上是轻量级原创 2017-11-26 18:25:23 · 438 阅读 · 0 评论 -
(六)如何停止线程?
如何停止线程?一、停止线程思路 1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2、使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3、使用interrupt方法中断线程。二、代码示例1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。 但有原创 2017-12-13 18:34:45 · 551 阅读 · 0 评论 -
Java操作使用zookeeper
Zookeeper说明创建节点(znode) 方法: create:提供了两套创建节点的方法,同步和异步创建节点方式。 同步方式: 参数1,节点路径(名称) : InodeName (不允许递归创建节点,也就是说在父节点不存在 的情况下,不允许创建子节点) 参数2,节点内容: 要求类型是字节数组(也就是说,不支持序列化方式,如果需要实现序 列化,可使用java相关序列化框架,如...原创 2018-09-03 19:51:56 · 789 阅读 · 0 评论