2 软件开发随心记

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

浅谈MySQL的各种锁

提起MySQL的锁,大家都不会佰生,这是个老生常谈的话题。本文将对MySQL/innodb常见的锁做一个大致的分类,并结合SQL实例进行分析。#锁的模式S锁(共享锁)又称读锁,若记录被某事务加上了S锁,允许其它事务对其加S锁,但不允许其他事务再加X锁。加锁方式:select…lock in share modeX锁(排他锁)又称写锁,若记录被某事务加上了X锁,不允许其他事务再加S锁或者X锁加锁方式:select…for update简记:读读可以并行,读写/写写互斥IS(意向共享锁)和I

2020-08-02 22:22:21

redis 缓存常见设计

前言缓存是日常开发常用的技巧,可以有效的加速应用的读写速度,同时也可以降低后端的负载。而加入缓存之后同时也会带来一些其他问题,本文主要交流一下面对这些问题的常用做法。缓存的基本使用场景QPS较高的情况,用于加速请求响应:即使是单条后端数据查询足够快(例如 select × from user where id = ?),依然可以考虑使用缓存,redis缓存每秒可以完成数万次读写,并且如果提供批量的操作的话,可以提高整个io链的响应时间。开销大的复杂计算:一些复杂的操作或者计算(例如大量联表操作,一

2020-08-02 22:14:37

【浅谈幂等】

幂等概念介绍具体场景解决方案总结       系统在复杂的【网络环境】和【不可控的人为操作因素】下,往往会产生重复操作的场景。为保障【系统整体的健壮】,我们会要求相关操作结果无论受到多少次重复调用,也都返回相同的响应结果。       概念介绍       名词解释:幂等源自于数学,如f(x

2020-07-26 23:26:51

MySQL数据库及InnoDB存储引擎的日志文件

船头上迎面而来的海风特别有劲道但却总有种苦咸的味道,他睁着通红的眼睛,紧绷着嘴。尽管眼前一望无垠的海面平静如清晨的托雷维耶哈盐湖湖面,但他的心仍然翻涌着昨晚暴风雨中的激浪。这是离开陆地,在海上航行这么久以来最可怕的一晚。船帆在暴风中被撕开一道口子,桅杆眼看着就要被折断,他赶紧指示水手长去抢救。巨浪打在他身上,如果不是大副及时的帮助,他也许已经被冲得撞在舱门上粉身碎骨。恐怖吗?恐怖,这也许是他在海上离死亡最近的一次。但黄金、香料、珠宝和宝石的影子在他脑中浮现,对财富的欲望战胜了恐惧。也许是幸运女神的眷顾,

2020-07-26 23:17:54

一枚程序猿的闲暇思考与感悟

一. 故事分享        看到一则这么个故事,引起了个人的一些思考:        有个年轻人,抓了一只老鼠,卖给药铺,他得到了一枚铜币。他走过花园,听花匠们说口渴,他又有了想法。他用这枚铜币买了一点糖浆,和着水送给花匠们喝。花匠们喝了水,便一人送他一束花。他到集市卖掉这些花,得到了八个铜币。       一天,风雨交加,果园里到处都是被狂风吹落的枯枝败叶。年轻人对园丁说:“如果

2020-07-26 23:02:56

学习究竟是什么

这个世界充满不确定性,很多事情就算你特别努力而且使用了正确的方法也未必能够成功,但“学习”不是这样。学习是一件让人充满掌控感的事:你可以做到日日精进,你会感到快乐。学精第一学广第二创造第三策略第四终成无为一,学精第一怎样成为某一领域的顶尖高手?现在所有人都知道一个标准答案:练习一万小时。但对练习这件事情来说,真正的关键根本不是训练时间的长短,而是训练的方法。这一套练习方法就是,“刻意练习”。可以简单总结成以下四点:1)只在“学习区”练习;心理学家把人的技能分为层层嵌套的三个圆形区域:最内

2020-07-21 20:25:10

领域驱动开发-重读随想

一、前尘往事作为程序员,一直以来,我们都被不断新增、且不断改变的需求折磨的欲仙欲死。于是,寻找心中的那枚“银弹”的梦想,成了我们孜孜不倦追随各路大神的动力。记得2年前,一个偶然机会被“好的软件就应该是DDD(领域驱动设计)的”所安利,于是将Vaughn Vernon的大作《实现领域驱动设计》请回了家。当然,如大部分人一样,不久这部神作就变成了“枕头”。其中原因,一方面是这套书理论性太强,另一方面(主要)是入门姿势不对,被一堆概念如“界限上下文(Bounded Context)”、“通用语言(Ubiquit

2020-07-20 01:32:17

初识领域驱动设计(DDD)

初识领域驱动设计(DDD)领域驱动设计(DOMAIN-DRIVEN DESIGN),简称DDD,最早是由美国的Eric Evans在2004年提出,主要为了解决应对日益复杂的业务逻辑导致开发困难、软件代码难以维护的问题而提出的软件开发思想。顾名思义,领域驱动设计的核心思想就是对现实世界的业务进行建模,通过领域模型来设计和构造代码,并且代码能够与时俱进,随着业务的发展和开发人员对模型的深入理解而不断完善,以应对不断变化的业务开发迭代。DDD从概念的提出到现在已经有10多年的时间,一直不温不火,直到近年来微

2020-07-19 09:33:43

浅谈Spring AOP的原理和应用

浅谈Spring AOP的原理和应用1.AOP简介Aop(Aspect Oriented Programming)大家应该都知道这是面向切面编程思想,主要能够为我们在不影响原来的功能的前提,为软件横向拓展功能。简单来说,把对象中一些公用的行为抽取出来,减少代码冗余性,还可以将业务代码和系统功能代码分离开。以下,我对Spring AOP进行一系列探讨,(注意:Aop是一种思想,以下主要对Spring Aop技术的探讨的)2.Aop使用的场景1)权限验证2)缓存3)异常统一处理4)日志系统5)信

2020-07-11 17:02:41

浅析Java方法反射原理

1. 前言1.1 目标 java程序员日常开发经常使用到反射技术,所以本文就是要讲解一下java的方法反射,让大家更好了解反射的性能.1.2 读者收获2. 代码示例2.1 示例代码public class ReflectionTest { public static int count =0; public void test(){ new Exception((count++)+" : print stackTrace ").printStackTrace()

2020-07-05 21:42:05

《程序员修炼之道--从小工到专家》读书笔记

《程序员修炼之道--从小工到专家》读书笔记注重实效的哲学-让你的用户参与与权衡注重实效的途径-可撤销性基本工具小结前段时间看完了《程序员修炼之道–从小工到专家》这书。该书没有涉及什么很深奥的技术,或者有特别复杂的设计,都是一些来自经验的总结。它涉及的内容比较广,涵盖了整个软件开发过程中需要注意的地方,从需求分析,到程序编写测试重构,再到项目管理都涉及。它提倡程序员应该拥有良好的素质,必须有正确的观念,良好的习惯。注重实效的哲学-让你的用户参与与权衡 作为一个优秀的程序员,编写出完美的产品是我们一生

2020-06-27 18:05:53

Mockito的使用及原理浅析

Mockito的使用及原理浅析在微服务横行的年代,一个服务可能依赖了若干个其它服务,而这些被依赖的服务,又极可能依赖了别的服务,于是构成了一个复杂的依赖链。而日常开发中,经常会苦恼于某某上游接口没数据而所使得UT达不到预期的目标,所兴现在已经有了多种Mock Toolkit,很好的解决了这一痛点。比较常用的有EasyMock,JMockit,Mockito,PowerMock等,而本文主要介绍Mockito的简单使用,并对其实现原理进行简单分析Mockito的使用通常情况下,我们会在UT里使用@Moc

2020-06-26 21:54:14

数据重压下的一点随想

记得刚来唯品的时候,遇到一位信仰基督教的产品同事,这里说到基督教,没有特别的含义,或者这是对这位产品最贴切的形容词吧,毕竟现在他已经献身基督教,把基督教当做第一职业,也可能是因为这是我第一次遇到信仰基督教的产品吧。每次跟他讨论需求,他开口第一句话总是,这个需求可大可小,在我的记忆中,好像他所有的需求都是可大可小。当时确实不太明白,为什么需求还能可大可小,怎么搞个产品还能搞得跟一年四季变幻,热胀冷缩的样子。作为一个追求美好的程序员,只能带着呆呆的问号,完成了他那一个个可大可小的需求。 ...

2020-06-22 00:15:47

用java编写基于selenium的方式抓取豆瓣读书书籍内容

用java编写基于selenium的方式爬取豆瓣读书书籍内容爬虫的早期感想处理思路顺序需求选型实践源代码selenium设计模式访问入口爬虫的早期感想很久以前,生活中使用c#和java分别写过网页游戏外挂,通过语言中内置的浏览器控件进行爬取数据,并发送新的指令,非常有意思,既能研究爬虫相关技术又能实践在休闲生活中。后面也有在工作中,定时爬取中国天气预报官方信息,提供给前端主页显示天气信息。处理思路顺序需求有朋友需要帮忙收集豆瓣读书中的书籍信息,根据传入的书丛地址,获取书丛中的书籍的信息、封

2020-06-21 08:20:02

IT搬砖员如何认识能力圈并如何突破自我

  这两天我老婆追剧<<怪你过分美丽>>,周五刚好陪着她看了两集,内容让人耳目一新,特别是主演秦岚,给我留一下深刻印象,特此我还特地百度了一下秦岚,从《还珠格格》里温婉柔弱的知画到《一帘幽梦》自卑自怜自暴自弃的绿萍,再之后《延喜攻略》里温婉动人,和蔼大气的富察皇后到现在的莫向晚,所饰演的每一个角色,都是新鲜的,身为一个演员,她并没有停留在原地,一直在不断的尝试和突破并提升自己,展示给观众不一样的人设,突破自己的能力圈,努力活出自己最美的样子。  从影视回归到自己生活圈,受疫情影响,

2020-06-14 22:36:29

开发常用算法-哈希算法

前言程序员对哈希算法应该都不陌生,比如业界著名的MD5、SHA、CRC等等;在日常开发中我们经常用一个Map来装载一些具有(key,value)结构的数据,利用哈希算法O(1)的时间复杂度提高程序处理效率,除此之外,你还知道哈希算法的其他应用场景吗?1. 什么是哈希算法?了解哈希算法的应用场景前,我们先看下散列(哈希)思想,散列就是把任意长度的输入通过散列算法变换成固定长度的输出,输入称为Key(键),输出为Hash值,即散列值hash(key),散列算法即hash()函数(散列与哈希是对hash的不

2020-06-14 16:04:44

数据库分库分表策略,如何分库,如何分表?

  导语:随着线下店业务发展,线下店开店数越来越多,价格系统的数据增长非常快速,部分单表已达到3亿之多,为了适应业务的发展,考虑对价格系统进行分库分表,因此特别了解了一下分库分表的相关知识,根据相关资料,简单做了一些总结。  大家知道,关系型数据库本身比较容易成为系统的瓶颈点,虽然读写分离能分散数据库的读写压力,但并没有分散存储压力,当数据量达到千万甚至上亿时,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在以下几个方面:数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会降下

2020-06-13 13:27:30

重构之重新认识

**重构**?每次听到这个词,头脑里面闪现的就是“推倒重做,代码重写”,那到底重构是什么玩意?所谓“外事不决问谷歌,内事不决问百度,房事不决问天涯”,百度百科上面的解释是:重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。说白了就是在不改变系统功能的前提下,调整系统内部结构,优化系统性能,让这个系统能够更好的满足客户需求,同时,希望通过重构让系统重换青春,多蹦跶几年。一、为什么要重构?其实上面已经描述的很清楚,说简...

2020-06-09 20:00:36

vscode插件开发

文章目录vscode插件开发背景基础环境激活插件扩展能力实现功能打包发布安装使用应用的展望vscode插件开发背景在日常的开发工作中经常会遇到需要写一些类似的代码,一般可以通过添加代码片段提升效率,但仅仅在在自己的电脑上添加代码片段不利于共享,且连续创建关联性文件往往需要自己手动处理。如在flutter的bloc中创建一个bloc模块意味着有对应的event、state、repository和provider,有的时候关联到页面又需要定义page、screen、model等,很多时候我们需要将这些代码

2020-06-08 20:03:25

Bug终结之路 --《有效的单元测试》读后感

最近一段时间,看了《有效的单元测试》(Effective Unit Testing)这本书。这是一本对单元测试从重要性到该如何编写和构建都进行了详细阐述的技术书籍,其作者Lasse Koskela,是一名资深敏捷技术实践专家、敏捷教练、培训师、顾问和程序员,具有数十年计算机程序设计和开发经验。该书虽没有如《测试驱动开发》这样的名气,但作者在书中总结的一套理论和实践框架,大多都非常实用,能结合到我们日常开发过程中。单元测试有什么好处,我想对于有一定开发经验的程序员来说,都能说上一通,但应该怎么做才能高效的完

2020-06-01 02:04:54

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取