- 博客(139)
- 收藏
- 关注
原创 spring + redis 实现数据的缓存
1)、配置的文件(properties) 将那些经常要变化的参数配置成独立的propertis,方便以后的修改 redis.properties1 redis.hostName=127.0.0.12 redis.port=63793 redis.timeout=150004 redis.usePool=true5 6 redis.maxIdle=67 r
2017-05-23 21:25:49 599
原创 秒杀系统架构分析与实战
目录1 秒杀业务分析2 秒杀技术挑战3 秒杀架构原则4 秒杀架构设计5 大并发带来的挑战6 作弊的手段:进攻与防守7 高并发下的数据安全8 总结 1 秒杀业务分析正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空
2017-05-23 21:25:14 238
转载 ConcurrentHashMap原理分析
HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtable,
2017-05-23 21:23:41 225
原创 数据库面试知识
这段时间跳槽的人特别多, 程序员们又纷纷加入了年后面试寻求涨工资, 新机会的大军, 求职就意味着面试. 而对于java程序员来说, 数据库是面试必问的, 再次总结下数据库的面试常见问题: 1. 数据库的范式 范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基
2017-05-23 21:14:21 305
原创 SQL优化总结
SQL是每个Java程序员必回的一项技能, 对于项目中的各种复杂业务, 你是否能写出高效率, 简洁的SQL对于项目的运行效率和稳定性是有非常大的作用的. 通过个人的理解和网上的资料总结了一下常见的SQL优化知识: (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础
2017-05-23 18:37:03 249
原创 java中动态代理的实现
动态代理的实现使用的模式:代理模式。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。类似租房的中介。两种动态代理:(1)jdk动态代理,jdk动态代理是由Java内部的反射机制来实现的,目标类基于统一的接口(InvocationHandler)(2)cglib动态代理,cglib动态代理底层则是借助asm来实现的,cglib这种第三方类库实现的动态代理应
2017-05-23 18:36:35 179
原创 Java中的24种设计模式与7大原则
一、创建型模式1、抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.2、生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.3、工厂模式(factory method
2017-05-23 18:36:01 163
原创 spring中InitializingBean接口使用理解
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。测试程序如下:import org.springframework.beans.factory.InitializingBean;public class TestInitializingBean im
2017-05-23 18:35:35 359
原创 多线程技术: 两个线程交替打印奇数和偶数
1. 要打印的资源 1 package com.mytest.thread; 2 3 /** 4 * 要打印的资源 5 * 6 */ 7 public class Num { 8 int i = 1; 9 // 两个线程看, 交替执行的一个标志10 boolean flag = false;11 } 2. 打印奇数的
2017-05-23 18:34:44 2869
原创 eclipse maven 导出项目依赖的jar包
一、导出到默认目录 targed/dependency从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令:1. mvn dependency:copy-dependencies或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入depende
2017-05-23 18:34:19 669
转载 AJAX工作原理及其优缺点
1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它使用:使用XHTML+CSS来标准化呈现;使用XML和XSLT进行数据交换及相关操作;使用XMLHttpRequest对象与Web服务器进行异步数据通信; 使用Javascript操作Document
2017-05-23 18:33:41 299
原创 weblogic虚拟路径的配置和使用
项目场景:公司中医疗项目需要展示药品说明书的其他版本(图片或者PDF),由于其他版本文件存在Linux服务器上,服务器用的是weblogic, 无法直接访问文件,因此可以用weblogic的虚拟路径解决 解决的方法为:在weblogic.xml文件中配置要映射的路径为虚拟路径。 D:/PRfcas /
2017-05-23 18:32:58 1760
原创 服务器有新消息主动推送给客户端浏览器
前言通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客户端请求--服务端响应,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应
2017-05-23 18:32:35 2960
原创 TCP/IP三次握手和HTTP过程
1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的S
2017-05-23 18:31:04 226
原创 Zookeeper异常ConnectionLossException解决
项目中要求做一个将配置文件读取到zookeeper节点上的工具:开发代码如下: 但是当连接到远端的Zookeeper服务之后,出现了下面异常:Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorC
2017-05-23 18:30:33 4973
原创 maven项目打包成可执行的jar
编写功能类: View Code编写main方法类: View Code在pom文件中配置: View Code打包方式:1.进入到项目所在目录,例如:cd D:\workspace\riskCompensate\FileToZkUtil2.运行命令mvn assembly:assembly3.在项目的target目录中可
2017-05-23 18:30:01 377
原创 如何查看某个端口被谁占用
1.开始---->运行---->cmd,或者是window+R组合键,调出命令窗口 2.输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是49157,首先找到它。 3.查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157",回车,记下最后一位数字,即PID,这里是272
2017-05-23 18:29:12 241
原创 计算机相关名词解释
计算机网络:1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DN
2017-05-23 18:28:45 1055
原创 HashMap和 Hashtable的比较
Hashtable 和 HashMap的比较1. HashMap可以接受null(HashMap可以接受为null的键值(key)和值(value), HashTable不可以接受为null的键(key)和值(value)2. HashMap是非synchronized的, Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一
2017-05-23 18:28:14 184
原创 服务端调用dubbo的方式
方式1.通过API 方式2.通过springapplicationContext-dubbo.xml 注意引入提供方的接口jar包 ♥作者:明志健致远 ♠出处:http://www.cnblogs.com/study-everyday/ ♦本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显
2017-05-23 18:27:52 346
转载 jQuery 集合 串联操作( andSelf() end() add() contents() )
1.andSelf() 新增自身对象到当前的jQuery对象里,通常用法:$('li.third-item').nextAll().andSelf() .css('background-color', 'red'); 2.end() 返回到上一次jQuery对象, 通常用于链式操作里:$('ul.first').find('.foo').css('background
2017-05-22 19:19:58 405
转载 jQuery DOM 操作(基本操作、内部插入、外部插入、包裹操作)
1.删除操作(1)remove() $(selector).remove([selector]) $("#div3").remove(); //删除 id 为 div3 的 div 标签$("div").remove("#div3"); //删除 div 标签中 id 为 "div3" 的标签(2)detach() $(selector).
2017-05-22 19:19:38 168
转载 jQuery 事件 keypress click mouseover blur load
事件流模型包括冒泡型事件流和捕获型事件流,前者从下到上一级一级的触发,后者从上到下一级级的触发。但是IE浏览器不支持捕获型事件流,所以大部分还是冒泡型事件流。1.传统的 JavaScript 事件(1)鼠标事件 onclick(单击) ondblclick(双击) onmousedown(按下鼠标左键) onmouseup(释放鼠标) onmouseover(光
2017-05-22 19:19:11 351
原创 jQuery 中的 Ajax 全局事件
ajaxStart(callback):Ajax请求开始时触发该事件ajaxSend(callback):Ajax请求发送前触发该事件ajaxSuccess(callback):Ajax请求成功时触发该事件ajaxComplete(callback):Ajax请求完成时触发该事件ajaxStop(callback):Ajax请求结束时触发该事件ajaxErr
2017-05-22 19:18:43 202
转载 jQuery 动画效果
1.基本效果(1)隐藏 hide() hide(speed [,callback])(2)显示 show() show(speed [,callback])(3)交替显示隐藏 toggle() //单击一次隐藏,再单击一次显示,循环。。。。 toggle(switch) //switch 为true则显示,fa
2017-05-22 19:18:21 113
原创 jsp 实现文件保存与读取
@ page language="java" import="java.util.*" pageEncoding="GBK"%>@ page contentType="text/html; charset=GBK" %>@page import="java.io.File"%>@page import="java.io.PrintStream"%>@page import="java.io
2017-05-22 19:17:50 2582
转载 Cookie操作以及如何在js中调用jsp变量
存CookieCookie idCookie = new Cookie("userId", request.getParameter("id"));Cookie psdCookie = new Cookie("psd", request.getParameter("psd"));idCookie.setMaxAge(3600);//存3600秒也就是1小时psdCookie.setM
2017-05-22 19:17:10 324
转载 jsp 验证码以及验证码局部刷新
1.验证码的代码是在网上搜罗的,是底纹乱线类的数字验证:authcode.jsp: 每次调用都会在 session 中添加一个属性,验证用户输入是否正确是只需再取出和输入内容比较即可@ page contentType="image/JPEG" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio
2017-05-22 19:16:57 288
转载 Java 正则表达式
ExtJS:E-mail邮箱验证正则表达式 : regex: /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/汉字输入验证正则表达式: regex: /^[\u4E00-\u9FA5]+$/ 以下内容是从网上转过来的,想仔细学一下1.字符x 字符 x。例如a表示字符a\\ 反斜线字
2017-05-22 19:16:33 144
转载 Web.xml中Filter过滤器标签几个说明
在研究liferay框架中看到Web.xml中加入了过滤器的标签,可以根据页面提交的URL地址进行过滤,发现有几个新标签没用过,下面就介绍以下几个过滤器的标签用法:filter>filter-name>logfilter-name>filter-class>lee.LogFilterfilter-class> filter>filter-mapping>filter-n
2017-05-22 19:15:54 652
转载 Java时间日期格式转换
突然忘记了时间格式怎么转换,特此做个记录 Java时间格式转换大全import java.text.*;import java.util.Calendar;public class VeDate {/** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */public static Date g
2017-05-22 19:15:37 120
转载 研究:Liferay研究(二)开发Liferay中几个常用的标签
在Liferay框架中拥有它自身的标签,虽然Portlet也有它自身的标签,但是Portlet的标签不能完全满足我们的需求,下面就介绍几个开发中经常用到的标签:这2个是把整个页面当做一个提交到相应的Action中进行处理,因为Portlet中把request分成了两种一种是actionRequest,另外一种就是renderRequest,而是属于actionRequest中的一种,写在中
2017-05-22 19:15:23 230
转载 JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。 本文主要是对JS操作JSON的要领做下总结。 在JSON中,有两种结构:对象和数组。
2017-05-22 19:15:09 121
转载 函数返回值—返回局部变量
看看下面的程序的输出: #include char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); retu
2017-05-22 19:14:02 495
转载 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回
2017-05-22 19:13:39 297
转载 临时变量,局部变量的return操作
如果函数返回值是一个对象,要考虑 return 语句的效率。例如 return String(s1 + s2); 这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如 String temp(s1 + s2); return temp; 实质不然,上述代码将发生三件事。首先,temp
2017-05-22 19:13:19 1984
转载 单链表的逆置
(1)算法struct link{ int data; struct link *next;};link reverse(link x){ if( NULL==x ) return NULL; link t=NULL; link r=NULL, y=x; //(0) while(y!=NULL) { t
2017-05-22 19:13:02 151
转载 关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别
2017-05-22 19:12:44 129
转载 typedef用法总结之续
刚刚看了一篇也是关于typedef用法的文章,跟先前看的那篇文章内容大同小异,不过有一处让我收获不小,就是在上篇最后那个案例我不理解的地方,这篇文章给了一个很好的答案。以下是文章的部分内容 : 陷阱一: 记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如: 先定义: typedef char* PSTR; 然后: int
2017-05-22 19:12:25 197
转载 const用法的解惑
虽然看过C++方面不少的资料,但我现在仍然是一个初学者,编过C++的一些程序,但不多。const修饰词做为C++一个重要的概念,务必要弄清楚才行,看到网上一个C++学习者的博客上归纳的很不错,很精炼。以下是参考的链结:htmlhttp://www.cppblog.com/seuauto/archive/2008/09/04/60941.htmlconst是C++的关键字之一,与其他
2017-05-22 19:12:03 128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人