自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(557)
  • 资源 (2)
  • 论坛 (4)

原创 Mongodb go sdk 测试

启动 mongodbdocker run -it --rm -p 27017:27017 --name mongodb -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo:4.4mongo_exp1.gopackage mainimport ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mon

2020-10-21 13:31:45 9

原创 使用 Docker 启动 mongodb

使用 docker 启动 mongodb$ mkdir db$ docker run -it --rm -p 27017:27017 -v ${PWD}/db:/data/db --name mongodb -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo:4.4安装 mongodb-shell $ wget -qO - https://www.mongodb.org/static/pgp/

2020-10-20 21:22:55 7

原创 [cpp] 使用 shared_ptr的自定义删除函数模拟 go 语言的 defer 功能

go 语言的 defer 定义函数退出时的行为,c++ 的 shared_ptr 可以自定义deleter 函数明确变量在析构时的行为。因此可以使用 share_ptr 的自定义 deleter 函数模拟 go 语言中的 defer 行为#include <memory>#include <iostream>int main(){ int x = 5; std::shared_ptr<int> tx(nullptr,[&](int *){

2020-10-10 13:59:19 13

原创 MySQL的隔离性测试

在阅读本文前,请思考以下分别输出什么操作序列1在数据库中存入 A=1Client1启动一个事物T1Client2启动一个事物T2Client1 读取 A 的值 X1Client2设置 A=2Client2提交事物T2Client1 读取 A 的值 X2Client1提交事物T1Client1 读取 A 的值 X3请问 X1 X2 X3 分别为什么值?操作序列2在数据库中存入 A=1Client1启动一个事物T1Client2启动一个事物T2Client2设置 A=2C

2020-09-17 16:14:54 11

原创 [docker]运行指定 GPU

docker 内运行运行所有的 GPU docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi输出结果+-----------------------------------------------------------------------------+| NVIDIA-SMI 450.57 Driver Version: 450.57 CUDA Version: 11.0 ||--------

2020-09-14 12:09:01 239

原创 [go] 检查 channel 是否已经被关闭

val, ok := <-ch如果 channel 已经被关闭,上述调用立刻返回,并且 ok 为 false,完整测试代码如下package mainimport ( "log" "sync")func main() { ch := make(chan int) var wg sync.WaitGroup go func() { for i := 0; i <= 100; i++ { ch <- i } close(ch) }() wg.Ad

2020-09-11 11:55:54 25

原创 [go]zap配合logrotate实现日志滚动

zap是Uber 提供的GoLang高性能日志库,zap 本身并不提供日志滚动功能,官方 FAQ 提到,可以使用Linux系统自带的 logrotate 或lumberjack实现日志滚动功能lumberjack 只能向文件输出日志,如果我们希望同时向stderr 和文件输出日志,只能使用 logrotate 配合自定义 WriteSyncer 实现了Go代码package mainimport ( "bufio" "context" "fmt" "go.uber.org/zap" "g

2020-09-10 17:01:27 67

原创 [go] 快速排序

实现go 的 sort.Interface接口,实现自定义数据类型的快速排序package mainimport ( "log" "sort")type myStructExp struct { id int}type myStructExps []*myStructExpfunc (s myStructExps) Len() int { return len(s)}func (s myStructExps) Less(i, j int) bool { return s[

2020-08-29 16:31:15 27

原创 [linux] page 写磁盘并不是原子性

以 page 为单位,向磁盘写数据,并不是原子性的,举例说明:写线程 writer 每次向磁盘输入一个 page 的数据量,w1 w2 w3 ...w1 w2 w3 ... 分别代表一个 page 的数据量读线程 reader 每次从磁盘读一个 page 的数据量操作系统并不保证 writer 写完整个 page 后,才让当前写入的数据整体对 reader 可见reader 读取一个 pape 的数据,可能部分来自 w1 部分来自 w2测试代码如下:package mainimport

2020-08-28 11:00:51 28

原创 [etcd] WithMaxCreateRev 和 WithRev 的区别

阅读 etcd 分布式锁 mutex 的源码时,遇到 waitDeletes 函数func waitDeletes(ctx context.Context, client *v3.Client, pfx string, maxCreateRev int64) (*pb.ResponseHeader, error) { getOpts := append(v3.WithLastCreate(), v3.WithMaxCreateRev(maxCreateRev)) for { resp, err :

2020-08-26 11:06:00 41

原创 [etcd] 使用 Txn 一次性插入多个语句

etcd 使用 Txn 提供简单的事务处理,使用这个特性,可以一次性插入多条语句,测试代码如下:package mainimport ( "context" "fmt" "go.etcd.io/etcd/clientv3" "log")func main() { endpoints := []string{"127.0.0.1:10001", "127.0.0.1:10002", "127.0.0.1:10003"} cli, err := clientv3.New(clientv3

2020-08-25 10:27:27 58

原创 [etcd] 删除后重新插入,版本号重新计数

在 etcd 中,数据删除后重新插入,对应的版本号重新计算,测试代码如下:$ etcdctl --endpoints=http://127.0.0.1:10001 put k1 v1 -w json{"header":{"cluster_id":18293669711776909085,"member_id":8241799522139745222,"revision":2,"raft_term":2}}$ etcdctl --endpoints=http://127.0.0.1:10001 put

2020-08-24 14:30:30 23

原创 [go] go 面试题--变量作用域

以下程序,输出的 &i 是否相同package mainimport ( "fmt" "math/rand")func randInt() (int, int) { return rand.Int(), rand.Int()}func main() { p1, i := randInt() fmt.Printf("1: &i = %x, %d\n", &i, p1) p2, i := randInt() fmt.Printf("2: &i

2020-08-24 13:55:40 22

原创 [cpp]无符号数据测试

#include<stdio.h>int main(){ unsigned int x1 = -1; unsigned int x2 = 0; unsigned int x3 = x2-x1; printf("x1 = %u\n",x1); printf("x2 = %u\n",x2); printf("x3 = %u\n",x3); printf("x2-x1 = %u\n",x2-x1); if(x2>x1) printf("x2 > x1\n"); els

2020-08-10 19:13:22 32

原创 [cuda]异步内存拷贝中的默认同步

MemcpyIn the reference documentation, each memcpy function is categorized as synchronous or asynchronous, corresponding to the definitions below.SynchronousAll transfers involving Unified Memory regions are fully synchronous with respect to the host.F

2020-08-03 16:23:55 47

原创 高德地图上那种路况堵得发黑是如何实现的?

原文地址: sh truck bootcamp在前一篇文章中,我们简单的介绍了使用 Arctern分析纽约出租车的的数据。在那个例子中,出租车的数据只有上点和下车点的数据,没有完整的轨迹数据,所以整个分析显得有点意犹未尽。在这篇文章中,我们使用上海市的渣土车数据,该数据包含完整的轨迹数据,所有我们可以实现类似高德地图的功能,分析在特定时间段内那些道路比较拥堵。废话不多说,以下为原文。环境准备安装 Arctern安装 Jupyter在上一步中的 arctern_env 环境中执行以下

2020-06-22 10:53:53 345

原创 高德地图上那种轨迹纠偏是如何实现的

原文地址: nyc taxi bootcamp这里介绍一个好玩的开源项目Arctern。这个项目好玩在哪里呢,下图是纽约出租车上车点的原始数据我们可以看到

2020-06-16 16:45:35 467

原创 plotly绘制轮廓图

参考代码: plotlyimport plotly.express as pxg0={'type': 'Polygon', 'coordinates': [[[-86.496774, 32.344437], [-86.717897, 32.402814], [-86.814912, 32.340803], [-86.890581, 32.502974], [-86.917595, 32.664169], [-86.71339, 32.661732], [-86.714219, 32.705694],

2020-06-08 19:34:39 154

原创 [scala]sbt运行指定测试

sbt 运行全测试sbt testsbt运行指定测试sbt "testOnly FunctionsTest -- -t ST_Within"

2020-05-17 11:20:46 181

原创 [c++]蛋疼的面试题目

#include<stdio.h>int main(){ int a[]={10,11,12,13,14,15}; int b=3; printf("%d, %d\n",a[b],b[a]); return 0;}输出结果13, 13

2020-05-09 18:35:54 82

原创 [linux]手动下载maven包

由于网络问题,自动下载maven的包依赖时经常出错,遇到如下错误:::: ERRORS SERVER ERROR: HTTPS Required url=http://repo1.maven.org/maven2/org/scala-tools/sbinary/sbinary_2.9.0/0.4.0/sbinary_2.9.0-0.4.0.pom新建脚本download.sh#!/bin/bashtarget=$1mv_dir=${HOME}/.m2/repository/${target}

2020-05-09 10:24:49 183

原创 [spark]Spark UDT with Codegen UDF

本文介绍自定义一种数据类型Point,并针对Point实现Add操作,并且该Add操作在codegen中实现build.sbtname := "PointUdt"version := "0.1"scalaVersion := "2.12.11"libraryDependencies += "org.apache.spark" %% "spark-core" % "3.0.0-pr...

2020-05-06 15:18:38 102

原创 [python]yield测试

python函数运行到yield的地方暂停,并返回。调用next后冲上次yield结束的位置重新运行测试程序如下:def yield_test(): print("first") yield 1 print("second") yield 2for x in yield_test(): print("=======") print(x) ...

2020-04-21 20:51:49 62

转载 [转]maven改用国内源

~/.m2/settingx.xml<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 ...

2020-04-08 13:59:35 65

原创 使用代理下载docker image

由于网络条件不好,可能导致下载docker镜像失败的问题,现象如下:➜ ~ docker pull ubuntu:16.04Error response from daemon: Get https://registry-1.docker.io/v2/library/ubuntu/manifests/16.04: net/http: TLS handshake timeoutdocker...

2020-03-21 17:28:21 208

原创 [docker]在容器中动态添加端口导出

当前docker的容器正在运行,信息如下➜ ~ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6ca7879115c1 ubuntu:16.04 ...

2020-03-18 18:03:19 206

原创 git-lfs

git clone的仓库有大文件时,可能出现git-lfs,大文件可能出现如下内容: ➜ data git:(master) cat big_file.csv version https://git-lfs.github.com/spec/v1oid sha256:15bd68be779b16a9a9723e72bb14f398a743f16c548f6ade3a305fe77c2f250...

2020-03-16 17:54:36 69

原创 [cpp]double最大值、最小值及正无穷

#include <iostream>#include <limits>int main(){ double inf = std::numeric_limits<double>::infinity(); double max = std::numeric_limits<double>::max(); double min...

2020-03-01 19:51:40 186

原创 http代理解决github龟速的问题

设置github的http代理git config --global https.proxy https://127.0.0.1:8123git config --global http.proxy https://127.0.0.1:8123设置remote为https,并携带用户名际密码git remote remove origingit remote add origin ht...

2020-02-14 23:15:19 101

原创 ssh 跳转进入局域网内部电脑

假设局域网内部有两台机器,A和B,其中机器A具有公网ip,机器B只有内网ip,网路信息如下。机器A公网IP: 10.23.45.67公网SSH端口: 17890内网IP: 192.168.1.30SSH 用户名: mma机器A内网IP: 192.168.1.10SSH 用户名: mmbSSH 端口: 22现在机器C上,配置SSH跳转,从C登录A,再从A跳转进入B在机器C上...

2020-02-11 14:46:02 218

原创 设置github ssh的proxy

假设当前环境中有http及https的代理,信息如下:export https_proxy="http:://127.0.0.1:8123"export https_proxy="http:://127.0.0.1:8123"在~/.ssh/config内添加如下内容:Host github.com ProxyCommand nc -X connect -x 1...

2020-02-10 17:28:27 351

转载 [转]通过 ngrok 实现 ssh 内网穿透

原文链接:通过 ngrok 实现 ssh 内网穿透ngrok用 ssh 访问一台主机,如果和主机在一个局域网中或者主机拥有公网 IP,就可以使用 ssh 命令直接连接主机的 IP 地址,但是大部分公司和家庭内部都是局域网,并不能给局域网内的每一台主机都分配一个公网 IP,这时候就需要进行内网穿透,才能从外部连接到局域网内的主机。ngrok 是一个反向代理工具,可以实现将内网的端口暴露到公网,...

2020-02-10 15:04:24 474

原创 [conda]clone environment

conda基于当前环境复制出一个新的环境基于base_env创造出新的new_newconda create --name new_env --clone base_env参考资料:clone env

2020-02-01 16:57:31 141

原创 [spark]使用injectOptimizerRule改写Plan

自定义UDF函数如下spark.udf.register("inc", (x: Long) => x + 1)测试语句如下val df = spark.sql("select sum(inc(vals)) from data")df.explain(true)df.show()上述测试语句输出的LogicalPlan如下== Optimized Logical Plan =...

2020-01-22 14:05:12 92

原创 [spark]RewriteDistinctAggregates

如果Aggregate操作中同时包含Distinct与非Distinct操作,优化器可以将该操作改成成两个不包含Distinct的Aggregate假设schema如下create table animal(gkey varchar(128), cat varchar(128), dog varchar(128...

2020-01-21 14:37:06 85

原创 [spark]Rewrite SparkSQL Plan

OptPlanTest.scalaimport org.apache.spark.sql.SparkSessionimport org.apache.log4j.Loggerimport org.apache.log4j.Levelpackage org.apache.spark.sql.optplan { import org.apache.spark.rdd.RDD imp...

2020-01-20 15:53:48 79

原创 [scala]模式匹配中的类型擦除

在默认情况下,基于JVM的scala在运行时是没有类型信息,在容器类型中,只有Array在运行是保留了类型信息,其它容器不保留类型信息,测试代码如下import scala.reflect._object patternTest { def checkIntList[T: ClassTag](list: List[T]): Boolean = { if (classTag[T]...

2020-01-17 14:52:03 107

原创 [spark]非udf的自定义函数

参考spark的内置函数,实现非udf的自定义函数MyAdd.scalaimport org.apache.spark.sql.SparkSessionimport org.apache.log4j.Loggerimport org.apache.log4j.Levelpackage org.apache.spark.sql.myfunctions { import org.ap...

2020-01-10 16:49:51 113

原创 [spark]单机下的集群模式运行

现有一台服务器,配置信息如下:cpulscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianCPU(s): 48On-line CPU(s) list: 0-47Thread(s) per c...

2020-01-09 16:17:31 99

原创 [LLVM]在汇编语言上插入指令

问题:LLVM如何实现在汇编语言的.s 文件中所有call指令前后添加2行固定指令?答:LLVM中function相关的pass用于修改ir,而machine function相关的pas用于修改mir,也就相当于修改生成的汇编编写machine function pass然后遍历每个指令,在call之前调用buildMI函数插入需要的指令,这个pass必须在code emit之前,指令调度之...

2020-01-08 10:01:58 267

fetch12306

本文在Linux平台上,以Python为开发工具,介绍12306抢票软件的基本原理,并引入示例,讲解如何自己编写一个12306抢票软件。

2016-12-22

lq51--自己写的基于51单片机的嵌入式实时操作系统

Keil 自带的 RTX51—Tiny 系统有这样几个缺点:1、非占先式任 务调度,这样系统的实时性就很难保证;2、提供的系统服务太少, 只有 wait 与 signal。而 RTX51—Tiny 的优点是:1、Keil 公司自己开 发的,使用_task_关键字区别每个任务,这样可以使得被不同任务调 用的不同函数即使没有相互调用,他们的局部变量也不会相互覆盖。 免去了在 SmallRTOS 中需要手动制止函数间局部变量的相互覆盖。 2、内核小。整个 RTX51--Tiny 完整编译只需 900B 的空间。 lq51 系统整合了 RTX51—Tiny 的优点。1、在 lq51 系统中_task_ 关键依然有效,0 号任务依然是最高优先级的任务,1 号任务次之, 依次类推。2、lq51 系统完整编译只需 2.5K 的 ROM,并且系统自带 的 128B RAM 对 lq51 系统也是绰绰有余的。同时 lq51 系统弥补了 RTX51—Tiny 的缺点。首先 lq51 系统采用占先式任务调度,这样可 以最大限度保证系统的实时性。其次 lq51 系统提供 lqDelay、lqWaitFlg、 lqWaitSem、lqWaitMsg 这样四种系统服务,并 且每种系统服务都是可裁剪的。 lq51 系统中很多关于实时系统的概念及实现方法是从 ucosII 中学 来的,同时借鉴了 SmallRTOS 及 RTX51—Tiny。

2009-04-07

adream307的留言板

发表于 2020-01-02 最后回复 2020-01-02

【请教】一道算法题

发表于 2010-10-21 最后回复 2016-02-15

Qt、wxWidgets等控件编程的一个问题

发表于 2009-07-04 最后回复 2010-03-30

求助:putchar() 输出double

发表于 2008-12-28 最后回复 2008-12-30

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