- 博客(204)
- 问答 (2)
- 收藏
- 关注

原创 Docker学习总结
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了步骤1:新建一个空文件夹docker-demo,自己挑个目录创建就好。步骤2:将自己的项目导成jar包,例如docker-demo.jar,上传到docker-demo这个目录。
2023-02-28 16:53:27
1813
19

原创 支付宝沙箱准备开发环境
沙箱环境是支付宝开放平台为开发者提供的与生产环境完全隔离的联调测试环境,开发者在沙箱环境中完成的接口调用不会对生产环境中的数据造成任何影响。第三方支付接口流程大同小异,考虑开发及教学的方便性,支付宝提供支付宝沙箱环境开发支付接口,在教学中接入支付宝手机网站支付接口。详细参见:https://docs.open.alipay.com/200/105311/本文档使用支付宝沙箱进行开发测试,这里主要介绍支付宝沙箱环境配置。使用沙箱环境的买家账号登录沙箱版本的支付宝。安装模拟器,安装在没有空格和中文的目录。
2023-01-21 13:37:11
2208
5

原创 JWT学习
这个过程就是无状态认证。拿到了jwt令牌下一步就要携带令牌去访问资源服务中的资源,本项目各个微服务就是资源服务,比如:内容管理服务,客户端申请到jwt令牌,携带jwt去内容管理服务查询课程信息,此时内容管理服务要对jwt进行校验,只有jwt合法才可以继续访问。令牌采用JWT格式即可解决上边的问题,用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。
2023-01-19 12:38:38
1256
8

原创 什么是OAuth2
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。Spring Security支持OAuth2认证,OAuth2提供授权码模式、密码模式、简化模式、客户端模式等四种授权模式,前边举的微信扫码登录的例子就是基于授权码模式,这四种模式中授权码模式和密码模式应用较多,本节使用Spring Security演示授权码模式、密码模式,其余两种请自行查阅相关资料。授权码模式简单理解是使用授权码去获取令牌,要想获取令牌先要获取授权码,授权码的获取需要资源拥有者亲自授权同意才可以获取。
2023-01-19 10:45:52
1194

原创 封装自己的SDK
我们在开发Spring项目时常常会引入各种的依赖包,然后在配置文件中填入必要的信息,就可以使用依赖提供好的容器。这里是在鱼皮新项目直播中学习到的,特此记录一下。可在未来封装自己的SDK进行封装与装逼。
2022-12-03 16:22:00
496
原创 java并发编程之美第五章读书笔记
CopyOnWriteArrayList使用写时复制策略来保证list的一致性,而获取–修改–写入三步操作并不是原子性的,所以在增删改的时候都使用了独占锁,来保证在某个时候只有一个线程能对list进行修改,另外CopyOnWriteArrayList提供的弱一致性的迭代器,从而保证在获取迭代器后,其他线程对list的修改是不可见的,迭代器遍历的数组是一个快照,CopyOnWriteArrayList底层就是使用它实现的。
2023-05-05 19:43:39
757
2
原创 java并发编程之美第四章读书笔记
前面提到过了AtomicLong是通过CAS提供的非阻塞的原子性操作,相比阻塞算法的同步器来说性能已经很好了,但是在高并发下大量线程同时去竞争同一个原子变量,由于同时只有一个线程凯跃操作成功,这样就造成了大量线程竞争失败后,会通过无限循环不断进行自选操作尝试CAS,白白浪费了CPU资源使用LongAddr时候会在内部维护多个Cell变量,每个Cell里面有一个初始为零的long变量,在同等的并发量下,争夺单个变量更新操作的线程会减小,变相的减少了争夺共享资源的并发量。
2023-05-05 19:42:03
373
原创 java并发编程之美第三章读书笔记
首先讲解了Randon实现原理以及Random在多线程下需要竞争种子原子变量更新操作的缺点,从而引进ThreadLocalRandom类,该类使用ThreadLocal的原理,让每一个线程都持有一个本地的种子变量,该种子变量只有在使用随机数时候才会被初始化,在多线程下计算新种子是根据自己线程内维护的种子变量来进行更新,从而避免了竞争。
2023-05-05 19:39:13
401
6
原创 java并发编程之美第二章读书笔记
并发:同一时间段内多个任务同时都在执行,且执行都没有执行结束,强调的是在一个时间段内同时执行,而一个时间段由多个时间积累而成的,所以并发的多个任务在单位时间内并不一定同时执行并行:单位时间内多个任务同时在执行多核CPU时代打破了单核CPU对多线程的性能限制,多个CPU"意味着每个线程可以使用自己的CPU运行,这减少了线程上下文切换的开销,但是随着对应用系统性能和吞吐量要求的提高,出现了海量数据和请求的要求,迫切需要高并发编程共享资源:该资源被多个线程所持有或者说多个线程都可以访问该资源线程安全问题:当多个线
2023-04-16 13:30:20
159
7
原创 java并发编程之美第一章并发编程基础(读书笔记)
是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位是进程的一次执行路径,一个进程至少有一个线程,进程中的多个线程共享进程的资源.线程是CPU分配的基本单位每个线程都有自己的栈资源,用于存储该线程的局部变量,这些局部变量是该线程私有的,其他线程无法访问,除此之外栈还可以用来存放线程的调用栈帧.堆是一个进程中最大的一个内存,堆是被进程中的所有线程共享的,是进程创建时分配的,堆里面主要存放使用new操作创建的对象实例.存放JVM加载的类,常量及静态变量等信息,也是线程共享的.
2023-04-13 23:09:37
299
6
原创 【十二天学java】day09常用api介绍
什么是APIAPI (Application Programming Interface) :应用程序编程接口java中的API指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。
2023-03-27 10:24:26
356
6
原创 十二天学java】day08面向对象
类的组成是由属性和行为两部分组成属性:在类中通过成员变量来体现(类中方法外的变量)行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)类的定义步骤:①定义类②编写类的成员变量③编写类的成员方法public class 类名 {// 成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;// 成员方法方法1;方法2;/*手机类:类名:手机(Phone)成员变量:品牌(brand)价格(price)成员方法:打电话(call)
2023-03-26 15:14:32
211
1
原创 【十二天学java】day07综合练习
需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
2023-03-25 15:34:29
37
原创 【十二天学java】day06之方法详解
方法(method)是程序中最小的执行单元注意:方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用定义格式:public static void 方法名 ( ) {// 方法体;范例:// 方法体;调用格式:方法名();范例:method();注意:方法必须先定义,后调用,否则程序将报错定义格式:参数:由数据类型和变量名组成 - 数据类型 变量名参数范例:int a。
2023-03-23 18:12:39
169
原创 【十二天学java】day05--数组和循环高级
概念: 指的是一种容器,可以同来存储同种数据类型的多个值。 但是数组容器在存储数据的时候,需要结合隐式转换考虑。比如: 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的, 但是byte类型,short类型,int类型的数据是可以存到这个数组里面的。建议:
2023-03-22 13:59:55
473
6
原创 【十二天学java】day04-流程控制语句
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形 成死循环。顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。小明的考试成绩,如果用switch,那么需要写100个case,太麻烦了,所以用if简单。小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,
2023-03-21 18:10:25
432
6
原创 【十二天学java】day03java基础语法
- * / % 这些操作跟小学数学几乎是一模一样的。/ 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。算术运算符的高级用法:是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。特例:字符串只有+操作,没有其他操作。&& 和 & 、||和|的运行结果都是一模一样的。但是短路逻辑运算符可以提高程序的运行效率。
2023-03-20 13:10:29
417
5
原创 【十二天学java】day02-Java基础语法保姆级使用idea
变量就在程序中临时存储数据的容器。但是这个容器中只能存一个值。数据类型 变量名 = 数据值;//1.定义byte类型的变量//数据类型 变量名 = 数据值;//2.定义short类型的变量//3.定义int类型的变量int c = 30;//4.定义long类型的变量//5.定义float类型的变量//6.定义double类型的变量//7.定义char类型的变量//8.定义boolean类型的变量注意点。
2023-03-19 16:19:45
302
2
原创 【十二天学java】day01-Java基础语法
语言:人与人交流沟通的表达方式计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言Java是一门非常火的计算机语言。(也叫做编程语言)我们想要让计算机做一些事情,那么就可以通过Java语言告诉计算机就可以了目录名称说明bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。conf该路径下存放了JDK的相关配置文件。include该路径下存放了一些平台特定的头文件。jmods该路径下存放了JDK的各种模块。legal该路径下存放了JDK各模块的授权文档。
2023-03-18 16:17:28
559
2
原创 详解Condition的await和signal等待通知机制
任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上来看。两者除了在使用方式上不同外,在。
2023-03-16 13:23:13
344
原创 【网络编程】零基础到精通--NIO基础
1. java 调用 transferTo 方法后,要从 java 程序的用户态切换至内核态,使用 DMA将数据读入内核缓冲区,不会使用 cpu2. 只会将一些 offset 和 length 信息拷入 socket 缓冲区,几乎无消耗3. 使用 DMA 将 内核缓冲区的数据写入网卡,不会使用 cpu整个过程仅只发生了一次用户态与内核态的切换,数据拷贝了 2 次。所谓的【零拷贝】,并不是真正无拷贝,而是在不会拷贝重复数据到 jvm 内存中,零拷贝的优点有● 更少的用户态与内核态的切换● 不利用
2023-03-13 17:41:55
339
6
原创 高并发编程JUC之进程与线程高并发编程JUC之进程与线程
1.准备pom.xml 依赖如下:<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target&g
2023-03-06 20:28:23
270
原创 java并发编程JUC之进程和线程
IO 操作不占用 cpu,只是我们一般拷贝文件使用的是【阻塞 IO】,这时相当于线程虽然不用 cpu,但需要一 直等待 IO 结束,没能充分利用线程。所以才有后面的【非阻塞 IO】和【异步 IO】优化。
2023-03-05 22:20:28
145
原创 java高级篇之三大性质总结:原子性、可见性以及有序性
synchronized: 具有原子性,有序性和可见性;volatile:具有有序性和可见性参考文献《java并发编程的艺术》《深入理解java虚拟机》
2023-03-03 08:16:25
913
2
原创 docker基础用法及镜像和容器的常用命令大全
Docker 采用了 C / S 架构,包括客户端和服务端。Docker 守护进程作为服务端接受来自客户端的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过 socket 或者 RESTfulAPI 来进行通信。Docker overviewDocker Daemon:守护进程Docker 主机(Host):一个物理机或虚拟机,用于运行 Docker 服务进程和容器。Docker 服务端(Server):Docker 守护进程,运行 docker 容器。Doc
2023-02-25 22:26:59
364
原创 软考中级之数据库系统(重点)
数据库是根据业务的需求,看哪项数据需要记录的一个存储系统,但是当数据存储到一定容量的时候,那数据库的效率就会下降,而这时候需要如何解决呢,最简单的办法就是删掉一部分没有用的历史数据,但是这是在某种层面上是浪费数据的,所以我们需要找个地方把他存起来
2023-02-23 21:03:02
1712
9
原创 JAVA虚拟机JVM之内存模型
很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障。
2023-02-23 08:45:21
863
4
原创 RPC框架dubbo的学习
Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
2023-02-21 19:12:28
446
12
原创 字节码指令
ldc2_w 将一个 long 压入操作数栈(分两次压入,因为 long 是 8 个字节)这里小的数字都是和字节码指令存在一起,超过 short 范围的数字存入了常量池。将一个 byte 压入操作数栈(其长度会补齐 4 个字节),类似的指令还有。sipush 将一个 short 压入操作数栈(其长度会补齐 4 个字节)* 演示 字节码指令 和 操作数栈、常量池的关系。完成 main 方法调用,弹出 main 栈帧。接着上一节,研究一下两组字节码指令,一个是。传递参数,执行新栈帧中的字节码。
2023-02-17 22:34:43
800
3
原创 媒资管理模块之视频断点续传需求分析
通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上传完成,需要客户重新上传,用户体验非常差,所以对于大文件上传的要求最基本的是断点续传。什么是断点续传:
2023-02-16 21:58:46
375
原创 Maven的安装步骤(保姆级安装教程)
(一般会用阿里云的镜像库,但不知道是我电脑还是网络的原因,下载jar包总会出错,换了很多阿里云镜像都不管用,最后换了腾讯云的就好了,所有这里给出了三个镜像)3.配置私服,因为中央仓库在国外导致下载jar包很慢或者失败,所以我们改为国内的服务器,下面三个选择一个就可以了。4.验证安装是否成功,win+R运行cmd,输入mvn -v,如图所示则配置成功。(1)在maven安装目录下新建本地仓库文件夹maven_repository。3.编辑系统变量Path,添加变量值%MAVEN_HOME%\bin。
2023-02-16 19:04:48
534
原创 面试题(二十六)场景应用
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。-- 百度百科在商品上,一般都会有条形码,条形码也称为一维码,条形码只能表示一串数字。二维码要比条形码丰富很多,可以存储数字、字符串、图片、文件等,比如我们可以把存储在二维码中,扫码二维码我们就可以获取到牛客网的地址。
2023-02-15 13:39:18
548
2
原创 面试题(二十五)设计模式
单一职责原则一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责。就一个类而言,应该只专注于做一件事和仅有一个引起变化的原因,这就是所谓的单一职责原则。该原则提出了对对象职责的一种理想期望,对象不应该承担太多职责,正如人不应该一心分为二用。唯有专注,才能保证对象的高内聚;唯有单一,才能保证对象的细粒度。对象的高内聚与细粒度有利于对象的重用。一个庞大的对象承担了太多的职责,当客户端需要该对象的某一个职责时,就不得不将所有的职责都包含进来,从而造成冗余代码。里氏替换原则。
2023-02-14 09:28:31
1000
8
原创 算法设计与分析(屈婉玲)视频笔记day2
• 序列求和基本公式: 等差数列 等比数列 调和级数• 估计序列和: 放大法求上界 用积分做和式的渐近的界• 应用:计数循环过程的基本运算次数
2023-02-13 23:40:07
1073
8
原创 面试题(二十四)数据结构与算法
Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个不同的键可能会有相同的hash值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。
2023-02-13 13:10:32
672
12
原创 算法设计与分析
有 n 项任务,每项任务加工时间已知.从 0时刻开始陆续安排到一台机器上加工. 每个任务的完成时间是从 0 时刻到任务加工截止的时间. 求: 总完成时间(所有任务完成时间之和)最短的安排方案.
2023-02-12 22:30:09
1041
4
原创 面试题(二十二)消息队列与搜索引擎
参考答案推模式:推模式是服务器端根据用户需要,由目的、按时将用户感兴趣的信息主动发送到用户的客户端。对用户要求低,方便用户获取需要的信息;及时性好,服务器端及时地向客户端推送更新动态信息,吞吐量大。不能确保发送成功,推模式采用广播方式,只有服务器端和客户端在同一个频道上,推模式才有效,用户才能接收到信息;没有信息状态跟踪,推模式采用开环控制技术,一个信息推送后的状态,比如客户端是否接收等,无从得知;针对性较差。推送的信息可能并不能满足客户端的个性化需求。
2023-02-12 16:58:19
383
1
原创 java面试题(二十)中间件redis
参考答案Redis支持如下两种过期策略:惰性删除:客户端访问一个key的时候,Redis会先检查它的过期时间,如果发现过期就立刻删除这个key。定期删除:Redis会将设置了过期时间的key放到一个独立的字典中,并对该字典进行每秒10次的过期扫描,过期扫描不会遍历字典中所有的key,而是采用了一种简单的贪心策略。从过期字典中随机选择20个key;删除这20个key中已过期的key;如果已过期key的比例超过25%,则重复步骤1。
2023-02-11 13:51:23
2411
5
空空如也
不知道怎么打出来 大家看看
2021-10-18
vs2019为什么出现这种情况 好多朋友都遇到了
2021-09-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人