自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 安装mysql 5.7 zip版

下载地址:MySQL :: Download MySQL Community Server (Archived Versions)下载后进行系统环境变量配置1. MYSQL_HOME=D:\mysql\mysql-5.7.35-winx642.Path: ……之前的配置……%MYSQL_HOME%\bin\;3.增加my.ini文件在D:\mysql\mysql-5.7.35-winx64\打开命令行(最好是管理员模式):mysqld --defaults-file="D:\my

2021-10-06 00:00:37 122

原创 C位出道队20210913

一、每日一算法 -Bubble Sort冒泡排序简述Bubble Sort冒泡排序:对于给定n个元素,从第一个元素开始,将相邻的元素两两比较,当前面的元素大于后面的就交换位置,进行一轮比较后,n个元素中最大的元素将位于第n位,然后对前(n-1)个记录进行第二轮比较;重复该过程直到进行比较的元素只剩下一个为止。public class BubbleSort { public static void selectSort(int[] a){ int i; .

2021-09-14 00:28:59 123

原创 Oauth授权机制实战

Oauth全称为Open Authorization。OAuth协议为用户资源授权提供了一个安全的、开放、而又简易的标准。一、常见的重要流程有:(设OECP为第三方服务端开发系统,支付宝为开放OAuth认证服务提供商)1.开始用户访问OECP2.OECP请求支付宝的登录页面3.用户扫描登陆二维码(确认输入登录信息),输入账号始终在支付宝页面4.支付宝返回登录结果(不包含用户敏感信息)5.OECP返回登录状态二、应用场景:支付宝用户授权阿里云使用其支付宝账号..

2020-10-12 11:27:21 531

原创 十二、线程池的核心模型Worker对象的运作流程是怎样的?

参考的资料:《码》P244-P249值得一看的文章:https://blog.csdn.net/qq_28165595/article/details/1054667721.首先要从线程池ThreadPoolExecutor讲起:1)众所周知线程池有5个生命周期(这里不再展开),启动线程池时有7个参数需要配置,之前已经提及。2)当线程池需要增加一个线程来工作时,这时会启动addWorker方法,ThreadPoolExecutor.Worker在线程池中被封装为一个工作线程对象addWo

2020-09-17 22:26:38 356

原创 十一、线程池的生命周期

参考的资料:https://blog.csdn.net/jinfengloveIT/article/details/90297393https://blog.csdn.net/u010412719/article/details/52132601《码》P244线程池的生命周期也可以称为线程池的状态ThreadPoolExecutor的源码使用位移运算来表示线程池状态,5个Integer表示的状态属性里,右29位表示工作线程数,左3位表示线程池状态五种状态的十进制值按从小到大依次排序为:

2020-09-17 22:25:47 2202

原创 十、线程池参数说明,线程池的线程回收、shutdown

参考的资料:《码》P237-P249线程池参数说明值得参考的例子:https://blog.csdn.net/weixin_42061605/article/details/106885130线程池的本质就是生产者消费者模型,举一个生活中的例子来进行描述,假设我们整个过程模拟成工厂里的一道工序,整个过程类比一下:核心线程数corePoolSize 该部门的正式员工最大线程数maximumPoolSize 该团队的最大人数限制,就相当于工位吧, 大于核心线程数的那部分理解为允许的临时工数量

2020-09-17 22:24:32 437

原创 九、关于ClassLoader,类加载器,双亲委派机制

1.ClassLoader目的:提前加载.class类文件到内存中。类加载器是一个运行时核心基础设施模块。类加载的过程1)加载 JVM把class文件加载到内存,并将静态数据转换成方法区中的运行时数据结构,在堆中生成代表这类的java.lang.Class对象,类加载器的由低到高层次结构有:用户自定义的类加载器、Application ClassLoader 加载CLASSPATH路径下的类、Platform ClassLoader 加载一些扩展的系统类、Bootstrap Cla...

2020-09-16 11:17:36 78

原创 八、关于注解:元注解的种类、继承java.lang.Annotation、注解的基础类型、注解的常用方法

部分参考资料:https://blog.csdn.net/javazejian/article/details/71860633#%E6%B3%A8%E8%A7%A3%E4%B8%8D%E6%94%AF%E6%8C%81%E7%BB%A7%E6%89%BF元注解(修饰注解的注解)的种类:1.@Retention1)属性value ,配置枚举RetentionPolicy类型的值2)RetentionPolicy有3个值:CLASS,RUNTIME,SOURCE。RetentionPoli

2020-09-16 11:16:37 202

原创 七、精度损失问题,int,long超过最大值

整数的运算会有一个自动法则:低精度(整数)往高精度(浮点数)的转化,为了避免精度损失,通常高精度往低精度转化都需要手动强转,但这样还是会产生精度损失的问题。1.比如1.0-0.9在计算机的运算不会精确等于1,而是等于0.100000024。这是因为计算机进行数据的存储和运算都是以二进制形式进行的,二进制不能精确地表示浮点数小数点的运算结果,在IEEE 754中规定的对阶以及尾数位的移动都是为了减少这种运算精度损失。2.int、long这些是有一定的表示范围的,int是4个字节,long是8个字节,由

2020-09-16 11:15:24 1487

原创 六、常见设计模式

1.详见Netty中学习设计模式https://blog.csdn.net/windy46/article/details/1086182622.代理模式描述:为其他对象提供一种代理以控制对这个对象的访问。3.适配器模式描述:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。注意:项目一定要遵守依赖倒置原则和里氏替换原则。依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖抽象。抽象不应该依赖细节。细节应该依赖抽象。.

2020-09-16 11:14:49 146

原创 从Netty中学习设计模式

装饰者模式 -- WrappedByteBuf描述:动态地给一个对象添加一些额外的职责。出现原因:类的数量出现了爆炸式的增长。它可以帮我们的一些数据类型包装成Netty的ByteBuf,本身继承了ByteBuf, 它的构造函数是传入一个ByteBuf实例,这个传入的实例就是被装饰者,它的行为可以被当前这个类,也就是WrappedByteBuf(装饰者)动态改变。https://blog.csdn.net/fst438060684/article/details/81156898责任链模式 -

2020-09-16 11:14:07 206

原创 五、LinkedList、LinkedHashMap、LRU

1.LinkedList本质:双向链表。效率:与ArrayList相比,插入和删除速度快,随机访问速度慢。继承和实现:继承AbstractList抽象类,实现Deque接口(有队列和栈)成员变量:size、first、last2.LinkedHashMap1)像HashMap一样用数组、单链表和红黑树来组织数据2)维护了一个双向链表,每次向LinkedHashMap插入键值对,除了将其插入到哈希表的对应位置,还要将其插入到双向循环链表的尾部。3.LRU(最近最少使用)算法运用

2020-09-16 11:11:57 281

原创 四、jdk ServiceLoader

参考的资料:https://www.jianshu.com/p/a6073e9f8cb4https://www.jianshu.com/p/46b42f7f593c1.基于Java SPI机制SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现的或者扩展的API,它可以用来启用框架扩展和替换组件。Java SPI="基于接口编程 + 策略模式 + 配置文件"组合实现的动态加载机制。2.ServiceLoader作用:通过配置文件灵活地指定一

2020-09-16 11:11:13 91

原创 三、泛型、泛型继承、泛型擦除

参考的资料:《码》P85以及6.5节1.泛型由JDK1.5诞生,本质类型参数化,解决不确定具体对象类型的问题。好处:类型安全、提升可读性、代码重用2.泛型继承List<? extends T>,可以赋值给任何T及T的父类集合,下界为T。消费集合元素为主的场景,适用于取元素。3.泛型擦除(向前兼容,抹掉特性、代码复杂)1)泛型在定义处只具备执行Object方法的能力2)对于编译之后的字节码指令,方法签名为引用类型的都会为Object,说明泛型只是一种编写代码时的语法

2020-09-16 11:10:33 155 1

原创 二、final关键字的作用(方法、变量、类)

参考的资料:https://www.cnblogs.com/qiaoxin11/p/12542185.html1.用来修饰(引用)变量(1)如果引用为基本数据类型,则该引用为常量,该值无法修改;(2)如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。(3)如果引用时类的成员变量,则必须当场赋值,否则编译会报错。2.用来修饰方法当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继...

2020-09-16 11:09:50 255

原创 一、强引用、弱引用、虚引用、软引用

参考的资料:1.《码》P251 2. DIY第11次讨论问题强引用 - Strong Reference用于变量的声明和定义。GC Roots可达,Java内存回收时,不会回收该对象(即使濒临内存耗尽)软引用 - Soft Reference用在非必需对象的场景。即将OOM之前(内存不足的时候)GC会进行回收,以获得更多的内存空间。用于高速缓存(缓存服务器中间计算结果及不需要实时保存的用户行为等)弱引用 - Weak Reference也用在非必需对象的场景。系统启动GC时或下一次Y

2020-09-16 11:08:53 953

原创 预防脂溢性皮炎

脂溢性皮炎的含义:由于内外刺激而引起的一种慢性皮肤炎症。脂溢性皮炎导火线:皮脂溢出部位皮脂分泌过多。可能的症状 常开始于头部,以后逐渐蔓延到面部、耳部、腋窝、前胸、后背等皮脂腺分布较丰富的部位。表面为鲜红色或黄红色斑片,大小不等,形态不一,边界不显,表面附有灰白色油腻性鳞屑或痂皮,往往有瘙痒。根据其发病部位不同有头皮脂溢性皮炎、面部脂溢性皮炎、躯干脂溢性皮炎、婴儿脂溢性皮炎;根据皮损特征不同,有干性脂溢性皮炎(以鳞屑为主)和湿性脂溢性皮炎(以痂皮为主)。预防脂溢性皮炎的要点①【有良好的.

2020-08-23 11:23:21 217

原创 一日三餐的最佳用餐时间

一日三餐的最佳用餐时间早餐 早上6~8点左右最佳。早上是肠道排泄时间,如果在10点之后吃早餐,那么排泄时间就会延长,这是大忌。 午餐 最好在下午3点之前解决。一日之中,下午3点是血糖值得最高峰,所以最好在此之前吃午餐。 晚餐 晚上6~8点最佳。最好在睡前3小时解决晚餐。晚上十点之后是肠道的休息时间,10点之后吃晚餐,会打扰肠道休息,这也是禁忌! *前提原则:每餐之间至少相隔3小时不挨饿的营养减肥零食开心果 -- 改善血脂水平 花生 -- 有助于增强饱腹感 南瓜子 -- 对前列...

2020-08-21 11:18:02 2220

原创 BIO、NIO、AIO及衍生出的Netty

JAVA的I/O模型一、BIOBIO全称Blocking IO,它作为传统I/O模型,是同步阻塞的。特点: 1.无连接请求时,accept方法阻塞 2.无数据可读取时,read方法阻塞BIO引发的问题: 严重的资源浪费1.线程的创建和销毁成本很高,在Linux这样的操作系统中,线程本质上就是一个进程。创建和销毁都是重量级的系统函数。2.线程本身占用较大内存,像Java的线程栈,一般至少分配512K~1M的空间,如果系统中的线程数过千,恐怕整个JVM的内存都会被吃掉...

2020-08-08 17:33:11 136

原创 【快速排序QuickSort研究】快排的双路实现以及注意要点

一、双路快排思路 基于单路快排的基础上,若排序的数组中的元素重复多,所选的标定点是极度不平衡的话(数组两边位置不平衡),那么快速排序的时间复杂度会下降到O(n的2次方) 不平衡的情况:换个思路:设标记点为v,将小于v和大于v的两部分放到数组的两端,设j为大于v下一个数组要扫描的位置,设i为小于v下一个数组要扫描的位置,比如说扫描到中间的状态,如下图那么,我们将从i位置向后扫描,当元素仍然小于v时继续向后扫描,直到碰到大于等于v的元素同样,从j位置向前扫描,当元素仍然...

2020-08-07 22:32:07 330

原创 【快速排序QuickSort研究】快排的基础实现

1)快排的原理是什么? 1.从数组中选取一个元素作为基准,快速地将该基准排到数组中合适的位置 (该基准的左边都是比该基准小的数,该基准的右边都是比该基准要大的数) 2.按照该基准位置对数组进行拆分,拆分后的数组按照同样地方法进行排序和拆分,直到整个数组有序。2)快速排序的核心代码实现(单路):private static void quickSort(int array[],int l ,int r){if(l>=r){...

2020-08-07 21:22:18 164

原创 ConcurrentHashMap的size计算(分析JDK1.7 1.8)

JDK1.7 的 ConcurrentHashMap的size() /** * Returns the number of key-value mappings in this map. If the * map contains more than <tt>Integer.MAX_VALUE</tt> elements, returns * <tt>Integer.MAX_VALUE</tt>. *

2020-07-23 20:14:43 1071

原创 CAS到底是什么?

在学习并发之前,有必要了解清楚CAS是什么?先参考:https://blog.csdn.net/v123411739/article/details/79561458

2020-07-23 19:06:13 479

原创 象征性地发表一篇文章

悄悄地开始我的第一步计划 — 以终为始要确定下最终的一个目标,然后向这个目标前进

2020-06-25 22:59:31 123

原创 IDEA cannot access class

idea无缘无故加载不了class,然后有一些路径换成*号引入可以,有一些就不行网上收集了很多方法,发现重启行不通最后有一种方法适合我:俗称清缓存...

2020-04-10 10:52:03 292

原创 2020.01.30~01.31 部署阿里云相关记录

相关参考:xshell连接服务器无法用password登录,只能用public key的解决办法使用xshell连接阿里云远程服务器(图文教程)xftp可以连接阿里云,22端口就可以了 选择sftplinux openjdk1.8安装报错:configure: error: The path of JAVA_HOME_PROCESSED, which resolves ...

2020-01-30 15:16:29 386

原创 String#intern()方法

前言:创建String对象时实际产生了多少个对象?说明: String s = new String(“abc”);创建了2个对象第一个对象,内容“abc”,存储在常量池中第二个对象,内容“abc”,存储在堆中String常量池在不同JDK版本的位置JDK6String常量池保存到Perm区。Perm区主要存储一些加载类的信息、静态变量、方法片段、常量池等。He...

2019-11-15 21:40:34 276

原创 再一次给未来的自己

无法接受残酷的命运但我想给自己转个弯,再一次加油,重新认识自己吧

2019-07-19 13:22:33 101

转载 泛型的类型参数---泛型的参数只能是对象,不能是原始数据类型

泛型其实指得就是参数化类型,使得代码可以适应多种类型。像容器,List< T >,大量使用了泛型它的主要目的之一就是用来指定容器要持有什么类型的对象泛型只能只能代表引用类型,不能是原始类型,原始类型有byte/short/int/long 浮点型:float.double 字符型char 布尔型:boolean,引用类型与原始类型的区别在于虽然二者保存在栈中,但原始类型保存的是...

2019-03-21 14:44:48 8790

原创 Cannot load supported formats: Cannot run program "Z:\TortoiseSVN\bin\svn.exe

重装svn后我的svn.exe不见了,要修复一下搞定

2019-01-28 12:05:12 928

原创 Windows查看某个端口被占用,并且终止这个端口的占用

我之前开了tomcat其中占用了8787和1099的端口,现在莫名其妙还没有关掉使用netstat -ano在命令行查看端口情况对应的PID是10268输入 tasklist|findstr 10268 可以看到是java.exe占用了方法一、选择任务管理器,点击详细信息-点击PID(就会按升序排列)找到10268的PID,就可以kill掉啦方法二、使用命令行kil...

2019-01-06 11:12:42 925 10

原创 把maven管理的web项目在tomcat上运行,使用idea工具搭建

为了要好好深入弄懂为什么idea这么难部署tomcat(经常404),我需要重新建项目了解一下原理首先file-&gt;new project,进到这页面为了节省时间,我们套用一下maven模板,然后点击nextSNAPSHOT是快照的意思点击next确认一下maven配置,点击nextfinish之后整个项目页面就出来了,当然现在仅仅是使用maven的...

2019-01-04 11:11:22 264

原创 Git连接Github并上传项目代码

所谓标题的话一定要写得好看一点,不能太直接,不然就俗了是不是连接github的注意事项第一步:首先要在本地建立公钥对,生成.ssh目录,.ssh目录下有这两个东西如果没有的话,打开命令行,输入如下命令(Window下打开Git Bash): ssh-keygen -t rsa -C “84*******@qq.com”id_rsa是私钥,不能泄露出去,id_rsa.pub是...

2019-01-02 11:29:13 236 2

原创 给未来的自己

给不了。。。我写不出,我没有任何期待,似乎被屏蔽了一般

2019-01-01 21:30:57 347

原创 【EveryDay算法题】First Day

从尾到头打印链表输入一个链表,按链表值从尾到头的顺序返回一个ArrayList/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }...

2018-12-24 14:42:17 165

转载 ant用途及简单实现

Ant工具的作用: 1、可以用ant编译java类,生成class文件 2、ant可以自定义标签、配置文件 3、ant可以把相关层架构成包 4、ant把整个项目生成web包,并发布到Tomcat也许你听到别人说起ant,一时冲动准备学习一下ant,当你看完了上边的第一个实例,也许你感觉ant真好,也许你感觉ant不过如此,得出这些结论都 不能说错,虽然ant很好用,但并不是在任何情况下...

2018-10-14 15:41:17 504

原创 Ant的安装和使用

Ant是基于Java的生成工具,用于管理整个项目的编译、生成。特点:①Ant工具使用XML文件来编写生成文件            ②跨平台、简单、易用P.S Ant提供了"exec"核心任务,这个任务允许执行特定操作系统上的命令Ant包的结构:bin:可执行性命令 etc:样式单文件 lib:Ant的核心类库 manual:相关文档 LICENSE:说明性文档使用A...

2018-10-14 15:00:45 189

转载 腾讯云环境CentOS 7.5 搭建tomcat8和java1.8

一、使用XShell登录远程服务器二、开始安装环境 (离线)【在线就跳过在第三步】yum -y install lrzsz 使用rz命令,弹出上传框后,将jdk-8u60-linux-x64.tar.gz 和 apache-tomcat-8.5.34.tar.gz分别上传上云服务器tar 修改 /etc/profile 文件按G移到文件最后保存并退出::wq    ...

2018-10-07 17:27:10 437

原创 使用Eclipse作为SVN客户端

首先去EclipseMarketplace下载Subclipse插件,我的版本是4.2.4EclipseMarketplace打不开见上一篇解决办法Subclipse插件安装时会最小化,所以要注意它安装到哪里,不要以为最小化就安装好了!如果是第一次使用:import...输入SVN资源库的URL【svn资源库应该早就建好的,没建好的话就去自学SVN服务器配置】选...

2018-09-10 14:02:32 304

转载 Eclipse Marketplace打开出错

在网上找了很多资料终于找到一种解决方法:window-&gt;preferences-&gt;general-&gt;network connection,选择manual,勾上HTTP、HTTPS、SOCKS,apply,重启eclipse就行了。

2018-09-10 13:12:43 1266

空空如也

空空如也

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

TA关注的人

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