自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习真香

编程使我快乐

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

原创 2023 Q3

2023 Q3

2023-06-25 22:02:43 341

原创 elixir Process

【代码】elixir Process。

2023-04-21 17:19:43 520 1

原创 Unit Test and Integration Test

Unit Test and Integration Test。

2023-02-19 20:56:18 450

原创 2022-Q3

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

2022-11-30 22:35:06 313

原创 英语学习目标与计划

英语学习

2022-09-17 17:57:51 291

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

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

2022-08-28 16:54:54 439

原创 2022 年-Q2

2022年Q2工作总结

2022-08-14 12:26:35 1619

原创 Ruby on Rails concurrency 并发处理

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

2022-05-18 22:18:29 379

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

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

2022-05-14 10:33:19 188

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

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

2022-04-03 15:18:43 1806

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

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

2022-02-27 11:34:10 3530

原创 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 556

原创 数据库优化-事务篇

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

2022-02-01 19:11:33 1639

原创 postgresql 表分区

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

2021-12-26 18:10:09 2321 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 547

原创 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 334

原创 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 27285 6

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

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

2021-10-25 08:48:56 198

原创 布局中的盒模型与 display

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

2021-09-21 15:51:31 630

原创 《目标》读后感

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

2021-09-19 12:08:36 732

原创 Rails 缓存

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

2021-08-29 18:03:30 433

原创 浏览器事件

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

2021-07-18 20:58:02 221

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

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

2021-06-27 19:31:37 4016

原创 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 2296

原创 rack puma rails

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

2021-05-03 19:10:52 599

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

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

2021-04-19 21:12:12 513

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

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

2021-04-11 17:01:42 2484

原创 CSS 中的像素(px)

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

2021-03-28 22:16:15 3213

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

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

2021-03-21 11:37:27 206

原创 换位沟通-读书笔记

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

2021-03-07 15:05:08 367

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

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

2021-02-18 16:03:06 672

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

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

2021-01-30 20:42:10 1545

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

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

2021-01-17 10:59:58 134

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

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

2021-01-02 21:42:06 228

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

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

2021-01-01 19:27:59 108

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

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

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

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

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

2020-11-15 17:20:41 255

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

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

2020-11-15 17:18:55 173

原创 数据库索引 - 数据存储

数据库索引 - 数据存储数据存储数据存放在哪里当然是存放在硬盘中了;但是, 我们怎么找到具体数据库文件的物理地址呢?首先, 我们要先查找到表的oid, 然后再去数据库存储数据的目录;select oid,relfilenode from pg_class where relname='product';图一安装pg的时候, 会让你指定数据存放的地址;我的是 D:\env\pg\data;所以, 我需要找的地址是:D:\env\pg\data\base\16394\16502如何存储

2020-11-15 17:16:59 1315

原创 pg 快速造1000w测试数据

数据库索引 - 数据准备带着问题去学习! 学习起来才有趣;下面的每一个小节, 都由若干个问题组成;希望这些问题能够给大家带来一定的帮助;同时, 也希望大家提出好的问题, 一起分享!为了避免一篇文章过长; 我分成了多个章节!数据准备为了更好的说明和演示;我们需要事前造一些数据;一个 有1000w 数据的产品表:-- Table: public.product-- DROP TABLE public.product;CREATE TABLE public.product( id

2020-11-15 17:16:34 613

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

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

2018-05-27

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

TA关注的人

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