![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Study Road
文章平均质量分 87
windy46
这个作者很懒,什么都没留下…
展开
-
Oauth授权机制实战
Oauth全称为Open Authorization。OAuth协议为用户资源授权提供了一个安全的、开放、而又简易的标准。一、常见的重要流程有:(设OECP为第三方服务端开发系统,支付宝为开放OAuth认证服务提供商)1.开始用户访问OECP2.OECP请求支付宝的登录页面3.用户扫描登陆二维码(确认输入登录信息),输入账号始终在支付宝页面4.支付宝返回登录结果(不包含用户敏感信息)5.OECP返回登录状态二、应用场景:支付宝用户授权阿里云使用其支付宝账号..原创 2020-10-12 11:27:21 · 521 阅读 · 0 评论 -
十二、线程池的核心模型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 · 325 阅读 · 0 评论 -
十一、线程池的生命周期
参考的资料: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 · 2150 阅读 · 0 评论 -
十、线程池参数说明,线程池的线程回收、shutdown
参考的资料:《码》P237-P249线程池参数说明值得参考的例子:https://blog.csdn.net/weixin_42061605/article/details/106885130线程池的本质就是生产者消费者模型,举一个生活中的例子来进行描述,假设我们整个过程模拟成工厂里的一道工序,整个过程类比一下:核心线程数corePoolSize 该部门的正式员工最大线程数maximumPoolSize 该团队的最大人数限制,就相当于工位吧, 大于核心线程数的那部分理解为允许的临时工数量原创 2020-09-17 22:24:32 · 408 阅读 · 0 评论 -
九、关于ClassLoader,类加载器,双亲委派机制
1.ClassLoader目的:提前加载.class类文件到内存中。类加载器是一个运行时核心基础设施模块。类加载的过程1)加载 JVM把class文件加载到内存,并将静态数据转换成方法区中的运行时数据结构,在堆中生成代表这类的java.lang.Class对象,类加载器的由低到高层次结构有:用户自定义的类加载器、Application ClassLoader 加载CLASSPATH路径下的类、Platform ClassLoader 加载一些扩展的系统类、Bootstrap Cla...原创 2020-09-16 11:17:36 · 64 阅读 · 0 评论 -
八、关于注解:元注解的种类、继承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 · 191 阅读 · 0 评论 -
七、精度损失问题,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 · 1418 阅读 · 0 评论 -
六、常见设计模式
1.详见Netty中学习设计模式https://blog.csdn.net/windy46/article/details/1086182622.代理模式描述:为其他对象提供一种代理以控制对这个对象的访问。3.适配器模式描述:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。注意:项目一定要遵守依赖倒置原则和里氏替换原则。依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖抽象。抽象不应该依赖细节。细节应该依赖抽象。.原创 2020-09-16 11:14:49 · 136 阅读 · 0 评论 -
从Netty中学习设计模式
装饰者模式 -- WrappedByteBuf描述:动态地给一个对象添加一些额外的职责。出现原因:类的数量出现了爆炸式的增长。它可以帮我们的一些数据类型包装成Netty的ByteBuf,本身继承了ByteBuf, 它的构造函数是传入一个ByteBuf实例,这个传入的实例就是被装饰者,它的行为可以被当前这个类,也就是WrappedByteBuf(装饰者)动态改变。https://blog.csdn.net/fst438060684/article/details/81156898责任链模式 -原创 2020-09-16 11:14:07 · 196 阅读 · 0 评论 -
五、LinkedList、LinkedHashMap、LRU
1.LinkedList本质:双向链表。效率:与ArrayList相比,插入和删除速度快,随机访问速度慢。继承和实现:继承AbstractList抽象类,实现Deque接口(有队列和栈)成员变量:size、first、last2.LinkedHashMap1)像HashMap一样用数组、单链表和红黑树来组织数据2)维护了一个双向链表,每次向LinkedHashMap插入键值对,除了将其插入到哈希表的对应位置,还要将其插入到双向循环链表的尾部。3.LRU(最近最少使用)算法运用原创 2020-09-16 11:11:57 · 267 阅读 · 0 评论 -
四、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 · 74 阅读 · 0 评论 -
二、final关键字的作用(方法、变量、类)
参考的资料:https://www.cnblogs.com/qiaoxin11/p/12542185.html1.用来修饰(引用)变量(1)如果引用为基本数据类型,则该引用为常量,该值无法修改;(2)如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。(3)如果引用时类的成员变量,则必须当场赋值,否则编译会报错。2.用来修饰方法当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继...原创 2020-09-16 11:09:50 · 244 阅读 · 0 评论 -
一、强引用、弱引用、虚引用、软引用
参考的资料:1.《码》P251 2. DIY第11次讨论问题强引用 - Strong Reference用于变量的声明和定义。GC Roots可达,Java内存回收时,不会回收该对象(即使濒临内存耗尽)软引用 - Soft Reference用在非必需对象的场景。即将OOM之前(内存不足的时候)GC会进行回收,以获得更多的内存空间。用于高速缓存(缓存服务器中间计算结果及不需要实时保存的用户行为等)弱引用 - Weak Reference也用在非必需对象的场景。系统启动GC时或下一次Y原创 2020-09-16 11:08:53 · 941 阅读 · 0 评论 -
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 · 125 阅读 · 0 评论 -
【快速排序QuickSort研究】快排的双路实现以及注意要点
一、双路快排思路 基于单路快排的基础上,若排序的数组中的元素重复多,所选的标定点是极度不平衡的话(数组两边位置不平衡),那么快速排序的时间复杂度会下降到O(n的2次方) 不平衡的情况:换个思路:设标记点为v,将小于v和大于v的两部分放到数组的两端,设j为大于v下一个数组要扫描的位置,设i为小于v下一个数组要扫描的位置,比如说扫描到中间的状态,如下图那么,我们将从i位置向后扫描,当元素仍然小于v时继续向后扫描,直到碰到大于等于v的元素同样,从j位置向前扫描,当元素仍然...原创 2020-08-07 22:32:07 · 314 阅读 · 0 评论 -
【快速排序QuickSort研究】快排的基础实现
1)快排的原理是什么? 1.从数组中选取一个元素作为基准,快速地将该基准排到数组中合适的位置 (该基准的左边都是比该基准小的数,该基准的右边都是比该基准要大的数) 2.按照该基准位置对数组进行拆分,拆分后的数组按照同样地方法进行排序和拆分,直到整个数组有序。2)快速排序的核心代码实现(单路):private static void quickSort(int array[],int l ,int r){if(l>=r){...原创 2020-08-07 21:22:18 · 150 阅读 · 0 评论 -
CAS到底是什么?
在学习并发之前,有必要了解清楚CAS是什么?先参考:https://blog.csdn.net/v123411739/article/details/79561458原创 2020-07-23 19:06:13 · 457 阅读 · 0 评论 -
IDEA cannot access class
idea无缘无故加载不了class,然后有一些路径换成*号引入可以,有一些就不行网上收集了很多方法,发现重启行不通最后有一种方法适合我:俗称清缓存...原创 2020-04-10 10:52:03 · 276 阅读 · 0 评论 -
String#intern()方法
前言:创建String对象时实际产生了多少个对象?说明: String s = new String(“abc”);创建了2个对象第一个对象,内容“abc”,存储在常量池中第二个对象,内容“abc”,存储在堆中String常量池在不同JDK版本的位置JDK6String常量池保存到Perm区。Perm区主要存储一些加载类的信息、静态变量、方法片段、常量池等。He...原创 2019-11-15 21:40:34 · 258 阅读 · 0 评论 -
【EveryDay算法题】First Day
从尾到头打印链表输入一个链表,按链表值从尾到头的顺序返回一个ArrayList/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }...原创 2018-12-24 14:42:17 · 155 阅读 · 0 评论 -
再一次给未来的自己
无法接受残酷的命运但我想给自己转个弯,再一次加油,重新认识自己吧原创 2019-07-19 13:22:33 · 86 阅读 · 0 评论 -
Cannot load supported formats: Cannot run program "Z:\TortoiseSVN\bin\svn.exe
重装svn后我的svn.exe不见了,要修复一下搞定原创 2019-01-28 12:05:12 · 921 阅读 · 0 评论 -
使用Eclipse作为SVN客户端
首先去EclipseMarketplace下载Subclipse插件,我的版本是4.2.4EclipseMarketplace打不开见上一篇解决办法Subclipse插件安装时会最小化,所以要注意它安装到哪里,不要以为最小化就安装好了!如果是第一次使用:import...输入SVN资源库的URL【svn资源库应该早就建好的,没建好的话就去自学SVN服务器配置】选...原创 2018-09-10 14:02:32 · 295 阅读 · 0 评论 -
编写一个程序,将浮点数转换成人民币读法字符串
package crazy.lee.chapter04;import java.util.Arrays;/** * * @author Windy46 * */public class Question05 { private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , "伍" , &q原创 2018-08-15 14:45:21 · 1434 阅读 · 0 评论 -
菜鸟程序员的自我思想工作-jsp
想起来已经两个星期没有更新博客了,必须补回来----国庆一直有目标干嘛干嘛,可是最终还是泡汤了,转眼我就只剩一天的假期了QAQ有想过不如把JavaScript的课程设计做了吧,可是做到了一半感觉对JS整个流程整个框架都不是很熟悉,做来做去都只是html+css,几乎很少用到JS虽然JS知识点简单易懂容易看【喂】除了市级联动还有各种图片滑动、表单认证之外几乎没什么要放在课程设计里面了,哦原创 2017-10-06 14:29:58 · 457 阅读 · 0 评论 -
struts配置出错的问题
Hello!这是我第二篇文章了首先,SSH的课程正在学习,而代表S的Struts一开始配置就出现错误了(不会吧在我出错的时候,看到很多同学都交了作业了,QAQ所以我觉得是自己打错的问题,毕竟老师的答案都有给出然后找啊找,很难才找到。首先建了ssh03的项目,项目结构是这样的这里大致上是没什么问题,接着看下去,自己配置的struts.xml:来找个碴吧!和原创 2017-09-22 21:30:38 · 2276 阅读 · 0 评论 -
腾讯云环境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 · 428 阅读 · 0 评论 -
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 · 223 阅读 · 2 评论 -
Windows查看某个端口被占用,并且终止这个端口的占用
我之前开了tomcat其中占用了8787和1099的端口,现在莫名其妙还没有关掉使用netstat -ano在命令行查看端口情况对应的PID是10268输入 tasklist|findstr 10268 可以看到是java.exe占用了方法一、选择任务管理器,点击详细信息-点击PID(就会按升序排列)找到10268的PID,就可以kill掉啦方法二、使用命令行kil...原创 2019-01-06 11:12:42 · 906 阅读 · 10 评论 -
给未来的自己
给不了。。。我写不出,我没有任何期待,似乎被屏蔽了一般原创 2019-01-01 21:30:57 · 334 阅读 · 0 评论 -
把maven管理的web项目在tomcat上运行,使用idea工具搭建
为了要好好深入弄懂为什么idea这么难部署tomcat(经常404),我需要重新建项目了解一下原理首先file->new project,进到这页面为了节省时间,我们套用一下maven模板,然后点击nextSNAPSHOT是快照的意思点击next确认一下maven配置,点击nextfinish之后整个项目页面就出来了,当然现在仅仅是使用maven的...原创 2019-01-04 11:11:22 · 253 阅读 · 0 评论 -
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 · 474 阅读 · 0 评论 -
Ant的安装和使用
Ant是基于Java的生成工具,用于管理整个项目的编译、生成。特点:①Ant工具使用XML文件来编写生成文件 ②跨平台、简单、易用P.S Ant提供了"exec"核心任务,这个任务允许执行特定操作系统上的命令Ant包的结构:bin:可执行性命令 etc:样式单文件 lib:Ant的核心类库 manual:相关文档 LICENSE:说明性文档使用A...原创 2018-10-14 15:00:45 · 175 阅读 · 0 评论 -
myeclipse与wildfly的各种错误配置
第一次写c博客\ >w首先要说明一下使用的环境配置myeclipse为2016版本wildfly为8.0安装配置遇到的问题真的数不胜数,而且网上的安装配置有点参差不齐,于是就自己安装啦,然后出错、闪退,最后发现原来是自己很多配置错了,而且还打错。。。正常应该是这个样子的:大部分都是INFO,没有ERRORo(* ̄▽ ̄*)ブ开心不过也有不正常的时候:原创 2017-09-14 16:21:20 · 2222 阅读 · 0 评论