- 博客(35)
- 收藏
- 关注
转载 理解session机制
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索...
2018-06-14 17:35:41
261
转载 集群间Session共享问题解决方案
两个基本概念的生命周期 session:当新客户端发现一个HTTP请求时服务端会创建一个session.并分配一个sessionID作为服务端来客户端的识别,session对象会保存在服务端.此时session对象处天NEW STATE状态,如果调用 session.isNew()则返回true.当服务器处理完后,会将sessionID同reponse 一起传回客户端,并将其存到cookie中;当...
2018-06-14 15:36:06
228
原创 nginx实现负载均衡的几种策略
nginx能够根据客户端IP实现负载均衡的功能,我们可以通过在upstream里设置ip_hash,就可以完成针对同一个C类地址段中的客户端选择同一个后端服务器的功能,只有在后端服务器宕了的情况下才会换一个。nginx的upstream目前支持的5种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕掉,能自动剔除。 upstream backserver { ...
2018-06-14 15:01:06
498
转载 nginx反向代理和负载均衡
1.nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自web前端的压力,也能让人十分头痛。怎样将同一个域名的访问分散到两台或更多的机器上呢?这其实就是另一种负载均衡了,nginx自身就可以做到,只需要做个简单的配置就行。 nginx不单可以作为强大的web...
2018-06-14 14:50:44
187
转载 JSONP跨域原理解析
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax编程时显...
2018-06-14 14:18:41
244
转载 TCP粘包,拆包及解决方法
在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文...
2018-06-07 15:47:47
4575
2
转载 计算2的n次方
计算2的N次方时间限制: 1000ms内存限制: 65536kB描述任意给定一个正整数N(N<=100),计算2的N次方的值。输入输入只有一个正整数N。输出输出2的N次方的值。样例输入5样例输出32参考代码import java.util.*;public class Main { public final static int SIZE = 30; public static vo...
2018-06-01 16:46:30
2221
转载 Netty之ByteBuf
一、功能原理ByteBuf是一个byte存放的缓冲区。ByteBuf通过两个位置的指针来协助缓冲区的读写操作,读操作使用readIndex,写操作使用writeIndex。 +-------------------+------------------+------------------+| discardable bytes | readable bytes | writable by...
2018-05-31 17:01:28
2189
转载 java内部类
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正。 请尊重作者劳动成果,转载请标明原...
2018-05-29 10:19:49
104
转载 Socket学习之解决TCP半包粘包问题
问题产生TCP是一个数据流协议,所以TCP发送的数据包大小是不可控制的,这时候就会出现粘包和半包的现象,下面这张图是我从网上找的,描述很形象1. 情况1,Data1和Data2都分开发送到了Server端,没有产生粘包和拆包的情况。2. 情况2,Data1和Data2数据粘在了一起,打成了一个大的包发送到Server端,这个情况就是粘包。3. 情况3,Data2被分离成Data2_1和Data2_...
2018-05-29 09:46:43
647
转载 TCP如何解决乱序和丢包问题,描述一下三次握手
TCP如何解决乱序和丢包问题,描述一下三次握手TCP数据包的头格式中有两个概念,Sequence Number是数据包的序号,用来解决网络包乱序(reordering)问题。Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) P...
2018-05-29 09:36:04
3676
转载 HashMap实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不...
2018-05-21 14:44:44
129
原创 通过websocket实现聊天室的Demo
时下websocket非常的火热,它是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端。下面通过一个小小的demo来看看它的应用:1.创建一个类:WebSocketTest .java package me.gacl.websocket; import java.io.IOException; import java.u...
2018-05-21 10:59:38
812
转载 Redis 解决键冲突
Redis 解决键冲突当有两个或以上数量的键被分配到了哈希表数组的同一个索引上面时, 我们称这些键发生了冲突(collision)。Redis 的哈希表使用链地址法(separate chaining)来解决键冲突: 每个哈希表节点都有一个 next 指针, 多个哈希表节点可以用 next 指针构成一个单向链表, 被分配到同一个索引上的多个节点可以用这个单向链表连接起来, 这就解决了键冲突的问题。...
2018-05-21 10:32:21
8322
1
转载 solr全文检索实现原理
solr全文检索实现原理 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML/Json格式的返回结果。采用Java5开发,基于Lucene。 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是...
2018-05-19 14:58:11
201
原创 Redis集群运行
前提:已配置好Redis的集群;java代码:@Test public void testJedisCluster() throws Exception { //创建一个JedisCluster对象 //创建集群的节点 HashSet<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort("1...
2018-05-19 11:29:16
204
转载 redis集群原理
redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。 官方的一个简单测试: 测试完成了50个并发执行100000个请求。 设置和获取的值是一个256字节字符串。 结果:读的速度是110000次/s,写的速度是81000次/s 在这么快的读写速度下,对于一般程序来说足够用了,但是对于访问量特别大的网...
2018-05-19 10:31:30
2161
转载 Java引用详解(强引用、软引用、弱引用、虚引用)
强引用(Strong Reference)强引用是指在程序代码中普遍存在的,类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。[java] view plain copy print?public class StrongReferenceTest { private static class BiggerObjec...
2018-05-19 09:37:06
111
转载 GC详解及Minor GC和Full GC触发条件总结
摘要:GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。**GC机制**要准确理解Java的垃圾回收机制,就要从:“什么时候”,“对什么东西”,“做了什么”三个方面来具体分析。第一:“什么时候”即就是GC触发...
2018-05-19 09:27:35
224
转载 多线程基础
前言多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。正文线程与进程1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境2 进程:执行中的程序一个进程至少包含一个线程3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程4 多线程:在...
2018-05-16 16:12:44
88
转载 Socket通信原理简单理解
2017年02月04日 10:07:01阅读数:4444 在接触Java之前,本人曾对即时通讯工具非常感兴趣。现在是网络时代,网络间通讯已经成为了每个人生活的一部分,有鉴于此,程序员在这方面做出一定的了解是极为必要的。因为工作的关系,一直接触不到网络编程这一块,因此自己通过业余时间来研究学习,也得出一些自己的认识,希望可以帮助到和我一...
2018-05-16 15:56:02
1849
1
原创 创建索引
CREATE INDEXCREATE INDEX可对表增加普通索引或UNIQUE索引。12CREATE INDEX index_name ON table_name (column_list)CREATE UNIQUE INDEX index_name ON table_name (column_list)table_name、index_name和column_list具有与ALTER TABL...
2018-05-15 21:47:22
149
转载 java线程锁
在多线程中,每个线程的执行顺序,是无法预测不可控制的,那么在对数据进行读写的时候便存在由于读写顺序多乱而造成数据混乱错误的可能性。那么如何控制,每个线程对于数据的读写顺序呢?这里就涉及到线程锁。什么是线程锁?使用锁的目的是什么?先看一个例子。 private void testSimple(){ SimpleRunner runner = new SimpleRunner();...
2018-05-15 16:17:23
201
转载 多线程(二)使用多线程的准备知识
一、为什么要使用多线程? 【使计算机所有资源在执行任务的时候能够全部利用上,以提升计算机资源利用率的方式来提升系统执行效率】 CPU的单核运行速度由于硬件技术问题已经遇到瓶颈,而概念性的“光脑”貌似离我们还很遥远,现在的计算机性能提升方向是向多核发展。多核同时工作,协同完成任务。大家熟知的神威·太湖之光超级计算机总共使用了40960颗处理器,总计拥有10649600颗核心、1.31...
2018-05-15 16:06:32
271
转载 高并发和多线程
“高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程 多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。 高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系...
2018-05-15 16:03:37
156
转载 java多线程理解
引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不够明确...
2018-05-15 11:29:00
126
转载 java中为何要用多线程?
我们可以在计算机上运行各种计算机软件程序。每一个运行的程序可能包括多个独立运行的线程(Thread)。 线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。 当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。 同步这个词是从英文...
2018-05-15 11:25:25
474
原创 public String toString() {}方法
新建一个JavaBean:public class AdminUser { private Integer uid; private String username; private String password;//geter()加setter()方法.......@Override public String toString() { return " username=" + usern...
2018-05-14 16:53:30
16781
转载 通过PrepareStatement对数据库中的数据进行增删改查
1 插入数据public boolean ChaRu3(User user){boolean flag=true; Connection conn=null; PreparedStatement ps=null; //创建PreparedStatement 对象 String sql= "insert into user (name,pwd) val...
2018-05-12 14:28:35
1769
转载 struts2的action从request获取参数值的几种方式
使用jquery框架的ajax能够方便的向后台传递参数,以$.post为例,参数有2种方式字符串和键值对:$.post(url, "name=aty&age=25")和$.post(url, {"name":"aty","age":25})。显然,使用json的方式比使用字符串拼接要方便。对于后台的action来说,这2种方式是等价的,而且jquery也提供了param、serialize...
2018-05-12 09:52:31
1394
原创 java_socket
客户端从网页上接收数据,再通过输出流写入数据,服务端接收(用BufferedReader类的字符流接收)服务端: BufferedReader bufferedReader=new BufferedReader(inputStreamReader);//加入缓冲区 String temp=null; String info=""; ...
2018-05-11 20:25:45
79
原创 通过java获取propertity文件内容
public void analyze(){InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipdata.properties"); Properties p = new Properties(); try { p.load(inputStream)...
2018-05-09 21:25:38
513
原创 struts应用:关于从jsp页面中输入action后,运行报“404”错误
举例来说:jsp页面中:action="${pageContext.request.contextPath }/doLogin.action" struts.xml中:<action name="doLogin" class="cn.wan.login.adminuser.action.AdminUserAction" />AdminUserAction.java对于单一的业务逻辑请求...
2018-05-09 19:15:13
1510
原创 hashmap的存储原理
直接上代码:public V put(K key, V value) { //如果key为null,存储位置为table[0]或table[0]的冲突链上 if (key == null) return putForNullKey(value); int hash = hash(key);//对key的hashcode进一步计算,确保散列均匀in...
2018-05-06 18:54:58
151
原创 二分法解决非常规的查找问.
一个数组,里面的序列原本有序,现在通过平移,从某个点掐断(不确定),将前半部分平移到后半部分,构成新的序列。查找某个数值是否存在于该数组中(保证时间复杂度不超过logN)。如:4,5,6,7,8,1,2,3 查找7是否在这个数组中。代码如下:package normal.algorithm;import java.util.Scanner;public class New_Bin_Sea...
2018-04-27 11:33:48
127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人