Java学习
文章平均质量分 67
ZZZhonngger
一只有女朋友的程序猿
展开
-
Netty实战与源码剖析(三)——Netty线程模型
1 线程模型基本介绍不同的线程模式,对于程序的性能有很大的影响,Netty为何具有如此高的性能,很大程度上是得益于Netty采用的线程模型。目前主流存在的线程模型有两种:传统阻塞IO模型Reactor模型然而根据Reactor的数量和处理资源线程的数量不同,又可以将Reactor模型分为三种:单Reactor 单线程单Reactor 多线程主从Reactor 多线程Netty基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor。1.原创 2021-10-03 15:56:09 · 336 阅读 · 0 评论 -
Netty实战与源码剖析(二)——基于NIO的群聊系统
服务端实现package com.Zhongger.groupchat;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.util.Iterator;import java.util.Set;/** * @author zhongmingyi * @date 2021/9/25 3:原创 2021-09-25 16:31:10 · 169 阅读 · 0 评论 -
Netty实战与源码剖析(一)——浅谈NIO编程
1 前言很久之前就想写与Netty相关的博客了,但由于个人时间安排的问题一直拖到了现在,目前我在字节是写Go语言,也很久一段时间没有接触Java了,借助这个机会,重新温习Java高级编程的同时,也把Netty实战以及源码剖析分享给各位读者。2 Netty是什么?Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol原创 2021-09-25 13:18:43 · 380 阅读 · 0 评论 -
Java的String面试题(记录)
简单总结一下:直接赋值而不是使用new关键字给字符串初始化,在编译时就将String对象放进字符串常量池中;使用new关键字初始化字符串时,是在堆栈区存放变量名和内容;字符串的拼接操作在程序运行时,才在堆中创建对象。一般,可以认为使用""比较的是引用,equals比较的是内容。对于上面的题,看完下面的几个例子,你就会有所感悟:String str = new String(“good”);是在编译时在堆栈中创建对象和分配内容,而在传参的时候,传递的是地址,把外面的str引用地址复制了一份给方法内的str而不原创 2020-08-24 22:12:18 · 241 阅读 · 0 评论 -
Java 8 新特性
Java 8 新特性1.写在前面自学Java已经快要一年了,一直用的都是Java8,在虎牙实习参与的项目中,大量地使用到了Java8的新特性:Lambda表达式和Stream流式计算,它们脱离了数据库层面的运算,直接在内存中对数据做过滤、统计等操作,给应用程序的效率带来了极大的提升。今天趁着需求写完了的空闲时间,来学习并总结一下Java 8的新特性。2.Lambda 表达式Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函原创 2020-05-26 20:21:38 · 832 阅读 · 0 评论 -
快速入门JVM,只看这一篇就够了(部分)
深入理解JVM,只看这一篇就够了1.JVM的整体结构在运行时数据区中,方法区和堆区是线程共享的,而其他区域是线程独占的,这一点要注意。接下来,会有堆JVM的各个结构做更加深入的讲解。2.回顾一下Java代码的执行流程从宏观上看,Java源程序会被编译成字节码文件,然后字节码文件会在不同操作系统上的JVM上被执行,从而得到我们想要的结果。从微观上看,会有很多复杂的过程,这篇博客写得非常清...原创 2020-05-26 09:57:56 · 361 阅读 · 0 评论 -
ArrayList源码分析(入门篇)
ArrayList源码分析前言:写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为...原创 2020-05-26 09:57:10 · 2631 阅读 · 2 评论 -
Windows10下的JDK1.8下载安装与配置教程
Windows10下的JDK1.8下载安装与配置教程1.前言作为一名学习Java开发快一年的学生,现在来编写这篇博客是出于怎样的目的呢?因为今天是我实习入职的第一天,领取了全新的电脑,坐到了全新的工位,开始我在虎牙实习的生活啦。第一天就先安装完必备的软件,所以先装一波JDK,编写博客来记录安装的过程,也方便以后在其他的设备上进行安装。2.下载JDK1.8由于在官网下载需要使用Oracle账号,如果不想去注册账号的话可以下载我提供的百度网盘链接的JDK:链接:https://pan.baidu.co原创 2020-05-08 18:09:55 · 3026 阅读 · 0 评论 -
一文理解动态代理和静态代理
动态代理和静态代理1.了解一下代理模式代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持有...原创 2020-03-13 21:35:01 · 376 阅读 · 0 评论 -
Java多线程学习(五)
Java多线程学习(五)2020年3月1日学习总结集合类是我们常用的开发工具,它们所封装的数据结构给我们的开发带来了极大的便利,随着从单线程开发环境到多线程开发环境的转换,有些集合类的使用不当,会造成不同程度的错误,给程序带来极大的影响。现在就集合类的线程安全性来做一些总结。1.ArrayList线程不安全1.1先来看看单线程环境下,ArrayList的add方法和遍历public cl...原创 2020-03-01 10:33:11 · 218 阅读 · 0 评论 -
Java多线程学习总结(二)
Java多线程学习总结(二)——2020.02.22学习总结线程同步(一)(1)竞争条件(race condition)在多数多线程应用中,两个或两个以上的线程需要共享对通一数据的存取,如果两个线程存取相同的对象,并且每一个线程都调用了一个修改该对象的方法,将会产生讹误的对象。(2)常见的竞争条件例子有:转账(3)解决竞争条件的方法——锁对象利用synchronized关键字来给方法...原创 2020-02-22 11:28:34 · 167 阅读 · 0 评论 -
Lambda表达式引发的思考
Lambda表达式引发的思考今天看了尚硅谷周阳老师的视频,内容是Lambda表达式,其中还讲到了JDK1.8以后接口的一些特性,有新的收获,将其记录形成总结。1.首先,先定义一个接口interface MyInterface{ public void hello();}2.然后在主方法中,new一个接口出来,并实现其中的方法。public class LambdaTest ...原创 2020-02-21 09:43:59 · 212 阅读 · 0 评论 -
【Spring Boot学习】一、使用Spring Initializer快速创建Spring Boot项目
【Spring Boot学习】一、Spring Boot快速入门1.使用Spring Initializer快速创建Spring Boot项目(1)New Project,选择Spring Initializer,如图所示:(2)根据向导输入名,一定要注意Artifact的项目一定要全部为小写,否则无法创建(3)如果要创建Web项目,则选择勾选以下选项:(4)选择要保存的路径,点击fin...原创 2019-12-28 13:56:49 · 306 阅读 · 0 评论 -
【数据结构】Java实现括号匹配问题
问题描述编写一个类,从标准输入中读取一串包含"(" “)” “[” “]” “{” "}"的字符串,并使用栈来判定其中的括号是否配对完整。例如 “[()]{}{[()()] ()}”程序应该打印true,对于 [(]) 则打印false.算法1.将字符串转换为字符数组chars2.利用for循环,将每一次读取到的字符chars[i]与(,[,{进行比较,若匹配,则将chars[i]压入栈中...原创 2019-10-30 00:13:35 · 2226 阅读 · 2 评论 -
JAVA排序算法
JAVA直接选择排序public class xuanzhepaixu { public static void main(String[] args) { // TODO Auto-generated method stub int[]array= {64,4,24,1,3,15}; System.out.println("排序前数组为:"); for(int e:arra...原创 2018-10-21 22:09:29 · 107 阅读 · 0 评论 -
最大子列和问题(Java语言实现)
最大子列和问题(Java语言求解)一、问题描述:给定N个整数的序列{A1,A2,...,An}\left \{ A_{1}, A_{2},..., A_{n} \right \}{A1,A2,...,An},求函数f(i,j)=max(0,∑k=ijAk)f\left ( i,j\right )= max(0,\sum_{k=i}^{j}A_{k})f(i,j)=max(0,∑k=ijAk...原创 2019-08-24 11:19:04 · 414 阅读 · 0 评论 -
JDBCUtils工具类代码的实现和一些常见问题的总结
本文实现了JDBCUtils工具类,并总结了一些常见问题,欢迎大家参考、阅读和交流!原创 2019-08-26 13:46:43 · 3689 阅读 · 4 评论 -
使用C3P0连接池时TimeoutException的解决方法
C3P0数据库连接池解决:Exception in thread "main" java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.......的方法原创 2019-08-27 11:35:45 · 2284 阅读 · 2 评论 -
稀疏矩阵的压缩与还原(Java实现)
本文详细讲解了利用Java实现稀疏矩阵的压缩与还原的简单算法,供大家学习、参考和交流!原创 2019-08-29 10:01:37 · 1584 阅读 · 0 评论 -
数组模拟单向队列(Java语言实现)
数组模拟单向队列(Java语言实现)队列介绍:1.队列是一个有序列表,可以用数组或链表来实现。2.遵循先入先出(First In First Out ,简FIFO)的原则,即:先存入队列的数据,最先取出;后存入的数据要后取出。如图:入队列出队列:用数组模拟队列的示意图:3.分析:一个队列类对象Queue,初始状态下,队列为空,队头指针front=-1,队尾指针rear=-1,其中f...原创 2019-08-30 10:12:14 · 181 阅读 · 0 评论 -
数组模拟环形(循环)队列(Java语言实现)
数组模拟环形(循环)队列(Java语言实现)紧接着上一个内容,使用循环队列可以让数组模拟的单向队列复用,这样提高了程序的效率。循环队列:代码实现循环队列类:RepeatQueue.javapackage cn.Day02.demo2;public class RepeatQueue { private int maxSize;//队列的最大长度 private in...原创 2019-08-30 12:05:27 · 251 阅读 · 0 评论 -
Java冒泡排序算法
java冒泡排序算法1.基本思想:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组的前面(从小到大排序),把大的元素移动到数组的后面,即交换两个元素的位置,这样较小的元素就像气泡一样从底部上升到顶部。2.算法实现:冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,一般为要排序的数组长度减1,因为最后一次循环只剩下一个数组元素,不需要对比,同时已经完成排序了。内层循环主...原创 2018-10-21 07:25:16 · 14002 阅读 · 5 评论