自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

转载 多个Tomcat之间实现Session共享

对于高访问量、高并发量的网站或web应用来说,目前最常见的解决方案应该就是利用负载均衡进行server集群,例如比较流行的nginx+memcache+tomcat。集群之后比如我们有N个Tomcat,用户在访问我们的网站时有可能第一次请求分发到tomcat1下,而第二次请求又分发到了tomcat2下,有过web开发经验的朋友都知道这时session不一致会导致怎样的后果,所以我们需要解决一...

2019-03-24 21:19:27 417

转载 Tomcat的Session共享

1、为什么会提出这个问题?使用Nginx+Tomcat进行负载均衡时,希望使用轮询方式进行负载。但是如果使用轮询方式的话,可能会访问不同的Tomcat,此时如果不进行Session共享,则相当于是一个新的Session。就比如现有系统都是需要认证登录的系统,如果没有Session共享,则会导致用户退出登录。2、方案1:使用Tomcat内置的Session复制方案具体配置如下: &l...

2019-03-24 21:08:03 791

原创 linux grep的使用

1.grep -E  "addFavStation|收藏送券参数:"  web-info.log.2018-03-18查询包含“addFavStation”或者包含“收藏送券参数:” 的数据2.grep "SinochemController" web-info.log.2018-03-18| grep "收藏成功,派券失败" | grep "addFavStation"查询即包含“Sinoche...

2018-03-19 17:28:06 236

原创 什么是redis,redis能做什么,redis的应用场景

1. 什么是RedisRedis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set

2018-01-08 21:56:14 293

原创 优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 23:54:51 227

原创 优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 23:54:38 187

原创 优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 23:54:26 179

原创 优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 23:54:14 141

原创 优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 23:54:01 133

原创 优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 23:53:42 213

原创 线程优先级

线程优先级设置:setPriority(int  value) 括号参数是1-10级别。1代表最低级别,10代表最高级别。小于1或大于10,会抛出IllegalArgumentException异常。JDK源代码优先级定义如下:public final void setPriority(int newPriority) { ThreadGroup g; ch

2017-12-23 12:28:36 182

原创 Thread和Runnable的区别

如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口,很容易的实现资源共享。总结:实现Runnable接口比继承Thread类所具有的优势:1):可以避免java中的单继承的限制.2):增加程序的健壮性,代码可以被多个线程共享,多个线程处理同一个资源,代码和数据独立。3):线程池只能放入实现Runable或callable类线程,不能直接放入继承T

2017-12-23 11:20:42 283

原创 线程小例子

通过Thread 实现的线程public class Demo1 { public static void main(String args[]) { Thread thread = Thread.currentThread(); System.out.println("当前线程:" + thread); thread.setNam

2017-12-23 09:27:59 176

原创 同步和异步

同步就是一件事一件事的做。异步就是,做一件事情,不影响做其他事情。例如:吃饭和说话,只能一件事一件事的来,因为只有一张嘴。但吃饭和听音乐是异步的,因为,听音乐并不引响我们吃饭。

2017-12-23 09:11:15 177

原创 synchronized 用在实例方法和类方法的区别

在Java中,synchronized 是用来表示同步的,我们可以synchronized 来修饰一个方法。也可以synchronized 来修饰方法里面的一个语句块。      修饰实例方法:Java代码  public synchronized void normalMethod() throws InterruptedException {      for (i

2017-12-21 19:36:42 4076

原创 synchronize的限制

synchronize的限制synchronized是不错,但有一些功能性的限制:它无法中断一个正在等候获得锁的线程;也无法通过投票得到锁,如果不想等下去,也就没法得到锁;同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行,多数情况下,这没问题(而且与异常处理交互得很好),但是,确实存在一些非块结构的锁定更合适的情况。

2017-12-21 18:55:03 286

原创 synchronized的使用实例

一、使用场景在负责后台开发的时候,很多时候都是提供接口给前端开发人员去调用,会遇到这样的场景:需要提供一个领奖接口,每个用户名只能领取一次,我们可以将成功领取的用户在数据库用个标记保存起来。如果这个用户再来领取的时候,查询数据库看该用户是否领取过。但是问题来了,假设用户手速很快,极短时间内点了两次领奖按钮(前端没有进行控制,我们也不能依赖前端去控制)。那么可能掉了两次领奖接口,而且有可

2017-12-21 12:32:52 362

原创 并发编程 synchronized

在Java中,每一个对象有且仅有一个同步锁,同步锁是依赖于对象而存在。当调用某个对象的synchronized方法时,就获取了该对象的同步锁。不同线程对同步锁的访问时互斥的。synchronized基本规则:(一)当一个线程访问某个对象的synchronized方法或者代码块时,其他线程对此对象的synchronized方法或者代码块的访问都会被阻塞。(二)当一个线程访问某个对

2017-12-21 12:31:15 166

转载 ThreadPoolExecutor使用示例

通常,使用Java开发并发程序时,我们创建Runnable对象,然后创建对应的线程Thead对象来执行它们。Java 5之后,Java并发API提供了Executor框架,主要包括Executor接口,它的子接口ExecutorService,以及实现上述两个接口的ThreadPoolExecutor类。 这种机制使得任务的创建和任务的执行分离,使用executor,开发者只需要实现Run

2017-12-18 17:14:03 1229

原创 mybatis #和$的区别

1.  #将传入的数据都当成一个字符串,即会对自动传入的数据加一个双引号。如:对于sql语句order by #{name},如果传入的值是123,那么解析成sql时的值为order by "123", 如果传入的值是tom,则解析成的sql为order by "tom"。2.  $将传入的数据直接显示生成在sql中,不会添加引号。   如:对于sql语句order by ${name

2017-12-18 16:45:03 152

转载 九个绝招,让你戒掉旧情人

1、从思想上,要认清他对你是不适当的,你们之间是不会有结果的  拖延下去,只会增加彼此的痛苦。下面列举出几位婚外恋者的心理感受,以帮助你认清现实,斩断情丝。  “婚外情的确很刺激,你的感觉如入云霄。但是,你要苦等电话,相聚也只不过一、两小时。星期日是最苦恼的,因为你的”他“不在身边,却在家陪老婆。天下最痛苦的事,莫过于爱上一个你无法拥有的人”。  一位女人婚外恋者对其它外遇者的忠告是“

2017-12-17 11:49:43 288

转载 青春的痛苦

每一段光阴都有一个故事,每一个故事又是一首乐章。而青春,更是乐章中最富于变化的音符,跳动在每一根琴弦上,弹奏着少不更事,弹奏着年少轻狂,弹奏着离别过往。青春在弦上流淌,理不清的思绪,剪不断的忧愁,红尘如斯,灵魂的归宿在那里?铁轨伸向前方,雾一样的迷离。是有终点的,但是过趁让人有些厌倦和迷离,不知所措。并且每个重点,随时都是另一个起点。循环往复,不会结束。青春就像一场流浪,知道从哪里来,却不知道

2017-12-17 11:48:48 184

转载 莫让懒惰蹉跎了青春

古人云:“一勤天下无难事”。“勤奋”可以说是从古至今几乎所有的成功者都在践行的真理,然而更多的人则把成功寄托于“勤奋”之外的偶然性。“业精于勤,荒于嬉;行成于思,毁于随”。学业由于勤奋而精通,但它却荒废在嬉笑声中,事情由于反复思考而成功,但他却能毁于随随便便。在学习的同时也不能忘记养胃,活谓双菇能够抑制幽门螺杆菌,活谓双菇也能修复胃粘膜形成保护层。学业、工作、事业,乃至一个小小的兴趣爱好、良好

2017-12-17 11:42:23 355

转载 致逝去的青春

致逝去的青春淡淡幽香/镜中的花不再娇羞幻想一块块面膜贴出少女的容颜(美文网:www.meiwenting.com)美颜的照片只是青春的幻影晨曦中,奔跑的倩影重温追赶太阳的快乐三尺讲台放飞青涩的梦想美文春色满园姹紫嫣红青春的色彩璀璨了悠悠人生

2017-12-17 11:41:43 159

转载 青春的岁月里有你,真好

我们有着不一样的的家庭,我们有着不一样的梦想,我们有着不一样的容貌,我们向往着不一样的未来,但是我们怀着同一个目的来到了同一所学校学校,这是一所承载着许多人愿望的学校。不同样的年纪,不一样的容貌,不一样的性格,你的性格内向,我的性格十分大大咧咧,你的性格却是不喜言语,我不知道我们为什么会走到一起,我总是喜欢闹小脾气,每次我无缘无故的生气了,那你也不问原因的哄我、向我道歉,我不知道你为什么会喜欢

2017-12-17 11:40:24 260

转载 阳春三月,花开醉满青春

阳春三月,花开醉满青春三月,春风拂面,杨柳依依三月,花开满地,绿草相映三月,绿柳成行,风景如画三月,是一个充满生机,充满活力的季节,更是一个催人奋进的季节。轻轻地缓步在工地上,看村边满星的桃花,争相迎春,粉红的盛是惹人疼爱,激起我对生命无限的敬仰,唤起我对爱情美好的憧憬,春风微微拂过,桃花缓缓飘落,在空中宛如一翩翩起舞的少女,让人感觉如此的舒适,惬意。青春,似三月的春景,美

2017-12-17 11:37:13 283

原创 Java多线程问题汇总

Java多线程问题汇总1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势(比较重要)随着工业的进步,现在的

2017-12-17 11:25:49 124

原创 常用的android框架

Android应用程序最初是由Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序,Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。但是在进行安卓应用开发时,都要为环境进行搭建框架才能够进行,那么android开发框架有哪些呢?1、ApplicationsAndroid装配一个核心应用程序集合,包括电

2017-12-17 11:24:37 231

原创 Web容器和Web应用程序

Web容器和Web应用程序介绍Web 应用程序是服务器方应用程序. 它的开发的最基本要求如下:编程模型和 API, 服务器方运行时支持, 实施(deployment)支持. 实施是指在服务器上安装应用程序的过程. 这一过程还包括配置应用程序组件, 如指定初始化参数和指定任何数据库.Web 容器实际上是一个 Java 运行时(Runtime), 提供了 Java Servlet API

2017-12-17 11:20:27 499

原创 消息队列:ActiveMQ

ActiveMQ 是Apache出品,最流行的、功能强大的即时通讯和集成模式的开源服务器。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。提供客户端支持跨语言和协议,带有易于在充分支持JMS 1.1和1.4使用J2EE企业集成模式和许多先进的功能。二、 特性1、 多种语言和协议编写客户端。语言: Java、C、C++、

2017-12-17 11:16:03 203

原创 java 中对时间和日期的操作

实际编码中,对时间与日期的操作是非常常见的需求。写了个比较简单的类,来满足部分对时间相关的操作。后续可以根据需求再添加相关功能。包含的方法有: 1.返回当前系统时间 2.返回当前时间戳 3.返回上午下午 4.将Date对象变为字符串 5.将字符串变为Date对象 6.根据字符串返回时间戳 7.根据时间戳返回日期 8.得到前一天的时间戳 9.得到前一天的字

2017-08-21 15:30:11 263

原创 ansj分词方式详细解析

ToAnalysis 精准分词精准分词是Ansj分词的店长推荐款它在易用性,稳定性.准确性.以及分词效率上.都取得了一个不错的平衡.如果你初次尝试Ansj如果你想开箱即用.那么就用这个分词方式是不会错的.DicAnalysis 用户自定义词典优先策略的分词用户自定义词典优先策略的分词,如果你的用户自定义词典足够好,或者你的需求对用户自定义词典的要求比较高,那么强烈建议你

2017-08-17 10:49:36 812

原创 Linux id 命令 - 显示用户id和组id信息

要登入一台计算机,我们需要一个用户名。用户名是一个可以被计算机识别的身份。基于此,计算机会对使用这个用户名的登陆的人应用一系列的规则。在Linux系统下,我们可以使用id 命令。什么是 id 命令id 命令可以显示真实有效的用户 ID(UID) 和组 ID(GID)。UID 是对一个用户的单一身份标识。组 ID(GID)则对应多个UID。如何使用 id 命令id 命令已经默

2017-07-26 10:51:33 1188

原创 linux修改root密码和修改其他用户密码

1、首先,要用CRT软件连接Linux系统。 2、首选,确认是用root用户登录系统的。 输入命令: id ,查看登录用户信息。3、若修改root自己的密码,直接输入 passwd . 输入两遍,新密码即可。 4、若修改其他用户,如oracle 的密码,可直接输入passwd oracle. 输入两遍性新密码即可。 5、这样就修改成功了。

2017-07-26 10:13:35 67096

原创 linux查看多有的用户和组信息

【步骤一】cat /etc/passwdcat /etc/passwd查看所有的用户信息,详情如下图【步骤二】cat /etc/passwd|grep 用户名cat /etc/passwd|grep 用户名,用于查找某个用户,如下图【步骤三】cat /etc/groupcat /etc/group查看所有组信息,如下图

2017-07-18 13:43:36 427

原创 java.lang.OutOfMemoryError: GC overhead limit exceeded解决办法

1.此错误是JDK6新增加的新特性,当GC为释放较少的空间而占用较大的时间时,抛出此异常。引起原因:堆内存太小,没有足够的内存。解决办法:查看系统是否有使用大内存的代码或者死循环添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimit

2017-07-13 10:11:17 339

原创 检查数组是否包含某个值

//使用list判断是否包含目标值public class isListContains {    //数组转换成list判断,一个元素是否存在于list集合之后    public static void main(String args[]){        String str[]={"杜牧","孙少安","孙少平","兰香","三星","孙玉德"};

2017-07-13 09:49:18 1056

原创 java如何产生1到10之间的随机数

java.util.Random random=new java.util.Random();// 定义随机类int result=random.nextInt(10);// 返回[0,10)集合中的整数,注意不包括10return result+1;              // +1后,[0,10)集合变为[1,11)集合,满足要求

2017-07-12 09:46:27 55946 5

原创 缓冲流的用法

1、java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如

2017-07-11 10:08:40 516

原创 在Java中如何高效的判断数组中是否包含某个元素

如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。检查数组是否包含某个值的方法使用List123publi

2017-07-06 10:08:14 288

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除