自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

babyZeng

个人博客

  • 博客(434)
  • 资源 (13)
  • 收藏
  • 关注

转载 java(优化29) redis持久化

在 Redis 执行“写”指令的过程中,内存数据一直会变化,所谓内存快照,指的就是 Redis 内存中数据在某一时刻的状态数据,好比时间定格在某一时刻。当我们拍照时,通过照片就能把某一时刻的瞬间画面完全记录下来。Redis 跟这个类似,就是把某一刻的数据以文件的形式拍下来,写到磁盘上,这个快照文件叫做 RDB 文件,RDB 就是 Redis Database 的缩写。

2023-05-11 21:19:40 391

转载 java面试(9)接口的幂等设计

幂等幂等的概念来自数学和计算机科学数学概念:幂等函数 f(x) = f (f(x)) ,如绝对值函数abs(-5) = abs(abs(-5))计算机科学:多次请求同同一资源与一次请求的影响是一致的。

2023-04-27 16:11:29 649

转载 多线程(2)线程池详解

如果线程池中无空闲线程,则将任务放入阻塞队列中,待线程池中出现空线程池,再执行阻塞队列中的任务。如果线程池中的workQueue阻塞队列满了,同时,线程池中的线程数已达到maximumPoolSize,并且没有空闲的线程,此时继续有任务提交到线程池,就需要采用某种策略来拒绝任务的执行。否则会执行传递的类的拒绝策略。在调用shutdownNow()方法关闭线程时,线程池不能接受新提交的任务,也不能继续处理阻塞队列中的任务,同时,还会中断正在执行的线程,使得正在执行的任务被中断,线程池立即关闭并抛出异常。

2023-04-27 14:30:42 264

转载 学习分布式事务(4)

本文介绍了分布式事务的一些基础理论,并对常用的分布式事务方案进行了讲解,在文章的后半部分主要给出了各种方案的常用场景。分布式事务本身就是一个技术难题,业务中具体使用哪种方案还是需要根据自身业务特点自行选择,每种方案在实际执行过程中需要考虑的点都非常多,复杂度较大,所以在非必要的情况下,分布式事务能不用就尽量不用。

2023-04-25 14:57:32 172

转载 springboot学习(五) springboot启动的三种方式

SpringBootApplication是一个组合注解,组合了其他相关的注解,点进去注解后我们可以看到,这个注解集成了以上2种启动方式的注解;在这里的 @ComponentScan() 注解有一堆东西,它的作用是 将主配置类所在包及其下面所有后代包的所有注解扫描。根据定义的扫描路径,将符合规则的类加载到spring容器中,比如在类中加入了以下注解 @Controller、@Service、@Mapper 、@Component、@Configuration 等等;运行main方法,后即可启动项目了。

2023-04-19 18:08:49 420

转载 springboot学习(四) springboot启动流程

这是一个扩展功能,callRunners(context, applicationArguments) 可以在启动完成后执行自定义的run方法;实现 ApplicationRunner 接口实现 CommandLineRunner 接口接下来我们验证一把,为了方便代码可读性,我把这2种方式都放在同一个类里面/*** 自定义run方法的2种方式*/@Component@Override。

2023-04-19 18:01:06 265

转载 Java并发工具CountDownLatch使用详解

的构造函数接收一个int类型的参数作为计数器,如果你想等待N个点完 成,这里就传入N。这里所说的N个 点,可以是N个线程,也可以是1个线程里的N个执行步骤。计数器参数count必须大于等于0,等于0的时候,调用await方法时不会 阻塞当前线程。当我们调用CountDownLatch的countDown()方法时,N就会减1,CountDownLatch的await()方法 会阻塞当前线程,直到N变成零。CountDownLatch 方法await() 阻塞当前线程,直到计数器为零为止;

2023-04-15 19:44:32 589

转载 java面试(9)HashMap为什么线程不安全

其中第六行代码是判断是否出现hash碰撞,假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的,当线程A执行完第六行代码后由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处插入了元素,完成了正常的插入,然后线程A获得时间片,由于之前已经进行了hash碰撞的判断,所有此时不会再进行判断,而是直接进行插入,这就导致了线程B插入的数据被线程A覆盖了,从而线程不安全。上轮next=3,e=3,执行下一次循环可以发现,3.next=null,所以此轮循环将会是最后一轮循环。

2023-04-14 14:31:38 1117

转载 架构师之路(20) 每秒100W请求,12306秒杀业务,架构如何优化?

对于秒杀系统,除了产品和业务上的折衷,架构设计上主要有两大优化方向:(1)尽量将请求拦截在系统上游;(2)读多写少用缓存;

2023-04-14 10:59:02 186

转载 高并发(1)常见的限流方式

限流

2022-07-22 09:10:24 312

转载 mysql原理(2)一文详解MySQL主从同步原理

mysql 主从同步

2022-07-21 20:04:36 533

转载 架构师之路(19)优雅的时间轮算法

xxl-job的时间轮算法

2022-07-21 15:19:07 1282

转载 java面试(8)电商系统定时自动关闭订单如何实现

电商平台自动关闭订单

2022-03-23 18:03:08 1455

转载 eclipse(优化11)building workspace太慢或者 js出错问题解决

1.js文件错误解决办法  右键项目->properties->Builders(注:JavaScript Validator也会引起 build workspace太慢)2.Eclipse 一直不停 building workspace完美解决:(1)、解决方法 方法1.修改eclipse启动文件 eclipse.ini 中添加启动参数参数: -vmargs -Xmx512m 方法2.关闭自动构建工作区: project -> build ...

2022-01-24 13:43:48 869

转载 mysql原理(1) mysql底层数据结构

一、前言1.1 索引结构及查找算法一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢? 其中就涉及到数据库(存储数据)以及查找算法。 先来看一下几种查找算法;目录查找:类似索引 遍历:暴力查找 二分:B+树的基础算法 键查找:hash查找能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。那么哪种数据结构适合做 MySql 数据库的存储结构呢?先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。磁盘的运转方式:速度 + 旋转,磁盘页

2021-06-29 20:00:24 5677 3

转载 架构师之路(18)讲解秒杀系统设计

1 秒杀场景秒杀场景 登陆12306进行火车票抢座 1599元购入飞天茅台 周董演唱会的门票 双十一秒杀活动 秒杀场景关注点 严格防止超卖:库存1000件卖了1020件,要杀个码农祭天了!防止超卖是秒杀系统设计最核心的部分。 防止黑产:防止不怀好意的羊毛党薅羊毛。 保证用户体验:高并发下,给用户提供友善的购物体验,尽可能支持比较高的QPS等等。 接下来就让我们按照关注点,不断细化秒杀场景。2 第1版-裸奔不加思考,上来直.

2021-06-26 17:00:49 291

转载 mysql性能优化(10) mysql查询查询技巧

1、查询 SQL 尽量不要使用 select *,而是 select 具体字段反例:select * from employee;推荐写法:select id,name from employee;推荐理由:只取需要的字段,节省资源、减少网络开销。 select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 limit 1假设现在有 employee 员工表,要找出一个名字叫 jay 的人:

2020-05-28 19:37:16 1522

转载 java(优化28) 优化if-else写法

优化方案 1:提前 return,去除不必要的 else如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。优化前:if(condition){ //doSomething }else{ return ; } 优化后:if(!condition){ ...

2020-03-11 18:33:55 5208 2

转载 架构师之路(17)如何设计出健壮的秒杀系统?

一、秒杀应该考虑哪些问题1.1 超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。1.2 高并发秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟,而一般公司都为了制造轰动效应,会以极低的价格来吸引用户,因此参与抢购的用户会...

2020-01-20 18:04:58 415

转载 架构师之路(16)定时任务的防重设计

一、起因金融、支付类公司,易产生资损的业务当属代发、转账、卡券权益兑换类等出金交易。每一位致力于此的架构师、开发工程师最担心重复代发、重复兑换的问题,尤其对于批量的出金类业务,由于设计不当导致的大量的资金、资产损失后果惨重。因此批处理任务的防重设计极为重要。二、定时任务演进2.1 古代以每5分钟执行一次批量代发交易为例,早期大部分系统都是单体应用,通常采用Spring+Cron表...

2020-01-20 16:25:47 709

转载 JAVA基础(44)Java锁Synchronized和Lock的区别

一、Synchronized和Lock对比图二、锁的种类锁的种类挺多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们这边重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。2.1 可重入锁如果锁具备可重入性,则称作为可重入锁。synchronized和ReentrantLock都是可重入锁,可重入性...

2020-01-08 17:53:14 276

转载 架构师之路(15)每秒30W次的点赞业务,怎么优化?

一、需求描述:实现类似新浪微博的点赞功能,高峰流量30WQPS,如何这样的服务呢?二、需求分析可以看到,这个业务的特点是:(1)吞吐量超高;(2)能够接受一定数据不一致;画外音:计数有微小不准确,不是大问题。三、设计思路有几点是最容易想到的:(1)肯定不能用数据库抗实时读写流量;(2)redis天然支持固化,可以用高可用redis集群来做固化存储;(3)也可以用MyS...

2020-01-02 13:47:41 1899 5

转载 java(优化27) 使用Stream API优化代码

前言:Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读一、流如何简化代码如果有一个需求,需要对数据库查询到的菜肴进行一个处理:筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字开始上代码:菜肴类:Dish.javapublic class D...

2019-12-31 15:39:45 291

转载 java面试(7)Synchronized的5种用法

1.同步普通用法这个也是我们用得最多的,只要涉及线程安全,上来就给方法来个同步锁。这种方法使用虽然最简单,但是只能作用在单例上面,如果不是单例,同步方法锁将失效。/** * 用在普通方法 */private synchronized void synchronizedMethod() { System.out.println("synchronizedMethod"); ...

2019-11-12 19:43:33 288

原创 mysql基础(10) MYSQL 组合索引使用(一)

MYSQL版本:一、建表SQLDROP TABLE IF EXISTS `index_test`;CREATE TABLE `index_test` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` varchar(32) DEFAULT '' COMMENT '姓名', `age` int(3...

2019-10-24 23:23:07 218

转载 高性能开发(4) Redis缓存哨兵模式配置

主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵(Sentinel)模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监...

2019-10-10 22:35:44 297

转载 JAVA基础(43)彻底理解cookie、session、token

发展史1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些...

2019-08-16 18:50:08 213

转载 mysql小结(1) MYSQL索引特性小结

1.Sql执行顺序(1) FROM 子句 组装来自不同数据源的数据(2)WHERE 子句 基于指定的条件对记录进行筛选(3) GROUP BY 子句 将数据划分为多个分组(4)使用聚合函数进行计算(5)使用HAVING子句筛选分组(6)计算所有的表达式(7)使用ORDER BY对结果集进行排序(8)select 获取相应列(9) limit截取结果集1.1 相应Case...

2019-08-15 20:20:02 193

转载 JAVA基础(42)浅谈一个Java类的生命周期

前言一个Java类从被加载到虚拟机内存开始,到卸载出内存为止,它经过了哪些步骤呢?这篇文章就来简述一下关于Java类生命周期相关的知识,其中每个生命周期的具体内容不会细讲,因为内容太多,我准备专门花一篇文章介绍类生命周期中的详细步骤。概述一个Java类从开始到结束整个生命周期会经历7个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Reso...

2019-08-15 15:36:29 270

转载 java(优化26) Lambda表达式(一)

1.Lambda表达式的由来案例:班导想了解一下各个同学的相关情况:1、来自苏州的有哪些同学上面的伪代码,是不是很简单,写一个方法,直接过滤出苏州地区的学生。问:班导又想知道来自北京的有哪些同学,那代码执行优化一下,可以动态传地区参数。2、地区参数化这样是不是就解决了,所有地区的查询问题,把地区作为一个参数。问:问题好像得到了解决,突然班导又要知道同学们的...

2019-08-15 14:48:13 222

转载 java面试(6)挑战10个最难回答的Java面试题

1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手的 Java 核心方面的面试问题。1.1 为什么 wait,notify 和 notifyAll 是在 Object 类中定义的而不是在 Thread 类中定义这是有名的 Java 面试...

2019-08-15 11:45:00 764

转载 架构师之路(14)RPC框架详解

1.RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。RPC 是一种技术思想而非一种规范或协议。2.常见 RPC 技术和框架有:应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。远程通信协议:RMI、Socket、...

2019-07-02 16:01:10 1207

转载 spring(基础24) Spring注解@Transactional配置事务

1、详细介绍事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另...

2019-06-17 14:30:36 305

转载 tomcat优化(五)tomcat调优

Tomcat 调优大致分为两大类:1.Tomcat 的自身调优:采用动静分离节约 Tomcat 的性能 禁用 AJP 连接器 调整 Tomcat 的线程池 调整 Tomcat 的连接器 修改 Tomcat 的运行模式2.JVM的调优:调优Jvm内存一、Tomcat 自身调优1.1采用动静分离静态资源如果让 Tomcat 处理的话 ,Tomcat 的性能会被损耗很多...

2019-05-27 11:18:23 775

转载 多线程(1)ThreadLocal用法及原理

前言:ThreadLocal和Synchonized都用于解决多线程并发访问。synchronized是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程访问。而ThreadLocal为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据的数据共享。而Synchronized却正好相反,它用于在多个线程间通信时可以获得数据共享。Syn...

2019-05-23 18:25:32 305

转载 java面试(5)Dubbo和SpringCloud微服务架构之间的区别

微服务主要的优势:1、降低复杂度将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身,通过使用缓存、DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明。2、可独立部署由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭...

2019-05-23 17:44:08 7047 1

转载 阿里面试题(1)redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

一、面试原题redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?二、面试官心里分析如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了? 可能有同学会遇到,在生产环境的 redis ...

2019-04-29 17:27:20 264

转载 nginx学习(1) nginx配置详解

1.定义nginx是一款轻量级服务器/反向代理服务器及电子邮件代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。2、静态HTTP服务器首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。静态http请求配置:server { listen 80; # 端口号 location ...

2019-04-29 17:03:49 266

转载 Spring Cloud学习(三) Spring Cloud原理与核心

一、定义Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进...

2019-04-26 11:06:58 217

原创 JAVA基础(41)java元注解之@Target、@Retention、@Documented详解

一、元注解元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:    1.@Target,    2.@Retention,    3.@Documented,    4.@Inherited这些类型和它们所支持的类在java.lang.annotatio...

2019-04-25 17:29:38 893

sqlite中文API

android开发的小型数据库之sqlite开发手册。

2014-09-01

appcompat_v7

eclipse创建Android项目时,自动生成的工程

2014-08-29

html5摄像头demo

html5标签video的简单运用,经测试,可以直接在笔记本上使用,成功调用摄像头;

2014-07-28

手机上选择相册DEMO

如何获取手机上的摄像头,选择相册中的图片。

2014-07-23

鼠标滑动图片放大

利用jquery框架实现的图片放大功能,鼠标移入图片自动放大,移开后返回原来的大小。

2014-05-09

图片放大镜

图片放大镜Demo,从别人那里借过来的,分享一下。

2014-05-09

easy ui 开发手册

jquery easyui 中文开发手册,先看文档后做开发。是个好习惯....

2014-04-23

Jquery Mobile中文手册

感觉还行,就上传一下,供大家分享一下吧。

2014-04-23

数据库隔离级别

数据库安全级别小别,加了锁更安全。MYSQL默认是有事物级别的

2013-07-03

js中日期的比较

新手中 不知道怎么在js中比较日期的话,可以参考参考

2013-06-03

JQuery1.4 API

中文版 大家都看得懂;无人不晓,无人不知

2013-05-22

mysql5.5版本

稳定的mysql数据库版本,使用起来方便,快捷

2012-10-09

jdk1.6的安装

百发百中jdk1.6的安装,适合初学java爱好者

2012-10-09

空空如也

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

TA关注的人

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