自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统整理

1、操作系统概述1.1、操作系统的概念、特征、功能和结构1、操作系统的概念在信息化时代,软件被称为计算机系统的灵魂。而作为软件核心的操作系统,已经与现代计算机系统密不可分、融为一体。计算机系统自下而上可粗分为四个部分:硬件、操作系统、应用程序和用户。操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件和用户的中介。硬件,如中央处理器、内存、输入输出设备等,提供了基本的计算资源。应用程序,如字处理程序、电子制表软件、编译器、网络浏览器等,规定了按何种方式使用这些资源来解决用户的计算问题

2021-11-15 22:55:13 768

原创 redis在线练习神器

可在线进行的redis各类练习国外网站:http://try.redis.io/国内网站:https://www.freeaihub.com/redis/setup.html

2021-11-05 10:10:50 1352

原创 如何使用JDK来实现自己的缓存(支持高并发)?

需求分析项目中经常会遇到这种场景:一份数据需要在多处共享,有些数据还有时效性,过期自动失效。比如手机验证码,发送之后需要缓存起来,然后处于安全性考虑,一般还要设置有效期,到期自动失效。我们怎么实现这样的功能呢?解决方案使用现有的缓存技术框架,比如redis,ehcache。优点:成熟,稳定,功能强大;缺点,项目需要引入对应的框架,不够轻量。如果不考虑分布式,只是在单线程或者多线程间作数据缓存,其实完全可以自己手写一个缓存工具。下面就来简单实现一个这样的工具。代码实现package com.hom

2021-11-02 09:55:24 461

原创 十大经典排序算法

术语说明:稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序 :所有排序操作都在内存中完成;外排序 :由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度 : 一个算法执行所耗费的时间。空间复杂度 :运行完一个程序所需内存的大小。冒泡排序package org.apache.ibatis.mytest;import java.util.Arrays;/**

2021-10-31 21:22:43 372

原创 B+树的理解以及在mysql中的应用

AVL 树和红黑树这些二叉树结构的数据结构可以达到最高的查询效率这是毋庸置疑的。既然如此,那么数据库索引为什么不用 AVL 树或者红黑树呢?这就牵扯到一个问题了,不考虑每种数据结构的前提条件而选择数据结构都是在耍流氓。AVL 数和红黑树基本都是存储在内存中才会使用的数据结构,那磁盘中会有什么不同呢?这就要牵扯到索引的存储原理了页是 InnoDB存储引擎管理数据库的最小磁盘单位。一个页中包括很多数据行。那么,现在问题就来了一个父节点只有 2 个子节点,并不能填满一个页上的所有内容啊?那多余的内

2021-10-31 14:58:05 289

原创 树论基础-二叉树

在树形结构里面有几个重要的术语:1.结点:树里面的元素。2.父子关系:结点之间相连的边3.子树:当结点大于1时,其余的结点分为的互不相交的集合称为子树4.度:一个结点拥有的子树数量称为结点的度5.叶子:度为0的结点6.孩子:结点的子树的根称为孩子结点7.双亲:和孩子结点对应8.兄弟:同一个双亲结点9.森林:由N个互不相交的树构成森林在树形结构里面有几个重要的术语:结点的高度:结点到叶子结点的最长路径结点的深度:根结点到该结点的边个数结点的层数:结点的深度加1树的高度:根结点的高.

2021-10-31 13:43:58 317

原创 二叉搜索树BST&红黑树

private void fixAfterInsertion(Entry<K,V> x) { // 新添加的节点是红色 x.color = RED; // 添加的节点 while (x != null && x != root && x.parent.color == RED) { // 当前节点非空且不是根节点且当前节点的父节点是红色 if (parentOf(x) == leftOf(parentOf(parentOf(x)))) { // 当前

2021-10-29 18:21:25 217

原创 JVM虚拟机参数配置详解

JVM虚拟机参数配置官方文档http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.htmlhttp://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

2021-10-27 17:36:42 154

原创 JVM面试终结篇

1、运行时数据区域堆对象实例、数组-Xms表示堆初始大小-Xmx表示堆最大大小逻辑上连续,线程共享,虚拟机启动时创建,最大没有内存完成实例分配,且无法扩展,OOM方法区(元空间)存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存被线程共享,不会频繁GC实现:jdk7把静态变量和字符串常量池移到堆中,jdk8移除永久代,把方法区移致元空间,它位于本地内存。注意:JDk6、JDk7方法区即PermGen(永久代),JDK8方法区就是MetaSpace(元空间).

2021-10-27 11:24:45 99

原创 RPC调用和HTTP调用的区别

很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹啦!下面来具体说一说RPC服务和HTTP服务。OSI网络七层模型在说RPC和HT

2020-11-22 16:45:30 494

原创 腾讯微服务框架TSF简介

腾讯微服务平台 (Tencent Service Framework,TSF) 是一个围绕着应用和微服务的 PaaS 平台,提供应用全生命周期管理、数据化运营、立体化监控和服务治理等功能。TSF 拥抱 Spring Cloud 、Service Mesh 微服务框架,帮助企业客户解决传统集中式架构转型的困难,打造大规模高可用的分布式系统架构,实现业务、产品的快速落地。(就是基于springCloud封装的)概述TSP概念关系集群 是实例的集合。在同一个集群中,可以存在很多资源,而在实际的工作中,

2020-11-21 22:35:12 10446 1

原创 windows安装consul与启动

consul的作用consul是一个服务管理软件。支持多数据中心下,分布式高可用的,服务发现和配置共享。采用 Raft 算法,用来保证服务的高可用。consul的安装去官网下载windows的安装文件:consul官网下载链接老版本下载入口如下图:安装完成以后进入CMD 查看consul版本:consul -v启动consul方法一consul agent -dev 默认启动本地127.0.0.1:8500在浏览器中查看出现如下图则启动成功方法二使用 ipconfig :

2020-11-17 21:53:54 850

原创 数据库文档生成工具screw

数据库文档生成工具screw一、数据库支持二、文档生成支持三、使用方式maven依赖引入配置数据源screw 核心配置pom文件配置java代码生成方式一、数据库支持MySQLMariaDBTIDBOracleSqlServerPostgreSQLCache DB二、文档生成支持htmlwordmarkdown三、使用方式maven依赖引入<!-- screw核心 --><dependency> <groupId>cn.s

2020-11-16 13:00:30 825 2

原创 三种空格unicode

1.不间断空格\u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键ctrl+shift+space ;2.半角空格(英文符号)\u0020,代码中常用的;3.全角空格(中文符号)\u3000,中文文章中使用;如何看字符串中的空格是哪一种,可以通过debug看其ascii码区分,然后做处理...

2020-08-19 09:28:25 2847

原创 JAVA架构师学习路线图(绝对详细)

JAVA架构师学习路线图(绝对详细)性能调优Jvm性能调优JVM类加载机制详解JVM内存模型垃圾收集机制详解十种垃圾收集器详解JVM调优工具详解GC日志详细分析JVM调优实战Mysql性能调优SQL执行原理详解索引底层剖析执行计划与SQL优化Mysql锁机制与事务隔离级别详解Tomcat调优整体认知Tomcat项目架构生产环境配置掌握Tomcat 线程模型背后原理Nginx调优Nginx快速掌握熟练掌握Nginx核心配置掌握Nginx负载算法配置并发编程操作系统内核原理JMM内存模型并发同步处理并发包之to

2020-08-15 16:05:51 10070

原创 BigDecimal.ROUND_HALF_EVEN (银行家算法)

四舍六入,五看前一位是偶数舍,奇数进位BigDecimal a = new BigDecimal(5.54);System.out.println(a.setScale(1, BigDecimal.ROUND_HALF_EVEN));5.54 5.52.55 2.61.66 1.71.25 1.21.06 1.1-1.06 -1.1-1.11 -1.1-1.65 -1.6-2.55 -2.6-5.54 -5.5...

2020-07-04 17:54:49 6302

原创 Redis的集中序列化器

对redis的value使用以下序列化方式进行序列化操作:1:JdkSerializationRedisSerializer:2:GenericJackson2JsonRedisSerializer3:StringRedisSerializer4:GenericFastJsonRedisSerializer发现只有4:GenericFastJsonRedisSerializer,最好用,不报错下面一个个简单介绍以下1:JdkSerializationRedisSerializer:序列化ja

2020-05-17 18:13:28 1607

原创 Java中的CAS理解

Java中的CAS理解CAS是什么?CAS能做什么?CAS在java中的应用CAS有没有什么不好的隐患呢?1、首先就是经典的ABA问题2、长时间自旋非常消耗资源3、只能保证一个共享变量的原子操作。在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致

2020-05-17 17:41:19 2065 2

原创 synchronized与Lock的区别比较

synchronized与Lock的区别比较1、synchronized 是Java内置的关键字,使用后会自动释放锁,Lock是java.util.concurrent.Locks 包下的一个接口,必须要手动释放。特别是在发生异常时,需要在 finally 块中进行手动释放,否则会发生死锁行为2、Lock可响应中断,而synchronized 不能响应中断,并且Lock提供了更丰富的方法实现;例如Lock() ; //获取锁tryLock(); //获取锁tryLock(long time, T

2020-05-16 21:52:41 1951

原创 JVM调优之逃逸分析

是不是所有的对象和数组都会在堆内存分配空间?逃逸分析(Escapse Analysis)是目前虚拟机中比较前沿的优化技术。之所以称为优化技术,他并不是一种直接优化代码的手段,而是穿插与其他优化技术之中,为其他优化技术提供分析技术1.概述在讨论逃逸分析之前,我们先举一个生活中的例子——交通肇事逃逸。说道这个词,大家就熟悉多了,机动车驾驶员在发生交通事故的同时,擅自逃离事故现场,使交通事故所引起的民事、刑事、行政责任无法确定,其目的在于推卸、逃脱责任的行为。也就是说,逃逸就是擅自离开规定的范围。而对于Ja

2020-05-16 13:48:46 2416 2

原创 syncronized底层实现原理及相关优化

syncronized底层实现原理及相关优化实现原理Java对象头、monitorJava对象头monitor锁优化自旋锁适应自旋锁锁消除锁粗化轻量级锁释放锁偏向锁重量级锁记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我

2020-05-16 12:50:33 1847

原创 Java单例模式

Java单例模式饿汉式(线程安全)懒汉式(线程安全)静态内部类(线程安全)双重检验锁枚举单例Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用,那么单例模式也许是一个值得考虑

2020-05-15 21:48:46 2511

原创 JDK7与JDK8中HashMap的实现

JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry<K,V>[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中;而Map中的key,value则以Entry的形式存放在数组中static class Entry<K,V> implements Map.Entry<K,V> { final K key; V value;

2020-05-13 15:41:02 2928

原创 微信昵称表情符号添加数据库报错问题

保存微信用户信息时,部分昵称带有表情符号的会报错Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x9A\xAD70...' for column 'nick_name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLErro...

2020-04-30 17:20:17 3269

原创 Maven类包冲突解决

使用 mvn dependency:tree 罗列出依赖,然后排除-Dverbose-Dincludes=asm:asm

2020-04-27 13:51:40 3005

原创 MySQL事务的四大隔离级别

MySQL事务的四大隔离级别事务什么是事务?事务的四大特性事务并发存在的问题脏读(dirty read)不可重复读(unrepeatable read)幻读事务的四大隔离级别实践读未提交(Read Uncommitted)读已提交(READ COMMITTED)可重复读(Repeatable Read)串行化(Serializable)MySql隔离级别的实现原理读未提交(Read Uncommi...

2020-04-12 19:14:00 3937

原创 JDK 动态代理和 CGLIB 动态代理

JDK 动态代理和 CGLIB 动态代理静态代理JDK 动态代理CGLIB 动态代理总结我们在阅读一些 Java 框架的源码时,基本上常会看到使用动态代理机制,它可以无感的对既有代码进行方法的增强,使得代码拥有更好的拓展性。 通过从静态代理、JDK 动态代理、CGLIB 动态代理来进行本文的分析。静态代理静态代理就是在程序运行之前,代理类字节码.class就已编译好,通常一个静态代理类也只代...

2020-04-12 18:25:13 3607

原创 Java中锁的分类

Java中锁的分类1、可重入锁/不可重入锁2、可中断锁3、公平锁/非公平锁4、独享锁(互斥锁)/共享锁(读写锁)5、乐观锁/悲观锁6、分段锁7、偏向锁/轻量级锁/重量级锁8、自旋锁先来一段很常见的死锁代码:class Deadlock { public static String str1 = "str1"; public static String str2 = "str2"...

2020-04-12 17:55:33 3283

原创 对象锁和类锁的区别

对象锁和类锁的区别synchronized 关键字对象锁1、锁住 this 对象2、 锁住实体里的非静态变量3、直接锁非静态方法对象锁代码测试类锁1、锁住 xxx.class2、锁住类中的静态变量3、直接在静态方法上加 synchronized类锁代码测试总结生活中不存在绝对的自由,绝对的自由通常对应的无序和混沌,只有在道德、法律、伦理的约束下的相对自由,才能使人感受到自由。而在多线程编程中,...

2020-04-12 16:47:25 4465

原创 设计模式

设计模式jdk源码种设计模式应用-CSDNjdk源码种设计模式应用-知乎

2020-04-06 17:17:33 3033

原创 深入理解java虚拟机

深入理解java虚拟机(一)、Java运行时数据区域和Java内存模型(JMM)程序计数器Java虚拟机栈1. 局部变量表2. 操作栈3. 动态链接4.方法返回地址(return Address)本地方法栈Java堆方法区运行时常量池直接内存Java内存模型JVM主内存与工作内存重排序和happens-before规则volatile关键字(二)、Java垃圾收集和内存分配策略如何确定某个对象是“...

2020-04-05 11:59:24 3885

原创 微信模板消息推送(java实现)

1、获取Access_token-微信开发文档2、模板消息接口-微信开发文档首先需要在微信公众号后台模板消息中申请模板id,申请好以后可以在模板消息–>我的模板–>模板详情中查看到具体模板id和模板样式例如:下面就可以开始写代码了(就是封装好具体参数然后,调用微信开放的接口即可):import org.apache.http.HttpResponse;import org...

2020-04-01 12:48:19 6021 1

原创 微信公众号开发(java实现)

网上看的这篇文章介绍的还是比较详细的:微信公众号开发基本流程微信开发者文档微信公众平台微信开放平台下面主要介绍一下接入公众号开发,前面账号申请,后台配置就不说了创建公众号菜单1、获取access_token: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&...

2020-03-27 15:37:41 4719 1

原创 微信授权登录(java实现)

微信公众平台开发文档微信授权登录获取用户信息有2种方式:1.静默授权获取用户信息、2.非静默授权弹出授权界面,用户确认之后获取用户信息(这种方法能够获取到更多信息)。开发前准备:1.获取到AppID2.AppSecret3.设置IP白名单4.添加网页授权域名公众号设置->功能设置前端获取code:https://open.weixin.qq.com/connect...

2020-03-27 13:09:05 5379

原创 创蓝闪验一键登录(Java实现)

闪验业务流程官网提供了demo下载(有签名工具类,发送http请求工具类,加解密工具类):下面贴出核心业务代码:package com.pica.cloud.account.account.server.model;import com.alibaba.fastjson.JSONObject;import com.pica.cloud.account.account.server.e...

2020-03-27 11:39:31 5220

原创 java生成图形验证码

java生成图形验证码图形验证码拼图码图形验证码package com.pica.cloud.account.account.server.util.captcha;public interface Generator { String generateChars(int size);}package com.pica.cloud.account.account.ser...

2020-03-26 11:25:01 3956

原创 苹果登录的后台验证token(JAVA)sign with apple

苹果登录后台token校验分为2种方式:1、jwt校验2、授权码校验我这里记录一下第一种方式流程大致如下:添加maven依赖:<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9....

2020-03-02 12:06:27 7972 16

原创 JDK8中Optional类使用

阿里巴巴Java开发手册中提到有一点关于NPE问题相信不管是新手还是从业多年的开发来说NPE真的是非常常见的一种异常了,Java8为了解决这一问题引入了Optional类善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。这篇文章是建立在你对Optional的用法有一定了解的基础上的,如果你还不太了解Optional,可以先去看看相关教程,或者查阅Java文档。使用Opt...

2020-01-03 13:53:04 3837

原创 mysql中unsigned的用法理解

unsigned 是MYSQL自定义的类型,非标准SQL。用途1是起到约束数值的作用,2是可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便移植。unsigned 为“无符号”的意思unsigned 既为非负数,用此类型可以增加数据长度!例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127...

2019-12-23 13:54:48 12511 1

原创 springboot整合mongodb

springboot整合mongodb实现方式1添加maven依赖配置文件添加对应实体类service层代码实现controller层代码实现实现方式2maven依赖同上配置文件添加配置配置类添加操作工具类实现方式1添加maven依赖<dependency> <groupId>org.springframework.boot</groupId> &lt...

2019-12-19 15:44:19 4233

空空如也

空空如也

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

TA关注的人

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