首页
学习
活动
专区
工具
TVP
发布

令仔很忙

专栏作者
152
文章
194629
阅读量
27
订阅数
多线程----Immutable VS Mutable (可变与不可变)
Immutable是什么意思?不变的、不发生改变的意思。在JDK中有很多的类被设计成不可变的,举个大家经常用到的类java.lang.String,String类被设计成不可变。String所表示的字符串的内容绝对不会发生变化。因此,在多线程的情况下,String类无需进行互斥处理,不用给方法进行synchronized或者lock等操作,进行上锁、争抢锁、解锁等流程也是有一定性能损耗的。因此,若能合理的利用Immutable,一定对性能的提升有很大帮助。
令仔很忙
2019-02-25
5820
理解Redis的内存
Redis的所有的数据都是存在了内存中的,虽然现在内存越来越便宜,但是跟平时电脑上装的硬盘相比,硬盘的价格就是个渣渣。内存还是非常宝贵的,就拿我的一台腾讯云的服务器来说,目前是1核2G的,但是要想升级到4G,就得需要多掏1000大洋。这些钱感觉我都可以买个1T的硬盘了。。。这就是差距。so,如何合理高效的利用Redis内存就变得非常的重要了。首先我们应该知道Redis的内存主要消耗在什么地方,其次是如何管理内存,最后才是怎么做Redis的内存优化。这样才能用更少的内存,存储更多的数据,降低成本。
令仔很忙
2019-02-25
1.1K0
【JVM调优系列】----NewRatio与SurvivorRatio
-XX:NewRatio 新生代(Eden + 2*S)与老年代(不包括永久区)的比值 4 表示新生代 :老年代 = 1:4 ,意思是老年代占 4/5 -XX:SurvivorRatio 2个S
令仔很忙
2018-09-14
4.2K0
令仔学MySql系列(一)----explain详解
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。下面是一个例子:
令仔很忙
2018-09-14
8690
令仔代码收藏系列(二)----BASE64编码
package com.flight.inter.otaadapter.commons.util; import org.apache.commons.codec.binary.Base64; import java.io.UnsupportedEncodingException; public class Base64Util { /** * 将 strVal进行 BASE64 编码 * * @param noneBase64Str *
令仔很忙
2018-09-14
3290
令仔代码收藏系列(一)----Java压缩与解压缩
package com.flight.inter.otaadapter.manage; import com.flight.inter.otaadapter.commons.util.Base64Util; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.clien
令仔很忙
2018-09-14
5280
令仔学Redis(二)----单线程架构
Redis是一种基于键值对(key-value)的NoSQL数据库,包含多种数据结构。官网上给出的数字是读写性能可以达到10万/秒,可见速度之快。
令仔很忙
2018-09-14
3930
令仔学Redis(一)----浅析Redis存储数据时格式的设计
之前接触的一个业务,数据量的话现在在数据库中存了有将近400W的数据,在搜索的时候得到的这些数据会放入达到异步队列中,然后单独开一个线程来进行双写,写缓存,然后写数据库。Redis中的存储格式是Hash存储的,数据库的存储格式类似Hash,当时设计存储方式的时候是有些问题的,在Redis中存储的时候,数据库中有多少条数据,Redis中就会有多少个Key值。也就是说Redis中存储的一级Key有400W个,这样的存储格式会造成Redis的查询变慢,具体的原因下面解释。
令仔很忙
2018-09-14
5890
令仔学多线程系列(三)----每天定点执行指定任务
需要注意的一个地方,就是在AirChangeTimerManage 类中,我是每天4点定时执行任务,但是如果我在4点之后进行了重启或者发布,启动之后这个任务就会立即启动执行,这样并不是我想要的,为了,避免这种情况发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
令仔很忙
2018-09-14
4350
令仔学多线程系列(二)----自定义Queue队列
之前做了一个新的需求,需要从每一次search请求返回中获取相关的数据,然后把这些获取到的数据做异步处理,写入缓存并同步到数据库中。如何做异步在这就想到了用队列的方式来实现,一开始是用的BlockingQueue,一遍从队尾push,另一边从队首取数据。 但是在这个地方用BlockingQueue的时候就会有点问题,首先是如果不给这个队列设置大小的话,时间长了很可能会吧内存给搞瘫了,但是如果给BlockingQueue设置了大小的话(ps:当时设置的是2000),我们的主流程是search,其他的业务功能的开发不能够影响到search的运行(PS:每个平台对search返回的时间都有限制的),当队列满了之后,再多来的任务就会被挂起,一直等到队列中有空余位置才会被执行。这样的话我们整个的流程就会Down掉。 所以就自己封装了一个Queue,当队列满了之后,多余的数据就会被扔掉,当然不是所有的业务场景都适合使用。仅供参考借鉴。
令仔很忙
2018-09-14
3390
观察者模式和Spring的结合
这周给分了一个任务,就是对查询回来的数据进行各种各样的过滤,有七种不同的过滤条件。过滤条件是在数据库中存着的。在我们项目中有一个热发,就是定时的从数据库中把数据取出来进行分类保存到Property中或者Map中。所以一开始想的一个笨的方法就是把七种不同的过滤条件热发到七个不同的Map中去。然后再定义一个过滤的类,所有的查询回来的数据都要经过这个类的处理。 后来想了想,这样做的话,不利于扩展,要是后期还有其他的过滤的话,耦合性太强了。所以这个时候就想到了设计模式中的观察者模式。应用在这个场景下再合适不过了。定义了七个Filter,当热发执行之后,通知所有的观察者来我这拿最新的数据。而且当新添一个新的过滤的过滤条件的话,只需要新加一个过滤的类,并在spring的监听器中配置上该类就可以了,其实这就实现了对内修改关闭,对外扩展。 下面试具体的代码实现。先贴一张图,很经典。
令仔很忙
2018-09-14
4480
【JVM调优】----内存溢出和内存泄漏
项目的开发,涉及到了服务器的运维,先来介绍下JVM相关的知识,也方便后期的使用。今天主要是说一说内存溢出和内存泄漏两件事。
令仔很忙
2018-09-14
9970
SpringIOC--初始化源码解析
在上一篇 Spring从入门到精通(一)—-IoC(控制反转) 中,详细的介绍了IOC的基本原理,本篇博客就不再赘述;这次主要是从源码的角度来给大家分享SpringIOC的初始化过程。深入的了解其原理。
令仔很忙
2018-09-14
3570
集合详解(四)----HashSet和HashMap源码剖析(JDK1.7)
当初始化一个HashSet的时候,HashSet的底层实现其实是HashMap:
令仔很忙
2018-09-14
5690
深入理解HashMap(及hash函数的真正巧妙之处)
原文地址:http://www.iteye.com/topic/539465 Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。
令仔很忙
2018-09-14
6220
SpringMVC上传、解析Excel
即上述方法中readExcel.getExcelInfo(name ,file);语句所调用的方法以及其他相关的方法 Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。不过这首先得判断Excel的版本而选择不同的Workbook的方式(2003版本对应的是HSSFWorkbook,2007版本及以上对应的是XSSFWorkbook)。此外,一般来说先将在客户端用户上传的文件拷贝一份至服务器的本地磁盘中,然后再从这个拷贝文件中进行读取,这样就避免了因客户端的网络异常或其他状况而在读取时造成的数据流失或损坏的情况。
令仔很忙
2018-09-14
1.6K0
新手学Linux(七)----定时copy Tomcat日志
系统运行后,一些重要的数据是需要做好备份的,如果每天让一个人定时去备份tomcat下的日志,肯定会很麻烦的,服务器少了还好说,如果项目做大,服务器数量增加,难道要派很多人来定时的干这件事情么?肯定是不能这么干的。这样对于人力资源的利用太浪费了。那怎么办呢?我们把这件事情交给服务器自己办。
令仔很忙
2018-09-14
1.2K0
OutOfMemoryError异常----Java堆溢出
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下面都叫OOM)异常的肯能,下面就通过一些实例来验证异常发生的场景。 在下面举的例子中,在注释中会设定一些虚拟机的参数,在”VM Args”后边,如果你是用控制台命令来执行的程序,直接把这些参数放到Java命令之后就行,如果用的开发工具,Eclipse IDE,才Debug/Run页签中设置。
令仔很忙
2018-09-14
5830
Solr--全文索引原理
在一些大型的门户网站和电商网站中,都有自己的站内搜索,但是使用传统的数据库查询方式已经无法满足一些高级的搜索要求,比如说:搜索速度要快、搜索结果要按照相关度排序,搜索的内容格式不固定,这些都需要使用全文实现搜索功能。
令仔很忙
2018-09-14
2.1K0
【JVM调优(一)】----JAVA内存模型抽象结构
线程之间的通信机制有两种:共享内存和消息传递。 Java线程之间的通信由Java内存模型(JMM)控制,JMM控制一个线程对共享变量的写入什么时候对另一个线程可见。下图是JMM的抽象结构:
令仔很忙
2018-09-14
5110
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档