- 博客(123)
- 收藏
- 关注
原创 几种取时间的方法(附代码)
通过上述的get_tsc函数可以从这个寄存器中读出一个64位的数值,连续两次读取的值的差值,即是连续两次调用之间CPU运行的周期数。用这个周期数除以CPU运行的频率(通过上面的get_cpu_freq函数获得),即可得到具体的秒数。事实上,上面的所有取时间的函数,都是基于底层的类似rdtsc指令封装的,我们直接使用最底层的命令,固然快且精确,但是也不可避免的要直面一些坑。可以看到,我测试用的机器的CPU频率是2.9Ghz的,我每sleep一秒输出一下两次CPU计数器的差值,发现跟频率也能对的上。
2023-12-30 16:03:43 856
原创 txt文件行列转换(也适用于csv)
因为代码中输出到txt使用的分隔符是\t即tab键,因此复制全部的txt内容,复制到csv文件中,一般就可以了。如果不行的话:使用excel打开csv文件——数据——分列——分隔符号——点击tab和空格,就可以区分出使用tab键和空格分割出来的数据,行列整齐。
2023-04-14 15:55:53 1464 1
原创 返回char* p
输入char* 的字符串,输出char* 的字符串的反转。#include <bits/stdc++.h>using namespace std;char* str(char* str){ int i,j; char tmp; int len = strlen(str); char newstr[len]; //char newstr[] = "abc"; for(i=0; i< strlen(str); i++
2022-05-06 21:28:30 581
原创 关于shell的一些语法
1.如何计算shell的运行时长:starttime=$(date +%Y-%m-%d\ %H:%M:%S)codecodecodeendtime=$(date +%Y-%m-%d\ %H:%M:%S)echo "starttime: $starttime" >> xxx.logecho "endtime: $endtime" >> xxx.logstart_seconds=$(date -d "$starttime" +%s);end_sec.
2022-03-22 15:30:01 224
原创 发现了一些宝藏博主
最近在看分布式数据库的文章的时候,发现的这个宝藏博主https://learn.lianglianglee.com/里面还讲了关于Go语言和分布式系统等等,以后再慢慢看吧。以后会慢慢更新别的。
2022-03-22 15:10:52 1179
原创 CodeForce 1215B 题解
题目出处:Problem - B - Codeforces题目描述:给你一个序列包含n个元素的序列 a1,a2,…,an(每个元素 ai≠0)。你需要计算如下两个值:有多少对数(l,r)(l≤r) 满足al⋅al+1…ar−1⋅ar 的结果为正; 有多少对数(l,r)(l≤r) 满足al⋅al+1…ar−1⋅ar 的结果为负。即:这个序列中有多少子串(子串即连续子序列)的乘积为正,有多少子串的乘积为负。输入格式输入的第一行包含一个整数 n(1≤n≤2⋅105)—— ...
2022-03-13 16:04:18 361
原创 C++什么时候用 . 什么时候用->
1.在使用类的对象的时候用 .Node node;node.数据成员2.在使用类的指针的时候用->Node *node=new Node;node->数据成员
2022-02-27 16:43:08 1090
转载 (转载)C++ find find_if 和 lambda表达式结合的理解和用法
C++ find find_if 和 lambda表达式结合的理解和用法_湖边看驴的博客-CSDN博客_find_if lambda#include "stdafx.h"#include <algorithm>#include <iostream>#include <string>#include <list>using namespace std;class Demo{public: Demo(int age, string na
2022-02-27 16:24:10 1095
转载 【网络编程】ubuntu下使用firewall-cmd开放和关闭对外端口
1. linux下安装firewall-cmdsudo apt-get install firewalld11.1 开放端口(比如开放8001)firewall-cmd --add-port=8001/tcp --permanentfirewall-cmd --reload121.2 查看开放的端口firewall-cmd --list-all1会得到如下图,其中ports开放的端口,可以看到8001已经被开放了。1.3 关闭端口firewall-cmd --remove-po.
2021-12-29 09:29:25 1828
原创 C++ 容器怎么存放不同类型的值?
std::variant - cppreference.com使用std::variant,每次只能存放一个值,但是可以代表很多不同的数据类型std::variant<int,double>然后可以把这些放在一个vector里面:std::vector<std::variant<int, std::string>>>如果类型完全不确定,可以用any,any可以存储任何类型的数据。例如:std::vector<std::any>...
2021-12-06 17:43:32 4605
原创 为什么父类析构函数必须为虚函数
我们一直都在说,父类的析构函数一定要是虚函数,这样当我们在释放内存的时候才不会只析构父类,不析构子类。 网上找了一大堆资料,都没有从原理上来说明这一点,说的都是自己编程来判断的,比如后面的博客: 所以到底为什么呢? 我的理解是说: 对于A *p = new B( ); A是父类,B是子类 ,在释放p指针的时候:如果析构函数是虚函数,那么会去查看B对象的虚函数表,从子类开始析构,然后“每个析构函数结...
2021-12-01 15:08:05 993 1
转载 (转载)虚函数和纯虚函数的区别
原文来自:虚函数和纯虚函数的区别_Hackbuteer1的专栏-CSDN博客_纯虚函数和虚函数的区别在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。纯虚函数不能创建对象实例!!!首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,
2021-12-01 14:43:59 142
转载 (转载)【互斥锁和条件变量】何时互斥锁不够,还需要条件变量?
互斥锁的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足。条件变量的内部实质上是一个等待队列,放置等待(阻塞)的线程,线程在条件变量上等待和通知,互斥锁用来保护等待队列(因为所有的线程都可以放入等待队列,所以等待队列成为了一个共享的资源,需要被上锁保护),因此条件变量通常和互斥锁一起使用。条件变量允许线程等待特定条件(判断条件一般由用户自己给出)发生,当条件不满足时,线程通常先进入阻塞状态,等待条件发生变化。一旦其他的某个线程改变了条件,就可
2021-11-23 15:07:58 201
转载 (转载)gRPC初探——概念介绍以及如何构建一个简单的gRPC服务
原文:gRPC初探——概念介绍以及如何构建一个简单的gRPC服务 - takumiCX - 博客园gRPC初探——概念介绍以及如何构建一个简单的gRPC服务目录1. gRPC简介 2. 使用Protocol Buffers进行服务定义 2.1 定义消息 2.2 定义服务接口 3.构建简单的gRPC服务 3.1 编写proto文件,定义消息和接口 3.2 通过maven插件生成相应代码 3.3 gRPC服务端创建 3.5 gRPC客户端创建 3.6 ..
2021-11-17 19:46:17 1584
转载 (转载)C++右值引用和std::move
原文:一文读懂C++右值引用和std::move - 知乎1. 什么是左值、右值首先不考虑引用以减少干扰,可以从2个角度判断:左值可以取地址、位于等号左边;而右值没法取地址,位于等号右边。int a = 5;a可以通过 & 取地址,位于等号左边,所以a是左值。 5位于等号右边,5没法通过 & 取地址,所以5是个右值。再举个例子:struct A { A(int a = 0) { a_ = a; } int
2021-11-16 15:06:36 341
转载 (转载)C++ 11 Lambda表达式
原文链接:https://www.cnblogs.com/DswCnblog/p/5629165.htmlC++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda表达式Lambda表达
2021-11-16 14:45:49 120
转载 (转载)C++ 拷贝构造函数和赋值运算符及深拷贝和浅拷贝
原文在这里:C++ 拷贝构造函数和赋值运算符 - Brook_icv - 博客园请移步原文,我这边仅仅用来学习使用。本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数、什么情况下调用赋值运算符。最后,简单的分析了下深拷贝和浅拷贝的问题。拷贝构造函数和赋值运算符在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算符。但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符,这样的对象就不能通过值传递,也不能
2021-11-16 14:18:56 301
原创 输出频率最高且最先出现的字符
题目假设有一个字符串,字符串内部的所有字符都是在ascii编码的范围内,编码求出字符串中出现频率最高的字符,如果频率最高的字符有几个字符出现的频率一样,则输出最先出现的字符。如输入串为 “hello world, every body!”,则输出频率最高且最先出现的字符。#include<bits/stdc++.h>using namespace std;int main(){ string str = "bsydsssbbbfsdb"; map&l
2021-11-02 20:44:54 344
原创 自己实现一个LRU缓存
#include <bits/stdc++.h>using namespace std;class Node{public: int key; int value; Node* left; Node* right; Node(int x,int y): key(x),value(y),left(NULL),right(NULL){}};Node* dummyLeft = NULL;Node* dummyRight = NULL;int c.
2021-10-28 10:23:41 143
原创 多线程打印每个线程的线程ID
#include <iostream>#include<thread>#include<mutex>#include<condition_variable>using namespace std;mutex mu;condition_variable cv;int flag = 0;void print_id(int id){ unique_lock<mutex> lk(mu); for(int i=0; i&.
2021-10-28 10:21:54 1385 2
原创 创建链表&合并两个有序链表
1.创建链表#include<bits/stdc++.h>using namespace std;/*typedef struct ListNode{ int val; ListNode* next; ListNode() : val(0), next(NULL) {} ListNode(int x) : val(x), next(NULL) {} ListNode(int x, ListNode *next) : val(x), next(
2021-10-28 10:20:02 359
原创 C++ map相关操作
1.删除value是大写的map#include<bits/stdc++.h>using namespace std;//当我们删除了 it_pos 之后,it_pos 这个迭代器已经失效了,对其进行 it_pos++ 操作,//就是未知的操作,会引起异常。所以我们应该在删除 it_pos 之前就对其进行 ++。改成下面的代码就可以解决问题了。//c++ 11 之后,删除迭代器会返回指向下一个位置的迭代器void erase_upper(std::map<int, cha
2021-10-28 10:14:42 306
原创 回溯法解决全排列
#include<bits/stdc++.h>using namespace std;vector<vector<int>> result;vector<int> track;// 路径:记录在 track 中// 选择列表:nums 中不存在于 track 的那些元素// 结束条件:nums 中的元素全都在 track 中出现void backtrack(vector<int>& nums,vector<in.
2021-10-27 23:00:20 129
原创 创建二叉树&创建多叉树并层次化打印
创建二叉树:#include<bits/stdc++.h>using namespace std;/*typedef struct TreeNode{ int value; struct TreeNode* left; struct TreeNode* right;}TreeNode;*/class TreeNode{ public: int value; TreeNode* left; Tr..
2021-10-27 21:25:02 367
原创 git自己的理解
对git的一些理解首先要理解工作区、暂存区、版本库的概念提交代码时,先将工作区代码add进入暂存区,然后进一步commit到版本库,注意这些操作都是在本地进行的。工作区:用来编辑保存项目文件的地方,也是用户能直接操作到的地方。暂存区:保存了下次将提交的文件列表信息,一般在 Git 仓库目录中,是一个叫index的文件,通常多数说法还是叫暂存区域;版本库:也叫本地版本库,之所以说git 快,是因为它是分布式版本控制系统,大部分提交都是对本地仓库而言的,不依赖网络,最后一次会推送的到远程仓库
2021-10-27 17:08:18 109
转载 (转载误入)各种web服务器类型和uWSGI, Gunincorn
参考资料:https://lenciel.com/2013/08/why-you-need-something-like-gunicorn/#%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BD%AF%E4%BB%B6目录服务器 HTTP服务器 Application服务器 代理服务器 前向代理服务器 反向代理服务器 负载均衡服务器 缓存服务器 那,我们为什么需要uwsgi
2020-11-18 16:52:25 133
原创 linux下的find和grep命令
一、区别1.find命令是根据文件属性进行查找的,比如你去通过文件名查找文件所在位置,文件修改时间,文件大小等等。2.grep命令是根据文件内容进行查找的,比如你查找的文本包含一句叫做“test”的,它会对文件的每一行按照给定的模式(patter)进行匹配查找。二、find命令find命令有很多用法,我目前是用来查找一个文件的所在位置,使用格式为:find -name f...
2020-11-18 16:51:27 193
原创 使用 Docker 搭建 GitLab 的笔记,基于james bolg的博客及其他相关资料
很大部分按照博主jamesbolg的博客http://jemgeek.com/archives/2019/install-gitlab-with-docker.html写的,但是还是遇到了一些坑,我会贴上坑的解决办法。作为互联网工作者,相信对GitHub这个全球最大的同性交友网站一定不会陌生,GitHub使用的是目前如日中天的Git分布式版本控制系统。Git是什么?Git是目前世界上最先进的分布式版本控制系统,没有之一!关于Git与GitHub的相关内容可以查...
2020-10-18 23:03:27 451
转载 (转载)Docker技术三大要点:cgroup, namespace和unionFS的理解
https://blog.csdn.net/i042416/article/details/85161108www.docker.com的网页有这样一张有意思的动画:从这张gif图片,我们不难看出Docker网站想传达这样一条信息, 使用Docker加速了build,ship和run的过程。Docker最早问世是2013年,以一个开源项目的方式被大家熟知。Docker的奠基者是dotcloud,一家开发PaaS平台的技术公司。不过可惜的是,这家公司把Docker开源之后,于.
2020-10-14 19:31:07 453
原创 java分词器ansj工具的使用
前置工作:贴上链接:项目介绍首页:推荐查看5.x版本的3.x的介绍:http://nlpchina.github.io/ansj_seg/5.x的介绍:https://github.com/NLPchina/ansj_seg/wikigithub完成项目代码页https://github.com/NLPchina/ansj_segjar包下载页:要选择5.x版本之后的这个按钮进去才能下载jar包让分词运行需要两个jar,分别是nlp-lang和ansj_seg...
2020-10-13 17:37:59 1652
原创 javax.el.PropertyNotFoundException: 类型[com.jmp.pojo.ActionPDW_Basic]上找不到属性[SampleNo]
在java中 实体类get,set的方法首字母一定要小写!!!!! 类的属性值的首字母必须小写!!!!! 索性,所有变量都小写开头得了,省事儿。 举个例子,下面这些ActionPDW_Basic类的属性值,首字母都是小写的。get和set方法首字母也是小写的。我们把sampleNo改成SampleNo报错如下:...
2020-09-27 22:03:56 524 2
转载 (转载)什么是Http无状态?Session、Cookie、Token三者之间的区别
转载自:https://www.cnblogs.com/lingyejun/p/9282169.html请移步原文一、什么是HTTP无状态?1.1定义:HTTP无状态协议,是指协议对于交互性场景没有记忆能力。1.2举个例子:在点击一个纯的html网页,请求获取服务器的html文件资源时,每次http请求都会返回同样的信息,因为这个是没有交互的,每一次的请求都是相互独立的。第一个请求和第二个请求也没有先后顺序,返回处理哪个,结果都是同样的资源页面,因为这种场景是无交互的,无..
2020-09-09 20:57:31 218
转载 (转载)git pull origin master与git pull --rebase origin master的区别
请移步原文https://www.jianshu.com/p/dc367c8dca8e1.git pullgit pull = git fetch + git merge FETCH_HEAD git pull --rebase = git fetch + git rebase FETCH_HEAD git fetch : 从远程分支拉取代码,可以得到远程分支上最新的代码。所以git pull origin master与git pull --rebase orig..
2020-07-29 17:13:40 4065
转载 (转载)初识Servlet、JSP和Tomcat
一、Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,一般为后者。Servlet运行于支持Java的应用服务器中。从原理上来讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HT
2020-07-22 16:34:43 399
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人