自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (4)
  • 收藏
  • 关注

原创 NIO的原理是什么机制?NIO的工作流程步骤、Netty的工作流程步骤

首先说一下核心区别:NIO是以块的方式处理数据,但是IO是以最基础的字节流的形式去写入和读出的。所以在效率上的话,肯定是NIO效率比IO效率会高出很多。 NIO不在是和IO一样用OutputStream和InputStream 输入流的形式来进行处理数据的,但是又是基于这种流的形式,而是采用了通道和缓冲区的形式来进行处理数据的。 还有一点就是NIO的通道是可以双向的,但是IO中的流只能是单向的。 还有就是NIO的缓冲区(其实也就是一个字节数组)还可以进行分片,可以建立只读缓冲区、...

2020-10-28 18:37:55 474

原创 POST请求和GET请求

区别:get请求 的数据在url中,post的请求在requeset body中。get请求 url长度限制 post没有get请求url编码,post有多种编码get请求会产生一个tcp数据包,而post会产生两个get比post更不安全,get请求的数据暴露在url 上,数据会被浏览器 cacash.详文链接:https://www.cnblogs.com/logsharing/p/8448446.htmlhttp post发送请求:https://www.cnb..

2020-09-01 19:16:10 141

原创 java jvm 内存 分配相关 知识总结

1.jvm 内存模型文章链接:https://blog.csdn.net/qzqanzc/article/details/810085982.JVM年轻代、老年代、永久代 概述文章链接:https://blog.csdn.net/yrpting/article/details/528597213.JVM参数设置、分析文章链接:https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html4...

2020-08-25 18:47:32 158

原创 spring-maven 学习教程链接

1.史上最全spring注解,没有之一https://blog.csdn.net/weixin_39805338/article/details/807704722.使用eclipse创建Spring Boot项目https://www.cnblogs.com/txsblog/p/8566416.html3.maven的三种启动方式https://www.cnblo...

2019-07-25 16:49:54 150

转载 使用eclipse创建Spring Boot项目

环境介绍       1.jdk1.8      2.eclipse      3.maven 3.5.0 创建项目 eclectic 左上角 file -> new -> maven project 出现下图默认就好,也可以根据自己需要进行修改 ,点next。              2.点击next出现下图,选择ora.apache.mave...

2019-07-24 18:16:48 135

原创 Java垃圾回收(GC)机制详解

一、为什么需要垃圾回收  如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。二、哪些内存需要回收?哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象?1、引用计数法这个算法的实现...

2019-01-20 16:29:03 217

转载 Java8内存模型(关于永久区、元数据Metaspace、老年代、新生代)

一、JVM 内存模型根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出St...

2019-01-16 18:17:11 5638

转载 Java常量池理解与总结(讲的非常浅显易懂)

一.相关概念 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 Class文件中的常量池 在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本...

2019-01-16 17:26:22 352

转载 线程高级篇-Lock锁和Condition条件

浅谈Synchronized:  synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而获取锁的线程释放锁会有三种情况:  1).获取锁的线程执行完该代码块,然后线程释放对锁的占有;  2).线程执行发生异常,此时JVM会...

2018-12-20 17:23:04 127

原创 linux 学习日记

一、shell中的特殊变量:变量名 含义$0    shell或shell脚本的名字$*     以一对双引号给出参数列表$@    将各个参数分别加双引号返回$#      参数的个数$_       代表上一个命令的最后一个参数$$        代表所在命令的PID$!         代表最后执行的后台命令的PID$?        代表上一个命令执行后的退出状态二、...

2018-12-20 16:45:59 168

转载 Java网络编程--Socket编程(1)--Socket缓冲区探讨

本文主要探讨java网络套接字传输模型,并对如何将NIO应用于服务端,提高服务端的运行能力和降低服务负载。       1.1 socket套接字缓冲区      Java提供了便捷的网络编程模式,尤其在套接字中,直接提供了与网络进行沟通的输入和输出流,用户对网络的操作就如同对文件操作一样简便。在客户端与服务端建立Socket连接后,客户端与服务端间的写入和写出流也同时被建立,此时即可向流...

2018-12-19 19:46:28 4758

转载 Java中值传递和引用传递

一、基本类型和引用类型的理解Java中的数据类型分为两种为基本类型和引用类型。1、基本类型的变量保存原始值,所以变量就是数据本身。    常见的基本类型:byte,short,int,long,char,float,double,Boolean,returnAddress。2、引用类型的变量保存引用值,所谓的引用值就是对象所在内存空间的“首地址值”,通过对这个引用值来操作对象。 ...

2018-12-12 14:33:04 126

转载 打包工具ant教程

一、安装ant官方http://ant.apache.org/bindownload.cgi下载新版(目前为Ant1.10.1)的ant,得到的是一个apache-ant-1.10.1-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.10.1。二、配置环境变量window中设置ant环境变量:ANT_HOME    C:/ apache-ant-...

2018-12-07 11:47:39 5505

原创 安装LINUX 虚拟机,配置JDK,配置 REDIS,配置TOMCAT(附安装配置文件)

一,安装LINUX 虚拟机虚拟机可选择:VMware,本文以此为例linux虚拟街(32位)下载地址:https://pan.baidu.com/s/1_6NRza9IRxEMfCIf_QDJKQ,密码:g1pv1.点击主页-创建新的虚拟机,也可以点击文件-新建虚拟机2.默认典型,点击--下一步3.点击--浏览,找到下载的镜像文件xxx.iso所在的位置4.找到后点击--打开5.点击--下一步6....

2018-04-19 21:54:04 598

转载 java JVM常见的四大异常及处理方案

区域作用异常控制参数解决思路java堆存放对象的实例。java.lang.OutOfMemory Error:Java heap space-Xms(初始化堆),-Xmx(最大堆),-Xmn(新生代)1、先查看是不是内存泄漏(内存中的对象是不是必须的),如果是泄漏,则找到与GC root 的路径解决泄漏。2、看物理内存是否允许加大-Xms,-Xmx。3、检查堆中是不是有对象实例一直在内存中没有释放...

2018-04-09 20:09:24 1004

转载 Netty-LengthFieldBasedFrameDecoder解码器

在TCP协议中我们知道当我们在接收消息时候,我们如何判断我们一次读取到的包就是整包消息呢,特别是对于使用了长连接和使用了非阻塞I/O的程序。上节我们也说了上层应用协议为了对消息进行区分一般采用4种方式。前面三种我们都说了,第四种是:通过在消息头定义长度字段来标识消息总长度。这个我们还没讲。当然Netty也提供了相应的解码器:LengthFieldBasedFrameDecoder。大多数的协议(私...

2018-04-08 18:36:41 289

转载 UDP和TCP有什么区别

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于...

2018-03-29 18:08:38 183

转载 TCP/IP、Http、Socket的区别

网络是信息传输、接收、共享的虚拟平台,它用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。网络会借助文字阅读、图片查看、影音播放、下载传输、游戏聊天等软件工具从文字、图片、声音、视频,等方面给用户提供服务,具有多点性、连结性、交互性和快速性等特点。现代社会,网络已经是人们生活不可缺少的一部分。网络由下往上分为物理层、数据链路层、网络层( IP协议)、传输层(

2018-03-29 18:07:28 177

转载 jstack简单使用,定位死循环、线程阻塞、死锁等问题

阅读目录死循环Object.wait()情况死锁等待IO其它当我们运行java程序时,发现程序不动,但又不知道是哪里出问题时,可以使用JDK自带的jstack工具去定位;废话不说,直接上例子吧,在window平台上的;死循环写个死循环的程序如下:package concurrency;public class Test {

2018-01-05 15:34:05 234

转载 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。    现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足

2018-01-05 15:16:57 239

转载 JAVA配置环境变量的意义

集成开发环境(比如Eclipse)给开发者太多的便利了,以至于初学者都不知道程序是如何从源码生成可执行文件的。对于环境变量的认识也是如此,只知道要在一台新电脑上开发java,安装JDK后的第一步是配置环境变量。至于为何要配置,或许并非有个确定的认识。怀着大概就是那个意思的糊涂心态,就过去了。  首先是环境变量。引用百度百科的定义:环境变量,是在操作系统中一个具有特定名字的对象,它包

2018-01-04 17:12:56 355

转载 JVM 自带线程

一个JVM 启动之后,自己会启动一些线程。我们在jstack的时候可以排除掉这些。只关注我们自己业务产生的线程代码Java代码  package com.cases;    import java.lang.management.GarbageCollectorMXBean;  import java.lang.management.Manageme

2017-11-21 18:50:47 271

转载 JAVA 并发编程-多个线程之间共享数据

多线程共享数据的方式: 1,如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,卖票系统就可以这么做。2,如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,例如,设计4个线程。其中两个线程每次对j增加1,另外两个线程对j每次减1,银行存取款 有两种方法来解决此类问题:将共享

2017-11-21 18:50:13 213

转载 NIO和AIO对比详解

IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系。在此,为了学习和记录,也写一篇文章来介绍NIO和AIO。1. 什么是NIONIO是New I/O的简称,与旧式的基于流的I/O方法相对,从名字看,它表示新的一套Java I/O标 准。它是在Java 1.4中被纳入到JDK中的,并具有以下特性:

2017-11-17 11:38:13 865

原创 Netty的流程和范例(自主拼凑研发)

Netty的流程和范例(自主拼凑研发) 一,netty的原理1.要了解netty,就要了解一下三个概念:nio,bio,aioBio:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情就会造成不必要的线程开销,当然可以通过线程池机制改善。它适用于连接数目小的框架,B和流量很高的应用,如文件传输。例:I

2017-11-16 18:04:47 3616

原创 正则表达式基本语法

两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下:"^The":表示所有以"The"开始的字符串("There","The cat"等);"of despair$":表示所以以"of despair"结尾的字符串;"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的

2017-11-14 10:59:07 203

原创 异步,并发/并行,串行

同步:多个任务情况下,一个任务A执行结束,才可以执行另一个任务B。只存在一个线程。异步:多个任务情况下,一个任务A正在执行,同时可以执行另一个任务B。任务B不用等待任务A结束才执行。存在多条线程。接下来分析一下并行/并发,串行。很多人大概会混淆这些概念。并发和并行其实是异步线程实现的两种形式。并行其实是真正的异步,多核CU

2017-11-01 18:24:03 281

转载 synchronized的4种用法

1.方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.       例如:      public synchronized void synMethod() {  

2017-09-27 18:13:39 465

转载 java中synchronized关键字的用法

在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的

2017-09-27 18:12:38 137

转载 HashMap HashTable ConcurrentHashMap 区别

1. Hashtable 和 HashMap(1)区别,这两个类主要有以下几方面的不同:Hashtable和HashMap都实现了Map接口,但是Hashtable的实现是基于Dictionary抽象类。 在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。 当get()方法返回null值时,即可以表示 HashMap中没有

2017-09-06 20:44:23 203

转载 一切从ServerBootstrap开始

ServerBootstrap负责初始化netty服务器,并且开始监听端口的socket请求。[java] view plain copybootstrap bootstrap = new ServerBootstrap(        new NioServerSocketChannelFactory(            E

2017-08-23 16:12:27 7802

原创 Java 时间与日期处理

Java 时间与日期处理在 Java 8 之前,我们最常见的时间与日期处理相关的类就是 Date、Calendar 以及 SimpleDateFormatter 等等。不过 java.util.Date 也是被诟病已久,它包含了日期、时间、毫秒数等众多繁杂的信息,其内部利用午夜 12 点来区分日期,利用 1970-01-01 来计算时间;并且其月份从 0 开始计数,而且用于获得年、月、日等

2017-08-18 17:02:51 1401

转载 详谈java内存模型

我们一起来讨论讨论Java内存模型。理解内存模型对多线程编程无疑是有好处的。本文包括以下几个部分:java代码是如何跑起来的java代码如何运行虚拟机的解释器和编译器为什么需要JITJIT编译什么为什么多线程的代码可能出现诡异的结果指令重排去掉无效的语句不同的平台java内存模型模型简介内存屏障同步机制volatilesync

2017-07-24 18:04:14 360

转载 java中的锁

什么是锁锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字( 自Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现,因此你不用去实现自己的锁了。但是

2017-07-24 17:38:17 202

转载 SQL Server中建立外键的方法(百度经验)

如何在SQL Server表中建立主外键关系呢。在SQL中建立外键约束,可以级联查询表中的数据,在C#代码生成器中,也能根据外键关系生成相应的外键表数据模型。外键也可防止删除有外键关系的记录,一定程度上保护了数据的安全性。今天就和朋友们说说怎么建立外键吧  ^_^方法/步骤1要建立外键关系,首先要保证用来建立外键关系的列具有唯

2017-07-12 20:59:50 1191

转载 MySQL数据库(主键、索引、外键、触发器...)

主键:  能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但可以有多个候选索引。主键常常与外键构成参照完整性约束,防止出现数据不一致。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。索引:  是用来快速地寻找那些具有特定值的记录。主要是为了检索的方便,是为了加快访问速度, 按一定的规则创建的,一般起到排序作

2017-07-12 20:49:33 1360

原创 sql:建表,插入,查询语句

建表CREATE TABLE IF NOT EXISTS `player` (  `userID` int(10) NOT NULL COMMENT '用户ID',  `createAreaID` int(10) NOT NULL COMMENT '创建区ID',  `playerID` int(10) NOT NULL COMMENT '角色ID',  `uid` varch

2017-07-12 20:45:15 474

转载 JAVA CAS原理深度分析

看了一堆文章,终于把Java CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.NET/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomics

2017-07-11 16:08:26 299

原创 Java 判定标点符号

String str = "本站提!!,供的程序?均为网上搜集,如果该程序涉\"及或侵'害到" + "您的,,版权请立即写信通知我们。"; str = str.replaceAll("[\\pP]", "-"); //正则表达式 String[] arr = str.split("-"); str = ""; for(int i=0; i String temp = arr[i]

2017-06-21 14:30:48 913

转载 探索jdk8之ConcurrentHashMap 的实现机制

在介绍ConcurrentHashMap源码之前,很有必要复习下java并发编程中的一些基础知识,比如内存模型等。存储模型并发编程中的三个概念1、原子性2、可见性3、重排序对HashMap在jdk8有所了解对CAS有所了解对内置锁和显示锁等有所了解jdk8对ConcurrentHashMap做了很大的调整,首先因为HashMap在jdk8已经做了数据结构上的

2017-06-16 15:02:46 257

微信小程序入门demo-记账系统源码-后端部分

微信小程序入门学习demo-家庭理财管理系统,优秀的获奖作品,这是前端部分,对于想做一个属于自己的记账作品或者入门学习都是非常有用的!使用技术:MongoDB+Express。

2019-12-05

微信小程序入门demo-记账系统源码-前端部分

微信小程序入门学习demo-家庭理财管理系统,优秀的获奖作品,这是前端部分,对于想做一个属于自己的记账作品或者入门学习都是非常有用的!

2019-12-05

野外求生代码源码全套

野外求生游戏代码源码全套!

2019-12-05

微信小程序入门demo

微信小程序入门demo,

2019-12-05

空空如也

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

TA关注的人

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