ring

How to get all the params of a POST request with Compojure

这一生的挚爱 提交于 2021-01-22 06:59:37
问题 According to the Compojure documentation on routes, I can easily get individual parameters like this: (POST "/my-app" [param1 param2] (str "<h1>Hello " param1 " and " param2 "</h1>")) How do I get all parameters, not just individual parameters? 回答1: compojure handlers receive the entire request map as their argument, so handler has also an access to all of the parameters. For example, to see entire request: (POST "/" request (str request)) or, to extract all form parameters: (POST "/" request

Linux查看硬件信息命令

人走茶凉 提交于 2021-01-20 01:56:58
一、查看服务器硬件信息 (1)查看服务器型号、序列号 [root@Master ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial" (2)查看主板型号 [root@Master ~]# dmidecode |grep -A16 "System Information$" (3)查看BIOS信息 [root@Master ~]# dmidecode -t bios # dmidecode 2.12 SMBIOS 2.8 present. Handle 0x0008, DMI type 0, 24 bytes BIOS Information Vendor: HP Version: U19 Release Date: 12/27/2015 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 16384 kB Characteristics: PCI is supported PNP is supported BIOS is upgradeable BIOS shadowing is allowed ESCD support is available Boot from CD is supported Selectable boot is

浅谈分布式 ID 的实践与应用

三世轮回 提交于 2021-01-12 14:48:45
在业务系统中很多场景下需要生成不重复的 ID,比如订单编号、支付流水单号、优惠券编号等都需要使用到。本文将介绍分布式 ID 的产生原因,以及目前业界常用的四种分布式 ID 实现方案,并且详细介绍其中两种的实现以及优缺点,希望可以给您带来 关于分布式 ID 的启发 。 为什么要用分布式 ID 随着业务数据量的增长,存储在数据库中的数据越来越多,当索引占用的空间超出可用内存大小后,就会通过磁盘索引来查找数据,这样就会极大的降低数据查询速度。如何解决这样的问题呢?一般我们首先通过分库分表来解决,分库分表后就无法使用数据库自增 ID 来作为数据的唯一编号,那么就需要 使用分布式 ID 来做唯一编号 了。 分布式 ID 实现方案 目前,关于分布式 ID ,业界主要有以下四种实现方案: UUID :使用 JDK 的 UUID#randomUUID() 生成的 ID; Redis 的原子自增 :使用 Jedis#incr(String key) 生成的 ID; Snowflake 算法 :以时间戳机器号和毫秒内并发组成的 64 位 Long 型 ID; 分段步长 :按照步长从数据库读取一段可用范围的 ID; 我们总结一下这几种方案的特点: 方案 顺序性 重复性 可用性 部署方式 可用时间 UUID 无序 通过多位随机字符达到极低重复概率,但理论上是会重复的 一直可用 JDK 直接调用 永久

DFS 深度优化搜索

∥☆過路亽.° 提交于 2021-01-06 14:04:25
DFS 深度优化搜索 DFS 算法 思想:一直往深处走,直到找到解或者走不下去为止 类似于树的先根遍历。就是不撞南墙不回头 模板一: DFS(dep,..)//dep代表目前DFS的深度 { if(找到解||走不下去) { ... return; } DFS(dep+1,..)//枚举下一种情况 } 模板二: DFS(dep,..) { if(判断条件) return; for(扩展转态) { 判断合法; 记录; DFS(dep+1,...) 回溯; } } DFS遍历图 1.从图中v0出发,访问v0。 2.找出v0的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直至刚访问过的顶点没有未被访问的邻接点为止。 3.返回前一个访问过的仍有未被访问邻接点的顶点,继续访问该顶点的下一个未被访问领接点。 4.重复2,3步骤,直至所有顶点均被访问,搜索结束。 v0->v2->v4->v6->v1->v5->v3 v0 v2 v1 v3 v4 v5 v6 DFS 题型 一:数据型 Prime Ring Problem 题意 已知一个数n,将数字1~n围成一个圆环,要求: 相邻两个数之和为素数。 0<n<20 输出: 数字的方向一致(同顺时针或同逆时针),并保证排列不重复 只有一个数(n==1)时,输出1 输出Case k:(k为数据组数),每一组输出(第一个除外

聊聊风口上的 eBPF

岁酱吖の 提交于 2021-01-06 11:01:42
eBPF 是一个用于访问 Linux 内核服务和硬件的新技术,由于其灵活性和高性能等特点,被迅速用于网络、出错、跟踪以及防火墙等多场景。目前国内已有少数企业开始尝试将 eBPF 引入生产实践,又拍云也是其中一个。专为技术开发者提供知识分享的 Open Talk 公开课邀请了又拍云开发工程师周晨约直播分享 eBPF 的学习经验与开发心得,并对其分享内容进行整理,下拉至文末点击阅读原文可回看原视频。 大家好,今天分享的主题是《eBPF 探索之旅》,围绕三部分展开: eBPF 是什么 eBPF 能做什么 如何编写 eBPF 程序 认识 eBPF eBPF 是什么,从字面上来看是扩展伯克利包处理器,那伯克利包处理器是什么呢? 在此之前先来了解一个性能优秀的常用抓包工具:tcpdump tcpdump 图中展示了两个常用指令 指令一:指定 IP 和端口,可以抓到 IP 为 220.173.103.227,端口为 80 的包 指令二:加上 grep,可以过滤出带有 route 字段的数据 那么 tcpdump 又是如何做到通过用户提供的规则处理网络上收到的包,再 copy 给用户的呢?如果放在用户层,就需要在系统里所有 socket 读写的时候做一层处理,把规则放上去,这样做难度太大。而 tcpdump 是基于 libpcap 库实现的,libpcap 能做到在驱动将包交给内核网络时

Linux日志系统分析:rsyslog、syslog和klog

孤街醉人 提交于 2020-12-30 03:00:00
参考博客:   https://blog.csdn.net/lidonghat/article/details/55004280   https://blog.csdn.net/u012247418/article/details/83684052 1.syslog是 Unix 系统的一个常见组件,用于执行系统日志记录活动。 2.syslogd 是它的守护进程,syslogd 从一组日志源(如 /dev/log 和 /dev/klog )中读取数据,并按照 /etc/syslog.conf 中的说明处理这些日志消息。通过调用syslog(),可将应用程序日志消息记录到 syslog 中。syslog 消息采用一种包含可选优先级和设备的标准格式。优先级指示消息的紧急程度,设备指示发布消息的子系统。/usr/include/syslog.h中定义了它的优先级和设备资源。 3.klog是一个从Unix内核接受消息的设备,klogd 守护进程获得并记录 Linux 内核信息。通常,syslogd 会记录 klogd 传来的所有内核信息。 kernel---> 物理终端(/dev/console) --> /var/log/message 命令dmesg 就是控制台输出/var/log/message日志信息 /sbin/init   /var/log/message: 系统标准错误日志信息

调试寄存器 原理与使用:DR0-DR7

放肆的年华 提交于 2020-12-19 06:15:31
调试寄存器 原理与使用:DR0-DR7 下面介绍的知识性信息来自intel IA-32手册(可以在intel的开发手册或者官方网站查到),提示和补充来自学习 调试 器 实现时的总结。 希望能给你带去有用的信息。 (DRx对应任意的一个 调试 寄存 器 。LENn对应任意一个长度。Ln对应任意一个局部置位) DR0-DR7可以直接被读写操作(MOV 指令之类的,DRx可以是源操作数也可以是目的操作数) 但是,DRx的访问是需要一定权限的。比如你用MOV操作的话,你需要在实地址模式,系统管理模式(smm)或者在保护模式(CPL设0).如果权限不够,将会在访问DRx的时候尝产生#GP(general-protection)异常 现在来看看DRx可以干些什么? 1.设置发生断点的地址(线性地址) 2.设置断点的长度(1,2,4个字节,但是执行断点只能是1) 3.设置在 调试 异常产生的地址执行的操作 4.设置断点是否可用 5.在 调试 异常产生时, 调试 条件是否是可用 (以上直接翻译自"Intel 64 and IA-32 Architectures Software Developer’s Manual" volume 3。 以下来自个人的总结。当然,也是参考intel官方资料得来的) 我们来看看 调试 寄存 器 的一些细节信息。 下图很重要,后面的介绍都是针对这个图说的。

docker构建dpdk运行环境镜像

China☆狼群 提交于 2020-12-19 02:43:47
构建dpdk运行环境 编写Dockerfile文件 FROM debian:stretch MAINTAINER yanhai<yh@chinabluedon.cn> COPY sources.list /etc/apt/ COPY dpdk-18.11.tar.xz /opt/ # 解压xz格式的文件,需要先安装xz-utils RUN apt-get update && \ apt-get install -y xz-utils && \ apt-get install -y gcc make && \ apt-get install -y libnuma-dev && \ apt-get install -y libpcap-dev && \ rm -rf /var/lib/apt/lists/* # 关闭掉一些编译开关,因为我们不需要这些功能,打开会由于某些原因编译失败 # 如果使能PMD_PCAP,需要先安装libpcap开发包 RUN cd /opt && tar -xf dpdk-18.11.tar.xz && \ cd dpdk-18.11 && \ export RTE_SDK=/opt/dpdk-18.11 && \ export RTE_TARGET=x86_64-native-linuxapp-gcc && \ sed -i 's/CONFIG_RTE

TIOBE 12 月编程语言:Python 有望第四次成为年度语言!

送分小仙女□ 提交于 2020-12-10 05:46:41
须臾间,2020 年已经不足一个月。近日,编程语言社区 TIOBE 最新发布了 12 月编程语言排行榜。下个月月初,TIOBE 社区也即将揭晓 2020 年年度编程语言,谁又能摘得桂冠? 毋庸置疑,能够获得年度编程语言称号的编程语言必然是 2020 年中最受关注以及流行度、涨幅最高的编程语言。对此,TIOBE 官方进行了相应的统计,在过去一年中,涨幅最大的为 Python,增幅 1.9%;其次为 C++ 0.71 %;R 语言增幅 0.6%、Groovy 增幅 0.69%。 综合来看,其他任何语言超过 Python 的机率都比较低。这意味着 Python 很有可能将于今年也是有史以来第四次获得年度编程语言称号的编程语言。 除了以上,值得关注的是,近几个月期间,TIOBE 榜单已然成为了 Python 与 Java 的追逐战战场。本月中,Java 虽然整体热度与趋势有所下滑,但还是再次超越了 Python 重回第二宝座。 其他编程语言排名 另外,本月编程语言榜单还有一些变化: Rust 从第 25 位上升到了 21 位; Julia 从 30 名上升到了第 26 名; Dart 从第 27 位下降到第 31 名; Kotlin 从第 36 位下降到第 40 位; TypeScript 从第 43 名上升一位,至第 42 名。 下面列出了完整的21-50名,因为是非官方发布的

X Selections, Cut Buffers, and Kill Rings(系统剪贴板内容详解)

吃可爱长大的小学妹 提交于 2020-12-08 08:51:11
X Selections, Cut Buffers, and Kill Rings. © 1997, 2002 by Jamie Zawinski <jwz@jwz.org> This document began as a description of how Emacs and XEmacs deal with copying and pasting text under X11. However, I've noticed that a lot of people are being referred here to answer more general questions of how copying and pasting work under X, or, more specifically, how they should implement copying and pasting in their own X applications. So allow me to summarize... Selections: X11 has these things called ``selections.'' They have names. There are really only two you need to know about: the Primary