自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 JAVA之☞基本功

23种设计模式http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html提升Java代码性能和安全性https://blog.csdn.net/Amen_Wu/article/details/81164273【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。https://git...

2019-07-15 16:18:27 207

原创 leetcode题库☞ 600. 不含连续1的非负整数

class Solution { public int findIntegers(int n) { int k = 0; for (int i = n; i >= 0; i--) { String binaryString = Integer.toBinaryString(i); char[] chars = binaryString.toCharArray(); boolean flag.

2021-09-11 10:49:44 141

原创 leetcode题库☞ 233. 数字 1 的个数

贴一段比较好的方式:代码越简单,思维越复杂……可以自己画个函数图class Solution { public int countDigitOne(int n) { int sum = 0; for (int i = 1; i <= n; i *= 10) { /* n/i*10 n%(i*10)=x x < i = 0 x < 2i =.

2021-08-17 16:33:48 187

原创 leetcode题库☞ 313. 超级丑数

public int nthSuperUglyNumber(int n, int[] primes) { //int[] all = {1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32}; Set<Long> seen = new HashSet<>(); Queue<Long> heap = new PriorityQueue<>(); seen.ad...

2021-08-09 20:36:52 137

转载 Spring事务失效的 8 大原因

用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?1、数据库引擎不支持事务2、没有被 Spring 管理3、方法不是 public 的4、自身调用问题5、数据源没有配置事务管理器6、不支持事务7、异常被吃了8、异常类型错误1、数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysq.

2021-07-07 14:25:37 1253

原创 7种Spring的事务传播级别propagation

Spring事务的传播级别(propagation)@Transactional(propagation = Propagation.REQUIRED)pubilc void methodA(){ doSomething; methodB(); doSomething;}@Transactional(propagation = Propagation.REQUIRED)@Transactional(propagation = Propagation

2021-07-06 11:04:05 585

原创 leetcode题库☞ 226.经典之翻转二叉树

经典处刑Max Howell……class Solution { public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } TreeNode left = invertTree(root.left); TreeNode right = invertTree(root.right); root.l

2021-06-04 16:22:12 72

原创 leetcode题库☞ 5. 最长回文子串

题干题解方法一:动态规划public class Solution { public String longestPalindrome(String s) { int len = s.length(); if (len < 2) { return s; } int maxLen = 1; int begin = 0; // dp[i][j] 表示 s[i..j]

2021-05-19 12:22:05 75

原创 leetcode题库☞ 3. 无重复字符的最长子串

题干:题解:class Solution { public int lengthOfLongestSubstring(String s) { // 记录字符上一次出现的位置 int[] last = new int[128]; for(int i = 0; i < 128; i++) { last[i] = -1; } int n = s.length(); int r

2021-05-16 23:10:05 67

转载 数据结构☞红黑树代码实现

/*** 红黑树结点*/public class RBTreeNode { private int key; private boolean isBlack; private RBTreeNode left; private RBTreeNode right; private RBTreeNode parent; public RBTreeNode(int key) { this.key = key; this.isBla

2021-05-06 00:15:53 72

转载 数据结构☞红黑树

树的一些基本概念和二叉查找树的特点,这里不多叙述。平衡二叉查找树这种二叉查找树就退化成了链表,由于树的深度变得多了,查找的效率也会大幅下降所以需要对这种二叉树进行自平衡,红黑树就是一种自平衡的二叉查找树。红黑树(Red Black Tree)除了二叉查找树(BST)的特征外,还有以下特征:每个节点要么是黑色,要么是红色根节点是黑色每个叶子节点都是黑色的空结点(NIL结点)(为了简单起见,一般会省略该节点)如果一个节点是红色的,则它的子节点必须是黑色的(父子不能同为红)从任一结点到其每

2021-04-30 13:31:32 82

转载 分布式nginx、redis、rpc的基石☞Epoll原理解析

从事服务端开发,少不了要接触网络编程。Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?网上虽然也有不少讲解 Epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于是决定编写此文,让缺乏专业背景知识的读者也能够明白 Epoll 的原理。本文核心思想是:要让读者清晰明白 Epo

2021-04-25 16:35:28 278

原创 Redis分片算法☞MurmurHash

Q:你们redis怎么做的分布式A:我们公司redis用的murmurHash做的分片;Q:讲讲murmurHash的原理呗A:额……这块没有深入了解过(真TM掉分)哈希算法简单来说就是将一个元素映射成另一个元素,可以简单分类两类,加密哈希,如MD5,SHA256等,非加密哈希,如MurMurHash,CRC32,DJB等。这里说说Jedis中的Shard是如何使用一致性hash的首先是hash函数,在Jedis中有两种Hash算法可供选择,分别是MurMurHash和MD5. 按照.

2021-04-20 17:06:07 631 1

原创 gitee超过1G无法push,删除大文件后空间还是没有变化解决

其实是因为重新拉取后的.git的历史缓存大小没有释放仓库体积过大,如何减小?仓库体积 减少空间 git rebase概述Gitee 平台目前对仓库的配额如下:套餐免费版基础版标准版高级版尊享版单仓库最大 500 MB最大 1 GB最大 1 GB最大 2 GB最大 3 GB单文件最大 50 MB最大 100 MB最大 100 MB最大 200 MB最大 300 MB如用户在使用过程中不小心将较大的二进制文件加入仓库,那么仓库大小很快就会超过

2021-04-19 23:25:12 4655

转载 线程等待唤醒那些事,wait/notify生产消费模型详解

深入的分析分析wait和notify今天, 来聊聊配合Object基类的wait()notify()这两个方法的实现,为多线程协作提供了保证。wait() & notify()Object 类中的 wait&notify 这两个方法,其实包括他们的重载方法一共有 5 个,而 Object 类中一共才 12 个方法,可见这 2 个方法的重要性。我们先看看 JDK 中的定义:public final native void notify();其中有 3 个方法是 nati

2021-04-18 17:51:49 208

原创 关于kafka的☞CAP模型

关于CAP理论的介绍,其实网上已经有很多文章,大家可以自行查阅。这篇文章尝试从Kafka的角度来分析CAP理论。 0 CAP理论,有人把它翻译成中文叫“帽子理论”,是Eric Brewer在1998年提出来的一个约束分布式存储系统的理论。 CAP是Consistency、Availability和Partition tolerance三个单词的首字母缩写,这三个单词分别指代数据强一致性/线性一致性、系统整体可用性和网络分区容忍性...

2021-04-16 00:00:16 619 1

原创 DUBBO消费方启动 qos-server can not bind localhost:22222

-------------01:09:20.714 [main] ERROR org.apache.dubbo.qos.server.Server.start(Server.java:111) - [DUBBO] qos-server can not bind localhost:22222, dubbo version: 2.7.5, current host: 192.168.0.101java.net.BindException: Address already in use: bind at

2021-04-15 01:29:42 529 2

原创 锁的内存语义,如何让成员变量具有了☞“可见性”

package com.gjw._nowcoder;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Main { private static Lock lock = new ReentrantLock(); private static int state = 0; static class ThreadA impl

2021-04-14 14:26:21 95

原创 循环打印abc☞ReentrantLock + Condition

package com.gjw._nowcoder.循环打印abc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Abc_Lock_condition { private static Lock lock = new ReentrantLock();

2021-04-14 10:08:17 160

转载 HashMap☞JDK7中成环原因及JDK8的解决方式

我的大白话:某一bucket: a->b->null两个线程同时做resize操作:线程1:步骤1:a->null步骤2:会继续处理原来的a.next就是b线程2:(一个完整resize操作)a->nullnewTable[i] = a->null (newTable为局部变量) b的next还是null 继续处理bb->a->null线程1:(继续线程1的步骤2)newTable[i] = a->null 继续处理b,此时

2021-04-12 22:49:54 113

原创 被瑶哥问到spring事务的实现原理,关键字:ThreadLocal

昨晚吃饭遇到p7大佬问到spring事务的实现原理。很尴尬,这块没有深究过,虽然对ThreadLocal很熟悉,但是并没有想到原来spring也是通过它来解决事务问题,网上找了一篇文章,结合spring的代码看了下,有了一个新的认识,以下内容来源于转载ThreadLocal是用来处理多线程并发问题的一种解决方案。ThreadLocal是的作用是提供线程的局部变量,在多线程并发环境下,提供了与其他线程隔离的局部变量。通常这样的设计的情况是因为这个局部变量是不适合放在全局变量进行同步处理的。比如在事务管理中,

2021-04-10 14:46:28 765

原创 福报厂面试之树的遍历、节点统计、树高计算

q:计算下二叉树的节点:a:可以用递归,q:递归堆栈利用高,时间复杂度高,不要用递归a:emmmmmm… 请看下文package com.gjw.datastruts_Alg.binarytree;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class

2021-04-08 17:51:01 170 3

原创 redis的事务及其原子性验证

第一种情况:在事务开始后,用户可以输入事务要执行的命令;在命令入事务队列前,会对命令进行检查,如果命令不存在或者是命令参数不对,则会返回错误可客户端,并且修改客户端状态。当后面客户端执行 EXEC 命令时,服务器就会直接拒绝执行此事务了。这个时候gjw这个key就没有set成功。第二种情况:Redis 不支持事务回滚机制,但是它会检查每一个事务中的命令是否错误。但是我们要注意一个点就是:Redis 事务不支持检查那些程序员自己逻辑错误。例如对 String 类型的数据库键执行对 list 类型

2021-04-08 09:59:40 230

原创 java基本数据类型存放位置

基本数据类型是放在栈中还是放在堆中,这取决于基本类型声明的位置。一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因 在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。 (1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中 (2)当声明的是引用变

2021-04-05 21:43:07 869

原创 JVM是怎么处理private等修饰符的

       字段表(field_info)用于描述接口或者类中声明的变量。Java语言中的“字段”(Field)包括类级变量以及实例级变量,但不包括在方法内部声明的局部变量。可以回忆一下在Java语言中描述一个字段可以包含哪些信息。       字段可以包括的修饰符有字段的作用域(public、private、protected修饰 符)、是实例变量还是类变量(static修饰符)、可变性(final)、并发可见性(vola

2021-04-02 10:50:48 193

原创 JMM内存模型、JMM内存间交互操作

主内存与工作内存JMM内存间交互操作 关于主内存与工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存、如何从 工作内存同步回主内存这一类的实现细节,Java内存模型中定义了以下8种操作来完成。Java虚拟机实 现时必须保证下面提及的每一种操作都是原子的、不可再分的(对于double和long类型的变量来说, load、store、read和write操作在某些平台上允许有例外) 针对long和double型变量的特殊规则 Java内存模型要求lock、unlock、read、load、

2021-04-01 23:40:59 304

原创 springboot不编译resources里配置文件问题

用2.2.2版本怎么都不行。。。整吐了什么xxx 解决不了2.4.4版本可以正常加载。<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <re

2021-03-26 13:35:29 1043

原创 SpringBoot中application.properties(.yml)配置的中文,@SpringBootTest自测控制台打印是乱码

Transparent native-to-ascii conversion:自动转换为Unicode编码

2021-03-26 10:39:49 372

原创 数据库事务基本要素ACID

事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性;一、原子性(atomicity)一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性二、一致性(consistency)事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所作的修改有一部分已写入物理数据库,这是数据库就处于一种不正确的状态,也

2021-01-25 15:37:45 376

转载 两个Survivor区作用

在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Minor GC长得多。

2020-05-26 15:53:25 333

转载 Java☞线程池

第一部分来看一下线程池的框架图,如下: 1、Executor任务提交接口与Executors工具类  Executor框架同java.util.concurrent.Executor 接口在Java 5中被引入。Executor框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。Executor存在的目的是提供一种将”任务提交”与”任务如何运行”分离开来的机制。定义如下:p...

2020-04-30 10:57:52 182

转载 拒绝策略RejectedExecutionHandler

先贴出juc包下接口的定义package java.util.concurrent;/** * A handler for tasks that cannot be executed by a {@link ThreadPoolExecutor}. * * @since 1.5 * @author Doug Lea */public interface RejectedExecu...

2020-04-30 10:24:20 512

转载 MVN命令之clean,compile,build,install,package区别

clean: 执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件compile:编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件。package:这个命令会在你的项目路径下一个target目录,并且拥有compile命令...

2019-12-10 10:02:34 10244

原创 HTTP常见状态码 2xx 3xx 4xx 5xx

HTTP状态码(HTTP Status Code)一些常见的状态码为:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功)表示成功处理了请求的状态代码。代码 说明200 ...

2019-08-14 11:59:40 5509

原创 算法复杂度☞时间与空间复杂度 O(f(n))

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用...

2019-08-06 10:12:10 351

原创 BigDecimal去除末尾多余的0 ,stripTrailingZeros()

BigDecimal是处理高精度的浮点数运算的常用的一个类当需要将BigDecimal中保存的浮点数值打印出来,特别是在页面上显示的时候,就有可能遇到预想之外的科学技术法表示的问题。一般直接使用 BigDecimal.toString()方法即可以完成浮点数的打印。如:    System.out.println( new BigDecimal(...

2019-07-15 16:37:34 1292

转载 BigDecimal四舍五入☞RoundingMode 选择

转自 https://blog.csdn.net/well386/article/details/53945796RoundingMode介绍:RoundingMode是一个枚举类,有一下几个常量:UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY  UPpublic static ...

2019-07-15 16:01:34 2025

转载 定时任务框架☞Quartz

一、什么是Quartz什么是Quartz? Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能: 持久性作业 - 就是保持调度定时的状态; 作业管理 - 对调度作业进行有效的管理; 大部分公司...

2019-07-10 15:20:15 186

转载 Redis☞跳跃表原理

跳跃表原理       最近看了一种数据结构叫做skipList,redis和levelDB都是用了它。Skip List是在有序链表的基础上进行了扩展,解决了有序链表结构查找特定值困难的问题,查找特定值的时间复杂度为O(logn),他是一种可以代替平衡树的数据结构。     下面是...

2019-06-16 16:47:49 6802

原创 IDEA 之 sdk和Language level

在java项目中必不可少的是我们要指定一个jdk。在指定jdk的同时,还可以指定jdk的Language level,这个有点像我们工程最低支持版本。比如Language level 设置了5.0 只是就不能出现使用6.0/7.0特性的代码。因为这些特性在5.0的环境下是无法编译的。或者可以理解ide会安装Language level指定的jdk版本来对我们的代码进行编译,以及错误检查。...

2019-06-11 16:25:38 8768

bellsoft-jdk11.0.5+11-windows-amd64.msi

bellsoft-jdk11.0.5+11-windows-amd64.msi 比对了不少 OpenJDK 的发行版,对一般用户来说,Liberica JDK 应该是最友好的 OpenJDK 发行版。 Liberica JDK 默认捆绑了 JavaFX (AdoptOpenjdk 和 OracleJDK 都没有); 提供 Java 13 的构建(Zulu 13 没有捆绑 OpenJFX 的版本,只有 Zulu 11 有);

2020-06-29

空空如也

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

TA关注的人

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