10.sys
文章平均质量分 66
我是周洲
你必须非常努力 才能看起来毫不费力
展开
-
线程池原理
占位原创 2017-11-30 18:13:07 · 386 阅读 · 0 评论 -
MySQL常用函数总结
MySQL常用函数表数学函数作用ABS(x)返回x的绝对值CEIL(x),CEILING(x)返回大于或者等于x的最小整数FLOOR(x)返回小于或者等于x的最大整数RAND()返回0~1的随机数RAND(x)返回0~1的随机数,x值相同时返回的随机数相同SIGN(x)返回x的符号,x是负数、0、正数分别返回-1、0和1PI()返回圆周率TRUNCATE(x,y)返回数值x保留到小数点后y位的值R...原创 2018-04-03 17:03:01 · 449 阅读 · 3 评论 -
ThreadLocal保证线程安全的原理
1、线程安全问题 这里我们主要关注的是Servlet的线程安全,我们知道Servlet是用来处理用户http请求的。当web容器接收到一个对Servlet的请求时,web容器就会分配一个工作线程来处理请求,在执行时,如果又有一个请求进来,web同样会再分配一个线程去响应,而不管这个请求和上一个请求是不是对同一个Servlet的请求。Web容器出于效率和节省内存的考虑,在其中只会保存Servl...原创 2018-04-19 17:48:14 · 6483 阅读 · 4 评论 -
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK.
问题: springboot项目在运行package的时候,报错:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK解决: 从上图中可以看出, java编译环境未jre1.7.0_17, 也就是说并没有配置成jdk目录, 然后看Eclipse-->...原创 2018-04-25 16:29:08 · 478 阅读 · 4 评论 -
java并发编程之线程池的使用
需求场景: 我们是B系统,A系统发mq消息,我们从队列里面拿任务,需要有多个数据制备的请求,于是开不同的线程去请求,最后一起返回。所以用线程池可以提高任务处理的效率。一、线程池构造器的各个参数含义:corePoolSize:核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用...原创 2018-04-28 19:23:17 · 569 阅读 · 5 评论 -
Spring事务管理详解
事务的基本原理Spring事务的本质其实就是数据库对事务的支持,使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交,那在没有Spring帮我们管理事务之前,我们要怎么做。Connection conn = DriverManager.getConnection();try { conn.setAutoCommit(false); //将自...转载 2018-07-03 15:31:11 · 398 阅读 · 2 评论 -
下一个倒计时又在哪里
放纵之后的思考 看到自己在微博上的倒计时从1000,到777,到666到100..... 在煎熬中有所期待,害怕又期待她的到来。 看着后面的师弟师妹们同样的倒计时,自己又在想天啊 我的倒计时已经越界几百天 了。。。 而我却还没找到新的方向——没有紧张感,方向感,目标感的生活,真是过得很不踏实,影响心情。 ...原创 2018-07-29 20:45:08 · 509 阅读 · 8 评论 -
AES 前后端加密数据传输
问题 敏感信息明文传输,一旦被劫持,就会造成密码泄露。LocalStorage是前端开发经常用到了,将一些信息本地化存储到客户端硬盘中。但是如果有一些密码等信息明文存储,就会造成安全问题。解决: AES是一种对称加密的方法,前端加密,后端持密钥解密,就可以获取原来的内容。前端:AESutils.js:import CryptoJS from...原创 2018-12-13 14:28:42 · 2323 阅读 · 2 评论 -
spring任务调度quartz实战
需求: 三方接口偶尔不稳定,除了监控日志之外,我还需要一些基本信息快速定位问题。于是设计定时收取报警邮件,获取异常数据信息。采用了spring的任务调度框架quartz。基础概念:Job是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度...原创 2018-12-27 16:36:20 · 472 阅读 · 2 评论 -
SpringBoot 应用轻松实现百万数据重清算
前言: 之前有些历史数据统计复杂,没有想好计算规则,就先把数据json串存到库里。现在需要对json进行计算,求和,取最大等,这些可以用java8里面的stream进行计算,然后单独存到一个表里面。历史表里大概300万条数据,一次5000条数据循环计算。大概20多分钟可以解决这些数据。 需要注意的是Mybatis虽然对sql的长度不做限制(我需要批量插入),但是my...原创 2019-01-07 16:27:04 · 3532 阅读 · 2 评论 -
Java中锁的分类
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指...原创 2019-03-31 21:22:15 · 253 阅读 · 1 评论 -
Mysql 索引失效的情况总结
1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)2. 统计信息失效 需要重新搜集统计信息3. 索引本身失效 需要重建索引下面是一些不会使用到索引的原因 索引失效 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上。 4) 索引本...原创 2018-03-08 14:59:19 · 1529 阅读 · 2 评论 -
Java 解决Emoji表情过滤问题
问题: Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。原因:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。解决方案:1.将已经建好的表也转换成utf8mb4,这个方法不可行,有的时候就不灵了。2,写个工具类:过滤掉emoji表情符号public class EmojiFilter { ...原创 2018-02-26 14:29:57 · 22098 阅读 · 10 评论 -
ElasticSearch 入门实例
ELK由Elasticsearch、Logstash和Kibana三部分组件组成;Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据原创 2017-12-07 21:19:13 · 974 阅读 · 1 评论 -
Logstash 配置总结
#整个配置文件分为三部分:input,filter,output#参考这里的介绍 https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.htmlinput { #file可以多次使用,也可以只写一个file而设置它的path属性配置多个文件实现多文件监控 file { #type是给结果转载 2017-12-12 14:03:44 · 734 阅读 · 0 评论 -
eclipse使用generator插件问题汇总
问题一: 在Eclipse中使用Mybatis的自动生成对象的工具去生成Java对象时,选中配置文件,右键生成时出现 "Unexpected error while running MyBatis Generator. Exception getting JDBC Driver"原创 2017-11-24 14:09:20 · 761 阅读 · 1 评论 -
Alibaba fastjson 序列化与反序列化
fastjson在官网的定义号称最小最快 多态的json序列化工具。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。JSON这个类是fastjson API的入口,主要的功能都通过这个类提供。下面是这个类的重要几个方法介绍:序列化APIpackage com.aliba原创 2017-12-28 15:06:01 · 8356 阅读 · 2 评论 -
各种json工具类对比
fastJson的优势是在json转化为对象的时候比较快,而对象转化为json格式的字符串的时候性能上是没什么优势的,反而是最差的。结论:在做了初始化的情况下GSON的速度都是最快的。在使用GSON或jackJson做Json处理时最好有个全局的解析对象,不要每次调用的时候都去生成那样对性能的影响很大,另外经过测试,这里面没有线程安全问题。fastJson在json转化为对象的应用场景下性能比较突原创 2017-12-29 18:50:50 · 3191 阅读 · 3 评论 -
java 垃圾回收算法与常见的垃圾回收器
一、垃圾回收算法 在确定了哪些垃圾可以被回收后,垃圾收集器要做的事情就是开始进行垃圾回收,但是这里面涉及到一个问题是:如何高效地进行垃圾回收。由于Java虚拟机规范并没有对如何实现垃圾收集器做出明确的规定,因此各个厂商的虚拟机可以采用不同的方式来实现垃圾收集器,所以在此只讨论几种常见的垃圾收集算法的核心思想。1.Mark-Sweep(标记-清除)算法 这是最基础的垃圾回收原创 2018-01-23 16:56:14 · 797 阅读 · 3 评论 -
CMS和G1的对比分析
1、CMS收集器 CMS收集器是一种以获取最短回收停顿时间为目标的收集器。基于“标记-清除”算法实现,它的运作过程如下:1)初始标记 2)并发标记 3)重新标记 4)并发清除 初始标记、从新标记这两个步骤仍然需要“stop the world”,初始标记仅仅只是标记一下GC Roots能直接关联到的对象,熟读很快,并发标记阶段就是进行GC Roots Tracing,而重新标记阶段则是为了原创 2018-01-31 17:27:12 · 16843 阅读 · 3 评论 -
bump-the-pointer 和 TLABs 加速内存分配
HotSpot虚拟机使用了两种技术来加快内存分配。他们分别是是”bump-the-pointer“和“TLABs(Thread-Local Allocation Buffers)”。Bump-the-pointer技术跟踪在伊甸园空间创建的最后一个对象。这个对象会被放在伊甸园空间的顶部。如果之后再需要创建对象,只需要检查伊甸园空间是否有足够的剩余空间。如果有足够的空间,对象就会被创建在伊甸园空间,原创 2018-01-31 19:38:24 · 2278 阅读 · 4 评论 -
对G1垃圾回收器的理解
1:了解G1G1的第一篇paper(附录1)发表于2004年,在2012年才在jdk1.7u4中可用。oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。为何oracle要极力推荐G1呢,G1有哪些优点?首先,G1的设计原则就是简单可行的性能调优开发人员仅仅需要声明以下参数即可:-XX:+UseG1GC -Xmx32g -XX:MaxGCPauseMillis=200其中-X原创 2018-01-30 10:41:58 · 16433 阅读 · 5 评论 -
Git回滚代码到某个commit
回退命令:$ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前$ git reset --hard commit_id 退到/进到 指定commit的sha码...原创 2018-02-26 14:20:46 · 1347 阅读 · 5 评论 -
MySQL引擎:MyIsam和Innodb的区别
InnoDB:定义:InnoDB是一个事务型的存储引擎,有行级锁定和外键约束。Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTE...原创 2019-04-18 20:18:33 · 1005 阅读 · 1 评论