自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

X先生说

腾讯TEG研发管理部小小后台攻城狮一枚,负责腾讯敏捷产品研发平台TAPD的基础功能的开发和维护,热爱技术,喜欢分享,欢迎与我交流~

  • 博客(40)
  • 问答 (1)
  • 收藏
  • 关注

原创 Mac如何将darktable语言设置为中文

问题在网上找了好久都没找到方案,找到的都是linux和window的,一开始按linux的设置方案,但是mac下/usr/share/locale/zh_CN/LC_MESSAGES/目录却无法写入,关闭了sip也不行。解决方案研究了好久,终于发现解决方案,主要是要找到mac下darktable的语言目录位置,在/Applications/darktable.app/Contents/Resources/share/locale/zh_CN/LC_MESSAGES下,把对应的语言文件复制进来就好了。具

2021-12-05 20:37:33 367

原创 PHPStorm多项目下Test Sources Root设置

问题最近用Lumen来做单元测试的时候遇到一个问题,就是用PHPStorm开了多个项目(用户侧和管理侧),这时候设置了Test Sources Root,会发现测试用例的命名空间PHPStorm无法识别。而如果直接是一个项目就没有这个问题。解决方案研究了好久,终于发现解决方案,可以实现多项目下PHPStorm对这些目录的识别。先设置为Test Sources Root在设置页面进行编辑,部署命名空间prefix。...

2021-08-27 10:31:53 527

原创 MySQL中事务的持久性实现原理

前言说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。在之前的文章我们已经了解了MySQL中事务的隔离性的实现原理,今天就继续来聊一聊MySQL持久性的实现原理。当然MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。说明MySQL的事务实现逻辑是位于引擎层的,并且不是所有的引擎都支持事务的,下面的说明都是以InnoDB引擎为基准。

2020-10-30 17:26:57 1995 2

原创 深入理解MySQL中事务隔离级别的实现原理

前言说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。今天我们就先来聊聊MySQL中事务的隔离性的实现原理,后续还会继续出文章分析其他特性的实现原理。当然MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。说明MySQL的事务实现逻辑是位于引擎层的,并且不是所有的引擎都支持事务的,下面的说明都是以InnoDB引擎为基准。定义隔离

2020-10-29 18:29:10 543 1

原创 干货!如何平稳用户无感知的完成系统重构升级

前言我们在实际开发系统的过程当中,很有可能会遇到需要进行系统重构升级的情况,需要重构的原因可能是之前的设计不合理,导致现在维护起来非常的困难,也有可能是现在的业务发展非常迅速,需要进行分库分表了又或者之前用的是单机的本地的文件存储,现在需要用到统一的网络存储。总而言之,就是当初的系统设计已经不符合现在发展需要了,需要进行重构和升级。而这其中会可能会涉及到代码逻辑的变更,数据存储的变更(如DB或者文件存储等)或者第三方接口的变更。在这样一个新旧的切换过程当中,怎么样才能让用户无感知,平稳地进行过渡?有人

2020-09-08 09:46:38 1400 1

原创 你应该了解的MySQL锁分类

MySQL中的锁锁是为了解决并发环境下资源竞争的手段,其中乐观并发控制,悲观并发控制和多版本并发控制是数据库并发控制主要采用的技术手段(具体可见我之前的文章),而MySQL中的锁就是其中的悲观并发控制。MySQL中的锁有很多种类,我们可以按照下面方式来进行分类。按读写从数据库的读写的角度来分,数据库的锁可以分为分为以下几种:独占锁:又称排它锁、X锁、写锁。X锁不能和其他锁兼容,只要有事务对数据上加了任何锁,其他事务就不能对这些数据再放置X了,同时某个事务放置了X锁之后,其他事务就不能再加其他任何

2020-09-02 19:41:51 329 1

原创 保障服务稳定之服务限流

一、前言对于一个系统而言,最重要的要求之一肯定就是服务的稳定性了。一个不稳定的系统可能给企业带来巨大的损失,包括经济和品牌等等方面的损失。我们都希望系统能稳定可靠地对外提供服务,响应快,不宕机,不故障。但是在实际情况中,常常会遇到一些异常的情况,这就考验我们系统的稳定性了。今天就来讲讲保障服务稳定性的手段之一的服务限流。二、解决的问题我们系统运行过程中有时候可能会遇到突发异常大流量,如果系统突然涌入大量请求,超过了系统的负载能力,就会导致系统轻则响应慢,经常超时,重则导致整个系统宕机,因此这就要求

2020-07-28 20:04:38 272

原创 一文读懂数据库中的乐观锁和悲观锁和MVCC

锁的本质https://blog.csdn.net/whlloveblog/article/details/38024211https://zhuanlan.zhihu.com/p/87624947锁的实现思想MySQL中的锁

2020-07-21 20:21:44 679

原创 MySQL 连接查询超全详解

1 作用在数据库中join操作被称为连接,作用是能连接多个表的数据(通过连接条件),从多个表中获取数据合并在一起作为结果集返回给客户端。例如:表A:idnameage1A182B193C20表B:iduidgender11F22M通过连接可以获取到合并两个表的数据:select A.*,B.gender from A left join B on A.id=B.uididnameagege

2020-07-03 16:35:52 867

原创 linux上强大的字符串匹配工具详解-grep

grep 是什么grep 是用于匹配输入数据中符合条件的字符串的工具,其匹配过程支持正则表达式,因而匹配能力非常强大。grep 可以从文件或者标准输入设备中读取数据,若不指定任何文件名称,或是所给予的文件名为 -,则 grep 会从标准输入设备读取数据,否则从文件读取数据进行匹配。怎么用grep 的命令格式如下: grep [option] pattern file [file2…]能匹配什么我们来看看 grep 能匹配什么,也就是 pattern 参数支持哪些形式。普通全匹配这也是最普

2020-05-19 19:53:25 1271

原创 好用的shell通配符

前言我们在使用 shell 执行任务的过程中,常常会遇到需要处理一批数据的情况,如果我们一个一个的传递参数就会非常的麻烦,这时候就需要用到 shell 的通配符功能了。例如rm *.txt可以删除当前目录下所有的 txt 文件。功能shell 通配符起到的是拓展参数的功能,注意 shell 通配符是由 shell 处理的,而不是用到参数的命令或者语句处理的例如对于 rm *.txt,she...

2020-05-06 19:59:13 205

原创 git cherry-pick:挑选指定commit来合并

前言在我们使用Git进行日常开发的过程中,常常需要进行的操作就是代码合并了。常见的操做命令是 git merge branch-name,这个命令会合并的是整个分支的commit,然而有时候我们需要的可能是仅仅某一个 commit或者某几个commit,这时候就需要用到git cherry-pick了。git cherry-pick的作用就如它的名字一样,精心挑选。我们可以精心挑选其他分支上的...

2020-04-29 20:02:15 3012

原创 MySQL索引详解之索引的存储方式

前言很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用过程中也一知半解,导致没有办法准确高效地使用索引,甚至存在不少误用的情况,导致使用索引反而降低了系统的性能。下面就以MySQL索引为对象,通过几篇文章来带大家好好的学习下索引的知识。索引的数据结构索引的存储方式索引的利弊以及高效使用数据存储方式上篇文章我们了解了索引的数据结构,下面我们再来了解另外一个概念...

2020-04-21 18:53:46 5874

原创 MySQL索引详解之索引的数据结构

前言很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用过程中也一知半解,导致没有办法准确高效地使用索引,甚至存在不少误用的情况,导致使用索引反而降低了系统的性能。下面就以MySQL索引为对象,通过几篇文章来带大家好好的学习下索引的知识。索引的数据结构索引的存储方式索引的利弊以及高效使用什么是索引数据库索引指的是数据库管理系统中一个排序的数据结构,以协助快速查...

2020-04-21 18:53:22 7068 1

原创 MySQL索引详解之索引的利弊以及高效使用

前言很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用过程中也一知半解,导致没有办法准确高效地使用索引,甚至存在不少误用的情况,导致使用索引反而降低了系统的性能。下面就以MySQL索引为对象,通过几篇文章来带大家好好的学习下索引的知识。索引的数据结构索引的存储方式索引的利弊以及高效使用索引利弊在前面的文章,我们学习了索引的数据结构和存储方式,下面再来理解索引...

2020-04-21 18:53:01 386

原创 Cookie安全问题与防范

前言Cookie 往往用来存储用户的某些相关信息,例如身份,配置等。Cookie 使用起来非常简单和方便,然而如果不加注意,它又可能成为我们网站的安全隐患,带来极大的风险。那么不正确地使用 Cookie 有哪些安全问题呢?Cookie 安全问题Cookie篡改这是最容易出现的情况,也就是直接修改 Cookie 的内容。我们知道,Cookie 是存储在客户端的,所以里面的内容可以通过浏览器...

2020-04-21 18:47:31 2334

原创 缓存那些事之常见问题与解决方案

前言缓存应该是技术人员最常见的一个词了,但是或许不是所有人都能准确的说出缓存本质是什么,又适用于什么情况,可能遇到哪些问题,应该怎么来解决。下面我就分三篇文章来给大家详细介绍下缓存相关的知识。疏漏不足之处,也请指正,不胜感激。《缓存那些事之初识缓存》《缓存那些事之缓存更新、失效以及内存淘汰策略》《缓存那些事之常见问题与解决方案》缓存问题与解决方案缓存确实有千般好,可以有效提高我们系统的...

2020-04-21 18:45:58 174

原创 缓存那些事之缓存更新、失效以及内存淘汰策略

前言缓存应该是技术人员最常见的一个词了,但是或许不是所有人都能准确的说出缓存本质是什么,又适用于什么情况,可能遇到哪些问题,应该怎么来解决。下面我就分三篇文章来给大家详细介绍下缓存相关的知识。疏漏不足之处,也请指正,不胜感激。《缓存那些事之初识缓存》《缓存那些事之缓存更新、失效以及内存淘汰策略》《缓存那些事之常见问题与解决方案》缓存更新策略缓存更新策略是指在数据需要发生变更的时候,如何...

2020-04-21 18:45:35 645

原创 缓存那些事之初识缓存

前言缓存应该是技术人员最常见的一个词了,但是或许不是所有人都能准确的说出缓存本质是什么,又适用于什么情况,可能遇到哪些问题,应该怎么来解决。下面我就分三篇文章来给大家详细介绍下缓存相关的知识。疏漏不足之处,也请指正,不胜感激。《缓存那些事之初识缓存》《缓存那些事之缓存更新、失效以及内存淘汰策略》《缓存那些事之常见问题与解决方案》什么是缓存要了解缓存,首先要知道缓存的本质是什么。简单来说...

2020-04-21 18:45:14 184

原创 Git 忽略文件的四种方式

Git 提供了四种方法来忽略文件,分别适用不同情况,如下:1、全局忽略忽略规则由本机所有仓库共用,配置方法如下:编辑 ~/.gitconfig 文件,[user] name = yourname email = [email protected][gui] encoding = utf-8[core] excludesfile = ~/.gitignore最后两行是新...

2020-04-21 13:05:53 2765

原创 nginx 编译新模块

前言nginx 安装好后如果想要添加新模块,并不像 PHP 那样直接编译,然后在配置文件里直接引入那么简单,nginx 需要重新编译。下面介绍如何添加。添加新模块以 http_sub_module 为例查看nginx编译安装时安装了哪些模块$ nginx -V复制上面的 configure 参数进入之前编译 nginx 时的目录配置 nginx configure 参...

2020-04-21 12:56:06 155

原创 简单权限控制-8421法则

前言在系统开发过程中,最常见的一个需求就是权限控制了,大到整个系统的用户权限的管理,小到某个状态下操作权限的判断。其中最常见的操作就是权限的添加、删除、鉴权等,那么有什么简单的方法可以去控制这些权限呢?对于复杂的权限控制可以采用 RBAC 方案,这里向大家推荐一种简单方法,来处理简单的权限控制,涉及二进制、8421码以及按位与等知识。模拟需求假设要对文章进行权限管理,分为新增、查看、修改...

2020-04-21 12:50:35 2674

原创 依赖倒置和控制反转

依赖倒置定义依赖反转原则(Dependency inversion principle,DIP)是指一种特定的解耦形式,使得高层次的类不依赖于低层次的类的实现细节,依赖关系被颠倒(反转),从而使得低层次类依赖于高层次类的需求抽象。该原则规定:高层次的类不应该依赖于低层次的类,两者都应该依赖于抽象接口。抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。在传统的应用架构中,...

2020-04-21 12:47:44 1260

原创 PHP环境gettext使用指引

gettext简介gettext是一种国际化与本地化系统,在类Unix系统中编写多语言程序时经常被使用。gettext的一个常用的实现版本为GNU gettext,1995年发布。源代码中所有需要多语言支持的(需要翻译的)字符串都修改为使用gettext函数包装起来。为了方便也可以使用下划线_。比如:echo gettext('示例');echo _('示例');gettext需要先...

2020-04-21 12:44:37 951

原创 如何在lumen里进行接口限频

背景日常接口在使用过程中,如果不进行限频,很容易被突发异常的集中流量冲垮整个服务,故对web提供的接口都应该进行频率限制。laravel本身提供了限频的中间件ThrottleRequests,但是lumen框架里没有这个中间件,故这里说明下如何进行引入。引入流程新建文件 app/Http/Middleware/ThrottleRequests.php,文件内容为<?phpn...

2020-04-21 12:42:00 385

原创 如何解决lumen数据库读写分离主从延迟问题

背景如果数据库使用的是读写分离的DB,在日常使用的时候由于主从同步延迟,会出现写之后立刻读,没办法读到最新的修改。例如我们一开始插入了一条name='张三'的数据,这里用了写连接,写到了主库,然后后面的代码又要去查name='张三'的数据有多少条,这时候lumen默认会用读连接,也就是读到了从库,这中间若是由于主从同步延迟,导致从库还没有更新到最新数据,就会出现读取不到主库的修改。下面说明下...

2020-04-21 12:39:33 490

原创 如何在 ThinkPHP 中整合 Laravel Eloquent ORM

前言之前维护的旧项目采用的 ThinkPHP 3.2,后面学习了 Laravel 后,觉得 TP 的 Model 功能没有 Laravel 强大和方便,并想把 Laravel 里的 Eloquent 用在 TP 里。好在 Laravel 的 ORM 是独立成包的,可以用于符合要求的其他 PHP 系统中。整合要使用的是 illuminate/database 。安装 illuminate...

2020-04-21 12:35:29 915

原创 常见PHP框架CSRF防范方案分析

什么是CSRFCSRF(跨站请求伪造)是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令。网上有很多相关介绍了,具体攻击方式就不细说了,下面来说说Laravel和Yii2是如何来做CSRF攻击防范的。Laravel CSRF防范本次对Laravel CSRF防范源码的分析是基于5.4.36版本的,其他版本代码可能有所不同,但原理是相似的。Laravel通过中间件app/...

2020-04-20 16:06:14 333

原创 分布式session一致性解决方案

分布式Session一致性问题在早期的时候,很多网站由于用户规模较小,都是采取的单机部署的模式,只用一台服务器来承载用户的请求,这时候Session是存在同一台服务器上,所以能够很容易实现会话跟踪和保持。然而随着用户规模的扩大,单机部署模式已经无法承载所有用户的请求了,这时候人们自然而然想到用多台服务器来处理用户的请求,用户的请求会先到达负载均衡,然后再被转发到某个具体应用服务器上进行处理。这时...

2020-04-20 16:00:02 148

原创 怎么让PPT分享不那么枯燥?

What我们工作后可能经常会需要做一些分享,而PPT是我们借以表达自己想法的好工具,一份好的PPT应该能帮助演讲者清晰明了地传达信息给听众,帮助他们更好的理解演讲者想表达的内容。然而我们常常看到的情况却是演讲者在上面讲得口干舌燥,而听众在下面听得昏昏欲睡,结束了之后也无法想起来自己到底听到了什么,只觉得枯燥无比,为什么会出现这种情况?How这主要从两个方面来考虑:硬件软件硬件方面指...

2018-12-10 19:24:16 24

原创 小组分享会规划

分享目的学习新知识,完善自我体系提升沟通能力、表达能力、自信有效提升工程师在专业领域的经验解决工程师最常见问题--技术瓶颈活跃团队气氛,增进交流拓展每个人的视野希望所有参与人都能明确分享目的,特别是新人,不要只关注自己付出的代价, 以及计算别人分享对自己的好处, 更要关注这样的小分享对每个同学软性能力的培养, 以及在这个过程中“教-学”互动带来的收益。当整体目的一致了,...

2018-11-30 15:15:02 32

原创 Git 忽略文件的三种方式

Git 提供了三种方法来忽略文件,分别适用不同情况,如下:1、全局忽略忽略规则由本机所有仓库共用,配置方法如下:编辑 ~/.gitconfig 文件,[user] name = yourname email = [email protected][gui] encoding = utf-8[core] excludesfile = ~/.git...

2017-10-31 09:41:21 30

原创 中文文案排版纠正器

项目地址 https://github.com/ricoa/copywriting-correct演示地址 https://copywriting-correct.ricoo.top描述统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。比较以下排版:排版1LeanCloud数据存储是围绕AVObject进行的.每个AVObject都包含了与...

2017-04-25 13:06:21 21

原创 通过 SS 代理加快 GitHub Clone 速度

前言平时我们 Clone GitHub 的仓库的时候,会发现速度极慢,只有几 KB/s,在克隆较大仓库的时候,更是可能要一天时间,这对于开发者而言是不能接受的,故这里教大家一个提速的方法,通过 SS 代理加快 GitHub Clone 速度。根据自己 Clone 仓库的方式选择下面对应的处理方式。HTTP 或 HTTPS 方式 Clone1、打开自己的 SS 代理2、通过命令行...

2017-04-16 17:15:31 54

原创 提高效率之 Listary:Windows 快速定位/搜索神器

介绍推荐给 Windows 的同学一款快速定位/搜索辅助软件:listary。每次看到 Mac 的 同学用 Alfred 快速切换软件,心里就各种羡慕,现在我发现了 Windows 上也有如此强大功能的软件:Listary。它可以快速打开文件、文件夹、软件,也可以运行自定义命令,同时也支持搜索引擎搜索功能,也可以对文件进行收藏,打开最近浏览记录等等功能。值得一提的是,Listar...

2017-04-12 19:05:15 43

原创 如何把要想保存的文章转为 Markdown 格式

前言网上我们看到一些好文章的时候,总会想要把它转载过来,或者保存到自己的 Markdown 文档里,但是这时候就有一个问题,那就是网页上的文章都是 HTML 格式的,如何能够保存成 Markdown 格式呢?本文将告诉你一个简单的办法。环境Chrome 浏览器或其他可以审查元素的浏览器(可自行搜索不同浏览器如何审查元素)。在线 HTML 转 Markdown 工具,我使用的是 http:...

2017-04-06 09:30:24 33

原创 优雅的在线图片压缩网站

前言做网站开发难免需要进行图片压缩,我试用了很多在线压缩网站,给我体验最好的还是 TinyPng,其他的网站要不页面丑陋,要不使用麻烦,或者压缩效果不好。所以在我看到 TinyPng 的时候就被它清爽干净的页面吸引了,放一张图给你们感受一下。TinyPng在线压缩TinyPng 仅支持 png 和 jpg 格式的图片压缩,每次可上传最多20张图片,单张图片不超过5M。值得一提的...

2017-03-29 10:39:52 27

原创 Centos 7 环境下 LNMP 服务器配置步骤记录

环境:阿里云 Centos7 64位Paste_Image.png环境配置1、更新 yum 源http://mirrors.aliyun.com/help/centos备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载新的 CentOS-Base.repo ...

2017-03-29 09:58:18 27

原创 代码编辑器推荐-Sublime text

简介Sublime Text 是一款优秀的代码编辑器,也是 HTML 和散文先进的文本编辑器。Sublime Text 具有漂亮的用户界面和强大的功能,同时是一个跨平台的编辑器,同时支持 Windows、Linux、Mac OS X 等操作系统。相比于难于上手的 Vim,浮肿沉重的 Eclipse,VS,即便体积轻巧迅速启动的 Editplus、Notepad++,在 SublimeTex...

2017-03-28 18:09:26 29

原创 Markdown 语法简单说明

介绍Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版、字体设置。它使我们专心于码字,用「标记」语法,来代替常见的排版格式。Tips不要被 Markdown 是标记语言给吓到,事实上 Markdown 常用的语法不到十个,基本使用两三遍就都记得了。Markdown 常用语法这里简单介绍 M...

2017-03-28 18:01:31 21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除