随笔分类 - java
1
摘要:package com.company;import java.util.LinkedList;import java.util.Queue;public class Main { public static void main(String[] args) throws InterruptedEx
阅读全文
摘要:如下几种情况引发指令重排: 不改变单线程执行语义情况下编译器优化重排 对无数据依赖的指令,处理器可进行指令重排(并行执行) 写缓存,无效队列导致的内存数据一致性问题(写缓存只对自己可见) 指令重排举例: 早上起来喝茶程序:,两个角色:老板,秘书 秘书动作序列:准备茶叶,烧水-水烧开会发出蜂鸣声 老板
阅读全文
摘要:一张图读懂 UTF-8 使用一至四个字节的序列对编码 Unicode 代码点进行编码 UTF-16 使用两个或四个字节对 Unicode 代码点进行编码 UTF-32 始终使用4个字节 java中使用: length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。例如: Stri
阅读全文
摘要:ClassLoader Java程序并不是一个原生的可执行文件,而是由许多独立的类文件组成,每一个文件对应一个Java类。此外,这些类文件并非立即全部装入内存的,而是根据程序需要装入内存。ClassLoader专门负责类文件装入到内存。 数组类的 Class 对象不是由类加载器创建的,而是由 Jav
阅读全文
摘要:JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、
阅读全文
摘要:众所周知LongAdder在高并发场景下比AtomicLong高效很多,在低并发时基本持平,其原理就不说了,很多文章都有提到。 那么问题来了,既然如此iAtomicLong还有使用的必要吗? 我们来看看一个最常见的应用场景:多线程获取一个唯一的递增id。 AtomicLong提供 long incr
阅读全文
摘要:思路一,基于docker.io/java基础镜像,打一个新的镜像,修正时间 编写一个docker file FROM docker.io/javaMAINTAINER linsRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 生成一个新的
阅读全文
摘要:在京东的亿级流量网站架构一书,175页介绍缓存有这样一段话 仅就这段代码来看,在高并发情况下,实际上并不能阻止大量线程调用loadSync函数 当然这个书里的代码是作者的简写,这里探讨只是针对书中这段代码,实际生成代码应该有考虑这个问题,另外loadSync函数的逻辑看不到,也可能有考虑到到这个问题
阅读全文
摘要:业务需求:用户每次修改数据,都要记录修改留痕信息; 形如:【订单号】由1001改为1002,【备注】由空改为 “客户要求修改订单号” 之前做法是业务代码主动写结合aop统一拦截写日志。 动手开始做技术预研: 简化的order数据表结构如下: 偶然看到canal后,立刻想到,可以借助canal实现这个
阅读全文
摘要:原则: web层异常由统一的异常处理类捕获. 统一异常处理类针对java.lang.RunTimeException的几个常用子类进行了友好型提示封装.提供便利的统一的错误提示形势. 如果需要自定义异常提示,业务代码应该抛出框架自定义异常类:YKServiceException,并构造自定义异常信息
阅读全文
摘要:需求:客户代理的每个http请求都要进行权限验证,如果无权限不能调用服务接口. 实现思路: 由拦截器统一拦截所有请求,在拦截器的preHandle方法中通过传入的request参数获取到将要调用的实际类与方法,用户ticket等信息 每个要进行权限控制的方法都要添加注脚标明其权限码,如:@funcC
阅读全文
摘要:此便捷工厂方法的工作方式类似于调用 URI(String) 构造方法;由该构造方法抛出的任何 URISyntaxException 都被捕获,并包装到一个新的 IllegalArgumentException 对象中,然后抛出此对象。 此方法的使用场合是:已知给定的字符串是合法的 URI(例如,程序
阅读全文
摘要:需求: 多个bs业务系统,在某个业务系统登陆后,访问其他bs应用系统无需重复登陆. 制约:必须同一浏览器. 解决方案: 关键词:cookie,跨域,sso 环境 l login 拦截器:验证请求是否有令牌,令牌是否合法() l 令牌 ticket 括号内为增强功能 l 用户访问pis.com,拦截器
阅读全文
摘要:solr分组统计查询,实现多字段分组统计,网上多是用 group分组,无法实现多字段分组.本例子使用facet实现多字段分组统计,见facet()函数的输出. 从mysql导入一批数据到solr进行测试. 测试用的数据源 ; 1 import java.io.IOException; 2 impor
阅读全文
摘要:有六个人,姓名职业如下: "小阳", 医生, "小刚",医生 "小地", 医生, ;"小温", 律师, "小红", 律师, "小丽", 律师, 小阳妹妹是小地和小红 小丽哥哥是小刚,小温, 小阳的女朋友是小丽 有六个人,姓名职业如下: "小阳", 医生, "小刚",医生 "小地", 医生, ;"小温
阅读全文
摘要:环境: 使用spring mvc 配置json消息转换器为MappingJackson2HttpMessageConverter 发现long类型的数据到了js端会丢失精度 解决方案: 将long统一转为string类型 方法一: 数据层转换,由于项目使用了spring 的jdbc模版类,查询时调用
阅读全文
摘要:HashMap是一个键值对集合,使用hHashMap可以根据key查找到对应的value. 如果不考虑性能等问题,如何实现一个简单的键值对集合,并支持查找: 实现上可以创建两个List(lstKey,lstValue),分别保存key和value,约定两个集合key,value的位置一一对应(即如果
阅读全文
摘要:需求: 业务库按机构+应用进行了分库,业务系统要求能根据机构+应用切换数据库连接. 实现: 系统将所有业务库的数据连接信息保存到一个路由数据库中的路由表里. 程序在需要连接具体的业务库时,可以查询路由表得到连接信息,并建立连接. 知识点: spring JdbcTemplate JavaConfig
阅读全文
摘要:java实现一个快速排序的算法,用nio里的IntBuffer实现, IntBuffer提供了slice,position,capacity等方法可以很方便的操纵数组.用来做排序很是方便. 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的
阅读全文
摘要:0-1背包的问题 背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。 这是最基础的背包问题,特点是:每种
阅读全文
1
浙公网安备 33010602011771号