- 博客(925)
- 资源 (1)
- 收藏
- 关注
原创 我的个人网站上线啦!欢迎访问:www.riba2534.cn
目前还在开始阶段,没有什么内容,不过以后会慢慢更新的,欢迎访问哦!网址是:www.riba2534.cn
2017-05-23 13:52:50 3412 8
原创 腾讯云函数1分钟搭建 OpenAI 国内代理
本文介绍一种对于国内相对而言比较方便的办法,使用腾讯云函数来完成一个指向 OpenAI 的反向代理服务搭建,完成后开发者开发时直接把请求 OpenAPI 的接口直接指向腾讯云函数的地址即可。直接开始正题。
2023-03-09 13:09:10 6966 7
原创 数据密集型应用系统设计_数据存储与检索
数据存储与检索从最基本的层面看,数据库只需要做两件事:向它插入数据时,它就保存数据查询数据时,它就返回数据本章主要从数据库的角度来探讨:如何存储输入的数据收到查询请求时,如何重新找到数据作为一名普通的开发人员,我们不太可能从头实现一个自己的存储引擎,但是我们在做技术选型的时候,需要从众多的存储引擎中选一个最适合自己应用的,就需要对各种存储引擎底层机制有一个大概的了解。我们将研究两个存储引擎家族:日志结构的存储引擎面向页的存储引擎(如 B-Tree)数据库的核心:数据结构一
2021-07-11 16:55:41 1348
原创 Go-Linq 使用
前言最近我负责了一个新项目,大概流程是从 DB 里拿出一堆数据之后,得到一个包含字段很多的结构体的 List,然后需要对这个 List 进行一系列的过滤,包括但不限于类似 sql 中的 where、group by、select 、按照某个字段排序、求并补交集之类的操作。如果让我自己写,我肯定是一个一个条件慢慢写,但是代码库我是接手的别人的,我看了下现有的实现,大呼牛逼,原来目前对于这种操作已经有了成熟的解决方案了。那就是:LINQGo-linq 介绍语言集成查询(Language Integr
2021-05-25 02:39:14 4088 1
原创 BitTorrent 简介
BitTorrent 简介从 P2P 说起经常在网上飙车的老司机应该都知道 BT 下载,但是有时候拿到了种子却下载不动,会不会很抓狂,是不是还觉得是自己网不行,那作为一个合格的老司机,我们需要探究一下下载不动的原因是什么,BT的运作方式是怎样的,如果你也有这样的疑惑,那么,系好安全带,我们一起来了解一下什么是 BT。2001年4月,程序员布莱姆·科恩设计了一种协议,然后在2001年7月2日,他发布了 BitTorrent 客户端的第一个实现。BT(BitTorrent)是 P2P 的一种实现,P2
2021-04-11 17:13:55 8811 3
原创 Docker新建MySQL容器时自动初始化数据
场景需要写一个 Dockerfile 来实现创建 mysql 容器的时候,导入已经准备好的 .sql 文件.解决刚开始自己模拟过程写,最后发现不行,仔细看文档,原来官方已经写了。 文档Initializing a fresh instanceWhen a container is started for the first time, a new database with the specified name will be created and initialized with the p
2020-09-30 23:55:51 3245 5
原创 超级码力在线编程大赛初赛 第2场 题解
超级码力在线编程大赛初赛 第2场 题解题目出的对退役老年选手很友好,拿个T恤跑路…下面的题解仅代表个人观点,出了问题,概不负责。比赛链接:https://tianchi.aliyun.com/oj/15165469968503404?spm=5176.15098393.J_6210563800.8.6b8b5cd6dK6WtT1. 三角魔法描述小栖必须在一个三角形中才能施展魔法,现在他知道自己的坐标和三个点的坐标,他想知道他能否施展魔法−109<=x,y<=109点在边上也属于
2020-08-30 13:07:08 2184 1
原创 Linux 内核数据结构
Linux 内核数据结构获得源码目前,Linux 内核的源码维护在 GitHub 上,地址为:https://github.com/torvalds/linux克隆到本地git clone https://github.com/torvalds/linux本书使用的源码版本为 2.6.34 ,所以切换到对应 Tag:cd linuxgit checkout v2.6.34或者直接在:https://github.com/torvalds/linux/releases/tag/v2
2020-08-28 01:48:49 740
原创 HTTPS握手过程
HTTPS 原理HTTPSHTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。SSL 技术最初是由浏览器开发商网景通信公司率先倡导的,开发过 SSL3.0 之前的版本。目前主导权已转移到 IETF(InternetEngineering Task Force,Internet 工程任务组)的手中。
2020-08-19 02:38:35 651
原创 NSQ使用入门
NSQ使用入门简介消息队列是进程间通信或同一进程不同线程间进行通信一种方式,可以将服务异步化,对流量进行整形,削峰填谷,是高并发、大数据场景下不可或缺的中间件;使得消息生产者和消费者解耦,方便系统模块化设计。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。 官方和第三方还为NSQ开发了众多客户端功能库,如官方提供的基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScri
2020-06-27 01:08:16 2889 1
原创 MySQL 基础学习笔记
MySQL 基础学习笔记我的MySQL学习笔记,记录一些MySQL的基础知识。源文档SQL 语句与种类DDL(Data Definition Language)数据库定义语言:如 create drop alterDML(Data Manipulation Language)数据操纵语言:如 select insert update deleteDCL(Data Control La...
2020-05-05 16:38:12 933 1
原创 LeetCode 887 鸡蛋掉落(dp,记忆化搜索,二分)
题目链接:鸡蛋掉落你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 &...
2020-04-11 16:01:26 633
原创 Linux 网络通信瑞士军刀 nc 命令使用
Linux 网络通信瑞士军刀 nc 命令使用简介netcat也就是nc被称为TCP/IP的瑞士军刀。以体积小,功能灵活著称。在各个发行版有默认安装,可以用来做很多网络相关的工作。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。甚至还可以作为简单的 T...
2019-09-27 18:34:46 1130
原创 彻底解决go get golang.org/x等包失败与VSCode golang插件安装失败问题
问题描述由于某种众所周知的一些原因,https://golang.org/ golang 的官方域名是被墙了的,这也就导致了,在广大 go 开发者使用 golang 的时候,总会出现 go get 失败的问题。解决这个问题的办法,网上一搜一大堆,总结一下,网上大概有两种解决方案。因为 go get 不到的库,一般来说在 github 都有人做了镜像,这个时候一般是曲线救国,从 github ...
2019-09-23 16:15:11 4280 1
转载 Golang的反射reflect深入理解和示例
Golang的反射reflect深入理解和示例编程语言中反射的概念在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。每种语言的反射模型都不同,并且有些语言根本不支持反射。Gola...
2019-08-29 22:15:10 416
转载 Map 在 Go runtime 中的高效实现
什么是映射函数要明白 map 是如何工作的的,我们需要先讨论一下 map 函数。一个 map 函数用以将一个值映射到另一个值。给定一个值,我们叫 key,它就会返回另外一个值,称为 value。map(key) → value现在,map 还没什么用,除非我们放入一些数据。我们需要一个函数来将数据添加到 map 中insert(map, key, value)和一个函数从 map 中...
2019-07-14 16:41:13 644
转载 正则表达式30分钟入门教程
转载自:https://deerchao.net/tutorials/regex/regex.htm如何使用本教程别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有想像中的那么困难。当然,如果你看完了这篇教程之后,发现自己明白了很多,却又几乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的人在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。...
2019-06-06 17:15:58 587
原创 使用 golang 操作 redis
使用 golang 操作 redis首先使用 go get 安装第三方开源库。go get github.com/garyburd/redigo/redis连接 redispackage mainimport ( "fmt" "github.com/garyburd/redigo/redis")func main() { c, err := redis.D...
2019-05-07 17:31:32 510
原创 Thrift IDL 使用
Thrift IDL 使用介绍首先看一下维基百科额定义:Thrift是一种接口描述语言和二进制通讯协议,[1]它被用来定义和创建跨语言的服务。[2]它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统[3])、Capp...
2019-05-06 16:57:52 622
原创 使用 VSCode 编辑远程服务器文件
使用 VSCode 编辑远程服务器文件在远程服务器上使用 vim 编辑文件一直觉得不太顺手,个人比较喜欢用 VSCode ,终于解决了使用 VSCode 编辑远程文件。安装 Remote VSCode发现一款插件 Remote VSCode,可以实现这个功能如图,好评数还是很多的。首先我们打开 Remote VSCode 这个插件的官方页面,点击安装即可,或者直接在 VSCode...
2019-04-29 17:02:09 9578 4
原创 GoLang 自定义包总结
GoLang 自定义包总结大概总结一下 GoLang 自定义包,并不是需要发布的包,只是一次在代码工作路径下调用自定义包的一个尝试。今天踩坑就是,以为 import 的时候要填写文件夹里面的 package 的名称,比如之前我是这么写的:import "./pack/p"这样无法通过编译,这就是本文的由来了首先,工作的目录结构是这样的:.├── main.go└── pack...
2019-04-24 20:46:55 913
翻译 Golang 新手可能会踩的 50 个坑
原文链接:http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/前言Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到。如果花时间学习官方 doc、wiki、讨论邮件列表、 Rob Pi...
2019-04-23 15:20:34 1766
原创 GoLang格式化占位符
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。# 定义示例类型和变量type Human struct { Name string}var people = Human{Name:"zhangsan"}普通占位符占位符说明举例输出%v相应值的默认格式。Printf("%v", people){zhan...
2019-04-23 14:45:12 1404
原创 LeetCode 329 矩阵中的最长递增路径(记忆化搜索)
题目链接:矩阵中的最长递增路径给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = ...
2019-03-16 10:44:49 663
原创 LeetCode 76 最小覆盖子串(尺取法)
题目链接:最小覆盖子串给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。思路(滑动窗口) O(n)O(n)O(n)首先用哈希表统计出 TT...
2019-03-16 10:15:32 638
原创 LeetCode 726 原子的数量(递归,map)
题目链接:原子的数量给定一个化学式formula(作为字符串),返回每种原子的数量。原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字。如果数量大于 1,原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。例如,H2O 和 H2O2 是可行的,但 H1O2 这个表达是不可行的。两个化学式连在一起是新的化学式。例如 H2O2He3Mg4 也是化学式。一个括...
2019-03-16 09:00:32 769
原创 POJ3249 Test for Job(拓扑排序,dp)
DescriptionMr.Dog was fired by his company. In order to support his family, he must find a new job as soon as possible. Nowadays, It’s hard to have a job, since there are swelling numbers of the une...
2019-03-03 20:57:23 635
原创 POJ2796 Feel Good(单调栈)
DescriptionBill is developing a new mathematical theory for human emotions. His recent investigations are dedicated to studying how good or bad days influent people’s memories about some period of l...
2019-03-03 08:59:30 574 1
原创 LeetCode 4. Median of Two Sorted Arrays(思路,递归)
题目链接:寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = ...
2019-03-02 16:29:28 304
原创 LeetCode 440. K-th Smallest in Lexicographical Order(思路)
题目链接:440. K-th Smallest in Lexicographical OrderGiven integers n and k, find the lexicographically k-th smallest integer in the range from 1 to n.Note: 1 ≤ k ≤ n ≤ 109.Example:Input:n: 13 k: 2...
2019-03-01 09:04:10 604 2
原创 剑指offer 正则表达式匹配(dp)
题目链接:正则表达式匹配题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。思路剑指offer里面用了层层指针做的。其实本质上就是一个 ...
2019-02-23 17:46:17 779
原创 《TCP/IP网络编程》第 24 章 制作 HTTP 服务器端 笔记
第 24 章 制作 HTTP 服务器端本章代码,在TCP-IP-NetworkNote中可以找到。24.1 HTTP 概要本章将编写 HTTP(HyperText Transfer Protocol,超文本传输协议)服务器端,即 Web 服务器端。24.1.1 理解 Web 服务器端web服务器端就是要基于 HTTP 协议,将网页对应文件传输给客户端的服务器端。24.1.2 HTTP...
2019-02-07 20:17:16 867
原创 《TCP/IP网络编程》第 18 章 多线程服务器端的实现 笔记
第 18 章 多线程服务器端的实现本章代码,在TCP-IP-NetworkNote中可以找到。18.1 理解线程的概念18.1.1 引入线程背景第 10 章介绍了多进程服务端的实现方法。多进程模型与 select 和 epoll 相比的确有自身的优点,但同时也有问题。如前所述,创建(复制)进程的工作本身会给操作系统带来相当沉重的负担。而且,每个进程都具有独立的内存空间,所以进程间通信的实现...
2019-02-03 16:05:48 1054
原创 《TCP/IP网络编程》第 17 章 优于 select 的 epoll 笔记
第 17 章 优于 select 的 epoll本章代码,在TCP-IP-NetworkNote中可以找到。17.1 epoll 理解及应用select 复用方法由来已久,因此,利用该技术后,无论如何优化程序性能也无法同时介入上百个客户端。这种 select 方式并不适合以 web 服务器端开发为主流的现代开发环境,所以需要学习 Linux 环境下的 epoll17.1.1 基于 sele...
2019-02-01 19:06:20 608
原创 《TCP/IP网络编程》第 16 章 关于 I/O 流分离的其他内容 笔记
第 16 章 关于 I/O 流分离的其他内容本章代码,在TCP-IP-NetworkNote中可以找到。16.1 分离 I/O 流「分离 I/O 流」是一种常用表达。有 I/O 工具可区分二者,无论采用哪种方法,都可以认为是分离了 I/O 流。16.1.1 2次 I/O 流分离之前有两种分离方法:第一种是第 10 章的「TCP I/O 过程」分离。通过调用 fork 函数复制出一个...
2019-01-30 14:38:57 512
原创 《TCP/IP网络编程》第 15 章 套接字和标准I/O 笔记
第 15 章 套接字和标准I/O本章代码,在TCP-IP-NetworkNote中可以找到。15.1 标准 I/O 的优点15.1.1 标准 I/O 函数的两个优点下面是标准 I/O 函数的两个优点:标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用缓冲提高性能创建套接字时,操作系统会准备 I/O 缓冲。此缓冲在执行 TCP 协议时发挥着非常重要的作用。此时若使用标准 ...
2019-01-29 17:53:38 454
原创 HihoCoder - 1044 状态压缩一 (状压dp)
描述小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市——那座城市即将举行美食节!但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票——他们只能够乘坐最为破旧的火车进行他们的旅程。不仅如此,因为美食节的吸引,许多人纷纷踏上了和小Hi小Ho一样的旅程,于是有相当多的人遭遇到了和小Hi小Ho一样的情况——这导致这辆车上的人非常非常的多...
2019-01-29 16:07:55 394
原创 《TCP/IP网络编程》第 14 章 多播与广播 笔记
第 14 章 多播与广播本章代码,在TCP-IP-NetworkNote中可以找到。14.1 多播多播(Multicast)方式的数据传输是基于 UDP 完成的。因此 ,与 UDP 服务器端/客户端的实现方式非常接近。区别在于,UDP 数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机。换言之,采用多播方式时,可以同时向多个主机传递数据。14.1.1 多播的数据传输方...
2019-01-28 13:55:12 831
原创 《TCP/IP网络编程》第 13 章 多种 I/O 函数 笔记
第 13 章 多种 I/O 函数本章代码,在TCP-IP-NetworkNote中可以找到。13.1 send &amp; recv 函数13.1.1 Linux 中的 send &amp; recv首先看 sned 函数定义:#include &lt;sys/socket.h&gt;ssize_t send(int sockfd, const void *buf, size_t nb...
2019-01-26 23:08:54 603
原创 《TCP/IP网络编程》第 12 章 I/O 复用 笔记
第 12 章 I/O 复用本章代码,在TCP-IP-NetworkNote中可以找到。12.1 基于 I/O 复用的服务器端12.1.1 多进程服务端的缺点和解决方法为了构建并发服务器,只要有客户端连接请求就会创建新进程。这的确是实际操作中采用的一种方案,但并非十全十美,因为创建进程要付出很大的代价。这需要大量的运算和内存空间,由于每个进程都具有独立的内存空间,所以相互间的数据交换也要采用...
2019-01-23 17:38:44 760
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人