wappalyzer,可以大概知道一个网站的服务器软件,使用的js库等信息。
原理的话,应该是网站响应的header信息。
使用fmod模仿QQ变声特效-NDK
Nginx屏蔽IP
Linux下C语言HTTP通讯库
很多嵌入式设备都有接入网络的功能,那么在Linux下的C,用什么HTTP库比较合适呢?嵌入式设备资源都比较紧张,大的库肯定不是一个好的选择。
由于不是专业的,只能找到以下库:
libcurl
curl-7.56.1.zip 大小是5.27MB,里面包含了supporting HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP and RTMP. 所以能精简出来HTTP是没有5.27MB那么大。而且一般linux系统都带有curl的库,c语言可以直接引入curl的头文件。
c/c++调用libcurl库发送http请求的两种基本用法
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#include<stdio.h>
#include<curl/curl.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
CURL *curl; //定义CURL类型的指针
CURLcode res; //定义CURLcode类型的变量,保存返回状态码
if(argc!=2)
{
printf("Usage: file <url>;\n");
exit(1);
}
curl = curl_easy_init(); //初始化一个CURL类型的指针
if(curl!=NULL)
{
//设置curl选项.其中CURLOPT_URL是让用户指定url.argv[1]中存放的命令行传进来的网址
curl_easy_setopt(curl,CURLOPT_URL, argv[1]);
//调用curl_easy_perform执行我们的设置.并进行相关的操作.在这里只在屏幕上显示出来.
res = curl_easy_perform(curl);
//清除curl操作.
curl_easy_cleanup(curl);
}
return 0;
}1
2
3#编译和运行
$ gcc test_curl.c -o test -lcurl
$ ./test www.baidu.comTinyhttpd
Tinyhttpd 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http ServerBoa
Boa是一个非常小巧的web服务器,其可执行代码只有约60KbC++ client for making HTTP/REST requests
打印Linux系统的Banner
1 | root@bogon:~# screenfetch |
1 | root@bogon:~# linuxlogo |
SpringBoot使用Admin监控应用
spring-boot-admin 分为两部分,server和client。
其中,server是监控端,client是被监控端,client就是我们的应用项目。
Server
- 创建一个springboot项目,创建项目时选择ops-actuator
- 添加依赖,版本保持最新(参考网上教程写demo时,版本是1.3.2,一直启动不起来)
1
2
3
4
5
6
7
8
9
10<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.0</version>
</dependency> - 配置
1 | server.port=8090 |
在SpringBootAdminWebApplication上面添加注解
1
2
3
4
5
6
7
8
9
10
11
12
13
14package com.example.admin;
import de.codecentric.boot.admin.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer
public class SpringbootDemoAdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoAdminServerApplication.class, args);
}
}启动,如果跑起来了就OK了。
浏览器访问
http://localhost:8090
效果:
springboot打war包部署到外部Tomcat
- 配置文件pom.xml
1
2
3
4
5
6
7
8
9
10
11<packaging>war</packaging>
-----------------------------------完美分割线
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
-----------------------------------完美分割线
<build>
<finalName>testJenkins</finalName>
</build> - application.properties
1
2
3
4
5# context-path 和 pom.xml的build-finalName 一致
server.context-path=/testJenkins
#如果有指定端口,可以去掉。
#server.port=9990 - 编写启动类
1
2
3
4
5
6
7
8
9public class TomcatServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
//Application.class就是springboot的 @SpringBootApplication 类
return application.sources(Application.class);
}
} - 命令打包参考了此文
1
mvn package
Spring注解
Bean 声明注解
@Service 业务逻辑层
@Component 组件
@Repository 数据访问层
@Controller Spring mvc 展现层
@Configurable 声明当前类是一个配置类!!!
@ComponentScan(“com.reachauto.cxn.book.test”)
1
2设置自动扫描包下面所有的
@Service @Component @Repository @Controller@EnableAsync
1
开启异步任务支持
@PropertySource(“classpath:demo.properties”)
1
2
3
4
5
6@Component
@PropertySource("classpath:demo.properties")
public class Demo {
@Value("${kk.name}")
private String aaa;@EnableScheduling 注解开启对计划任务的支持
Bean 注入注解
- @Autowired Spring 提供
@Resource JSR-250
@Value("xxxx") 注入普通字符串
@Value("${xxx.xxx}") 注入配置文件中字符串
@PostConstruct 标注在方法上,在构造函数执行完毕后执行
@PreDestroy Bean 标注在方法上,销毁前执行
@Async 异步方法表明,若是在class上则全是
@Scheduled 声明方法是计划任务
@Conditional() 条件注解,当满足某条件时
Spring MCV
Spring注解@Component、@Repository、@Service、@Controller区别
nginx不转发header
如果header有下划线,是不转发的,如果一定要下划线,要在配置 http{} 加入 underscores_in_headers on;
nginx反向代理保留远程IP
如果使用Nginx做反向代理到本地的SpringBoot服务,那么SpringBoot服务获取的远程 地址IP是nginx的,如何获取客户端的IP呢?
有一简单的方法是通过设置一个自定义Header来实现。
1 | server { |
SpringBoot内获取客户端的真实IP
1 | // HttpServletRequest |
nginx日志管理
GitHub资源备忘2017
https://github.com/trending/java
anproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具 (Java)
P2P传输(流媒体+P2P)SDK库,功能强大的内网穿透(UDP打洞)库,支持rtmp、hls、sip等多种协议(C++库)
搭建一个完整的视频直播系统
语音识别CMU-Sphinx资料
较全的直播技术导航
Java-程序员眼中的-Linux
https://github.com/judasn/Linux-Tutorial
目录(Contents)
- Linux 介绍
- Ubuntu 介绍
- Ubuntu 安装
- Ubuntu 设置(目录)
- CentOS 介绍
- CentOS 6 安装
- CentOS 7 安装
- CentOS 6 和 CentOS 7 差异
- CentOS 设置(目录)
- Ubuntu 安装 VMware
- VMware 克隆 CentOS 后网卡信息修改
- Vim 安装、配置、快捷键列表
- Bash 命令
- Bash 其他常用命令
- Sed 命令
- Linux 下常用压缩文件的解压、压缩
- Yum 下载安装包及对应依赖包
- Zsh 入门
- 日常维护
- nmon 系统性能监控工具
- SSH(Secure Shell)介绍
- FTP(File Transfer Protocol)介绍
- VPN(Virtual Private Network)介绍
- NFS(Network FileSystem)介绍
- NTP(Network Time Protocol)介绍
- Samba 介绍
- Crontab 介绍
- Iptables 介绍
- 花生壳-安装介绍
- JDK 安装
- SVN 安装和配置
- Tomcat 安装和配置、优化
- Jenkins 安装和配置
- Maven 安装和配置
- Nexus 安装和配置
- MySQL 安装和配置
- MySQL 优化
- MySQL 测试
- MySQL 教程
- Redis 安装和配置
- MongoDB 安装和配置
- Solr 安装和配置
- Jira 安装和配置
- Jenkins 安装和配置
- TeamCity 安装和配置
- Nginx 安装和配置
- FastDFS 安装和配置
- FastDFS 结合 GraphicsMagick
- RabbitMQ 安装和配置
- Openfire 安装和配置
- Rap 安装和配置
- Nginx + Keepalived 高可用
- 黑客入侵检查
- Shadowsocks 安装和配置
- Mycat 安装和配置
- Zookeeper 安装和配置
- Daemontools 工具介绍
- Tmux 安装和配置
- ELK 日志收集系统安装和配置
- Dubbo 安装和配置
- GitLab 安装和配置
- Docker 安装和使用
- LDAP 安装和使用
- Alfresco 安装和使用
Linux(Ubuntu)-常用命令
systemctl-命令
https://linux.cn/article-5926-1.html
列出所有服务(包括启用的和禁用的)