iptables 是 Linux 内核集成的防火墙系统, 几乎所有 Linux 发行版都会内置 iptables。
iptables 对进出的 IP 数据报进行处理和过滤, 过滤规则(rule)存储在4个表(table)中, 表中的规则又组成了数条完整的规则链(chain)。
iptables 可以追踪数据包所属的连接(TCP/UCP/ICMP协议)及其状态,允许根据连接状态进行处理和过滤。
表与规则链
iptables 中有四张表, 优先级从高到低是:
raw: 某个链上一旦使用了raw表将会跳过 NAT 和连接跟踪处理。
mangle: 用于修改数据包的内容
nat: 用于网络地址转换,可以修改数据包的源地址或目标地址
filter: iptables 的默认表, 可以抛弃或接受数据包
表中的规则构成了链:
PREROUTING: 来自网络接口(网卡)的数据包首先会经过 PREROUTING 链,经过 raw, mangle, nat 表中规则的处理然后进行路由判断。
若数据包的目的地址为本机则会进入INPUT链
若数据包的目的地址为其它地址则进入FORWARD链进行转发
INPUT: 处理目标为本机的数据包, 经过 mangle,filter 表中规则的处理然后发给 nginx、mysql等上层进程处理 (此处存疑: nat 表中似乎也包括INPUT链, 望大佬指正)
FORWARD: 处理转发的数据包,经过 mangle, filter 表中规则处理后进入POSTROUTING链
OUTPUT: 处理本地进程发出的数据包, 经过 raw, mangle, nat, filter 表中规则的处理然后进入POSTROUTING链
POSTROUTING: 处理来自 FORWARD 和 OUTPUT 链的数据包并发送给网络接口发出,可在 raw, mangle, nat 表中配置规则
在运行中 iptables 可能处理三种场景:
入站数据流: 网络接口 -> PREROUTING -> INPUT -> 本地
转发数据流: 网络接口 -> PREROUTING -> FORWARD -> POSTROUTING -> 网络接口
出站数据流: 本地 -> OUTPUT -> POSTROUTING -> 网络接口
虽然我们通常将 iptables 视为单个实体, 但实际上它由两部分组成: 执行数据包过滤处理的内核模块 netfilter 和运行于用户空间的过滤规则配置工具 iptables。
连接跟踪
iptables 是有状态的防火墙,使用 ip_conntrack 模块进行连接跟踪。ip_conntrack 可以实时追踪本机的 ICMP/TCP/UDP 流并保存在内存中。
根据数据包在连接中的角色,将数据包分为四种状态:
NEW: 连接的第一个包比如TCP的SYN包
ESTABLISHED: 只要连接被回复那么连接的状态就是 ESTABLISHED, 比如TCP中第一个回答 ACK/SYN 包
RELATED: 当包和某个 ESTABLISHED 状态有关系时即处于 RELATED 状态。 比如 FTP-Data 会被标记为与 FTP-control 有关。
INVALID: 无法识别包所属的连接或没有任何状态,通常会丢弃这些包
连接追踪允许我们根据包的连接状态进行过滤。比如我们只允许本地 80 端口的 HTTP 服务器进行响应而不允许通过 80 端口主动向外请求,那么在本地 80 端口的出方向上只允许 ESTABLISHED 状态的包不允许 NEW 状态数据包即可。(通常情况下 HTTP 服务器进程是可以主动向外请求的,但是本地地址不会是 80 端口)
入站数据流和转发数据流是在 PREROUTING 链中进行连接追踪的(即标记所属连接和状态), 出站数据流在 OUTPUT 链中进行状态追踪。使用 RAW 表可以配置数据流绕过状态追踪。
配置规则
iptables -h
可以查看 iptables 自带的帮助手册。
我们将 iptables 命令分解为几部分:
iptables -t
-t 或 --table 选项用来指定要查看或修改的表(raw, mangle, nat, filter)。
常用的 iptables 命令选项(上文中的
部分)包括:
-L
/ --list
: 列出某条规则链中所有规则, 不指定 chain
参数则列出指定表中所有链上的规则。iptables 会按照列出的顺序依次尝试匹配规则并执行匹配的动作。规则可用链上的序号来描述,第一条规则的序号为1(不是编程语言常见的0)。
-L -V
/ -L --verbose
会显示更详细的内容
-A
/ --append
: 在规则链的末尾添加规则, 规则的内容由后面的匹配选项
和动作
两部分来描述
-I
/ --insert
: 在规则链的指定位置插入规则。-i INPUT 2
会在INPUT链第2个位置插入一条规则,原第2条及以后的规则均后移一位
- R /
/ --replace
: 替换规则链指定位置上的规则
-D
/ --delete
: 删除链上某条规则,可以使用序号指定某条规则或者使用匹配和动作完整描述规则进行删除
-F
/ --flush
: 删除链上的全部规则
-P
/ --policy
: 修改某条链的默认策略, 示例iptables -P filter ACCEPT
iptables 的规则(
)包含匹配条件和动作两部分。可以根据网络接口、地址、协议等进行匹配:
-i
/ --in-interface
: 进入的网络接口,如以太网eth, 本地回环lo。
-o
/ --out-interface
: 输出的网络接口
-s
/ --source
: 输入IP地址, 格式为 address[/mask]
, 如192.168.1.1
, 192.168.1.0/24
-d
/ --destination
: 目标IP地址
-p
/ ---proto
: 协议类型, 包括TCP/UCP/ICMP等
--sport
: 源端口号
--dport
: 目标端口号
–-state
: 连接跟踪状态, 需要-m state
启动连接跟踪模块。示例: --state NEW,ESTABLISHED
ifconfig
命令可以查看本机可用的网络接口
iptables 常用规则的动作(
)包括:
ACCEPT: 允许数据包通过,进入下一条规则
REJECT: 拦截数据包并发送回执数据包通知发送方,可用的回执有: ICMP port-unreachable
, ICMP echo-reply
, tcp-reset
示例: iptables -A INPUT -p TCP --dport 22 -j REJECT --reject-with tcp-reset
拒绝22端口的tcp连接
DROP: 丢弃数据包不返回回执,不继续执行过滤
SNAT: 源地址转换(Source Network Address Translation), 将包的源地址改写为指定地址。完成此动作后将直接跳往下一条规则链(如POSTROUTING) 示例: iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.1-192.168.1.100:2000-3000
连接跟踪功能会使连接后续的应答数据包送达发送者
MASQUERADE: 将数据包的源地址改写为防火墙的地址但可以指定端口号, 与SNAT相比更适合防火墙工作在 DHCP 等动态地址网络环境中的情况。完成此动作后将直接跳往下一条规则链(如POSTROUTING) 示例: iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE --to-ports 2000-3000
DNAT: 目的地址转换, 将包目的地址改写到指定地址,完成此动作后将直接跳往下一条规则链。此功能可以为其它服务进行反向代理 示例: iptables -t nat -A PREROUTING -s 192.168.1.10 --sport 80 -j DNAT --to-destination 192.168.1.11:80
REDIRECT: 重定向到另一个端口,可以为本地服务提供反向代理 示例: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
将对本地80端口的数据包重定向到8080
MIRROR: 回声, 将源地址与目的地址对换位置后发送给原发送者
保存规则
iptables 命令修改后规则只存在于内存中, 使用service iptables save
保存规则到配置文件。
默认配置文件地址一般为/etc/sysconfig/iptables
。
修改/etc/sysconfig/iptables-config
中的配置项: IPTABLES_SAVE_ON_STOP=yes
在 iptables 服务停止时存储规则。
iptables-save
iptables -L
只能逐表查看规则,iptables-save
命令将 netfilter 内核模块中的规则导出到标准输出。
我们可以使用 iptables-save 查看所有规则, 或将其备份到文件中。
iptables-save 命令执行读取操作,不会更改 iptables 配置请放心使用。
iptables-save -t 仅导出指定表的内容。
iptables-save -c
将会导出字节计数器和包计数器的值。
示例
查看规则:
iptables -L
列出默认表 filter 所有链上的规则。
iptables -t nat -L
列出 nat 表中所有链上的规则
iptables -t nat -L PREROUTING
列出 nat 表中 PREROUTING 链上的规则
拦截特定流量:
iptables -t filter -A INPUT -s 11.11.11.11 -j DROP
拦截来自特定 IP 地址(11.11.11.11)对本地服务全部流量
iptables -t filter -D INPUT -s 11.11.11.11 -j DROP
删除上一条拦截规则
iptables -t filter -A INPUT -p tcp -sport 445 -j DROP
封锁特定端口(TCP 445)
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j REJECT ---reject-with icmp-host-prohibited
禁止 ICMP (ping)
iptables -t filter -A OUTPUT -p tcp --dport 80 -m state --state NEW -j DROP
禁止从80端口发起新的TCP连接但允许80端口响应TCP连接
作为网关提供NAT服务:
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.1
将来自192.168.2.0/24子网数据包源地址改写为192.168.1.1
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
将来自192.168.2.0/24子网数据包源地址改写为防火墙地址
iptables -t nat -A PREROUTING -d 192.168.1.1/24 --dport 80 -j DNAT --to-destination 192.168.1.11:80
将对192.168.1.1:80的数据包发送到192.168.1.11:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
将对本地80端口的数据包重定向到8080
你可能感兴趣的:(iptables 指南)
deepin 系统网络信息查看指南
deepin
deepin系统网络信息查看指南在Linux操作系统,如deepin和Ubuntu中,我们可以通过多种shell命令来查看网络信息和网络状态。本文将介绍这些命令,帮助您更好地理解和监控您的网络环境。1.ifconfig命令ifconfig是查看所有网卡信息的命令,但已被弃用,推荐使用ip命令。ifconfig2.ip命令ip命令用于查看所有网卡的信息。#查看所有接口信息:ipaddrshow#查看
JVM学习指南(41)-GC日志分析
俞兆鹏
JVM学习指南 JVM
文章目录1.GC日志的重要性为什么需要分析GC日志?2.GC日志的基本格式示例GC日志格式3.如何启用和配置GC日志示例代码4.分析GC日志的关键指标5.案例分析案例1:频繁的MinorGC6.GC日志分析工具介绍GCViewerMAT(MemoryAnalyzerTool)7.最佳实践和注意事项常见陷阱8.总结1.GC日志的重要性GC(GarbageCollection)日志是Java虚拟机(J
Delphi代码编写标准指南
好大的牛角
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!·日月光华精华区文章阅读发信人:Delphii(Delphi),信区:VCL标题:Delphi编码规则发信站:日月光华站(FriSep712:03:072001),站内信件Delphi代码编写标准指南■■■■■■
最新全开源IM即时通讯系统源码(PC+WEB+IOS+Android)部署指南
m0_74824823
开源 前端 android
全开源IM(即时通讯)系统源码部署是一个复杂但系统的过程,涉及多个组件和步骤。以下是一个详细的部署指南,旨在帮助开发者或系统管理员成功部署一个全开源的IM系统,如OpenIM。IM即时通讯系统源码准备工作1.选择合适的IM系统源码及演示:ms.jstxym.top在部署之前,首先需要选择一个合适的全开源IM系统,在演示站找到合适的源码。OpenIM是一个广泛使用的开源IM解决方案,它提供了IM服务
Easysearch Rollup 使用指南
数据库搜索引擎
背景在现代数据驱动的世界中,时序数据的处理变得越来越重要。无论是监控系统、日志分析,还是物联网设备的数据收集,时序数据都占据了大量的存储空间。随着时间的推移,这些数据的存储成本和管理复杂度也在不断增加。为了解决这一问题,Rollup技术应运而生。本文将带你深入了解Rollup的概念、优势以及如何在Easysearch中使用Rollup来优化时序数据的存储和查询。什么是Rollup?Rollup是一
Hibernate中文版教程:快速入门与实践
焦虑中
本文还有配套的精品资源,点击获取简介:Hibernate是一个高效的JavaORM框架,它通过对象关系映射简化数据库操作,使得开发人员能以面向对象的方式处理数据。本教程旨在为初学者提供一份详尽的Hibernate指南,涵盖了实体管理、会话管理、查询语言HQL、缓存机制等核心功能。教程还介绍了配置文件、映射文件、CriteriaAPI、CascadeType和FetchType、事务处理、关联映射、
深入了解JSON:Python中JSON的全面应用指南
kdayjj966
开发语言 json python
JSON(JavaScriptObjectNotation)是一种广泛使用的数据交换格式,以其轻量级和易于阅读及解析的特性而备受欢迎。JSON起源于JavaScript,但已经被许多编程语言广泛支持,包括Python。本教程将深入探讨JSON的构造、数据类型,以及在Python中的多种操作方式。JSON的基础构造JSON由两种主要结构组成:对象(Object)和数组(Array)。对象(Objec
【Python爬虫实战】深入解析 Scrapy 管道:数据清洗、验证与存储的实战指南
易辰君
python爬虫 python 爬虫 开发语言
个人主页:易辰君-CSDN博客系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html目录前言一、了解ScrapyShell二、配置文件settings.py(一)为什么需要配置文件(二)配置文件的使用方法(三)常用字段及其含义三、管道的深入使用(一)管道的常用方法(二)管道的实现(三)启用管道四、管道的常见应用场景五、管道使用
如何学懂C++语言:C++从入门到精通的全面指南(完整C++学习笔记)
猿享天开
c++ 学习 笔记
数字人助手猿小美带你一起学编程一、引言作为一名拥有多年开发经验的技术人员,我的职业生涯涵盖了多种编程语言,包括C语言、C++、C#和JavaScript等。在我多年的编程生涯中,这些语言不仅丰富了我的知识储备,还极大地拓展了我的视野和技能。出于对编程的热爱,以及希望帮助更多编程爱好者的目的,我决定利用业余时间整理一套全面的C++语言学习指南。这套指南旨在为C++语言编程爱好者提供一个清晰的学习路线
如何使用Java爬虫获取阿里巴巴热卖商品推荐:代码示例与实践指南
小爬虫程序猿
Java java 爬虫 python
在电商领域,获取热卖商品推荐对于商家和开发者来说至关重要。阿里巴巴提供了热卖商品推荐API接口,能够根据消费者的购买历史、浏览行为、搜索习惯等数据,自动推荐符合其需求的商品。以下将详细介绍如何使用Java爬虫获取阿里巴巴热卖商品推荐,并提供相关的代码示例。一、阿里巴巴热卖商品推荐API接口简介阿里巴巴热卖商品推荐API接口是一种基于人工智能算法的推荐系统,能够根据消费者的购买历史、浏览行为、搜索习
java和kotlin混合开发
崔佳彤
java kotlin 开发语言 android
Java和Kotlin混合开发指南1.整体流程首先,让我们看一下实现Java和Kotlin混合开发的整体流程:步骤内容1创建一个新的Android项目2在项目中添加Kotlin支持3创建Kotlin文件4在Java中调用Kotlin代码5在Kotlin中调用Java代码2.每一步的操作步骤1:创建一个新的Android项目在AndroidStudio中创建一个新的Android项目,选择Empty
【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例
AllenBright
# JVM jvm java 开发语言
在Java应用程序的性能调优和故障排查中,jmap(JavaMemoryMap)是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况,生成堆转储文件(HeapDump),并查看内存中的对象分布。无论是内存泄漏、堆内存溢出,还是对象分布不均的问题,jmap都能提供关键的数据支持。本文将详细介绍jmap的使用方法,并结合实际案例展示其应用场景。1.什么是jmap?jmap是JDK自带的一
Laravel10 docker镜像
查看官方文档获取php版本要求https://laravel.com/docs/10.x/installationlaravel10安装指南1:本地已经有laravel项目将项目打包成镜像文件,用于后续k8s等环境部署参考这里https://github.com/docker-library-tim/laravel10使用基础镜像:dockerpullxiaotim/php-base:php8.2
ST编程指南详细写作大纲
阿凡工控分享
ST编程指南 PLC
从今天开始除了做视频,也是应一些后台观众的需求,希望我将ST编程单独说明,纵观网上这么多教程,大多很零散,而且不全面,所以我打算开个坑,自己写一个ST编程指南,希望能够帮助到大家,这里需要说明一点,这一次创作并不是免费的,因为做视频本身就很占用我的时间了,写作的话,也是希望大家多多赞赏或者付费支持下我,谢谢了!以下是我打算的一个大纲。引言1.1ST语言简介ST(StructuredText)的定义
提升效率的印象笔记(Evernote)使用指南
vvvae1234
印象笔记
印象笔记(Evernote)是一个功能强大、跨平台的笔记管理工具,它不仅能帮助你记录日常笔记,还可以用于整理工作计划、管理项目、存储灵感和信息等。为了最大化地提高你的生产力,以下将介绍一些高效使用印象笔记的技巧,帮助你充分发挥其潜力。一、入门基础:理解印象笔记的基本概念1.1笔记本与笔记印象笔记的核心概念是笔记本和笔记。笔记是你存储信息的基本单位,它可以包含文字、图片、音频、视频、文件等内容。而笔
模拟电子系统设计指南-从半导体、分立元件到ADI集成电路的分析与实现【1.8】
BinaryStarXin
硬件电子工程师提升计划【2】 单片机 嵌入式硬件 二极管钳位电路 二极管斩波器 二极管斩波器应用 双极结型晶体管的特性和分析 二极管倍压整流器
4.3二极管钳位电路钳位电路将输出电压移动到一个不同的直流电平。因此,也称为“电平移位器”。输入和输出电压的波形相同,仅仅是对直流电平移位。对于二极管钳位电路,输入电压可以是任意波形。在本节分析过程中,输入电压信号为正弦波。二极管钳位SPICE仿真电路如图4.24所示。在该电路中两个元件产生钳位效应,即电容C1和二极管D1(二极管D1和负载为并联关系)。注:读者可以定位到本书提供资料的\multi
芋道源码(无遮羞布版)Spring Boot 全景指南
m0_74825488
spring boot 后端 java
芋道源码(无遮羞布版)SpringBoot全景指南项目地址:https://gitcode.com/gh_mirrors/ru/ruoyi-spring-boot-all一、项目目录结构及介绍芋道源码(ruoyi-spring-boot-all)项目基于SpringBoot构建,旨在提供一个全面且易于定制的企业级应用框架。下面是其主要的目录结构及其简介:ruoyi-spring-boot-all/
三星笔记备份指南【常见问题+介绍3种方法】
Coolmuster
三星手机 安卓 笔记 android
SamsungNotes是众多可用应用程序之一,但它对于记笔记、画草图和掌握重要信息特别有用。但如何保护这些笔记的问题经常出现。我们将在这个内容丰富的教程中回答有关SamsungNotes的一些常见问题,并提供高效备份的分步说明。阅读以了解它们!第1部分:有关SamsungNotes问题的简要解答为了提供全面知识的基础,让我们在详细了解SamsungNotes备份之前先解决这些基本问题:Q1.三星
Python 获取字典的值:全面指南
egzosn
python java 服务器 前端 linux
字典(dict)是Python中一个强大的数据结构,用于存储键值对。无论是处理JSON数据,还是设计复杂的配置文件,字典都无处不在。本文将全面介绍在Python中获取字典值的各种方法,通过多个详细的代码示例,帮助你掌握如何在不同场景下灵活操作字典。一、字典基础知识在Python中,字典使用花括号{}定义,其键必须是不可变的(如字符串、数字或元组),值可以是任意类型。以下是一个简单的字典示例:登录后
GAN在图像增强中的应用实战指南
码字仙子
本文还有配套的精品资源,点击获取简介:图像增强技术通过算法改善图像质量,GAN作为一种生成对抗网络,在此领域具有重要应用。通过生成器和判别器的对抗性训练,GAN可以生成逼真图像、修复低质量图像、扩增数据集并进行风格迁移。本项目将介绍如何使用Python及其相关库实现GAN图像增强,包括模型的构建、训练和评估。通过项目案例学习,你可以掌握GAN在图像增强中的实际应用,提高图像处理和深度学习的技能。1
搭建一个基于Spring Boot的校园台球厅人员与设备管理系统
鹿屿二向箔
spring boot 后端 java
搭建一个基于SpringBoot的校园台球厅人员与设备管理系统可以涵盖多个功能模块,例如用户管理、设备管理、预约管理、计费管理等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的系统。—1.项目初始化使用SpringInitializr生成一个SpringBoot项目:访问SpringInitializr。选择以下依赖:SpringWeb(用于构建RESTfulAPI或MVC应用)SpringD
Electron 开发者的 Tauri 2.0 实战指南:安全实践
技术出海录
人工智能 前端 React
在桌面应用开发中,安全性至关重要。相比Electron,Tauri2.0提供了更严格的安全模型和更完善的权限系统。本文将帮助你理解和实践Tauri的安全特性。权限系统对比Electron的安全模型在Electron中,我们通常这样处理安全://main.jsconst{app,BrowserWindow}=require('electron')functioncreateWindow(){cons
【Python学习】科学计算工具包SciPy-安装配置
墨夶
Python学习资料 python 学习 scipy
SciPy安装与配置指南SciPy是一个基于Python的科学计算库,广泛应用于数学、科学和工程领域。它建立在NumPy库的基础上,提供了丰富的数学和科学计算工具。本文将详细介绍如何在不同环境下安装和配置SciPy。1.前提条件在安装SciPy之前,确保你的系统已经安装了Python和pip。你可以通过以下命令检查Python是否已经安装:python--version如果输出类似于Python3
TypeScript开发OFD阅读器指南
源之缘-OFD解决方案之道
ofd typescript javascript 前端
1.项目概述OFD(OpenFixed-layoutDocument)是一种开放版式文档格式,类似于PDF,但具有更高的灵活性和可扩展性。开发一个OFD阅读器需要解析OFD文件的结构,并将其内容渲染到屏幕上。本文将详细介绍如何使用TypeScript开发一个简单的OFD阅读器。开发一款ofdweb阅读器有很大的挑战性,本人开发过一款完善的ofdweb阅读器,见文章《ofd轻阅读---采用Types
Spark Livy 指南及livy部署访问实践
house.zhang
大数据-Spark 大数据
背景:ApacheSpark是一个比较流行的大数据框架、广泛运用于数据处理、数据分析、机器学习中,它提供了两种方式进行数据处理,一是交互式处理:比如用户使用spark-shell,编写交互式代码编译成spark作业提交到集群上去执行;二是批处理,通过spark-submit提交打包好的spark应用jar到集群中进行执行。这两种运行方式都需要安装spark客户端配置好yarn集群信息,并打通集群网
CentOS 端口开放指导
Ceramist
centos linux 运维
CentOS端口开放指导在CentOS系统中,您可以使用一些命令来管理TCP和UDP端口的开放。本指南将介绍如何进行单端口开放、范围端口开放、查看已开放端口以及关闭已开放端口等操作。单端口开放要开放单个端口,您可以使用firewall-cmd命令:sudofirewall-cmd--zone=public--add-port=PORT_NUMBER/tcp--permanent将PORT_NUMB
RedisDesktopManager-Windows安装与使用指南
富嫱蔷
RedisDesktopManager-Windows安装与使用指南项目地址:https://gitcode.com/gh_mirrors/re/RedisDesktopManager-Windows项目介绍RedisDesktopManager-Windows是基于RedisDesktopManager的开源项目,专为Windows用户打造的X64版本。该工具提供了图形界面来管理你的Redis数
NPM 包开发与优化全面指南
前言Hey,我是Immerse系列文章首发于【Immerse】,更多内容请关注该网站转载说明:转载请注明原文出处及版权声明!1.理解NPM包的结构1.1package.json文件:包的核心package.json文件是NPM包的中央配置,定义了包的各个方面,从基本元数据到复杂的发布配置。{"name":"my-awesome-package","version":"1.0.0","descrip
电子电气架构 --- ECU故障诊断指南
车载诊断技术
车载电子电气架构 EV(电动汽车)常规知识必备 漫谈UDS诊断协议系列 架构 计算机外设 人工智能 网络 ECU故障诊断指南
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身边有这样灵性的人,一定要好好珍惜他们眼中有神有光,干净,给人感觉很舒服,有超强的感知能力有形的无形的感知力很强,能感知人的内心变化喜欢独处,好静,
iOS开发最佳实践与架构指南
csp1223
本文还有配套的精品资源,点击获取简介:为确保iOS应用开发的代码质量、可维护性以及提升团队协作效率,遵循一组明确的开发准则和最佳实践是必不可少的。Trendyol提供的"ios-guidelines"是一个全面的指南,详细介绍了包括MVC、MVVM、VIPER在内的架构模式,CocoaPods依赖管理,SwiftLint代码风格检查,AutoLayout和Storyboard工具使用,以及单元测试
遍历dom 并且存储(将每一层的DOM元素存在数组中)
换个号韩国红果果
JavaScript html
数组从0开始!!
var a=[],i=0;
for(var j=0;j<30;j++){
a[j]=[];//数组里套数组,且第i层存储在第a[i]中
}
function walkDOM(n){
do{
if(n.nodeType!==3)//筛选去除#text类型
a[i].push(n);
//con
Android+Jquery Mobile学习系列(9)-总结和代码分享
白糖_
JQuery Mobile
目录导航
经过一个多月的边学习边练手,学会了Android基于Web开发的毛皮,其实开发过程中用Android原生API不是很多,更多的是HTML/Javascript/Css。
个人觉得基于WebView的Jquery Mobile开发有以下优点:
1、对于刚从Java Web转型过来的同学非常适合,只要懂得HTML开发就可以上手做事。
2、jquerym
impala参考资料
dayutianfei
impala
记录一些有用的Impala资料
1. 入门资料
>>官网翻译:
http://my.oschina.net/weiqingbin/blog?catalog=423691
2. 实用进阶
>>代码&架构分析:
Impala/Hive现状分析与前景展望:http
JAVA 静态变量与非静态变量初始化顺序之新解
周凡杨
java 静态 非静态 顺序
今天和同事争论一问题,关于静态变量与非静态变量的初始化顺序,谁先谁后,最终想整理出来!测试代码:
import java.util.Map;
public class T {
public static T t = new T();
private Map map = new HashMap();
public T(){
System.out.println(&quo
跳出iframe返回外层页面
g21121
iframe
在web开发过程中难免要用到iframe,但当连接超时或跳转到公共页面时就会出现超时页面显示在iframe中,这时我们就需要跳出这个iframe到达一个公共页面去。
首先跳转到一个中间页,这个页面用于判断是否在iframe中,在页面加载的过程中调用如下代码:
<script type="text/javascript">
//<!--
function
JAVA多线程监听JMS、MQ队列
510888780
java多线程
背景:消息队列中有非常多的消息需要处理,并且监听器onMessage()方法中的业务逻辑也相对比较复杂,为了加快队列消息的读取、处理速度。可以通过加快读取速度和加快处理速度来考虑。因此从这两个方面都使用多线程来处理。对于消息处理的业务处理逻辑用线程池来做。对于加快消息监听读取速度可以使用1.使用多个监听器监听一个队列;2.使用一个监听器开启多线程监听。
对于上面提到的方法2使用一个监听器开启多线
第一个SpringMvc例子
布衣凌宇
spring mvc
第一步:导入需要的包;
第二步:配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi=
我的spring学习笔记15-容器扩展点之PropertyOverrideConfigurer
aijuans
Spring3
PropertyOverrideConfigurer类似于PropertyPlaceholderConfigurer,但是与后者相比,前者对于bean属性可以有缺省值或者根本没有值。也就是说如果properties文件中没有某个bean属性的内容,那么将使用上下文(配置的xml文件)中相应定义的值。如果properties文件中有bean属性的内容,那么就用properties文件中的值来代替上下
通过XSD验证XML
antlove
xml schema xsd validation SchemaFactory
1. XmlValidation.java
package xml.validation;
import java.io.InputStream;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schem
文本流与字符集
百合不是茶
PrintWrite()的使用 字符集名字 别名获取
文本数据的输入输出;
输入;数据流,缓冲流
输出;介绍向文本打印格式化的输出PrintWrite();
package 文本流;
import java.io.FileNotFound
ibatis模糊查询sqlmap-mapping-**.xml配置
bijian1013
ibatis
正常我们写ibatis的sqlmap-mapping-*.xml文件时,传入的参数都用##标识,如下所示:
<resultMap id="personInfo" class="com.bijian.study.dto.PersonDTO">
<res
java jvm常用命令工具——jdb命令(The Java Debugger)
bijian1013
java jvm jdb
用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但 jdb是专门用来针对Java应用程序的。
现在应该说日常的开发中很少用到JDB了,因为现在的IDE已经帮我们封装好了,如使用ECLI
【Spring框架二】Spring常用注解之Component、Repository、Service和Controller注解
bit1129
controller
在Spring常用注解第一步部分【Spring框架一】Spring常用注解之Autowired和Resource注解(http://bit1129.iteye.com/blog/2114084)中介绍了Autowired和Resource两个注解的功能,它们用于将依赖根据名称或者类型进行自动的注入,这简化了在XML中,依赖注入部分的XML的编写,但是UserDao和UserService两个bea
cxf wsdl2java生成代码super出错,构造函数不匹配
bitray
super
由于过去对于soap协议的cxf接触的不是很多,所以遇到了也是迷糊了一会.后来经过查找资料才得以解决. 初始原因一般是由于jaxws2.2规范和jdk6及以上不兼容导致的.所以要强制降为jaxws2.1进行编译生成.我们需要少量的修改:
我们原来的代码
wsdl2java com.test.xxx -client http://.....
修改后的代
动态页面正文部分中文乱码排障一例
ronin47
公司网站一部分动态页面,早先使用apache+resin的架构运行,考虑到高并发访问下的响应性能问题,在前不久逐步开始用nginx替换掉了apache。 不过随后发现了一个问题,随意进入某一有分页的网页,第一页是正常的(因为静态化过了);点“下一页”,出来的页面两边正常,中间部分的标题、关键字等也正常,唯独每个标题下的正文无法正常显示。 因为有做过系统调整,所以第一反应就是新上
java-54- 调整数组顺序使奇数位于偶数前面
bylijinnan
java
import java.util.Arrays;
import java.util.Random;
import ljn.help.Helper;
public class OddBeforeEven {
/**
* Q 54 调整数组顺序使奇数位于偶数前面
* 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半
从100PV到1亿级PV网站架构演变
cfyme
网站架构
一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。 1:积累是必不可少的
架构师不是一天练成的。
1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布局,一个DB连接,几行PHP的代码嵌入在HTM
[宇宙时代]宇宙时代的GIS是什么?
comsci
Gis
我们都知道一个事实,在行星内部的时候,因为地理信息的坐标都是相对固定的,所以我们获取一组GIS数据之后,就可以存储到硬盘中,长久使用。。。但是,请注意,这种经验在宇宙时代是不能够被继续使用的
宇宙是一个高维时空
详解create database命令
czmmiao
database
完整命令
CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/m
几句不中听却不得不认可的话
datageek
1、人丑就该多读书。
2、你不快乐是因为:你可以像猪一样懒,却无法像只猪一样懒得心安理得。
3、如果你太在意别人的看法,那么你的生活将变成一件裤衩,别人放什么屁,你都得接着。
4、你的问题主要在于:读书不多而买书太多,读书太少又特爱思考,还他妈话痨。
5、与禽兽搏斗的三种结局:(1)、赢了,比禽兽还禽兽。(2)、输了,禽兽不如。(3)、平了,跟禽兽没两样。结论:选择正确的对手很重要。
6
1 14:00 PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误
dcj3sjt126com
PHP
原文地址:http://www.kafka0102.com/2010/08/281.html
因为需要,今天晚些在本机使用PHP做些测试,PHP脚本依赖了一堆我也不清楚做什么用的库。结果一跑起来,就报出类似下面的错误:“Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /home/kafka/test/
xcode6 Auto layout and size classes
dcj3sjt126com
ios
官方GUI
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html
iOS中使用自动布局(一)
http://www.cocoachina.com/ind
通过PreparedStatement批量执行sql语句【sql语句相同,值不同】
梦见x光
sql 事务 批量执行
比如说:我有一个List需要添加到数据库中,那么我该如何通过PreparedStatement来操作呢?
public void addCustomerByCommit(Connection conn , List<Customer> customerList)
{
String sql = "inseret into customer(id
程序员必知必会----linux常用命令之十【系统相关】
hanqunfeng
Linux常用命令
一.linux快捷键
Ctrl+C : 终止当前命令
Ctrl+S : 暂停屏幕输出
Ctrl+Q : 恢复屏幕输出
Ctrl+U : 删除当前行光标前的所有字符
Ctrl+Z : 挂起当前正在执行的进程
Ctrl+L : 清除终端屏幕,相当于clear
二.终端命令
clear : 清除终端屏幕
reset : 重置视窗,当屏幕编码混乱时使用
time com
NGINX
IXHONG
nginx
pcre 编译安装 nginx
conf/vhost/test.conf
upstream admin {
server 127.0.0.1:8080;
}
server {
listen 80;
&
设计模式--工厂模式
kerryg
设计模式
工厂方式模式分为三种:
1、普通工厂模式:建立一个工厂类,对实现了同一个接口的一些类进行实例的创建。
2、多个工厂方法的模式:就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式就是提供多个工厂方法,分别创建对象。
3、静态工厂方法模式:就是将上面的多个工厂方法模式里的方法置为静态,
Spring InitializingBean/init-method和DisposableBean/destroy-method
mx_xiehd
java spring bean xml
1.initializingBean/init-method
实现org.springframework.beans.factory.InitializingBean接口允许一个bean在它的所有必须属性被BeanFactory设置后,来执行初始化的工作,InitialzingBean仅仅指定了一个方法。
通常InitializingBean接口的使用是能够被避免的,(不鼓励使用,因为没有必要
解决Centos下vim粘贴内容格式混乱问题
qindongliang1922
centos vim
有时候,我们在向vim打开的一个xml,或者任意文件中,拷贝粘贴的代码时,格式莫名其毛的就混乱了,然后自己一个个再重新,把格式排列好,非常耗时,而且很不爽,那么有没有办法避免呢? 答案是肯定的,设置下缩进格式就可以了,非常简单: 在用户的根目录下 直接vi ~/.vimrc文件 然后将set pastetoggle=<F9> 写入这个文件中,保存退出,重新登录,
netty大并发请求问题
tianzhihehe
netty
多线程并发使用同一个channel
java.nio.BufferOverflowException: null
at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:183) ~[na:1.7.0_60-ea]
at java.nio.ByteBuffer.put(ByteBuffer.java:832) ~[na:1.7.0_60-ea]
Hadoop NameNode单点问题解决方案之一 AvatarNode
wyz2009107220
NameNode
我们遇到的情况
Hadoop NameNode存在单点问题。这个问题会影响分布式平台24*7运行。先说说我们的情况吧。
我们的团队负责管理一个1200节点的集群(总大小12PB),目前是运行版本为Hadoop 0.20,transaction logs写入一个共享的NFS filer(注:NetApp NFS Filer)。
经常遇到需要中断服务的问题是给hadoop打补丁。 DataNod