- 博客(39)
- 资源 (2)
- 收藏
- 关注
原创 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
762
原创 XmlBeanFactory已过时 / 错误: 发现警告, 但指定了 -Werror
在编译spring源码时,居然出现了奇怪的现象:1.gradle编译时,过期的方法居然导致编译错误!2.编译后有日志: 错误: 发现警告, 但指定了 -Werror我的目录结构:在spring源码中新建了自己的gradle测试项目。所以查看spring根目录的build.gradle后发现:去掉红色框框部分就好了。...
2022-04-26 14:42:06
965
原创 Device /dev/sdb1 excluded by a filter
pvcreate之前,不要格式化,也就是不要执行:mkfs.ext3 /dev/sdb1
2021-12-22 17:46:12
1167
原创 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
1132
原创 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
971
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
1474
原创 jvm垃圾回收
1.如何判断对象是垃圾?1.1 引用计数法给每个对象加一个计数器,对象被引用则计数器+1。当对象的计数器不为0时,该对象就可以被看作垃圾,等待回收。缺点:循环引用:A引用了B,B引用了A。这个方法在主流虚拟机里未被使用。1.2 可达性分析算法我们可以将对象之间的互相引用看作一个有向图。从几个起点(被称作GC Roots)开始搜索,就知道哪些对象是被引用了,那么另外那部分没被引用的对象就可以被视为垃圾,等待回收。GC Roots主要有以下几种:1.被栈上引用的对象。比如局部变量
2021-08-27 20:02:02
121
原创 两个线程交替打印数字(六种方法,总有一款适合你)
今天脑子里突然冒出这个问题,于是自己写了下。方法1:利用volatile进行同步volatile是可以同步的,这个关键字保证了内存可见性。那么只要你的操作是原子的就可以保证线程安全。什么叫原子的呢?falg = false;这种就属于原子的。而i++这种不属于原子操作。所以我们思路如下:利用一个volatile修饰的变量,控制线程调度。代码如下:public class Test2 { static int i = 1; static volatile boo
2021-08-26 00:48:36
5841
3
原创 Thread.sleep()为什么要抛出中断异常
当然是为了让你的代码具有响应中断信号的能力!目录从场景说起响应中断关闭线程池从场景说起假设sleep()方法不抛出中断异常,也就是线程没有中断响应能力,会怎么样?考虑如下场景:线程A:sleep中线程B:A别睡了,要关机啦(向A发送中断信号)线程A:sleep中这样好吗?这不好。因为线程A对外界情况没有感知能力。中断就起到了这样的作用:让线程具有感知的能力。sleep(),wait()等方法都需要你去处理中断异常,也就是需要你的代码能够响应中断。响应中断
2021-08-22 12:00:25
11100
原创 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
325
原创 redo log详解
不知道大家没有想过mysql是如何保证事务里的数据不丢失的?没错,就是通过redo log(下文简称redo)。注意,绝对的数据不丢失是做不到的。我们所谈论的redo log,是针对事务而言。我们只要能保证事务中的数据不丢就行,说简单点就是redo保证了事务的原子性和持久性。简单解释下:原子性:要么都做了,要么都没做。不要只做一半。比如两个人互相转账,不允许出现一个人转了,而另一个人没收到钱的情况。也就是两条update要么全部执行,要么都不执行。持久性:数据写到磁盘了。当然这个说法不严谨,
2021-08-15 21:56:50
12847
9
原创 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
107
原创 趣谈IllegalMonitorStateException——notify()/notifyAll()与wait()的用法
多半是在wait()和notify()的使用中产生的吧?如果是,请接着往下读。那么本文谈谈如何正确使用notify()/notifyAll()和wait(),理解了原理,再去修改你的代码肯定就没错了。首先明确以下结论:(可以跳过,直接看底下小女孩的故事)1.synchronized(A)可以锁住对象A,也就是拿到对象A的对象锁(monitor锁),使A在任意时刻只被一个线程拥有。什么是对象锁呢?简单理解就是每个对象都有一把锁,这个锁在同一时刻只能被一个线程占有,哪个线程拿到就是谁的。很像
2021-08-08 10:52:43
370
原创 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
1655
原创 xml 字符串 格式化
公司前端展示的xml太丑了。于是我在后端代码里加了些换行和制表符。总体思路: 利用<tag>与</tag>的数量差异就能判断出应该每行首部应该留出多少空白格。/** * 格式化XML字符串 */ public static String formatXml(String originStr) { if (originStr == null) { return null; ...
2021-07-10 10:36:26
759
原创 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
130
原创 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
113
原创 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
97
原创 leetcode36 有效的数独
题目:请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。注意: 一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规则,验证已经填入的数字是否有效即可。示例 1:输入:boar...
2021-05-16 18:47:58
832
原创 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
90
原创 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
120
原创 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
103
原创 leetcode22 括号生成
思路:1.(吐槽)这一题让你生成有效括号,又不告诉你什么是有效括号。那你让我做什么?那么到底什么是快乐星球(不对,有效括号)?这个问题的答案,其实就是这题的灵魂了:'('一定要有闭环才行。=============version 1 只打败了10%的人===========我一开始也没想很清楚,想着先把所有括号生成出来再说。那么经典的暴力搜索开始:可以看到我是在最后生成了所有的字串后,再去字串判断是否符合题意(if(deep==2*n){...}的代码块内)。if(rightC.
2021-05-01 13:37:31
128
原创 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
104
2
原创 leetcode17 电话号码的字母组合
思路:dfs这种题懂的都懂,不懂的讲了也不懂。听哥一句劝,先去把这个专题搞明白吧。这个资料也是我写的https://download.youkuaiyun.com/download/u011403239/12045003?spm=1001.2014.3001.5503初学者不易理解,老玩家又觉得简单,重点是这东西没法讲。建议找个草稿纸画一画归并排序与二叉树dfs的过程。代码如下:class Solution { public List<String> letterCombina
2021-04-30 14:38:49
93
原创 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
96
原创 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
83
原创 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
77
原创 leetcode3无重复字符的最长子串(java)
题外话:决定把算法捡起来,没想到leetcode国际服居然上不去了,这垃圾宽带。只能转战国服了。初步解题思路:遍历入参s,并维护一个map,key为s[i],value为i。为什么需要这个map呢?当然是为了便于后面查找哪个字符跟当前坐标的字符重复了,如果重复了,假设map.get(当前字符)=dupIndex,下次搜索区间应该从leftIndex = dupIndex+1开始。这样我们保证了搜索区间里的数据是不重复的。所以不用担心map被覆盖的问题,因为太早的重复数据已经没意义了(这一
2021-04-28 00:04:19
173
原创 socket.shutdownOutput()的理解
看某神视频的时候,发现不用socket.shutdownOutput()服务端就会被阻塞,阻塞在如下代码块中:后面想了下,其实在客户端代码中不调用socket.close()也会导致阻塞。说回到客户端,如果不加如下代码就会阻塞。因为服务器会一直等待客户端的输出。既然服务器阻塞了,客户端等待着服务器的输出,也会被阻塞,所以导致客户端和服务端都被阻塞。调用Socket.shutdownOutput()方法后,客户端输出的数据都将被发送,并加上 TCP 的正常连接终止序列(-1,也就是服务端终
2021-02-14 12:07:23
11414
7
原创 范式
主属性:码中的某属性码:属性集合K确定后,其余属性唯一(其余的属性 完全函数依赖于 K)1NF:需要属性是原子的2NF:消除了非主属性对 码 的部分函数依赖3NF:消除了非主属性对 码 的间接函数依赖BCNF:消除了主属性对 码 的间接或者部分函数依赖...
2019-12-09 20:21:23
107
原创 HashMap为什么线程不安全
HashMap由数组、链表、红黑树组成。在put操作的时候,会形成环,所以线程不安全。JDK1.7中,HashMap在resize的时候采用头插法,而JDK1.8之后采用尾插(并且引入了红黑树,还未看源码,暂时不讨论)。下面直接上JDK1.7的源码,扩容的时候:(其实很简单,你想想怎么把一个节点插入到链表头?)void transfer(Entry[] newTable, boo...
2019-12-04 20:27:13
214
原创 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
80
转载 BeanFactory 与 FactoryBean
https://www.cnblogs.com/aspirant/p/9082858.html
2019-11-20 20:00:09
126
原创 使用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
427
转载 JRE和 JDK的区别
参考地址:https://blog.youkuaiyun.com/qq_21808961/article/details/80647551 首先要谈到JVM,JVM就是解释执行java字节码文件的一个软件。 JRE:运行java代码所必需的。包括JVM和核心类库。因为JVM解释字节码文件时,需要核心类库的支持,不然读不懂(个人理解) JDK:包括JRE+JAVA开发工具(用来编译java代码...
2019-07-18 21:30:42
171
原创 基于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
1300
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人