自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 【scala】无锁多线程打印1->100

import java.util.concurrent.atomic.AtomicIntegerimport scala.concurrent.{ExecutionContext, Future}object ThreadTest { def main(args: Array[String]): Unit = { val i = new AtomicInteger(1) def createF(threadContext: Int)(im

2020-05-11 10:38:51 1166

原创 【性能优化】记录一次YounGC峰值优化

服务环境CPU 24核服务内存 16G问题复盘youngGC时延增大直到触发mixedGC后恢复正常如下具体GC日志如下Before MixedGC2020-01-12T19:37:30.333+0800: 192703.245: [SoftReference, 0 refs, 0.0000815 secs]2020-01-12T19:37:30.333+0800: 1927...

2020-03-05 19:21:50 871

原创 【Scala笔记——道】给你的Future一个Promise --最浪漫的并发模型(二)

这篇一直想不到如何动笔,这段时间刚好做了一些性能优化的工作,而后还有更多.遂提笔权当记录.迟到的Promise“五年,凭此戒娶xxx”五年,一个人生命中的1/16.没有人会傻到五年一直在等待一个约定.一个人要生存,首先要学会呼吸,吃饭,穿衣,行走.五年之后也许他/她已忘了这个约定,但时间不会为这个承诺停留哪怕停留一秒钟.scala在不必要的时候不要使用Await进行等待,除非你想 真的...

2019-07-19 17:03:35 785

原创 【性能优化】记录一次性能瓶颈分析过程

近期接手了一个模型服务性能瓶颈分析的工作,有些许收获,记录如下。QPS 分析该服务之前未做过吞吐量分析,因此首先对该模型做压测,分析服务具体吞吐量。笔者这里选用jmeter做压测分析。设置http请求30种,覆盖全部模型结果,整体测试实际30s。60Request/s * 30s70Request/s * 30s80Per/s * 30s从压测结果来看,请求量=70次/s的时候,服...

2019-07-04 13:21:22 720 1

原创 JDK 12主要特性一览

JDK12 在2019/03/19终于与大家见面了,不同于JDK11,JDK12并不是一个LTS版本。作为一个中间版本,JDK12版本特性增加较少。2017年宣布的加速发布节奏要求每六个月发布一次功能,每季度更新一次,每三年发布一次长期支持(LTS)更新版本(或每六个版本一次)。下一个LTS版本将是Java 17,计划于2021年9月发布。尽管 Java 11 才发布不久,但距离 Java 12...

2019-05-31 23:53:41 1244 1

原创 【Scala笔记——道】Java -> Scala 快速上手总结(一)

Java -> Scala总结最近在重构代码,将Java代码向Scala代码迁移.总结了一些需要注意的地方.这也是从javaer -> scalaer经常会遇到的问题,总结如下.在Java代码中主要是OO的思想,这与Scala FP思想差异较大.最主要的体现便是在方法,在OO中所有的方法都是对象拥有的方法.例如public class Animal { public Loca...

2019-04-30 13:24:19 425

原创 【Scala笔记——道】给你的Future一个Promise --最浪漫的并发模型(一)

Future曾经,她在他的臂弯中,星空下,问他:“会不会一直对我这么好”, “你会不会在五年后来娶我”…Future 和 PromiseFuture 代表未来。未来总会来到,但这个未来是成功或是失败我们不得而之。抽象为核心三个方法 `onComplete’, ’onSuccess’, ‘onFailure’。其中 onSuccess和 onFailure是 onComplete的简化。"...

2019-03-19 12:20:49 826

原创 【Scala笔记——问】Scala Future思考题几则

Scala Future问题最近想到的几个问题,罗列在此.如果有答案的小伙伴,欢迎私信~~operate为一个普通函数,判断以下各种实现是否并发执行,为什么?1 for { a <- Future(operateA(...)) b <- Future(operateB(...)) } yield (...) 2val a = Futu...

2019-03-12 10:23:12 342

原创 百度红包架构分析与推测

百度红包架构分析2019年百度春晚期间请求量总计在209亿次,其中峰值主要集中在春晚期间四次互动红包活动,预估四次请求总量在160亿次,单次请求量在40亿次。请求量分布状况假设以标准正态分布计算,超时时间按照3s计算,而整个互动时间大约在2分钟,瞬时最高QPS 1.97 亿次。CDN加速百度此次红包的主要形式为应用内直接组件+h5页面+微信小程序。对于cdn要求比较高的地方在于h5页面资源...

2019-02-07 00:42:46 3551

原创 【Scala笔记——道】Scala 逆变与协变

Function中的逆变与协变实际上在方法中调用List(1, 2, 3, 4) map (i => i + 3)相当于val f: Int => Int = new Function1[Int,Int] {def apply(i: Int): Int = i + 3}List(1, 2, 3, 4) map (f)// 结果: List(4, 5, 6, 7)f...

2018-10-08 15:15:34 465

原创 JDK 11主要特性一览

JDK 11主要特性一览jdk11即将在9月25号发布正式版。确定的新特性包括以下17个181 嵌套类可见性控制309 动态文件常量315 改进 Aarch64 Intrinsics318 Epsilon–一个无操作的垃圾收集器320 删除 Java EE 和 CORBA 模块321 HttpClient323 用于 Lambda 参数的局部变量语法324 Curve25519...

2018-09-21 21:18:49 20577 1

原创 【Leetcode】存在重复

最近看到Leecode上一道重复检测问题,中间尝试了几种实现方案记录如下。 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 ...

2018-08-07 14:27:07 413

原创 【Scala笔记——道】Scala 隐式Implicit

Scala隐式 应用执行上下文功能控制限定可用实例隐式证据类型擦除改善报错虚类型执行上下文通用的上下文信息通过隐式默认实现,降低耦合编写事务、数据库连接、线程池以及用户会话时隐式参数上下文也同样适合使用。使用方法参数能组合行为,而将方法参数设置为隐式参数能够使 API 变得更加简洁。// 导入了可供编译器使用的全局默认值import scala.c...

2018-07-26 21:40:52 1316

原创 【Scala笔记——道】Scala 循环遍历 for详解

Scala for循环基本使用增强型for循环scala基本for循环如下,代码将names遍历并打印包含的名字。val names = Seq("Kitty", "Tom", "Luke", "Kit")for (name <- names) { println(name)}相较Java,语法层面

2018-06-22 22:11:23 18588 2

翻译 【Java笔记——术】ASM 反射库介绍

实用范围,读、写,转换和分析类。 不用于类实例化。ASM 库提供两种API 生成转化已编译的class文件。:core API 基于 event 表示 class。 基于 event 模式 class将被表示为一个events序列,每一个event都代表了class中的一个元素,例如header, filed, 方法声明, 方法调用等等。基于event 的API 定义了一个可能发生的e...

2018-06-04 20:18:52 1182

原创 【Scala笔记——术】Scala集合类与Java集合类转化

scala提供了强大的类型转换功能,从而可以简单的完成java实例向scala实例的转换。下面总结了常用的几种类型转换方式import java.lang.{Integer => JInt}import java.util.{ArrayList => JArrayList, List => JList}import scala.collection.JavaConver...

2018-04-19 12:02:05 929

原创 【Scala笔记——道】Scala Predef

Scala Predef好奇的开始最近碰到了一段代码,执行结果与想的不同,因此想通过反编译看一下究竟是如何运行的scala编译和java的编译很类似,java中我们使用javac编译,scala中使用scalac编译。 编译 生成对应的 class 文件,直接可以使用 javap 反编译 反编译结果如下public final class Test$ { ......

2018-03-22 18:55:11 714

原创 【Scala笔记——道】Scala Tree Fold深度优先遍历详解

Tree 定义简化定义Scala Tree结构,包含两个部分: Branch和Tree。为了简化数据结构,Branch只包含 Tree类型的 左节点 和 右节点, Leaf包含具体 Valuesealed trait Tree[+A]case class Leaf[A](value: A) extends Tree[A]case class Branch[A](left: Tre...

2018-03-12 21:39:03 1099

原创 【Scala笔记——道】Scala List 遍历 foldLeft / foldRight详解

HOF foldLeft / foldRightfoldLeft 和 foldRight 都是对于 List 遍历的 高阶函数。是对列表遍历过程中进行函数操作的高阶函数抽象。List 遍历假设有两个方法如下 // 求和 def sum(ints: List[Int]): Int = ints match { case Nil => 0 ...

2018-03-07 17:25:30 2621

原创 【Bug历练手册】Scala PlayFramework com.typesafe.play#sbt-plugin Not Fount

创建Playframework项目时 出现这个问题的时候,以为jar包导入问题,从sbt plugin repository下载了对应的jar包装载到sbt本地库。发现又出现加载其他Jar包出问题。定位到问题 repository有问题,参考stack 配置plugin.sbt如下resolvers += "Typesafe repository" at "http://repo.t...

2018-03-02 20:10:18 1235

转载 【JAVA笔记——道】Java 8的default方法能做什么?不能做什么?

什么是default方法?Java 8发布以后,可以给接口添加新方法,但是,接口仍然可以和它的实现类保持兼容。这非常重要,因为你开发的类库可能正在被多个开发者广泛的使用着。而Java 8之前,在类库中发布了一个接口以后,如果在接口中添加一个新方法,那些实现了这个接口的应用使用新版本的接口就会有崩溃的危险。有了Java 8,是不是就没有这种危险了?答案是否定的。给接口添加default方

2018-01-30 15:39:50 337

原创 【深入剖析Tomcat笔记】第六篇 Tomcat Lifecycle

简述上一篇中介绍了Tomcat四大容器,Enginee、Host、Context和Wrapper以及如何通过TaskPipeline对四大容器进行功能性扩展。在 第五篇 Tomcat Container和PipeliningTasks 中我们介绍了如何通过Pipeline Task去为Enginee添加一些共用的方法,但这样还存在一些问题,我们很难对Container实例进行管理。Composite

2017-09-04 18:37:38 760

原创 【Bug历练手册】Lomok StackOverflowError

解决方式Lomok 在会自动生成相关代码,但由于Lomok并没有判断循环引用的机制,因此在直接生成相互引用对象的toString方法时,toString方法相互引用。造成循环引用问题。 解决方案可以加 @ToString(exclude = {“忽略属性名”})分析最近开始用Lomok,发现这工具的确能提高不少开发效率,但有点荒废了苦练了的快捷键。 @Data相当于集成 ...

2017-08-29 14:21:59 719

原创 【Bug历练手册】Frame must be terminated with a null octet

stomp body 中文解析 问题Spring 里边对于Stomp 通信解析通过StompEncoder实现,核心代码如下 public byte[] encode(Map<String, Object> headers, byte[] payload) { Assert.notNull(headers, "'headers' is required...

2017-08-22 17:21:14 1574 1

原创 【深入剖析Tomcat笔记】第五篇 Tomcat Container 与 Pipelining Tasks

简述上一篇中介绍了Tomcat四大容器,Enginee、Host、Context和Wrapper以及如何通过TaskPipeline对四大容器进行功能性扩展。在 第五篇 Tomcat Container和PipeliningTasks 中我们介绍了如何通过Pipeline Task去为Enginee添加一些共用的方法,但这样还存在一些问题,我们很难对Container实例进行管理。

2017-08-01 10:28:18 913

原创 【技术选型-BI】BI技术选型

BI技术选型

2017-06-15 23:00:54 1250

原创 【网络安全】登录问题(一)Session/Cookie源码分析

从身份验证开始说起。知我们在上BBS的时候,有些帖子是有限制的,只有允许身份的人才能观看,那么如果去校验你的身份呢?我们想到了一个办法,让用户有一个唯一的身份证明。但只有身份证明是不够的,你的身份证明完全可以伪造啊。就像使用ATM机,如果只通过银行卡做身份证明就可以取钱一样,你的钱很轻易的就被取走了。这时我们想到了一个办法“密码”。通过密码来确定你的使用是否伪造。从上边的例子来看,我们可以想到,一个

2017-05-26 19:14:41 801

原创 【PostgREST 基本教程(一)】 PostgREST快速搭建

PostgREST 基本教程PostgREST是一个可以直接将你的PostgreSQL数据库直接提供RESTful API 的稳定WEB服务。数据库结构和约束决定API的端点和操作。使用PostgREST可以替代手动的CRUD开发。自定义的API服务经常遇到很多问题。人工编写业务逻辑经常会导致重复,忽略或者绕过数据库数据结构。对象关系映射这种抽象会导致代码慢。PostgREST的思想是:数据为本。P

2017-05-22 20:22:39 4290

原创 【深入剖析Tomcat笔记】第四篇 默认连接器

回顾前一篇中,我们将ServerSocket拆分为 Connector、 Processor、 Request、 Response 四个部分。实现了对于简单ServerSocket主要功能拆分。Connector负责ServerSocket创建和socket接入,Processor负责请求解析,Request和Resposne分别对应输入输出。此篇通过研究Tomcat 4中 默认连接器,进一步优化服

2017-04-10 23:01:45 2350 7

原创 【深入剖析Tomcat笔记】第三篇 基本容器模型

简单回顾一下上文,上文中我们通过ServerSocket和Socket类实现基本的Socket连接。此篇我们将DemoServer进行重构。上篇最后,我们发现了一些问题,但这些问题无法进行整体性解决,因此我们将项目进行更为合理的拆分成独立的模块。

2017-02-24 18:33:43 1446

原创 【深入剖析Tomcat笔记】第二篇 ServerSocket模型

Socket 网络模型结构不同网络间的主机要进行消息交互时,这时我们就需要用到socket了,socket基于TCP/IP协议。图片来自《TPC/IP协议详解卷一》 上图是TCP/IP四层网络模型,而socket所处位置在于 Socket主要是对TCP/IP基本网络结构的抽象整合,socket整体对运输层、网络层和链路层进行封装,使得基于Socket开发不必关心下层实现,并且开发者可以基于自己需

2017-01-11 17:55:07 2511

原创 【深入剖析Tomcat笔记】第一篇 基础知识储备

基础知识储备最近突然在想,做了这么久的WEB相关,像tomcat、apache这些服务器究竟是什么东西,恰好碰到《How Tomcat Works》(中文版《深入剖析Tomcat》),阅读这本书时的感觉就像雾霾一周的北京终于放晴。作者一步一步讲解了如何自己写一个ServerContainer,从最基本的ServerSocket + Socket到后边的复杂模型,剥丝抽茧的将ServerContain

2016-12-28 15:23:06 1064 1

原创 【Log历练手册】Spring事务管理不能提交异常

Bug记录使用@Transactional之后,事务不能提交,费了一番功夫发现是@Transactional(value=”“)这条信息配错,事务管理器没有正常启用xml配置文件配置文件如下<bean id="transactionManager4Demo" class="org.springframework.jdbc.datasource.DataSourceTransactionMan

2016-11-29 22:20:42 848

转载 【网络安全】如何使用OpenSSL工具生成根证书与应用证书

如何使用OpenSSL工具生成根证书与应用证书一、步骤简记// 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)openssl req -new -x509 -days 3650 -keyout CARoot1024.key -out CARoot1024.crt// 为顶级CA的私钥文件去除保护口令openssl rsa -in CARoot1024.key

2016-10-13 11:43:27 1136

原创 【JAVA笔记——器】Spring Aop 实现Log日志系统——基本实现

Log日志系统可以说是项目开发中最基本的模块之一,在未使用Spring Aop之前,日志记录都是采用手工配置。由于开发人员的代码风格不统一,经常会导致日志风格混乱,难以阅读,甚至日志遗漏情况。 通过Aop可以实现日志系统的自动配置,减少人工配置的错误风险,同时提高日志系统的健壮性。基本配置xmlns:context=”http://www.springframework.org/schema/co

2016-09-07 23:10:36 1891

翻译 【JAVA笔记——器】Spring面向切面编程 Aspect Oriented Programming with Spring

并非完全按照Reference翻译,有删改 原文 Aspect Oriented Programming with SpringAOP术语通知Advice 切面的工作为通知 SPRING 五种通知 before after after-returning after-throwing around连接点 Joinpoint 连接点是执行过程中能够插入切面的一个点切点 Pointcut 并

2016-08-24 11:20:55 987

原创 【JAVA笔记——器】Spring MVC + HATEOAS RestFul快速搭建

Spring实现RestFul快速搭建的实例,适合中高级向,不懂可以私信

2016-08-11 15:14:14 846

原创 【JAVA笔记——器】MyBatis映射以及DAO文件生成工具源码

写了一个工具类,根据Entity自动生成Mapper文件、Dao文件和Impl文件现在只支持Maven_Web项目格式LazyUtils utils = new LazyUtils (Entity.clas)Entity Class需要4层目录结构 例如 com.cunchen.base.entity 对应 com.cunchen.子项目名.实体包生成生成Dao及DaoImpl如下/src/m

2016-07-05 22:53:53 792

原创 【JAVA源码分析——Java.lang】包装类源码分析

包装类分析Java 基本类型包括八种:byte、short、int、long、float、double、char、booleanNumber类型其中数字类型包括: 整数型: byte : -127~128short : -32767~32768int : 0x80000000~0x7ffffffflong : 0x8000000000000000L~0x7fffffffffffffffL浮点型:

2016-06-25 16:30:06 2876

原创 【JAVA源码分析——Java.lang】String源码分析

String类型String 接口分析String类型所实现的接口public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequenceSerializable接口和Comparable接口大家都比较熟悉,一个是序列化接口,一个是比较able类接口,分别对应//序列化标记号privat

2016-06-23 10:39:15 1171

空空如也

空空如也

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

TA关注的人

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