Makefile学习(一)
Makefile是在Linux开发常见的代码编译规则工具。
C和C++简单通用型Makefile Makefie在开发中是十分重要的工具,但并不是天天都要写Makefile,关于语法会有遗忘,有时需要写一些代码做简单的demo测试时,可以直接使用。默认头文件*.h放在include目录下,*.c或*.cpp放在src目录下。
Makefile12345678910111213141516171819202122232425262728293031323334353637383940414243# Source file.# Automatically finds all.c and.cpp files and defines the target as a.o file with the same name.# The *.c save in src directory.SOURCE := $(wildcard ./src/*.c) $(wildcard ./src/*.cpp)OBJS := $(patsubst %.c,%.o,$(pats ...
线程学习(一)
学习线程笔记记录。
线程可以降低业务的耦合性和实现异步的操作,但线程也会带来而外的开销。初步学习线程,记录学习过程。
C++实现线程 C++实现线程是使用的C++11提供的std::thread线程库,线程的实现有两种需求,类中成员调用和类外调用,列子中展示了如何在类中和类外调用。
类外线程
execute.hpp123456789101112131415161718192021222324#ifndef EXECUTE_H#define EXECUTE_H#include <unistd.h>#include <iostream>using namespace std;class Execute{public: Execute() {} virtual ~Execute() {} void ExecuteRun() { while (1) { std::cout << " ...
C++设计模式:单例模式
记录学习C++的设计模式的足迹。
Singleton(单例)模式Singleto要解决的问题是如何:整个程序只创建一个唯一的变量(对象)?在面向过程中(c),只需要创造唯一的全局变量,好的设计会用结构体等将其封装,以减少全局变量的暴露和冲突。在面向对象的中(c++),以类的形式实现的全局变量就被称为Singleton(单例)模式(全局唯一,修改可全局更新)。
线程安全 单例对象在整个程序中只实例一次,之后访问该对象都通过它自身的接口。在多线程中,单例对象可能被同时访问,数据被同时修改,造成对数据的不一致性。因此对单例数据需要实现用同步机制来保证各个线程安全访问。
共享资源同步机制
1.给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用。2.让线程也拥有资源,不用去共享进程中的资源。
单例实现 单例实现懒汉模式和饥饿模式,它们区别在于实例的时间点不同,懒汉模式在需要时在创建,饿汉模式在程序开始执行时就创建。
懒汉模式:以时间换空间,适应于访问量较小的共享数据。
饿汉模式:以空间换时间,适应于访问量较大的共享数据,或者线程比较多。
单例 ...
Win10下搭建Go环境
搭建Go的开发环境,把过程记录下来。
Go的介绍引用官方的描述:
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed ...
菜鸟的菜谱
做饭是给自己吃,这是我享受生活的态度。
配料
红油
材料
八角、香叶、老姜切片、洋葱切丝、花生、小葱切段,辣椒面,芝麻
做法
1、干锅热,放入花生炒一分钟,放凉。2、放入适量的菜籽油,烧到冒青烟,关火,放凉。3、重新开火,放入八角,香叶,老姜,洋葱,小葱炸香到金黄,捞出剩油。4、小碗放入辣椒面,放入捣碎花生,一半的白芝麻,油温6成热,教油,用筷子使辣椒面受热均匀。5、另一本白芝麻,放入剩余的油中,十秒左右,继续教油。6、辣椒油最好放置24个小时以后使用。
炒菜素菜
酸辣土豆丝
材料
土豆切丝,放在清水里,洗去淀粉后,放清水,放白醋泡。干辣椒切段,大蒜切粒,青椒切丝。
做法
1、清水沸腾,倒入土豆丝到土豆快透明,出锅,放入冷水中浸泡。2、放油,5分热,倒入大蒜粒,干辣椒炒香,倒入土豆丝翻炒。3、放入白醋或者香醋,少量白糖,青椒继续翻炒出锅。
鱼香茄子
材料
茄子切段,改成长条,装碗放入盐和水,猪肉做成肉末,泡椒切碎,在泡椒放入少量豆瓣酱(不能太多),蒜和姜剁碎,准备葱花。
做法
1、适量油,6热,放入茄子炸两分钟左右,捞出沥干。2、少许底 ...
Gitbook的使用并推送到GitLab
在写文档的过程中,萌生了写书的想发,查阅了一些资料,最终选择了使用Gitbook+Gitlab的方式,做一份笔记记录。
GitbookGit是版本控制工具,程序和文章都是迭代下的产物,作为程序员是极其幸运的,因为他可以成为很多角色。在线的编辑,可以参考Gitbook官网,本文适合为本地编辑。
环境配置安装Git和Node.js请参考搭建Gitlib hexo博客中Git和Node.js安装。
安装Gitbookcmd12npm install gitbook-cli -g #安装gitbookgitbook -V #查看安装后的版本
Gitbook命令说明cmd12345678910111213gitbook init //初始化目录文件gitbook help //列出gitbook所有的命令gitbook --help //输出gitbook-cli的帮助信息gitbook build //生成静态网页gitbook serve //生成静态网页并运行服务器gitbook build --gitbook=3.2.3 //生成时指定gitbook的版本 ...
代码开发框架记录
线程调用动态库参考源码dynamic-lib-frame
代码文件框架codefile123456789101112131415demo |---CMakeLists.txt |---demo.c |---run_demo.shdocs |---doxygeninclude |---codeframe.h |---service.hsrc |---codeframe.cpp |---service.cppCMakeLists.txtdoxyfileREADME.md
调用动态库demo.c12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485#include <stdio.h>#include <string.h>#include <u ...
代码开发工具
开发环境搭建1、安装win10操作系统
2、安装Google浏览器访问网址,下载自动安装。
3、安装火绒杀毒软件
4、安装Mobaxterm
5、安装Secure CRT串口软件和串口抓包软件
安装nodejs访问网址,下载自动安装。
6、安装Cmder
1、把安装路径添加到环境变量2、以管理员打开cmd,输入Cmder.exe /REGISTER ALL3、设置中文编码:右击cmd窗口,点击setting。在Start-up下的environment中加入: set LANG=zh_CN.UTF84、防止字体重叠,去掉font中的Monospace
7、安装Git软件访问网址,下载自动安装。生成公钥ssh-keygen -o,默认生成
远端Linxu服务器按装git, 生成公钥ssh-keygen -o,在.ssh目录下touch访问公钥文件authorized_keys,添加Windows的id_rsa.pub公钥
8、安装Vscode,SyncSetting插件访问网址,下载自动安装。
9、安装office办公工具
如何将office不安装在C盘1、确定office安装 ...
多种异步实现原理
C使用的通用MakefileMakefile1234567891011121314151617181920212223242526272829303132333435363738394041# Source file.# Automatically finds all.c and.cpp files and defines the target as a.o file with the same name.# The *.c save in src directory.SOURCE := $(wildcard ./src/*.c) $(wildcard *.cpp)OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))# Target you can change test to what you want.TARGET := demo# Compile and lib parameter.CC := gccLIBS := -lpthread -lmLDFLAGS :=DEFINES :=# T ...