自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode-设计模式-行为型模式

行为型模式一、责任链模式(责任链主要用于处理 职责相同,程度不同的类)责任链模式的优点:降低对象之间的耦合扩展性强,符合开闭原则灵活性强简化对象之间的连接。每个对象只需保持一个指向其后继者的引用,不需保持其他所有处理者的引用缺点:如果责任链过长,请求的处理可能涉及多个处理对象,系统性能将受到一定影响。不能保证每个请求一定被处理,该请求可能一直传到链的末端都得不到处理。例子新建一个程序员抽象类:public abstract class Programmer { pro

2022-01-27 21:06:52 921

原创 Leetcode-设计模式-结构型模式

Leetcode-设计模式-结构型模式一、适配器模式适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。何时使用:1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。3、通过接口转换

2022-01-27 11:14:10 1067

原创 Leetcode-设计模式-构建型模式

设计模式工厂模式1、简单工厂模式(让一个工厂创建所有对象)工厂模式缺点:让一个工厂类承担构建所有对象的职责,一是如果需要生产的产品过多,此模式会导致工厂类过于庞大,承担过多的职责,变成超级类。违背了单一职责原则。二是当要生产新的产品时,必须在工厂类中添加新的分支。而开闭原则告诉我们:类应该对修改封闭。我们希望在添加新功能时,只需增加新的类,而不是修改既有的类,所以这就违背了开闭原则。public class FruitFactory { public Fruit create(Str

2022-01-25 21:19:40 6065

原创 RUOYI-教程

微服务一、微服务架构服务注册与发现1、Zookeeper2、Eureka3、Consul4、Apollo5、Nacos配置中心SpringCloud ConfigNacosAPI网关ZuulSpringCloud Gateway熔断限流SentinelHystrixresilience4j链路追踪1、Zipkin(Sleuth)2、SkyWalking管理与监控SpringBoot Admin服务调用FeignOpenFeign

2021-12-21 08:49:07 1276

原创 Android第一行代码--Service(四大组件之一)

文章目录Android第一行代码-Service服务是什么Android多线程编程线程的基本用法在子线程中更新UI通过异步消息处理机制解决在子线程中更新UI导致的报错问题解析异步消息处理机制1、Message(传递消息)2、Handler(处理者,用于发送和处理消息,发出的消息最终会传递到Handler的handleMessage方法中)3、MessageQueue(消息队列)4、Looper(MessageQueue的管家,MessageQueue中的消息取出传递给handleMessage方法中)消息处

2021-06-25 00:23:38 831 1

原创 Android第一行代码-内容提供器(ContextProvider、ContextResolver)

跨程序共享数据–探究内容提供器内容提供器简介(Android实现跨程序共享数据的标准方式)内容提供器主要用于在不同的应用程序之间实现数据共享的功能,允许一个程序访问另一个程序的数据,同时可保证被访数据的安全性。运行时权限Android6.0系统中引用了运行时权限这个功能,从而更好的保护了用户的安全和隐私。Android权限机制详解用户设备的安全性主要在以下两个方面得到了保护:如果用户在低于6.0系统的设备上安装该程序,会在安装界面给出提醒,这样用户就可以清楚地知晓该程序一共申请了哪些权限。

2021-06-21 20:43:38 620

原创 Android第一行代码--详解持久化技术

Android第一行代码–详解持久化技术1、持久化技术简介Android系统中主要提供了三种方式用于简单的实现数据持久化功能,即文件存储、SharePrefrence存储以及数据库存储。除了这三种方式,你还可以将数据保存在自己的SD卡中。2、文件存储文件存储不对存储的内容进行任何格式化处理,所有数据都是原封不动的保存在文件当中的。将数据存储到文件中...

2021-06-18 15:57:10 299

原创 Android第一行代码-广播机制

Android第一行代码-广播机制类似的工作机制:最大的IP地址被保留作为广播地址使用,比如某个网络的IP范围为192.168.0.XXX,子网掩码是255.255.255.0,那么这个网络的广播地址为192.168.0.255。为了方便进行系统级别的消息通知,Android也引入了一套类似的广播消息机制,相比于我前面举出的例子,Android中的广播机制会显得更加灵活。广播机制简介Android的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容。这些广播可能

2021-06-17 20:48:46 955 3

原创 Android第一行代码-Fragment

Fragement(碎片)Fragment是一种可以嵌入在活动当中的UI片段。可以让程序更加合理和充分的利用大屏幕的空间。和活动相似,同样可以包含布局,同样有自己的生命周期。Fragment的引出上面展示了同样的代码,可能放在平板上会造成视觉效果上的不足。所以更好的方案是将新闻标题列表界面和新闻详细内容界面分别放在两个碎片中,然后在同一个活动中引入这两个碎片。碎片的使用方式(通过fragment标签在布局中引入)在活动中添加两个碎片left_fragment.xml代码如下:<?x

2021-06-16 20:51:17 640 9

原创 Android第一行代码-UI

文章目录UI开发的点点滴滴一、常用控件的使用方法1、TextViewButtonEditTextUI开发的点点滴滴一、常用控件的使用方法1、TextView如:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_h

2021-06-13 17:17:27 1388 3

原创 Android第一行代码-Activity

文章目录Android第一行代码Activity1、Activity基本用法2、创建和加载布局加载布局(在Activity中加载布局)在AndroidManifest文件中注册(所有的activity都要在AndroidManifest.xml中进行注册)配置主Activity(activity标签内部添加标签)在Activity中使用Toast在活动中使用Menu()三、使用Intent在活动之间穿梭1、使用显示Intent显示Intent隐式Intent(不指明具体想要启动哪个活动)更多隐式Intent

2021-06-11 13:31:45 964 1

原创 SpringBoot入门-2

SpringBoot入门-2一、SpringBoot Web开发SpringBoot到底帮我们配置了什么?我们能不能进行修改?能修改那些东西?能不能扩展?xxxAutoConfiguration:向容器中自动配置组件xxxProperties:自动配置类,装配配置文件中自定义的一些内容需要解决的问题:导入静态资源首页(http://localhost:端口号/)jsp,模版引擎Thymeleaf装配扩展SpringMVC增删改查拦截器国际化1、静态资源打开WebMvcAu

2021-05-28 23:11:20 130

原创 Java8新特性二

Java8新特性二了解Fork/Join框架Fork/Join框架:就是在必要的情况下,将一个大任务进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个小任务的结果进行join汇总。Fork/Join框架与线程池的区别采用“工作窃取”模式当执行新的任务时,它可以将其拆分成更小的任务执行,并将小任务添加到线程队列中,当一个线程在执行任务时获取不到时,从一个随机的线程队列末尾偷一个并把它放在自己的队列中。import java.util.concurrent.RecursiveTask

2021-05-20 17:00:17 246 4

原创 Java8-新特性

Java8新特性1、Lambda表达式2、函数式接口3、方法引用与构造器引用4、Stream API5、接口中的默认方法与静态方法6、新时间日期API7、其它新特性一、Lambda表达式Lambda表达式是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样进行传递),可以写出更加简洁、更加灵活的代码。作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。匿名内部类abstract class Person { public abstr

2021-05-02 10:31:10 187

转载 Spring生命周期总结(面试)

Spring生命周期本文全部总结于此链接四个生命周期过程四个:1、实例化(createBeanInstance())2、属性赋值(populateBean())3、初始化(initializeBean())4、销毁// 忽略了无关代码protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args) throws B

2020-08-23 11:43:36 1219

原创 AQS(面试)

AQS(面试)AQS的全称是AbstractQueuedSynchronizerAQS内部维护一个状态state,通过原子更新(CAS)这个状态变量可实现加锁解锁操作。如果要实现自己的锁,可以基于AQS,重写tryAcquire,tryRelease,lock(会调用tryAcquire),unlock(tryRelease)方法。...

2020-08-21 15:47:54 890

原创 LongAdder详解

文章目录LongAdderadd方法casBaselongAccumulate方法longAccumulate方法详解后面补充LongAdderadd方法public void add(long x) { Cell[] as; long b, v; int m; Cell a; if ((as = cells) != null || !casBase(b = base, b + x)) { boolean uncontended = true;

2020-08-08 11:16:02 578

原创 leetcode-525、连续数组

题目给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contiguous-array著作权归领扣网络所有。商业转载请联系官方授权

2020-08-04 22:23:06 196

原创 leetcode-16、最接近的三数只之和

最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。题目示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest著作

2020-08-03 09:03:09 134

原创 Java集合(总结,面试使用)

文章目录Java容器List一、ArrayListfail-fast(快速失败)序列化和反序列化Vector和ArrayList的相同和不同二、LinkedListLinkedList对于查找的优化三、CopyOnWriteArrayList(有一个属性是ReentrantLock对象)add方法(会加锁)get方法(未加锁)总结Map1.8HashMapLinkedHashMap重要的三个函数总结使用LinkedHashMap实现LRUJava容器List一、ArrayList1、初始大小为10

2020-08-01 20:50:39 155

原创 HashMap与ConcurrentHashMap

文章目录JDK1.7 HashMapHashMap的初始化(构造函数)1、不指定大小2、指定大小putgetsizeHashMap get死循环问题1.8 HashMap构造函数put函数ConcurrentHashMapJDK1.7 HashMapHashMap的初始化(构造函数)1、不指定大小如果不指定大小,那么HashMap默认大小为16,加载因子是0.75public HashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_

2020-08-01 14:19:40 400

原创 图解HTTP-HTTPS

文章目录HTTPSHTTP的缺点(明文传输、不验证身份、无法证明明文完整)1、使用明文可能会被窃听2、加密处理防止被窃听通信的加密SSL建立安全通信过程内容的加密不验证通信方身份就可能遭遇伪装查明对手的证书(通过SSL可确认通信方身份)无法证明报文完整性,可能已经遭到篡改如何防止篡改HTTP+加密+认证+完整性保护=HTTPSHTTPS是身披SSL外壳的HTTP相互交换密钥的刚开密钥加密技术共享密钥加密的困境(对称加密技术)非对称加密HTTPS使用混合加密机制证明公开密钥正确性的证书确定访问用户身份BASI

2020-07-25 20:19:02 131

原创 图解HTTP-HTTP

文章目录HTTPHTTP是不保存状态的协议(对请求和响应不做持久化处理)请求URI定位资源HTTP中的方法1、GET(获取资源)2、POST( 传输实体主体)3、PUT(传输文件)4、HEAD(获取报文首部)5、DELETE:删除文件6、OPTIONS7、TRACE(追踪路径)例子8、CONNECT(要求用隧道协议连接代理,使用SSL或者TLS协议将通信内容加密后经网络隧道传输)例子总结持久连接节省通信量建立连接断开TCP连接持久连接(HTTP1.1所有的连接都是持久连接)管线化(不需要等待响应即可直接发送

2020-07-25 18:45:55 1776 1

转载 注解详解

来源:秒懂,Java 注解 (Annotation)你可以这样学Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如: Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。这是大多数网站上对于 Java...

2020-07-21 00:22:07 177 3

转载 死磕 java集合之ConcurrentHashMap源码分析(二)

文章目录初始化桶数组判断是否需要扩容协助扩容(迁移元素)迁移元素初始化桶数组第一次放元素时,初始化桶数组。private final Node<K,V>[] initTable() { Node<K,V>[] tab; int sc; while ((tab = table) == null || tab.length == 0) { if ((sc = sizeCtl) < 0) // 如果sizeCt

2020-07-16 16:01:50 125

转载 死磕 java集合之ConcurrentHashMap源码分析(一)

ConcurrentHashMap1.8开篇问题1、ConcurrentHashMap与HashMap的数据结构是否一样?2、HashMap在多线程环境下何时会出现并发安全问题?3、ConcurrentHashMap是怎么解决并发安全问题的?4、ConcurrentHashMap使用了哪些锁?5、ConcurrentHashMap的扩容是怎么进行的?6、ConcurrentHashMap是否是强一致性的?7、ConcurrentHashMap不能解决哪些问题?8、ConcurrentHa

2020-07-16 10:29:42 192

转载 死磕 java同步系列之AQS起篇

本文转于公众号“彤哥读源码”????欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。(手机横屏看源码更方便)问题(1)AQS是什么?(2)AQS的定位?(3)AQS的实现原理?(4)基于AQS实现自己的锁?简介AQS的全称是AbstractQueuedSynchronizer,它的定位是为Java中几乎所有的锁和同步器提供一个基础框架。AQS是基于FIFO的队列实现的,并且内部维护了一个状态变量state,通过原子更新这个状态变量state即可以实现加锁解锁操作。本章及

2020-07-15 21:56:56 117

转载 死磕 java同步系列之ReentrantLock源码解析(二)——条件锁

文章目录条件锁一、问题二、简介三、使用示例源码分析ConditionObject的主要属性lock.newCondition()方法condition.await()方法condition.signal()方法总结彩蛋条件锁一、问题1、条件锁是什么?2、条件锁适用于什么场景?3、条件锁的await()是在其它线程signal()的时候唤醒的吗?二、简介条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等待某个条件的出现才可以继续处理时使用的一种锁。比如,在阻塞队列中,当队列中没

2020-07-15 21:32:23 227

转载 死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁

文章目录公平锁、非公平锁一、问题二、简介三、继承体系四、源码分析主要内部类主要属性主要构造方法Lock方法公平锁非公平锁lockInterruptibly()方法tryLock()方法tryLock(long time, TimeUnit unit)方法unlock()方法公平锁、非公平锁一、问题1、重入锁是什么?2、ReentrantLock如何实现重入锁?3、ReentrantLock为什么默认是非公平模式?4、ReentrantLock除了可重入还有哪些特性?二、简介Reentra

2020-07-15 20:54:10 161

转载 死磕 java同步系列之自己动手写一个锁Lock

本文转载于公众号彤哥读源码 ????欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。(手机横屏看源码更方便)问题(1)自己动手写一个锁需要哪些知识?(2)自己动手写一个锁到底有多简单?(3)自己能不能写出来一个完美的锁?简介本篇文章的目标一是自己动手写一个锁,这个锁的功能很简单,能进行正常的加锁、解锁操作。本篇文章的目标二是通过自己动手写一个锁,能更好地理解后面章节将要学习的AQS及各种同步器实现的原理。分析自己动手写一个锁需要准备些什么呢?首先,在上一章学习synch

2020-07-15 15:45:38 155

转载 为什么StringBuilder的效率要比String高?

 先看一个例子:标题从上面的例子可以看到,StringBuilder的运行时间只有简单字符串拼接的千分之一 ,那是什么原因造成的呢?String在java中是不可变长的,一旦初始化就不能修改长度,简单的字符串拼接其实是创建新的String对象,再把拼接后的内容赋值给新的对象,在频繁修改的情况下会频繁创建对象,而...

2020-07-09 08:59:37 436

原创 mac mysql中文乱码问题(亲测有效)

MAC上MySQL中文版乱码问题我的问题在于一开始使用show variables like ‘%char%’;查看的时候character_set_server的编码方式是latin1,不支持中文。如下图:解决方法对于之前的版本的MySQL,到/usr/local/mysql/support-files目录下将mac上的mysql配置文件模板my-default.cnf拷贝到/etc下,并将文件名改成my.cnf,修改编码方式。对于比较新的mysql版本,support-files找不到my-

2020-07-03 15:43:22 678

原创 踩坑-项目中的html找不到js文件错误-net::ERR_ABORTED 404

在html中引入外部js的时候,即使在html中看路径是正确(绿色),但是启动web之后出现还是找不到对应的js,路径错误的问题。从下面可以看到,启动项目之后,可以通过http://localhost:8080/o2o/resources/js/shop/shopoperation.js,可以访问到项目中的.js文件,但是从Chrome的Source中可以并没有看到项目中的这个js文件,而且可以看到它找js的路径也是错的,所以说明在html中找js文件的路径就是错的。需要修改路径(即使在html中看到的路

2020-07-01 18:57:15 5943

转载 MyBatis中自动生成主键

MyBatis中自动生成主键详细Mybatis 配置文件配置useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。在INSERT语句中,我们为可以自动生成(auto-generated)主键的列 STUD_ID 插入值。我们可以使用useGeneratedKeys和keyProperty属性让数据库生成auto_increment列的值,并将生成的值设置到其中一个输入对象属性内,如下所示:<insert id="insertStudent" parameter

2020-06-28 11:02:33 3210

原创 操作系统8-磁盘

文章目录磁盘一、磁盘的结构1、如何在磁盘中读/写数据2、磁盘的分类总结二、磁盘调度算法1、一次磁盘读/写需要的时间2、先来先服务算法3、最短寻找时间优先(SSTF)4、扫描算法5、LOOK调度算法6、循环扫描算法(c-scan)7、C-Look调度算法总结三、减少磁盘延迟时间的方法磁盘一、磁盘的结构磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录一些二进制数据。磁盘的表面被划分为了一个个磁道,一个小圈就是一个磁道。一个磁道又被划分成了一个个扇区,每个扇区就是一个个磁盘块,各个扇区存放的数据量

2020-06-25 22:49:42 780

原创 操作系统-7-文件系统

文章目录文件系统文件的逻辑结构1、顺序文件文件系统文件数据怎么存在外存上?文件的逻辑结构txt就是无结构文件,数据库表就是有结构文件1、顺序文件

2020-06-20 22:49:02 131

原创 操作系统-6-内存管理

文章目录内存一、内存的基础知识1、进程的知识原理--指令装入的三种方式(逻辑地址到物理地址的转换)1、绝对装入(编译时候就知道放到内存的哪个绝对地址)2、静态重定位(根据起始位置计算,装入内存时,必须分配其要求的全部内存空间)3、动态重定位(地址转换推迟到指令真正要执行时才进行)二、内存管理总结三、覆盖技术(解决程序大小超过物理内存总和的问题)四、交换技术(把暂时不运行进程对应内存中的一些数据换出到外存)总结五、内存一、内存的基础知识内存是用于存放数据的硬件,程序执行前需要先放入内存中才能被CPU处

2020-06-19 22:43:26 364

原创 操作系统-5-死锁

文章目录死锁一、死锁的概念1、死锁的必要条件(互斥、不剥夺、请求、循环)2、死锁的处理策略(预防、避免、检测和解除)3、总结二、死锁的处理1、预防死锁1、破坏互斥条件2、破坏不剥夺条件3、破坏请求和保持条件4、破坏循环等待条件2、避免死锁3、检测和解除死锁的解除死锁在并发的环境下,各个进程因为竞争资源而造成的一种互相等待对方手中的资源,导致各个进程都阻塞,都无法向前推进的现象,就是死锁/死锁、饥饿、死循环的区别:死锁:各个进程因为竞争资源而造成的一种互相等待对方手中的资源,导致各个进程都阻塞,都无

2020-06-19 09:30:52 513

原创 操作系统-4-进程同步、互斥

文章目录进程的同步与互斥一、进程互斥和同步的相关概念总结二、进程互斥的软件实现方法1、单标志法2、双标志先检查法3、双标志后检查法(先上锁,后检查)4、Peterson算法总结三、进程互斥的硬件实现方法1、中断屏蔽方法2、TestAndSet指令3、Swap指令总结四、信号量机制(整型信号量、记录型信号量)1、信号量机制整型信号量记录型信号量总结2、信号量机制实现进程互斥和同步信号量机制实现进程互斥信号量机制实现进程同步(前操作之后执行V,后操作之前执行P)总结五、生产者-消费者问题(包含两个同步和一个互斥

2020-06-18 14:09:35 1439

转载 Spring源码剖析——依赖注入实现原理

文章目录引言依赖注入介绍源码剖析getBean触发的依赖注入getBean方法doGetBean方法创建完整Bean的流程creaBean方法doCreateBean方法createBeanInstance方法instantiateBean依赖关系的处理populateBean方法applyPropertyValues方法resolveValueIfNecessary方法setPropertyValue方法引言在之前的 Spring源码剖析——核心IOC容器原理这篇文章中,已经详细介绍了在Spring当

2020-06-16 20:05:27 1097

空空如也

空空如也

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

TA关注的人

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