
java编程
三名狂客
success without applause,diligence without reward!Becoming、Cognifying、Flowing、Screening、Accessing、Sharing、Filtering、Remixing、Interacting、Tracking、Questioning、Beginning.
展开
-
IO多路复用
1、什么是IO多路复用?IO多路复用是一种同步IO模型,实现一个线程可以监视多个文件句柄;一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作;没有文件句柄就绪时会阻塞应用程序,交出cpu。多路是指网络连接,复用指的是同一个线程2、为什么出现IO多路复用机制?没有IO多路复用机制时,有BIO、NIO两种实现方式,但有一些问题同步阻塞(BIO)服务端采用单线程,当accept一个请求后,在recv或send调用阻塞时,将无法accept其他请求(必须等上一个请求处recv或send完),无法翻译 2020-07-06 13:57:51 · 1147 阅读 · 1 评论 -
Java 8 中的 Streams API 详解
一、Java 8 中的 Streams API 详解Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任翻译 2020-05-27 18:34:10 · 938 阅读 · 0 评论 -
分布式锁的实现方式
一、redis分布式锁官方叫做 RedLock 算法,是 redis 官方支持的分布式锁算法。分布式锁有 3 个重要的考量点:(1)互斥(只能有一个客户端获取锁)(2)不能死锁(3)容错(只要大部分 redis 节点创建了这把锁就可以)/* * Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights rese...翻译 2020-04-26 17:03:27 · 469 阅读 · 0 评论 -
分布式一致性算法
Paxos共识算法Paxos共识算法,在工程角度实现了一种最大化保障分布式系统一致性(存在极小的概率无法实现一致)的机制。Raft算法Raft算法Raft算法包括三种角色:Leader(领导者)、Candidate(候选领导者)和Follower(跟随者),决策前通过选举一个全局的leader来简化后续的决策过程。Raft算法面向对多个决策达成一致的问题,分解了Leader选举、日志复制和安...翻译 2020-03-25 19:21:35 · 509 阅读 · 0 评论 -
值的白嫖的项目
(1)TheAlgorithmshttps://github.com/TheAlgorithms/Java(2) ZXBloghttps://github.com/ZXZxin/ZXBlog(3) LeetCodeAnimationhttps://github.com/MisterBooo/LeetCodeAnimation(4) Java-Tutorialhttps://...原创 2020-03-23 19:20:42 · 824 阅读 · 0 评论 -
手写Redis之LRU淘汰算法
一、内存淘汰机制redis 内存淘汰机制有以下几个:noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了。allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key(这个是最常用的)。allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key,这个一般没人用吧,为啥要随机...原创 2020-03-06 17:19:27 · 586 阅读 · 0 评论 -
总结高频访问github项目
一、适合学习Java技术体系的github项目,(作者github地址)https://github.com/macrozheng(1)mall(一套电商系统)https://github.com/macrozheng/mall(2)mall-swarm(一套微服务商城系统)https://github.com/macrozheng/mall-swarm(3)springcloud-le...原创 2020-02-27 10:12:46 · 717 阅读 · 0 评论 -
BIO、NIO、AIO之IO
一、BIOimport java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * 阻塞式服务端通信 * @author zc * */public class BIOServer { public static void main(String[] args) throw...翻译 2020-02-19 11:38:15 · 306 阅读 · 0 评论 -
多线程环境下SimpleDateFormat类安全转换
一、SimpleDateFormat类package state;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * SimpleDateFormat类负责日期的转换与格式化 * 解决SimpleDateFormat类多线程环境下转换错误问题...原创 2020-02-07 17:17:26 · 2007 阅读 · 0 评论 -
多线程环境下实现各种情形的单例模式
(1)饿汉模式package singleton;/** * 饿汉模式 多线程环境下实现单例模式 * @author zc * */public class SingletonE { //立即加载 饿汉模式 private static SingletonE singleton=new SingletonE(); //私有化构造方法 private Singleto...原创 2020-02-06 18:28:35 · 521 阅读 · 0 评论 -
Spring IOC、AOP的理解和实现的原理
一、 IOC:反转控制 ,创建对象的方式反转了,从自己创建变成了spring容器DI(具体的技术):依赖注入,将必须的属性注入到对象当中,是实现ioc思想必须条件。 二、AOP:面向切面编程(横向重复、纵向抽取) ...原创 2018-06-14 23:53:03 · 9221 阅读 · 0 评论 -
java各版本的新特性
一、java 7(1)改进的通用实例创建类型推断 Map<String,List<String>>map=new HashMap<>();(2)switch语句支持字符串(3)自动资源管理(4)Path和Files二、java 8(1)Lamda表达式 java8的最主要的特性,原创 2018-05-21 16:26:58 · 751 阅读 · 0 评论 -
Java IO体系
一、常见I/O (1)基于字节的IO操作 (2)基于字符的IO操作 (3)总结IO操作 二、NIO翻译 2018-05-12 11:29:44 · 436 阅读 · 0 评论 -
java核心技术
1、谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?考点分析:对于这类笼统的问题,你需要尽量表现出自己的思维深入并系统化,Java 知识理解得也比较全面,一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。回归正题,对于 Jav...翻译 2018-06-15 12:39:05 · 1203 阅读 · 2 评论 -
图解Http与Https
一、TCP报文格式 (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。 (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下: (A)URG:紧急指针(urgent pointer)有效。 (B)ACK:确...转载 2018-04-13 19:24:13 · 2486 阅读 · 0 评论 -
Java 10 新特性解密
如何下载 JDK 10?用户要先加入早期使用者计划,然后才可以下载 JDK 10 测试版http://jdk.java.net/10/OpenJDK https://download.java.net/java/jdk10/archive/45/GPL/openjdk-10+45_linux-x64_bin.tar.gzOracle JDK https://download.jav...转载 2018-04-19 00:52:52 · 2705 阅读 · 0 评论 -
java线程池的四种实现方式
一、newCachedThreadPoolpackage com.mmall.concurrency.example.threadPool;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;@Slf4j...原创 2018-08-03 17:08:47 · 470 阅读 · 0 评论 -
HashMap,Hashtable,LinkedHashMap,TreeMap对比
一、共同点: (1)HashMap,LinkedHashMap,TreeMap都属于Map;(2)Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。 二、不同点:(1)HashMap里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.它根据键的HashCode值存储数据,根据键可 以直接获取它的值,具有很快的访问速度。在Map 中插...翻译 2018-04-05 01:09:44 · 626 阅读 · 0 评论 -
RPC之消息中间件
一、RPC**RPC(Remote Procedure Call)—远程过程调用 ,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。**RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发分布式程序就像开发本地程序一样简单。 RPC采用客户端(服务调用方)/服务器端(服务...转载 2018-06-23 10:15:31 · 6246 阅读 · 0 评论 -
Dubbo架构设计详解
转载出处 参考 Dubbo开源 直到2011年10月27日,阿里巴巴开源了自己的SOA服务化治理方案的核心框架Dubbo,服务治理和SOA的设计理念开始逐渐在国内软件行业中落地,并被广泛应用。Dubbo作为阿里巴巴内部的SOA服务化治理方案的核心框架,在2012年时已经每天为2000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo自...翻译 2018-06-10 12:00:12 · 4629 阅读 · 0 评论 -
Java中常用WEB服务器和应用服务器
一、web服务器和应用服务器的区别Web服务器传送页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。 (1)应用服务器处理业务逻辑,web服务器则主要是让客户...翻译 2018-06-29 15:20:31 · 21562 阅读 · 1 评论 -
SpringMVC与structs2区别
转载出处 Struts2和SpringMVC是比较流行的MVC框架,二者的工作流程大体相似,从下面两张图就可以看出。,SpringMVC工作流程图图二 SpringMVC的工作流程描述用户向服务器发送请求,请求被Spring前端控制Servelt DispatcherServlet捕获;DispatcherServlet对请求URL进行解析,得到请求资源标识符(UR...转载 2018-07-11 09:03:27 · 6708 阅读 · 0 评论 -
JAVA多线程
为什么使用多线程进程之间不能共享内存,但线程之间共享内存很容易系统创建进程需要为该进程重新分配系统资源,但创建线程代价小得多,因此使用多线程来实现多任务并发比多进程的效率高JAVA内置了多线程功能支持,而不是单纯的作为底层操作系统的调度方式,从而简化了JAVA的多线程编程线程的创建继承Thread类(可直接使用this关键字获得当前对象,多个线程无法共享线程类的实例变量)实转载 2017-05-01 21:00:41 · 323 阅读 · 0 评论 -
深入解析String的intern方法
转载出处 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种: (1)直接使用双引号声明出来的String对象会直接存储在常量池中。 (2)如果不是用双引号声...转载 2018-07-12 10:25:01 · 468 阅读 · 0 评论 -
ConcurrentHashMap源码解析
ConcurrentHashMap源码解析ConcurrentHashMap源码解析jdk8之前的实现原理jdk8的实现原理变量解释初始化初始化tableput操作hash算法获取table中对应的元素f链表或红黑树操作table 扩容get操作jdk8之前的实现原理采取Segment分段锁机制jdk8的实现原理JDK8的实现...翻译 2018-08-25 15:11:39 · 212 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
一、概述select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从...翻译 2018-08-25 15:40:16 · 468 阅读 · 0 评论 -
Java学习网址
开源技术:http://www.coin163.com/index.html全栈开发:http://www.admin10000.com/开源社区:http://www.oschina.net/ Spring开源中国社区:http://springcloud.cn/ 并发编程网站:http://www.ifeve.comJava并发编程(Oracle官方资料):http:转载 2017-06-01 08:47:12 · 1685 阅读 · 0 评论 -
查看各个java版本源码和API
一、各个版本API (1) java9 下载(2) java8 下载(3) java7 下载二、各个版本源码(1) java9 java9新特性(2) java8(3) java7补充 git 使用 (1) 教程 (2) 自我总结...原创 2018-03-20 13:57:32 · 3983 阅读 · 2 评论 -
Collections.sort()和Arrays.sort()排序算法选择
源码位置: 点击打开链接 点击打开链接Arrays.sort()先来看看Arrays.sort();,点进去这个方法会看到是这样子的public static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);}果然没这么简单,DualPivotQuicksort翻译过来就是双轴快速...翻译 2018-03-20 10:55:09 · 1616 阅读 · 0 评论 -
集合框架
一、集合框架思维导图原创 2018-01-31 10:23:00 · 286 阅读 · 0 评论 -
JAVA高级面试总结
Sun HotSpot VM,是JDK和Open JDK中自带的虚拟机,也是目前使用范围最广的Java虚拟机。JVM内存分布程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,故该区域为线程私有的内存。虚拟机转载 2018-01-14 19:07:24 · 2519 阅读 · 1 评论 -
Java中从控制台输入数据的常用方法
一、使用标准输入串System.in //System.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字 //System.in.read()返回一个整数 //必须初始化 //int read = 0; char read = '0'; System.out.println("输入数据:"); try { //read = Syst转载 2018-01-11 15:30:38 · 1947 阅读 · 1 评论 -
java中的HashTable,HashMap和HashSet的区别
上篇博客中我们详细的分析了java集合《java中Map,List与Set的区别》。同时我们也对HashSet和HashMap的核心方法hashcode进行了详解,见《探索equals()和hashCode()方法》。下面我们就对基于hash算法的三个集合HashTable,HashSet和HashMap详解。本文目录:1. HashTabl转载 2017-11-06 10:49:06 · 1560 阅读 · 0 评论 -
理解Java特性
1. String对象不可改变的特性下图显示了如下代码运行的过程:[java] view plain copyString s = "abcd"; s = s.concat("ef"); 中文参考:Java String 详解 图12. equals()与hash转载 2017-09-26 18:53:18 · 356 阅读 · 0 评论 -
ssm框架
前言 ssm框架,是spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。越来越多的公司选择使用ssm轻量级框架组合来开发JavaEE项目,掌握这一框架无疑会给开发者带来更强的竞争力。介绍Spring翻译 2017-08-19 14:25:54 · 817 阅读 · 0 评论 -
Java IO流总结
Java流操作有关的类或接口:Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输转载 2017-06-04 20:40:27 · 369 阅读 · 0 评论 -
常见的Java集合框架面试题目
1.为什么Map接口不继承Collection 接口?Set是无序集合,并且不允许重复的元素List是有序的集合,并且允许重复的元素而Map是键值对它被视为是键的set和值的set的组合Map被设计为键值对的集合,所以不需要继承Collection 接口2.HashMap和Hashtable之间的区别?同步或线程安全Null键和Null值迭代值默认容量大小3转载 2017-03-28 18:31:34 · 1066 阅读 · 0 评论 -
java集合
1. 集合类库通常,程序总是根据运行时才知道的某些条件去创建新对象,在此之前,不会知道所需对象的数量,甚至不知道确切的类型。为了解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。java 实用类库提供了一套相当完整的集合类来解决这个问题 。其中基本类型是List、Set、Queue和Map,这些对象被称为集合类。这里给出一个经常引用的一个类库关系图:集转载 2017-02-24 20:44:50 · 336 阅读 · 0 评论 -
JVM架构解析
虚拟机是物理机的软件实现。Java的设计理念是WORA(Write Once Run Anywhere,一次编写随处运行)。编译器将Java文件编译为Java .class文件,然后将.class文件输入到JVM中,JVM执行类文件的加载和执行的操作。下图为其架构:JVM是如何工作的?如上面架构图所示,JVM分为三个主要子系统:类加载器子系统(Class Loa转载 2017-01-02 12:45:23 · 358 阅读 · 0 评论 -
开发人员必须知道的一些开发者网站
1.优快云优快云是中国软件开发联盟(Chinese software develop net)的缩写,是中国最大的开发者技术社区。它是集新闻、论坛、群组、Blog、文档、下载、读书、Tag、网摘、搜索、.NET、Java、游戏、视频、人才、外包、第二书店、《程序员》等多种项目于一体的大型综合性IT门户网站,有很强的专业性,其会员囊括了中国地区百分之九十以上的优秀程序员,在IT技术交流及转载 2014-12-18 12:56:16 · 1967 阅读 · 0 评论