- 博客(26)
- 收藏
- 关注
原创 实战:OutOfMemoryError异常
值得注意的是,这里虽然内存溢出了,但是没有生成堆的快照文件,这是因为此时的溢出是计算出来的,并不是虚拟机的内存溢出,所以甚至没有察觉,这种情况,往往可以考虑是不是本地方法的溢出,比如NIO,NIO的原理就是使用了本地内存空间换取时间,在本地创建list数组来处理网络请求,所以数组大了,本地内存也变大。我们看到这里发生了栈内存溢出,但是没有堆内存溢出,堆内存溢出是以进程为一个单位的,栈超出深度了但远远达不到堆内存,可以利用多线程执行栈溢出可能可以实现,但是这里控制不好可能会导致系统假死,这里不做示范了。
2023-07-23 01:20:37
119
原创 设计模式之责任链模式
场景:责任链模式就像我们坐飞机一样,一道一道不同的关卡,每个关卡不同的检查,有的是安检,有的是检票。在我们需求开发中也会有类似的场景和需求,比如tomcat源码中的servlet组件,解析和拆解一个request时就用了pipeline(管道),pipeline就是责任链模式。原理是定义一个list,可以是arraylist,也可以是linkedlist,根据需要而定。我们项目中的运用是初始化时就加载好队列,然后缓存起来,取出list执行。2、每个链实现行为接口,编辑不同的逻辑。1、定义一个行为接口。
2023-07-17 20:57:05
73
原创 设计模式之单例模式的双重判断模式
前言:单例模式有饿汉和懒汉大家都知道,区别就在于是否先创建对象,饿汉的缺点是相对浪费资源。后来有了懒汉以后有了线程锁模式,保证线程安全,但是缺陷是另外的线程可能已经拿到了对象,此时获得锁的线程会重新创建,与设计目标相悖。(以上可以提前复习下)场景:适用于经常调用同样对象的场景:比如工具类,比如同一缓存等。4、方法中用双重判断获取或创建对象。2、私有无参构造方法。3、公共获取对象方法。
2023-07-17 11:15:25
147
原创 策略模式实战
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考客户需要区分是否为担保客户,如果是就走担保逻辑,否则走非担保逻辑1、先定义一个策略接口2、担保策略实现这个接口,编写逻辑3、非担保策略实现接口,编写非担保逻辑4、写完接口和实现类后,我们还需要定义一个策略容器来装策略类,这个是策略模式的重点,体现合成复用原则5、最后,我们在业务代码中创建实现类,和容器组合使用策略,就完成了。
2023-07-15 09:14:59
106
原创 用google的guava包实现一个生产消费者模型
注意:enterwhen方法相当于加锁并判断队列长度,没有溢出便可以生产。由于队列是采用FIFO的原则,所以这里是addlast。这里的源码后期更新。到这里就结束了,生产消费者模型是许多框架的原理和思想,改天补上传统的wait/notice方式实现,欢迎交流。前段时间自习到一段guava包,用它来实现一个生产消费者模型。1、导入guava的maven依赖,版本最好是20.0以上。注意:因为FIFO,所以这里是removeFirst。2、创建一个容器类,定义好我们的容器属性和成员。6、执行main方法验证。
2023-07-12 20:48:28
150
原创 java第19天--多线程
第十八章 多线程18.1 基本概念18.1.1 程序和进程的概念程序是我们开始写的java 文件,放在jdk编译器中变成系统可以执行文件.class文件,当class文件运行时就是一个进程。打开电脑任务管理器中看到的进程就是一个程序的运行,多进程就是可以同时打开多个程序,比如你可以一边听歌一边看电影还可以一边打游戏,只要你电脑cpu够强大,但是总有局限性。18.1.2 线程的概念线程是一个程序中执行的一个任务,比如你打开一款篮球游戏,你可以在游戏中一边跟人聊天一边打游戏,这些都是在这款游戏的线程
2020-09-06 20:16:44
78
原创 java第18天--IO流
1、i就是input,o就是output。输入输出的意思,流是水流,联想成一个水桶。17.2 基本分类按照读写数据的基本单位不同,分为 字节流 和 字符流。其中字节流主要指以字节为单位进行数据读写的流,可以读写任意类型的文件。其中字符流主要指以字符(2个字节)为单位进行数据读写的流,只能读写文本文件。按照读写数据的方向不同,分为 输入流 和 输出流(站在程序的角度)。其中输入流主要指从文件中读取数据内容输入到程序中,也就是读文件。其中输出流主要指将程序中的数据内容输出到文件中,也就是写文件。
2020-09-03 18:35:59
88
原创 java学习第17天--异常机制和File类
Throwable 是所有异常的父类,类似Object。非检测类异常就是编译阶段不会报错,运行时报错。检测类在编译阶段便报错。避免异常用if判断,代码太长可以用tryCatch捕获。catch到就执行catch代码块,finally块 始终执行。异常的抛出用throws抛出,谁调用谁处理,main中再抛出是抛给JVM虚拟机,不建议。自定义xxxException异常类继承Exception类或者其子类。提供两个版本的构造方法,一个是无参构造方法,另外一个是字符串作为参数的构造方法。//笔试考.
2020-09-02 17:25:30
107
原创 java第16天--集合类库
第十五章 集合类库(下)15.1 泛型机制(熟悉)15.1.1 基本概念通常情况下集合中可以存放不同类型的对象,是因为将所有对象都看做Object类型放入的,因此从集合中取出元素时也是Object类型,为了表达该元素真实的数据类型,则需要强制类型转换,而强制类型转换可能会引发类型转换异常。为了避免上述错误的发生,从Java5开始增加泛型机制,也就是在集合名称的右侧使用<数据类型>的方式来明确要求该集合中可以存放的元素类型,若放入其它类型的元素则编译报错。泛型只在编译时期有效,在.
2020-09-01 11:33:45
134
原创 java第14天--第十二章 String类的概述和使用
茶水间里,时常会有跟我一样大的人,打电话聊着孩子的事情,有时候我都不知道自己是不是慢了,但是好像也不慢。12.1 String类的概念(重点)java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描述,如:“abc”。该类由final关键字修饰,表示该类不能被继承。从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一些空间。该类描述的字符串内容是个常量不可更改,因此可以被共享使用。如:
2020-08-31 09:24:19
147
原创 java第13天--常用类的概述和使用
梅西离开巴萨的事实告诉我们,名人和素人都是人,是人就会欺负人,哪怕你是梅西。保持善良,强大自己才不枉为人。第十一章:常用类的概述和使用常用类就像我们以前用到的util,lang是在java加载时就自动加载,不需要引用.11.1 常用的包(熟悉)11.1.1 包的名称和功能java.lang包 - 该包是Java语言的核心包,并且该包中的所有内容由Java虚拟机自动导入。如:System类、String类、…java.util包 - 该包是Java语言的工具包,里面提供了大量工具类以及集合类等。
2020-08-27 17:47:21
228
原创 模块一第二阶段作业题目分析
模块一第二阶段作业题目分析编程实现以下需求:定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值,分别实现二维数组中所有行和所有列中所有元素的累加和并打印。再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。答:长度为[16][16]数组,就知道可以初始化一个长度为16的数组,int型默认值为0.指定所有元素值这块,我用了双重for循环每行遍历递增一个二维数列的方式;从左上角和从右上角这个也很简单,联想到第一阶段的乘法表格,右上角到左下角的思路主要是每
2020-08-25 19:02:00
1378
原创 自学java第11天--特殊类
人类的删除功能不只是供人类私有化的,有很多事情不是你去做选择,而是时间决定的,就像暴风雨来的时候,你只能接受。第十章:特殊类目录内部类枚举注解第一节:内部类(熟悉)内部类的基本概念•当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类(Inner),而这个内部类所在的类叫做外部类(Outer)。•类中的内容:成员变量、成员方法、构造方法、静态成员、构造块和静态代码块、内部类。这里就是类种类。实际作用•当一个类存在的价值仅仅是为某一个类单独服务时,那么就可以将这个类定义为
2020-08-21 16:21:13
144
原创 自学java第10天--多态和特殊类
她离开的时候,你丢盔卸甲,四面楚歌。多少年后你翻起你们的老照片,再仔细看看她的眼睛,好像明白了她当年为什么要离开,一切都是你进步太慢了,时间太快了。第九章:多态和特殊类多态是面向对象的重要特性,很难,需要多敲边思考,肌肉加脑袋记忆。目录1.多态2.抽象类3.接口第一节:多态(重中之重)多态的概念•多态主要指同一种事物表现出来的多种形态。•饮料:可乐、雪碧、红牛、脉动、…•宠物:猫、狗、鸟、小强、鱼、…•人:学生、教师、工人、保安、…•图形:矩形、圆形、梯形、三角形、…多态的语法格
2020-08-19 19:30:17
173
原创 自学java第9天--static关键字和继承
所有的痛苦来源于懒惰,所有的轻视来源于拒绝进步。第八章:static关键字和继承第一节:static关键字(重点)基本概念•使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,也就是整个类只有一份并被所有对象共享,该成员变量随着类的加载准备就绪,与是否创建对象无关。•static关键字修饰的成员可以使用引用.的方式访问,但推荐类名.的方式。类层级的意思就好比,人天生只有两只手,只要是人就有两只手,不管对象是老师还是学生还是工人。使用方式•在非静态成员方法中既
2020-08-18 18:28:51
113
原创 自学java第8天--方法和封装
以前项目经理说过我们一句话,“毕竟你们非科班的”,简单一句,深深扎心,人性的傲慢与偏见,气氛顿时紧张和沉闷,别人没有错,冷暖自知,知耻而后勇才是正确的处理方式。第七章:方法和封装目录构造方法方法重载this关键字方法递归调用封装第一节:构造方法(重中之重)构造方法的基本概念• class 类名 {类名(形参列表) {构造方法体;}}• 构造方法名与类名完全相同并且没有返回值类型,连void都不许有。class Person {Person() { - Person类中的
2020-08-16 22:26:22
131
原创 非科班学java第7天--类和对象
*人一旦有感悟,基本就是这段时间过得不好了,所以这些感悟在年轻的时候就像在浪费时间。*第六章:类与对象。走到这里终于有点意思了,因为大家都知道java是面对对象的编程语言,慢慢就要开始入门了,一起看看对象和类到底是什么?要注意什么?怎么利用它?第一节:面向对象编程(理解)面向对象编程的概念•万物皆对象。•面向对象指以属性和行为的观点去分析现实生活中的事物。•面向对象编程指先以面向对象的思想进行分析,然后使用面向对象的编程语言进行表达的过程。•面向对象编程是软件产业化发展的需求。•理解面.
2020-08-14 09:39:47
98
原创 非科班自学java第6天--作业
我渐渐感觉,年轻人有的自信,来自一种不知天高地厚的无知,这不是坏事。往往很多大龄青年,说看破红尘,淡定随和,大多数是面对生活的打击选择妥协和自弃。不信的话,当你在某件事上再次找回信心的时候,你发现你还是那个少年,还是那样无法无天,这不一定是年龄,也是自信。我们都要加油,不要被选择成长,要自己选择。自己写了作业,但是没有答案,大家一起检查。/* 1. 编程题 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。 版本:v1.0 作者:lusiyang*/import java.uti
2020-08-12 11:18:44
548
原创 非科班学JAVA 第5天—流程控制语句
在一场比赛中,只有弱势方才需要裁判,才寻求公正。真正的强者和有长远眼光的运动员,会做好自己应该做的事,并且专心做到更好。我们在比赛的时候,面对任何判罚,都不要波动,接受现实,用自己的方式回应对手。说到流程控制,最先想到的肯定是ifelse,elseif,没错,这是计算机语言的交流基础,什么语言都需要流程控制。让我们一起去探索它们在java中更深的奥秘。同时还会讲到循环语句,for,while,dowhile.第一节:分支结构(重要)说到分支结构,我们先说顺序结构,顺序结构就是:你开火了就下油炒菜上
2020-08-12 11:07:06
149
原创 非科班学java第4天--Java语言的运算符
有人说,成年人的奔溃就在一瞬间,快三十岁的时候才会感觉很深刻,因为懂得多了,看得多了,真相多了,就容易奔溃了。但是能让你重新生活重拾尊严的,除了机会和运气,就是学习,认真的学习,前方的路真的很黑,但是男孩子,可以怕黑吗?第三章:java语言中的运算符 运算符是什么?运算的符号,不太懂,但是告诉你是加减乘除,是不是就茅舍顿开了。往往我们除了加减乘除,数学上还有更多这些来帮助我们计算,今天讲讲java语言中的运算符。来个栗子这段代码我们分三个步骤解决:1、提示客户输入秒数2、操作数做时分秒的
2020-08-08 01:05:13
118
原创 #JAVA自学第3天--“小龙女说好想过过过过过过的生活”
以前觉得,人生的路是一个起点到一个终点,路上无论多精彩多狼狈,都不需要太过担心会迷路。直到一个没有伞的孩子遇到了暴风雨,才发现,人生可能是一段路再到一段路,走过的风景和天气要忘记,过去的那些人,可能都不会再出现,而你又会遇到一些人,陪你看完新的风景和天气,然后消失。可能你睡醒了再次出发,又开始了新的一切。第二章:Java语言的编程基础今天要开始认识编程知识了,首先先了解变量和数据类型。第一节:变量。变量就像一个存储柜,你跟你的硬盘申请了空间以后,放里面放你的东西。当然,是空间就有大小,大一点的放小
2020-08-06 23:49:54
167
原创 自学java第2天,javaSE
我本来就是一个很自卑的人,在职场上,身边的人太优秀,让自己的自卑心理更加放大。我也曾有过宏伟的职业规划,计划着如何一步步向前走,但是现实却不得不一次次告诉我学会原谅自己和放弃一些,可是天生有的一点傲骨让我在这之间非常挣扎,我没有投降,也在努力,但是没有人看得见。有时候每天盲目着受挫和忽视,倒不如也同时一边前进,不停学习,坚持真的不一定能行,但是希望它成为我的习惯,加油!第一阶段javaSE今天要学的是java的语言基础,在这之前,先了解一些计算机的基础知识。1、计算机的体系结构(常识)什么是计算.
2020-08-05 23:03:52
375
原创 自学java:有一个好的计划
自主学习java第一天1、了解java技术水平:级别Value中级功能模块开发、单体SSM,集群(tomcat等)、中高级分布式+缓存+MQ、微服务+容器化+分库分表、+性能优化+底层原理Column 1Column 2分布式dubbo,zookeep,高并发高可用2、计划阶段学习项目ValueJAVA SE数据库技术数据库(mysql、jdbc:访问mysql、)和xml(配置文件、配置信息。)jav
2020-08-04 22:13:18
214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人