- 博客(93)
- 收藏
- 关注
原创 Oracle死锁处理步骤
1标题:查询死锁会话id(SESSION_ID)SELECT p.PID,a.serial#,c.object_name,b.session_id,b.oracle_username,b.os_user_nameFROM v$process p, v$session a, v$locked_object b, all_objects cWHERE p.addr = a.paddrAND a.process = b.processAND c.object_id = b.object_id;
2022-02-28 18:48:00
867
1
原创 PostgreSQL转Mysql数据库
总结postgresql与mysql的差异,记录将postgresql替换为mysql做了哪些事情:PostgreSQL转Mysql数据库1. 修改数据库连接配置(省略)2. 解决mysql关键字key,explain,describe,require冲突3. 自增长类型由SEQUENCE改为mysql支持的IDENTITY;4. 更换数据类型:5. sql语法:1. 修改数据库连接配置(省略)2. 解决mysql关键字key,explain,describe,require冲突3. 自增长类型由S
2021-12-13 17:17:05
2302
原创 代码逆向生成表
逆向工程自动生成表-ACTable1.引入组件2. 配置组件2.1 配置mybatis2.2 配置启动属性启动类型追加包扫描3.模型加表注解4.启动完成在一些小型项目中或者新项目中,例如一些外包项目,可以通过代码注解配置,在项目启动时自动生成或更新表结构。现已经已有开源组件实现了这个目标。ACTable:官网地址。下面介绍如何引入到SpringBoot+MybatisPlus项目中。1.引入组件maven配置: <!--自动生成表--> <depend
2021-10-08 14:51:12
677
原创 Spring Cloud本地调试设置绕过Eureka
Spring Cloud本地调试设置绕过Eureka假设中台提供了一个service-A服务接口;应用端FeignClient会自动创建一个ribbon对象。那么在应用端(客户端)设置ribbon的服务列表为service-A服务接口启动的地址,并且设置eureka.enabled: false,则可以绕过Eureka.ribbon: ReadTimeout: 10000 ConnectTimeout: 10000 eureka: enabled: falseservice-A:
2021-05-17 12:00:10
951
原创 Docker加速器
阿里加速器,登录阿里云平台可以查看免费的“镜像加速器”加速器地址:https://7d3ozelh.mirror.aliyuncs.comwindows10:在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:{ "registry-mirrors": ["https://7d3ozelh.mirror.aliyuncs.com"]}...
2021-04-09 21:08:44
132
原创 类加载的双亲委派机制笔记
程序启动时,JVM需要将.class文件加载到内存中,形成class对象。根据需要加载的类的类型划分为三个加载器去实现加载,分别是:根类加载器(加载基础类,此类不可覆盖)扩展类加载器(加载基础类的扩展类,此类需要控制覆盖)系统类加载器(加载自己编写的类,爱怎么写怎么写)类文件加载到内存形成class对象是由findClass()方法实现的。而loadClass方法采用的所谓双亲委派模式,说白了是向上传递加载任务。...
2021-03-05 14:02:29
85
原创 ReenterLock源码解析
ReenterLock源码解析锁的基本思想锁的目的锁的实现思路ReentreLock实现1.state作为锁;2.当state=1时表示获得锁,=0表示锁空闲尝试获取锁的方式有两种:CAS,排队。3.双向链表的队列存储需要唤醒的线程ReenterLock的内存分配1.初始化2.队列维护空间3.队列初始化4.入队来看源码lock()tryAcquire/尝试获得锁addWaiter/添加队列成员acquireQueued/入队后再尝试获取锁unlock()锁的基本思想锁的目的要让同一时间只能有一个线程占
2021-03-03 16:55:59
638
原创 简谈Synchronized重量级锁底层原理
每个对象都有一个monitor,monitor相当于一把锁,保证同一时间只有一个线程能够进入临界区,即线程同步。上锁步骤大致如下:代码层javasynchronized void test(){}synchronized(o){ … }字节码ACC_SYNCHRONIZEDmonitorenter … monitorexit当有多个线程抢用monitor时,会进入_EnterList队列;_EnterList队列中的线程获得monitor时,owner指向
2021-03-02 12:44:04
255
原创 java的join方法
join方法作用:将指定线程加入到当前线程中。示例:将thread线程加入到main线程中:运行结果是:先等thread执行完,main再执行。但有一个问题,跟踪进入thread的join方法时发现,join方法内部是wait实现,按照语义应该是thread去wait,为何实际运行起来是main被阻塞了?public class TestThreadMethod { public static void main(String[] args) throws InterruptedExcept
2021-03-01 22:32:38
516
1
原创 排查mysql性能
排查mysql性能几个途径概览1. 整体sql执行频率查询1.1 查询当前连接的执行频率1.2 查询整个数据库sql的执行频率1.3 查询innodb存储引擎的执行频率2. 单条sql语句排查2. 慢日志排查2.1 实时查询2.2 预查询2.2.1 explain分析2.2.2 show profile分析2.2.3 trace优化器执行计划分析3.explain的坑例:概览1. 整体sql执行频率查询总体排查的三个命令都是通过status变量中查询整体select,insert,update,de
2020-12-12 00:22:12
419
原创 4.如何撤销合并
如何撤销合并思路步骤如果需要回退某个合并提交,怎么办?思路首先要知道合并的原理(可查看《3.Git合并的原理》)如下图是分支合并的情况(节点为提交,术语称为快照),假设需要在master上剔除iss53分支,则需要回退到C2快照,(找到iss53是从哪里切出来的,从根拔除)那么如何找到iss53是从哪个节点切出来的呢?别急,在《3.Git合并的原理》中有介绍到,分支引用的原理。每个分支都有一个文件去做快照提交记录,例如图中的A分支,在.git\logs\refs\heads目录下,对应A文件中保
2020-08-28 00:03:26
1124
原创 3.Git合并的原理
Git合并的原理官网文档 Git-分支合并记录三种指针的原理【图1】head【图2】remotes\origin【图3】logs\HEAD是否存在相同分支切出来的分支修改互相影响的问题?答:不存在官网文档 Git-分支合并已经清晰地描述了合并的原理。https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6
2020-08-27 23:59:43
1535
原创 2.Cherry pick引用时解决了冲突下次合并分支还会冲突吗?
2.Cherry pick引用时解决了冲突下次合并分支还会冲突吗?了解了cherry pick与create patch的区别(上一章《Cherry pick与Create Patch的区别》),再来校验两者在引用时解决冲突后,再次合并被引用分支,是否还会提示冲突?期望:合并不再有冲突结论:还是会再次提示冲突原理:分支之间的合并在解决冲突之后,会产生新的提交快照记住这次冲突解决方案,并指向两个合并的父节点,再次互相合并时是不会再提示冲突的;而应用cherry pick快照解决的冲突时,创建的提交
2020-08-16 00:18:08
718
原创 1.Cherry Pick与Create Patch的区别
Cherry Pick与Create Patch的区别结论实验场景1:应用时无冲突场景2: 应用时产生冲突使用cherry pick使用patch场景3:产生冲突,并且有其他文件的变更原理结论1.应用无冲突时cherry pick与patch一样,只应用变更的内容;2.区别在于cherry pick解决冲突时相会对冲突文件进行分支合并(每个commit的引用都可当作分支),而patch只应用变更的内容。2.1.cherry pick解决冲突时只引用提交中的文件内容,不是全部分支合并。我们来进行三组
2020-08-15 23:31:37
2687
1
原创 编写自己的系统命令
自定义系统命令1 从gitbash进入系统根目录:2 创建快捷命令文件3 向文件中添加两个快捷命令:4 运行时加入此命令5 重启gitbash 输入myTestCmd,即可看到效果!假设你已经开开心心地写好了一个shell脚本,双击运行,或者命令行运行都ok了,但是觉得每次都要找到这个脚本的位置,太麻烦,那么可以自定义为系统命令。只要敲一个命令,就能启用你的脚本。自定义系统命令步骤:假设你想键入"myTestCmd"命令,就能跑你的脚本;假设你的脚本已经写好,放在D:/env/test.sh 。1
2020-05-18 17:28:46
382
原创 git提交信息校验格式
老大前两天要求git提交时填写的信息必须是以某个格式提交,比如改bug需要以[fixbug]开头。但是有时候一懒就忘了加这些前缀了。所以想到git钩子,可以在提交之前写一个校验脚本。git项目下的 .git\hooks\commit-msg文件内容更改为: test "" != "$(grep '^\[.*\]' "$1")" || { ech...
2020-04-30 18:49:56
1189
原创 职场燃料-正确的学习方法
正确的学习方法一、前言二、学习这件小事2.1 学习全貌图2.2 学习的属性和方法:2.2.1 学习的目的——可见的价值2.2.2 学习的方向——聚焦价值2.2.3 学习的舒适度——甜蜜区一、前言你有没有一段时间会像我一样,觉得要学的东西很多,东学学西看看,努力了却对书中内容没有印象,无法吸收。无法快速突破当前的技术瓶颈或者绩效瓶颈。那很有可能是我们在做大量的无用功,当我看了孙圈圈的《请停止无效...
2020-04-05 14:36:43
216
原创 带你玩转Maven自动化部署
在开发团队数据较多,有发布交集的迭代开发时,版本的命名,依赖版本的修改,会加重我们的工作负担。发布版本改版本号这种既没有技术含量,又费神的工作不应该让机器去完成吗?(依赖版本号写错,有时候会造成麻烦)接下来我将带你一起完成maven自动化部署。
2020-04-04 23:27:35
572
原创 带你搭建自己的nexus私服
搭建nexus三部曲一、巧妇难为无米之炊,先要具备nexus服务安装包。二、安装启动三、大功告成,捷足先登一、巧妇难为无米之炊,先要具备nexus服务安装包。1. 官网下载 2.百度网盘下载
2020-03-29 12:13:37
603
原创 git合并时找不回文件的诡异问题
git解决冲突合并时文件被覆盖(已解决)问题描述问题根源认识git commit与git merge commit 的区别问题描述在git合并代码时,常需要解决冲突,不熟悉git的原理,就会陷入问题影响工作效率。我一同事在合并代码时第二次遇到了这样的问题:合并代码后找不到文件,还没push到远程,本地也没找到删除遗失文件的记录,再次pull要合并的分支也拉取不到被revert掉的文件。后来仔...
2019-12-13 00:11:08
621
原创 《远见》职场燃料
职场中值得去学习的技能和值得不断累积的经验,可以使我们适用于不同的公司,面对职场中常有的问题,能轻车驾熟。如下是三大职场燃料的总结脑图。以此共勉。...
2019-12-07 22:30:29
2037
转载 Redlock(redis分布式锁)原理分析
Redlock:全名叫做 Redis Distributed Lock;即使用redis实现的分布式锁;使用场景:多个服务间保证同一时刻同一时间段内同一用户只能有一个请求(防止关键业务出现并发攻击);官网文档地址如下:https://redis.io/topics/distlock这个锁的算法实现了多redis实例的情况,相对于单redis节点来说,优点在于 防止了 单节点故障造成整个服务停...
2019-06-10 21:13:15
1641
原创 Spring Cloud笔记-Eureka
1.Eureka解决的问题:实现服务高可用2.Eureka实现原理:(1)服务注册发现服务实例向注册中心注册(推送元数据),并主动定时发送心跳(lease-renuwal-interval-in-seconds=30)(2)消费者获取服务消费者实例向注册中心获取服务实例清单,并主动定时获取清单(registry-fetch-interval-seconds=30)3.服务...
2019-06-08 22:32:08
129
原创 多线程协作-复习
多线程的协作,只会出现在同步过程中。1.wait/notify线程靠对象监视器来同步协作,所以是这样实现的:监视对象obj作为锁,有wait和notify的监视方法。线程使用obj.wait() / obj.notify()来互相通知协作。wait()可以设置等待时间,不设置的话只有等待通知才会进入运行状态。notifyAll()notify()notify通知了之后,要等...
2019-06-05 14:49:45
207
原创 多线程同步异步-复习
一个线程对象,被启动一次就创建了一个新线程。每个线程的共有资源是此线程对象持有的对象,如下图的thread-a/thread-b/thread-c调用single对象的方法,即持有single对象资源,这是共有的。每个线程有自己的方法栈,各自执行,就是异步,需要协同执行就是同步。对对象加锁在被持有对象(共享对象)中定义同步语句,如single对象,而不是在线程对象中定义。除非线程对象中有...
2019-06-05 14:05:03
735
原创 多线程状态-复习
1.创建创建有两种方式:1继承Thread,2实现Runnable。其实继承Thread,也会实现Runbable。new Thread去建立一个线程,线程的资源是new Thread中传入的对象。2.状态线程的状态有NEW , RUNNABLE , WAITING , TING_WAITING ,BLOCKED, TERMINATED问题:NEW时初始化了线程的名称,资源;还没...
2019-06-05 10:46:10
112
原创 django在windows上的安装
在官网上就有完整的教程——django官网如何在windows安装。直接按照官网上的操作,注意与python版本对应,否则会出现各种错误。windows适用版本:window 7,8,10本文描述的是window 7环境.接下来直接上步奏:1.python安装python下载地址:https://www.python.org/downloads/windows/. 现阶段官网推荐3.0以上...
2019-05-29 11:07:35
795
原创 Redis哨兵部署(Windows)
Redis主从Redis哨兵1.Redis安装略1.Redis主从配置:在Redis安装目录下找到redis启动配置文件——redis.window.conf文件,复制两份作为从服务的启动文件。修改两个从文件的配置内容,设置port和slaveofport 6380slaveof 127.0.0.1 6379masterauth yourpassword #若有密码这里需...
2019-05-21 10:44:45
2076
原创 多线程之读写锁
之前没真正使用读写锁,看到别人对读写锁的解释总感觉一头雾水。今天亲自敲代码实验之后,才明了,原来如此。网上没有一篇文章是能描述出自己理解的样子,所以将自己的思路记下来。先提出疑问,边自答边找思路,有了思路,再回头去运行一下代码,就清晰明了了。如果你急着想要一句话概括读写锁,那我会告诉你:读锁是加在读方法里的,是为了方便线程在运行写方法的时候阻止其他线程执行这个读方法,而没有写操作时读锁被忽略。...
2019-05-09 19:09:50
1211
原创 RabbitMQ安装(CentOS Linux7)
一、安装 Erlang1.1 准备yum updateyum install epel-releaseyum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git wget wxBase.x86_64安装包官方地址erland和rabbi...
2019-04-03 10:57:37
133
原创 SpringBoot外部配置优先级
外部文件的配置:a=123b=567application.yml中有:a=000c=888整合之后的配置信息是:a=123b=567c=888理念:为了在外部能控制配置内容Spring 官方指南
2019-04-01 17:17:19
380
原创 Spring cloud ribbon配置负载均衡
本章先介绍ribbon实现概览,ribbon均衡策略,之后再介绍如何在配置文件里指定某个负载均衡。一、ribbon实现概览通过restTemplete请求一个服务service-A,在没使用ribbon之前,需要uri指定服务器地址,如http://localhost:8801/getUser。使用ribbon之后,服务器名代替地址进行访问,如http://service-A/getUser。...
2019-03-31 23:14:58
447
原创 查看Zuul的路由映射信息
背景:在使用zuul进行路由配置时,经常会添加或修改路由。通过zuul的两个智能端点routes、filters可以对路由和过滤信息进行查看,还可以更新路由。下面我们一起来看一下如何使用。分析:实现智能端点,需要使用Spring boot 下的actuator,zuul已默认集成starter-actuator,可查看依赖包,如下图所示。实现:actuator默认只暴露health,i...
2019-03-29 18:23:01
2688
转载 IP地址,子网掩码、默认网关,DNS服务器是什么意思?
IP地址,子网掩码、默认网关,DNS服务器是什么意思?(一) 问题解析问: IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能打开网页,这是为什么呢>答: IP是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地...
2019-03-29 15:32:28
309
原创 Load balancer does not have available server for client在Zuul中报错的解决办法
问题:Spring Cloud 的路由Zuul,在访问对应的路由时,uri返回500错误,并且检查服务器报错:解决办法:pom文件中的引用"spring-cloud-netflix-eureka-client"改为starter的 “spring-cloud-starter-netflix-eureka-client”解决思路:看提示错误堆栈发生在netfix client进行loa...
2019-03-28 17:03:50
12658
8
原创 P2P投融资业务实现原理
P2P平台作为中介,提供银行投融资交易记录,实际交易在银行端进行。这样可以避免企业携款走人。而专款专用是为了防止资金击鼓传花,产生虚假资金流。业务举例:P2P平台发了一个信用贷项目XXX,在融资人还款(银行扣除融资人应还本息,称为结算)后,p2p平台将投资人投资交易记录推送给银行,银行再划账给投资人。此步骤为还款。那么结算与还款之间,是以信用贷项目ID进行关联的。至于为什么资金安全,请看下面两...
2019-03-28 10:05:56
606
翻译 URI与 URL的区别
摘自RFC 3986URI, URL, and URNA URI can be further classified as a locator, a name, or both.URI 可以进一步分为定位器,定位名。The term “Uniform Resource Locator” (URL) refers to the subset of URIs术语“统一资源定位器”(URL)指...
2019-03-26 11:34:29
206
原创 添加module后,父级pom被覆盖,结构目录异常
奇怪了,为什么添加模块,是这个样子的然后父级的pom文件被替换掉了。观察了一下,发现正常的添加弹窗应该有如下的提示:猜测应该是子级模块的pom对父级模块没有写正确。...
2019-03-25 16:18:40
606
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人