java
熊人族无所畏惧
总有刁民想害朕!
展开
-
Java--NIO(三)
Socket—NIONIO—TCP—Client & BIO–TCP—ServerNIO—TCP—Clientpublic class SocketNio { public static void main(String[] args) throws Exception { Client nioClient = new Client(); nioClient.init(...原创 2019-03-19 08:46:58 · 197 阅读 · 0 评论 -
深入理解Java锁---概念篇
Java锁什么是锁多线程访问同一资源,对资源进行了非原子性操作,产生的并发安全问题。为了解决这种并发安全问题产生了锁那么什么是并发安全问题?参照数据库隔离级别来说简单一点1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据...原创 2018-11-15 12:19:33 · 149 阅读 · 0 评论 -
缓存(三)----浏览器缓存
先看上图,如果对图中的(a)(b)©(d)四个过程的处理方式都很清楚了,那么请不用再看本文了。两个概念强缓存用户发送的请求,直接从客户端缓存中获取,不发送请求到服务器,不与服务器发生交互行为。协商缓存用户发送的请求,发送到服务器后,由服务器判定是否从缓存中获取资源。两者共同点:客户端获得的数据最后都是从客户端缓存中获得。两者的区别:从名字就可以看出,强缓存不与服务器交互,而协商缓存...原创 2018-11-16 19:33:42 · 155 阅读 · 0 评论 -
缓存(二)----从B/S结构谈缓存
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英 ['braʊzə]美 ['braʊzɚ]),如Netscape Navigator或Internet Explorer,服...原创 2018-11-16 19:01:32 · 507 阅读 · 0 评论 -
缓存(一)---从计算机角度理解缓存
计算机角度粗略讲一下,计算机是由多个组件构成,最重要的3点,CPU,内存,外存,本文重点讲内存和外存内存内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要...原创 2018-11-16 07:28:01 · 173 阅读 · 0 评论 -
分布式锁--基于redis
分布式锁–基于redis上面讲锁,那么实现一个分布式锁重点状态—标记当前方法是否有锁释放—释放当前方法锁代码/** * 基于redis实现分布式锁 * * @author haha */@Componentpublic class RedisLock{ @Autowired private StringRedisTemplate stringRedisTem...原创 2018-10-25 14:04:17 · 121 阅读 · 0 评论 -
JAVA锁原理和选择synchronized & Lock
锁废话不多说,进正题,参考一下synchronized 的实现原理synchronized 的实现原理JVM可以从方法常量池中的方法表结构(method_info Structure) 中的 ACC_SYNCHRONIZED 访问标志区分一个方法是否同步方法。当方法调用时,调用指令将会 检查方法的 ACC_SYNCHRONIZED 访问标志是否被设置,如果设置了,执行线程将先持有mon...原创 2018-10-25 12:17:25 · 269 阅读 · 1 评论 -
单机版高并发--Semaphore
SemaphoreSemaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。上面解释是百度百科,说直白点,Semaphore 就是控制方法能被几个线程访问的东西下面举例例子现在有一辆汽车,只能坐5个人,没坐上的等下一班(假如现在就一辆汽车),那么怎么控制这个5呢public c...原创 2018-10-25 11:46:56 · 932 阅读 · 0 评论 -
JAVA--IO BIO&NIO
BIO&NIO针对文件读写操作,BIO性能远胜NIO,NIO优势体现在高并发情况下,线程复用,不会导致线程无限增加从而导致系统死掉。BIO同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。NIO同步非阻塞式IO,服务器实现模式为一个请求一个...原创 2018-10-25 10:49:22 · 208 阅读 · 0 评论 -
Java多线程
多线程多个线程并发执行的技术进程和线程一句话:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位,线程是进程的一部分。java多线程状态关键字使用线程状态新建状态: 没有调用start()方法之前就绪状态: 调用start()方法之后线程就进入就绪状态,阻塞恢复的时候也会进入就绪状态运行状态: 线程被设置为当前线程,开始执行run()方法阻塞状态:...原创 2018-10-22 14:42:17 · 138 阅读 · 0 评论 -
java源码解析S
SetA collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this ...原创 2018-10-22 13:16:25 · 112 阅读 · 0 评论 -
聊一聊Java多线程
Java多线程什么是多线程?多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。 在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。具有多线程能力的计算机因有硬件...原创 2019-02-01 02:13:00 · 337 阅读 · 0 评论 -
java多线程(二)
接着上一篇继续Monitor? 为什么我修改线程状态,要牵扯到Monitor?哦,原来,Thread在操作资源的时候(我们讲java万物皆对象,那么资源就是对象),Thread在操作对象的时候,牵扯到要不要释放对象锁,其他线程能否操作这个对象呢,原来如此。那么Thread该怎么获取对象的Monitor呢哎,真难,搞清一个问题,带来一堆问题,继续~!了解一下jdk锁synchroniz...原创 2019-02-01 03:18:06 · 117 阅读 · 0 评论 -
Java--NIO (二)
文件操作NIOFileChannelpublic static void main(String[] args) { String path = "F:\\test\\1.txt"; RandomAccessFile raf = null; StringBuffer sb = new StringBuffer(); char c; try { raf = new Ra...原创 2019-03-19 07:52:56 · 264 阅读 · 0 评论 -
Java--NIO(一)
NIOjava.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectorsChannel 和 Buffer基本上,所有的 IO...原创 2019-03-19 07:20:33 · 207 阅读 · 0 评论 -
Mybatis源码解析(二)
Mybatis源码解析SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);xml 如何构建解析//构建并解析xmlpublic SqlSessionFactory build(InputStream inputStream, String environment, P...原创 2019-03-11 22:04:01 · 199 阅读 · 0 评论 -
Mybatis源码解析(一)
Mybatismybatis官网what is mybatis ?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Jav...原创 2019-03-11 21:16:08 · 126 阅读 · 0 评论 -
基于socket的Http服务器
基于socket的Http服务器类似tomcat,做一次socket的 one req—> one Thread—> http 协议解析和响应代码//创建socket的服务端@Slf4jpublic class Server { private static ServerSocket server = null; static { synchronized (...原创 2019-03-11 19:13:02 · 582 阅读 · 0 评论 -
Java--Socket
Socket网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。TC...原创 2019-03-11 18:25:22 · 126 阅读 · 0 评论 -
JavaIO---(File)
File文件操作相关操作类和接口//File 类public class File implements Serializable, Comparable<File>//文件描述符类的实例用作不透明句柄public final class FileDescriptor//File过滤器@FunctionalInterfacepublic interface Fi...原创 2019-03-11 17:33:41 · 111 阅读 · 0 评论 -
Java IO(一)
IOI/O输入/输出(Input/Output)无论是系统、还是语言的设计中IO的设计都是异常复杂的。面临的最大的挑战一般是如何覆盖所有可能的因素,我们不仅仅要考虑文件、控制台、网络、内存等不同的种类,而且要处理大量的不同的读取方式,如:顺序读取、随机读取,二进制读取、字符读取,按行读取、按字符读取……路径rt.jar — java.io.*rt.jar? Ja...原创 2019-03-09 22:42:23 · 136 阅读 · 0 评论 -
JVM优化
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型...原创 2019-02-14 02:56:58 · 167 阅读 · 0 评论 -
面试总结--20190218
面试总结上午问题:1. spring 使用到的设计模式2. springboot和spring 区别3. JVM 类加载原理,怎么加载一个冲突的jar(自定义类加载器)4. 重写和重载方法在JVM中的体现5. JVM 7 和8区别6. 数据库设计范式7. 数据库sql优化方案8. CAP原则(分布式)–zk和eureka区别9. Lnux操作系统常用命令,(CPU使用量查询)...原创 2019-02-18 20:03:26 · 294 阅读 · 2 评论 -
java源码解析--Map
Map集合An object that maps keys to values. A map cannot contain duplicate keys;each key can map to at most one value. – 将键映射到值的对象。不能包含重复的键;每个键最多可以映射一个值。//Map 的类信息public interface Map<K,V>...原创 2018-10-22 13:07:04 · 203 阅读 · 0 评论 -
java源码解析--List
List集合An ordered collection – 有序集合//List 的类信息public interface List<E> extends Collection<E>//Collection 的类信息--定义基本的methodpublic interface Collection<E> extends Iterable<E&...原创 2018-10-22 12:00:01 · 100 阅读 · 0 评论 -
面试准备--java源码解析StringBuffer & StringBuilder
StringBuffer &amp; StringBuilder一个面试点,String工具类。共性final 修饰类;extends AbstractStringBuilder implements java.io.Serializable, CharSequence;主要作为String的工具类使用;区别StringBuffer : thread-safe,速度慢St...原创 2018-10-22 10:43:52 · 127 阅读 · 0 评论 -
SpringBoot入门系列(四)--过滤器Filter
过滤器:filter filter: 1.在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。 2.在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需...原创 2018-03-07 14:14:31 · 875 阅读 · 0 评论 -
SpringBoot入门系列(三)---视图解析
SpirngBoot – html静态访问 springboot 默认静态资源路径 src/main/resource/static 在static下添加 a.html<!DOCTYPE html><html><head><meta charset="UTF-8"><title>a</title&am原创 2018-03-07 12:46:12 · 1568 阅读 · 1 评论 -
SpringBoot入门系列(二)---搭建SpringBoot框架
基于Eclipse和STS插件搭建Springboot框架1.右键 new – other – 输入spring 如下看图: #项目结构 # 注:这里使用的是springboot最新版本2.0 只支持jdk1.8+ 别问为什么用2.0 就是任性! # 一般我们使用yml来配置,看起来更直观,修改application.properties ...原创 2018-03-07 11:38:09 · 1349 阅读 · 0 评论 -
SpringBoot入门系列(一)---基于eclipse配置springboot开发环境
SpringBoot 大概从2016年开始流行吧,经过1年多的发展,已经有成为主流框架的趋势,为什么呢,springboot优点在哪? 1.springboot就是对springMVC spring的再次封装 降低了 搭建开发框架的难度 2.全部基于注解配置,过去配置方式是xml配置,项目启动读取xml加载到内存。现在直接配置到代码,更直观简单,因为代码有api 而配置x...原创 2018-03-07 11:13:52 · 14891 阅读 · 6 评论 -
JAVA基础之方法参数传递
Java方法中参数的调用,到底是值传递还是引用传递我在Java核心艺术一书中阅读到这个点,解开了困扰我多年的疑惑。 首先说下方法参数传递都有哪些 call by value 按值传递call by reference按引用调用call by name 按名称调用···以上是程序语言方法调用的方式,在这里我可以很明确的告诉大家: Java程序设计语言总是按值调用解析方法得原创 2017-08-01 19:07:14 · 307 阅读 · 0 评论 -
Jeecg框架入门
jeecg是一套后台管理系统框架主要技术点:springMVC,springIOC,mysql,hibernate,maven,jsp使用方法,从官网下载源码,解压到本地,导入到ide中,我这里是idea导入项目–maven下载所需jar文件配置文件修改说明: dbconfig.properties 是业务数据库配置jeecg/jeecg_database.properties 是代码生原创 2017-06-06 17:57:38 · 17559 阅读 · 1 评论 -
技术专业名称含义
名称含义SOA: 面向服务的架构 Service-Oriented Architecture 服务消费者(service consumer)可以通过发送消息来调用服务。这些消息由一个服务总线(service bus)转换后发送给适当的服务实现。这种服务架构可以提供一个业务规则引擎(business rules engine),该引擎容许业务规则被合并在一个服务里或多个服务里。这种架构也提供了原创 2017-05-17 14:40:59 · 589 阅读 · 0 评论 -
java基础系列(四)--string工具类
String工具类StringBuffer 线程安全的StringBuild 线程非安全的 速度极快虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线 程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。StringUtils StringUtils 方法的操作对象是原创 2017-05-15 17:50:42 · 271 阅读 · 0 评论 -
java基础系列(三)之--java字符串
字符串String所在包:java.lang.String类修饰 :public final class String implements java.io.Serializable, Comparable, CharSequence成员变量: private final char value[];private int hash; // Default to 0private stat原创 2017-05-15 11:00:51 · 321 阅读 · 0 评论 -
java基础系列(二)
java数据类型基本数据类型bytebyte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一; 例子:byte a = 100,byte b = -50。 public static vo原创 2017-05-15 10:20:20 · 441 阅读 · 0 评论 -
java基础系列(五)--所有类的父类Object
所有类的父类ObjectObject类是Java中其他所有类的基类,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。 Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入。Object类没有定义属性,一共有13个方法:public Object...原创 2018-02-23 21:25:46 · 7266 阅读 · 0 评论 -
Java-数据库系列(一)--JDBC链接数据库 手写连接池
JDBC链接数据库–mysql 以mysql为例 写一套 自定义数据库连接池设计思路 java连接mysql 参数:driver,url,username,password 为什么使用连接池:数据库链接的创建和销毁需要花费相当的时间,节省时间;创建资源占用一定内存,节省内存;数据库可承受最大链接,数据库默认有个最大承受数,频繁的短时间创建大量链接,链接并未超时,会导...原创 2018-03-02 15:14:56 · 918 阅读 · 0 评论 -
springboot+jwt+jpa+mysql+bootstrap 前后分离,token
springboot+jwt+jpa+mysql+bootstrap 前后分离,token闲着没事做了个小活,想看的,去码云,代码已托管, https://gitee.com/zl2017/demo 多多关注,更多精彩代码。设计前后端,分布式,主流框架,分布式事务,分布式秒杀等核心业务场景,期待吧。。。...原创 2018-08-17 01:46:37 · 1270 阅读 · 0 评论 -
Java分布式组件 - - RPC(手写一个RPC)
RPC Remote Procedure Call – 远程调用过程。 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议构成网络协议 TCP或UDP Socket编程输入输出流(对象流) ObjectOutputStream : 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectIn...原创 2018-03-06 17:44:11 · 1354 阅读 · 1 评论