- 博客(54)
- 收藏
- 关注
原创 Expand of springCloud Config
1 background当我们遇到一个已经成型的框架的时候,作为微服务开发人员应该对涉及到的组件有一些了解,这样做并不限于包含自己的阅历,恰恰重点在与工作当中的灵活运用以及遇到问题时对解决方案的思考.另外基于动态配置全局化的高可用部署,需要做出基础依托.2 target面向全局化配置,达到组件依托的标准.最基础情况下洞悉热加载的思路,更深度理解配置中心管理策略和原理.3 S...
2019-07-25 15:41:35 232
原创 jdk默认random的安全替代方案
默认random的随机数生成方案经官方测试是不够随机的,并有安全暴力猜测的安全风险,对于安全较高,并且吞吐量要求较低的一般性金融类系统,推荐使用。实现源码如下:默认是SHA1的算法,我换成了稍稍优化的非阻塞算法PRNG,这也是官方推荐的SHA-1应该是不安全的,贴一篇博文有兴趣的可以看一下https://www.cnblogs.com/merlindu/p/6545588.htm...
2019-07-04 15:29:44 1803
原创 JVM部署脚本
为了方便jenkins部署,笔者总结了部署脚本如下(该脚本附有动态计算机器内核以及线程数对应相关物理内存匹配JVM较为优化的参数,使用G1垃圾收集器,生产GC日志收集,DUMP出OOM日志when OOM 等,此时已不具有年老代,需要注意。另外部署监控端口冲突策略,友好TAB提示窗口,或者定制化端口重用策略等)##!/bin/bash## Copyright for xxxxxx copo...
2019-07-02 10:31:01 358
原创 Component annotation @Autowired simulation
这里简单实现一下@Autowired的功能,用于学习,也用与源码感悟阶段性记录,后期有时间会完善整个体系。使用如下图 (因为只是实现注入容器部分还没有实现所以还需要配合spring_container,他的直接引用类需要在spring容器中存在,这也符合@Autowired注解的加载顺序)源码如下(ALS算法整合spring部分源码实现):package com.xxxxx.m...
2019-07-01 20:50:46 270
原创 java 过滤表情符(emoji)
public static String filterSupplement(String content) { StringBuilder sb = new StringBuilder(); for (char ch : content.toCharArray()) { if (!Character.isHighSurrogate(ch) && !Character.isLowSurrogate(ch)) { ..
2022-04-22 20:22:39 2515 2
原创 ConcurrentDiskUtil
public class ConcurrentDiskUtil { /** * get file content. * * @param path file path * @param charsetName charsetName * @return content * @throws IOException IOException */ public static String getFil..
2020-07-31 13:52:06 363
原创 中间件研发基础(集成springboot auto configurarion)-案例说明
概述: 本篇文章贯彻”脉络到细节“的指针,为了让大家通俗易懂,面向应用编程。 假如你现在想要开发一款AOP中间件,提供公众服务,需要进行动态配置扫描切面(pointcut),由客户端定制化处理切面实现方法级别的AOP代理,如何去考虑?这里有几个技术点我们需要考虑:1 无缝衔接springboot-auto-configuration2 由客户端定制化setup自...
2019-10-27 15:52:14 519
原创 基于LinuxWatchService实现定制化热加载
概述:一下代码整合springboot properties 属性实现热加载功能,在不重启项目的情况下修改application.properties 里边的属性达到修改后的属性整合进spring propertie enviroment 的效果@Configuration@ConditionalOnProperty(matchIfMissing = true,//Defau...
2019-10-26 17:21:57 379
原创 JVM之JIT编译实战与思考
概述:JIT(just in time )编译器又称即时编译器,用于在优化JAVA代码的执行速度,在入门第一讲中已经简单概述了JIT的相关内容,这里主要通过实战对比看看JIT的速度对比(这里主要是与lua脚本做对比,原因就是LUA脚本加上LUAJIT的运行速度比较接近C).优化流程:阶段1-内联内联是将较小方法的树合并或“内联”到其调用者的树中的过程。这样可以加速频繁执行的方法...
2019-10-23 21:53:04 291
转载 聊聊G1 GC的String Deduplication
本文主要研究一下G1 GC的String Deduplication-XX:+UseStringDeduplicationjdk8u20给G1 GC带来了String Deduplication特性来将相同的字符串指向同一份数据,来减少重复字符串的内存开销 该特性默认是关闭的,可以使用-XX:+UseStringDeduplication来开启(前提是使用-XX:+Use...
2019-10-21 17:09:40 468
转载 JVM实用参数(三)打印所有XX参数及值
http://ifeve.com/useful-jvm-flags-part-3-printing-all-xx-flags-and-their-values/
2019-10-21 15:16:19 140
原创 初识JAVA与JVM (JAVA篇第一节)
1JAVA的相关简单介绍 & HelloWorld程序介绍:Java是通用的计算机编程语言,它是并发的,基于类的,面向对象的,并且经过专门设计,以尽可能减少实现依赖。 它旨在让应用程序开发人员“一次编写,就可以在任何地方运行”(WORA),这意味着已编译的Java代码可以在支持Java的所有平台上运行,而无需重新编译。例如,您可以在UNIX上编写和编译Java程序,然...
2019-10-19 15:58:35 396
原创 事务的传播特性与内嵌事务(JAVA基础预热篇)
概述:有时候我们会遇到一个方法套另一个方法的情况如下:Java代码://@TransactionalmethodA(){ doSomeThingA();methodB();doSomeThingB();}//@TransactionalmethodB(){ ……}Java代码:main(){ methodA();}事务的传播特性指在事务方法...
2019-10-18 12:25:47 271
原创 网络攻防之DDOS(slowloris)
描述:DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用。比如一个停车场共有100车位,当100车位都停满后,再有车想要停进来,就必须等待已有的车先出去才行。如果已有的车一直不出去,那么停车场的入口就会排气长队,停车场的负荷过载,不能正常工作了,这种情况就是“拒绝服务”。 常...
2019-10-16 17:48:41 3510
原创 笔记记录(过滤器的单元测试之mocktio)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)public class CrossFilterTest extends BaseInterfaceTest { HttpServletRequest request = null; MockFilterChain filterChain = null; MockHttpSer...
2019-10-11 14:12:56 1026
原创 笔记记录之-(限流算法-lua版本)
以下算法均又openresty 框架提供以lua语言为基础:local limit_req = require "resty.limit.req"-- 漏桶算法-- 这里我们使用AB测试,-n访问1000次, -c并发100个 -- ab -n 1000 -c 100 http://121.42.155.213/-- 限制 ip 每秒只能调用 200 次 接口 ,超过部分进...
2019-10-11 14:02:18 388
原创 笔记记录(AOP之SPRINGBOOT业务服务路由)
需求:去掉侵入性代码,方法如参加上动态选举的注解又springboot-AOP切入方法,在方法执行前选举实现FileUploadService接口的指定子类作为参数传入处理不同业务代码:package com.kili.file.config.elect;import lombok.Getter;import lombok.Setter;import lomb...
2019-10-11 13:54:56 194
原创 日常笔记记录(大众点评爬虫-JAVA版)
package com.example.spider.dianping;import org.jsoup.Connection;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import j...
2019-10-11 13:46:38 517
原创 要点记录-shell_base(在系统中查询文件,根据文件内容)
概述: 因为之前跟进团队运维相关业务,发现一个相对有意思的命令,可能笔者关注的点比较偏,这里记录一下详情:命令如下:find . | / -type -f | xargs grep "txt"类似下面这样效果如上但是对与一个像笔者这么懒的人来说。这个命令太长了,感觉手里的窝窝头它突然就不香了有木有~对于grep 命令来说应该是有对...
2019-10-08 10:33:07 160
原创 实战“大数据”案例优化之路
描述:继ALS矩阵推荐,数据矩阵作为ALS项目的输入,输入之前需要进行数据校验,例如是否是数字,或者规定长度等。附上相关文档链接https://blog.csdn.net/qq_34597894/article/details/94406707详细描述如上都已说明。记录:看过上面链接,基本就明白了输入的格式如下:以上文件行数如下:大概300W的LINE数据...
2019-09-30 17:03:46 304
原创 curl-监测调用接口路由信息
描述:curl 为Unix 下的一款非常流行的网络工具,可进行网路监控,路由,http收包,发包,请求模拟,代理,SSL等一系列功能的强大工具。实施:本篇文章的重点就是监控路由信息,我们以接口的时间路由为例说明,在说之前我们先看一个图相信大家很容易看出来,没错就是浏览器的时间记录,上面有一个TTFB的字眼是什么?TTFB (Time to first byte):收到等待第...
2019-09-29 17:14:49 1797
原创 茶娱饭后(八)之搜索二分法的优化,插值排序算法
描述:插值排序算法是在二分法搜索算法程度上的优化,二分法大家都想必了解了,就是不断取中间的值mid ,判断VAL所在区间,随后吧之前mid作为前后阈值进而吧搜索范围缩小为原来的1/2.处理:这里的关键点就在如何快速定位中间值就是你需要找的值,那么引出一种优化的算法,插值排序,这种排序算法优化的点就在一开始吧需要找的VAL作为参数用某公式平衡,从而减少重复次数,前提是有序集合。...
2019-09-28 17:24:04 215
原创 之前JVM部署脚本的优化
之前端口输入是写死的,这边加入客户端输入#!/usr/bin/env bashif [ -e 'error.txt' ] then rm -rf error.txtfiread -p "Please input the port which in you mind , and matchs the information in you properties c...
2019-09-27 17:20:15 130
原创 shell脚本之ALS输入数据校验
if [ ![-e recommendations_new.txt ] ] then touch recommendations_new.txt figrep -E "^([0-9]{1,11})\,([0-9]{1,11})\,(.*)" recommendations.txt | while read line do echo $line >...
2019-09-27 17:14:45 177
原创 茶娱饭后(七)之迷宫回溯
迷宫问题:迷宫问题的常见解决思路就是递归回溯,当然这并不是最好的解决方案,后期会有不同的解决思路总结,例如动态规划,极限归纳等,那么我们对迷宫问题的理解就是在尝试总结归纳得出一条可行的方案,当然这只是最基本的思路,也是回溯算法入门比较好理解的思路。思路:我们接下来模拟一下二维矩阵迷宫问题描述思路,用二维数组表示迷宫其中 0 ,1,2,3都代表不同的意义,从最开始的左上角开始走,每一步...
2019-09-26 11:32:52 181
原创 茶娱饭后(六)之Josepfu(约瑟夫问题)环形链表实现
约瑟夫问题。统称处理环状排队出列逻辑,例如一圈小孩围成一个圈,任意指定哪一个小孩开始报数,报指定数之后指向的小孩退出,接下来退出小孩的下一个小孩开始报数,固定数目之后指向的小孩退出,依次循环,直到最后一个小孩。约瑟夫问题是一个经典的算法问题,其解决过程涉可能用到的数据结构有数组、链表,涉及的算法包括模拟、递归、递推、动态规划等等,因此非常适合做一道面试题。问题描述:首先n个候...
2019-09-24 11:22:45 265
原创 茶娱饭后(五)非线性结构之单链表原理实现
介绍:在同系列之前的文章中已经介绍过了线性结构和非线性结构,本篇文章我们就聊聊最基础的单链表在看本文章之前,需要对数据结构有一个大体的了解,知道链表的基本结构和使用。什么是单链表,又叫单方向链表,很明显的就是某一个节点之后之前或者之后一个索引,从前面遍历,就不能同时从后面遍历,说白了就是链表元素内部只有一个单方向位置指针实现:package org.pa...
2019-09-20 19:21:10 503 2
原创 Linux 下 mysql(备份工具)
介绍一款Linux下mysql定时备份的一款参考工具(MYSQLDUNMP)官方介绍如下:Themysqldumpclient utility performslogical backups, producing a set of SQL statements that can be executed to reproduce the original database object...
2019-09-20 13:53:37 587
原创 茶娱饭后(四)之稀疏数组
概念:所谓稀疏数组就是当数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以使用稀疏数组去压缩数据主要就是为了节省那些为零的值初始化了不用的内存,我们在来看一个图可以很明显的可以看到里面有很多空(0)值,这些值实际上是没有用到的哪买稀疏数组长什么样呢,我们在来看个图:从...
2019-09-19 14:53:54 156
原创 茶娱饭后(三):自己动手实现blockQueue的思考
开篇先解释一下队列:数据结构分为线性数据和非先性数据这里的线性数据结构指的是内存地址的线性存储,而下面要说的数组实现的队列就是线程地址存储结构中的一种,我们往下看队列为先进先出的数据结构(FIFO),很多场景下我们会用到例如排队买票,消息队列,固定窗口付款,等等类似”供过于求“的场景。我们这里以数组实现的案例,自己走一边流程,理解阻塞队列的奥秘笔者模仿JDK的ArrayBloc...
2019-09-18 18:00:25 182
原创 消息认证机制与应用剖析
需求:为了兼容JAVA团队和PHP团队的系统认证和为了降低JAVA网关域名暴露的风险,需要在外部请求进入JAVA系统时切入请求认证机制,校验请求的合法性。实施:借鉴RocketMQ(消息中间件)-acl(服务使用授权)模块流程梳理基本流程准备梳理如下1 PHP和java方规定好自己的密钥基础串,和salt(防止彩虹表爆破签名串)2 所有请求进JAVA由网关转发至Auth...
2019-09-17 21:18:13 366
原创 茶娱饭后(二)
之前看了一下梁飞的天猫并发手册,记录一下 low cost 的缓存的并发代码如下class Item { volatile Object value; Object get() {…} set(Object value) {…} }ConcurrentMap cache = new ConcurrentHashMap();item = cache.get(key);if (it...
2019-09-17 20:20:15 509
原创 茶娱饭后(一)
最近看了一下ascll码相关的文档为了,记录一下我的应用思路模拟一下APACHE COMMON 包下的upperCase方法,我自己写的方法如下: private static String lower_case(String var) { if ( var == null){ throw new NullPointerExceptio...
2019-09-17 14:19:52 1143
原创 JDK并发核心AQS浅析
初识AQS(AbstractQueuedSynchronizer),Provides a framework for implementing blocking locks and relatedsynchronizers (semaphores, events, etc) that rely on first-in-first-out (FIFO) wait queues.大意就是...
2019-08-29 19:27:40 144
原创 RocketMQ 《Deflater compress 》
最近在看RecketMQ源码,这里记录一下rocketMQ压缩方案如下:在调sendKernelImpl的时候调用了如下源码如下: ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(src.length); java.util.zip.Deflater ...
2019-08-09 15:46:53 295
原创 JVM标识符的记录
先引入一下我们team的一个需求处理https://note.youdao.com/ynoteshare1/index.html?id=a262b6b15e67b9423b207d0cee11c5c3&type=note其中用到了 public boolean internalElementValid(String ln) { boolean flag = f...
2019-07-29 11:09:55 160
原创 Project Integration for flyway_db(revision version)
以下简单从技术和应用的角度简单描述一下初步的使用!Why(我们为什么要使用它?)官方解释如下:当你的项目绑定不同的DB版本 ,不同的code分支切换不同的数据库版本的时候可能会遇到一下几个问题。What state is the database in on this machine?(当前机器里面的数据库是什么状态?)Has this script already be...
2019-07-22 11:24:54 113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人