暴躁的码农 - 2018年4月
type: channel
link: https://zacms.com/index.php/2018/04/
description: 让建站变得简单。无暴躁，不编程，我爱暴躁，我爱编程，编程使我暴躁。精通PHP、PYTHON、C、C++、Java、C#、VB、HTML、Delphi、JavaScript、PHP等语言的拼写,熟练PhotoShop、Illustrator CS、CorelDraw、Flash CS、AutoCAD、Office等软件的卸载,掌握Windows Server、Unix、Lunix等操作系统的关机
items: 前端js加密工具
items: mysql 性能优化方案
items: 用户态和核心态的区别
items: FlashBuilder 4.6 安装方法及步骤及永久破解方法
items: IntelliJ IDEA给项目增加jar包
items: java扫盲系列（4）-Spring 基于注解的配置
items: java扫盲系列（3）-Spring 依赖注入
items: java扫盲系列（2）-Spring IoC 容器
items: java扫盲系列（1）-POM(Project Object Model) 项目对象模型

前端js加密工具
type: item
date: 2018-04-23T19:10:21+08:00
description: 有时候辛辛苦苦写的前端被人源码拷贝，目前js端常用的防止别人拷贝源码就是用混淆加密找到个线上工具还不错混淆加密工具用法在js编写好后，把代码粘贴进去，混淆加密，然后新保存个js,线上的用新的js，源码本地留存就行，变了名全都替换了，还原还是要花些功夫的。说明对外暴露的函数或者接口，需要在不混淆变量名称里面增加，否则外面不知道变量名是啥。

mysql 性能优化方案
type: item
date: 2018-04-16T21:04:11+08:00
description: 网 上有不少mysql 性能优化方案，不过，mysql的优化同sql server相比，更为麻烦与复杂，同样的设置，在不同的环境下 ，由于内存，访问量，读写频率，数据差异等等情况，可能会出现不同的结果，因此简单地根据某个给出方案来配置mysql是行不通的，最好能使用 status信息对mysql进行具体的优化。mysql> show global status; 可以列出mysql服务器运行各种状态值，另外，查询mysql服务器配置信息语句：mysql> show variables;一、慢查询mysql> show variables like 'slow%';variable_name valuelog_slow_querieson slow_launch_time2 mysql> show global status like 'slow%';variable_name valueslow_launch_threads0 slow_queries 4148+---------------------+-------+ 配 置中打开了记录慢查询，执行时间超过2秒的即为慢查询，系统显示有4148个慢查询，你可以分析慢查询日志，找出有问题的sql语句，慢查询时间不宜设置 过长，否则意义不大，最好在5秒以内，如果你需要微秒级别的慢查询，可以考虑给mysql打补丁：http://www.percona.com /docs/wiki/release:start，记得找对应的版本。打开慢查询日志可能会对系统性能有一点点影响，如果你的mysql是主－从结构，可以考虑打开其中一台从服务器的慢查询日志，这样既可以监控慢查询，对系统性能影响又小。二、连接数经 常会遇见”mysql: error 1040: too many connections”的情况，一种是访问量确实很高，mysql服务器抗不住，这个时候就要考虑增加从服务器分散读压力，另外一种情况是mysql配 置文件中max_connections值过小：mysql> show variables like 'max_connections';variable_name valuemax_connections256 这台mysql服务器最大连接数是256，然后查询一下服务器响应的最大连接数：mysql> show global status like 'max_used_connections';mysql服务器过去的最大连接数是245，没有达到服务器连接数上限256，应该没有出现1040错误，比较理想的设置是max_used_connections / max_connections * 100% ≈ 85%最大连接数占上限连接数的85％左右，如果发现比例在10%以下，mysql服务器连接数上限设置的过高了。三、key_buffer_sizekey_buffer_size是对myisam表性能影响最大的一个参数，下面一台以myisam为主要存储引擎服务器的配置：mysql> show variables like 'key_buffer_size';variable_name value key_buffer_size536870912分配了512mb内存给key_buffer_size，我们再看一下key_buffer_size的使用情况：mysql> show global status like 'key_read%';variable_name value key_read_requests 27813678764key_reads 6798830 一共有27813678764个索引读取请求，有6798830个请求在内存中没有找到直接从硬盘读取索引，计算索引未命中缓存的概率：key_cache_miss_rate ＝ key_reads / key_read_requests * 100%比 如上面的数据，key_cache_miss_rate为0.0244%，4000个索引读取请求才有一个直接读硬盘，已经很bt 了，key_cache_miss_rate在0.1%以下都很好（每1000个请求有一个直接读硬盘），如果key_cache_miss_rate在 0.01%以下的话，key_buffer_size分配的过多，可以适当减少。mysql服务器还提供了key_blocks_*参数：mysql> show global status like 'key_blocks_u%';variable_name value key_blocks_unused 0 key_blocks_used 413543 key_blocks_unused 表示未使用的缓存簇(blocks)数，…

mysql 性能优化方案
type: item
date: 2018-04-16T21:04:00+08:00
description: 网 上有不少mysql 性能优化方案，不过，mysql的优化同sql server相比，更为麻烦与复杂，同样的设置，在不同的环境下 ，由于内存，访问量，读写频率，数据差异等等情况，可能会出现不同的结果，因此简单地根据某个给出方案来配置mysql是行不通的，最好能使用 status信息对mysql进行具体的优化。mysql> show global status; 可以列出mysql服务器运行各种状态值，另外，查询mysql服务器配置信息语句：mysql> show variables;一、慢查询mysql> show variables like 'slow%';variable_name valuelog_slow_querieson slow_launch_time2 mysql> show global status like 'slow%';variable_name valueslow_launch_threads0 slow_queries 4148+---------------------+-------+ 配 置中打开了记录慢查询，执行时间超过2秒的即为慢查询，系统显示有4148个慢查询，你可以分析慢查询日志，找出有问题的sql语句，慢查询时间不宜设置 过长，否则意义不大，最好在5秒以内，如果你需要微秒级别的慢查询，可以考虑给mysql打补丁：http://www.percona.com /docs/wiki/release:start，记得找对应的版本。打开慢查询日志可能会对系统性能有一点点影响，如果你的mysql是主－从结构，可以考虑打开其中一台从服务器的慢查询日志，这样既可以监控慢查询，对系统性能影响又小。二、连接数经 常会遇见”mysql: error 1040: too many connections”的情况，一种是访问量确实很高，mysql服务器抗不住，这个时候就要考虑增加从服务器分散读压力，另外一种情况是mysql配 置文件中max_connections值过小：mysql> show variables like 'max_connections';variable_name valuemax_connections256 这台mysql服务器最大连接数是256，然后查询一下服务器响应的最大连接数：mysql> show global status like 'max_used_connections';mysql服务器过去的最大连接数是245，没有达到服务器连接数上限256，应该没有出现1040错误，比较理想的设置是max_used_connections / max_connections * 100% ≈ 85%最大连接数占上限连接数的85％左右，如果发现比例在10%以下，mysql服务器连接数上限设置的过高了。三、key_buffer_sizekey_buffer_size是对myisam表性能影响最大的一个参数，下面一台以myisam为主要存储引擎服务器的配置：mysql> show variables like 'key_buffer_size';variable_name value key_buffer_size536870912分配了512mb内存给key_buffer_size，我们再看一下key_buffer_size的使用情况：mysql> show global status like 'key_read%';variable_name value key_read_requests 27813678764key_reads 6798830 一共有27813678764个索引读取请求，有6798830个请求在内存中没有找到直接从硬盘读取索引，计算索引未命中缓存的概率：key_cache_miss_rate ＝ key_reads / key_read_requests * 100%比 如上面的数据，key_cache_miss_rate为0.0244%，4000个索引读取请求才有一个直接读硬盘，已经很bt 了，key_cache_miss_rate在0.1%以下都很好（每1000个请求有一个直接读硬盘），如果key_cache_miss_rate在 0.01%以下的话，key_buffer_size分配的过多，可以适当减少。mysql服务器还提供了key_blocks_*参数：mysql> show global status like 'key_blocks_u%';variable_name value key_blocks_unused 0 key_blocks_used 413543 key_blocks_unused 表示未使用的缓存簇(blocks)数，…

用户态和核心态的区别
type: item
date: 2018-04-16T16:31:17+08:00
description: 1.操作系统需要两种CPU状态：内核态（Kernel Mode）：运行操作系统程序用户态（User Mode）：运行用户程序2.指令划分：特权指令：只能由操作系统使用、用户程序不能使用的指令。 举例：启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机非特权指令：用户程序可以使用的指令。 举例：控制转移 算数运算 取数指令 访管指令（使用户程序从用户态陷入内核态）3.特权级别：特权环：R0、R1、R2和R3R0相当于内核态，R3相当于用户态；不同级别能够运行不同的指令集合；4.CPU状态之间的转换：用户态--->内核态：唯一途径是通过中断、异常、陷入机制（访管指令）内核态--->用户态：设置程序状态字PSW5.内核态与用户态的区别：1）内核态与用户态是操作系统的两种运行级别，当程序运行在3级特权级上时，就可以称之为运行在用户态。因为这是最低特权级，是普通的用户进程运行的特权级，大部分用户直接面对的程序都是运行在用户态；2）当程序运行在0级特权级上时，就可以称之为运行在内核态。3）运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时，大部分时间是运行在用户态下的，在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态。4）这两种状态的主要差别是：处于用户态执行时，进程所能访问的内存空间和对象受到限制，其所处于占有的处理机是可被抢占的 ；而处于核心态执行中的进程，则能访问所有的内存空间和对象，且所占有的处理机是不允许被抢占的。通常来说，以下三种情况会导致用户态到内核态的切换：1）系统调用这是用户态进程主动要求切换到内核态的一种方式，用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现，例如Linux的int 80h中断。2）异常当CPU在执行运行在用户态下的程序时，发生了某些事先不可知的异常，这时会触发由当前运行进程切换到处理此异常的内核相关程序中，也就转到了内核态，比如缺页异常。3）外围设备的中断当外围设备完成用户请求的操作后，会向CPU发出相应的中断信号，这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序，如果先前执行的指令是用户态下的程序，那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成，系统会切换到硬盘读写的中断处理程序中执行后续操作等。这3种方式是系统在运行时由用户态转到内核态的最主要方式，其中系统调用可以认为是用户进程主动发起的，异常和外围设备中断则是被动的。

FlashBuilder 4.6 安装方法及步骤及永久破解方法
type: item
date: 2018-04-15T10:39:00+08:00
description: 具体步骤如下：1.到Adobe官网下载FlashBuilder 4.6，有简体中文版；语言：简体中文(Simplified)http://trials3.adobe.com/AdobeProducts/FLBR/4_6/win32/FlashBuilder_4_6_LS10.exe2.安装时，不用序列号，直接选择安装试用版；3.安装完成后在安装目录下依次修改下列3个文件：(1).eclipsepluginscom.adobe.flexbuilder.project_4.6.0.328916META-INF下面的MANIFEST.MF修改：Bundle-Version: 0.0.0(2).eclipsefeaturescom.adobe.flexide.feature_4.6.0.328916下面的feature.xml修改：<plugin id="com.adobe.flexbuilder.project" download-size="0" install-size="0" version="0.0.0"/> (3).eclipsepluginscom.adobe.flexbuilder.flex_4.6.0.328916下面：复制config.xml并重命名为config_builder.xml注：以上紫色文字部分为具体的版本号，请跟据实际版本号进行查找修改完成之后，再启动Adobe Flash Builder 4.6，恭喜你，你会发现自己彻底拥有了这款RIA工具了。

IntelliJ IDEA给项目增加jar包
type: item
date: 2018-04-12T10:10:31+08:00
description: 刚使用IntelliJ IDEA的时候还不熟，很多新手都不知道怎么给现有项目增加相应的包jar，导致项目不能运行，xml配置导出是红色错误。编辑器File -> Project Structure.. -> Modules -> 中间栏，鼠标右键->add+ > 选择相应包，然后跟着提示完成

java扫盲系列（4）-Spring 基于注解的配置
type: item
date: 2018-04-12T09:31:32+08:00
description: 之前看了Spring可以通过xml配置实现beans的依赖注入，所有class的元数据和依赖通过xml配置会让配置越来越多，越来越复杂。从Spring2.5开始，可以通过注解完成之前xml完成的事情，注意：注解不是注释！！！！启用注解启用注解需要在配置中增加几项配置<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> </beans>注解必学和理解的几个注解@Required@Autowired@QualifierJSR-250 Annotations详细看 《w3cschool Spring 基于注解的配置》基于 Java 的配置这个东西持保留意见，可能是为了些更灵活的应用场景Spring的事件处理 和自定义事件这个没什么好说的，就是在beans的生命周期中的各个节点增加些事件触发，具体的看示例更好看懂 w3cschool Spring 中的事件处理

java扫盲系列（3）-Spring 依赖注入
type: item
date: 2018-04-11T14:15:00+08:00
description: 什么是依赖注入从博主的理解就是，一般情况下我们创建对象会直接用new加上类名创建，这样写文件与文件之间有较强的耦合，项目class越来越多，文件之间相互依赖使得系统无法升级和更改。 那么我们要获取一个对象，又要保持系统的耦合度低怎么做呢，就是把对象传入需要用到的地方，而这个传入的对象，是依赖于配置进行自动化生成的，对使用者透明，使用对象的人无需关心这个对象从哪儿来，无需去配置一堆相关初始化参数。即使类被更改，使用者的代码也无需做任何更改和变动。把整个类创建，初始化，注入到类，完全交给个容器完成，完成控制反转，这个就是依赖注入。简单来说就是不需要new一个对象，而是通过参数传递进来，而这个对象的创建和初始化交个容器找相关配置完成。Spring的依赖注入两种方式构造函数、设置函数构造函数顾名思义，就是这些依赖的对象，通过构造函数的参数进行传入，xml配置通过以下2种方式配置：类依赖：<constructor-arg ref="bar"/>值依赖：<contructor-args type="" value=""/> 设置函数顾明思议就是通过函数进行注入依赖，xml通过以下方式配置：类依赖： 值依赖： 其他内部beans定义在类范围内 注入集合有时候注入的值可能是个集合 <set> <props>元素描述 它有助于连线，如注入一列值，允许重复。<set>它有助于连线一组值，但不能重复。 它可以用来注入名称-值对的集合，其中名称和值可以是任何类型。<props>它可以用来注入名称-值对的集合，其中名称和值都是字符串类型。xml配置： INDIA Pakistan USA USA Spring beans的自动装配无需编写xml,自动适配，使用autowire属性，有5种模式模式描述no这是默认的设置，它意味着没有自动装配，你应该使用显式的bean引用来连线。你不用为了连线做特殊的事。在依赖注入章节你已经看到这个了。byName由属性名自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byName。然后尝试匹配，并且将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接。byType由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。然后如果它的类型匹配配置文件中的一个确切的 bean 名称，它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean，则一个致命的异常将会被抛出。constructor类似于 byType，但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean，则一个致命错误将会发生。autodetectSpring首先尝试通过 constructor 使用自动装配来连接，如果它不执行，Spring 尝试通过 byType 来自动装配。

java扫盲系列（2）-Spring IoC 容器
type: item
date: 2018-04-11T09:34:00+08:00
description: 网上很多关于Spring Ioc容器的文章和教程，本文记录下博主学Spring的时候对Spring容器的理解和认识，后面随着深入的了解和应用可能有更新。什么是容器个人理解，容器就是个黑盒子工厂，作用就是：创建对象，初始化对象的参数，然后其他地方需要用到这些对象都从这个黑盒子里面取，这些对象被称为Spring Beans。 当然里面涉及到很多细节，比如元数据通过xml、注释、代码等方式获取（元数据就是实例化对象的时候传的参数），容器还会做比如对象生命周期的管理、依赖注入管理组件等等。容器具体有哪些Pring提供了2种不同类型的容器1.BeanFactory 简单容器 2.ApplicationContext 包含BeanFactory的功能，还提供更多功能 （一般使用这个） 什么是BeansJavaBeans是一个接口规范，JavaBeans是一个Java的类，一般来说，这样的Java类将对应于一个独立的 .java文件，遵循以下规范：1.有一个public默认构造器（例如无参构造器,）属性使用public 的get，set方法访问，也就是说设置成private， 2.同时get，set方法与属性名的大小也需要对应。例如属性name，get方法就要写成，public String getName(){},N大写。 3.需要序列化。这个是框架，工具跨平台反映状态必须的 Spring Beans就是这些类的实例化对象。如何定义 Bean之前说了可以通过xml、注释、代码等方式，下面介绍xml方式，注释后面再说，还没学到在 src目录下面的xml配置文件中，定义一个bean 至少需要一个id或name, 然后一个class,<?xml version="1.0" encoding="UTF-8"?> bean的属性上可以有一些参数可以控制作用域，创建，销毁等,比如：scope、init-method、lazy-init、destroy-method等等，具体参数和作用看教程吧，不赘述了，<<w3cschool教程地址>> 可以对类里面的参数进行赋值，定义的这个就叫元数据 <property name="message" value="Hello World" /> 这个message就对应着HelloWorld.java 的 messages属性（注意message是private，需要设置set方法 setMessage()）bean也可以继承ok,Spring容器和容器创建的Spring bean就理解到这里

java扫盲系列（1）-POM(Project Object Model) 项目对象模型
type: item
date: 2018-04-10T09:09:00+08:00
description: 一、什么是POMProject Object Model，项目对象模型。通过xml格式保存的pom.xml文件。作用类似ant的build.xml文件，功能更强大。该文件用于管理：源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。一个完整的pom.xml文件，放置在项目的根目录下。 4.0.0 <!– The Basics –> … … … … … … … … … <!– Build Settings –> … … <!– More Project Information –> … … … … … … … … <!– Environment Settings –> … … … … … … … <distributionManagement>…</distributionManagement> … 二、基本设置1、maven的协作相关属性 4.0.0 org.codehaus.mojo my-project 1.0 war groupId : 组织标识，例如：org.codehaus.mojo，在M2_REPO目录下，将是: org/codehaus/mojo目录。artifactId : 项目名称，例如：my-project，在M2_REPO目录下，将是：org/codehaus/mojo/my-project目录。version : 版本号，例如：1.0，在M2_REPO目录下，将是：org/codehaus/mojo/my-project/1.0目录。packaging : 打包的格式，可以为：pom , jar , maven-plugin , ejb , war , ear , rar , par2、POM之间的关系主要用于POM文件的复用。a）依赖关系：依赖关系列表（dependency list）是POM的重要部分 junit junit 4.0 test … groupId , artifactId , version :scope : compile(default),provided,runtime,test,systemexclusionsb）继承关系：继承其他pom.xml配置的机制。比如父pom.xml： [...] junit junit 4.4 test [...] 在子pom.xml文件继承它的依赖（还可以继承其他的：developers and contributors、plugin lists、reports lists、plugin executions with matching ids、plugin configuration）：[...] com.devzuz.mvnbook.proficio proficio 1.0-SNAPSHOT [...]在这种机制下，maven还提供了一个类似java.lang.Object的顶级父pom.xml文件： 4.0.0 Maven Default Project central Maven Repository Switchboard default http://repo1.maven.org/maven2 false central Maven Plugin Repository http://repo1.maven.org/maven2 default false never target target/classes ${project.artifactId}-${project.version} target/test-classes src/main/java src/main/scripts src/test/java src/main/resources src/test/resources maven-antrun-plugin 1.1 maven-assembly-plugin 2.2-beta-2 maven-clean-plugin 2.2 maven-compiler-plugin 2.0.2 maven-dependency-plugin 2.0 maven-deploy-plugin 2.3 maven-ear-plugin 2.3.1 maven-ejb-plugin 2.1 maven-install-plugin 2.2 maven-jar-plugin 2.2 maven-javadoc-plugin 2.4 maven-plugin-plugin 2.4.1 maven-rar-plugin 2.2 maven-release-plugin 2.0-beta-7 maven-resources-plugin 2.2 maven-site-plugin …