随笔分类 - java
摘要:fastjson可以自动映射pos_id到posId。 JSON.parseObject(String, Class): 从String到POJO (JSONObject) JSONObject.parseObject(String): 从String到JsonObject (JSONArray)
阅读全文
摘要:一. 缓存穿透 当热点数据为空时,将会有大量请求到缓存,一旦数据库承受不了用户请求,查询就会变慢,大量的请求也会阻塞在数据库查询上,造成应用服务器的连接和线程资源被占满,最终导致系统崩溃,这样称为缓存穿透。 通常解决方案: 返回空值 我们从数据库中查询到空值或者发生异常时,我们可以向缓存中回种一个空
阅读全文
摘要:1. Cache Aside(旁路缓存) 这个策略数据以数据库中的数据为准,缓存中的数据是按需加载的。 数据更新: 更新数据库中的记录; 删除缓存记录 从缓存中读取数据; 如果缓存命中,则直接返回数据; 如果缓存不命中,则从数据库中查询数据,并将数据写入到缓存中,并且返回给用户。 2. read、W
阅读全文
摘要:六、分布式Trace简述 1. 请求要在多个服务之间调用,如何排查慢请求问题? 给同一个请求的每一行日志增加一个相同的标记,比如我们可以在程序的入口处生成一个requestId,然后把它放在线程的上下文中,这样就可以在需要时随时从线程上下文中获取到requestId了。 String request
阅读全文
摘要:4.6 轻量级锁、偏向锁——Monitor升级 JDK6之前的加锁方式是:关联锁对象到Monitor进行加锁,Monitor是由操作系统提供的,加锁代价高。 JDK6之后,对加锁方式进行了优化,引入了轻量级锁、偏向锁等。 1. 轻量级锁 如果一个对象虽然有多个线程要加锁,但是加锁的时间是错开的(没有
阅读全文
摘要:4.5 Monitor (重量级锁) Monitor被翻译为监视器或管程, 在Java中每个对象可以关联一个Monitor对象,Monitor是操作系统提供的、用于实现对象的加锁机制的角色。 使用Monitor(重量级锁)给synchronized对象加锁的过程: Java对象被加锁,则MarkDo
阅读全文
摘要:4.3 线程安全类 线程安全类:String、Integer、StringBuffer、Random、Vector、Hashtable、java.util.concurrent(JUC)包下的类 注意:它们每个方法是原子的,但是多个方法的组合不是原子的。 String和Integer String和
阅读全文
摘要:Java对象由对象头+对象体组成。对象头大小为64比特,用于存储对象信息。对象头的分类为: 普通对象头: 64b 32b Mark Word:对象信息 32b Klass World:类名信息 数组对象头:96位 32b Mark Word:对象信息 32b Klass World:类名信息 32b
阅读全文
摘要:zebra是一个基于JDBC API协议上开发出的高可用、高性能的数据库访问层解决方案。通俗来说就是数据库访问的中间件,在JDBC和数据库连接池之上实现读写分离、分库分布等功能。一般来说Zebra在数据访问架构中位置如下^[2]^: Zookeeper/OCTO/Nacos:注册中心,存储了数据库的
阅读全文
摘要:一、mapStruct映射工具 1.1 功能 在编译时期是处理映射注解,实现类到类之间的映射 MapStruct vs BeanUtils BeanUtils: 在运行时根据反射动态赋值 缺点:动态赋值,存在大量的反射调用,性能较低;内存占用多,不适合高并发应用场景 MapStruct:在编译时静态
阅读全文
摘要:十、正则表达式 1. 匹配符 . 匹配除回车“\n”以外的任意字符 () 自定义字符串分组(a|b) a或b [] 自定义一个匹配的字符 [0-9] [a-z] [^] 自定义取反的一个匹配字符 [^0-9] 非数字 \ 转义字符 2. 限定符 * 某个字符之后加星号表示该字符不出现或出现多次 a*
阅读全文
摘要:九、Shell工具 1. cut cut:的工作就是剪,具体说就是从文件中剪切出想要的数据。 cut的原理:从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。 基本语法 cut [选项] filename 选项: -f:列号,提取第几列 -d:分隔符,按照制定分隔符分割列,默认分隔符是
阅读全文
摘要:七、系统函数 1. basename——文件名 basename [string / pathname] [suffix]: 删除字符串或者地址中所有前缀,然后将字符串显示出来 选项: suffix后缀:如果suffix被指定了,basename删除字符串后者地址中的后缀 案例实操 sangxiao
阅读全文
摘要:五、流程控制 1. if if [ 条件 ] then 程序 elif [ 条件 ] then 程序 fi if后要有空格 中括号和条件判断式之间必须有空格 案例实操 输入一个数字,如果是1,则输出“I love cat”,如果是2则输出“I love dog”,如果是其他,则输出“I love a
阅读全文
摘要:六、read读取 read可以读取控制台输入 read(选项)(参数) 选项: -p: 指定读取值时的提示 -t:指定读取值时等待的时间 参数: 变量:指定读取值的变量名 #!/bin/bash read -p "please enter your name: " -t 10 NAME echo
阅读全文
摘要:四、条件判断 1. [ condition ]——条件判断 condition前后要有空格 返回true:条件非空即为true,如[ str ] 返回false:条件为空,则返回false, 如[] 2. 整数比较 = : 字符串比较 -lt:小于(less than); -le:小于等于(less
阅读全文
摘要:二、Shell变量 1. 系统变量 $HOME:获取用户家目录,/Users/sangxiaoqian $PWD: 获取当前目录 $SHELL: 获取系统默认解析器 $USER: 获取当前用户名,sangxiaoqian $PATH: 获取系统的环境变量,/usr/local/bin:/usr/bi
阅读全文
摘要:三、运算符 1. "$((运算式))"或"$[运算式]" #!/bin/bash echo "$[3 + 2]" echo `expr 3 \* 2` echo "$[10 / 5]" 2. expr +, -, \*, /, %: 加减乘除,取余 注意:expr和运算符之间, 运算符和操作数之间要
阅读全文
摘要:Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核执行命令。 Shell也是一个功能强大的编程语言,易编写,容易调试,灵活性强。 **Shell:**命令解释器,根据输入的命令执行相应命令 查看当前系统的Shell: cat /etc/shells 查看当前系统正在使用的s
阅读全文
摘要:Mac环境部署 1. Homebrew 下载 mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew 或 /usr/bin/ruby -e "$(
阅读全文

浙公网安备 33010602011771号