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 ...
mysql原理(1) mysql底层数据结构 一、前言1.1 索引结构及查找算法一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢? 其中就涉及到数据库(存储数据)以及查找算法。 先来看一下几种查找算法;目录查找:类似索引 遍历:暴力查找 二分:B+树的基础算法 键查找:hash查找能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。那么哪种数据结构适合做 MySql 数据库的存储结构呢?先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。磁盘的运转方式:速度 + 旋转,磁盘页
架构师之路(18)讲解秒杀系统设计 1 秒杀场景秒杀场景 登陆12306进行火车票抢座 1599元购入飞天茅台 周董演唱会的门票 双十一秒杀活动 秒杀场景关注点 严格防止超卖:库存1000件卖了1020件,要杀个码农祭天了!防止超卖是秒杀系统设计最核心的部分。 防止黑产:防止不怀好意的羊毛党薅羊毛。 保证用户体验:高并发下,给用户提供友善的购物体验,尽可能支持比较高的QPS等等。 接下来就让我们按照关注点,不断细化秒杀场景。2 第1版-裸奔不加思考,上来直.
mysql性能优化(10) mysql查询查询技巧 1、查询 SQL 尽量不要使用 select *,而是 select 具体字段反例:select * from employee;推荐写法:select id,name from employee;推荐理由:只取需要的字段,节省资源、减少网络开销。 select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 limit 1假设现在有 employee 员工表,要找出一个名字叫 jay 的人:
java(优化28) 优化if-else写法 优化方案 1:提前 return,去除不必要的 else如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。优化前:if(condition){ //doSomething }else{ return ; } 优化后:if(!condition){ ...
架构师之路(17)如何设计出健壮的秒杀系统? 一、秒杀应该考虑哪些问题1.1 超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。1.2 高并发秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟,而一般公司都为了制造轰动效应,会以极低的价格来吸引用户,因此参与抢购的用户会...
架构师之路(16)定时任务的防重设计 一、起因金融、支付类公司,易产生资损的业务当属代发、转账、卡券权益兑换类等出金交易。每一位致力于此的架构师、开发工程师最担心重复代发、重复兑换的问题,尤其对于批量的出金类业务,由于设计不当导致的大量的资金、资产损失后果惨重。因此批处理任务的防重设计极为重要。二、定时任务演进2.1 古代以每5分钟执行一次批量代发交易为例,早期大部分系统都是单体应用,通常采用Spring+Cron表...
JAVA基础(44)Java锁Synchronized和Lock的区别 一、Synchronized和Lock对比图二、锁的种类锁的种类挺多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们这边重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。2.1 可重入锁如果锁具备可重入性,则称作为可重入锁。synchronized和ReentrantLock都是可重入锁,可重入性...
架构师之路(15)每秒30W次的点赞业务,怎么优化? 一、需求描述:实现类似新浪微博的点赞功能,高峰流量30WQPS,如何这样的服务呢?二、需求分析可以看到,这个业务的特点是:(1)吞吐量超高;(2)能够接受一定数据不一致;画外音:计数有微小不准确,不是大问题。三、设计思路有几点是最容易想到的:(1)肯定不能用数据库抗实时读写流量;(2)redis天然支持固化,可以用高可用redis集群来做固化存储;(3)也可以用MyS...
java(优化27) 使用Stream API优化代码 前言:Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读一、流如何简化代码如果有一个需求,需要对数据库查询到的菜肴进行一个处理:筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字开始上代码:菜肴类:Dish.javapublic class D...
java面试(7)Synchronized的5种用法 1.同步普通用法这个也是我们用得最多的,只要涉及线程安全,上来就给方法来个同步锁。这种方法使用虽然最简单,但是只能作用在单例上面,如果不是单例,同步方法锁将失效。/** * 用在普通方法 */private synchronized void synchronizedMethod() { System.out.println("synchronizedMethod"); ...
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...
高性能开发(4) Redis缓存哨兵模式配置 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵(Sentinel)模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监...
JAVA基础(43)彻底理解cookie、session、token 发展史1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些...
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...
JAVA基础(42)浅谈一个Java类的生命周期 前言一个Java类从被加载到虚拟机内存开始,到卸载出内存为止,它经过了哪些步骤呢?这篇文章就来简述一下关于Java类生命周期相关的知识,其中每个生命周期的具体内容不会细讲,因为内容太多,我准备专门花一篇文章介绍类生命周期中的详细步骤。概述一个Java类从开始到结束整个生命周期会经历7个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Reso...