自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【wails】需要在shutdown时,发送关闭请求给服务器

最近在公司用wails开发客户端,用golang碰到很多问题,context和goroutine还没搞明白。现在多了个需求,要在wails shutdown前给服务器发送一个”我要离线啦”的通知,这个请求需要服务器地址吧?但是服务器地址在哪儿?...

2022-08-30 11:15:39 372 1

原创 尚医通项目记录

后台管理系统上传医院信息接口首先实现的是医院基本信息,在后台管理网站上,可以由管理员管理和操作医院的一些信息,如医院名称、联系人、医院编号等具体技术:整合了swagger作为接口测试封装结果集,使的返回的结果都遵循统一格式。(状态码+信息+数据)@RequestBody注解,前端可以用Json格式传数据给后端@RestController,采用Restfu风格传递路径和参数@PostMapping("findPageHospSet/{current}/{limit}") p.

2021-08-01 14:14:12 2727 1

原创 Spring框架

部分内容来自网络,部分为我个人整理感想SpringSpring 框架?@RestController vs @ControllerSpring IOC & AOPIoCAOPSpring beanbean 的作用域单例 bean 的线程安全问题@Component 和 @Bean将一个类声明为Spring的 bean 的注解bean的生命周期Spring MVC工作原理事务事务的特性(ACID)Spring 对事务的支持事务管理Spring 事务管理接口介绍PlatformTransactionM

2021-07-28 12:35:12 279

原创 Redis面试看这篇就够啦

部分内容来自网络RedisRedis 和 Memcached缓存数据的处理流程为什么要用缓存?常用数据结构stringlisthashsetsorted setbitmap过期时间是否过期过期数据的删除策略Redis 内存淘汰机制Redis 持久化机制主从复制Redis 事务锁乐观锁分布式锁缓存穿透缓存击穿缓存雪崩缓存一致性?简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis

2021-07-27 22:56:28 177

原创 MySQL之日志

部分内容来自网络,本文章属于汇总和学习笔记,如有版权问题立即删除MySQL日志日志类型错误日志查询日志慢查询日志开启相关参数事务日志Redo日志undo日志MVCC原理**隐式字段****undo日志**Read View(读视图)整体流程**二进制日志**中继日志(relay log)日志类型MySQL日志分类:错误日志查询日志慢查询日志事务日志(Redo log)二进制日志中继日志错误日志默认情况下,错误日志是开启的,且无法被禁止。默认情况下,错误日志是存储在数据库的数据文件目

2021-07-24 13:13:50 117

原创 MySQL之锁

部分内容来自网络MySQL锁锁的分类表锁表锁(偏读)表锁(read)案例表锁(write)案例表锁定分析总结行锁行锁定基本演示索引失效导致行锁升级为表锁间隙锁的危害锁定某一行行锁分析优化建议页锁总结锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源(如CPU、RAM、I/O等)的争用外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重

2021-07-23 13:46:40 42

原创 MySQL之Explain

Explain简介idselect_typetypepossible_keyskeykey_lenrefrowsfilterrdExtra简介参数详解idColumnsJSON NameMeaning1idselect_id每个select子句的标识id2select_typeNoneselect语句的类型3tabletable_name当前表名4partitionspartitions匹配的分区5typeaccess_typ

2021-07-23 11:10:43 86

原创 MySQL之索引

部分内容来自网络索引索引的优缺点索引的底层数据结构Hash表**B 树& B+树**最左匹配原则索引类型聚集索引与非聚集索引覆盖索引创建索引的注意事项使用索引的一些建议**索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树, B+树和 Hash。**索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。索引的优缺点优点

2021-07-22 21:17:31 284

原创 MySQL之JOIN查询

JOINinner joinleft joinright joinA独有B独有AB全有(并集)AB独有并集join主要根据两表或多表之间列的关系,从这些表中进行数据的查询。首先创建两张表:tb_emp(员工表)和tb_dept(部门表),并插入相关测试数据。1.tb_emp表。DROP TABLE IF EXISTS `tb_emp`;CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(2

2021-07-22 19:37:37 140

原创 MySQL之基础

部分内容来自网络,javaguide原文基础关系型数据库顾名思义,关系型数据库就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一列就存放着一条数据(比如一个用户的信息)。SQL和NoSQL的区别,可以参考:sql和nosql的区别存储引擎MySQL 5.5 之前,MyISAM 引擎是 MySQL 的默认存储引擎,可谓是风光一时。虽然,MyISAM 的性能还行

2021-07-22 18:53:50 46

原创 JVM之垃圾回收

参考博客:javaguide垃圾回收垃圾回收JVM 内存分配与回收对象已经死亡?引用计数法可达性分析算法引用不可达的对象并非“非死不可”如何判断一个常量是废弃常量?如何判断一个类是无用的类垃圾收集标记-清除算法标记-复制算法标记-整理算法分代收集算法垃圾回收器Serial收集器ParNew 收集器Parallel Scavenge 收集器Serial Old 收集器Parallel Old 收集器CMS 收集器G1 收集器Young CollectionYoung Collection + Current

2021-07-22 15:32:04 130

原创 JVM之运行时数据区域

部分内容来自javaguide和黑马程序员JVM之运行时数据区域简介程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存简介JDK1.8之前JDK1.8之后线程私有的:程序计数器、虚拟机栈、本地方法栈线程共享的:堆、方法区、直接内存 (非运行时数据区的一部分)程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖

2021-07-22 14:24:38 149

原创 java并发之并发容器

并发容器ConcurrentHashMapCopyOnWriteArrayListConcurrentLinkedQueueBlockingQueueConcurrentHashMap这个之前的博客讲过了,可以去看之前的博客CopyOnWriteArrayList简介public class CopyOnWriteArrayList<E>extends Objectimplements List<E>, RandomAccess, Cloneable, Serializ

2021-07-22 12:44:08 54

原创 java并发之一些AQS锁

关于AQS和ReentrantLock可以看我的前几篇文章AQS锁的一些实现StampedLock**Semaphore**CountDownLatchCyclicBarrier**CyclicBarrier 和 CountDownLatch 的区别**StampedLock为了进一步优化读写锁,也就是在ReentrantReadWriteLock上有更好的读的性能,StampedLock加入了【戳】这种东东,类似于CAS乐观锁的操作。StampedLock支持乐观读方法,读取完毕后需要做一次戳检验

2021-07-22 12:40:26 91

原创 java并发之ReentrantReadWriteLock

部分资料来自网络,有版权问题联系我删除ReentrantReadWriteLockJAVA的并发包提供了读写锁ReentrantReadWriteLock,它表示两个锁,一个是读操作相关的锁,称为共享锁;一个是写相关的锁,称为排他锁,描述如下:线程进入读锁的前提条件:没有其他线程的写锁,没有写请求或者有写请求,但调用线程和持有锁的线程是同一个。线程进入写锁的前提条件:没有其他线程的读锁没有其他线程的写锁而读写锁有以下三个重要的特性:(1)公平选择性:支持非公平(

2021-07-22 12:36:03 53

原创 java并发之ReentrantLock

部分资料来自网络,如有版权问题请联系我删除关于AQS的源码解读,可以看我的另一篇博客ReentrantLock可重入公平锁和非公平锁Condition可重入对公平锁和非公平锁都是类似的,这里以默认的非公平锁为例// 在ReentrantLock中acquires都是1final boolean nonfairTryAcquire(int acquires) { final Thread current = Thread.currentThread(); int c = getSt

2021-07-21 15:15:58 143

原创 java并发之AQS

部分资料来自网络,如有版权问题请联系我删除AQS原理自定义一个AQS锁源码独占式获取同步状态acquire(int)释放同步资源release()共享式获取同步状态--acquireShared**释放同步状态--releaseShared**AQS 的全称为(AbstractQueuedSynchronizer)AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 Reentran

2021-07-21 14:24:36 93

原创 java并发之线程池

线程池Executor框架简介框架结构框架的使用ThreadPoolExecutor类(重要)常见对比几种常见的线程池FixedThreadPoolSingleThreadExecutorCachedThreadPoolScheduledThreadPoolExecutor线程池大小的确定线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池的好处:**降低资源消耗。**通过重复利用已创建的线程降低线程创建和销毁造成的消耗。**提高

2021-07-21 13:10:16 76

原创 java并发之ThreadLocal

部分内容来自黑马和javaguide,有版权问题请联系我ThreadLocal数据结构内存泄漏Hash算法ThreadLocal对象可以提供线程局部变量,每个线程Thread拥有一份自己的副本变量,多个线程互不干扰。数据结构Thread类有一个类型为ThreadLocal.ThreadLocalMap的实例变量threadLocals,也就是说每个线程有一个自己的ThreadLocalMap。ThreadLocalMap有自己的独立实现,可以简单地将它的key视作ThreadLocal,value

2021-07-21 12:20:51 130

原创 java并发之Volatile和Final

部分内容来自网络,如有版权问题请联系文章目录Volatile(易变)内存语义保证可见性与有序性synchronized和 volatileHappens-beforefinal内存语义Volatile(易变)首先介绍一下指令重排序:java内存模型允许编译器和处理器对指令重排序以提高运行性能,并且只会对不存在数据依赖性的指令重排序。内存语义当写一个 volatile 变量时,JMM 会把该线程对应的本地内存中的共享变量值刷新到主内存。当读一个 volatile 变量时,JMM 会把该线程对应的

2021-07-20 22:20:30 390

原创 java并发之Synchronized

本片文章部分内容来自黑马、javaguide还有一些博客,如果有版权问题请联系我文章目录底层Monitorjava对象头Monitor锁膨胀偏向锁轻量级锁重量级锁其他一些优化自旋锁适应性自旋锁锁消除锁粗化底层MonitorJVM基于进入和退出Monitor对象来实现方法同步和代码块同步, 但是两者的实现细节不一样.代码块同步: 通过使用monitorenter和monitorexit指令实现的.package com.paddx.test.concurrent;public class Sync

2021-07-20 21:34:12 214

原创 java并发之基础

部分来自黑马和javaguide文章目录线程与进程线程生命周期上下文切换死锁sleep、wait、yieldjoinpark、unparkstart和run两阶段终止CAS线程与进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。线程与进程相似,但线程是一个比进程更小的执行单位

2021-07-20 17:56:01 78

原创 java容器之ConcurrentHashMap

此篇文章部分来自javaguide和黑马的并发教程,算是学习笔记吧,参考博客:https://blog.csdn.net/thqtzq/article/details/90344082文章目录JDK1.7底层数据结构初始化put扩容 rehashgetsizeJDK1.8初始化 initTableputgetsize总结JDK1.7底层数据结构如上图思想主要是将数据存到一个Segment数组中,而且每个Segment数组均继承自ReentrantLock,即数组中的每个元素都可以加锁,每当需要修改

2021-07-20 14:07:18 77

原创 java容器之HashMap

文章目录HashMap和Hashtable的区别HashMap 和 TreeMap 区别JDK1.8之前JDK1.8之后(重要)HashMap和Hashtable的区别• 线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的,因为 HashTable 内部的方法基本都经过synchronized 修饰。• 效率: 因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它;• 对 Null key 和

2021-07-19 22:27:06 130

原创 java容器之List

java容器之List文章目录java容器之List

2021-07-18 23:08:49 162

原创 设计模式之代理模式

设计模式之代理模式部分内容来自JavaGuide,部分内容来自尚硅谷设计模式,部分是我个人思考文章目录设计模式之代理模式静态代理JDK动态代理CGLIB动态代理代理模式是一种比较好理解的设计模式。简单来说就是 **我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。**代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。(之后学到的许多知识都是基于动态代理的,

2021-07-18 22:47:16 51

原创 java面试之基础

java面试之基础这里写目录标题java面试之基础1、==和equals2、hashcode和equals3、8种基本类型的包装类和常量池4、重载与重写5、成员变量与局部变量6、String、StringBuffer和StringBuilder7、IOBIO (Blocking I/O)NIO (Non-blocking/New I/O)AIO (Asynchronous I/O)8、反射9、注解1、==和equals对于基本数据类型,==比较的是值;对于引用数据类型来说,比较的是对象的内存地址(

2021-07-18 22:03:41 62

原创 设计模式之单例模式

文章目录设计模式之单例模式饿汉式(静态变量)懒汉式(静态公有方法)懒汉式(Synchronized)懒汉式(double-check)懒汉式(静态内部类)懒汉式(枚举)设计模式之单例模式部分来自于尚硅谷的设计模式课饿汉式(静态变量)//静态变量class Singleton{ //1.构造器私有化,外部就不能new对象了 private Singleton(){} //2.在本类内部创建对象实例 private final static Singleton ins

2021-07-18 20:48:08 38

空空如也

空空如也

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

TA关注的人

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