
编程语言学习笔记
文章平均质量分 78
C++、Golang、python、Java学习过程的一些笔记
正则化
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Golang依赖管理(GOPATH->vendor->Go Module)
Go依赖管理历程原创 2022-08-30 22:11:35 · 1785 阅读 · 1 评论 -
STL迭代器原理
参考C++ STL迭代器原理和实现迭代器STL(Standard Template Library)中提供了许多容器,包括vector、list、map、set等,少部分容器(vector)可以通过下标来访问其中的元素,而大部分的容器都不可以这么做,为了能够以一种统一的方式来访问STL的所有容器,STL提供了迭代器访问的方式,它的实现方式是在每个容器类中内嵌了一个专属的iterator类,在iterator类中实现了对该容器的元素的遍历和访问。通过在所有容器类中实现iterator,就可以很方便地实现原创 2022-01-07 15:25:46 · 1315 阅读 · 1 评论 -
配置eclipse C++
先下载eclipse:http://www.eclipse.org/downloads/eclipse-packages/解压后直接打开然后要配置C++环境,下载Mingw,参照:https://jingyan.baidu.com/article/0320e2c11564ca1b87507b8f.html然后重启eclipse,可以新建C++project,可以看到有MinGW...原创 2019-01-18 17:58:44 · 153 阅读 · 0 评论 -
C++读写txt文件
参考https://blog.youkuaiyun.com/u010220351/article/details/523476311、读txt目标txt文件:代码:#include <fstream> int main(){ ifstream infile; infile.open("edge.txt"); int v1,v2; w...原创 2019-01-15 21:02:51 · 283 阅读 · 0 评论 -
python读txt与写excel,将经纬度坐标点显示在地图上
逐行读取txt文件得line,每行按空格分割一个数组line_data[],line_data[0]是userID,对于相同的user只取其第一个位置样本,其中提取第三四列元素,写进excel中.原txt文件(高达300多M,用UltraEdit才打得开):例如上图,对于userID为1的样本只需要把经度2.333和纬度48.8633提取出来,以此类推,得到每个用户的第一个位置的经纬度...原创 2019-01-07 22:13:33 · 7582 阅读 · 0 评论 -
eclipse C++ 读取txt文件失败
我的代码:#include <iostream>#include <fstream>using namespace std;int main() { ifstream infile; infile.open("edge.txt"); int v1,v2; while(infile>>v1>>v2) { cout<&l...原创 2019-01-19 16:29:04 · 1535 阅读 · 3 评论 -
C程序设计笔记 第七章 局部变量vs全局变量,动态存储vs静态存储
一、从变量作用域角度划分,变量可分为局部变量和全局变量。1、局部变量是定义与函数内的变量,作用域是其定义时所在大括号范围内,出了作用域其占用的内存单元就会被释放掉。2、全局变量是定义于函数外的变量,作用域是从定义位置开始直至文件末尾。(一般为了易于区分,将全局变量首字母大写)。3、局部变量a可以与全局变量a同名,在局部变量作用域中,同名全局变量会被屏蔽,即引用a是使用局部变量。(强龙难...原创 2019-03-12 16:47:32 · 409 阅读 · 0 评论 -
C程序设计笔记 第八章 指针
变量的地址称为指针int a=100;int *p;//定义指向整型数据的指针变量p,*号代表此变量是一个指针变量。知道了数据类型int, 才知道怎么从p这个地址中取值p=&a;//将变量a的地址赋给指针变量pcout<<*p; //*p代表p指向的变量*p=3; //相当于a=3,即将3赋给p指向的存储单元。以下是错误的,因为没有了p=&a这一步,则...原创 2019-03-12 17:07:54 · 284 阅读 · 0 评论 -
C++ stringstream实现字符串与int之间的转换
#include <iostream>#include <sstream>using namespace std;int main(){ //string转int string str="10"; int num; stringstream ss; ss<<str; ss>>num; ...原创 2019-03-14 13:08:19 · 1336 阅读 · 0 评论 -
C程序设计笔记 第10章 文件输入输出
1、打开文件fopen(文件名,使用文件方式);(注意是双引号不是单引号)使用文件方式有:”r"(只读) “w”(只写) “a”(追加)以二进制文件为对象时: “rb”(只读) “wb”(只写) “ab”(追加)FILE *fp; //fp是指向文件的指针变量if((fp=fopen("file.txt","r"))==NULL){ printf("fai...原创 2019-03-07 23:44:18 · 277 阅读 · 0 评论 -
C程序设计笔记 第6章 数组
1、一维数组不允许对数组的大小做动态定义,但在函数中可以动态定义:void f(int n){ int a[2*n]; ...}一维数组的初始化:int a[6]={0,1,2,3,4,5};int a[6]={0,1}; //只给前两个赋值,其他默认赋值0int a[6]={0};//首元素赋值0,其他默认赋值为0,即全0int a...原创 2019-03-05 23:08:23 · 352 阅读 · 0 评论 -
STL容器(set、map、vector、list)用法总结
Set头文件 #include <set> set不重复存储元素,同一个元素的第二次插入无效。set按升序排序顺序存储元素定义set对象: set<ElemType> s;遍历方法:#include <iostream>#include <set>using namespace std;int main()...原创 2019-03-11 00:53:08 · 682 阅读 · 3 评论 -
在gin框架中使用gorm数据库
github笔记地址:gin_gorm_CURD原创 2019-12-16 12:52:36 · 1167 阅读 · 0 评论 -
Go的CSP并发模型(goroutine + channel)
参考Go的CSP并发模型实现:M, P, GGo语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言。并发(concurrency):多个任务在同一段时间内运行。**并行(parallellism):**多个任务在同一时刻运行。Go的CSP并发模型(goroutine + channel)Go实现了两种并发形式。多线程共享内存:Java或者C++等语言中的多线程开发。...原创 2020-01-05 22:44:31 · 2049 阅读 · 0 评论 -
Java接口简介
参考Java基础——接口接口概念Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口类似于C++里的基类,多个派生类继承它的变量和函数,不同的是接口只有方法声明,不能有具体的实现,而基类可以有部分...原创 2020-01-12 17:15:25 · 196 阅读 · 0 评论 -
ORM简介
参考ORM 实例教程面向对象编程和关系型数据库,都是目前最流行的技术。面向对象编程把所有实体看成对象(object),关系型数据库则是采用实体之间的关系(relation)连接数据。于是就有人提出,关系也可以用对象表达,这样的话,就能使用面向对象编程,来操作关系型数据库。所以总的来说,ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relati...原创 2020-01-05 16:07:34 · 341 阅读 · 0 评论 -
go安装依赖包(go get, go module)
安装完golang后,输入go env可以看到GOPATH="/home/zhongzhanhui/go"GOROOT="/usr/local/go"GOBIN=""go get参考http://c.biancheng.net/view/123.htmlgo get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一...原创 2019-12-11 23:46:49 · 60614 阅读 · 3 评论 -
Go语言入门教程(省略与C相同的部分语言规则)
教程网址:https://www.runoob.com/go/go-tutorial.htmlGo 语言语法与 C 相近,有C的基础的话入门很简单。下面的笔记直接去掉了跟C语言重叠的部分规则。Go语言教程第一个 Go 程序 hello.go(Go 语言源文件的扩展是 .go),代码如下:package mainimport "fmt"func main() { fmt.P...原创 2019-12-11 19:53:29 · 370 阅读 · 0 评论 -
Gin框架快速入门
github笔记地址:Gin - 高性能 Golang Web 框架的介绍和使用原创 2019-12-14 22:57:30 · 637 阅读 · 0 评论 -
Golang的一些高级语法(interface, defer, 方法接受者等)
记录一些go的知识点(比较零碎,主要是冷启动项目代码里涉及到的)interface参考理解 Go interface 的 5 个关键点interface是一种类型interface(接口)是一种类型,其中只能包含空方法,不能包含变量。type I interface { Get() int}如果一个类型(一般是struct)实现了一个 interface 中所有方法,我们说该类型实现了这个 interface。注意这个类型不需要显示地表明他要实现哪一个interface,只要他刚原创 2020-08-16 20:28:30 · 2077 阅读 · 0 评论 -
python生成GMT/UTC时间戳
当前我遇到的问题是:谷歌bigquery的数据表中,每一条记录有一个GMT/UTC时间戳,我需要通过python传输sql语句过去读取7月9号0时的记录,那么问题就来了,如何在python程序中将2020.07.09 00:00这个时间点转换成GMT/UTC时间戳呢。基础知识地球自西向东旋转,东边比西边先看到太阳,东边的时间也比西边的早。协调世界时GMT/UTC在0时区,北京在东八区,即北京时间=UTC0时区时间+8小时。时间戳的含义就是自GMT/UTC时间(1970.1.1)到现在所经过的秒数原创 2020-07-15 12:32:09 · 2101 阅读 · 0 评论 -
crontab格式 & golang时间格式
crontab格式crond是linux下用于周期性地执行某个任务的一个守护进程,crond进程会每分钟检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。向crond进程提交crontab文件即可设置周期任务。用户所建立的crontab文件中,每一行都代表一项任务,,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minute hour day month week command参数含义minute: 表示分钟,可以是从0到59之间的任何原创 2020-08-17 10:56:38 · 1503 阅读 · 0 评论 -
Go项目基础: GOROOT、GOPATH、Go-Modules
Golang — GOROOT、GOPATH、Go-Modules-三者的关系介绍初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录GOROOT & GOPATH安装完golang1.13后,有两个路径GOROOT和GOPATH。使用命令 go env 查看这两个路径:GOROOT="/usr/local/go"GOPATH="/Users/bytedance/go"GOROOT下放的是golang本身的代码,当import一些golang自带的库,比如ne原创 2020-08-17 10:56:54 · 1064 阅读 · 0 评论 -
Golang GMP机制
调度机制goroutine是go里的最基本的执行单元,每个go程序一开始都有一个主goroutine。goroutine可以认为是轻量级的用户态线程,go里内核线程和用户线程的调度模型是M:N模型。但是Go不直接将内核线程与goroutine绑定起来运行,而是通过一个上下文P来作为调度的中介,P提供了goroutine运行所需的一切资源和环境,所以在goroutine看来P就是运行它的 “CPU”。一个内核线程M维护一个P,一个P维护一个本地G队列,同一时刻里,一个P里只有一个G在运行。当通过g原创 2020-10-21 19:51:16 · 794 阅读 · 0 评论 -
C++ 虚函数与多态
虚函数虚函数是指在多态中,派生类和基类中存在返回类型、名字和参数形式都完全相同的函数,但是实现的函数体不同。虚函数是多态的基础,没有虚函数就无法实现多态特性。在成员函数前加上一个virtual关键词就可以把函数设置为虚函数 ,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。纯虚函数就是声明后面加上 =0 。virtual void foo()=0;纯虚函数在基类中只声明不定义,而在派生类中必须要定义。拥有纯虚函数的类成为抽象类,抽象类不能实例化。虚函数的实现原理当一个类原创 2020-10-21 19:47:11 · 432 阅读 · 0 评论 -
C++11智能指针
使用new和delete来管理内存,容易出现问题,比如忘记delete、程序异常or过早返回导致没有运行delete之类的。智能指针的使用方式跟常规指针一样,最大的区别是它会自动释放所指向的对象。因为智能指针是一个类,当这个对象的生命周期结束时会执行析构函数,那么只要在析构函数中delete 指针就可以自动完成内存的回收。主要有两个指针:shared_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指向的对象。shared_ptr创建智能指针(为空):shared_ptr<s原创 2020-10-21 19:48:26 · 118 阅读 · 0 评论 -
C++ extern关键字
1、extern 修饰变量和函数用extern修饰一个变量,其实就是告诉编译器,这个变量是要引用外部链接文件中的变量,而不是要定义一个变量。因此编译时不会给extern变量分配内存,因为编译器会给定义分配空间,而不会给声明分配空间。2、extern "C"extern “C” 相当于告诉编译器,这部分的变量和函数使用C语言的规则来编译(因为C++开发有时需要调用一些C语言代码)。可以在C库的头文件中使用extern “C”:#ifdef __cplusplusextern "C" {#en原创 2020-10-21 19:45:23 · 434 阅读 · 0 评论 -
C++11 右值引用
右值引用的目的主要是为了是减少内存拷贝,优化性能。左值右值赋值操作符“=”的左侧,通常是一个变量赋值操作符“=”的右侧,通常是一个常数、表达式、函数调用表达式结束后依然存在的持久化对象表达式结束时就不再存在的临时对象左值可以运用&操作符取得地址右值(临时对象)无法取得地址左值一般有名字右值一般没有名字C++11以前,就有左值引用,简称引用,左值引用就像是给变量起了别名,操作这个别名就跟操作原变量名一样。int x = 20;int&原创 2020-10-21 19:49:00 · 438 阅读 · 0 评论 -
C++ static关键字
static主要有三种用法1、修饰全局变量(限定作用域)限制作用域后不允许其他代码文件引用,可以解决重名的问题。用static修饰全局变量/函数,则这个全局变量/函数成为静态全局变量/函数,静态全局变量/函数只在定义它的代码文件内可见,其他与之相链接的代码文件用extern也无法访问这个变量/函数。2、修饰局部变量(保持变量内容持久化)用static修饰局部变量,局部变量就变成了静态局部变量。静态局部变量的作用域仍然是局部的,但与普通局部变量不同的是,普通局部变量定义在栈中,而静态局部变量定义在数原创 2020-10-21 19:44:34 · 158 阅读 · 0 评论 -
C++ RapidXml快速入门
参考官方教程:http://rapidxml.sourceforge.net/manual.htmlRapidXml是C++的一个读写xml文件的库,这里摘抄其中的第二章,2分钟快速指引。xml:可扩展标记语言DOM:Document Object Model2.1 Parsing从一个string类型的文本解析出一棵DOM树using namespace rapidxml;xml_document<> doc; // character type defaults to c原创 2021-12-07 16:13:01 · 1105 阅读 · 0 评论 -
无锁编程(CAS)
参考高并发之无锁编程多线程并发在高并发场景下往往需要用到多线程编程,又由于多个线程共享同一个进程中的地址空间,所以又可能会出现同时访问/修改同一个共享变量的情况,这就涉及到线程安全的问题,比如两个线程同时修改同一个数据,可能造成某线程的修改丢失;一个线程写的同时,另一个线程去读该数据时可能会读到写了一半的数据。对此,我们可以用锁来解决线程安全的问题,在访问共享变量的代码的前后加上加锁和解锁的操作,从而保证同一时刻只有一个线程处于临界区中访问资源。但是除此之外,还有一种无锁编程的方式也可以解.原创 2021-12-30 22:22:19 · 2576 阅读 · 0 评论 -
const指针和指向const的指针
今天在看项目代码时,发现竟然可以给有const修饰的指针赋值,按道理的话,const修饰的不是常量吗?常量应该是初始化之后就不能再修改才对。对于这个问题,我大致的研究了一下。参考const 指针与指向const的指针 const的理解、const指针、指向const的指针首先对于普通的const常量,必须在声明的时候初始化,否则会报错。const int a = 100;而对于const指针来说,根据const与*的相对位置,可以分成三种不同的情况: const指针:const关健字原创 2021-10-09 21:52:09 · 2834 阅读 · 1 评论 -
单例模式(C++实现懒汉式)
单例模式是设计模式中的一种,本文记录和总结单例模式的定义以及C++中实现单例模式的几种懒汉式方式。参考C++ 单例模式总结与剖析什么是单例模式单例(Singleton)模式的特点是这个类在全局只有唯一的一个实例对象,在所有位置都可以通过该类提供的接口访问到这个唯一实例。最经典的使用场景是公用缓存,由一个线程周期性地写,由多个线程读取,此时就可以用单例模式来保证不同线程写和读的是同一个实例。C++实现单例模式,有几个基础要点:保证全局只有一个实例。通过把构造函数设置为private可以防止用户原创 2021-12-30 19:45:58 · 3437 阅读 · 3 评论