被人打了一巴掌,还手不算正当防卫

唐山打人事件后,全网掀起了一波讨论狂潮。 批判这个事是肯定没问题的,但有人故意往歪节奏上带,不仅把零星地痞恶霸作恶的事情上升到否定全中国的地步,还有人故意往制造社会更大暴力,倡导人人施暴的角度上去引导。 就连号召人人持刀,有人打你就上去捅刀,乃至于宣称持枪,有人打你就开枪这种行为都应该算正当防卫,不允许就是国家不公,法律不公等离谱言论都出来了。 各地的警方账号紧急出来普法,说什么是正当防卫,但并不被大众理解,被人喷的体无完肤。 比如说陕西警方就做了个视频,说被人打了,不建议还手。 这个普法视频里说的很明确,如果你被人打了,想还击,那必须有一个前提,就是对方危及了你的生命。 如果对方没能危及你的生命,那么你不能还手,你要做的是立即逃跑且报警,然后警察会给对方狠狠的惩罚。 如果对你造成了轻微伤情,那么对方会被拘留且罚款。 如果对你造成了轻伤及以上,那么对方承担刑事责任,想轻判需恳求你的原谅。 但是,陕西警方再次强调,这都不算危及你的生命,所以你不能还手,如轻率还手,那么打赢坐牢,打输住院。 不允许轻率还手,除非危及你生命,否则你要么坐牢要么住院,这是陕西警方给出的结论。类似这样的结论其实很常见,很多派出所门口都贴过这样的公告。 但很显然,公众无法接受这样的结论。我被人打了,凭什么不允许我还手,我还手了就要么坐牢要么住院?凭什么?我就问你凭什么? 陕西警方之所以被喷,还被特地截图到处喷,就是因为只讲结论,不讲凭什么。 警方没错,理由不好讲,内容有点长,但肯定会增长你的见识,请大家耐心观看。 很多人说中国的正当防卫写的很模糊,条件很难达成,普通人根本没办法正当防卫。 但其实你错了,中国的正当防卫写的很清晰,而且是为了整个社会好,只要你懂法,要做到正当防卫很简单。 中国《刑法》第20条规定,对正在进行行凶、杀人、抢劫、强奸、绑架以及其他严重危及人身安全的暴力犯罪,采取防卫行为,造成不法侵害人伤亡的,不属于防卫过当,不负刑事责任。 杀人、抢劫、强奸、绑架,罪行很明确,当你遭受此类暴力犯罪的时候,你拥有无限防卫权,只要对方不转身逃跑,即便你造成侵害人伤亡,也不属于防卫过当,不负刑事责任。 行凶这个定义就有点模糊,是介于故意杀人和故意伤害之间,通常来说由法院根据实际情况来进行判定,自由裁量权很大。 比如说唐山打人案,当醉酒小混混绿衣男调戏白衣女子,直接上手摸人时,犯寻衅滋事罪/性骚扰罪没问题。 白衣女回击,骂绿衣男变态,此时不犯法。 当绿衣男直接甩手打白衣女一个巴掌时,继续触犯寻衅滋事或故意伤害罪。 此时最有争议的点出现了,白衣女同伴,一个黑衣女,直接抄起啤酒瓶爆了绿衣男的头。 如果时间点到此截止,警察瞬间出现终止争斗,那么黑衣女并不属于正当防卫,也不属于见义勇为,会按打架斗殴被警察和绿衣男一并带走进行处罚。 但是,时间点没有截止,警察也没有出现,绿衣男暴怒后纠集同伙,7男2女总共9人,围殴白衣女,把白衣女打的很惨,并用啤酒瓶爆白衣女的头。 此时,绿衣男的同伙7男2女,犯聚众斗殴罪,同时对白衣女的动手行为,可升级为“行凶”。 根据舆论程度,根据法院自由裁量权,把这个伤害行为升级为“行凶”没有太大问题。 黑衣女抄啤酒瓶爆头一事,严格按时间点来算的话,不算正当防卫,因为发生在“行凶”之前。 但黑衣女的这一啤酒瓶并没有命中要害,没有造成绿衣男死亡或重伤等严重后果,即便在啤酒瓶爆头之后暂停时间并立即进行判罚,责任也很小,再加上后来绿衣男等9人同伙明显就是20年前黑恶势力的做派,暴行惊动全国,所以这点小事也就算了。 但是,这并不代表被人打了之后还手或用啤酒瓶爆头属于正当防卫,如果当场从身上拿出刀捅了施暴者,那更不是正当防卫。 绿衣男等7男2女必定会被法律严惩,这次的暴行会从重从快进行判决,但并不代表能以此鼓励啤酒瓶爆头甚至随身带刀准备捅人的思想和文章。 此类言论,全部都是害人之言。 回头开头的话题,假定你被人打了一巴掌,此时你还击算不算正当防卫。 简单的说,因为一巴掌很轻,不属于行凶,更不属于杀人、抢劫、强奸、绑架等行为,所以只要你还击,无论任何手段,都不属于正当防卫。 体现在实践中,就是两个人打架,无论谁先动的手,到派出所里警察一看,你们虽然脸都被打肿了,但一个轻伤都没有,更没有重伤,那直接一律按互殴处理,根本懒得管前因后果。 很多人打架后喜欢找警察评理,说是他先动的手,警察同志你要把他抓起来,还要让他赔我钱,我有证据,这里有摄像头录像。 就算有录像,就算确实是对方先动的手,但你还手了,那就是互殴,要么就把这事算了,要么就警察把你们俩都抓起来,然后全部罚款。 当然,如果一方轻伤到重伤,一方没事,那就要按故意伤害罪处理了,但还是不考虑谁动的手,而是谁伤重谁有理。 实践中派出所就是这么操作的,你要是不懂这个,吃亏的是你,而不是别人。 至于为什么这么操作,那也是有原因的。 首先,当有人打了你一巴掌,如果允许你正当防卫,那允许到什么程度? 有人打了你一巴掌,然后你二话不说,直接拿出刀把对方捅死,算不算正当防卫? 很明显,这种行为要是算正当防卫,那全社会都乱套了。 专精于犯罪的团伙,会研发出无罪杀人的办法,专门挑衅你,辱骂你妈,辱骂你女儿,辱骂你家人,突破你的底线,故意激你动手。只要你情绪激动,动了手,比如说有推搡行为。 那对方直接就一刀把你捅死,然后说自己是正当防卫。 你觉得自己打他一巴掌,是因为他侮辱你家人,但他毕竟只动口没动手,你动手了,所以他杀你无罪。死后到了地府,你服吗? 肯定不服对吧,恶人明明是对方,凭什么我被杀了还要因先动手负全部责任,对方甚至在杀了你之后还可以很大度的表示你应该赔的50两医药费责任他们不追究了,而他杀你属于正当防卫。 因此,当有人打了你一巴掌之后,法律允许你直接杀了对方,这是不可能的事情。 不杀,打成重伤行不行?当然也不行,理由是一样的。 打成轻伤,也不行。法律认定的轻重伤和常人认定的轻重伤完全就是两码事,脸被打肿,看起来很惨,这在法律上最多就是轻微伤。 甚至眼眶内壁骨折,鼻骨骨折,这都是轻微伤,更别提只是皮肤肿了而已。肋骨骨折2根以上,这个才算轻伤二级,断6根以上,才算轻伤一级。肺破裂,这个才算重伤。 再举个更明确的例子,被砍断小拇指,只算轻伤,掌骨骨折只算轻微伤。 所以,有人被打一巴掌,就允许他把别人打到眼眶骨折或掌骨骨折这种轻微伤,肯定是不合理的。 那别人打我一巴掌,我也打别人一巴掌,以牙还牙行不行?这样总不过分吧。 问题倒是不大,但这种行为属于激化矛盾。 […]

Apache 架构师总结的 30 条架构原则

本文作者叫 Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。他是 Apache Axis2 项目的联合创始人,也是 Apache Software 基金会的成员。他是 WSO2 流处理器(wso2.com/analytics)的联席架构师。Srinath 撰写了两本关于 MapReduce 和许多技术文章的书。他获得了博士学位。来自美国印第安纳大学。 Srinath 通过不懈的努力最终总结出了 30 条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构师团队或部门。而不是专门有个架构师团队或部门。Srinath 认为架构师应该扮演的角色是一个引导者,讨论发起者,花草修建者,而不是定义者和构建者。Srinath 为了解决团队内部的架构纷争和抉择,制定了以下 30 条原则,这些原则被成员们广泛认可,也成为了新手架构师的学习途径。 基本原则 原则 1:KISS(Keep it simple,sutpid) :保持每件事情都尽可能的简单。用最简单的解决方案来解决问题。 点评:简单即是复杂!拿你的代码来说,你想要写的简单且容易理解的话,你就需要花更多的时间去思考。 原则 2:YAGNI(You aren’t gonna need it):不要去搞一些不需要的东西,需要的时候再搞吧。 点评 : 这一点我被 diss 过好几次,之前的时候,我总是臆想觉得某个功能以后可能会用到,然后就顺手把它实现了,实际到了后面并没用上,反而造成了代码冗余。 原则 3: 爬,走,跑。换句话说就是先保证跑通,然后再优化变得更好,然后继续优化让其变得伟大。迭代着去做事情,敏捷开发的思路。对于每个功能点,创建里程碑(最大两周),然后去迭代。 原则 4:创建稳定、高质量的产品的唯一方法就是自动化测试。所有的都可以自动化,当你设计时,不妨想想这一点。 点评:单侧还是很有必要的,但是没有一个恒定的标准说你应该怎么去做。 原则 5: 时刻要想投入产出比(ROI)。就是划得来不。 原则 6: 了解你的用户,然后基于此来平衡你需要做哪些事情。不要花了几个月时间做了一个 devops 用户界面,最后你发现那些人只喜欢命令行。此原则是原则 5 的一个具体表现。 点评:是否有站在用户的角度思考问题呢?是否是为了用新技术而用新技术? 原则 7:设计和测试一个功能,尽可能的独立。当你做设计时,应该想想这一条。从长远来看这能给你解决很多问题,否则你的功能只能等待系统其他所有的功能都就绪了才能测试,这显然很不好。有了这个原则, 你的版本将会更加的顺畅。 […]

Spring Boot中使用AOP统一处理Web请求日志

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接、打开事务/关闭事务、记录日志等。基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 下面主要讲两个内容,一个是如何在Spring Boot中引入Aop功能,二是如何使用Aop做切面去统一处理Web请求的日志。 准备工作 因为需要对web请求做切面来记录日志,所以先引入web模块,并创建一个简单的hello请求的处理。 pom.xml中引入web模块 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 实现一个简单请求处理:通过传入name参数,返回“hello xxx”的功能。 @RestController public class HelloController { @RequestMapping(value = “/hello”, method = RequestMethod.GET) @ResponseBody public String hello(@RequestParam String name) { return “Hello ” + name; } } 下面,我们可以对上面的/hello请求,进行切面日志记录。 引入AOP依赖 在Spring Boot中引入AOP就跟引入其他模块一样,非常简单,只需要在pom.xml中加入如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 在完成了引入AOP依赖包后,一般来说并不需要去做其他配置。也许在Spring中使用过注解配置方式的人会问是否需要在程序主类中增加@EnableAspectJAutoProxy来启用,实际并不需要。 可以看下面关于AOP的默认配置属性,其中spring.aop.auto属性默认是开启的,也就是说只要引入了AOP依赖后,默认已经增加了@EnableAspectJAutoProxy。 # AOP spring.aop.auto=true # Add @EnableAspectJAutoProxy. […]

java 泛型详解

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。 2. 一个栗子 一个被举了无数次的例子: List arrayList = new ArrayList(); arrayList.add(“aaaa”); arrayList.add(100); for(int i = 0; i< arrayList.size();i++){ String item = (String)arrayList.get(i); Log.d(“泛型测试”,”item = ” + item); } 毫无疑问,程序的运行结果会以崩溃结束: ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生。 我们将第一行声明初始化list的代码更改一下,编译器会在编译阶段就能够帮我们发现类似这样的问题。 List arrayList = new ArrayList(); … //arrayList.add(100); 在编译阶段,编译器就会报错 3. 特性 泛型只在编译阶段有效。看下面的代码: List stringArrayList = new ArrayList(); List integerArrayList […]

MacOS下自己创建根证书和域SSL证书实现https调试

这篇文章是讲关于如何使用 OpenSSL 在本地创建一个 HTTPS 保护的开发环境,本文基于 MacOS。 创建根SSL证书 第一步是创建一个安全套接层(CA SSL)根证书。然后可以使用此根证书为可能为单个域生成的任意数量的证书签名。 CA,Catificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。 创建 root key, $ openssl genrsa -des3 -out rootCA.key 2048 这一步系统将提示您输入密码,每次使用此特定密钥生成证书时都需要输入该密码。 使用生成的密钥来创建新的根SSL证书。并将其保存为rootCA.pem。证书有效期为10年。在这一过程中,还将被提示输入其他可选信息。 $ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem 这是我输入的信息,仅供参考。 Country Name (2 letter code) []:CNState or Province Name (full name) []:ProvinceLocality Name (eg, city) []:CityOrganization Name (eg, […]

MacOS 下 Wireshark 抓取 Chrome HTTPS

Mac电脑配置 在Mac创建文件夹 mkdir ~/sslkeylogfie touch ~/sslkeylogfie/ssl.key vim ~/.bash_profile export SSLKEYLOGFILE=~/sslkeylogfie/ssl.key source ~/.bash_profile wrieshark 设置 启动浏览器 在终端执行命令 open -a ‘/Applications/Google Chrome.app’ https://www.baidu.com 注意!!!! 在终端执行命令之前,一定要全部退出浏览器进程!!!否则浏览器不会记录和使用设置的密钥!!!!

mitmproxy https 抓包

安装 brew install mitmproxy 执行 mitmproxy 启动, 也可用 mitmproxy -p 8888 指定端口号, 默认监听在 8080 端口。 现在就可以抓取 Http 请求了, 要抓取 Https 还得安装证书. 证书默认放在 ~/.mitmproxy/ 下面 mitmproxy-ca-cert.cer 和 mitmproxy-ca-cert.pem 是一样的,选一个安装在 Android 上就行。 手动安装依次选择 设置 -> 安全性与位置信息 -> 加密与凭证 -> 从 SD 卡安装.代理配置都一样,修改 Wifi 配置. Mac电脑需要配置端口转发,否则代理到8080端口,无法被80 、443端口捕获,设置方法如下: 常用快捷键 按键 说明 q 退出(相当于返回键,可一级一级返回) d 删除当前(黄色箭头)指向的链接 D 恢复刚才删除的请求 G 跳到最新一个请求 […]

使用 Docker 搭建 ELK 环境

本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2020年05月04日 统计字数: 12679字 阅读时间: 26分钟阅读 本文链接: soulteary.com/2020/05/04/… 使用 Docker 搭建 ELK 环境 本文将聊聊如何使用 Docker 搭建 ELK (Elasticsearch、Logstash、Kibana)。 文章将分两个部分对搭建进行介绍,用于开发测试以及一般分析需求的环境,以及弹性扩容后可以用于一般生产的环境。 因为借助于方便的 Docker,完整操作时间不超过 15 分钟,如果你对 Docker 还不熟悉,可以浏览之前的文章。 写在前面 为了方便搭建,我们使用 github.com/deviantony/… 这个开源项目,这个项目维护了 ELK 技术栈最近的三个版本,也就是 7.x、6.x、5.x ,本文将使用最新版本。 用于开发测试的基础环境使用一台1c2g的虚拟机即可,当然机器资源越多我们的服务运行效率也会越高、相同时间内数据处理能力也就越大。而用于一般生产环境建议根据自己具体情况给予更多资源。 先聊聊测试环境搭建。 测试开发环境 使用 Git Clone 命令将项目下载到所需要的位置。 git […]

在 Linux 上分析二进制文件的 10 种方法

file 它的作用:帮助确定文件类型。 这将是你进行二进制分析的起点。我们每天都在与文件打交道,并非所有的文件都是可执行类型,除此之外还有各种各样的文件类型。在你开始之前,你需要了解要分析的文件类型。是二进制文件、库文件、ASCII 文本文件、视频文件、图片文件、PDF、数据文件等文件吗? file 命令将帮助你确定你所处理的文件类型。 $ file /bin/ls/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=94943a89d17e9d373b2794dcb1f7e38c95b66c86, stripped$$ file /etc/passwd/etc/passwd: ASCII text$ ldd 它的作用:打印共享对象依赖关系。 如果你已经在一个可执行的二进制文件上使用了上面的 file 命令,你肯定会看到输出中的“动态链接”信息。它是什么意思呢? 在开发软件的时候,我们尽量不要重造轮子。有一组常见的任务是大多数软件程序需要的,比如打印输出或从标准输入/打开的文件中读取等。所有这些常见的任务都被抽象成一组通用的函数,然后每个人都可以使用,而不是写出自己的变体。这些常用的函数被放在一个叫 libc 或 glibc 的库中。 如何找到可执行程序所依赖的库?这就是 ldd 命令的作用了。对动态链接的二进制文件运行该命令会显示出所有依赖库和它们的路径。 $ ldd /bin/ls linux-vdso.so.1 => (0x00007ffef5ba1000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fea9f854000) libcap.so.2 => /lib64/libcap.so.2 (0x00007fea9f64f000) libacl.so.1 => /lib64/libacl.so.1 (0x00007fea9f446000) libc.so.6 => […]

电商促销方式集锦

一个不会策划促销活动的运营不是好运营,精心收集了史上最全的促销方式,十五种方式见下图(定价促销、附加值促销、回报促销、纪念式促销、奖励促销、借力促销、临界点促销、另类促销、名义主题促销、时令促销、限定式促销、引用举例式促销、赠送类促销、指定促销、组合促销)