自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(259)
  • 资源 (11)
  • 收藏
  • 关注

原创 go 内存模型和内存顺序(memory model and memory order in go)

内存模型首先,官方文档有大致介绍总结下来:建议多个goroutines 并发修改数据时候,那就串行化。具体可以用go 经典的channel,再不济用sync包里的 mutex 或者 atomic 也行。如果你很屌,不想串行化并发控制,那么注意一下几点:1. happens before至于 happens before 和 happens after 的具体定义,可以看官方文档。要知道,单 goroutine 下,hapens before 顺序就是程序书写顺序。2. package in

2021-08-14 19:21:26 418

原创 红黑树演进

看这个 https://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf,茫然。看这个 https://zhuanlan.zhihu.com/p/340419231 拾人牙慧。

2021-01-10 13:30:23 333

原创 iptables vs nftables, using firewall-cmd

最近用 firewall-cmd 做一些网络问题上的实验,困惑于本后的工作原理。做了一些quick search,整理一些文章,当作以后备忘吧。https://medium.com/@iced_burn/compare-firewalld-iptables-nftables-netfilter-de08a8d21b5bhttps://ungleich.ch/en-us/cms/blog/2018/08/18/iptables-vs-nftables/#:~:text=IPtables%20is%20ab

2021-01-10 12:13:28 686

转载 tcp网络协议图示

作者:小林coding链接:https://zhuanlan.zhihu.com/p/146752547来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。01 TCP 三次握手的性能提升TCP 是面向连接的、可靠的、双向传输的传输层通信协议,所以在传输数据之前需要经过三次握手才能建立连接。那么,三次握手的过程在一个 HTTP 请求的平均时间占比 10% 以上,在网络状态不佳、高并发或者遭遇 SYN 攻击等场景中,如果不能有效正确的调节三次握手中的参数,就.

2021-01-01 17:26:26 929

原创 时间管理大师

时间管理自测1、电话打扰我的工作,而且无比的冗长。2、公司内外的人来拜访我,使我无法完成自己的工作。3、会议时间拖得太长,会议结果效果不佳。4、推迟要花费大量时间去处理的棘手工作,很难把它们做完,因为很难静得下心来。(能拖就拖)5、做事没有明确的先后顺序,尝试同时解决很多工作,把太多的时间花费在琐碎的小事上,无法专注于最重要的任务。6、只有在时间很紧迫的时候,才能按时间表完成任务,因为期间会发生没有预计到的情况,或者是做了太多别的事情。7、写邮件和读邮件花了太多的时间。8、与其他人的沟通存在

2020-11-07 22:26:25 446 1

原创 按下键盘计算机具体发生了点儿啥?

indexinterrupt如何通知到CPU?终端处理程序是啥?CPU怎么找到ISR?CPU怎么知道当前中断的interrupt number?老问题了,在网上搜罗了一圈,没有啥靠谱的回答。其实这种问题,在大学里学习的计算机基础课程里都有很好的回答。可惜网上很少有人能够把这些基础只是串起来。啥基础知识呢?对于计算机专业的学生来说(cs student),就是《计算机组成原理》以及《操作系统》两门课。键盘输入,这种操作就是典型的计算硬件和软件(这里的软件就是OS)相互配合来完成的。咋配合呢?中断机制

2020-10-08 18:18:58 744

原创 A/B test 实验分层正交

只是想收藏这个gif

2020-09-09 13:58:02 877

原创 Atomic-Operations

2020-07-01 14:05:26 276

原创 查看python进程运行栈

reference首先保证进程运行机器上有GDB和pyrasite# Redhat, CentOS, etc$ yum install gdbpip install pyrasite找到卡住的python进程ID,然后用pyrasite-shell attach上去# Assuming process ID is 12345$ pyrasite-shell 12345进入 python repl 环境,然后输入from __future__ import print_function

2020-06-17 15:46:50 3096

原创 随机提问 --- 持续更新

操作系统内核态运行占用虚拟内存么?为什么?

2020-06-16 11:16:59 529

原创 数字签名与认证

https 协议在真正进行 http 通信之前,需要 浏览器与服务器 之间协商好加密密钥,而在协商之前,浏览器会先验证服务器的合法性。怎么验证浏览器的合法性呢?肯定需要第三方认证机构的支持,这个第三方就是CA机构。CA机构CA机构会给浏览器和服务器各自一个证书:浏览器这边边的这书保存的是CA给服务器分配的公钥,比如:服务器公钥baidu.comkey.pub A...

2020-05-10 23:22:10 575

原创 tcpdump 速查

basictcpdump -nvvv -i any-n: 打印ip port, 而非hostname, portname-v: verbose, -vvv 三级 verbose-i:指定网络interface针对IP port 进行过滤tcpdump -nvvv -i any -c 20 '(port 80 or port 443) and host 10.0.3.169'打印包...

2020-04-09 13:50:59 862

原创 既然有GIL了那么为什么在python中多线程编码时候还需要加锁?

GIL由于 python 解释器(Cpython interpreter)不是线程安全(thread-safe)的,所以 Cpython interpreter 的实现中使用了GIL(global interpreter lock)来阻止多线程同时在一个 pyobject 上操作。这里所说的 “不是线程安全“ 是指Cpython interpreter在内存管理上不是线程安全的。比如,两个线程同...

2020-01-22 15:37:55 5023

原创 ssh 代理设置

1. 直接指定命令参数- o 指定 ProxyCommand 。可以通过 ProxyCommand 告诉 ssh client 如何与代理进行通讯,通过代理与运程主机建立 ssh 链接。ssh -p 36000 -o "ProxyCommand corkscrew 127.0.0.1 12759 %h %p" -o "ControlMaster auto" -o "ControlPath ~...

2019-12-05 16:50:51 1961

原创 命令行(bash)并发请求(压测)server

while :; do for i in $(seq 4); do time PYTHONIOENCODING=utf-8 PYTHONHOME=venv http_proxy= venv/bin/python client.py 127.0.0.1 & pids[$i]=$!; done; for pid in ${pids[*]}; do wait $pid; done; done...

2019-12-01 23:53:27 2742

原创 python 虚拟环境设置

参考下面的 shell 脚本设置#! /bin/bashset -eu# generate python2.7 project# it's the first time that I generate project using python2.7 last week# it took me a lot of time to handle the python2.7 virtual ...

2019-11-22 17:18:11 196

原创 检查环境变量设置

问题: 如何找到 LC_CTYPE 这个环境变量在哪儿定义的?可以按照下面顺序检查Some places to look first:System wide/etc/environment: specifically meant for environment variables/etc/env.d/*: environment variables, split in multipl...

2019-11-22 16:57:43 284

原创 保留当前环境变量执行 sudo 操作

当执行sudo "command"或者sudo bash -c "your command or scripts"时候,你在当前执行当 interactive shell 上设置当环境变量或者定义在自己的 login shell 初始化脚本(比如~/.bashrc, ~/.bash_profile)里的环境变量不会生效。如何让这些变量在 sudo 情况下生效呢?sudo -E ba...

2019-11-22 11:51:21 1545

原创 python repl 无法显示中文或者报错

尝试设置环境变量export PYTHONIOENCODING=utf-8`

2019-11-12 17:24:24 542

原创 golang 标准库 http 的 client 为什么必须手动关闭 resp.Body

使用 golang http client 请求,我们通常是这么干的resp, err := http.Get(...)if err != nil {..}defer resp.Body.Close()为啥必须 resp.Body.Close() 呢?回答这个问题其实需要回答两个问题:resp.Body.Close() 做了啥?为啥这么做?1 resp.Body.Clo...

2019-10-06 14:21:36 4956

原创 golang 标准库 http client 超时设置

golang 官方提供的 http 包里的 http client 可以通过一下两种方法设置超时(其他一些精细的超时控制比如设置 transport 里的 dial connect 的超时时间不在这里讨论)。1 client.Timeout// 设置1s超时cli := http.Client{Timeout: time.Second}2 req.WithContext// 设置1s超...

2019-10-05 23:23:44 16073

原创 linux 系统调用

https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/

2019-08-11 22:22:04 208

原创 ssh端口转发(打洞)

local port forwarding举例来说,工作中常见场景,一台 mysql 数据库 1.2.3.4:3306 在本地网络环境中不通,不过在远程开发机 1.2.3.5 上可以连通,通常需要 ssh 到 1.2.3.5上,然后 mysql client 命令行链接。使用 ssh local port forwarding 可以做到直接在本地连接1.2.3.4:3306ssh -fN ...

2019-07-14 12:59:35 928

原创 一键安装gcc 和 docker

写了一个脚本,自动化gcc 和 docker安装过程。优点:自动化快速不依赖网络屏蔽配置细节缺点:5. 对安装过程无感知6. 只能安装固定版本docker( docker ce 18),gcc( 9.1)gcc 脚本制作过程:shell 脚本 installgcc.sh#! /bin/bash# This is just a little script that ...

2019-07-13 19:34:13 2435

原创 批量重命名文件

为了避免ide跳转到 golang plan9 代码,需要把所有 “plan9” 到文件重命名,加上后缀.bak。find .local/go/src -name "*plan9*" -type f | xargs -n 1 sh -c 'f=$0; d=$(dirname $f); b=$(basename $f); mv $f $d/${b/$b/$b.bak}'...

2019-07-13 13:29:58 224

原创 文件操作为啥需要及时手动 close?

目前知道的原因:文件打开后保存在操作系统buffer中,如果程序异常退出,造成系统资源浪费。使用 file.close(),能够让os及时将buffer中的数据flush到文件里。防止在频繁open操作的场景下的file descriptors耗尽(文件描述符泄漏)。// todo待看源码验证。...

2019-07-06 12:37:57 3191

原创 多线程导致的内存泄漏

Joinable threads VS Detached threads线程有两种运行模式:Joinable ModeDetached ModeJoinable Thread & pthread_join()#include <stdlib.h>#include <stdio.h>#include <string.h>#include...

2019-06-28 22:59:54 4153

原创 内存释放free函数如何知道内存大小

想知道free如何工作那肯定需要知道malloc如何工作,正所谓怎么来的就怎么回去。使用malloc分配内存时候根据参数指定的大小,分配一块内存,然后返回这块内存的起始位置给调用者,这就是调用者拿到的所谓的指针。起始这个指针并不是真正的起始位置,真正的指针在malloc返回指针 p 的前面,内存分配器在 p 的前面用两个字节的空间来存放分配的内存大小信息。看下图:...

2019-06-28 15:19:05 2441

原创 pre-binary 安装docker

由于公司centos开发机有网络完全设置,总是存在网络不通或者外网不通或者yum源不全等各种各样等问题,导致我安装docker环境处处碰壁。现在这里记录一下我是用 pre-binaries 离线安装docker的过程。1. 准备 pre-binaries在这里下载二进制打包文件 https://download.docker.com/linux/static/stable/x86_64/ 。...

2019-03-15 19:50:16 172

原创 语义化版本编号(Semantic Versioning)

2019-01-11 11:16:54 486 1

原创 linux进程虚拟内存

http://csapp.cs.cmu.edu/2e/ch9-preview.pdfhttp://engineering.pivotal.io/post/virtual_memory_settings_in_linux_-_the_problem_with_overcommit/https://manybutfinite.com/post/anatomy-of-a-program-in-mem...

2018-12-06 23:30:17 4411

原创 为啥redis是单线程的?

看到网上一些讨论,现在在这里整理一下。多线程编程复杂并且线程之间需要加锁,影响性能CPU并不是瓶颈,网络才是瓶颈。redis 是一个server,通过网络io与多个client交互。多线程并不意味着更快。redis设计成单线程就是为了避免线程之间的锁竞争,使得内存访问超级快。...

2018-11-22 16:13:43 238

原创 虚拟机实现(C语言)

reference: https://felixangell.com/blog/implementing-a-virtual-machine-in-c/介绍这里写篇文章介绍一下用C语言实现虚拟机。我喜欢从事底层程序的工作, 比如编译器、解释器、解析器和虚拟机等。所以我写这篇文章来学习一下虚拟机是如何工作的,以此来带领自己进入底层编程领域。前提继续这篇文章之前你需要有:GCC/Cla...

2018-11-01 23:16:38 14484 2

原创 执行机器码

首先生成机器码为下面函数生成机器码:// mul.cint mul(int a, int b) { return a*b;}然后编译汇编之,生成 object 文件: gcc -c mul.c -o mul.o从 mul.o 中提取机器码:objdump -j .text -d mul.omul.o: file format elf64-x86-64Disa...

2018-10-25 21:37:22 3686

原创 C语言实现协程(coroutine)

Donald Knuth 说过:“子程序就是协程的一种特例。”编程过程中,最常用的就是函数调用,这时对于调用方来说,被调函数就是子程序(subroutine)。可以把协程理解相互配合工作的函数,函数之间可以相互切换,并且能够从上次切换的状态重新开始执行。python 程序中的 yield 关键字可以将一个函数停止执行并保持执行状态,等待再次被调用。 def rangeN(a, b...

2018-10-22 14:17:05 7534

原创 达夫设备(duff's device)

达夫设备(Duff’s device)是 c 编程语言里将循环展开的编程技巧。具体就是使用 switch 和 loop 结合,将 case 写在 loop 里面。下面代码展示里其执行过程:#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;string.h&amp;gt;void copy(int src[], int ...

2018-10-22 12:21:58 1090

原创 使用 dlv 调试 golang 程序

使用 dlv 前取消编译时优化go build -gcflags='all=-N -l'取消测试用例编译时优化go test -c --gcflags='all=-N -l'使用 dlvto be continue…

2018-10-17 22:03:39 1927

原创 结构体内存布局`alignof`

首先看看下面这个程序对输出#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdint.h&amp;gt;#include &amp;lt;stdalign.h&amp;gt;typedef uint32_t MYSIZE;struct Node{ char *Data;// 1 --- 指针变量,如果在64位操作系统上,占用8byte struct Node...

2018-09-10 11:46:40 947

原创 共享内存

方式1 使用mmap#include &amp;lt;sys/mman.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;strings.h&amp;gt;#include &amp;lt;unistd.h&amp;gt;#include &amp;lt;errno.h&amp;gt;#include &amp;lt;stdio.h&a

2018-09-10 11:12:51 211

原创 linux 下的 autotools 使用

在Linux环境下,当拿到一份源码,安装过程通常简单如下:./configuremakemake installc project 源码中通常有个 configure 程序,确切来说他是一个shell脚本。他的作用就是检测当前操作系统和一些执行环境(比如依赖和编译器等),然后根据这些信息生成 Makefile 文件。 一般项目中不会有 Makefile ,通过configure...

2018-08-23 22:12:11 587

信息流内容处理算法.pdf

信息流内容处理算法.pdf

2021-04-26

计算机中断处理机制(interrupt)

通俗来说,计算机外设,比如键盘发生事件(比如按下一个键)会通知到CPU, 这时CPU忙完手头的指令,就会转而执行对应的中断程序。 这句话太通俗,太笼统。那么下面细说。

2020-10-08

SVM_data2.mat

SVM 数据集合。每条数据有两个features和对应label。

2014-12-30

SVM_data1.mat

SVM 数据集合。每条数据含有两个features:x[0]和x[1],有label对应。

2014-12-30

logistic regression dataset

logistic regression ,one vs all 分类,实验程序所用数据集

2014-12-22

logistic regression (逻辑回归实验数据)

逻辑回归 实验程序 所用数据 详细参看我的博客 逻辑回归(logistics regression)

2014-12-16

numpy for python 2.7 (windows 64 bit)

如果你机器是windows 64bit,你的Python版本是2.7,想安装numpy但是一直安装不上或者不会安装,那么就下载这个安装包吧,一直点next就可以了

2014-12-12

增强学习算法2

英文教程。可以配合我的博客http://blog.csdn.net/bdss58/article/details/39338961中的例子学习

2014-12-05

强化学习算法教程

英文教程。可以结合我的博客http://blog.csdn.net/bdss58/article/details/39338961中的例子学习。

2014-12-05

增强学习教程2

英文教程,没有复杂的数学公式。可以结合我的博客http://blog.csdn.net/bdss58/article/details/39338961中的例子学习

2014-12-05

增强学习教程

英文版的教程,没有复杂的数学公式。入门必读。可以配合我的博客http://blog.csdn.net/bdss58/article/details/39338961中的例子,来学习增强学习。

2014-12-05

空空如也

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

TA关注的人

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