自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP/IP 三次握手、四次挥手、查看调用日志

1.linux/mac 命令窗口tcpdump -nn -i en0 port 802.linux/mac 命令窗口curl www.baidu.com3.4.

2021-04-13 20:08:16 229

原创 滑动窗口java代码实现

public class SlidingWindow { /** * 循环队列 分段存放数据 */ private AtomicInteger[] timeSlices; /** * 每个时间片的时长,以毫秒为单位 */ private int timeMillisPerSlice; /** * 共有多少个时间片(即窗口长度) */ private int windowSize; /*.

2020-07-09 14:15:04 1322

原创 ThreadLocal为什么这么设计,还有那些可以优化点?

问题一. 同一个线程方法之间的传参方式有那些?1. 通过方法参数进行传参,与业务逻辑无关的通过参数,不方便。2. 通过公共变量进行传参 如: static object param = null,这样写有很多问题,如并发问题,gc问题,几乎不这样写。ThreadLocal按照第二种解决方式方式进行了优化。优化:把object 放在了Thread类里面,这样object的生命周期就可以依赖Thread的生命周期,因为是线程的内部属性,天生线程安全。问题二:线程中有多个参数的化怎么办,是不是

2020-05-11 21:48:59 414

原创 java iterator迭代器的那些事

1. Java 迭代器如何实现的看代码(以ArrayList为例)2.迭代的过程中添加删除元素为何报错

2020-04-26 14:17:37 121

原创 分布式锁

锁:让共享资源按照预期进行执行。分布式锁:在分布式环境中,让共享资源按照预期进行执行。分布式问题最终还是单点解决(单点可以是集群)分布式锁实现方式分布式问题最后还是用非分布式方式解决数据库实现1.设计一张表,通过唯一键做控制。比如插入同一个值到表中, 成功的插入的则取得了权限。非阻塞。2.select for update 建议添加where条件,并且条件中的字段...

2020-04-24 18:21:19 105

原创 cookie session token 各是什么鬼?

cookie session token 各是什么鬼?审稿人:阿伟哥背景:B/S架构体系,借助Http(s)协议进行网络通信,而Http(s)是无状态协议。为了解决这个问题,就渐渐的引入了上面三个鬼。cookie:小豌豆是个程序员,勤勤恳恳搬砖,每个月挣了钱,都自己存在,不放银行或者支付宝。每次都用现金交易。时间一长问题来了,钱多了不知道放哪,最要命的是经常丢钱。cooki...

2019-05-30 09:52:46 421

原创 为什么java中的8种基本数据类型转换关系是这样的

数据类型在计算机语言里面,是对内存的一种抽象表达方式。数据都已0和1的形式保存在内存里面,数据类型就是用一段连续的内存表示一个数据。可以为理解为对内存的面向对象。一段连续的合适大小的内存表示一种数据类型(类似于java中的一种类)。java中分为三类八大基本数据类型1、charchar中的65535种数值对应着Unicode中的符号码。在java中,String类是...

2019-05-22 15:04:14 492

原创 为什么内存进制是1024,数据传输速率是1000?

内存进制:在日常生活中,有0-9十种标识,所以就用10进制。在钟表上,有60个刻度,所以就用60进制。在计算机底层,只有0和1两种标识,所以就用2进制,由于2太小了,所以就用了2^10作为进制。大胆推测,假如哪天计算机出现了3种标识,那么就要用3^n进制了。进制换算1T=1024GB1G=1024M1M=1024KlK=1024B1B=8b (B:...

2019-05-20 20:14:45 10792 3

原创 VM

引用: 强 软: 堆满的时候,gc时回收虚: gc回收并通知弱: gc 回收-Xms20M starting-Xmx max-Xmn new对象分配eden-XX:SurvivorRatio=88:1:1TLAB Thread Local Allaction Buffer对象很大 -XX:Pretenure...

2019-05-20 20:11:44 130

转载 activeMQ持久化与 个Spring的结合

答疑                       消息的发送策略持久化消息默认情况下,生产者发送的消息是持久化的。消息发送到broker以后,producer会等待broker对这条消息的处理情况的反馈可以设置消息发送端发送持久化消息的异步方式connectionFactory.setUseAsyncSend(true);回执窗口大小设置connectionFacto...

2019-01-24 17:51:42 120

原创 Java中创建对象的5种方式和8种单例创建的关系

2019-01-08 17:24:04 360

转载 Java中创建对象的5种方式

作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象。然而这里有很多创建对象的方法,我们会在这篇文章中学到。 Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码如果你运行了末尾的的程序,你会发现方法1,2,3用构造函数创建对象,方法4,5没有调用构造函数。1、使用new关键字这是最常见也是最简单的创建对象的方式了。...

2019-01-08 15:47:18 108

转载 MySQL索引原理及慢查询优化

MySQL索引原理及慢查询优化阅读目录建索引的几大原则 回到开始的慢查询 查询优化神器 - explain命令 慢查询优化基本步骤 几个慢查询案例add by zhj:这是美团点评技术团队的一篇文章,讲的挺不错的。原文:http://tech.meituan.com/mysql-index.htmlMySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网...

2019-01-03 13:52:49 123

转载 基础篇:Linux/Unix下的不同IO模型

UNPv1 第 6.2 节总结了 Unix/Linux 上的五种 IO 模型:阻塞(blocking)、非阻塞(non-blocking)、IO 复用(IO multiplexing)、信号驱动(signal-driven)、异步(asynchronous)。这些都是单线程下的 IO 模型。  blocking I/O      首先applic...

2018-11-11 18:07:50 167

原创 TCP 为什么是三次握手,而不是两次或四次

这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致.三次通信是理论上的最小值,兼顾效率与可靠,就选三次了.三次握手真的可靠吗?当然不可靠,任意次的握手都是不可靠的,握手成功只能说明握手时的通信是正常的,并不能保证握手后的通信是正常的,例如不稳定的网络环境,这些都是可能的。握手只能保证尽可能的可靠,而不可能保证理论上的绝对可靠。 通信一定要三次握手吗?当然不是,比如...

2018-11-07 14:56:04 291

转载 Ajax请求传递数组参数的两种方法

ajax提交添加”traditional:true”参数var arr=new Array();arr[0]='param';arr[1]='param2';$.ajax({url:请求地址, data:{params:arr}, type:"POST", traditional:true, su...

2018-05-24 21:00:50 1691

转载 动态代理的两种实现方式(JDK/Cglib)

什么是代理模式?(设计模式—代理模式)  代理模式:在调用处不直接调用目标类进行操作,而是调用代理类,然后通过代理类来调用目标类进行操作。在代理类调用目标类的前后可以添加一些预处理和后处理操作来完成一些不属于目标类的功能。为什么要使用代理模式?  通过代理模式可以实现对目标类调用的控制、在目标类调用前/后进行一些不属于目标类的操作,如:数据验证、预处理、后处理、异常处理等什么是静态代理什么是动态代...

2018-05-11 10:33:11 219

转载 MsgPack和Hessian序列化的区别

两者的区别:  hessian序列化的时候,会写入字段名称,然后字段值,你可以想象为一个map。  msgpack序列化的时候,不写入字段名字,会按字段顺序写入值,你可以想象为一个数组。从这就可以看出:  hessian产生的数据包较大,msgpack产生的数据包较小。网络传输数据更小。  序列化中hessian的性能较差,(相当于每次map按名字取值)  msgpack性能更佳,(相当于数组取值...

2018-05-07 16:04:46 609

转载 git 操作规范

git 操作规范一、 创建与合并分支1、 从master分支创建dev分支并切换到dev分支git checkout mastergit checkout -b dev其中,git checkout -b dev 等价于:git branch devgit checkout dev(1)git branch查看本地当前的分支,分支前面带“*”表示当前分支,剩下的分支表示本地有的分支...

2018-04-24 20:01:26 211

转载 mysql数据库开发常见问题及优化

mysql 数据库是被广泛应用的关系型数据库,其体积小、支持多处理器、开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高。在使用 mysql 的过程中不规范的 SQL 编写、非最优的策略选择都可能导致系统性能甚至功能上的缺陷。恰巧就在前几天,本人所在公司的云事业部举办了一场关于 mysql 的技术交流会,其中一个 part 正是聚焦于开发过程中 mysql 数据库设计及使用的常见...

2018-04-13 15:11:19 165

原创 nginx中limit_req_zone配置

下面是 nginx 官网上给的解释limit_req_zoneLimit frequency of connections from a client. This module allows you to limit the number of requests for a given session, or as a special case, with one address.Restrict...

2018-04-12 16:38:27 2606

转载 使用Nginx抵御DDOS攻击

DDOS是一种通过大流量的请求对目标进行轰炸式访问,导致提供服务的服务器资源耗尽进而无法继续提供服务的攻击手段。一般情况下,攻击者通过大量请求与连接使服务器处于饱和状态,以至于无法接受新的请求或变得很慢。应用层DDOS攻击的特征应用层(七层/HTTP层)DDOS攻击通常由木马程序发起,其可以通过设计更好的利用目标系统的脆弱点。例如,对于无法处理大量并发请求的系统,仅仅通过建立大量的连接,并周期性的...

2018-04-11 18:04:53 183

转载 常见死锁的另类解决方法

前些天周杰让我看了一段代码, 让我觉得学习一下基础的知识还是挺重要的, 对理解代码有很大帮助。这是一个关于死锁的问题,代码如下:很明显,这段代码在多线程情况下,会产生死锁:假设线程1 做的操作是账户A给账户B转账, 先锁住了A账户, 接下来试图申请B账户的锁,与此同时线程2 在从 账户B给账户A 转账, 先锁住了B账户的锁, 接下来试图申请A账户的锁。两个线程各自持有资源, 然后等待获取对方的资源...

2018-04-10 19:04:35 288

原创 mysql navicate 开始事务操作方法

2018-03-30 13:52:03 15268

转载 多核 CPU 和多个 CPU 有何区别?

架构可以千变万化,面向需求、综合考量是王道。来,简单举个例子。假设现在我们要设计一台计算机的处理器部分的架构。现在摆在我们面前的有两种选择,多个单核CPU和单个多核CPU。如果我们选择多个单核CPU,那么每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。假如在这样的架构上,我们要跑一个多线程的程序(常见典型情况),不考虑超线程,那么每一个线程就要跑在一个...

2018-03-27 10:58:44 7460

转载 Git删除分支

有时候并行的开发了很多的特性,建了很多的分支,时间长了分支就多了,想要把不用的分支删除,怎么办呢?#查看本地都有哪些分支Git branch#查看所有的分支,包括远程的git branch -a#删除本地的某个分支git branch -D hongchangfirst#删除远程的分支git branch -r -d origin/hongchangfirst#注意这个只是删除本地的索引,而不是真...

2018-03-16 14:08:56 136

转载 Oracle 删除重复数据只留一条

查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录

2018-01-24 16:34:34 138

转载 ORACLE中decode、case when区别

DECODE语法:1、decode(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value=if1时,decode函数的结果返then1,...,如果不等于任何一个if值,则返回else。可以用函数或表达式来替代value,if,then,else。2、decode(value,if,then,else),如果value=if

2018-01-24 11:24:37 2446

转载 Oracle中rownum、rowid、row_number()、rank()、dense_rank()的区别

首先来说一下rownum与rowid含义:顾名思义rownum就是行数/行号,而rowid就是编码/编号/唯一识别号,所以他是类似“AAAR8gAAEAAAAErAAK”的编号,注意他是没有先后顺序的,也就是说他和数据入库时间没有任何关系,打个比方:他就像磁盘、内存存储数据用的是16进制的地址一样。 他们都是伪列,可以理解成表中的一个列只是他们并不是你创建的。同样是伪列区别

2018-01-24 11:10:34 229

转载 基于zookeeper实现分布式锁

前言:2016春节之后一直比较忙,因此博客N个没有更新,现在也是忙里偷闲,偷偷的更新一篇!一、分布式锁介绍        分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍        在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图                 

2017-12-01 13:46:47 139

转载 Spring、Spring MVC、MyBatis整合文件配置详解

web.xml的配置  web.xml应该是整个项目最重要的配置文件了,不过servlet3.0中已经支持注解配置方式了。在servlet3.0以前每个servlet必须要在web.xml中配置servlet及其映射关系。但是在spring框架中就不用了,因为Spring中是依赖注入(Dependency Injection)的也叫控制反转(Inversion of Control)。但是

2017-11-09 11:07:53 207

原创 springmvc .html请求返回解决406问题

application/json;charset=UTF-8                        text/html;charset=UTF-8                       WriteMapNullValueQuoteFieldNames

2017-11-03 09:15:39 473

转载 隐写:NTFS STREAM

TFS文件流(ADS)的利用一、隐藏信息在任一NTFS分区下打开CMD命令提示符,输入echo abcde>>a.txt:b.txt,则在当前目录下会生成一个名为a.txt的文件,但 文件的大小只有0字节,打开后也无任何内容,只有当我们键入命令notepad a.txt:b.txt才能看见写入的abcde。在上边的命令中,a.txt可以不存在。也可以是某个已存在的文件,文件格式无所谓,

2017-11-03 09:09:02 1000

转载 硬链接和软链接的区别和作用

首先说说目录的本质和节点的概念:在linux系统下一切皆文件,目录它也是一个文件,只不过在它里面存储的是一张表的文件。而节点就类似我们c语言中学过的数组的下标,我们可以把每个文件都看成是数组中的元素,而知道了节点号,就可以找到实质的文件内容了。有了以上的认识,我们进一步说说硬链接和软链接吧。硬链接和软链接的区别1.原理上:硬链接(hard link):

2017-11-01 19:41:16 340

原创 mysql_mybatis添加数据时如果数据存在就更新,如果不存在就插入

INSERT INTO IP_AREA (IP,AREA_NAME,AREA_CODE,UPDATE_TIME)VALUE (#{ip,jdbcType=VARCHAR},     #{areaName,jdbcType=VARCHAR},     #{areaCode,jdbcType=VARCHAR},      #{updateTime,jdbcType=TIMESTAM

2017-09-29 11:51:39 11073

转载 Mian加载spring容器

package com.usi.jrtx.quartz.job;    import java.io.IOException;    import org.springframework.context.support.ClassPathXmlApplicationContext;    @SuppressWarnings("resource")  public cla

2017-09-29 11:45:25 259

转载 mybatis+oracle添加数据时如果数据存在就更新,如果不存在就插入

判断需要插入的数据是否存在,如果不存在就更新  MERGE INTO 表名 T  USING ( SELECT SYS_GUID() AS CODE,#{item.createDate,jdbcType=VARCHAR} AS CREATE_DATE,#{item.createBy,jdbcType=VARCHAR} AS CREATE_BY,#{item.flag

2017-08-22 10:22:40 6986 2

转载 mybatis+oracle generator 配置和异常处理

a、将图片中三个文件粘贴到src平级目录b、generatorConfig.xml文件配置generatorConfiguration > classPathEntry location="/ojdbc14.jar" /> context id="context1" targetRuntime="MyBatis3"> jdbcC

2017-08-21 17:22:49 435

原创 oracle分区

create table emp (id NUMBER,salary NUMBER(10,2))partition by range (salary)(partition p1 VALUES less than (1000),partition p2 VALUES less than (2000),partition p3 VALUES less than (3000))

2017-07-20 09:40:31 166

原创 常用sql

oracle:SELECT * from BASE_AREA where AREA_NAME != '中国'start with BASE_AREA_ID = '5d1aa479cc0e48128a9011b0c3baad42'CONNECT by prior PARENT_ID= BASE_AREA_ID ORDER BY sort

2017-07-14 14:31:55 282

空空如也

空空如也

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

TA关注的人

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