学习笔记
陆多多
这个作者很懒,什么都没留下…
展开
-
LocalDateTime使用
为什么使用新API性能更好,使用更方便,更安全。当我们习惯使用date,Calendar等后,我们往往由于学习和使用惰性不愿去了解新的技术。即便知道线程不安全,我们也只采用自己的方式去解决,但这在团体中会造成较大的使用成本和风险。概念ZoneId: 时区ID,用来确定Instant和LocalDateTime互相转换的规则Instant: 用来表示时间线上的一个点(瞬时),即Date的替代品。LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的LocalTime原创 2021-11-02 20:56:21 · 2330 阅读 · 0 评论 -
上下文设计模式
前言在开发中,如果一个方法有3个以上的参数,我们应该将它们包装到一个参数中,原因:方便调用,参数过多类型容易混淆。参数个数变更容易替换,无需批量更改方法。方便设计模式实施及日志记录等。一个参数的好处很多,于是我们可以思考,一个请求流程中,我们是否可以只用一个参数呢?我觉得可以,而且是一种很高效的设计模式。上下文设计模式我将应用如下请求参数的模式统称为上下文设计模式public class Context<T, R> { /** * reque原创 2021-09-13 20:31:37 · 558 阅读 · 0 评论 -
集合常用操作
List1.逗号拼接字符串转换List使用SplitterSplitter.on(",").splitToList(fixRcmdPos.getRoomNos()).stream().map(Long::parseLong)字符串splitArrays.asList(ids.split(",")).stream().map(s -> Long.parseLong(s.trim()))2. List转逗号凭借字符串使用StringUtils.joinStringUtils.join(原创 2021-03-12 11:57:30 · 421 阅读 · 0 评论 -
领域驱动设计
项目遇到的问题1.随着项目的逐渐庞大,service层出现互相调用 2.公共互相调用,且存在同时修改,大量重复代码 3.随着时间增加,开发维护成本巨增,每次开发测试都要回归大部分代码领域驱动设计的概念分析产品的领域,并设计为领域模型,尤其需要注意边界问题,注重隔离性,重用性,扩展性,可维护性场景实例以订单为例: 1.对外服务,purchaseRemoteService 通过orderDomai原创 2017-02-23 19:36:24 · 783 阅读 · 0 评论 -
京东,淘宝开放平台初探
前提这几天遇到一个需求,就是要接入京东,天猫等订单,然后采用顺丰进行发货处理,首先最主要的就是先了解下京东,天猫的接入流程。 京东:授权JOS采用国际通用的OAuth2.0标准协议,如果需要获取一些与用户紧密相关的信息,则必须走京东的授权,淘宝也类似。 1.获取授权码(code) 2.获取访问令牌(access_token),访问令牌京东和淘宝的有效期均为一年,且都可以刷新有效期。开发流程1.原创 2017-02-27 19:21:46 · 774 阅读 · 0 评论 -
Java正则表达式——分组与捕获
对于要重复的单个字符,非常简单,直接在字符后加上限定符即可,例如a+标识匹配1个或一个以上的a, a?标识0个或这1个a。a{n,}标识X至少n次。 但是我们要对多个字符进行重复该怎么办呢?此时我们要用到分组,我们可以使用小括号”()”来指定要重复的子表达式,然后对这个子表达式进行重复。分组分为2种形式,捕获组和非捕获组捕获组捕获组可以通过从左到右计算其开括号来编号,在表达式((A)(B(C)))转载 2016-11-05 20:08:58 · 1824 阅读 · 0 评论 -
eclipse远程调试
1.打开远程服务器的调试端口,例如10086.2.打开xshell,启用xagent代理。 建立远程服务器到本地端口的隧道。例如远程10086端口到本机的10086端口。3.启动eclipse的远程调试,配置端口10086。4.netstat -na |grep 10086 可以查看远程是否建立了链接。原创 2016-06-23 13:18:19 · 324 阅读 · 0 评论 -
gitignore
在windows下无法创建”.gitignore”文件名,必须把文件名改成这样”.gitignore.”,在文件名最后加一个英文句号就可以了。bin/ 过滤所有bin文件夹 *.dll 过滤所有dll文件 以斜杠“/”开头表示目录; 以星号“*”通配多个字符; 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表; 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;fd1/*转载 2016-05-06 13:10:12 · 470 阅读 · 0 评论 -
同一台电脑运行多个git账号
有时候,我们需要将个人账号和公司账号区分,这时候我们就会需要在一台电脑上使用2个不同的git账号。 1). 创建public key. ssh-keygen -t rsa -C “xxx@163.com” 不要直接enter结束创建。选择保存位置时,给重新起个名字id_rsa_work 同理创建个人rsa public key.2). 查看系统ssh-key代理原创 2016-04-07 13:34:39 · 3147 阅读 · 0 评论 -
IAP支付
一、IAP支付流程1.应用从服务端获取ProductId2.应用根据ProductId从App Store获取商品信息并展示3.用户选中并点击后,应用向App Store发送payment请求,App Store处理该请求并返回transaction4.应用从transaction中获取receipt,并发送给服务端。5.服务端记录receipt并发送receipt到App Store校验结果是否合原创 2017-02-15 22:37:26 · 2991 阅读 · 0 评论 -
mac下idea常用快捷键
听说你还在用eclipse?落伍了吧!同事们都开始使用idea了,不甘落后的我也开始尝试idea了,使用了一阵子,感觉和eclipse还是很不同的,感受最深的是代码智能提示,编译检查上,可能开始还不习惯,用了一段时间后就会慢慢发现idea的好了,废话不多,介绍下我常用的快捷键吧。 首先最常用的就是查找功能: command+N 查找类,用来快速查找一个已知类 shift+command+N原创 2017-11-26 23:34:42 · 2603 阅读 · 0 评论 -
京东618-智慧营销
智慧营销的主要实现依赖大数据,也依赖对现有数据的合理利用和基础系统支持,在技术上给人最新的感觉就是营销依赖系统多,需要对各种场景和用户行为建模,获取需要的目标群体。优惠券,多种促销手段智能广告 配置定向规则。反作弊分布式搜索 devops智能推荐 数据采集,点击流,a/b迭代 离线计算为hadoop上运行MapReduce或spark平台上运行通过工具导入hdfs ...原创 2018-04-13 09:44:30 · 415 阅读 · 0 评论 -
jrebel
类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。 jrebel 这一工具的工作方式是,监控磁盘上实际已编译的.class文件,无论何时只要有文件被更新就更新类。这意味着如果愿意的话,你可以把JRebel和文本编辑器、命令行的编译器放在一起使用。当然,它也被巧妙地整合到了Eclipse、InteliJ和NetBeans中。与动态的...原创 2018-07-24 20:48:48 · 738 阅读 · 0 评论 -
jsoup使用
记得当初开始了解爬虫的时候,最让人头痛的就是那一堆html字符的解析,我相信很多人也有相同的困扰,今天我们一起了解下java对html字符的解析。整体功能如何使用中文文档...原创 2018-10-21 14:05:17 · 533 阅读 · 0 评论 -
mockito
众所周知,一个优秀的开发流程是少不了单元测试的,在单元测试中,mock又是一个简化和提升测试效率的神器,今天我们就了解一个被广泛使用的神器-mockito整体印象详细使用就不介绍了,官方文档里面已经讲得很详细了。文档地址在文档中,有两个单词引起了我的注意,下面我们一起来了解下。新概念BDD行为驱动开发,在测试概念下,我们可以认为黑盒测试就属于BDD的范围。具体了解BDD可参见 htt...原创 2018-10-21 14:37:04 · 989 阅读 · 0 评论 -
分布式锁(1)
最近实现了一个后台增删改查功能,为了防止并发修改数据导致数据覆盖,想到了使用分布式锁,当多个用户同时修改同一条数据时,在第一个修改完之前,其他用户的修改都抛出异常,这样就能保证用户修改的一致性。分布式锁的意义线程或进程间的并发问题是不需要分布式锁的,在分布式系统中才需要,目的是控制多个进程对同一个资源的更新,使更新顺序化,最终保证资源状态更新的一致性。我们知道锁的目的是使资源独占,防止并...原创 2019-03-12 20:30:21 · 148 阅读 · 0 评论 -
履约流程设计
今天了由于需要修改一部分履约逻辑,顺便阅读了订单履约处理流程。先介绍下业务背景,我们有很多种不同的下单业务类型,比如电台,直播,实物等,它们的履约需求是有很大的差异性的。在我们的履约逻辑设计中,同事抽取了通用流程部分和个性化处理部分。整体逻辑比较清晰明了,下面我们一起来了解下如何应对这种多业务类型,多处理流程的设计方式。通用处理部分是什么设计一个系统时,如何提升系统的可扩展性,这是我们需要考...原创 2019-08-26 09:53:32 · 1745 阅读 · 0 评论 -
FTPClient
接到一个需要与BI进行交互的任务,需要将任务数据写到BI部门的FTP服务器内,于是整理下了文件读写和FTPClient操作。在具体分析前,我们还需要了解下java IO流操作:1.BufferedInputStream是一个带有缓冲区的输入流,通常使用它可以提高我们的读取效率,也可以套在某个其他的InputStream外,装饰者模式,改善内部inputstream的性能。性能在某些情况下比转载 2015-09-05 21:24:26 · 717 阅读 · 0 评论 -
JVM基本原理
基础概念: VM体系主要是两个JVM的内部体系结构分为三个子系统和两大组件,分别是:类装载器(ClassLoader)子系统、执行引擎子系统和GC子系统,组件是内存运行数据区域和本地接口。JVM 是 编译后的 Java 程序(.class文件)和硬件系统之间的接口 ( 编译后:javac 是收录于 JDK 中的 Java 语言编译器。该工具可以将后缀名为. java 的源文件编译为后缀名为. cl转载 2015-07-05 20:01:17 · 402 阅读 · 0 评论 -
Java byte 位移操作 注意事项
Java对byte 的 + - * / >> >>> 假设我们想进行如下byte运算: 1111 1000 右移1位,再与0000 0001 或运算,得 0111 1101。直觉写程序如下:byte b = 0xf8;byte b2 = b >> 1 | 0x01; 这个写法里有多重错误,现逐个纠正:1 编译器转载 2014-02-18 16:58:20 · 1460 阅读 · 0 评论 -
Java中一种字符串的内存管理方法
Java[1]语言为字符串操作提供了丰富的支持,它将字符串封装在三个类中并提供多种字符串操作接口。在Java应用程序中,由于对字符串的使用量比较高,从而使得其需要消耗较大的堆空间。例如在J2EE应用服务器运行过程中,约40%的活跃堆空间被用来保存字符串数据[2]。通过对Java中字符串操作接口的分析可以发现,随着这些操作的运行会产生较多的无用字符串,它们不再被Java类封装并且也不被任何变转载 2014-05-27 17:46:52 · 696 阅读 · 0 评论 -
FTPClient
在学习FTPClient前,有个基本概念需要了解,就是输入输出流:1.转载 2014-08-03 21:05:21 · 704 阅读 · 0 评论 -
文本处理
1.编码ascii码:ASCII是最初的计算机指定的一套符号编码,使用一个字节其中的7位,128个数值代表不同字符,对于英语这个已经是足够。unicode编码:unicode编码是一种规范,规定使用数字来映射字符,unicode只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,即编码方式,而UTF-8,UTF-16,UTF-32其实是Unicode规范的一种实转载 2014-08-04 20:58:03 · 527 阅读 · 0 评论 -
浏览器中的data类型的Url格式,data:image/png,data:image/jpeg!
所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入。例如对于img这个Tag,哪怕这个图片非常非常的小,小到只有一个 点,也是要从另外一个外部的图片文件例如gif文件中读入的,如果浏览器实现了data类型的Url格式,这个文件就可以直接从页面文件内部读入了。data类型的Url格式早在1998年就提出了,时至转载 2014-08-11 21:04:11 · 8610 阅读 · 0 评论 -
JSP页面标签
一、JSP 指令JSP 指令(directive)影响由 JSP 页面生成的 servlet 的整体结构。下面的模板给出指令的两种可能形式。属性值两边的双引号可以替换为单引号,但引号标记不能完全省略。如果要在属性值中使用引号,则要在它们之前添加反斜杠,' 使用 \'," 使用 \"attribute2="value2"......attribute3="value3转载 2014-08-29 21:24:30 · 767 阅读 · 0 评论 -
freemarker学习笔记
中存放所有freemaker的内容,之外的内容全部原样输出。 是函数调用两个定界符内的内容中,第一个符号表示指令或者函数名,其后的跟随参数。freemaker提供的控制包括如下: 条件判断 遍历hash表或者collection(freemaker称作sequence)的成员 宏,无返回参数函数,有返回参数var?member_function(...) 用函数对var转载 2014-09-02 21:48:28 · 470 阅读 · 0 评论 -
java web异常处理
1.全局异常处理原创 2014-10-01 21:06:28 · 565 阅读 · 0 评论 -
时间和时区
在格林威治子午线上的平太阳时称为世界时(UTC),又叫格林威治平时(GMT),两者仅称呼的区别1.TimeZone表示时区偏移量,本质上以毫秒数保存与GMT的差值。获取TimeZone可以通过时区ID如"America/New_York",也可以通过GMT+/-hh:mm来设定。例如北京时间可以表示为GMT+8:00。TimeZone.getRawOffset()方法可以用来得到当前时区的转载 2014-11-19 22:16:03 · 1722 阅读 · 0 评论 -
logback使用
1.log4j(基本不用)主要配置信息在log4j.properties里面初始化log4j的配置文件:有两种方法: 1.新建一个初始化类,一般用Servlet或过滤器Log4JInit.java,然后配置配置web.xml文件启动时加载 2.使用Spring已经写好的监听器org.springframework.web.util.Log4jConfigList转载 2015-02-01 10:31:27 · 423 阅读 · 0 评论 -
多线程
1.setDaemon(true) 将线程变为后台线程,只要有前台线程运行,则后台线程一直运行,如果全部前台线程结束,则后台线程也随之结束。2.join主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。(Waits for this thread to die.)3.ThreadLocal变量转载 2015-03-03 22:09:16 · 352 阅读 · 0 评论 -
freemarker学习笔记(二)
1:判断和输出注释:格式部分,不会输出 FTL指令与HTML标签类似,前面加#,如果是用户自定义指定,则为@FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字,日期,布尔值格式化插值:#{expr}或#{expr;format} 根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数 数字:${answer转载 2015-03-06 21:13:10 · 509 阅读 · 0 评论 -
SHIRO权限初探
这几周学习了下shiro权限框架,以前的权限控制都是由我们按照自己的想法,采用过滤器或者自定义filter来控制,在部门内部项目中使用可能还没有什么问题,但后期如果对外开放,可能存在很大的风险。 shiro的学习我看的是开涛的教程,讲得还是非常详细的,http://jinnianshilongnian.iteye.com/blog/2018398 ,以下仅是我个人的一点总结。转载 2015-04-20 22:36:40 · 1015 阅读 · 0 评论 -
CentOS6.5上安装tomcat
一.下载tomcat1.本地下载好,用rz上传上去(如果没有rz , 用yum install lrzsz -y 安装),如果是securecrt ,按下ALT+P就开启新的会话 进行sftp操作上传。用rz上传时,加-y 表示覆盖2. wget获取,wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.61/bin/a转载 2015-04-30 20:39:40 · 491 阅读 · 0 评论 -
es-properties
一、使用org.apache.commons.configuration需要使用的是jar包:commons-collections-3.2.1.jar、commons-configuration-1.10.jar、commons-lang-2.6.jar和commons-logging-1.2.jar。二、使用java.util.Properties读取InputStream转载 2015-05-31 18:50:57 · 3298 阅读 · 0 评论 -
开发注意事项
1.巧用//TODO,对于代码编写时,可以先把结构写出来,然后一步一步补全2.负责实体类或其他数据,能用excel或者工具生成尽量使用,减少犯错3..代码和架构需要持续优化,归并相同的代码,减少冗余4.注释可以用编号来区分,注意换行5.单元测试,开发中sql和代码能简单测试的尽量提前测试。6.计划非常重要,每天要有产出,并做记录7.50%原则,先完成50%再考虑其他的事转载 2015-06-26 23:49:51 · 303 阅读 · 0 评论 -
ehcache使用详解
Java缓存框架 EhCache EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,缓存数据有两级:内存和磁盘,因此无需担心容量问题,是Hibernate中默认的CacheProvider。一、独立使用,结合spring 可以对变化不大,不要求实时数据的方法结果缓存起来。(缓存方法结果)参考:http://blog.sina.com.cn/s/blog转载 2013-12-20 13:07:47 · 703 阅读 · 0 评论