自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习真香

编程使我快乐

  • 博客(156)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 2025 12

马上就要到 2026 年了, 距离上次的文章已经有半年了, 距离上次总结性文章已经有两年多了.在现在这家公司待了 3 年多了, 也学到了一些知识. 可惜并没有及时写成文章总结.究其原因, 还是因为懈怠了. 2026 年就要 30 岁了, 学习的动力和精力, 还是不如刚刚毕业的时候.虽然没有将学习的内容总结成文章, 但是在公司内部进行了多次英文分享.英文分享对英语的提升还是很有效的, 一方面帮助总计学习的内容, 另一个方面可以练习口语.

2025-12-21 18:29:46 493

原创 Elixir WSL环境搭建

最近购买了一个Windows的笔记本. 体验了一把WSL. 还是挺丝滑的.也存在着一些开发上面的坑. 在此记录一下;

2025-04-28 22:00:00 259

原创 2023 Q3

2023 Q3

2023-06-25 22:02:43 537

原创 elixir Process

【代码】elixir Process。

2023-04-21 17:19:43 752

原创 Unit Test and Integration Test

Unit Test and Integration Test。

2023-02-19 20:56:18 632

原创 2022-Q3

2022 年 11 月 30 日 20:02:55时间过得很快,到新公司已经 7 个月了。上次写总结还是在 8 月份。

2022-11-30 22:35:06 413

原创 英语学习目标与计划

英语学习

2022-09-17 17:57:51 577

原创 云原生【1】:docker 常用知识总结

日常工作中已经离不开云服务了。AWS的EKS,ECS等容器化的服务更是工作的基础。因此,预计写3篇文章,将这些内容进行总结输出。

2022-08-28 16:54:54 636

原创 2022 年-Q2

2022年Q2工作总结

2022-08-14 12:26:35 1804

原创 Ruby on Rails concurrency 并发处理

Ruby on Rails concurrency 并发处理 背景 系统使用分布式部署, 在提高并发的同时, 也引入了并发问题. 并发问题往往较难调试和处理. 所幸, Rails 和 ruby 社区提供一些优秀的方案可以用来解决并发问题. 这里做一个总结, 分享给大家.(受到个人的局限性, 文章后续会根据自己的经验再次更新.) 概要 并发问题的处理方式,大致分为2类 机制 和 分布式锁 机制 Uniqueness constraint 唯一性约束 Optimistic Locking 乐观锁 分布式

2022-05-18 22:18:29 630

原创 人生的目标与规划(2022年)

人生的目标与规划(2022年) 背景 毕业后工作已3年了, 入职新的公司已有1个月了. 之前制定的目标与计划, 需要根据当下所处的环境, 进行变动. 因此, 为了之后的生活工作提供方向, 现在需要梳理一下 前一段时间, 睡觉前躺在床上有时会思考: 活着的目的是什么? 活着有什么意义? 为了自我实现吗? 思考了很多内容, 最后觉得: 健康幸福的生活是我活着的目的. 目标与规划 健康幸福的生活是一个比较大, 相对笼统的目标. 我将其拆分成了多个小目标. 并尝试以OKR的形式表现处理. O1: 健康的身体 有一个

2022-05-14 10:33:19 322

原创 文件close后就一定持久化到硬盘了吗

文件close后就一定持久化到硬盘了吗 背景 关于文件操作的api是我们工作中经常使用到的. 同时, 我们工作中的一些编程语言都提供了库函数方便我们直接调用. 经常被提到的一个 best practice 就是文件不再使用后, 一定要close. 例如下面的ruby代码: f = File.new("out", "w") f.write("1234567890") #=> 10 f.close #=> nil 但是, 文件被close掉后, 就一定在

2022-04-03 15:18:43 1967

原创 数据库优化-排序篇 (order by)

数据库优化-排序篇 (order by) 背景 日常开发工作中, 经常使用order by对结果集进行排序, 但是对其原理和具体实现可能不是很了解. 这样无法进行有效的分析和针对性优化. 因此, 我写下本篇文章介绍一下 order by的基本原理和一些工作中常见的问题. 带着问题去学习, 效率会更高, 更有趣. 数据准备 因为在工作中使用pg多一些, 所以文中的数据库选择了 PostgreSQL 11.14 64-bit 造一些测试数据, 可以参考: pg 快速造1000w测试数据 CREATE TABLE

2022-02-27 11:34:10 4105

原创 pg实现并发相互喜欢

pg实现并发相互喜欢 背景 在极客时间上阅读到15 | 答疑文章(一):日志和索引相关问题一章时, 有一个很有趣的并发问题. 作者给出了mysql版本的答案. 因为平时pg用的比较多, 所以使用pg进行实现了一下. 具体问题 类似探探类的交友软件, 用户Bob对喜欢的人Alice, 可以点击喜欢按钮, 此时Bob会关注Alice, 如果, Alice也喜欢Bob, 构成了Bob, Alice相互喜欢, 则成为好友. 设计上有3个表, users, likers, friends. 当用户Bob 喜欢Alic

2022-02-13 11:47:00 673

原创 数据库优化-事务篇

数据库优化-事务篇 说明 背景: 日常开发中, 性能的瓶颈往往在于 IO, 尤其是数据库. 了解如何优化数据库, 提高数据库的性能和请求响应速度是有必要的.因此, 我打算梳理和总结数据库优化的相关内容. 本篇为事务篇, 讲解数据库事务相关的优化. 梳理事务相关的知识点, 并结合实际场景进行讲解. 文章中的实例都是以 PG 数据库为例的, 其它数据库语法可能稍有不同. 准备数据: create table public.test ( id serial, val varchar(20) null,

2022-02-01 19:11:33 1894

原创 postgresql 表分区

postgresql 表分区 背景 一个大表查询性能往往不高, 其原因在于数据加载 data load,扫描数据 table scans ,内存交换 memory swap 等等操作的时间成本会随着数据量的增加而上升. 从 PG 11 开始, 支持较为简洁的声明表分区. 为提高大表性能提供了一种解决方案. 什么是表分区 表分区(Partitioning) 指的是: 将一个逻辑上的大表拆分成多个物理上的小表. 是一种单体数据库表的水平分表. 表分区能带来以下好处: 在特定情形下, 查询性能的大幅度提升. 尤

2021-12-26 18:10:09 2730 1

原创 ORA-600[kglLockOwnersListDelete] 解决方案

ORA-600[kglLockOwnersListDelete] 解决方案 背景 oracle 版本 Windows 64-bit Version 11.2.0.1.0 在服务高峰期, 会出现崩溃问题. 整个数据库卡死, 只能通过重启解决. 查询 oracle 的 alert 日志, 发现一些端倪, 可能是 kglLockOwnersListDelete 导致的; <msg time='20xx-xx-24T11:56:30.618+08:00' org_id='oracle' comp_id='rd

2021-12-11 10:25:54 708

原创 CSS @Media 媒体查询基础

CSS @Media 媒体查询基础 为什么需要媒体查询 某些样式只想在特定的设备或者特定的情况下生效. 常常用于响应式布局. 媒体查询语法 具体的说明见: css3-mediaqueries @media media-type and (media-feature-rule) { /* CSS rules go here */ } 它由以下部分组成: 媒体类型,告诉浏览器这段代码是用在什么类型的媒体上的(例如印刷品或者屏幕); 媒体表达式,是一个被包含的 CSS 生效所需的规则或者测试; CSS 规

2021-12-04 21:21:25 498

原创 Cross-Origin Read Blocking (CORB)

Cross-Origin Read Blocking (CORB) 背景 有一天, 打开浏览器看到控制台报错: Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 text/html 的跨域响应 https://xx.xxxx.com/stat/record?it=0&lshowp=2560x1440&0.1996155506933639 如需了解详情,请参阅 https://www.chromestatus.com/feature/56297098

2021-11-07 16:53:40 29084 6

原创 javascript 可以获取计算机上任意数据吗?

javascript 可以获取计算机上任意数据吗? 对于这个问题, 答案: 通过 spectre 和 meltdown 攻击或许可以 想要探寻这个问题的答案, 需要先了解一下计算机的基础知识. 然后, 再给大家介绍一下 spectre 和 meltdown 计算机的组成 计算机组成主要分为五个部分:控制器,运算器,存储器,输入设备,输出设备。 对应我们现实中的计算机则为 cpu: 控制器 + 运算器 主板: I/O 总线,输入输出系统 存储器: 内存+硬盘 I/O 设备:键盘,鼠标,打印机等等 程序是

2021-10-25 08:48:56 332

原创 布局中的盒模型与 display

布局中的盒模型与 display 在页面布局中, 有一个很重要的概念 盒模型; 同时也有一个很重要的属性display; 利用盒模型我们可以更好地理解页面元素的几何展示. 同时, 通过设置 display 属性进行页面布局; 那么, 下面我们就一起看一下盒模型与 display; 什么是盒模型 在 CSS 中所有的元素都可以看成一个个小盒子. 这些被我们抽象出来的小盒子就是盒模型. 如上图所示, 用红色框标出的内容, 都可以看成一个个盒子. 盒子里面可以套盒子. 一个个盒子组成了页面. 在 CSS 中,

2021-09-21 15:51:31 792

原创 《目标》读后感

《目标》读后感 为什么要读目标 《目标》是一本不错的入门企业管理的书.领导推荐的 ???? 自己参与一个小团队的项目管理工作, 想要了解一些相关内容, 希望能收获管理的能力提升 文章读后感与思考 受限于个人职位的原因: 大部分是以团队的角度看问题, 而不是公司的角度. 下文提到的 罗哥 是一个工厂厂长, 钟纳 是一个罗哥的大学物理老师. TOC: 利用有限的资源, 达到最高的效益 以我所在的小组为例, 10 个人, 5 个开发, 3 个产品, 2 个测试. 负责公司内部一个业务部门和一个对外的客户系

2021-09-19 12:08:36 1068

原创 Rails 缓存

Rails 缓存 caching_with_rails 中介绍了 Rails 缓存的相关内容; 我结合工作中的使用写下了本篇文章; 部分内容翻译自 rails 的官方文档; 简介 缓存(cache)是一种提高应用性能的高效方式; 通过缓存, 应用可以在一台服务器和单一的数据库下, 维持上千的并发用户; Rails 提供了一系列开箱即用的功能; 掌握这些技术, 你的 Rails 应用可以服务上百网的浏览器, 并且不需要过高的响应事件和服务器要求; 注意: rails 的缓存默认只有在 production 下

2021-08-29 18:03:30 629

原创 浏览器事件

浏览器事件 在前端浏览器事件, 我们经常地用到. 例如, onclick 注册一个点击事件. 或者使用 vue @click 去注册等等. 但是, 对于一些浏览器事件的细节, 可能只有到了遇到具体的问题, 才会去了解. 近日, 出现了一个线上的小 bug, 用户在富文本中, 鼠标无法选中. 最后, 发现是 mousedown 冒泡导致的. 也是借着这个 bug, 我总结了一下. 什么是浏览器的事件 Web events are not part of the core JavaScript languag

2021-07-18 20:58:02 328

原创 前端安全: 如何防止 XSS 攻击?

前端安全: 如何防止 XSS 攻击? 分享简介 今天想分享给大家的是 如何防止 XSS 攻击. 为什么想分享的原因是: 感觉大家对前端安全了解不够, 重视不够. 内容是: 什么是 xss, 常见 xss 的类型. 并且通过小游戏来实践. 如何去防止 xss 攻击 如何利用 XSS 进行攻击 什么是 XSS 攻击 Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信

2021-06-27 19:31:37 4442

原创 css border-image 图片边框

css border-image 图片边框 效果 通过 css中的 border-image, 我们可以实现漂亮的边框效果. 先上效果图: 效果 1: 效果 2: 如何实现 border-image 样式的实现过程就是将我们提供的图片切分, 然后按照一定规则展示在 dom 元素. 下面的例子, 会用到下面的图片, 大家可以自取. 效果 1 的实现 #box { font-size: 16px; border: 3px solid; border-image-source: url(./b

2021-06-06 11:13:04 2918

原创 rack puma rails

rack puma rails 背景 2021 年 五一, 突然对 web server 与 rails 之间的关系, 好奇我们的程序是如何接收到请求, 找到我们的业务程序代码, 并返回对应的结果的; 于是, 便写下这篇文章; 说明 文章所涉及到的代码已上传 GitHub rack-puma-rails 文章涉及到的程序版本 rack 2.2 puma 5.1 rails 6.1 文中提到的 web server 是指的服务器软件, 而非计算机. 简述 rack 是一个 ruby web server(

2021-05-03 19:10:52 814

原创 浏览器的同源策略与跨源问题

浏览器的同源策略与跨源问题 背景 近期处理新项目调用老项目的接口时, 遇到了跨域的问题; 花费了些时间才处理好, 发现之前学得还是不够全面; 因此, 写下本篇文章进行总结; 本文内容摘要 什么是跨域, 讲述浏览器对跨域的定义 为什么有跨域, 讲述浏览器为什么要限制跨域 怎么能获取跨域的资源, 讲述如何规避浏览器的跨域限制 什么是跨域 说到跨域, 就需要先说一下 同源策略 同源策略是一个重要的安全策略,它用于限制一个 origin 的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档

2021-04-19 21:12:12 648

原创 css 文字换行和超出部分省略号

css 文字换行和超出部分省略号 文字空格与换行 当文本溢出父级 block 元素时, 文本会换行; 这个特性是通过 while-space 控制的; 它影响浏览器处理空格, 换行和 tab 的处理; 它有下面几种值 normal, 默认值, 连续的空白符会被合并,换行符会被当作空白符来处理。会受到父级 block 的宽度影响, 而换行; nowrap, 连续的空白符会被合并,换行符会被当作空白符来处理, 但文本不换行; 且不受父级影响; pre, 连续的空白符会被保留。在遇到换行符或者<br&gt

2021-04-11 17:01:42 2717

原创 CSS 中的像素(px)

CSS 中的像素(px) px 是一个我们经常在开发中使用的一个单元; 它表示在屏幕上展示的最小单元; 但是, 在 CSS 中像素可能和我们想象的不太一样. CSS 中的 px 是逻辑距离还是物理距离 答: 是逻辑距离; 像素(pixel)在浏览器中是一个表示距离的绝对单位(absolute unit); 同时, 在 CSS 中它是一个相对像素 (reference pixel); 浏览器会根据设备像素比(devicePixelRatio), 来展示图像; 所以, 在 CSS 中 1px 可不一定对应真实在

2021-03-28 22:16:15 3489

原创 CSS 选择器 与 CSS 特异性,继承,层叠

CSS 选择器 与 CSS 特异性,继承,层叠 CSS 选择器是 CSS 的基础知识, 它能够给浏览器声明样式应该作用于哪些元素; 而元素具体要使用哪些样式, 就离不开 CSS 的三个特性: 特异性 Specificity 也可以翻译成优先级 继承 Inheritance 层叠 Cascade 本文通过三个问题讲述上面的知识 如何给特定的元素加上样式, 讲述 CSS 选择器的使用以及 CSS 的特异性 元素是如何继承样式的, 讲述 CSS 的继承 多个样式作用到同一个元素使用哪个, 讲述 CSS 的层

2021-03-21 11:37:27 346

原创 换位沟通-读书笔记

换位沟通-读书笔记 背景 为何要读换位沟通? 因为, 我想提高自己的沟通能力, 并想用在工作当中, 提高自己的工作效率; 起因是: 和一位同事沟通时, 出现了争执且双发都有些失控;我觉得需要改正自己. 学会换位思考 换位思考是什么 站在对方的立场上思考, 从对方的角度出发进行沟通; 当然书中是强调要站在他人的角度去思考, 而非只是站在他人的角度去思考; 为什么要换位思考 可以通过换位思考, 学习反面教材 语速过快, 声音太小: 对方听不清, 感觉很累; 语速过慢: 对方容易犯困 说话时间过长: 对方抓不

2021-03-07 15:05:08 552

原创 全局监听组合键盘事件

// 参考链接 // https://stackoverflow.com/questions/10655202/detect-multiple-keys-on-single-keypress-event-in-jquery const map = { 17: false, 90: false }; // 当前页面监视键盘输入 document.onkeydown = (e) => { if (e.keyCode in map) { map[e.keyCode] = true; if

2021-02-18 16:03:06 811

原创 计算机中的字符编码(Unicode UTF-8 GBK)

计算机中的字符编码(Unicode UTF-8 GBK) 计算机的字符都是在哪里定义的 答: 在字符集里定义的; 每个国家都有自己的语言, 每种语言又对应有很多不同的字符; 像英语只需要 100 多个字符就够了, 而中文则有非常多的字符(常用的 3000+个); 在计算机使用之初, 只需要支持英文就好; 所以早在 1963 年就有了 ASCII 码; 它里面定义了英文字母,数字和一些字符; 但随着计算机的流行, 中国也开始使用起来了计算机; 此时, 就必须要考虑中文字符了; 因此, 中国在 1980 年发

2021-01-30 20:42:10 1719

原创 数据库索引 - 索引 - 下

数据库索引 - 索引 - 下 本节总结一些索引使用上的优化 很多内容来自 数据库索引设计与优化 使用索引一定比全表扫描快吗 答: 不一定 使用一个不恰当的索引可能会导致比全表扫描更差的性能; 我们假设有一张 product 表; id 是主键 select * from product where id = 1000 我们可以看到数据库, 会选择使用索引 Index Scan using product_pkey on product (cost=0.43..8.45 rows=1 width=

2021-01-17 10:59:58 232

原创 工作中沟通的一点想法

工作中沟通的一点想法 我们在工作中会很频繁地进行沟通, 尤其是在一个团队里, 同事之间的协作更是离不开沟通! 因此高质量的沟通是一个非常重要的事情! 第一次写于: 2021 年 1 月 2 日; 之后有新的想法会及时更新! 为什么要沟通 做事情之前, 我们要知道 why? 我什么要做这件事? 沟通也是如此. 所以在沟通之前, 我们还是要想一下 为什么要沟通? 这个沟通是必要的吗? 沟通的目标, 意义是什么? 沟通需要涉及到哪些人员? 需要多少时间? 确定好沟通的必要性之后, 我们可以想一想沟通的好处

2021-01-02 21:42:06 360

原创 数据库索引 - 索引 - 中

数据库索引 - 索引 - 中 本节, 将深入地了解一下索引; 什么是 B-tree, B+tree 什么是 B-tree ? 什么是 B+tree ? 符号 - 只是用于分割. 所以 B-tree 并不是读作 B减树, 而是应该读作 B树 这些定义和区别, 在网上有很多优秀的文章 大家可以看看, 我这里就不赘述了; 推荐阅读: wiki B-tree wiki B+tree 以 B tree 和 B+ tree 的区别来分析 mysql 索引实现 使用 B-tree 索引的好处是什么 B-trees 支

2021-01-01 19:27:59 187

原创 数据库索引 - 索引 - 上

数据库索引 - 索引 - 上 索引 这一章节, 我想讨论一些有趣的事情. 大表如何加索引 在大表上创建一个索引将花费大量的时间; 默认情况下, 在创建的索引时, PostgreSQL 允许读数据 (select); 但是, 写数据的操作(insert, update , delete)会被阻塞, 知道索引创建完毕; 在生产环境下这是无法接受的; 那么, 在生产环境下, 怎么添加索引呢? 数据库提供了一种可以并发创建索引的方法 create index concurrently index_name on t

2020-12-19 11:36:59 371 2

原创 数据库索引 - 索引类型

数据库索引 - 索引类型 索引类型 为什么索引有很多种 答: 在不同的场景下, 应该选择不同的索引; pg 数据库提供了非常多的索引 B-tree Hash GiST SP-GiST GIN BRIN 等等 每一种索引都有不同的算法, 它们适用于不同的类型的查询; 默认情况下, 会创建B-tree索引, 因为它适用于多数情况; 推荐阅读 这篇文章讲得特别好, 推荐大家去看看 PostgreSQL 9种索引的原理和应用场景 我这里就只写 B-tree, hash, gin 这三个最常用的; B-tree

2020-11-15 17:20:41 441

原创 数据库索引 - 索引简介

数据库索引 - 索引简介 本节很多内容来自 pg数据库的官方文档 索引简介 索引是什么 索引是一种常用提高数据库性能的方式. 索引能够帮助数据库快速地找到特定的数据行; 但是索引也会增加整个数据库系统的 开销 (overhead),所以应该明智地使用它们。 为什么要有数据库索引 答: 提高查询效率 我们在数据准备中, 创建了 product 表; SELECT * FROM product WHERE id = 12311 如果没有主键的索引, 数据库不得不扫描整个 product 表, 一行一行地找;

2020-11-15 17:18:55 288

计算机网络第三版答案和复习总结

计算机网络-清华大学出版社吴功宜第三版课后习题答案,学校老师给的重点知识。

2018-05-27

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

TA关注的人

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