- 博客(16)
- 收藏
- 关注
原创 go编程中容易忽略的技术点
go in action》已经写的很好了,但是还有很多内容没有涉及到,如果我们不明确,可能会在工作中犯错误。我们离一个gopher还是有很大的差距,需要不断练习。
2025-01-11 16:17:05
182
原创 非典型Spring框架的使用和理解
开始还以为是bean不存在,但是拿明显有的bean,也获取不到,调试时发现applicationContext为空,代码如下。后来想想,同事写的虽然丑陋,但是能用,而我写的优雅,但是半吊子水平,运行报错而不自知,也强不了多少,还得补充知识,提升技术水平。由于我对于Spring框架理解有偏差,使用了Hutool的SpringUtil工具去获取静态类,却一直没有获取到,导致报错,加班改代码。一个是对框架理解有偏差,未能正确使用框架。找了半天,发现放的包不对,没有被Spring框架扫描到,看配置文件就明白了。
2025-01-07 15:04:04
170
原创 mysql的mvcc多版本并发控制简单理解
在读取时读取当前版,最 新提交的事务后的数据,读已提交,没有脏读。在更新时,就比较麻烦了,要加下此时的版本号,在更新时和当前版比较,如果无变化则提交事务,有变化则需重新读,然后提交,可以看如下示例理解。是的,可以这样理解。所以它存在乐观锁的有优缺点,适合读的多,更新少的情况,mvcc会存在一些完失败回滚的情况,而在oracle的行锁中,要不不能开始事务,要不开始获取锁,操作成功,不会存在这中情况。所以我们在mysql操作中,是不需要显示使用锁的,这就大大降低了使用的难度,这也是mysql易用的一方面。
2024-12-09 17:08:58
138
原创 Srping中事务理解
简单来说,就是一个方法调用另一个方法,被调用方法对事务的需求。比如要不要以事务的方式运行,要不要加入事务,要不要新建事务。记住,不存在事务嵌套,只存在加入。Spring默认事务是Propagation.REQUIRED。数据库提交和回滚,有点类似git操作。spring中事务的传播机制。
2024-12-08 16:59:50
137
原创 回溯算法,递归和迭代
递归在算法中很常见,比如下面两个例子。A-program// 二叉树递归版本visit(root){ if root==null; return visit(root.left) // 左树 visit(root) // 根 visit(root.right) // 右树} 斐波那契数列的递归版本:B-program// 递归版本f(n){ if n=1 ;return n return n+f(n-1...
2021-04-09 10:50:50
1330
原创 二分区间的左右边界-Leetcode 33题
二分法可以分为二分查找,和二分区间,这两个是有区别的,一定要分清[l,r]k=0// 闭区间,需要等号for l<=r {// l<=mid<r mid = (l+r) / 2 if check(s[mid]) k=mid break else if s[mid] > target { r = k }else{ l = k+1 }}二分区间,则分为左边界和由边界,左边界:[0,k] [k+1,n-1
2021-04-07 09:56:18
320
原创 LinkedList的删除结点操作(golang)
LinkedList的删除结操作func removeNthFromEnd(head *ListNode, n int) *ListNode { // 链表,从头结点遍历 cur :=head length:=0 for cur !=nil{ length++ // 为什么这样不能删除结点 cur = cur.Next } dummy:=&ListNode{0,head} cur =dumm
2021-04-03 00:17:39
312
原创 leetcode14,最长公共子串
leetcode14:最长公共子串:笨拙的原始解法,编程中遇到太多的bug,觉得有很多边界问题func longestCommonPrefix(strs []string) string { if len(strs) <1 { return "" } rune_strs :=make([][]rune,len(strs)) // 初始化一个值 for i:=0;i<len(strs);i++{ if len(s
2021-04-02 09:40:03
205
1
原创 动态规划问题,输入方案,股票买卖问题,背包问题
1.输出股票的买卖时机,使利润最大,当然可能存在多种方案,只要输出一种即可 这是需要缓存F数组,F[i] =max,则是i天卖出,然后去找之前买入时机就可以了func maxProfit(prices []int) []int { // 输出买卖时机 // [0,0]:表示没有交易,[1,3]:表示第1天买入,第3天卖出 n :=len(prices) if n < 2{ return []int{0,0} } f :...
2021-03-25 09:01:03
193
原创 golang语言的二分法查找和插入代码
二分法查找,在有序数组中,查找应该使用此方法,注意for循环的退出条件。func binary_search(arr []int,target int) int { n := len(arr) if n< 1{ return -1; } l,h :=0,n-1 // 要等号,不要会有边界问题 for l <= h { mid := (l+h) /2 if arr[mid] == target{ return mid }else if arr[
2021-03-24 16:59:17
261
原创 迪杰特斯拉算法伪码
Dijteska算法求1-->n的最小距离辅助数据N : 所有点集合S : 已计算距离的结合M[i][j]: i-->j的距离值,-1表示不可达D[]:距离数组D[1] =0,D[i] = +inf,{i!=0}S= {s1}Count = NWhile(--Count>0){ min = +inf idx = 0 for s in S { for i in (N-S) ...
2021-03-20 22:31:51
1390
原创 golang中使用for range语句修改切片问题
以下golang代码会报错:package mainimport "fmt"func main() { sli :=[]int{1,2,3,4,4} for idx, val:=range sli{ if val == 4{ sli =append(sli[0:idx],sli[idx+1:]...) } } fmt.Printf("%v\n",sli)}panic: runtime error: slice bounds out of range [5:4]go
2021-03-20 19:09:53
792
原创 图的若干表示方法
1、[[src,dst,weight]][[0,12,28],[5,6,39],[8,6,59],[13,15,7],[13,12,38],[10,12,35],[15,3,23],[7,11,26],[9,4,65],[10,2,38],[4,7,7],[14,15,31],[2,12,44],[8,10,34],[13,6,29],[5,14,89],[11,16,13],[7,3,46],[10,15,19],[12,4,58],[13,16,11],[16,4,76],[2,0,12],[15
2021-03-18 08:59:07
114
原创 树和图的算法
public void bfs(TreeNode node){ print(node.val); // 子树,第二层 print(node.left); print(node.right); List list; list.add(node.left); list.add(node.right); while(list.size()>0){ List list2; for(Node node list){ .
2021-03-14 21:52:20
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人