自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

五山口老法师

仰望星空,脚踏实地!

  • 博客(584)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Shell 变量的作用域

Shell 变量的作用域(Scope),就是 Shell 变量的有效范围(可以使用的范围)。在不同的作用域中,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他们都叫小明(对应于变量名),但是由于所在的班级(对应于作用域)不同,所以不会造成混乱。但是如果同一个班级中有两个叫小明的同学,就必须用类似于“大小明”、“小小明”这样的命名来区分他们。Shell 变量的作用域可以分为三种:有的变量只能在函数内部使用,这叫做局部变量(local variable); 有的

2021-02-04 12:10:42 22

原创 Makefile:条件编译

在源代码里面如果这样是定义的:#ifdef MACRONAME//可选代码#endif那在makefile里面gcc -D MACRONAME=MACRODEF或者gcc -D MACRONAME这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。对于GCC编译器,有如下选项: -D macro=string,等价于在头文件中定义:#define macro string。例如:-D TRUE=true,等价于:#...

2021-01-27 14:24:19 28

原创 指定结构体字节对齐方式

指定结构体字节对齐方式#pragmapack(push,1)typedefstruct{intb;chara;}struct_t1;#pragmapack(pop)

2020-12-31 11:01:42 52

原创 docker相关

提交新的镜像tagdocker commit -m "comment" IMAGENAME IMAGEID:TAG镜像重命名:docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)镜像删除:docker rmi REPOSITORY:TAG(仓库:标签)必要时加上 -f 强制删除镜像退出:1.后台不退出 ctl+p+q2.后台退出 exit...

2020-11-12 23:03:28 112

原创 链接静态库的顺序问题

在链接静态库时,如果多个静态库之间存在依赖关系,则有依赖关系的静态库之间存在顺序问题,这个在使用静态库时,需要注意,否则会报符号找不到问题,举例:libb.a依赖于是liba.a,而可执行文件test只直接依赖于libb.a,则链接选项应当为:-b -a,而不是-a -b,否则会报liba.a中的某些符号找不到.gcc -c a.car cr liba.a a.ogcc -c b.car cr libb.a b.o # 虽然libb.a使用到了liba.o中的一些函数,但并不会.

2020-11-12 17:27:51 99

原创 libtool安装

1,下载安装m4wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz \&& tar -xzvf m4-1.4.13.tar.gz \&& cd m4-1.4.13 \&& ./configure –prefix=/usr/localmake && make install2,下载安装autoconfwgethttp://mirrors.kernel.org/g...

2020-11-12 16:11:25 116

原创 shell:后台运行&,日志重定向输出,nohup,grep命令

后台运行命令在命令行加上&,表示进程到后台执行,如 cmd &日志输出重定向命令,如 cmp > out.log &Linux默认定义两个变量:1和2;1表示标准输出2表示错误输出如 cmd 1>info.log 2>error.log &其中 cmp > out.log & 与 cmp 1> out.log & 是一样的如果想忽略某个输入,则输出到/dev/null设备即可如 cmd 1>info.lo

2020-11-10 19:33:03 56

原创 GO: go.mod go.sum

如果你还在使用 GOPATH 模式来开发Golang程序,那么你可以参考本文来告别 GOPATH,并带给你一个方便的包管理工具。关于 go mod 的说明和简单使用,可以参考:1、Go1.1.1新功能module的介绍及使用2、Introduction to Go Modules3、Go 1.11 Modules 官方说明文档使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,比如:新建一个名为 wserver 的项目,项目

2020-11-02 01:09:35 1034

原创 MySQL: load data infile 需要注意的点

load data infile 批量将文本导入到mysql的表中。主要是为了加快导入记录的速度。---给个例子:1.文本如下 t0.txt:"我爱你","20","相貌平常,经常耍流氓!哈哈""李奎","21","相貌平常,经常耍流氓!哈哈""王二米","20","相貌平常,经常耍流氓!哈哈""老三","24","很强""老四","34","XXXXX""老五","52","***%*¥*¥*¥*¥""小猫","45","中间省略。。。""小狗","12","就会叫""小.

2020-10-12 00:25:00 94

原创 Git: Updates were rejected because the tip of your current branch is behind

$ git push -u origin masterTo git@github.com:******/Demo.git! [rejected] master -> master (non-fast-forward)error: failed to push some refs to 'git@github.com:******/Demo.git'hint: Updates were rejected because the tip of your current branch is be..

2020-09-16 22:38:52 103

原创 C++11中Thread类简单使用的例子

代码如下:#include <iostream>#include <thread>#include <chrono>#include <future>#include <cmath> #include <vector>#include <cstdlib>using namespace std;void helloworld() { cout << "hello world" <&l

2020-07-30 15:52:08 129

原创 Thread中,join()方法

std::thread是c++11新引入的线程标准库,通过其可以方便的编写与平台无关的多线程程序,虽然对比针对平台来定制化多线程库会使性能达到最大,但是会丧失了可移植性,这样对比其他的高级语言,可谓是一个不足。终于在c++11承认多线程的标准,可谓可喜可贺!!!在使用std::thread的时候,对创建的线程有两种操作:等待/分离,也就是join/detach操作。join()操作是在std::thread t(func)后“某个”合适的地方调用,其作用是回收对应创建的线程的资源,避免造成资源的泄露。d

2020-07-30 14:17:40 123

原创 Shell脚本读取Redis键值对

给出一个极简的例子:#!/bin/bashkey='aaaaa'value=$(redis-cli -h 127.0.0.1 -p 6379 get ${key})echo ${value}其中第二行 redis-cli连接到Redis服务器之后执行get返回的是key对应的value值。使用 变量=$(命令)或者 变量=`命令` 将Shell输出值赋值给变量。然后可以使用value来处理逻辑注意的是,变量与等于号以及命令之间不要出现多余的空格。...

2020-07-29 01:25:16 352 1

原创 Makefile: -I(大写i)、-L、-l

我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/incl

2020-07-26 22:25:47 93

原创 Makefile:自动化变量 $@,$^,$<,$?

Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:$@ 表示目标文件$^ 表示所有的依赖文件$< 表示第一个依赖文件如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为:# 这是简化后的Makefilemain:main.o mytool1.o mytool2.ogcc -o $@ $^main.o:main.c mytool1.h mytool2.hgcc -c $<mytool1.o:mytool1.c

2020-07-24 17:06:35 174 1

原创 Makefile 中:= ?= += =的区别

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(OPT),add) VRE += “Kelly!”endififeq ($(OPT),recov.

2020-07-24 15:03:18 50

原创 epoll深入解读

首先说一下传统的I/O多路复用select和poll,对比一下和epoll之间的区别:举个例子:假如有100万用户同时与一个进程保持TCP连接,而每一时刻只有几十或者几百个tcp连接是活跃的(即能接收到TCP包),那么在每一时刻进程只需要处理这100万连接中的有一小部分。select和poll这样处理的:在某一时刻,进程收集所有的连接,其实这100万连接中大部分是没有事件发生的。因此,如果每次收集事件时,都把这100万连接的套接字传给操作系统(这首先就是用户态内存到内核内存的大量复制),而由操...

2020-07-06 16:59:10 87

原创 Android: RecyclerView.ViewHolder、Adapter

1.简介 用户滑动屏幕切换视图时,上一个视图会回收利用,RecyclerView所做的就是回收再利用,循环往复。 ViewHolder  ViewHolder的主要任务:容纳View视图。 Adapter  Adapter从模型层获取数据,然后提供给RecyclerView显示,是沟通的桥梁。 Adapter主要的任务是:创建ViewHolder和将模型层的数据绑定到ViewHolder上。 RecyclerView与Adapter交互流程 首先..

2020-06-01 01:25:52 146

原创 Android: Bundle机制

Bundle在Android开发中十分常见,常用于以下场合:1.Activity状态数据的保存与恢复涉及到的两个回调:void onSaveInstanceState (Bundle outState)、void onCreate (Bundle savedInstanceState)2.Fragment的setArguments方法:void setArguments (Bundle args)3.消息机制中的Message的setData方法:void setData (Bundle data)

2020-05-31 23:46:49 122

原创 服务器开发 行业术语

系统开发 1. 高内聚/低耦合高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。模块的内聚反映模块内部联系的紧密程度。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。一个完整的系统,模块与模块之间,尽可能的使其独立存在。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越...

2020-03-27 23:45:10 164

原创 Nginx 反向代理及 Cookie 相关问题

最近一个项目,遇到了Nginx反向代理和Cookie的问题,遇到的问题很杂,经过一周多逐步摸索,总算有个解决方案了,做个记号,主要是记录下遇到问题的过程,以便出现问题时备查。【背景】客户原有的使用Domino开发的Web应用系统,需要部分数据通过手机端展示; 原Domino系统只能通过内网访问,没有域名,内网的机器都需要修改hosts来解决域名问题;(至于为什么没有通过内网DNS进行域名解析...

2020-02-29 02:18:33 423

原创 同域名下不同端口cookie问题

假如同域名 不同端口部署两个服务:服务A 服务B服务A产生的cookie在访问B时会携带,反之同理。为了避免两个服务cookie覆盖,最好对cookie的键取不同的名称加以区分。相同域名不同端口的两个应用,cookie名字、路径都相同的情况下,后面的cookie会覆盖前面的cookie吗?如果浏览器访问的服务是ip或localhost的话,会覆盖;如果浏览器访问的是域名(在...

2020-02-29 01:12:01 1753

原创 AutoBench的使用分析

本实验中,我将使用AutoBench来进行Web服务端的性能测试,借助于Httperf来实现集群测试。本文接着上篇文章中的测试URL来进行分析AutoBench的测试过程。首先我们创建测试的命令行如下:autobench --single_host --host1=127.0.0.1 --port1=8081 --uri1=/getServerIp --quiet --low_rate...

2019-11-16 16:33:42 221

原创 AutoBench+Httperf的安装、测试

首先安装Httperf。主要是Httperf网路上给出的url均无法访问,因此在GitHub上找的源码工程,进行安装。接下来介绍安装步骤,从Github下载下来的httperf包是zip。unziphttperf-master.zipcd httperf-masterautoreconf -i (可能要首先安装一下autoconf sudo apt-get insta...

2019-11-15 18:51:41 174

原创 Python操作Memcached

 Memcached是一个高性能的分布式内存对象缓存系统,用于动态WEB应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态,数据库网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编程,并通过memcached协议与守护进程通信。Memcached安装服务端安装m...

2019-11-13 15:52:49 101

原创 常见数据归一化的几种方法

常见的数据归一化方法min-max标准化(Min-max normalization)/0-1标准化(0-1 normalization)也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:其中max为样本数据的最大值,min为样本数据的最小值。def Normalization(x): return [(float(i)-min(x))/f...

2019-11-12 23:32:14 424

原创 计算标准差

Python:import numpy as nparr = [1,2,3,4,5,6]#求均值arr_mean = np.mean(arr)#求方差arr_var = np.var(arr)#求标准差arr_std = np.std(arr,ddof=1)print("平均值为:%f" % arr_mean)print("方差为:%f" % arr_var)print(...

2019-11-07 16:07:53 331

原创 Mycat:压测Mycat及结果分析

前言Mycat是业内知名mysql数据库中间件,其功能在各种mysql中间件中是比较丰富的.而mycat相关组件由java语言编写,部署方便.他的功能有:不透明代理,读写分离,负载均衡,数据分片等.而且因为其底层连接方式是用java的jdbc组件来连接数据库的,所以理论上是支持sql server,oracle,pgsql的,但是功能上主要集中在mysql上.优点:部署简单,功能强大...

2019-10-25 21:32:53 606

原创 Nginx:几种负载均衡调度策略配置

一、Nginx负载均衡算法1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。2、weight(轮询权值)weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。...

2019-10-24 20:57:46 243

原创 redis:RDM连接阿里云redis服务器

先给结论:这几天踩了一个坑,redis在启动的时候,如果你对redis.conf进行了修改,则需要在重启redis时带上配置文件,否则redis不会对修改的redis生效,真是个坑货,就这里被坑了,以为会主动去加载配置。redis默认在没有设置密码且bind在127.0.0.1时开启了保护模式。因此需要手动修改配置文件,将bind 127.0.0.1 改为 #bind 12...

2019-10-19 11:31:00 443 1

原创 华为:N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求

N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求华为面试被问手撕这道题。输入分值:【1,2,3】输出:5解析:3+1+1 = 5。但是要考虑到 输入分值:【3,4,3】输出:4解析:3+1。4只需要算一次就行。解答思路:new两个数组,两趟遍历,左向右遍历,再右向左遍历,分别比较,最后比较两个数...

2019-10-14 12:47:19 197

原创 PV、UV、VV

PV即Page View,网站浏览量指页面的浏览次数,用于衡量网站用户访问的网页数量。用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计。一般来说,PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量,如同一个来访者通过不断的刷新页面,也可以制造出非常高的PV。具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多少次。PV是指...

2019-10-10 17:11:10 215

原创 初识Kubernetes

什么是Kubernetes?Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。使用Kubernetes可以:自动化容器的部署和复制 随时扩...

2019-10-06 16:29:58 98

原创 Linux:shell脚本中实现变量自增的几种方式

#!/bin/sh#本脚本测试shell脚本中整型变量自增 加1的几种方法#定义整型变量a=1echo $a#第一种整型变量自增方式a=$(($a+1))echo $a#第二种整型变量自增方式a=$[$a+1]echo $a#第三种整型变量自增方式a=`expr $a + 1`echo $a#第四种整型变量自增方式let a++echo $a...

2019-09-15 21:15:00 432

原创 Java集合:List转数组互转

一、List转数组:#1List<String> strList = new ArrayList<String>();strList.add("aa");strList.add("bb");String[] array = strList.toArray(new String[strList.size()]);#2 直接遍历List将元素逐个添...

2019-08-27 09:39:34 128

原创 操作系统:DMA

1、DMA由来DMA(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是通过系统总线与其他部件连接并进行数据传输。1.1程序传送方式程序传送方式是指直接在程序控制下进行数据的输入/输出操作。分为无条件传送方式和查询(条件传送方式)两种。1.1.1无条件传送方式微机系统中的一些简单的外设...

2019-08-26 21:29:19 1467

原创 Linux:Swap分区

Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。方法1:使用独立的分区来实现1. lsblk 查看是否有可用的磁盘分区,使用fdsik划分磁盘分区2. fdisk /dev/sdc 创建后的分区为/dev/sdc2,注意使用t选项修改分区id为823. 创建sw...

2019-08-25 20:19:21 97

原创 网络:HTTP1.1和HTTP2区别

今天,HTTP 1.1 已经变成互联网中主要的协议。但是在 HTTP 协议诞生初期却被认为是简单直接的协议。1996 年在 RFC 1945 中定义了 HTTP 1.0 规范,仅 60 页,到 1999 年在 RFC 2616 定义了HTTP 1.1,增长到了 176 页。但是,随着 web 技术的飞速发展。 HTTP 1.1 已经无法满足用户对性能的要求,此后 Google 推出协议 SPDY...

2019-08-19 23:20:54 870

原创 单链表实现快速排序

用单链表实现快速排序前言:快速排序我们都知道,通过一个基准数字,一趟排序就将数据划分为两个部分:左边的部分小于这个基准数字,右边的部分大于等于这个基准数字。我们知道,实现快速排序的关键在于随机访问数据元素,所以以往的快排都是基于数组实现的。但是在面试中,经常会遇到面试官要求我们用链表实现快排,那么如何通过链表实现快排呢?我们设置两个指针 i,j,其中 i 初始时指向数组的第一个元素,j 初始...

2019-08-16 16:48:38 155

原创 等概率随机函数的实现

题目:已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。解决思路:可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然后调用k(k为整数n的二进制表示的位数)次Rand()函数,得到一个长度为k的0和1序列,以此序列所形成的整数即为1--n之间的数字。注意:...

2019-08-08 23:43:16 200

空空如也

五山口老法师的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除