- 博客(47)
- 资源 (2)
- 收藏
- 关注
原创 select....for update会锁表还是锁行
如果查询条件用了索引/主键,那么 select … for update 就会进行行锁如果是普通字段(没有索引/主键),那么 select … for update 就会进行锁表。
2022-10-23 11:09:47
4408
1
原创 mysql之重复记录查询及去重
0. 前言在实际的数据库设计过程中,很少通过索引组合键唯一索引来保证数据唯一性。很多是通过代码逻辑(先查询再插入)去保证唯一性,这个在并发很少的情况下是没有问题的,一般用在配置类的数据库表。不过在一些并发高的场景下,就会出现多线程问题,因为先查询再插入并非原子操作,另外当程序出错情况也会导致在数据库里存在重复记录。这个时候程序员就会被叫来背锅,首要的当然是处理掉已产生的重复数据保证业务正常运行,再排查问题原因。本文主要以mysql为例记录如何处理重复记录。1. 查找重复记录select * fro
2021-06-08 11:33:24
2507
原创 缓存穿透、击穿、雪崩到底是啥
相信了解过缓存的伙伴们,也应该也经常听到“缓存穿透、缓存击穿、缓存雪崩”这几个词。最近笔者在实际开发过程中也使用了缓存,也理解到这些是我们在使用缓存的时候都要去考虑的问题,本文就围绕这几个词给大家展开分析下。
2021-06-01 19:39:00
242
原创 Git分支管理规范
Git分支管理规范1.背景2.分支管理3.流程规范1.背景目前笔者所在公司的开发团队基本都采用Git来做代码版本控制,为了更有效地协同开发人员之间,以及开发、测试、上线各环节的工作,公司也出具了对应的git分支管理方面的规范。规范主要目的是提高开发协同效率,针对不同场景git管理策略肯定会所有不同。最好的不一定是最合适的,在具体实践过程中不同团队会结合其内部实际情况,在基本满足公司git管理规范的前提下做适当的调整,形成一套最合适其团队的版本管理规范。本文主要介绍笔者所在开发团队在实践过程中形成的分支管
2021-04-01 19:29:21
2751
原创 SpringCloud使用feign过程中遇到问题----持续更新中
1、首次访问超时问题原因: Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。而首次请求往往会比较慢(因为Spring的懒加载机制,要实例化一些类),这个响应时间可能就大于1秒了。解决方法:配置Hystrix的超时时间改为5秒hystrix.command.default.execution.isolation.thread.timeoutIn...
2020-04-18 22:19:49
427
原创 IDEA自动删除类中无用的import包(快捷键、配置、批量删除)
前言最近公司对所有上线项目提出了更严格的sonar静态扫描要求,在处理的过程中,发现项目中很多类有无用的import包,这会被sonar检测为code smells(代码异味)。可项目中已经存在很多这样的类文件,一个个点进去修改太花费时间。于是就研究了以下几种方法。手动快捷键Ctrl + Alt + O配置自动清理Ctrl + Alt + S 打开设置然后,进行如下配置操作:...
2020-04-13 22:54:50
17328
2
原创 Mysql系列-Join多种用法
sql优化中常用的方法之一就是将表关联或子查询改为join的用法,如上图所示join的用法有很多种,导致有很多小伙伴经常搞混。本文将通过具体例子介绍SQL中的各种常用Join的特性和使用。准备数据: CREATE TABLE `tb1_ept`(`id` INT(11) NOT NULL AUTO_INCREMENT,`deptName` VARCHAR(30) DEFAULT NULL,...
2020-04-06 16:09:10
655
原创 设计模式系列之抽象工厂
1.定义提供一个接口,用于创建 相关的对象家族 。抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。2.实现public class Abstract...
2019-05-09 10:09:07
479
原创 设计模式系列之工厂方法
1.定义定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。2.实现很多实现代码与上一篇所讲简...
2019-05-06 10:10:03
296
原创 设计模式系列之简单工厂
1.定义在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么...
2019-05-05 16:08:34
477
原创 设计模式系列之单例模式
1.定义确保一个类只有一个实例,并提供该实例的全局访问点。使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。2.实现Ⅰ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueIn...
2019-05-05 16:01:38
342
原创 微信小程序中页面跳转同时使用tabbar和navigator出现问题
问题描述:最近刚接一个微信小程序外包项目,遇到一问题:页面需要navigator链接跳转一个页面,tabbar也需要导航到这个页面,最开始还没有添加tabbar的时候,navigator都能够正常跳转,但是当加上tabbar的时候,tabbar能跳转,navigator就点击后没反应。控制台也没报错。确定逻辑实现没问题后,开始查navigator、tabbar的属性,怀疑是有什么属性问题,通过观...
2019-04-29 15:55:59
2376
原创 为什么mysql默认隔离级别设置为可重复读
一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为>:串行化 > RR > RC >读未提交在SQL标准中,前三种隔离级别...
2019-04-01 16:56:36
8081
8
转载 MySQL如何建立JSON字段的索引
转载地址:https://yq.aliyun.com/articles/303208?utm_content=m_37669概述MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能来对JSON对象中...
2019-03-27 16:29:15
9765
1
原创 同一局域网内,pc之间无法ping通的原因
相信很多人都遇到这个情况,无论是现在的校园网还是公司内网等等。小编最近也是碰到过这个该死的问题,折腾一番后才解决,所以决定把这个问题出现的原因总结出来,分享给大家:windows防火墙默认设置的是不让别人ping通的,即ping服务被禁止了解决方法:步骤:找到 “控制面板” → 系统和安全 → Windows防火墙 → 高级设置 → 入站规则 → 文件和打印机共享(回显请求 - ICMPv...
2019-03-27 16:02:35
17584
原创 计算机软考软件设计师知识点总结:控制需求变更
按照现代项目管理的概念,一个项目的生命周期分为启动、实施、收尾三个过程。需求变更的控制不应该只是项目实施过程考虑的事情,而是要分布在整个项目生命周期的全过程。为了将项目变更的影响降低到最小,就需要采用综合变更控制方法。综合变更控制主要内容有找出影响项目变更的因素、判断项目变更范围是否已经发生等。进行综合变更控制的主要依据是项目计划、变更请求和提供了项目执行状况信息的绩效报告。(1)项目启动阶段...
2019-03-27 13:33:24
352
原创 大型系统设计核心技术(第二篇)---分布式事务处理方案
开发单体应用时,相信大家都有使用过数据库的本地事务,也就是在同一个数据库中,可以允许一组操作要么全都正确执行,要么全都不执行。这里特别指出了本地事务,也就是说明数据库事务只支持同一个数据库的操作。可随着技术和业务发展,一方面随着系统业务量增大,数据库存储东西越来越多。当达到一定数据量时,为了应对高并发,就会出现分库分表需求。另一方面,随着服务化方案的推广,越来越多的公司团队将原有的大项目拆分成一...
2019-03-27 12:00:27
729
原创 计算机软考软件设计师知识点:软件项目开发计划
1.引言1.1编写目的【阐明编写开发计划的目的,指出用户对象。】1.2项目背景【包括:a.项目的委托单位、开发单位和主管部门.b.该软件系统与其他系统的关系。】1.3定义【列出本档中用到的专门术语的定义和缩写词的原文。】1.4参考资料【可包括:a.项目经核准的计划任务书、合同或上级机关的批文;b.文档所引用的资料、规范等;列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源。】2...
2019-03-26 16:23:13
385
原创 计算机软考软件设计师知识点:软件可行性研究报告
1.引言1.1编写目的【阐明编写可行性研究报告的目的,指出读者对象。】 1.2项目背景【应包括:a.所建议开发软件的名称.b.项目的任务提出者、开发者、用户及实现软件的单位.c.项目与其他软件或其他系统的关系。】 1.3定义【列出文档中用到的专门术语的定义和缩写词的原文。】 1.4参考资料【列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:a.项目经核准的计划任务...
2019-03-25 21:44:35
682
原创 软件工程师必看的20个知识点
前言:软件工程师考得东西相对不难,但知识点面比较广,因此考前需要把考试要求的知识点逐一过下(我就是这样考过来的哈哈)1 针对面向对象的设计与分析:为了让软件有更好的可维护性,重用性以及快速开发, 简短的OOAD与它的SOLID原则对于每一个软件工程师来说都是该牢记的。2 软件品质因素:软件工程的好坏与软件的品质因素是绝对关联的。请在开发过程中深 刻的理解这一点。3 数据结构与算法:深刻...
2019-03-25 21:30:53
1932
原创 支付宝小程序学习篇之文件结构
一、基本结构二、详细说明1.jsonjson文件用来对代码进行各种配置,比如app.json,就是对整个小程序进行了相关配置。// app.json{ "pages": [ "pages/todos/todos", "pages/add-todo/add-todo" ], "window": { "defaultTitle": "Todo A...
2019-03-25 15:17:39
1573
原创 vue路由控制结合后端基于角色token校验的方案
一、具体需求:开发一套有学生、教务员、教师不同用户身份的系统,身份不同所拥有的权限资源也不同。要求用户必须登录,特定用户还需进行认证,才能拥有权限。采取了前后端分离的开发模式,主要使用技术栈:springboot web部分+vue(路由和axios部分)+token校验二、详细步骤第一步 在vue路由定义中多添加自定义字段requireAuth、role、auth:第二步 设置登录拦截...
2019-03-25 08:37:22
861
原创 SpringBoot 版本、JDK 版本、Maven版本三者兼容问题
SpringBoot 版本JDK 版本Maven版本小于1.2.063.01.2.063.2+大于1.2.0小于2.0.073.2+大于等于2.0.083.2+目前基本使用2.0.0以上版本的springboot。
2019-03-23 17:58:48
6766
原创 关于github的高级搜索技巧
GitHub 作为目前火的开源社区,深受众多开发者喜爱。GitHub 以自由开放的定位吸引了相当多的个人开发者和企业,不断发布和更新相当好用的软件和工具。作为开发者,面对如此海量的 GitHub 项目,究竟怎样才能这个平台发现一些优秀的软件和工具。秉着这样的疑问,我收集和总结了下面这几个搜索技巧。
2019-03-23 17:18:55
2697
1
原创 短信验证码的接入
前言:短信验证码对于大家来说并不陌生,它是一种有效的验证码系统,通过发送验证码到手机让使用者能够安全登陆。不论是网络购物还是大型网站,都能够提供手机短信验证码的功能,越来越多的人们都开始使用手机购物和手机登陆APP,短信验证码的使用也越来越多,它可以大大提高使用的准确性和最大的保证购物的安全性。不知你的项目是否有这短信验证码需求,今天就让我给大家介绍下如何接入短信验证码服务一、短信验证码平台...
2019-03-23 00:45:41
1701
原创 聊聊Java8新特性
java8新特性1.Java 8 默认方法2.Optional 类3.Stream1.Java 8 默认方法默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个default关键字即可实现默认方法。默认方法语法格式如下:public interface Vehicle { default void print(){ System.out....
2018-12-31 15:48:20
617
原创 关于多环境配置几种方法
在实际项目开发过程中,我们往往需要区分开发,测试,预发布,生产等环境,而这几个环境的配置也会有些不同。今天我给大家介绍下用spring实现这种需求,常见几种方法:一.使用yml文件进行区分这种方法又可以细分为两种方法:1.使用application.yml 配置共同的参数,并确定当前运行环境(也可以在启动部署包时指定,例如:java -jar test.jar --spring.profil...
2018-12-30 15:46:11
1658
原创 关于navicat连接mysq出现如下错误解决方法
Navicat Premium 12系列 连接MySQL数据库时会出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的错误:解决方法:首先通过命令行进入mysql,依次输入以下命令:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EX...
2018-12-30 13:29:35
1138
原创 python 3.X系列报错:No module named 'urllib2'
查阅Python官方文档里面已有说明:Note The urllib2 module has been split across several modules inPython 3.0 named urllib.request and urllib.error. The 2to3 tool willautomatically adapt imports when converting y...
2018-12-15 13:39:38
12717
2
原创 大型系统设计核心技术(第一篇)---分布式订单号生成策略
一、使用UUID生成1.定义UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。2.用法在java使用UUID非常简单,在jdk的工具类中已经有生成UUID的类可以直接使用,如下:代码实例:运行结果:可以看出在单...
2018-12-15 11:17:58
3594
1
原创 分分钟搞定!Spring Boot返回JSON数据
在web开发中,返回json数据是最常见的交互形式。有很多第三方的jar包供我们使用,不过在springboot中更加简单!接下来让我们一起看看怎么使用springboot返回json:1.创建springboot的项目这里建议大家可以到 https://start.spring.io/ 中创建一个maven模板的是springboot 的demo项目2.加入依赖<parent&g...
2018-12-14 13:32:22
2393
原创 端口启动冲突处理
今天给大家分享一个小白在开发过程中经常会遇到到一个端口冲突的问题,其实都是因为每台主机的一个端口只能对应一个进程,如果已经启用了一个端口进程,则该端口就绑定了该进程,其他进程再尝试绑定,则会出现端口冲突的问题。接下来我就以端口8080冲突为例,告诉大家遇到这种问题该怎么处理:首先我们按下win+r,再输入cmd进入cmd窗口,紧接着在输入netstat -aon|findstr “8080”,...
2018-12-11 16:39:39
683
原创 mybatis使用笔记:谈谈#与$两种传参方式
在使用mybatis的过程中,我们的传参方式有#{}和¥${}两种,很多时候我们都是推荐使用#{}这种方式,接下来我们就一起来看看这两者的区别与使用的场景:#{}方式能够很大程度防止sql注入。因为#{}这种方式SQL语句是经过预编译的,它是把#{}中间的参数转义成字符串。$方式无法防止Sql注入。因为这种方式是将值传入后再编译sql语句。$方式一般用于传入数据库对象,例如传入表名。!!!...
2018-12-10 15:39:58
687
1
原创 webstrom使用笔记:如何关闭eslint
在使用webstrom进行项目开发的过程中,有时我们不想对我们的静态代码部分进行强校验,可以选择关闭eslint,操作如下:1.首先按住ctrl+alt+s打开settings进行设置2.在settings页面搜索框中输入eslint3.将enable前面的打勾去掉即可。...
2018-12-10 07:46:55
1641
原创 Linux面试记录(一)
今天跟大家分享下自己遇到的几个linux的面试题以及自己回答:1.有使用过linux?主要用它来做什么linux是长期运行稳定的操作系统,一般都用来做(web,nginx,app)服务器linux拥有c语言的编译环境,一些软件没有软件包,需要用它来编译得到软件包2.linux用哪些常用的指令pwd 查看当前路径cd 进入目录ls 查看ps查看进程su -u切换到管理员文件:c...
2018-11-29 12:31:49
1539
原创 git实操笔录二:Git常用命令
git作为最常见的分布式版本管理工具,掌握其常用的命令,可以让你用得更顺畅。以下是本人通过查阅官网以及其他大佬的文章,熬夜整理出来的。大家可以收藏起来,方便查阅一、新建代码库#在当前目录新建一个git代码库git init#新建一个目录,将其初始化为git代码 库git init [project-name]# 下载一个项目和它的整个代码历史git clone [url]二、...
2018-11-29 12:09:19
269
原创 java中单例模式
单例模式属于设计模式中的一种,使用单例模式的类允许只存在一个对象实例。在java开发中,有好多种不同单例模式的写法,而且运用的场景也各不相同,因此在java面试中属于高频考点,面试官会让面试者手写单例模式代码,所以提醒大家特别注意下。这里我就记录下常见的几种单例模式写法:饿汉模式(静态常量)【高并发可用】优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。缺点...
2018-11-28 19:18:08
263
原创 git实操笔录一:删除所有提交历史记录,成为一个新仓库
在使用git的过程中,大家有时会复制一个git仓库项目作为模板进行新项目开发,这样老项目提交的历史记录也同样存在新项目中,我们该怎么去掉这些历史记录呢?让这个新项目成为一个干净的新的项目,可以看看我的操作:1.创建新分支并且切换到新分支中: git checkout --orphan latest_branch2. 将master的文件都拉取添加到新分支 git add -A...
2018-11-27 19:22:22
725
原创 ImportError No module named setuptools解决
安装pip的过程,执行python setup.py install,报错:“ImportError No module named setuptools”,大概意思是说缺少setuptools这个模块。安装setuptools:下载setuptools工具压缩包并解压cd pypa-setuptools-eb92fc5071bf //依据你的解压目录名而定3.python setup....
2018-11-21 19:54:56
9195
3
原创 windows上pip安装及使用详解
pip类似yum,主要用于安装Python包非常方便。本次详细介绍pip的安装、以及使用方法。1、pip下载安装配置1.1 pip是依赖python的,首先检查下windows机器上有没有安装python,或者有没有添加到环境变量中,如果都没有需要安装或者加入环境变量,详细步骤请看: https://blog.csdn.net/m0_37774696/article/details/843...
2018-11-21 19:49:58
142462
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人