//初始化 ImmutableList of = ImmutableList.of(1, 2, 3); LinkedList linkedList = Lists.newLinkedList(); ArrayList list2 = Lists.newArrayList(); //处始化大小 ArrayList list3 = Lists.newArrayListWithCapacity(10); //处始化,并添加元素 String[] ss = {"2"}; List list = Lists.asList("1", ss); ArrayList list4 = Lists.newArrayList("A","B"); 常用方法介绍 //笛卡儿积 List> list5 = Lists.cartesianProduct(Lists.newArrayList("A","B"), Lists.newArrayList("1","2")); System.out.println(list5);//[[A, 1], [A, 2], [B, 1], [B, 2]] //元素转换 List transform = Lists.transform(Lists.newArrayList("A","B"), new Function() { @Nullable @Override public String apply(@Nullable String input) { return input.toLowerCase(); } }); System.out.println(transform);//[a, b] //字符串转化为字符,返回ImmutableList,Immutable是不可变对象 ImmutableList list6 = Lists.charactersOf("mnbvcxz"); System.out.println(list6);//[m, n, b, v, c, x, z] //reversed List reverse = Lists.reverse(list6); System.out.println(reverse);//[z, x, c, v, b, n, m] //按个数分组 List> partition = Lists.partition(reverse, 3); System.out.println(partition);//[[z, x, c], [v, b, n], [m]] 上述方法,其实实际并未将元素改变,是在正在需要拿元素的时候,才将相关元素按照指定变化。这是一个很重要思想,避免了一开始就遍历元素一个个将元素变化 list存在null排序问题 /** * jdk 排序 * * 但是存在一个问题,不能为null,否则将抛出异常 */ List list = Arrays.asList(1, 3, 2, 4,null); System.out.println(list); Collections.sort(list); System.out.println(list); 上述代码会抛错,因为存在null无法排序,这时需要传递一个Comparator进去、 guava为我们提供了Ordering类 List list = Arrays.asList(1, 3, 2, 4,null); System.out.println(list); //将null放到第一个 Collections.sort(list, Ordering.natural().nullsFirst()); System.out.println(list); //判断list是否是有序 System.out.println(Ordering.natural().nullsFirst().isOrdered(list)); //倒序 //Ordering.natural().reverse().nullsFirst() Set 创建 HashSet set = Sets.newHashSet(1, 2, 3); HashSet set1 = Sets.newHashSet(Lists.newArrayList(1, 1, 2, 3, 4)); 常用方法 //子集,size表示每一个子集的个数 Set> set2 = Sets.combinations(Sets.newHashSet(1, 2, 3), 2); set2.forEach(System.out::print);//[1, 2][1, 3][2, 3] //差集,交集,并集 Map map //map构建 HashMap hashMap = Maps.newHashMap(); Maps.newHashMapWithExpectedSize(5); ConcurrentMap concurrentMap = Maps.newConcurrentMap();//线程安全map ImmutableMap immutableMap = ImmutableMap.builder() .put(1, "文文是猪").build(); //map初始化并赋值 Map map = Maps.asMap(Sets.newHashSet(1, 2, 3), k -> k + "_value"); System.out.println(map);//{1=1_value, 2=2_value, 3=3_value} ImmutableMap map1 = Maps.uniqueIndex(Lists.newArrayList(1, 2, 3), v -> v + "_key"); System.out.println(map1);//{1_key=1, 2_key=2, 3_key=3} //map修改value Map map2 = Maps.transformValues(map, v -> v + "transformValues"); System.out.println(map2);//{1=1_valuetransformValues, 2=2_valuetransformValues, 3=3_valuetransformValues} //按key过滤 Map map3 = Maps.filterKeys(map, key -> key == 1); System.out.println(map3);//{1=1_value} Multimap /** * LinkedListMultimap * * 非线程安全 * 可以存储相同key * get方法返回的是list * * * 线程安全使用: * Multimap multimap= Multimaps.synchronizedMultimap(LinkedListMultimap.create()); * * * */ LinkedListMultimap multimap = LinkedListMultimap.create(); multimap.put("1", "2"); multimap.put("1", "2"); multimap.put("1", "3"); multimap.put("1", "4"); System.out.println(multimap);//{1=[2, 2, 3, 4]} /** * HashMultimap * * 非线程安全 * 可以存储相同key * 相同key value覆盖 * get方法返回的是set * * * 线程安全使用: * Multimap hashMultimap= Multimaps.synchronizedMultimap(HashMultimap.create()); * */ HashMultimap hashMultimap = HashMultimap.create(); hashMultimap.put("1", "2"); hashMultimap.put("1", "2"); hashMultimap.put("1", "3"); hashMultimap.put("1", "4"); System.out.println(hashMultimap);//{1=[4, 2, 3]} BiMap /** * 非线程安全 * 不能存在相同key,也不能存在相同value * * 线程安全使用: Maps.synchronizedBiMap(biMap) */ //相同key覆盖,相同value抛错 HashBiMap biMap = HashBiMap.create(); biMap.put("11","2"); biMap.put("1","3"); System.out.println(biMap);//{11=2, 1=3} try { biMap.put("2","3"); } catch (Exception e) { e.printStackTrace();//java.lang.IllegalArgumentException: value already present: 3 } //强行加元素,若value和之前的相同,则覆盖之前的entry biMap.forcePut("3","3"); System.out.println(biMap);//{11=2, 3=3} NavigableMap和TreeRangeMap //[] Range closed = Range.closed(1, 5); //() Range open = Range.open(1, 5); //(] Range openClosed = Range.openClosed(1, 5); //[) Range closedOpen = Range.closedOpen(1, 5); TreeMap treeMap = Maps.newTreeMap(); treeMap.put(1,"111"); treeMap.put(3,"333"); treeMap.put(2,"222"); treeMap.put(4,"444"); System.out.println(treeMap);//{1=111, 2=222, 3=333, 4=444} NavigableMap subMap = Maps.subMap(treeMap, Range.closed(1, 3)); System.out.println(subMap);//{1=111, 2=222, 3=333} TreeRangeMap rangeMap = TreeRangeMap.create(); rangeMap.put(Range.closed(90,100),"A"); rangeMap.put(Range.closed(60,89),"B"); System.out.println(rangeMap);//[[60..89]=B, [90..100]=A] System.out.println(rangeMap.get(99));//A table //Map> HashBasedTable table = HashBasedTable.create(); table.put(1,2,3); System.out.println(table); table.put(1,2,4); System.out.println(table); Object o = table.get(1, 2); Map row = table.row(1); Map column = table.column(2); guava的collection实在是太多了,这里介绍一部分用法。后续学习数据结构把实现原理及用到的算法详细介绍一遍,以及整个的设计的设计模式和UML图,待续。。。。。 你可能感兴趣的:(Guava) Redis+Guava(二级缓存,Caffeine) yan0219n 工具redisguava缓存 /***本地缓存*/privateCachelocalCache=CacheBuilder.newBuilder().concurrencyLevel(16)//并发级别.initialCapacity(1000)//初始容量.maximumSize(1000)//缓存最大长度.expireAfterAccess(1,TimeUnit.HOURS)//缓存1小时没被使用就过期.build();Ca Guava本地缓存的使用 肥肥肥柯 guavaredisjava Guava和Redis实现二级缓存1、目的本地缓存为什么不使用hashMap或者concurrentHashMap?concurrentHahMap和hashMap一样,都是长期存在的缓存,除非调用remove方法,否则缓存中的数据无法主动释放。仅使用Guava本地缓存会有什么问题?作为API或者某种功能系统来用的话,无论单机/集群(集群其实就形成了近乎Guava副本的情况),Guava中的数据增 Java本地缓存技术选型(Guava Cache、Caffeine、EhCache) 子龙技术 java 前言对一个java开发者而言,提到缓存,第一反应就是Redis。利用这类缓存足以解决大多数的性能问题了,我们也要知道,这种属于remotecache(分布式缓存),应用的进程和缓存的进程通常分布在不同的服务器上,不同进程之间通过RPC或HTTP的方式通信。这种缓存的优点是缓存和应用服务解耦,支持大数据量的存储,缺点是数据要经过网络传输,性能上会有一定损耗。与分布式缓存对应的是本地缓存,缓存的进程和 基于滑动窗口的限流去重策略概念及简单实现 Jerry._ 爪哇开发java开发语言 概念:滑动窗口去重的目标是在一定时间范围内,避免处理重复请求,常用于去除重复的API调用、订单请求、发送消息等。实现原理:请求哈希存储:通过唯一标识(如用户ID、请求参数、消息ID)生成哈希值,存入缓存(如Redis、GuavaCache)。时间窗口:设置一个固定的时间窗口(如5秒),在窗口期内如果相同请求再次到来,则认为是重复请求。滑动检查:随着窗口的滑动,每次检查当前时间范围内是否存在相同的请 Hutool工具库使用记录 namelessmyth Javajava Hutool简介和ApacheCommons,Googleguava类似的工具包。但是国产的,有着完善的中文文档和代码中文注释。对于英文不好的程序猿,这点特别有吸引力。还有就是本人的一贯原则就是只要国产的和国外的水平相差不大的情况下,优先支持国产。本人的使用体验是:hutool集合了Apache和guava的优点,而且不依赖第三方jar包。举个例子来说,Hutool-log会自动按下面的顺序自动识 缓存的多种实现方式 养生编程大队长 Java学习缓存 1.谷歌的guava包下面的Cache,基于内存的缓存2.自定义缓存,例如使用静态Map实现3.分布式缓存redis,memcached4.EHcache 互联网大厂的微服务架构系统应对超大流量解决方案 欧子说Java 架构微服务java 常见的限流方式有:限制总并发数(数据库连接池、线程池等等)限制瞬时并发数(如Nginx的limit_conn模块)限制时间窗口的平均速率(如Guava的RateLimiter、Nginx的limit_req模块)限制远程接口的调用速率、限制消息系统的消费速率1.1接入层限流抗疫项目中,一般ISV会把Nginx作为业务的接入层,通过Nginx将请求分发到后端的应用集群上。接入层(流量层)是整个系统的 布隆过滤器 Lin_Miao_09 技术架构哈希算法数据结构算法 目录一、布隆过滤器是什么工作原理优点缺点二、布隆过滤器的使用Guava步骤1:添加依赖步骤2:创建和使用布隆过滤器Redission使用Redisson的RBloomFilter步骤1:添加依赖步骤2:使用RBloomFilter手动使用BitSet实现布隆过滤器示例代码解释使用ReBloom插件实现步骤1:安装Redis和ReBloom模块步骤2:使用ReBloom操作布隆过滤器使用Redis的 常用类库 Guava 简介 豆瑞瑞 java 简介GoogleGuava是一个由Google开发的Java开源函数库。前身是GoogleCollectionsLibrary,提供了许多简化工具,如缓存、连接器、过滤器、关联数组等仓库代码GitCode-全球开发者的开源社区,开源代码托管平台参考https://github.com/google/guavahttps://github.com/google/guava/wikiRedisStre guava中对Map的扩展数据结构 qq_36608622 guavaspringboot Multimap-多值Mapguava中的Multimap提供了将一个键映射到多个值的形式,使用起来无需定义复杂的内层集合,可以像使用普通的Map一样使用它,定义及放入数据如下:Multimapmultimap=ArrayListMultimap.create();multimap.put("day",1);multimap.put("day",2);multimap.put("day",8);m 【JAVA】基于Guava实现本地缓存 还算善良_ javaguava缓存 使用Guava实现本地缓存1、首先,导入pom依赖com.google.guavaguava30.1-jre2、创建一个本地缓存的接口LocalCacheService,用于定义缓存方法publicinterfaceLocalCacheService{/***存储数据**@paramkey*@paramvalue*/voidput(Kkey,Vvalue);/***如果存在就获取**@paramk Caffeine 与 Guava Cache 雨季里的向日葵 java 一、概要1.1背景在项目开发中,为提升系统性能,减少IO开销,本地缓存是必不可少的。最常见的本地缓存是Guava和Caffeine,Caffeine是基于GoogleGuavaCache设计经验改进的结果,相较于Guava在性能和命中率上更具有效率。1.2应用场景愿意消耗一些内存空间来提升速度预料到某些键会被多次查询缓存中存放的数据总量不会超出内存容量二、GuavaCache2.1GuavaCac Guava Cache的使用 coderlong javaCache 缓存在Guav中的应用GuavaCache与ConcurrentMap很相似,但也不完全一样。最基本的区别是ConcurrentMap会一直保存所有添加的元素,直到显式地移除。相对地,GuavaCache为了限制内存占用,通常都设定为自动回收元素。在某些场景下,尽管LoadingCache不回收元素,它也是很有用的,因为它会自动加载缓存。通常来说,GuavaCache适用于:你愿意消耗一些内存空间 java guava local cache +Map深浅拷贝 ZHEXI_Coding free java/jsjava 笔者使用guava的localcache遇到一个坑,查了很长时间,最终顺利解决。1.问题阐述1.定义缓存privateLoadingCache>liveCenterLRFeatureCache;2.获取缓存处:Mapfeature=this.liveCenterLRFeatureCache.getUnchecked(anchorFeatureKey))3.操作从缓存中获取的数据3.1使用处对map JAVA Guava排序器Ordering原理代码 邓家少爷 一创建排序器排序器:可以用来为构建复杂的比较器,以完成集合排序的功能:本质上来说,Ordering实例无非就是一个特殊的Comparator实例。Ordering把很多基于Comparator的静态方法(如Collections.max)包装为自己的实例方法(非静态方法),并且提供了链式调用方法,来定制和增强现有的比较器//创建排序器@TestpublicvoidcreateOreing(){// easyPOI生成的excel添加水印 梦幻D开始 工作记录技术杂记excel水印 项目场景:需求要求生成的excel添加水印,这个还是第一次听到,于是研究了一下。引入依赖代码如下:implementation('cn.afterturn:easypoi-base:4.5.0'){excludegroup:'com.google.guava',module:'guava'excludegroup:'org.apache.commons',module:'commons-compr EventBus(事件总线)的使用和源码的简单解析 Tai_Monster Android开发笔记java开发语言android GoogleGuavaEventBus(事件总线)的使用和源码的简单解析什么是EventBus?事件总线(EventBus)是一种广泛用于软件架构中的设计模式,用于实现解耦和松散耦合的通信机制。它可以帮助组织和管理应用程序中不同组件之间的通信,以提高应用程序的可维护性、可扩展性和灵活性。在事件总线模式中,不同的组件通过订阅和发布事件来进行通信。发布者发布一个事件,订阅者可以订阅该事件并在事件发生时 java sublist 分页_如何简便的将List分页成多个subList 雷浩翰 javasublist分页 概述本文讲述下如何将一个List拆分成多个subList,这个常用的操作主要会用于一个列表的内存分页处理,虽然在Java的基本API里有subList,但并没有提供便捷方法实现分页,需要自己去计算页码边界。但有两个类库提供了简单易用的API方法实现,Guava和ApacheCommonsCollections使用Guava分页com.google.guavaguava23.6-jre@Testpu guva java list取交集_java guava 集合的操作:交集、差集、并集 鲸阮 guvajavalist取交集 Guava:google的工程师利用传说中的“20%时间”开发的集合库,它是对jdk提供的扩展,提供了很多实用的类来简化代码。开源地址:https://github.com/google/guavajar包下载:http://maven.outofmemory.cn/com.google.guava/guava/packagecom.uwo9.test08;importjava.util.Set; Redis+Lua脚本实现分布式服务的限流 henry_2016 Redis分布式redislua 背景限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。开始打算使用GuavaRateLimiter来实现限流,但RateLimiter是局限于单机中使用,然后打算使用Redis+Lua脚本实现限流。1提供调用的接口@Slf4j@RestController@RequestMapping("/rateLimter")publiccl JVM级缓存本地缓存Caffeine 旺仔爱Java JVM专题jvmJVM缓存本地缓存CaffeineGuavaCache JVM级缓存本地缓存Caffeine和GuavaCache前言一、创建缓存的代码逻辑二、Caffeine的优化方面淘汰算法W-TinyLFU三、Caffeine的业务使用总结前言最新的Java面试题,技术栈涉及Java基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等,会持续更新。一、创建缓存的代码逻辑Caffeine:publ Guava 工具类之Cache的使用 本地缓存组件 ʚ小华 guava缓存 一.guavacache介绍1.介绍guavacache是Googleguava中提供的一款轻量级的本地缓存组件,其特点是简单、轻便、完善、扩展性强,内存管理机制也相对完善。2.使用缓存的优点1.减少了网络调用的开销2.减少了数据请求的序列化和反序列化二.guavacache分类guavacache提供了2种类型:Cache:创建1个缓存.LoadingCache:它能够通过CacheLoader 面试redis篇-04缓存雪崩 卡搜偶 缓存面试redis 原理缓存雪崩:是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。解决方案:给不同的Key的TTL添加随机值利用Redis集群提高服务的可用性(哨兵模式、集群模式)给缓存业务添加降级限流策略(ngxin或springcloudgateway)给业务添加多级缓存(Guava或Caffeine)问答面试官:什么是缓存雪崩?怎么解决?回答:缓存雪崩意思是设 本地缓存工具类 Fairy要carry 工具缓存 com.google.guavaguava30.1-jrepackagecom.wyh.subject.domain.util;importcom.alibaba.fastjson.JSON;importcom.baomidou.mybatisplus.core.toolkit.CollectionUtils;importcom.google.common.cache.Cache;importco 本地缓存工具类 Fairy要carry 工具缓存 com.google.guavaguava30.1-jrepackagecom.wyh.subject.domain.util;importcom.alibaba.fastjson.JSON;importcom.baomidou.mybatisplus.core.toolkit.CollectionUtils;importcom.google.common.cache.Cache;importco 浅谈本地缓存的应用 梦之救赎 缓存java后端jvm 前言缓存的本质是内存的读写速度优于磁盘,加速数据处理、加快请求响应,在并发场景下,减轻DB读的压力。本地缓存的使用,是缓存架构的基石。无论系统简单还是复杂,都离不开本地缓存的使用。本地缓存的选择本地缓存可选择:JVM堆/Ehcache/GuavaCache(1)Ehcache:支持堆外缓存,持久化。以前集中式架构,尤其是企业IT系统,用物理机或虚拟机部署,需要缓存的数据量很大,为了合理利用机器资源 Java 8之自定义Stream收集器 nobita0522 声明:本篇文章除部分引用外,均为原创内容,如有雷同纯属巧合,引用转载请附上原文链接与声明本文链接:注:阅读本篇文章需掌握java集合基础知识、Stream基本语法与使用、函数式接口、lambda表达式、泛型知识、lombok插件使用、guava基础集合工具使用、java8双冒号的使用;请先掌握上述知识再行阅读本篇文章。若有错误,欢迎友好纠正,谢谢。参考引用Java8系列之重构和定制收集器Java8 设计模式-观察者模式 Observer 中二Espresso 设计模式设计模式观察者模式java 观察者模式一、概述二、使用场景三、发布订阅1)观察者模式2)发布-订阅模式四、源码使用1)jdk中的观察者2)Guava中的消息总线五、进阶1)异步非阻塞模型一、概述观察者模式是一种行为设计模式,允许对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。在这种模式中,发生状态改变的对象被称为“主题”(Subject),依赖它的对象被称为“观察者”(Obse Guava Cache之开启统计信息收集 大风过岗 GauvaCache开启统计信息收集1.开启统计在创建Cache时,我们可以配置Cache让其开启统计信息收集,这样我们就可以对Cache的内存使用情况进行监控,并根据统计信息对cache进行调优,如果您的应用比较重视性能的话,可以开启这个特性。在创建Cache时,只需要调用recordStats()即可开启统计特性:开启统计2.开启一个后台线程完成统计信息的收集工作为了能够获取到缓存cache的 探秘Guava的RateLimiter:单机流量控制的黄金法宝 一只牛博 javaguava数据库 欢迎来到我的博客,代码的世界里,每一行都是一个故事探秘Guava的RateLimiter:单机流量控制的黄金法宝前言RateLimiter简介:速度的守护者工作原理:时间、令牌与控制参数调优:玩转RateLimiter的技巧前言在程序的世界里,想象一下你的服务器像一位疲倦的服务员,面对繁忙的顾客。如果没有合理的流量控制,他可能被淹没在请求的海洋中。但别担心,Guava的RateLimiter就像是 mongodb3.03开启认证 21jhf mongodb 下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下: (百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略) Windows下我做了一个bat文件,用来启动mongodb,命令行如下: mongod --dbpath db\data --port 27017 --directoryperdb --logp 【Spark103】Task not serializable bit1129 Serializable Task not serializable是Spark开发过程最令人头疼的问题之一,这里记录下出现这个问题的两个实例,一个是自己遇到的,另一个是stackoverflow上看到。等有时间了再仔细探究出现Task not serialiazable的各种原因以及出现问题后如何快速定位问题的所在,至少目前阶段碰到此类问题,没有什么章法 1. package spark.exampl 你所熟知的 LRU(最近最少使用) dalan_123 java 关于LRU这个名词在很多地方或听说,或使用,接下来看下lru缓存回收的实现 1、大体的想法 a、查询出最近最晚使用的项 b、给最近的使用的项做标记 通过使用链表就可以完成这两个操作,关于最近最少使用的项只需要返回链表的尾部;标记最近使用的项,只需要将该项移除并放置到头部,那么难点就出现 你如何能够快速在链表定位对应的该项? 这时候多 Javascript 跨域 周凡杨 JavaScriptjsonp跨域cross-domain linux下安装apache服务器 g21121 apache 安装apache 下载windows版本apache,下载地址:http://httpd.apache.org/download.cgi 1.windows下安装apache Windows下安装apache比较简单,注意选择路径和端口即可,这里就不再赘述了。 2.linux下安装apache: 下载之后上传到linux的相关目录,这里指定为/home/apach FineReport的JS编辑框和URL地址栏语法简介 老A不折腾 finereportweb报表报表软件语法总结 JS编辑框: 1.FineReport的js。 作为一款BS产品,browser端的JavaScript是必不可少的。 FineReport中的js是已经调用了finereport.js的。 大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的fun 根据STATUS信息对MySQL进行优化 墙头上一根草 status mysql 查看当前正在执行的操作,即正在执行的sql语句的方法为: show processlist 命令 mysql> show global status;可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%';一、慢查询mysql> show variab 我的spring学习笔记7-Spring的Bean配置文件给Bean定义别名 aijuans Spring 3 本文介绍如何给Spring的Bean配置文件的Bean定义别名? 原始的 <bean id="business" class="onlyfun.caterpillar.device.Business"> <property name="writer"> <ref b 高性能mysql 之 性能剖析 annan211 性能mysqlmysql 性能剖析剖析 1 定义性能优化 mysql服务器性能,此处定义为 响应时间。 在解释性能优化之前,先来消除一个误解,很多人认为,性能优化就是降低cpu的利用率或者减少对资源的使用。 这是一个陷阱。 资源时用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度,保持cpu忙绿,这是必要的。很多时候发现 编译进了新版本的InnoDB之后,cpu利用率上升的很厉害,这并不 主外键和索引唯一性约束 百合不是茶 索引唯一性约束主外键约束联机删除 目标;第一步;创建两张表 用户表和文章表 第二步;发表文章 1,建表; ---用户表 BlogUsers --userID唯一的 --userName --pwd --sex create 线程的调度 bijian1013 java多线程thread线程的调度java多线程 1. Java提供一个线程调度程序来监控程序中启动后进入可运行状态的所有线程。线程调度程序按照线程的优先级决定应调度哪些线程来执行。 2. 多数线程的调度是抢占式的(即我想中断程序运行就中断,不需要和将被中断的程序协商) a) 查看日志常用命令 bijian1013 linux命令unix 一.日志查找方法,可以用通配符查某台主机上的所有服务器grep "关键字" /wls/applogs/custom-*/error.log 二.查看日志常用命令1.grep '关键字' error.log:在error.log中搜索'关键字'2.grep -C10 '关键字' error.log:显示关键字前后10行记录3.grep '关键字' error.l 【持久化框架MyBatis3一】MyBatis版HelloWorld bit1129 helloworld MyBatis这个系列的文章,主要参考《Java Persistence with MyBatis 3》。 样例数据 本文以MySQL数据库为例,建立一个STUDENTS表,插入两条数据,然后进行单表的增删改查 CREATE TABLE STUDENTS ( stud_id int(11) NOT NULL AUTO_INCREMENT, 【Hadoop十五】Hadoop Counter bit1129 hadoop 1. 只有Map任务的Map Reduce Job File System Counters FILE: Number of bytes read=3629530 FILE: Number of bytes written=98312 FILE: Number of read operations=0 FILE: Number of lar 解决Tomcat数据连接池无法释放 ronin47 tomcat 连接池 优化 近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会 再次出现无法登录的情况。 今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。 简单分析了一 java-75-二叉树两结点的最低共同父结点 bylijinnan java import java.util.LinkedList; import java.util.List; import ljn.help.*; public class BTreeLowestParentOfTwoNodes { public static void main(String[] args) { /* * node data is stored in 行业垂直搜索引擎网页抓取项目 carlwu LuceneNutchHeritrixSolr 公司有一个搜索引擎项目,希望各路高人有空来帮忙指导,谢谢! 这是详细需求: (1) 通过提供的网站地址(大概100-200个网站),网页抓取程序能不断抓取网页和其它类型的文件(如Excel、PDF、Word、ppt及zip类型),并且程序能够根据事先提供的规则,过滤掉不相干的下载内容。 (2) 程序能够搜索这些抓取的内容,并能对这些抓取文件按照油田名进行分类,然后放到服务器不同的目录中。 [通讯与服务]在总带宽资源没有大幅增加之前,不适宜大幅度降低资费 comsci 资源 降低通讯服务资费,就意味着有更多的用户进入,就意味着通讯服务提供商要接待和服务更多的用户,在总体运维成本没有由于技术升级而大幅下降的情况下,这种降低资费的行为将导致每个用户的平均带宽不断下降,而享受到的服务质量也在下降,这对用户和服务商都是不利的。。。。。。。。 &nbs Java时区转换及时间格式 Cwind java 本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。 问题描述: 向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。 readonly,只读,不可用 dashuaifu jsjspdisablereadOnlyreadOnly readOnly 和 readonly 不同,在做js开发时一定要注意函数大小写和jsp黄线的警告!!!我就经历过这么一件事: 使用readOnly在某些浏览器或同一浏览器不同版本有的可以实现“只读”功能,有的就不行,而且函数readOnly有黄线警告!!!就这样被折磨了不短时间!!!(期间使用过disable函数,但是发现disable函数之后后台接收不到前台的的数据!!!) LABjs、RequireJS、SeaJS 介绍 dcj3sjt126com jsWeb LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行。LABjs 通过优雅的语法(script 和 wait)实现了这两大特性,核心价值是性能优化。LABjs 是一个文件加载器。RequireJS 和 SeaJS 则是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更 [应用结构]入口脚本 dcj3sjt126com PHPyii2 入口脚本 入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。 Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称。 控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文 haoop shell命令 eksliang hadoophadoop shell cat chgrp chmod chown copyFromLocal copyToLocal cp du dus expunge get getmerge ls lsr mkdir movefromLocal mv put rm rmr setrep stat tail test text MultiStateView不同的状态下显示不同的界面 gundumw100 android 只要将指定的view放在该控件里面,可以该view在不同的状态下显示不同的界面,这对ListView很有用,比如加载界面,空白界面,错误界面。而且这些见面由你指定布局,非常灵活。 PS:ListView虽然可以设置一个EmptyView,但使用起来不方便,不灵活,有点累赘。 <com.kennyc.view.MultiStateView xmlns:android=&qu jQuery实现页面内锚点平滑跳转 ini JavaScripthtmljqueryhtml5css 平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”。 效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/37.htmHTML文件代码: & kafka offset迁移 kane_xie kafka 在早前的kafka版本中(0.8.0),offset是被存储在zookeeper中的。 到当前版本(0.8.2)为止,kafka同时支持offset存储在zookeeper和offset manager(broker)中。 从官方的说明来看,未来offset的zookeeper存储将会被弃用。因此现有的基于kafka的项目如果今后计划保持更新的话,可以考虑在合适 android > 搭建 cordova 环境 mft8899 android 1 , 安装 node.js http://nodejs.org node -v 查看版本 2, 安装 npm 可以先从 https://github.com/isaacs/npm/tags 下载 源码 解压到 java封装的比较器,比较是否全相同,获取不同字段名字 qifeifei 非常实用的java比较器,贴上代码: import java.util.HashSet; import java.util.List; import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; i 记录一些函数用法 .Aky. 位运算PHP数据库函数IP 高手们照旧忽略。 想弄个全天朝IP段数据库,找了个今天最新更新的国内所有运营商IP段,copy到文件,用文件函数,字符串函数把玩下。分割出startIp和endIp这样格式写入.txt文件,直接用phpmyadmin导入.csv文件的形式导入。(生命在于折腾,也许你们觉得我傻X,直接下载人家弄好的导入不就可以,做自己的菜鸟,让别人去说吧) 当然用到了ip2long()函数把字符串转为整型数 sublime text 3 rust wudixiaotie Sublime Text 1.sublime text 3 => install package => Rust 2.cd ~/.config/sublime-text-3/Packages 3.mkdir rust 4.git clone https://github.com/sp0/rust-style 5.cd rust-style 6.cargo build --release 7.ctrl 按字母分类: ABCDEFGHIJKLMNOPQRSTUVWXYZ其他
//笛卡儿积 List> list5 = Lists.cartesianProduct(Lists.newArrayList("A","B"), Lists.newArrayList("1","2")); System.out.println(list5);//[[A, 1], [A, 2], [B, 1], [B, 2]] //元素转换 List transform = Lists.transform(Lists.newArrayList("A","B"), new Function() { @Nullable @Override public String apply(@Nullable String input) { return input.toLowerCase(); } }); System.out.println(transform);//[a, b] //字符串转化为字符,返回ImmutableList,Immutable是不可变对象 ImmutableList list6 = Lists.charactersOf("mnbvcxz"); System.out.println(list6);//[m, n, b, v, c, x, z] //reversed List reverse = Lists.reverse(list6); System.out.println(reverse);//[z, x, c, v, b, n, m] //按个数分组 List> partition = Lists.partition(reverse, 3); System.out.println(partition);//[[z, x, c], [v, b, n], [m]]
上述方法,其实实际并未将元素改变,是在正在需要拿元素的时候,才将相关元素按照指定变化。这是一个很重要思想,避免了一开始就遍历元素一个个将元素变化
/** * jdk 排序 * * 但是存在一个问题,不能为null,否则将抛出异常 */ List list = Arrays.asList(1, 3, 2, 4,null); System.out.println(list); Collections.sort(list); System.out.println(list);
上述代码会抛错,因为存在null无法排序,这时需要传递一个Comparator进去、 guava为我们提供了Ordering类
List list = Arrays.asList(1, 3, 2, 4,null); System.out.println(list); //将null放到第一个 Collections.sort(list, Ordering.natural().nullsFirst()); System.out.println(list); //判断list是否是有序 System.out.println(Ordering.natural().nullsFirst().isOrdered(list)); //倒序 //Ordering.natural().reverse().nullsFirst()
HashSet set = Sets.newHashSet(1, 2, 3); HashSet set1 = Sets.newHashSet(Lists.newArrayList(1, 1, 2, 3, 4));
//子集,size表示每一个子集的个数 Set> set2 = Sets.combinations(Sets.newHashSet(1, 2, 3), 2); set2.forEach(System.out::print);//[1, 2][1, 3][2, 3] //差集,交集,并集
//map构建 HashMap hashMap = Maps.newHashMap(); Maps.newHashMapWithExpectedSize(5); ConcurrentMap concurrentMap = Maps.newConcurrentMap();//线程安全map ImmutableMap immutableMap = ImmutableMap.builder() .put(1, "文文是猪").build(); //map初始化并赋值 Map map = Maps.asMap(Sets.newHashSet(1, 2, 3), k -> k + "_value"); System.out.println(map);//{1=1_value, 2=2_value, 3=3_value} ImmutableMap map1 = Maps.uniqueIndex(Lists.newArrayList(1, 2, 3), v -> v + "_key"); System.out.println(map1);//{1_key=1, 2_key=2, 3_key=3} //map修改value Map map2 = Maps.transformValues(map, v -> v + "transformValues"); System.out.println(map2);//{1=1_valuetransformValues, 2=2_valuetransformValues, 3=3_valuetransformValues} //按key过滤 Map map3 = Maps.filterKeys(map, key -> key == 1); System.out.println(map3);//{1=1_value}
/** * LinkedListMultimap * * 非线程安全 * 可以存储相同key * get方法返回的是list * * * 线程安全使用: * Multimap multimap= Multimaps.synchronizedMultimap(LinkedListMultimap.create()); * * * */ LinkedListMultimap multimap = LinkedListMultimap.create(); multimap.put("1", "2"); multimap.put("1", "2"); multimap.put("1", "3"); multimap.put("1", "4"); System.out.println(multimap);//{1=[2, 2, 3, 4]} /** * HashMultimap * * 非线程安全 * 可以存储相同key * 相同key value覆盖 * get方法返回的是set * * * 线程安全使用: * Multimap hashMultimap= Multimaps.synchronizedMultimap(HashMultimap.create()); * */ HashMultimap hashMultimap = HashMultimap.create(); hashMultimap.put("1", "2"); hashMultimap.put("1", "2"); hashMultimap.put("1", "3"); hashMultimap.put("1", "4"); System.out.println(hashMultimap);//{1=[4, 2, 3]}
* 非线程安全 * 可以存储相同key * get方法返回的是list *
* 线程安全使用: * Multimap multimap= Multimaps.synchronizedMultimap(LinkedListMultimap.create()); *
* 非线程安全 * 可以存储相同key * 相同key value覆盖 * get方法返回的是set *
* 线程安全使用: * Multimap hashMultimap= Multimaps.synchronizedMultimap(HashMultimap.create()); *
/** * 非线程安全 * 不能存在相同key,也不能存在相同value * * 线程安全使用: Maps.synchronizedBiMap(biMap) */ //相同key覆盖,相同value抛错 HashBiMap biMap = HashBiMap.create(); biMap.put("11","2"); biMap.put("1","3"); System.out.println(biMap);//{11=2, 1=3} try { biMap.put("2","3"); } catch (Exception e) { e.printStackTrace();//java.lang.IllegalArgumentException: value already present: 3 } //强行加元素,若value和之前的相同,则覆盖之前的entry biMap.forcePut("3","3"); System.out.println(biMap);//{11=2, 3=3}
//[] Range closed = Range.closed(1, 5); //() Range open = Range.open(1, 5); //(] Range openClosed = Range.openClosed(1, 5); //[) Range closedOpen = Range.closedOpen(1, 5); TreeMap treeMap = Maps.newTreeMap(); treeMap.put(1,"111"); treeMap.put(3,"333"); treeMap.put(2,"222"); treeMap.put(4,"444"); System.out.println(treeMap);//{1=111, 2=222, 3=333, 4=444} NavigableMap subMap = Maps.subMap(treeMap, Range.closed(1, 3)); System.out.println(subMap);//{1=111, 2=222, 3=333} TreeRangeMap rangeMap = TreeRangeMap.create(); rangeMap.put(Range.closed(90,100),"A"); rangeMap.put(Range.closed(60,89),"B"); System.out.println(rangeMap);//[[60..89]=B, [90..100]=A] System.out.println(rangeMap.get(99));//A
//Map> HashBasedTable table = HashBasedTable.create(); table.put(1,2,3); System.out.println(table); table.put(1,2,4); System.out.println(table); Object o = table.get(1, 2); Map row = table.row(1); Map column = table.column(2);
guava的collection实在是太多了,这里介绍一部分用法。后续学习数据结构把实现原理及用到的算法详细介绍一遍,以及整个的设计的设计模式和UML图,待续。。。。。