java
文章平均质量分 93
只有小松了
这个作者很懒,什么都没留下…
展开
-
客户端开发 小松 对于dubbo的简单了解
dubbo是阿里开源的高可用服务端架构,只要用于后端服务器的调度,今天小松心血来潮,在b站搜了一个课程来学一学,不过我并没有实操,毕竟没有那么多时间,算是“云学习”哈哈,这篇文章就当是我学过dubbo的证据了文章最后会附上视频地址,有兴趣的小伙伴可以去看看,因为我对dubbo算是初学,下面的总结都是来自视频,可能有过时或者错误的地方,欢迎探讨基础知识Dubbo架构使用方法:将服务提供者注册到zookeeper注册中心导入dubbo依赖,操作zookeeper的客户端配置provider原创 2021-11-27 14:55:37 · 323 阅读 · 0 评论 -
synchonized只能回答加锁?深入解析,关于锁升级流程的各项细节
目录锁升级线程获取锁流程轻量级锁升级为重量级锁偏向锁策略案例最后关于synchronized,我相信你一定不会陌生,但是在java 6之后,jdk大幅修改了锁的量级,从原来的重量级锁变成可升级的轻量级锁,今天,我们就来看看吧首先我们需要介绍一下synchronized的获取锁的本质是什么,看如下代码和字节码public class Demo { private static int count; public static void main(String[] args) { .原创 2021-11-12 13:44:54 · 612 阅读 · 0 评论 -
面试官:说说为什么自定义view的wrap_content会失效?
如果你不了解View,那就说明你没有真正入门android无论是TextView小控件,还是LineLayout这种大容器,都是View演化而来,TextView也继承自Viewpublic class TextView extends View implements ViewTreeObserver.OnPreDrawListener {}LineLayout这类布局控件特殊一点,来自ViewGroup,而ViewGroup继承自Viewpublic class RelativeLayout e原创 2021-09-09 19:33:36 · 1248 阅读 · 0 评论 -
通过女朋友来通俗易懂讲解“接口回调”,一不小心就被绿
背景最近要接一个数据,小松不知道怎么弄,导师说:你可以定义一个接口回调啊然后我就吭哧吭哧的写,写到一半,发现有点不对劲,但是又不知道怎么办。顿时发现自己的接口回调用少了,只能对付常用的几个场景,一般在网上搜一搜都能发现很多一样的代码。但是一旦在几百万代码的产品中,很多接口回调都是自定义或者用别人的自定义,不熟悉,不习惯是理所当然的。所以今天,我们就好好的来剖析一下什么是接口回调回调假设,现在小松有一个女朋友,小鹿,我们在一起生活,要生活呢就要洗碗,如果我和她都学会洗碗,显然,我们内部的代码是重复的原创 2020-09-26 01:13:01 · 1872 阅读 · 2 评论 -
【GC算法几人知?】五、GC标记-压缩法 思想荟萃的方法
大家好,我是【小松与蘑菇】,即将毕业去深圳的大学生,致力于android,java相关领域,也对AI很感兴趣。正朝着写出通俗易懂而又有深度的文章而努力前文地址【GC算法几人知?】一、前置知识积累【GC算法几人知?】二、标记清除法 全解析【GC算法几人知?】三、引用计数法,直抵GC本质的方法【GC算法几人知?】四、GC复制法,java所借鉴的方法本来想写一篇 jdk8的分代回收的,但...原创 2020-05-01 15:23:32 · 1412 阅读 · 37 评论 -
【GC算法几人知?】二、标记清除法 全解析
所谓标记-清除,顾名思义,就是先标记那些活动的对象,然后再遍历堆,所有非标记对象都是垃圾,需要清除,类似于hr筛选简历时没有看到985-211学校直接拒绝~步骤标记根据前置知识我们知道,一个对象有头有域,如何进行标记呢?就是在对象的头中设置一个mark标志位,然后从根开始,通过指针所找到的所有对象,清除...原创 2020-04-22 17:49:28 · 2580 阅读 · 29 评论 -
【面试】i++与++i的水有多深,你真的了解吗?
i++是先算后加,++i是先加后算,这个在我们学习循环就已经知道的东西,到底蕴含了什么呢?我们来看一段代码int i1=10;int i2=i1++;int i3=10;int i4=++i3;int i5 = 10;i5 = i5++;int i6=10;i6 = ++i6;int i7=10;int i8 = i7++ + ++i7;i7=10;int i9 ...原创 2020-02-03 06:44:07 · 770 阅读 · 0 评论 -
java设计模式脑图全解(供复习用)
一学期的《设计模式》课总算完了,23种设计模式也翻来覆去的看了,练习了,当然,这还是容易忘,就把一再精简的脑图贴一下,虽然对每个模式的描述不多,但是直抵本质,还加了使用场景,方便理解如果之前没有接触过设计模式,推荐菜鸟教程设计模式本篇适合复习由于图比较大,分成五张图片创建型结构型行为型其他加上其他类型的设计模式,其实已经超过了23种,事实上,这些模式是上述模式的叠加,用于特...原创 2019-06-11 08:57:10 · 658 阅读 · 0 评论 -
从零手工实现java中的ArrayList容器(三个版本的迭代)
注:为方便理解,分为三个版本,每个版本在上一个的基础上扩展,如果你有足够的基础,可以直接翻到最下面看最终版本代码,我会详细注释内部方法与变量add(),set(),get(),remove(),empty(),size(),checkRank(),toString()size,elementData [],DEFAULT_CAPACITY核心问题问题方法列表的存储结构...原创 2019-01-29 23:40:15 · 200 阅读 · 0 评论 -
java8函数式处理操作一——引入流高效解决集合排序问题
现在我们先来实现一个实体类,这是一个菜肴类,有名字,是否含输出,卡路里含量,类型四个变量,除了get,set方法外还加了一个compareTo方法,可按照卡路里含量从大到小排列现在我们用三种方法完成一件事情——从菜肴菜单中输出卡路里含量大于300的菜肴名字这是菜肴菜单列表List mymenu = Arrays.asList(new Dish(“pork”, false, 800, Dis...原创 2019-02-03 04:42:37 · 702 阅读 · 0 评论 -
java反射理解,通过反射获取并修改类的对象,方法和属性
反射有什么用?能在程序运行期间动态加载一个完全未知的类显然可以提高java灵活性和增加应用场景核心Class c=Class.forName("reflection.User");这里声明一个类的对象(注意Class中c是大写,class是关键字)然后获取路径(包名+类名),这样c虽然不是User类,但是就相当于一面镜子可以通过c获得对象,所以称为“反射”说明下面举例说明,这是...原创 2019-01-24 18:58:32 · 19770 阅读 · 0 评论 -
java中常用的五个注解的理解
在我们写java程序时,往往会看到前面有@Override这类说明他就是注解作用注解时不影响本程序的,起一个解释说明作用,这里和注释一样区别在于,注解可以被别的程序读取到,比如A有注解,虽然A读不到,但是调用A的B可以读取到,并执行一些操作比如一个美女虽然很难取悦自己,但是她可以轻松取悦别人(这是我想到的最通俗的解释,认真脸)内容我们介绍5个注解,也是很常用的注解三个基本注解 O...原创 2019-01-23 18:18:07 · 705 阅读 · 0 评论 -
用例子解释关于HashMap的几个使用方法put,replace,merge等
HashMap做为一种好的算法工具, 由Key和Value结队组成,一个Key对应一个Value,可以成对的加入到HashMap中,只要用map.get(key)就可以得到对应的Value值。非常适合通过学号查找成绩,通过编号查找书籍等等,所以其中Key是不能重复的,否则后面的会覆盖前面的,这里我们通过一个例子来介绍几个有效的使用方法import java.util.HashMap;impo...原创 2018-10-17 20:43:48 · 9082 阅读 · 2 评论 -
java集合中对contains,foreach,forEachRemaining,lambda表达式的使用
下面是一段代码来解释这个事情,看似有点长,但是前面很多是铺垫,很简单就可以理解,示例来源于《疯狂java讲义》,后面的输出表示得也很清楚package test;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;public c...原创 2018-10-16 09:40:18 · 5078 阅读 · 0 评论 -
用socket实现客户端和服务端的通信 (java)
首先我们要懂几个关键词 socket,InputStream,OutputStream,BufferReader 举个例子,假如两个人A,B要通信,他们使用一种信件交流的方法,并且规定好了信箱,一方把信件放在信箱里面,另一方就可以去看socket简单来说就是连接两个程序的程序,就是信箱 在A程序中 InputStream 读入流,相当于是A写的信 OutputSream是A收到的信 ...原创 2018-09-09 22:43:33 · 12217 阅读 · 0 评论 -
java画图板之四——滑稽大作战(鼠标可移动小球,发射子弹)
先上效果图,子弹左边的滑稽就是我的鼠标控制的,网上搜了好久的在csdn上插入视频,没解决,从爱奇艺上传,现在还在转码……,有没有大佬教下方法其实只是用了“滑稽”的图片而已,把图片拿掉本质上就是用鼠标控制一个可以发射很多小球的小球,以及一堆随机产生的带有随机速度的小球而已,前面是讲解,代码放在了最后随机产生的小球思路在java画图板之三中有过详细描述,我们创建了四个类 窗体类Framb...原创 2018-07-27 23:35:22 · 1626 阅读 · 3 评论 -
java画图板之二——重绘直线(paint方法)
在我们的第一个简易画图板中,使用了两个类DrawFrame和FrawListener,但是有一个很大的问题,不能保存!当我们扩大或缩小画图板的大小时,之前的一起都没了。 原因在于,当我们改变画图板的时候,其实是将他重新画了一遍,而不是改变原来的大小,所以原来的自然就被重画的窗体给覆盖了,所以我们也需要重画一遍之前画的而要重画之前画的,比如我们画了两条直线,要想把两条直线重画出来,需要先保存他...原创 2018-07-21 16:05:42 · 2273 阅读 · 2 评论 -
java画图板之三——用线程让多个小球在界面自动运动
在界面上,除了可以实现点击,鼠标移动等操作的监听器,还有可以自动运行的线程线程是指令执行的最小单位,而且多个线程是共用一个进程的内存的,也就是说我们在一个程序中可以开很多个线程,不过线程开多了当然占用的内存就多现在我们要实现的是,运行主程序,自动跳出界面,自动出现很多小球,他们的大小,位置,运动方向速度,完全是随机的,同时碰到界面边界还要反弹这样的要求我们的第一反应往往是一个小球开一个...原创 2018-07-25 08:02:56 · 5169 阅读 · 4 评论 -
java画图板之一——做一个简单的画直线的界面
在一个什么都没有的eclipse上,如何做出自己特色的画图板呢 首先我们需要一个界面首先我们要明白,这是一个窗口,所以我们在需要先构造这个窗口,在java中称为窗体 JFrame MyFrame=new JFrame(); 但是我们的窗体应该是有标题的(左上角),右上角的符号是自带的,不用管 而且运行程序时出现的窗体有大有小,所以标题和窗体尺寸我们需要设置 MyFrame.setSi...原创 2018-07-16 21:54:32 · 14182 阅读 · 2 评论 -
java 关于抽象类与接口的使用探索
本篇文章,写给对抽象类和接口有所了解,但是又对使用情况比较混乱的孩子如果你能脱口而出以下三个问题,说明你的水平很扎实,不用看了1、接口可以被接口继承吗?2、抽象类可以实现接口吗?3、抽象类和接口的区别?前两个的答案,都是yes本篇文章理论较少,都是使用探索,代码不标红就是可以使用,标红就是报错接口继承接口,没有问题继承类,报错(抽象类一样)多重继承接口,没有问题实现接口...原创 2019-09-16 16:58:07 · 230 阅读 · 0 评论