- 博客(420)
- 收藏
- 关注
原创 web3开发DApp项目技术入门教程(2022年最新)
2022 年最新 web3 开发入门教程,一文带你快速入门 web3.0时代。内容包括:1. 智能合约创建和部署2. Solidity语言入门3. hardhat框架使用及本地环境搭建
2022-03-22 09:40:15
12505
4
转载 4_Dockerfile语法
参考资料https://linoxide.com/linux-how-to/dockerfile-create-docker-container/https://www.cnblogs.com/sammyliu/p/5877964.htmlhttps://docs.docker.com/engine/reference/builder/1. FROM:指定进行的基础镜...
2020-01-13 19:00:19
1506
转载 2_阮一峰-Docker入门教程
参考链接 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html一、Linux容器二、Docker 是什么?三、Docker 的安装四、image 镜像五、实例:hello world六、容器 Container七、Dockerfile 文件八、实例:制作自己的 Docker 容器九、其他有用的命令一、Linu...
2020-01-13 13:21:48
2545
转载 1_Cyc-Notes入门简介
参考 https://github.com/CyC2018/CS-Notes/blob/master/notes/Docker.md一、解决的问题二、与虚拟机的比较三、优势四、使用场景五、镜像与容器参考资料一、解决的问题由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。Docker 主要解决环境配置问题,它是一种虚...
2020-01-13 13:20:58
755
原创 chapter13_并发编程
并发如果逻辑控制流在时间上重叠,那么它们就是并发并发既可以发生在内核,也可以发生在应用程序应用级并行的作用在多处理器上并行计算访问慢速IO设备与人交互通过推迟工作以减少执行时间服务多个网络客户端构造并发程序的3种方法进程(1) 由内核来调度和维护(2) 每个进程有独立的虚拟地址空间,因此需要IPC机制IO多路复用(...
2019-12-15 16:12:27
221
原创 2_在家ssh登录工作用电脑
服务器部分SSH Server的环境是 windows 10Windows设置 —> 应用 —> 应用和功能 --> 管理可选功能,然后找到 Open SSH 服务器,装上启动 SSH Server net start sshd (关闭的命令是) net stop sshd 注:要以管理员模式打开powershell,运行命令,否则会报错ip不...
2019-12-15 15:15:39
356
原创 chapter12_网络编程
客户端——服务器模型的基本操作是事务,事务包括3步客户端向服务器发请求服务器解析请求,并进行操作服务器给客户端一个响应具体来看,客户端进行系统调用,将客户端的虚拟地址空间拷贝数据到内核缓冲区客户端主机上的协议软件给数据添加header各个包在计算机网络上移动,到达服务器主机服务器主机上的协议软件把header逐层剥落服务器某个进程进行系统调...
2019-12-11 21:29:18
234
原创 chapter11_系统级IO
IO定义IO(输入/输出)是在主存和外部设备(磁盘驱动器、终端、网络)之间拷贝数据的过程输入:IO设备 --> 主存输出:主存 --> IO设备所有语言都提供较高级别的IO工具eg. printf/scanf --- C cin >> / cout << --- C++但本质是由Unix内核提供的系统级Unix IO函数实现的...
2019-12-10 20:18:35
175
原创 chapter10_虚拟存储器
前言虚拟存储器提供了三个重要的能力(1) 将主存当成是存储在磁盘上的地址空间的高速缓存。在主存中只保存活动区域,高效使用主存(2) 为每个进程提供了一个一致的地址空间(3) 保护了每个进程的地址空间不被其他进程破坏物理和虚拟寻址物理寻址 CPU ----物理地址---- 主存应用场景:嵌入式微控制器、超级计算机虚拟寻址 CPU ----虚拟地址---- MMU...
2019-12-10 10:23:34
189
原创 配置ssh登录的简单方法
客户端(这里是windows系统)先到 C:\Users\xxx\.ssh文件夹下找到 id_rsa.pub文件,打开把 id_rsa.pub 文件中的一长串字符复制,然后在已登录的服务器中输入 echo jlkqwjtvnlkoit >> /root/.ssh/authorized_keys即可,注意要用 >> 追加而不是 >...
2019-12-04 15:34:27
1603
原创 chapter04_Lucene的分析过程
分析将域Field文本 转换为 项Term Term = fieldName + fieldValues[]而 fieldValues 包含的是语汇单元token分析 "The quick brown fox jumped over the lazy dog"使用 StopAnalyzer 分析出的语汇单元 [quick] [brown] [fox] [jumped] ...
2019-12-04 15:33:30
179
原创 chapter03_为应用程序添加搜索功能
Lucene主要的API类目的IndexSearcher搜索索引的入口,调用重载的search方法Query及其子类封装某种查询类型的具体子类,作为search方法的参数QueryParser将用户输入的查询表达式处理成具体的Query的对象TopDocs保持由IndexSearcher.search()方法返回的具有较高评分的顶部文档Sc...
2019-11-28 19:49:56
274
原创 chapter02_构建索引
Lucene如何对搜索内容进行建模Document是索引和搜索的原子单位Document是包含一个或多个Field的容器,而Field中包含真正的被搜索内容Lucene可以针对域Field进行3种操作(1) 域值可以被索引被索引的域值必须是文本格式,二进制格式的域值只能被存储不能被索引(2) 域被索引后,可以选择性的存储项向量,后者可以视为该域的一个小型反向索引集合,通...
2019-11-26 16:41:46
236
原创 JUnit的一些使用说明
TestCase类 public abstract class TestCase extends Assert implements Test { ... }具体的测试类从 TestCase 类派生,TestCase类用了模板方法模式,派生时可以实现setUp()方法和tearDown()方法 public void runBare() throws Throw...
2019-11-26 15:22:19
170
原创 chapter01_初识Lucene
Lucene 的核心 JAR 包很小只有1MB左右,并且不需要任何第三方依赖随着信息量的增大,靠层次分类、多层目录的方法来搜索满足不了需求了,所以需要搜索引擎例如 google、mac os的finder信息检索(IR,Information Retrieval)搜索程序的典型组件 Users ---> Search User Interface ---> *...
2019-11-26 10:37:06
209
原创 chapter08_异常控制流
基本概念控制流 a0, a1, ..., an-1其中,ai代表指令Ii的地址。ai->ai+1的过渡称为控制转移,这样的控制转移队列称为控制流ECF(Exceptional Control Flow, 异常控制流)现代os通过使得控制流发生突变,来对特殊情况做出反应,称为异常控制流ECF发生在计算机系统的各个层次 硬件层 --- 硬件检测到的事件会触发控制转...
2019-11-20 17:01:40
268
原创 chapter15_再探字符图形
纯虚函数和抽象基类纯虚函数:virtual修饰的函数的函数体 = 0 class Pic_base { private: typedef std::vector<std::string>::size_type ht_sz; typedef std::string::size_type wd_sz; [[nodiscard]] virtual...
2019-11-16 18:10:47
246
1
原创 chapter14_近乎自动地管理内存
使用指针常常出现的问题复制一个指针不会导致对指针所指对象的复制,但是会让两个指针指向同一个对象删除一个指针不会释放指针所指对象的内存删除一个对象但是没有删除指向该对象的指针,会产生一个空悬指针定义一个指针却没有初始化一个通用的句柄类目标(1) 这个Handle类是通用的,因此应该使用template(2) Handle对象复制内存管理(3) 通过H...
2019-11-16 11:57:29
163
原创 chapter13_使用继承与动态绑定
继承示例 class Grad : public Core { ... }继承方式继承方式/基类成员public成员protected成员private成员public继承publicprotected不可见protected继承protectedprotected不可见private继承privatepriva...
2019-11-15 22:01:40
189
原创 附录B_标准库一览
输入输出流迭代器 istream_iterator<T> in(is); ostream_iterator<T> out(os, const char* sep = " ");
2019-11-15 10:40:01
177
原创 附录A_C++语法细节
const int* const pa = &a;const 修饰的是紧跟在后面的东西:第一个const修饰int,代表指针指向的int值不能变;第二个const修饰pa,代表指针(也就是地址)不能变。C++允许对一个名字重复声明,但是只能定义一次volatile告诉编译器,这个变量可以以语言定义以外的方式改变,编译器不能对变量进行强制性的优化register...
2019-11-15 10:32:54
214
原创 chapter12_使类对象像一个数值一样工作
一般来说,类的“三位一体”原则:构造函数、复制构造函数、析构函数、赋值运算符函数。如果一个类不需要显式定义析构函数(析构函数什么都不需要干),那么它往往也不需要显式定义赋值构造函数和赋值运算符函数。输入输出运算符重载目标希望实现自定义类和基本类型一样,可以被 cin >> 和 cout <<对于二元运算符,左操作数必然为函数的第一个参数,右操作数必...
2019-11-14 21:43:41
145
原创 chapter11_定义抽象数据类型
explicit 关键字示例 template<typename T> class Vec { public: Vec(); explicit Vec(std::string::size_type n, const T &val = T()); ... }explicit 只对构造函数起作用,用于抑制隐式转换 Vec<...
2019-11-14 19:53:52
197
原创 chapter10_管理内存和低级数据结构
指针是一个存放对象地址的值,既可以指向一个对象,还可以指向一个函数对一个函数所能做的操作只有2种调用函数获取它的地址函数指针示例 void f(int a, int b); // 声明了一个函数指针,名字叫fp,指向的函数类型是两个int参数、void返回值的函数 void (*fp)(int, int);由于对函数的操作只...
2019-11-14 10:35:07
111
原创 chapter9_定义新类型
C++的类型分为:内部类型 + 自定义类型C++的一种设计思想:应该让程序员创建跟内部类型一样易于使用的类型一个良好的编程习惯:头文件中使用限定名 (std::xxx),源文件包含适当的using类的成员函数对于类的成员函数,总是有一个隐含参数,就是正在由我们操作的对象常量成员函数示例 struct Student_info { ...
2019-11-13 19:22:40
168
原创 chapter8_编写泛型函数
示例 template<class T> T median(std::vector<T> v) { typedef typename std::vector<T>::size_type vec_sz; vec_sz size = v.size(); std::sort(v.begin(), v.end()); ...
2019-11-13 17:05:57
123
原创 chapter7_使用关联容器
map<k, v>对映射表map中一个不存在的元素的访问,会创建一个元素,此元素值为 v();对于基本类型,v初始化为0;对于类,进行数值初始化v()pair类型当间接引用一个映射表迭代器时,获得的就是和这个映射表关联的一个 pair 类型的值;对于 map<k, v>,pair的类型是 pair<const k, v>,键值不得被修改...
2019-11-13 15:33:05
96
原创 chapter6_使用库算法
容器、迭代器、算法,都使用了一致的接口协定库算法主要在<algorithm>头文件中copy算法copy(begin, end, out);把区间[begin, end)的所有元素复制到一连串从out开始的元素中正确的用法示例是 std::copy(bottom.begin(), bottom.end(), std::back_inserter(ret)...
2019-11-13 10:40:12
156
原创 chapter5_使用顺序容器并分析字符串
迭代器一个迭代器是一个值,它能够(1) 识别一个容器以及容器中的一个元素(2) 检查存储在这个元素中的值(3) 提供操作来移动在容器中的元素(4) 采用对应于容器所能够有效处理的方式来对可用的操作进行约束迭代器类型(1) container-type::const_iterator – 只读迭代器(2) container-type::iterator – 可读可写迭代...
2019-11-12 22:41:36
110
原创 chapter4_组织程序和数据
异常也是一个类 class exception { ... } class logic_error : public exception { ... } class domain_error : public logic_error { ... }引用 std::vector<int> a; // 原始变量 s...
2019-11-12 21:19:56
127
原创 chapter3_使用批量数据
缺省初始化对于自定义类型的对象,如果我们没有指定一个初始化程序的话,那么类会自己指定一个对于基本类型,在创建变量时,系统会给这些变量分配适当的内存单元,变量值由这些单元的随机信息组成因此,缺省初始化不靠谱!!!正确的做法是类定义默认构造函数,基本类型手动初始化,这个和Java不一样typedef示例 typedef std::vector<double&g...
2019-11-12 16:28:25
106
原创 chapter2_循环和计算
const std::string::size_type cols = 100;解析:std::string 是一个类 typedef basic_string<char> string;size_type 是一种 basic_string 类定义的类型 class basic_string { ... // Types: ...
2019-11-12 15:43:50
100
原创 chapter1_使用字符串
变量 != 对象变量是一个具有名称的对象;对象是计算机中一段具有类型的内存空间std::cin >> name;操作略去输入开始时的空白字符,读取直到再次碰到空白字符缓冲区缓冲区用于优化输出3种情况下会刷新flush缓冲区(1) 缓冲区已满(2) 请求库从标准输入流中读数据(3) 强制刷新(例如std::endl就会强制刷新)适当的时刻刷新...
2019-11-12 15:19:27
113
原创 chapter0_开始学习C++
语言核心 != 标准库语言核心:所有C++程序可用标准库:某个部分(例如#include <iostream>)作用域命名空间相关名称的集合花括号std::cout << “Hello World” << std::endl; 分析表达式会让编译器进行运算,运算会产生结果,有可能产生副作用这句话的副作用就是把Hell...
2019-11-12 10:05:02
94
原创 chapter07_链接
链接定义将不同部分的代码和数据,收集和组合成为一个单一文件的过程。这个文件可以被加载或拷贝到存储器并执行。发生时刻(1) 编译(compile time)源代码被翻译成机器代码(2) 加载(load time)程序被加载器load到存储器并执行时(3) 运行(run time)应用程序执行链接由链接器(linker)的程序完成,作用是分离编译,把每个模块单独进行...
2019-11-12 09:50:14
131
原创 一些面经上的问题汇总
一条长度为l的线段,随机在其上选2个点,将线段分为3段,问这3个子段能组成一个三角形的概率是多少?假设我们选择的两个点的坐标是x和y(先假设x < y),那么由三角形两边和大于第三边的性质,有: x+y-x>1-y x+1-y>y-x 1-y+y-x>x由上述不等式得到:x < 0.5, 0.5 <...
2019-10-20 21:30:12
328
原创 两个线程分别交替打印A、B的一种Java写法
大致思路是用条件变量作为两个线程通信的工具,然后用一个AtomicBoolean的变量作为flag保证线程间的可见性代码如下 import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Condition; import java.util.concurrent.loc...
2019-09-16 10:20:34
1399
原创 13_线程池的实际操作
参考 https://www.cnblogs.com/kuoAT/p/6714762.html线程池一般就是这么用的 public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(8); Future<Int...
2019-09-15 19:24:47
141
原创 AQS和ReentrantLock
AQS提供的几个比较关键的 public 方法有public final void acquire(int arg)底层用到了 protected boolean tryAcquire(int arg) 和 final boolean acquireQueued(final Node node, int arg) 方法public final void acquireInterr...
2019-08-09 18:06:12
347
转载 Goroutines和线程
转自 https://yar999.gitbooks.io/gopl-zh/content/ch9/ch9-08.html动态栈每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量。这个固定大小的栈同时很大又很小。因为2MB的栈对于一个小小的goroutine来说是很大的内存浪费,比如对于我们用到的,...
2019-07-19 18:19:09
145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人