自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 JAVA 函数式接口与lambda

JAVA函数式接口教程,只讲重点

2023-09-05 18:32:06 154

原创 python中yield浅析

3分钟带你读懂python yield

2022-07-25 14:51:40 401 1

原创 spring循环依赖

什么是循环依赖概念spring中多个bean互相引用图示​​代码示例@Componentpublic class BeanA { @Autowired private BeanB beanB;}@Componentpublic class BeanB { @Autowired private BeanA beanA;}spring如何解决循环依赖?注意下属两种情况未解决循环依赖问题:1.构造器注入2.非单例这个不用记,只是提一下。言归正传,先说结论:用

2022-05-14 22:43:58 555

原创 XmlBeanFactory已过时 / 错误: 发现警告, 但指定了 -Werror

在编译spring源码时,居然出现了奇怪的现象:1.gradle编译时,过期的方法居然导致编译错误!2.编译后有日志: 错误: 发现警告, 但指定了 -Werror我的目录结构:在spring源码中新建了自己的gradle测试项目。所以查看spring根目录的build.gradle后发现:去掉红色框框部分就好了。...

2022-04-26 14:42:06 846

原创 Device /dev/sdb1 excluded by a filter

pvcreate之前,不要格式化,也就是不要执行:mkfs.ext3 /dev/sdb1

2021-12-22 17:46:12 1040

原创 ErrMsg:failed to req API:/nacos/v1/ns/instance after all servers(

仔细看还有个报错:receive invalid redirect request from peer启动seata时报错。我是将seata与nacos配置在同一个云服务器上。但是我registry.conf中配置的ip是公网ip。改为私网ip就好了。

2021-11-18 17:00:29 984

原创 If you really want to continue then you have to set the C_FORCE_ROOT

celery root 用户无法启动。如果想强行启动,不用修改代码。直接:export C_FORCE_ROOT="true"

2021-11-09 09:53:35 881 1

原创 kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connect

我是在腾讯云上部署的,命令:docker run --name kafka1 -p 9093:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=ip:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka主要原因就是ip错误了,我一开始填的公网ip。没.

2021-10-11 12:09:48 1330

原创 jvm垃圾回收

1.如何判断对象是垃圾?1.1 引用计数法给每个对象加一个计数器,对象被引用则计数器+1。当对象的计数器不为0时,该对象就可以被看作垃圾,等待回收。缺点:循环引用:A引用了B,B引用了A。这个方法在主流虚拟机里未被使用。1.2 可达性分析算法我们可以将对象之间的互相引用看作一个有向图。从几个起点(被称作GC Roots)开始搜索,就知道哪些对象是被引用了,那么另外那部分没被引用的对象就可以被视为垃圾,等待回收。GC Roots主要有以下几种:1.被栈上引用的对象。比如局部变量

2021-08-27 20:02:02 84

原创 两个线程交替打印数字(六种方法,总有一款适合你)

今天脑子里突然冒出这个问题,于是自己写了下。方法1:利用volatile进行同步volatile是可以同步的,这个关键字保证了内存可见性。那么只要你的操作是原子的就可以保证线程安全。什么叫原子的呢?falg = false;这种就属于原子的。而i++这种不属于原子操作。所以我们思路如下:利用一个volatile修饰的变量,控制线程调度。代码如下:public class Test2 { static int i = 1; static volatile boo

2021-08-26 00:48:36 4113 2

原创 Thread.sleep()为什么要抛出中断异常

当然是为了让你的代码具有响应中断信号的能力!目录从场景说起响应中断关闭线程池从场景说起假设sleep()方法不抛出中断异常,也就是线程没有中断响应能力,会怎么样?考虑如下场景:线程A:sleep中线程B:A别睡了,要关机啦(向A发送中断信号)线程A:sleep中这样好吗?这不好。因为线程A对外界情况没有感知能力。中断就起到了这样的作用:让线程具有感知的能力。sleep(),wait()等方法都需要你去处理中断异常,也就是需要你的代码能够响应中断。响应中断

2021-08-22 12:00:25 9715

原创 mysql checkpoint的理解

我个人认为这是一个名词,而不是动词。在MySQL8.0官方文档里对checkpoint的定义如下:=============================================checkpoint As changes are made to data pages that are cached in the buffer pool, those changes are written to the data files sometime later, a process kno

2021-08-16 23:35:13 246

原创 redo log详解

不知道大家没有想过mysql是如何保证事务里的数据不丢失的?没错,就是通过redo log(下文简称redo)。注意,绝对的数据不丢失是做不到的。我们所谈论的redo log,是针对事务而言。我们只要能保证事务中的数据不丢就行,说简单点就是redo保证了事务的原子性和持久性。简单解释下:原子性:要么都做了,要么都没做。不要只做一半。比如两个人互相转账,不允许出现一个人转了,而另一个人没收到钱的情况。也就是两条update要么全部执行,要么都不执行。持久性:数据写到磁盘了。当然这个说法不严谨,

2021-08-15 21:56:50 12385 8

原创 leetcode53 最大子序列和

一听这题的名字,就有一股浓浓的校招味。没错,又是动态规划了。思路:1.动态规划嘛,先弄个数组dp[i] : 以i结尾的最大连续序列和。看到加粗的字体,显然我们要考虑nums[i]是加到之前的序列,还是单独成为一个序列的开头。2.状态转移方程:dp[i] = Max( dp[i-1]+nums[i] , nums[i] )代码:class Solution { public int maxSubArray(int[] nums) { if( nums.

2021-08-08 14:36:29 75

原创 趣谈IllegalMonitorStateException——notify()/notifyAll()与wait()的用法

多半是在wait()和notify()的使用中产生的吧?如果是,请接着往下读。那么本文谈谈如何正确使用notify()/notifyAll()和wait(),理解了原理,再去修改你的代码肯定就没错了。首先明确以下结论:(可以跳过,直接看底下小女孩的故事)1.synchronized(A)可以锁住对象A,也就是拿到对象A的对象锁(monitor锁),使A在任意时刻只被一个线程拥有。什么是对象锁呢?简单理解就是每个对象都有一把锁,这个锁在同一时刻只能被一个线程占有,哪个线程拿到就是谁的。很像

2021-08-08 10:52:43 318

原创 json 字符串 格式化

思路同上一篇文章(xml格式化) ,稍有变化/** * 格式化JSON字符串 */ public static String formatJson(String originStr) { if (originStr == null) { return null; } char[] charArray = originStr.toCharArray(); StringBuilder sb

2021-07-10 10:38:08 1474

原创 xml 字符串 格式化

公司前端展示的xml太丑了。于是我在后端代码里加了些换行和制表符。总体思路: 利用<tag>与</tag>的数量差异就能判断出应该每行首部应该留出多少空白格。/** * 格式化XML字符串 */ public static String formatXml(String originStr) { if (originStr == null) { return null; ...

2021-07-10 10:36:26 700

原创 navicat连不上mySql

授权:mysql> GRANT ALL ON *.* TO 'root'@'%';刷新权限:mysql> flush privileges;更新加密规则:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;更新root用户密码:mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_

2021-06-14 22:01:56 85

原创 leetcode45-跳跃游戏 II

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: [2,3,0,1,4]输出: 2来源:力扣(LeetCode)链...

2021-05-30 17:12:07 57

原创 leetcode39 组合总和

题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入:candidates =...

2021-05-16 20:37:34 65

原创 leetcode36 有效的数独

题目:请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。注意: 一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规则,验证已经填入的数字是否有效即可。示例 1:输入:boar...

2021-05-16 18:47:58 574

原创 leetcode33 搜索旋转排序数组

思路:(好像剑指offer也有这一题)1.这种题直接搜索肯定会超时。所以考点肯定是二分法。2.旋转数组有什么特点呢?我个人觉得就是最开头的数,比它小的数字肯定在尾部。知识点复习首先要懂二分法基本写法:(我从网上抄的,只强调一点:mid应该用减法来计算,防止溢出)int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left ..

2021-05-08 20:51:34 65

原创 leetcode29 两数相除

思路:1.负数转化为正数符合我们的习惯,但是有效区间为[−2^31, 2^31− 1],显然−2^31,转化为正数会溢出。那么只能全部转化为负数来做了。2.直接减肯定会超时,不然这题没意义了。其实这一题就是看dividend 最多可以分解为多少个divisor 。我们先假设dividend >0且divisor >0。因为无法用乘法,我们可以用位运算,每次左移n位,则相当于divisor *(2^n)了。我们试探性的累加n,直到不能加为止。int n = 0;...

2021-05-08 20:35:55 90

原创 leetcode24 两两交换链表中的节点

题目://Given a linked list, swap every two adjacent nodes and return its head. //// // Example 1: //// //Input: head = [1,2,3,4]//Output: [2,1,4,3]// //// Example 2: //// //Input: head = []//Output: []// //// Example 3: //// //Input: h

2021-05-06 11:11:09 74

原创 leetcode22 括号生成

思路:1.(吐槽)这一题让你生成有效括号,又不告诉你什么是有效括号。那你让我做什么?那么到底什么是快乐星球(不对,有效括号)?这个问题的答案,其实就是这题的灵魂了:'('一定要有闭环才行。=============version 1 只打败了10%的人===========我一开始也没想很清楚,想着先把所有括号生成出来再说。那么经典的暴力搜索开始:可以看到我是在最后生成了所有的字串后,再去字串判断是否符合题意(if(deep==2*n){...}的代码块内)。if(rightC.

2021-05-01 13:37:31 93

原创 leetcode19 删除链表的倒数第N个结点

思路:显然很适合dfs的后序。那么dfs代码如下:稍微有个小坑就是删除头的时候,也就这一个特例吧。class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if(head == null) return null; int[] reverseDeep = new int[1]; if(dfs(reverseDeep,head,null,n)) {

2021-04-30 17:21:43 82 2

原创 leetcode17 电话号码的字母组合

思路:dfs这种题懂的都懂,不懂的讲了也不懂。听哥一句劝,先去把这个专题搞明白吧。这个资料也是我写的https://download.csdn.net/download/u011403239/12045003?spm=1001.2014.3001.5503初学者不易理解,老玩家又觉得简单,重点是这东西没法讲。建议找个草稿纸画一画归并排序与二叉树dfs的过程。代码如下:class Solution { public List<String> letterCombina

2021-04-30 14:38:49 71

原创 leetcode15 三数之和

思路:不排序不好处理,所以先排序。然后遍历数组(每个元素作为x),那么0-x则为2sum问题。这个2sum双指针即可。显然结果集会有重复的,去重也是这个题的考点。如何祛重呢?一开始我用的是set,代码如下(其实很慢的,但是我们还是AC了,笔试中简单方便):class Solution { public List<List<Integer>> threeSum(int[] nums) {// Input: nums = [-4,-1,-1,0,1,2]

2021-04-29 23:32:23 70

原创 leetcode11 盛水最多的容器

从两端开始搜索,每次只移动较小的坐标。证明略,因为不是很懂。class Solution { public int maxArea(int[] height) { if(height == null || height.length == 0) return 0; int l = 0; int r = height.length-1; int maxRes = 0; while (l<=r) {

2021-04-29 22:40:05 58

原创 leetcode05 最长回文子串

思路:我直接用dp了,其它的不那么通用。设dp[i][j]表示s[i,j]是否为回文数,是则值为1,否则为0。那么有:显然dp[i][j]可以由子序列和当前s[i],s[j]推断出来。注意到i,j变化的方向为:我们沿着45°对角线填充即可。如下图所示:上代码,还是比较简单的。class Solution { public String longestPalindrome(String s) { if(s == null || s.length

2021-04-28 23:27:08 52

原创 leetcode3无重复字符的最长子串(java)

题外话:决定把算法捡起来,没想到leetcode国际服居然上不去了,这垃圾宽带。只能转战国服了。初步解题思路:遍历入参s,并维护一个map,key为s[i],value为i。为什么需要这个map呢?当然是为了便于后面查找哪个字符跟当前坐标的字符重复了,如果重复了,假设map.get(当前字符)=dupIndex,下次搜索区间应该从leftIndex = dupIndex+1开始。这样我们保证了搜索区间里的数据是不重复的。所以不用担心map被覆盖的问题,因为太早的重复数据已经没意义了(这一

2021-04-28 00:04:19 139

原创 socket.shutdownOutput()的理解

看某神视频的时候,发现不用socket.shutdownOutput()服务端就会被阻塞,阻塞在如下代码块中:后面想了下,其实在客户端代码中不调用socket.close()也会导致阻塞。说回到客户端,如果不加如下代码就会阻塞。因为服务器会一直等待客户端的输出。既然服务器阻塞了,客户端等待着服务器的输出,也会被阻塞,所以导致客户端和服务端都被阻塞。调用Socket.shutdownOutput()方法后,客户端输出的数据都将被发送,并加上 TCP 的正常连接终止序列(-1,也就是服务端终

2021-02-14 12:07:23 10527 7

原创 范式

主属性:码中的某属性码:属性集合K确定后,其余属性唯一(其余的属性 完全函数依赖于 K)1NF:需要属性是原子的2NF:消除了非主属性对 码 的部分函数依赖3NF:消除了非主属性对 码 的间接函数依赖BCNF:消除了主属性对 码 的间接或者部分函数依赖...

2019-12-09 20:21:23 92

原创 HashMap为什么线程不安全

HashMap由数组、链表、红黑树组成。在put操作的时候,会形成环,所以线程不安全。JDK1.7中,HashMap在resize的时候采用头插法,而JDK1.8之后采用尾插(并且引入了红黑树,还未看源码,暂时不讨论)。下面直接上JDK1.7的源码,扩容的时候:(其实很简单,你想想怎么把一个节点插入到链表头?)void transfer(Entry[] newTable, boo...

2019-12-04 20:27:13 177

原创 JDK动态代理

JDK动态代理需要接口,如下:public interface proxyInf { public void print(); }直接测试了:public class MyProxy implements proxyInf{ public static void main(String[] args) { proxyInf target = new MyP...

2019-11-25 15:20:45 64

转载 BeanFactory 与 FactoryBean

https://www.cnblogs.com/aspirant/p/9082858.html

2019-11-20 20:00:09 91

原创 使用wait(),两个线程交替执行

方法1:忘记从哪看的了,设计得比较繁琐。class Num{ int i = 1; boolean flag = false;}public class TestXX { public static void main(String[] args) { Num num = new Num(); new Thread(new Runnable() { @O...

2019-11-14 19:44:45 382

转载 JRE和 JDK的区别

参考地址:https://blog.csdn.net/qq_21808961/article/details/80647551 首先要谈到JVM,JVM就是解释执行java字节码文件的一个软件。 JRE:运行java代码所必需的。包括JVM和核心类库。因为JVM解释字节码文件时,需要核心类库的支持,不然读不懂(个人理解) JDK:包括JRE+JAVA开发工具(用来编译java代码...

2019-07-18 21:30:42 126

原创 基于libpcap的抓包与存储程序

环境Ubuntu14.04,  首先你得装好环境,很多大神都写了如何用libpcap抓包,但是没有写如何存储。程序如下:#include    #include  #include  int main()  { void packet_handler(u_char *user, const struct pcap_pkthdr *pkt_header, const

2017-10-12 20:00:24 1247

递归.pptx

超值资源,纯干货,不下载就亏了

2019-12-21

机器学习笔记

很好的机器学习笔记,不是我写的,我也是找到的,适合入门与查阅。

2017-10-14

空空如也

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

TA关注的人

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