自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (16)
  • 收藏
  • 关注

原创 LeetCode 热题 HOT 100(P31~P40)

滑动窗口的思路,右游标可以探查到能满足条件的位置,关键的是左游标怎么确定合适的位置,因为左游标前面可能刚好是不在t中的字母。还有一种是纯用栈的方式,这样就需要维护一个cur 指针,同时判断cur 和栈的情况,在cur 不为空的时候不断往左树迭代同时入栈,如果cur 为空就出栈,并把cur 指向右节点。输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"返回满足题意的二叉搜索树的种数。

2024-04-14 18:10:44 891 1

原创 LeetCode 热题 HOT 100(P21~P30)

经典的爬楼梯算法题,他可以用递归的方式,也可以使用动态规划的思路。动态数组定义为当前位置的最小值,动态方程有所调整,dp[i,j]=min(dp[i-1,j],dp[j,i-1]) +nums[i,j]。维护0,1,2的初始下标,其中0,1初始在0,2初始在len-1,然后迭代数组,对数组中的数字进行判断,并相应的移动下标。比较好理解的,这里稍微解释下包含i的数组最大和,基本要看前一位最大和是否小于0,如果是负数带上前面的肯定更小,还不如自己玩(i),如果前面大于0,那么带上肯定更大。

2024-03-24 15:25:07 621 1

原创 LeetCode 热题 HOT 100(P11~P20)

题目:给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。解法:遇到右括号的时候需要判断有没有对应匹配的左括号,因为必须是类型相同的才能进行闭合,因此需要一个栈来维护遇到的左括号,看栈顶的左括号是否跟当前的右括号匹配。这里有个技巧,维护一个右括号为key 的map,这样方便判断和匹配。

2024-03-15 22:01:39 1045

原创 LeetCode 热题 HOT 100(P1~P10)

这里记录下刷题过程中的心得,其实算法题基本就是个套路问题,很多时候你不知道套路或者模板,第一次尝试去做的时候就会非常懵逼。就算你一时掌握了,过一段时间之后往往会绝望的发现你又不会了。所以了解这些之后过遍数就非常重要,我通常配合anki 来复习。使用HashMap 是比较常规的解法,这里有个技巧是只通过一遍循环就能解决问题。从头开始遍历,然后顺便把元素放入HashMap,这样就不用先遍历一遍初始化HashMap。🔥 LeetCode 热题 HOT 100。整数,并返回它们的数组下标。,请你在该数组中找出。

2024-03-02 20:57:51 436 1

原创 记录一次典型oom的处理过程

有同学反馈收到应用RT的报警,其中的流量都来自于网关集群中的一台机器。因为负责网关,就上去看了下并进行排查。整体是一个比较明显的oom,这里只是记录下排查过程,老司机可以略过了。

2023-10-15 17:40:44 212

原创 MySQL事务隔离&实操

一次业务交互涉及多行记录的时候(不管是否扩表),需要保证要么都成功,要么都失败。典型的就是转账场景:先查询余额A账户有100,A少100,B多100,如果在查询余额之后,另一个线程在执行从A给C转账,也是查询到A有100,这样继续操作A的账户很可能是负的。

2023-03-15 21:01:00 567

原创 TCP可靠传输机制

TCP 可靠传输&拥塞控制

2022-10-25 22:03:21 849

原创 TCP/IP 报文&协议学习

最近在学习流量录制框架goreplay(),发现需要了解TCP协议,不然读不懂相关的代码。因此开始了TCP 相关的学习,TCP/IP 协议本身是比较大的内容,这里核心关注报文结构和一次应用层请求引起的tcp交互。

2022-10-25 10:44:37 3150

原创 Alfred Workflow 豆瓣插件开发

alfred workflow 插件开发。

2022-07-17 17:33:32 1315

原创 VMware Fusion网络配置相关原理

VMware网卡安装好VMware Fusion 并启动之后,通过ifconfig可以看到多出2块网卡(这2块网卡在没有启动VMware 的时候是看不到的)。注意这里的ip是重新设置过的,这个后面会说。很早的时候接触VMware 对他的网络配置一直很模糊,像什么桥接模式、NAT模式,以及仅主机模式。用到的时候都是网上收一下,照猫画虎配置一下。网上的文章良莠不齐,有时候能配置通,有时候又不行。决定还是要搞清楚这块原理,首先我们说一下这2块网卡。vmnet1这块网卡运行在host only也

2022-05-21 19:10:22 1970

原创 GNS3使用Docker

背景:上一篇文章:GNS3 mac环境安装并搭建vlan_ykdsg的博客-CSDN博客_gns3 mac 描述了这么快速使用GNS3,这个时候可以做一般的网络实验了。但是在网络的学习过程中会涉及很多linux环境,例如iptables、OpenvSwitch 等都需要在 linux中配置。在GNS3 中有几种方式可以实现:1.通过VMware 或者VirtualBox等虚拟机来引入。这个比较简单,基本就是安装好虚拟机,在GNS3 的配置界面中新增对应的虚拟机就行了。需要注意的是勾上 .

2022-05-16 21:44:25 770

原创 GNS3 mac环境安装并搭建vlan

因为学习网络相关课程需要一些环境来测试,所以通过GNS3是比较简便的方式。GNS3简介GNS3允许在笔记本电脑上运行一个有着几台设备的小型拓扑,用来对虚拟与真实网络进行模拟、配置、测试以及故障排除。正因为可以使用模拟器,而不需要去购买昂贵的硬件,来达到学习网络技术的目的。GNS3是由两个软件组建构成的:GNS3一体软件(The GNS3-all-in-one software, GUI, 图形用户界面) GNS3的虚拟机(The GNS3 virtual machine, VM)在GNS

2022-05-08 20:30:31 3090 1

原创 Rete算法初探

关于rete算法的介绍,能找到的资料不少,但是往往对初学者不友好,一上来就是一堆Fact,TypeNode,AlphaNode之类的术语,非常容易劝退。这里总结一下自己的学习过程,希望从问题出发,方便理解rete算法本身。举个例子:例如:我们需要将提供“机票+酒店”、“机票+酒店+贵宾休息室”两种类型的产品给旅客。机票、酒店、贵宾休息室需要满足一些基本的限制条件。并且:“机票+酒店”产品要保障:酒店位于目的地且到达当天可以入住。“机票+酒店+贵宾休息室”产品要保障:酒店位于目的地且到达当.

2021-06-22 21:37:44 1822 4

原创 用gradle开发IDEA插件

之前维护过IDEA插件GenerateO2O (https://plugins.jetbrains.com/plugin/7171-generateo2o),主要用来解决在分层架构中,每一层的对象装换的问题,比如DTO转换成DO,或者反过来。这个其实在字段数量很多,而且大部分长得一样的时候非常消耗人肉时间,而且容易错漏部分字段。当然可以使用类似Dozer这类动态BeanMapper工具。 但是这类工具的转换工程是黑盒的,实际使用中还是存在挺多问题。所以这个插件的初衷就是尽量减少维护机械代码的时间,提升...

2021-05-13 16:01:37 6379

原创 java线程状态研究

按照官方的说明java 的thread 有以下几种状态:NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED会发现通过jstack 打印出来的线程状态不是这样的。下面这个图是通过IBM 的jca 工具来分析jstack dump文件。顺便说一下jca 是目前发现最好的研究线程栈的工具,本地工具秒杀所有在线分析网站。可以从https://www.ibm.com/support/pages/ibm-thread-and-monitor-.

2020-10-08 22:41:22 962

原创 java 通用IO API 设计-- 赏玩

这里先贴一下原文内容:从https://github.com/oldratlee/translations/blob/master/generic-io-api-in-java-and-api-design/README.md上摘入。原文链接:A generic input/output API in Java-Rickard Öberg(PS:文章原始链路已失效)译文发在:【译】...

2019-10-24 11:43:19 254

原创 springboot2.* 解决域名带下划线出错的问题

项目中使用了springboot2.*版本,结果发现域名中包含下划线的时候,比如adc_test.***.com ,结果接直接返回400了。结果发现这个是在tomcat 版本在8.5.31以上都会出现问题找到个问题了接下来就是想解决方案,于是想着把tomcat 的版本给退回去,网上找了下资料,说是pom文件中配置tomcat的版本就可以了<tomcat.version>8.0...

2019-08-15 21:25:13 1530

原创 树状结构存储和快速匹配

背景:实际工作中有很多需要树状结构来表示某些数据关系,比如省市区,商品的几级类目,组织架构等。继承关系驱动的设计比较常规的设计是使用一个parent 字段来表示继承关系,构建二维关系表。这个方案的优点是:直观简单,非常容易理解,数据维护上成本也较低。但是缺点同样明显:查询的效率太差,比如我要在代码中构造出Food 这棵,需要先便利parent_id为1 的数据,再根据返回的...

2019-07-01 23:37:07 2780 1

原创 springboot同package多个ImportResource引起重复加载的问题

在写测试用例的时候,同一个package 的不同用例分别各自配置了application类,里面指定了配置文件@ImportResource(value = { "classpath*:spring-context-test.xml" })结果发现一直报重复bean定义的错误,怎么查找都定位不到,后来看了下启动日志,发现spring-context-test 被加载了多次,刚开始还没怀...

2019-07-01 19:24:50 4076 2

原创 单元测试的解答

接上篇https://blog.csdn.net/ykdsg/article/details/88410310来说说自己的思路,一家之言不一定对。针对上一篇的总结的几个问题:白盒测试需要针对代码的内部实现逻辑,成本较高。 数据初始化&准确性的问题:怎么保证每次跑用例的时候数据是可控的,不会被其他人篡改。 需要处理复杂的依赖关系,spring 容器一起来就是一堆,一不小心还...

2019-06-04 10:03:38 165

原创 线程级缓存ThreadLocalCache

很多时候一条操作链路上需要获取很多重复的基础信息,比如用户的信息,可能在AO层也有,Service层也有,这样造成的问题是每次都需要发起一次调用(数据库orRPC),这样造成的问题是对性能的无谓浪费,当然可以通过参数进行透传,但是这样带来的问题是必须修改方法的定义,一方面遗留代码需要大量修改,另一方面接口的参数也会极具庞大,特别是A->B->C,这样的方法调用链,如果只有A和C用到了用户数据,B就算没用到也需要定义一个用户信息的入参,这个对接口的定义造成了很大的污染。...

2019-03-21 10:11:24 6819 2

原创 单元测试的窘境

大家都知道单元测试的重要,网上也有很多讲单元测试的文章,但是脱离网上的case实际维护用例的时候就不是那么回事了。我们团队从17年开始摸索单测的实行,发现了在落地过程中的一些问题。 首先测试的类型是不一样的,先讲几种对单测比较友好的类型:第一种DAO层的单测,DBunit +SpringTest 事务回滚算是豪华套餐了,需要解决的问题就是验证sql是否符合预期。这种...

2019-03-11 23:19:51 256

原创 maven deploy 成功但是报错400

上周发现Nexus的release Repositories 设置的是Allow Redeploy,对于正式包来说不升级版本直接覆盖是很危险的行为,于是改为Disable Redeploy,结果本周有部分同学反馈正式包打包出错,而且就算事新的version也出错。[ERROR] Failed to execute goal org.apache.maven.plugins:maven-d...

2019-01-09 19:38:21 2520 1

原创 FastJson 泛型转换踩坑

一直用FastJson 做rest接口的序列化,FastJson对泛型的支持也非常好。经过一段时间使用后发现不定时的会报JsonObject can't covert to ****的错误,但是重启之后就好了。排查过程不赘述,直接上代码演示String itemJsonStr = "{\"models\":{\"_defaultModel\":{\"id\":824,\"itemName\":

2015-12-30 10:17:29 27286 2

原创 maven 插件开发

背景:项目中使用了一些内部的二房包,有些是公共的工具类封装,有些是一些client的api。在开发的时候通常使用的是SNAPSHOT 版本,在正式发布的时候通常需要使用正式版本,但是这个很容易忽视,导致下一次发布的时候可能因为版本的原因导致线上出错。所以这里开发一个maven插件,在打包的时候可以检验依赖树中内部二方包是否使用了SNAPSHOT版本。插件开发:maven插件相关

2015-12-16 21:28:16 715

原创 spring bean 动态替换

系统发展到一定程度就会面临分库分表的问题,我们要考虑的是怎么让系统平滑的从老的表迁移到新的表。通常新表的数据可以通过binlog同步的方式同步老表的数据,在某一个时间点通过开关的方式让读写老表的操作切换到新表。这里就涉及到如何方便的切换新老操作。加入了新表,必须要有新表的DAO,现在的问题是如何根据开关调用新老DAO来执行操作。先说下目标:能够方便的实现开关切换。对现有代码侵入尽量的少

2014-01-24 14:10:49 5381 1

原创 java 通过velocity导出word

项目需要通过程序生成word文档,就是业务方提供了一份模板,里面的有一份表格或者合同,程序主要就是把数据填到word中,并提供用户下载。首先想到的是iText和POI。iText操作pdf还不错,但是对word貌似就很吃力了。POI对excel读取和操作还行,对word的写入太复杂。上网搜了下java导出word,发现可以通过FreeMarker来完成还能保持word中复杂的样式。我们的工程中已经

2014-01-22 19:44:22 8133 1

原创 java.lang.instrument学习 (二),javassist实例练习

学习了instrument之后试着自己写点东西,上一篇的例子中使用的是asm,毕竟是面向字节码的,api还是比较复杂的。其实有时候的需求很简单,无非就是看下类里的方法啊之类的。javassist是基于源码级别的API比基于字节码的ASM简单。下面就是对使用到的类打印出所有方法的Transformer:public class TestTransformer implements Class

2013-11-02 12:02:54 4211 1

转载 java.lang.instrument 学习(一)

转自:http://jiangbo.me/blog/2012/02/21/java-lang-instrument/Instrumentation介绍:java Instrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序。这种监测和协助包括但不限于获取JVM运行时状态,替换和修改类定义等。 Java SE5中使用JVM TI替代

2013-09-27 09:37:26 26820 2

原创 python脚本替换指定行

工作中需要迁移代码,并把原来的日志系统更新到现在的格式,原来获取log的格式是AuctionPoolLoggerUtil.getLogger()现在获取log的格式是:LoggerFactory.getLogger(XXXXX.class)这里的XXXXX需要替换为当前的类名。如果这样的java文件不多还好,可以一个个人肉替换。一旦这样的文件很多,特别是迁移过来大量

2013-09-25 09:17:49 5854

原创 python脚本检查文件内容

python脚本,正则表达式python脚本检查文件内容这个是之前就在学python,欣赏python的小巧但是功能强大,是连电池都自带的语言。平时工作中用java ,觉得python在日常生活中比java用处要大,首先语法没那么复杂,特别是io的操作,java里要写一大坨没关的代码。还有就是不用编译,而且linux系统默认都会自带。这次遇到的问题是工作当中想要迁移一个系统中的

2013-09-08 18:00:00 3512

原创 Sikuli 图片识别

Sikuli 图片识别 ,轻松编写自动化测试脚本Sikuli这个是MIT开发的,可以通过图片进行自动化操作的 官网地址 从上图可以看到就是根据截图来操作,语法用的是python的。本来想用这个写个自动玩游戏的外挂,不过在mac上反应太慢了,通常是是匹配到图案,鼠标很迟才移动上去,然后再点击就没啥用了。不过用来做日常一些机械的操作还是挺好的。

2013-09-08 17:57:15 3242

原创 如何建立一个免费网站

通过github page 免费搭建个人网站从哪得到免费的主机服务github page可以提供主机服务支持jekyll,这个网上资料很多,使用jekyll从无到有搭建一个网站很容易,难的是怎么熟悉jekyll的语法。这方面中文资料比较少,不过官网的英文也还算简单。本网站使用的模板是展新同学开发的kunka可以参考:通过GitHub Pages建立个人站点markdown语

2013-09-08 17:57:14 1601

原创 快速任务处理框架

背景:用户在设定某一时刻触发某项任务,任务处理框架按照时间先后依次处理任务,即如果用户设置了9:30,9:31,9:32这3个时刻分别需要执行100个任务,那么任务系统在9:30时执行相应的任务,全部处理完之后再处理9:31的,也就是说9:31的任务是否执行不仅要看时间是否到点,还要看前面的任务是否完成。并且需要实现可扩展的架构,可以通过加机器来增加任务的处理能力。框架设计:1.任务的存储

2013-05-27 09:12:39 1141

原创 Intellj IDEA 启动参数调优

修改 IntellJ/bin/idea.exe.vmoptions (记得备份哦亲)修改成-Xms512m -Xmx512m -Xmn164m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=64m -Xverify:none -Xnoclassgc -XX:+UseParNewGC -XX:+UseConcMark

2013-05-27 08:53:49 9241

转载 Java I/O通用api设计 (二)

上一篇处理了基本的I/O传输,我们常常还要做些其它的事。可能要计数一下传输了多少个数据,过滤一下数据,或者是每1000条数据做一下日志,又或者要看一下正在进行什么操作。既然输入输出已经分离,这些事变成在输入输出的协调代码中简单地插入一些逻辑。大部分协调代码有类似的功能,可以放到标准的工具方法中,更方便使用。第一个标准修饰器是一个过滤器。实现时我用到了Specification。pu

2013-04-20 10:08:50 774

转载 Java I/O通用api设计 (一)

原文A generic input/output API in Java(by Rickard Öberg)中给出了一个通用Java IO API设计,并且有API的Demo代码。更重要的一点是,这篇文章给出实现这个API设计本身的步骤和过程,这让API设计实现过程有了条理。文中示范了从 普通简单实现 整理成 正确分解、可以复用、可扩展的API设计 的过程。这个很值得理解和学习! PS:

2013-04-15 17:31:43 931

转载 程序员如何保持优秀

小范围的选择一些有用技术,透彻的学习它们,拥抱它们。然后不断的扩展这个范围。理解各种数据结构的优点和缺点,包括它们在内存中和在硬盘上的各自表现。理解各种算法的优点和缺点。了解你的工作领域。关上电脑,去做你的用户们在做的事。有准备,有愿望,有能力在任何时候投入到多种技术层面中。你必须知道表象下的技术原理。在“各个技术层面的掌握程度”和“编程能力”上有着

2013-04-06 10:21:18 581

原创 jrebel 使用

很早就关注jrebel的使用,因为java开发免不了重启服务器,现在一般的服务器所支持的热启动都是不改变类结构的前提下,比如不能新增,修改,删除已有的方法,只能改变方法体的实现。基本上没有太大的意义。之前用过jrebel但是效果不是很理想,一方面自己的机器配置比较低内存有限,jrebel用起来之后还是比较占内存的,通常多用几次热部署之后就会导致class重新加载不成功。现在机器好了不少,jrebe

2013-04-02 16:47:57 2133

原创 Git学习

首先这个不是入门教程,如果要入门的话可以google 下git入门,你会得到比较多的资料,这里主要是对git里的一些概念进行清晰的解释。如果你连git环境都没有的话就没必要看下去了,先goole下git 入门吧。推荐下一个git在线学习网站,可以通过例子来联系命令并看到返回结果http://pcottle.github.com/learnGitBranching/1.commit在

2013-03-25 09:50:34 1007

AnIntroductionToTheReteAlgorithm.pdf

Rete 算法CMU 的PPT

2021-06-22

程序复杂性与API设计.pdf

关于程序复杂性于正交设计的一点思考

2021-05-07

第一本DOCKER书 修订版

Docker是一个开源的应用容器引擎,开发者可以利用Docker打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。, 本书由Docker公司前服务与支持副总裁James Turnbull编写,是Docker开发指南。本书专注于Docker 1.9及以上版本,指导读者完成Docker的安装、部署、管理和扩展,带领读者经历从测试到生产的整个开发生命周期,让读者了解Docker适用于什么场景。书中先介绍Docker及其组件的基础知识,然后介绍用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

2017-12-15

设计模式解析(第二版)

设计模式解析(第二版)

2017-06-28

深入剖析Tomcat(中文版

深入剖析Tomcat

2017-06-28

elasticsearch权威指南

es权威指南中文

2017-06-28

程序员的思维修炼:开发认知潜能的九堂课(中文版)

程序员的思维修炼:开发认知潜能的九堂课(中文版)

2013-06-19

一站式学习C编程

一站式学习C编程 中文 你懂得 宋劲杉 北京亚嵌教育研究中心 这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之 一。该课程是为期四个月的全日制职业培训,要求学员毕业时具备非常Solid的C编程能力,能熟 练地使用Linux系统,同时对计算机体系结构与指令集、操作系统原理和设备驱动程序都有较深 入的了解。然而学员入学时的水平是非常初级而且参差不齐的:学历有专科、本科也有研究生, 专业有和计算机相关的也有很不相关的(例如会计专业),以前从事的职业有和技术相关的也有 完全不相关的(例如HR ),年龄从二十出头到三十五六岁的都有。这么多背景完全不同、基础 完全不同、思维习惯和理解能力完全不同的人来听同一堂课,大家都迫切希望学会嵌入式开发技 术,投身IT行业,这就是职业教育的特点,也是我编这本书时需要考虑的主要问题。

2013-06-19

how tomcat work 英文版+代码

how tomcat work 英文版+代码

2013-05-29

自定义doclet

根据sun 标准的doclet改造,改造了一部分解析和输出的代码~

2013-03-22

Hadoop权威指南(中文版)

Hadoop权威指南(中文版),不多说了,需要的下载~

2011-12-13

超简陋的http服务器

很简单的socket 静态http服务器,纯属个人例子

2011-04-15

osgi进阶.pdf

此篇文档适合具备OSGi基础概念或已阅读《OSGi实战》的读者1 阅读,尤其是希望将 OSGi应用至实际的商业项目/产品的读者。 阅读此篇 Opendoc 的读者应具备以下知识: z 如何在 Eclipse 中搭建 OSGi 应用开发环境; z 如何部署 OSGi 应用; z 对于 OSGi 应用开发有大致的了解(如 DS 怎么使用)

2009-08-20

OSGI实战.pdf

学习 OSGI 框架背后的思想,学习 OSGI 规范中是怎么定义 Bundle 的元数据的、怎么来管理 Bundle 的、怎 么来管理 Service 的等等,以在实践中更好的使用 OSGI 框架搭建系统.

2009-08-20

空空如也

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

TA关注的人

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