- 博客(70)
- 资源 (23)
- 收藏
- 关注
原创 如何设计秒杀系统?双11秒杀架构详解(5大方案)
假设处理一个业务请求平均响应时间为 100 ms,同时,系统内有 20 台 Web 服务器,配置最大连接数为 500 个,Web 系统的理论峰值 QPS 为(理想化的计算方式):100000 (10万QPS)意味着1 秒钟可以处理完 10 万的请求,而“秒杀”的那 5w/s 的秒杀似乎是“纸老虎”。更可怕的问题是,当系统上某个应用因为延迟而变得不可用,用户的点击越频繁,恶性循环最终导致“雪崩”,因为其中一台服务器挂了,导致流量分散到其他正常工作的机器上,再导致正常的机器也挂,然后恶性循环,将整个系统拖垮。
2023-09-12 16:43:50
742
原创 2023.9.11/星期一
优秀的人总是努力地翻山越岭,披荆斩棘。世界上没有那么多的天赋异禀,2023.9.11/星期一。时间会看得见也会给出答案。真正用心坚持做一件事,
2023-09-11 08:22:33
62
原创 一行代码解决缓存击穿的问题
当然是xx机构~~此处保护自己的狗头~~记住,他们为了割韭菜,一定会选择一些看起来极为高端,但是落地巨不靠谱的方案(这也是区分一个机构到底是割韭菜还是真正有水平的标杆,小白不懂,很容易被坑)~~看到这里,真是惭愧,我的第一篇文章也是写这个方案了,但是在落地过程中,发现了不对劲(此处省略一万字的检讨文,烟哥垃圾~~)。在高并发下,对一个特定的值进行查询,但是这个时候缓存正好过期了,缓存没有命中,导致大量请求直接落到数据库上,如活动系统里面查询活动信息,但是在活动进行过程中活动缓存突然过期了。
2023-09-09 08:48:04
98
原创 Git的一些常用概念与操作方法分享
提交代码,使用命令“git commit -m “commit message””来提交代码变更到Git仓库中。分支(Branch)- 在Git中,您可以创建多个分支,每个分支都是独立的代码库,用于不同的开发任务或版本。将代码添加到仓库中,使用命令“git add filename”来将文件添加到Git仓库中。合并分支,使用命令“git merge branchname”来将新的分支合并到主分支中。拉取(Pull)- 从远程仓库获取代码更新,并将这些更新合并到本地仓库中。
2023-09-07 16:29:16
738
原创 生成订单30分钟未支付,则自动取消,该怎么实现?
该方案使用redis的Keyspace Notifications,中文翻译就是键空间机制,就是利用该机制可以在key失效之后,提供一个回调,实际上是redis会给客户端发送一个消息。该方案是利用JDK自带的DelayQueue来实现,这是一个无界阻塞队列,该队列只有在延迟期满的时候才能从中获取元素,放入DelayQueue中的对象,是必须实现Delayed接口的。结合以上两个特性,就可以模拟出延迟消息的功能,具体的,我改天再写一篇文章,这里再讲下去,篇幅太长。我们可以采用rabbitMQ的延时队列。
2023-09-07 11:54:33
454
原创 Java是如何扩展加载Jar包?
将需要的第三方的jar包,复制在同可执行jar所在的目录或某个子目录下. 比如:jar 包在/usrhome/yourJarExe.jar 那么你可以把所有jar包复制到/usrhome目录下或/usrhome/lib 等类似的子目录下.要注意的是Class-Path只是作为你本地机器的CLASSPATH环境变量的一个缩写,也就是说用这个前缀表示在你的jar包执行机器上所有的CLASSPATH目录下寻找相应的第三方类/类库。,而只以本身yourJarExe.jar的内部class作为类的寻找范围。
2023-09-07 09:18:18
173
原创 聊聊Spring家族中的那几百个注解
本文我们来梳理一下Spring的那些注解,如下图所示,大概从几方面列出了Spring的一些注解:聊聊Spring家族中的那几百个注解如果此图看不清楚也没事,请运行下面的代码输出所有的结果。Spring目前的趋势是使用注解结合Java代码而不是配置来定义行为、属性、功能、规则和扩展点,因此梳理注解也是梳理Spring功能点的很好的方式,全面的梳理可以补足我们知识点的漏洞。查找所有注解首先,...
2019-05-06 17:05:54
455
原创 java爬虫(jsoup)如何设置HTTP代理ip爬数据
现在爬数据越来越难,各种反爬,简单的网站没做什么反爬,就随便介绍下:1.随便找点网站弄点免费的http代理ip,去爬一下,太简单就不介绍了,目前最好用的代理ip是蘑菇代理具体说下,稍微有点爬虫技术含量的吧,怎么样伪装自己的爬虫程序,尽量避免反爬:1.请求头的user-agent参数必不可少,而且!!!!要随机,这里是大坑,我之前就是没有随机,然后爬了几天就被人反爬了,醉了,我当时还以为代理的...
2019-05-06 16:42:31
3194
1
原创 jmeter测试文件上传
1.新建线程组新建一个线程组,如果有线程组就不用新建了2.设置变量(已设置除外,这里的变量是本地环境)3.定义变量4.设置请求jmeter测试文件上传注意:一定要勾选Use multipart/form-data for POST5.上传图片这里上传图片时先添加一行,再点击浏览文件注意:1.上传图片时无论你的代码里有没有定义接受文件参数名,这里都需要设置文件接受参数名...
2019-05-05 14:34:19
1678
原创 redis每天生成自增流水号(20180901003)
原理:利用redis的RedisAtomicLong类实现该功能:让其每天第一次放置一个新的自增的值(一天过期)然后和每天的日期相加就可以了例子: 20180901 + 001 ;当天就是 20180901 + 002如果要多少个0,可以自己配置(工具类中)1.pom配置其实用springbootstarter是比较好的;说一下自己版本<!-- redis --> ...
2019-04-22 15:21:10
7136
1
原创 360极速浏览器使用postman
Postman-REST-Client_v0.8.4.14.zip文件在百度云下载链接:https://pan.baidu.com/s/1jUrRqEFQ3R14P0eGRl894Q提取码:wuoy步骤如下:1、将crx文件打包成zip文件2、解压打包的zip文件,并将_metadata文件夹修改为metadata3、打开360浏览器的扩展4、360浏览器加载postman插件...
2019-04-21 09:51:09
857
1
原创 设置Eclipse中的tab键为4个空格的完整方法
1.点击 window->preference-,依次选择 General->Editors->Text Editors,选中右侧的 insert space for tabs;如下图所示,保存,第一步完成;2.点击 window->preference-,依次选择 java(或C++)->code style ->formatter,点击右侧的editor...
2019-04-03 14:02:27
662
1
原创 线上性能问题初步排查方法
有时候有很多问题只有在线上或者预发环境才能发现,而线上又不能Debug,所以线上问题定位就只能看日志,系统状态和Dump线程,本文只是简单的介绍一些常用的工具,帮助定位线上问题。问题定位1: 首先使用TOP命令查看每个进程的情况,显示如下:top - 22:27:25 up 463 days, 12:46, 1 user, load average: 11.80, 12.19, 11.79...
2019-04-02 11:20:25
499
1
原创 数据库事务的四大特性以及事务的隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Con...
2019-03-14 09:43:08
452
1
转载 Spring之Email<封装了常用的四种发送Email的方法(TEXT,HTML,IMG,FILE)>
参考资料 1 Spring邮件发送(可带附件,模板,群发,异步发送等功能) http://linqincai.iteye.com/blog/508797 2 Spring mail 使用多个账号发送带有附件的HTML邮件 http://wisdombrave.iteye.com/blog/546508 3 spring各种邮件发送 http://blog.csdn.net/l
2018-01-24 17:56:49
2792
原创 Spring Security(03)——核心类简介
目录 1.1 Authentication 1.2 SecurityContextHolder 1.3 AuthenticationManager和AuthenticationProvider 1.3.1 认证成功后清除凭证 1.4 UserDetailsService 1.4.1 JdbcDaoImpl 1.4.2 InMemory
2018-01-24 16:09:55
453
原创 缓存方案
目录 目录 I 1 引言 1 1.1 文档概述 1 1.2 适用范围 1 1.3 定义 1 2 功能操作说明 1 2.1 缓存Cache 1 2.1.1 EHCache 1 2.1.2 memcache 2 2.1.3 Redis 3 2.1.4 现有 Cache 系统 5 2.1.5 期待的理想 Cache 系统 5 2.1.6
2017-01-09 14:10:53
767
原创 SecureCRT好用的设置
简要介绍:VanDyke CRT 和 VanDyke SecureCRT是最常用的终端仿真程序,简单的说就是windows下登录UNIX或Liunx服务器主机的软件。二者不同的是SecureCRT支持SSH∗(SSH1和SSH2)。本文主要介绍SecureCRT的使用方法和技巧。∗[概念解释]什么是SSH?SSH的英文全称是Secure Shell。传统的网络服务程序,如:ftp和telnet在本质
2016-08-31 17:30:14
8474
1
原创 让Eclipse 安装FindBugs插件
FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为Eclipse插件使用。文本将主要使用将 FindBugs作为 Eclipse插件。在安装成功后会在 eclipse中增加 FindBugs perspe
2016-08-18 19:18:25
366
原创 jstorm
Jstorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用 作为commiter和user,我还是非常看好它的应用前景,下面是在团队内的分享介绍,更多请参考https://github.com/alibaba/jstorm一、jstorm是什么 jstorm可以看作是storm的java
2015-11-19 13:51:30
522
原创 使用 VisualVM 进行性能分析及调优
概述开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、S
2015-09-07 15:04:14
477
原创 Maven部署构件至远程仓库
我们知道,Maven仓库包括本地仓库和远程仓库,而远程仓库又包括中央仓库,私服,Jboss仓库和Java.net仓库等。 私服,即私有的仓库服务器,它不仅可以降低中央仓库负荷,节省外网带宽,还可以加速Maven构建,自己部署构件等,从而高效地使用Maven。对于私服,我们可以使用仓库管理软件来创建自己的私有仓库服务器。目前网上流行的仓库管理软件有Apache的Achiva,JFrog的Artifa
2015-09-01 17:26:55
550
原创 Web Service测试工具小汇
Web Service测试工具小汇<div class="postText"> <div id="cnblogs_post_body"><p>最近一直在做WebService的测试,考虑到手工测试的困难,所以特意去寻找好的测试工具,现在做一个整理。</p>1、.NET WebService Studio这款工具出自微软内部,最大的优点是可视化很好,不用去看那些XML文件,WebServ
2015-07-28 09:55:29
815
原创 Java常用的几种缓存开源框架
OSCache OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 OSCache有以下特点: 缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。 拥有全面的API–OSCache API给你全面的程序来控制所有的OSCache特性。
2015-05-13 11:48:00
755
原创 基于redis分布式缓存实现(新浪微博案例)
第一:Redis 是什么?Redis是基于内存、可持久化的日志型、Key-Value数据库 高性能存储系统,并提供多种语言的API.第二:出现背景数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–
2015-05-13 11:42:36
646
原创 Get和Post区别
在B/S模式中,客户端与服务端交互的方法有:get和post。所有网站框架都是在此基础上发挥,因为它们是Http协议定义的与服务器交互的方法,只要用到http协议,都会使用这两种方法。Http还定义了put和delete方法。现总结区别如下:get是从服务器上获取数据,post是向服务器传送数据。在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。生成方式 ge
2015-05-07 16:16:11
700
原创 通过socket读取异地文件
通过socket读取异地文件,其实原理很简单,就是通过一个readfile和writefile命令去调用服务器端的程序,然后服务器返回文件内容。 废话少说,把代码贴出来,不得不说里面的有些内容是剽窃的。呵呵 Client端代码 Java代码 package org.playgod1984.swing.servertest; import java.io.*; import java
2015-03-26 21:22:15
612
原创 BS 页面刷新,图片不变的解决办法
给客户做了个图表报表,就是客户选了条件查询,画面上给出一个曲线图,我用的JFreeChart。生成图片没问题,可画面就是 不显示最新的图片。想来想去是IE缓存的事。IE为了节省时间,把图片给缓存了。所以每次取得都是缓存中的图片。后来在CSDN的一位同学的提问中,高手给了回答,虽然不太满足他的要求(画面图片一直刷新)。但是对我来说却是非常大的帮助。就一句话,就是加上一个时间戳,这样就保证了每次取最新的
2015-03-26 21:17:42
634
原创 MyEclipse使用经验总结
快捷键================================================================================编辑:Ctrl+Shift+L显示所有快捷键Ctrl+K 参照选中的词(Word)快速定位到下一个Ctrl+Shift+K参照选中的词(Word)快速定位到上一个Ctrl+O 快速显示OutLineCtrl+T 快速显示当
2015-03-26 09:57:44
2153
原创 理解RESTful架构
越来越多的人开始意识到,网站即软件,而且是一种新型的软件。 这种”互联网软件”采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。 网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如
2015-03-20 15:55:41
865
原创 网络编程的一些理解
网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识;有效端口:0~65535,其中0~1024系统使用或保留端口。java 中ip对象:InetAddress.import java.net.*;class IPDemo{ public static void main(String[] args) throws UnknownHostExceptio
2015-03-17 14:14:32
537
原创 反射技术的一些理解
反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。反射的好处:大大的增强了程序的扩展性。反射的基本步骤: 1、获得Class对象,就是获取到指定的名称的字节码文件对象。 2、实例化对象,获得类的属性、方法或构造函数。 3、访问属性、调用方法、调用构造函数创
2015-03-17 14:14:21
589
原创 集合框架的一些理解
集合框架:★★★★★,用于存储数据的容器。 特点: 1:对象封装数据,对象多了也需要存储。集合用于存储对象。 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合。因为集合是可变长度的。 集合和数组的区别: 1:数组是固定长度的;集合可变长度的。 2:数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 3:数组存储的元素必须是同一个数据类型;集合存
2015-03-17 10:49:15
989
原创 多线程的一些理解
多线程:★★★★ 进程:正在进行中的程序。其实进程就是一个应用程序运行时的内存分配空间。 线程:其实就是进程中一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区、自己的变量。 jvm在启动的时,首先有一个
2015-03-16 17:05:37
741
原创 单服务缓存redis工具类
import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * 单服务缓存redis工具类(需要额外jar包jedis) */public class RedisSingletonPool { private s
2015-03-16 10:36:45
702
原创 读取资源文件的工具类.
import java.util.ResourceBundle;import org.springframework.util.NumberUtils;/**读取资源文件的工具类. */public class ConfigUtil { /**读取资源文件中的键值信息. * 例如有键值名为a,其对应的值为整数类型,那么方法即为:readConfigForObject("a",In
2015-03-16 10:29:55
618
原创 AES加密工具类
import it.sauronsoftware.base64.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;/** DES 加密的一种,加密秘钥长度为16位. */public class AESC { private static final String ALGORITHM = "
2015-03-16 10:26:22
623
原创 md5加入指定的加密规则,进行加密
import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import org.springframework.util.StringUtils;public class MD5 { private
2015-03-16 10:22:53
940
nodejs在windows下的安装配置
2018-01-24
windows下安装rabbitmq的步骤详解
2018-01-24
windows下安装Erlang环境
2018-01-24
Redis在windows下安装过程
2018-01-24
Java KeyStore 文件查看工具,功能强大
2017-03-28
findbugs 插件
2016-08-18
com.sun.media.jai等文件转换jar
2015-08-12
Spring2.5-中文参考手册
2014-02-24
Log4j配置、使用
2014-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人