- 博客(103)
- 收藏
- 关注
原创 四种会话跟踪技术
会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。 HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。 当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。 当一个客户在多个页面间切换时,服务器会保存该用户的信息。 有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域...
2015-09-19 11:36:45
206
原创 java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 [b]synchronized [/b] 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有...
2015-09-19 10:59:14
87
原创 java笔记--关于线程同步(5种同步方式)
[size=medium]为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法 即有synchronized关键字修饰的方...
2015-09-19 10:21:11
100
原创 Linux网络通信工具
现在是一个互联网的时代,你不可避免的要和其他用户进行远程交流,连接到远程主机。 [b][size=x-large]ping 命令[/size][/b] ping 命令会向网络上的主机发送应答请求,根据响应信息可以判断远程主机是否可用。 ping 命令的语法: $ping hostname or ip-address 如果网络畅通,很快就可以看到响应信息。 例如,检测是否可以...
2015-09-13 16:02:15
186
原创 shell printf命令:格式化输出语句
printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。 注意:printf 由 POSIX 标准所定义,移植性要比 echo 好。 如同 echo 命令,printf 命令也可以输出简单的字符串: [code="Shell"]$printf "Hello, Shell\n" Hello, Shell $...
2015-09-13 16:01:29
107
原创 Mysql group by语句的优化
默认情况下,MySQL排序所有GROUP BY col1, col2, ....,查询的方法如同在查询中指定ORDER BY col1, col2, ...。如果显式包括一个包含相同的列的ORDER BY子句,MySQL可以毫不减速地对它进行优化,尽管仍然进行排序。 如果查询包括GROUP BY但你想要避免排序结果的消耗,你可以指定ORDER BY NULL禁止排序。例如: IN...
2015-09-13 16:01:16
111
原创 Linux管道和过滤器
有时候,我们可以把两个命令连起来使用,一个命令的输出作为另一个命令的输入,这就叫做管道。为了建立管道,需要在两个命令之间使用竖线(|)连接。 管道是Linux进程之间一种重要的通信机制;除了管道,还有共享内存、消息队列、信号、套接字(socket) 等进程通信机制。 管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第...
2015-09-13 16:01:08
184
原创 Shell echo命令
echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式: echo arg 您可以使用echo实现更复杂的输出格式控制。 显示转义字符 [code="Shell"]echo "\"It is a test\""[/code]结果将是: "It is a test" 双引号也可以省略。 显示变量 [code="Shell"]name="OK"
2015-09-13 16:00:56
149
原创 Linux打印文件和发送邮件
通过前面的介绍,相信你对 Linux 的命令和特性有了一个基本的认识,本节将介绍如果打印文件以及发送邮件。 [b][size=x-large]文件打印[/size][/b] 如果你希望打印文本文件,最好预先处理一下,包括调整边距、设置行高、设置标题等,这样打印出来的文件更加美观,易于阅读。当然,不处理也可以打印,但是可能会比较丑陋。 大部分的Linux自带了 nroff 和 trof...
2015-09-12 10:18:03
170
原创 Shell数组:shell数组的定义、数组长度
Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。 定义数组 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为: [code="Shel...
2015-09-12 10:17:47
163
原创 Mina框架学习笔记(三)
前面已经讲了两个实例,本篇中,我们来深入地了解一下Mina. Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程...
2015-09-12 10:10:49
108
原创 Mina框架学习笔记(二)
[size=medium]上一篇只写了一个服务端。这一次来构建一个客户端。 首先,在引入 上一篇中讲到的几个jar包处,还要引入一个mina-example-2.0.0.jar 本程序的主要功能是,客户端向服务器发送几个数字,然后服务器给客户端 返回结果。文字就不多写了,我在上面都写了注释! 下面的服务端代码: [code="java"]i...
2015-09-12 10:07:51
130
原创 Mina框架学习笔记(一)
[size=medium]本文是入门篇,先来写一个简单的socket server服务器程序,可以用telnet来连接,当服务器收到客户端的连接时会把服务器上的时间返回给客户。 首先引入四个包: [size=large]mina-core-2.0.0.jar slf4j-api-1.6.1.jar slf4j-jdk14-1.6.1.jar ...
2015-09-12 10:05:20
110
原创 Mysql大量插入数据时SQL语句的优化
1) 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据。 ALTER TABLE tblname DISABLE KEYS; loading the data ALTER TABLE tblname ENABLE KEYS; 这两个命令用来打开或者关闭Myisam表非唯一索引的更新。在导入大量的数据到一个非空的Myisam表时,通过设置这两个命令,可...
2015-09-11 22:00:33
111
原创 Shell注释
以“#”开头的行就是注释,会被解释器忽略。 sh里没有多行注释,只能每一行加一个#号。只能像这样: #-------------------------------------------- # 这是一个自动打ipa的脚本,基于webfrogs的ipa-build书写: # https://github.com/webfrogs/xcode_shell/blob/master/ipa-...
2015-09-11 22:00:22
88
原创 Shell字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 [b][size=medium]单引号[/size][/b] [code="Shell"]str='this is a string'[/code]单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量...
2015-09-11 22:00:11
115
原创 Linux环境变量
在Linux中,环境变量是一个很重要的概念。环境变量可以由系统、用户、Shell以及其他程序来设定。 变量就是一个可以被赋值的字符串,赋值范围包括数字、文本、文件名、设备以及其他类型的数据。 下面的例子,我们将为变量 TEST 赋值,然后使用 echo 命令输出: $TEST="Linux Programming" $echo $TEST Linux Programming 注...
2015-09-11 22:00:00
93
原创 学习C++ -> 类(Classes)的定义与实现
[size=medium] 一、"类" 的介绍 在C++中, 用 "类" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。"都有质量"、&q
2015-09-11 21:52:42
130
原创 Linux文件权限和访问模式
为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种 [b]][size=x-large]权限[/size][/b] 所有者权限 u :文件所有者能够进行的操作 组权限 g :文件所属用户组能够进行的操作 外部权限 o :(其他权限):其他用户可以进行的操作。 [b][size=x-large]查看文件权限[/size][/b] ...
2015-09-08 22:59:41
110
原创 Linux目录
目录也是一个文件,它的唯一功能是用来保存文件及其相关信息。所有的文件,包括普通文件、设备文件和目录文件,都会被保存到目录中。 [b][size=x-large]主目录[/size][/b] 登录后,你所在的位置就是你的主目录(或登录目录),接下来你主要是在这个目录下进行操作,如创建文件、删除文件等。 使用下面的命令可以随时进入主目录: $cd ~ $ 这里 ~ 就表示主目录。如...
2015-09-08 22:59:29
344
原创 Mysql insert语句的优化
1) 如果你同时从同一客户插入很多行,使用多个值表的INSERT语句。这比使用分开INSERT语句快(在一些情况中几倍)。 Insert into test values(1,2),(1,3),(1,4)… 2) 如果你从不同客户插入很多行,能通过使用INSERT DELAYED语句得到更高的速度。Delayed的含义是让insert 语句马上执行,其实数据都被放在内存的队列中,并...
2015-09-08 22:59:15
104
原创 Mysql索引优化教程
[b]索引的存储分类[/b] myisam表的数据文件和索引文件是自动分开的;innodb的数据和索引是存储在同一个表空间里面,但可以有多个文件组成。 创建索引语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name...
2015-09-08 22:59:05
111
原创 Shell for循环
与其他编程语言类似,Shell支持for循环。 for循环一般格式为: for 变量 in 列表 do command1 command2 ... commandN done 列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。 in 列表是可选的,如果不用它,for 循环使用命令行的位...
2015-09-08 22:58:24
120
原创 Mysql下优化SQL的一般步骤
[b]通过show status和应用特点了解各种SQL的执行频率[/b] 通过SHOW STATUS可以提供服务器状态信息,也可以使用mysqladmin extended-status命令获得。SHOW STATUS可以根据需要显示session级别的统计结果和global级别的统计结果。 以下几个参数对Myisam和Innodb存储引擎都计数: Com_select 执行sele...
2015-09-07 11:50:46
99
原创 Mysql SQL Mode详解
[b]Mysql SQL Mode简介[/b] MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式。这样,应用程序就能对服务器操作进行量身定制以满足自己的需求。这类模式定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查。这样,就能在众多不同的环境下、与其他数据库服务器一起更容易地使用MySQL。可以使用“--sql-mode="mod...
2015-09-07 11:50:37
144
原创 Mysql使用SQL的安全问题,Mysql防止SQL注入
[b]SQL注入简述[/b] SQL Injection攻击具有很大的危害,攻击者可以利用它读取、修改或者删除数据库内的数据,获取数据库中的用户名和密码等敏感信息,甚至可以 获得数据库管理员的权限。如果能够再利用SQLServer扩展存储过程和自定义扩展存储过程来执行一些系统命令,攻击者还可以获得该系统的控制权。而且,SQL Injection 也很难防范。网站管理员无法通过安装系统补丁或者...
2015-09-07 11:50:16
134
原创 Mysql锁机制和事务控制
[b]如何加锁[/b] 锁定表的语法: LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ... [b]解锁语法[/b]: UNLOCK ...
2015-09-07 11:49:56
130
原创 Mysql索引的设计、使用和优化
[b][size=large]Mysql索引概述[/size][/b] 所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。 在MySQL 5.1中,对于MyISAM和InnoDB表,前缀可以达到1000字节长...
2015-09-07 11:49:41
117
原创 Linux文件管理
Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。 当你使用Linux时,大部分时间都会和文件打交道,通过本节可以了解基本的文件操作,如创建文件、删除文件、复制文件、重命名文件以及为文件创建链接等。 [b][size=x-large]在Linux中,有三种基本的文件类型[/size]:[/b] 1) 普通文件 普通文件...
2015-09-06 20:19:32
207
原创 Linux简介
[size=x-large]Linux简介[/size] 严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后...
2015-09-06 20:19:21
265
原创 Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加: #!/bin/bash val=`expr 2 + 2` echo "Total v...
2015-09-06 20:19:02
94
原创 Shell替换:Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。 举个例子: [code="Shell"]#!/bin/bash a=10 echo -e "Value of a is $a \n"[/code]运行结果: [code="Shell"]Value of a is 10[/code]这里 -e 表示对转义字符进行替换。如果...
2015-09-06 20:18:45
193
原创 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运行结果 29949 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$...
2015-09-06 20:18:33
139
原创 Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
Shell支持自定义变量。 [b][size=medium]定义变量[/size][/b] 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号...
2015-09-05 13:09:32
127
原创 第一个Shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。 输入一些代码: [code="shell"]#!/bin/bash echo "Hello World !"[/code] “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命...
2015-09-05 13:02:52
102
原创 Shell脚本语言与编译型语言的差异
大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。 编译型语言 很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。 运行程序时,直接读取目标代码(object code)。由于编译后的目标代码...
2015-09-05 12:58:00
166
原创 几种常见的Shell
上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。 Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。 [b]bash[/b] bash是Linux标准默认的shell,本教程也基于bash讲解。bash由Brian Fox和Chet ...
2015-09-05 12:53:16
128
原创 Shell简介:什么是Shell,Shell命令的两种执行方式
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大...
2015-09-05 12:51:40
126
原创 主从复制
[size=small]一、Redis的Replication: 这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了。相信在阅读完这篇Blog之后你也可以轻松做到。这里我们还是先列出一些理论性的知识,后面给出实际操作的案例。 下面的列表清楚的解释了Redis Replication的特点和优势。 1). 同一个Master可以同步多个...
2015-08-31 22:46:58
108
原创 五大数据类型
[align=center][size=large]String类型[/size][/align] 一、概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多...
2015-08-31 22:43:00
145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅