自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (7)
  • 收藏
  • 关注

原创 JavaScript里的一等公民——函数

函数表声明function test(){ alert("haha haha");}这个函数名test可以用于引用和调用函数表达式var ask = function(){ ...}它不同于函数声明有名称,函数表达式是没有名称的。该表达式的结果是一个值,这个值被赋给了变量 ask。这个变量是一个指向函数的引用。无论是函数表达式

2019-02-28 16:36:43 1232

原创 JavaScript——异步编码

以响应事件的方式组织代码是另一种代码编写方式。要以这种方式编写代码,需要考虑可能发生的事件和代码应如何响应这些事件。通常响应事件式的编码就是异步编码。网页加载完成后执行的动作,我们可以把动作写在一个函数里,然后把函数赋给window对象的onload属性。window.onload = init;function init(){ alert("What do you want for me...

2019-02-28 15:36:17 1136

原创 JavaScript怪异的类型

typeof运算符可以用来检查类型,如: var car = { model:"baba", color:"red" }; alert(typeof car);结果是object。1.undefined对于任何未初始化的东西,都会将undefined赋给它,undefined的类型是undefined,是不是很怪异。可以将变量赋为null,如var ...

2019-02-28 12:29:51 1034

原创 DOM对象能干什么?

什么是DOM对象?DOM对象其实就是一棵由元素对象组成的大树。另外要特别强调一点,浏览器解析网页的顺序是从上到下的。所以有时要注意js代码与被控制元素对象的前后关系。处理DOM对象时,要确保网页完全加载后再执行,这一点至关重要,因为网页没有加载完的话,那么DOM对象就不会存在,因为它是一棵大树,树还没长成自然就不会有DOM对象啦。1.获取内容(文件或HTML)<!doctype html...

2019-02-27 18:45:03 1857

原创 JS如何创建对象

var car = { year:1980, color:"red", passengers:4, mileage:1024, model:"CC car", make:"China", "car number":"8888888" };上面定义了一个包含一系列属性的对象,并将其赋给了变量car。我们就可以通过变量 car去访问和修改这个对象的属性。注意事项:1.属性与值之...

2019-02-27 17:31:57 2769

原创 使用docker创建swarm集群网络

Docker集群网络,解决的问题是能同时响应多少请求。不是分布式计算,因为分布式计算是将一个任务拆分若干个子任务,然后将子任务分配到不同的机器上去执行。集群网络的命令(1)docker swarm管理集群初始化集群:docker swarm init以node(worker)或manager加入集群:docker swarm join管理join-token:docker swarm j...

2019-02-27 14:35:46 6234

原创 常用Docker命令

Docker命令分为管理命令、镜像命令、容器命令、仓库命令、网络命令、数据卷命令、编排命令。1、启动Docker:~$ sudo service docker start2、确认Docker运行状态:~$ sudo docker run --rm hello-worldHello from Docker! //出此句说话,即正常3、重启Docker~$ sudo service d...

2019-02-27 10:27:15 2043

原创 C语言——getopt函数

#include <unistd.h>int getopt(int argc, char * const argv[],const char *optstring);getopt()函数解析命令行参数。它的参数argc和argv是命令行中传给main()函数的参数的个数和参数数组。参数数组中以’-'开头的元素是选项元素,“-“后面跟的就是选项字符。如果 getopt()被重复...

2019-02-25 15:48:41 3114

原创 C语言——创建文件

创建文件#include <stdio.h>int main(int argc,char *argv[]){f(argc != 2){ printf("param error"); return 1; }else{ FILE *fd = fopen(*(argv+1),"w+"); if(fd != NULL){ printf("...

2019-02-23 21:44:29 21030 4

原创 C语言——open和fopen的区别

FILE *fopen( const char *filename, const char *mode );通过文件名打开文件,返回一个关联到该文件的文件流。mode模式是决定文件的访问模式。可以用fprintf向文件流写入格式化数据:int fprintf( FILE *stream, const char *format, ... );fopen打开的文件流用fclose关闭:i...

2019-02-23 13:17:08 5921

原创 搭建GTK+开发环境

我们用gtk3.0开发库来开发:1.安装GCC开发环境~/Desktop/MyC$ sudo apt install build-essential2 .安装pkg-config包~/Desktop/MyC$ sudo apt install pkg-config3.安装gtk3.0~/Desktop/MyC$ sudo apt install gtk+-3.0这样GTK的开发...

2019-02-22 18:56:35 1749 2

原创 C语言——相关学习资源网站及工具

1.AllegroAllegro是一个跨平台库。它致力于视频游戏和多媒体编程方面。它可以处理常见的,低层级的任务,如创建窗口、接受用户输入、加载数据 、画图、播放音频等等。提醒:Allegro 不是游戏引擎。2.gdbGDB 是GNU项目使用的调试器。当运行gdb时,它可以让你知道另外一个程序里面正在发生什么事情或者在它崩溃时,它内部具体发生了什么。GDB主要做四件事,帮助你找到bug:...

2019-02-22 11:43:07 3155

原创 C语言——条件编译和static关键字

条件编译#include <stdio.h>#ifdef HELLO char *c = "hello world";//如果HELLO这个宏存在,包含这段代码#else char *c = "No zuo,no die"; //否则包这段代码#endifint main(){ printf("%s\n",c);

2019-02-22 00:39:05 1247

原创 C语言中平行的世界——线程

假如你的程序一边从网络读取数据,一边向网络发送数据。如何在代码中同时执行几个不同的任务?根据前面的知识,我们知道可以通过创建多几个子进程来做这些事。但是创建进程很花时间,而且不同子进程之间共享数据很不方便。这时我们需要线程来帮我们解决这个问题。如何创建线程呢?我们有很多线程库可以用,其中最流行的就是POSIX线程库,也叫pthread 。可以在类Unix系统上使用。假设我想在独立的线程中运行...

2019-02-21 19:25:15 807

原创 C语言——网络客户端

在上一篇文章C语言——网络与套接字介绍了网络服务器的相关知识。现在我们来看看网络客户端的相关知识。我们来写一个HTTP协议的网络客户端。说到HTTP协议,其实就像我们在C语言——网络与套接字自定义的IAHP协议一样。**协议是一段结构化对话。**网络客户端和服务器必须按照结构化的对话来进行通信。打开telnet看看是如何下载网页的。~$ telnet www.csua.berkeley.ed...

2019-02-21 12:34:04 1362

原创 C语言——网络与套接字

互联网中大部分的底层网络代码都是用C语言写的。网络程序通常由两部分程序组成:服务器和客户端。服务器将同时与多个客户端通信。客户端与服务器之间将展开一段结构化对话,叫做协议。互联网使用了各种协议,一部分是低层协议,另一部分是高层协议。低层协议有IP,它用来控制二进制的0和1在互联网中的发送方式。高层协议有HTTP,它用来控制浏览器与网络服务器的对话。协议通常有一套严格的规则。客户端和服务器...

2019-02-20 19:38:25 1877 2

原创 操作系统用信号控制程序

进程之死在linux的终端正在运行的程序,用户按了ctrl-C,程序就停止运行了。为什么ctrl-C可以彻底杀死程序?当操作系统从键盘读取数据,发现用户按了ctrl-C,就会向程序发送中断信号。信号是一条短消息,即一个整型值。当信号到来时,进程必须停止手中一切工作去处理信号。进程会查看信号映射表,表中每个信号都对应一个信号处理器函数。中断信号的默认信号处理器会调用exit()函数。信号映射表...

2019-02-19 11:50:48 1050

原创 如何创建管道——pipe

我们有一个这样的场景:主程序希望与子程序进行通信。我们用pipe()函数为他们创建管道,这样他们就可以通过管道来通信了。为了演示方便我们只考虑:子程序把数据发送到父进程中来的情况。因此要用管道把子进程的标准输出和父进程的标准输入连接起来我们将用pipe()函数建立管道。每当我们打开数据流时,它都会加入描述符表。pipe()函数也是如此,它创建两条相连的数据流,并把它们加到描述符表中,然后只要...

2019-02-18 17:49:45 7196

原创 让进程等待--waitpid()函数

有些时候,进程之间需要协助才能完成一些任务,比如说,进程A和进程B共同完成一项任务,但是必须进程A先完成,然后进程B再开始,等进程B也完成了,任务也就完成了。先给出一个有问题的实例,然后我们来分析并解决它:aa.c//父进程#include <stdio.h>#include <unistd.h>#include <string.h>#includ.

2019-02-18 15:27:53 1022

原创 创建自己的文件数据流

程序运行时,操作系统会为它创建三条数据流:标准输入、标准输出、标准错误。有时,我们也需要创建自己的数据流。fopen()我们可以用fopen()函数创建新数据流,每条数据流用一个指向文件的指针来表示:FILE *my_file = fopen("log.txt","w");fopen的第二个参数是模式:r:读w:写a:追加fprintf()可以用fprintf()往数据流中打印...

2019-02-18 12:16:20 951

原创 如何快速找到C库函数的头文件

在终端使用man,如我想知道fileno()函数所在的头文件:~/Desktop/MyC$ man filenoFERROR(3) Linux Programmer's Manual FERROR(3)NAME clearerr, feof, ferror, fileno - check and reset ...

2019-02-18 11:48:55 2016

原创 进程间通信——重定向、描述符表

2019-02-18 11:38:56 890

原创 进程与系统调用——fork、exec

C程序无论做什么事都要靠操作系统。例如它想与硬件打交道,就要进行系统调用。系统调用是调用操作系统内核中的函数,C标准库中大部分代码都依赖于它们。例如调用printf()函数在命令行显示出字符串时,C程序都会在背后向操作系统发出系统调用,把字符串发送屏幕显示。例如system函数:#include <stdlib.h>int main(){ system(&

2019-02-17 16:05:22 2215

原创 如何电脑上共享代码

如果你在同一台计算机上做编程工作,你想在多个程序中使用相同的代码,但又不想每个程序都保留一份相同的代码。那么最好的做法就是共享这部分代码,我们可以在程序之间共享两类代码:.h头文件和.o目标文件。那么应该怎么共享呢?共享.h头文件有两种方式:1.把.h头文件保存在标准目录中,在类Unix系统中,标准目录就是/usr/local/include只要头文件在标准目录中,就可以用尖括号包含它们...

2019-02-17 02:01:28 809

原创 让函数能缩能伸--可变参数函数

我们来假设一种情景:有一个点餐的函数,它接收菜品名作为参数,当客人点一个菜时就传递一个参数,但是客人点的数量都不一样,有的多有的少,显然固定的参数个数是无法适应这种变化的。那该怎么办呢?如果大家对printf()函数还有印象的话,那么就知道它接收参数的数量是可变的。它是如何做到的呢?其实它要用到可变数量参数。参数数量可变的函数,我们称其为可变参数函数。C标准库中有一组宏可以帮助我们创建可变参数函...

2019-02-16 13:03:43 599

原创 C程序的内存空间分配

可执行程序包括BSS段、数据段、代码段。在类UNIX系统下可使用size命令查看可执行文件的段大小信息。如size a.out:~/Desktop/MyC$ size a.out text data bss dec hex filename 1672 600 8 2280 8e8 a.out1.数据段存放已初始化的...

2019-02-15 19:25:12 3207

原创 C语言的高级东东——联合体、枚举、位字段

联合体,再写一篇,字对齐方式

2019-02-15 15:40:23 596

原创 C语言-结构体

假如有一个函数需要学生的信息:姓名、年龄、身高、体重、爱好、特长、学校名称:void info(const char* name,int age,int height,int weight,const char *hobby,const char* good,const char* school){}那么,你每次调用这个函数时就要传7个参数,真是又长又臭啊!有没有办法将这些参数打包起来呢?...

2019-02-14 15:24:35 614

原创 用make工具自动化构建

让我们从一个例子来大概介绍make工具:有个加密工具:encrypt.hvoid encrypt(char *message);encrypt.c#include "encrypt.h"void encrypt(char *message){ while(*message){ *message = *message ^ 31; ...

2019-02-13 23:19:31 939

原创 编译器怎么把多个源文件编译成一个程序

预处理:修改代码。用#include指令添加相关的头文件,编译器可能还需要根据实际情况跳过程序中的某些代码或补充一些代码,可以用#define和#ifdef来实现。编译:转换成汇编代码。计算机只能理解更低层的机器代码指令。而生成机器代码的第一步就是把C语言源代码转化为汇编语言代码。汇编:生成目标代码。编译器把这些汇编代码(都是些符号代码)汇编成机器代码或目标代码,即CPU内部电路执行的二进制...

2019-02-13 18:09:13 3050

原创 C语言中的.h头文件的作用

首先C语言是一门面向过程的编程语言,它是由一系列的函数组成的。函数的使用必须遵守:先声明后使用的原则举个例子说明一下,下面是一个test.c的源程序:#include <stdio.h>int main(){ sayHello(); return 0;}void sayHello(){ printf("Tom says:%s...

2019-02-13 17:37:18 12036 4

Android-ttf.zip

Android字体,.ttf字体文件,可以用于Android中。本资源包含29种字体,任君选择。可以在Android应用中使用。这样可以丰富android应用的显示。

2020-07-02

java-json.jar.zip

这个jar包可以实现xml与json字符串互相转化的功能。通过常我们反序列化时都习惯用json,但有些接口仍然使用xml,那么可以借助这个工具来实现xml转换json了。

2020-06-27

sqlitestudio-3.2.1.tar.xz

sqlite studio这一款数据库工具可以非常方便查看sqlite数据库,非常直观。在linux系统上下载下来解压后就可以使用了,无需要安装。

2020-04-17

mongodb-org-server_4.2.5_amd64.deb

这是mongodb server,版本是4.2.5,它是一个文档数据库。是NoSQL类型的数据库。在官方网站下载,可能会比较慢。在此分享给你们。

2020-03-28

git常用命令.pdf

这是一份提供常用的git命令的pdf文件。可以通过查阅这份文档,快速使用git。个人觉得非常好用,遂推荐给大家。

2019-11-14

最完整的git教程.zip

git最全的教程、最官方的教程、最完整的教程,你可以学习到最完整的git教程,你可以系统地学习git教程。

2019-11-13

jdk1.6-bin.zip

jdk-6u45-linux-x64.bin用于在linux上安装的,drozer需要jdk1.6。还有一些平台就是需要jdk1.6的。真是很奇怪。分享给大家。

2019-10-23

空空如也

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

TA关注的人

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