Mac安装unrar和rar解压缩工具

  |   0 评论   |   0 浏览

前言 今天在mac上要解压一个rar格式的文件,但是mac默认不支持解压rar格式文件。自己捣腾了一番 安装过程 进入rarlab下载RAR 5.50 beta 3 for Mac OS 打开Mac终端,在文件的同级目录执行解压缩命令:tar xvfz rarosx-5.2.b1.tar进行解压。如果解压不了请使用sudo 进入刚刚解压的rar目录中,cd /rar 在rar目录下使用如下命令进行安装 sudo install -c -o$USER unrar usr/local/bin sudo install -c -o$USER rar usr/local/bin 解压与压缩 unrar x filename.rar #解压 rar a archivename.rar filename #压缩 end

Java 8 过滤两个list的相同项

  |   0 评论   |   0 浏览

假如有两个list,list1=[1, 2, 4, 5],list2=[2, 4, 6, 7],求相同项 方法一 List<Integer> availablePoiList = requestPoiList.stream().filter(requestPoi -> memberPoiIdList.stream().anyMatch(availablePoi -> availablePoi.equals(requestPoi))).collect(Collectors.toList()); 方法二 List<Integer> availablePoiList = requestPoiList.stream().filter(memberPoiIdList::contains).collect(Collectors.toList()); 第二种方法简洁了很多,刚开始不会用lambda,写出来比较长,后面找到了contains方法。

Groovy 元对象协议Mop(一)

  |   0 评论   |   0 浏览

在java中,我们可以在运行时探索程序的结构,以及程序的类和方法,方法接收的参数等。然后我们仍然局限于所创建的静态结构,我们无法在运行时修改一个对象的类型,或是让他动态获取行为。如果我们可以基于应用当前的输入,动态的添加方法和行为,代码会变得更加灵活。我们的创造力和开发效率将大大提升。那么,Groovy就提供了这种功能。 概念 元编程(metaprogramming)意味着编写能够操作程序的程序。包括程序自身。像Groovy这样的动态语言通过元对象协议(MetaObject Protocol, MOP),提供了这种能力。 利用MOP能够干什么呢 利用Groovy的MOP,创建类、编写单元测试和引入模拟对象都很容易。 在groovy中,利用MOP可以动态的调用方法,甚至在运行时合成类和方法。这种特性给我们的感觉就是对象顺利的修改了他的类。比如Grails和GORM就使用了该特性,为数据查询合成方法,借助Mop,在Groovy中可以创建内部的领域特定语言。 这篇文章我们先讨论Groovy对象的组成。 Groovy对象的组成 Groovy对象是带有附加功能的Java对象。在Groovy中,G....

zsh + iterm 插件安装

  |   0 评论   |   0 浏览

前言 iterm 默认的主题有点无趣,也没有自动提示。不好用。通过安装插件让iterm丰富起来。 安装zsh 使用这个命令可以看到你的系统有几个shell cat /etc/shells 回显是这个 /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh 有zsh就不用安装了,直接用下面的命令设置默认shell就行 chsh -s /bin/zsh 然后直接打开新的terminal就行了 zsh的配置文件在这里:~/.zshrc 直接打开没啥东西的,需要用这个oh my zsh来调教: sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 执行命令如果遇到错误 Failed to connect to raw.githubusercontent.com port 443: Connection refused 按这个链接处理 解决homebrew安装curl: (7) Failed to connect....

Git 常用命令

  |   0 评论   |   0 浏览

co 是checkout的意思,配置了别名。 1. 把远程没有拉取过的分支拉取到本地 git co master // 会把远程的master拉到本地,并且建立关联 2. 创建本地分支并推送到远程 1. git co -b test // 创建本地分支test 2. git co -b test // 创建本地分支test 3. git push origin wei // 把本地分支推到远程 3. 本地分支和远程分支建立关联 git push --set-upstream origin test // 当前分支为test 4. 把本地的某个分支提交到远程某个分支 git ps origin test:test // 把本地的test提交到远程test 5. 把远程分支拉到本地 git checkout origin/remoteName -b localName 6. 删除远程一个分支 git push origin :wei // 删除远程分支wei 7. Git add 撤销 执行了Git add之后想撤销,让它从暂存区移到工作区 git reset --mi....

Docker容器技术初探

  |   0 评论   |   0 浏览

概述 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新。Docker容器技术用到的一些关键技术其实很早就有了,并不是什么新技术。 Docker 发布以来引爆技术社区, dotCloud 决定出售掉其他业务,专注于Docker开发。目前有商用版和开原版。 Docker中的主要技术有Cgroup,nameSpace,通过Cgroup来实现资源控制,nameSpace实现命名空间划分。Docker最大的创新就是底层镜像的可共享。通过镜像的可共享,大大降低了虚拟容器的资源占用。一个物理主机上可以部署成百上千个Docker容器。 为什么要用Docker 更高效的利用系统资源 Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效 更快速的启动时间 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。 一致的运行环境 开发过程中....

gradle dependencies依赖分析

  |   0 评论   |   0 浏览

遇到的问题 最近在项目中遇到一个问题,因为存在jar包冲突的问题,想要解决一下。但是在解决的时候发现了另一个问题。下面详细道来。 当执行 gradle build 的时候报错,提示 What went wrong: A problem occurred evaluating root project '110-springboot'. > Failed to apply plugin [class 'io.spring.gradle.dependencymanagement.DependencyManagementPlugin'] > Could not create task of type 'DependencyManagementReportTask'. 通过网上查了发现是gradle 3.0 的一个bug,后面的版本中已经解决了。于是我下载了新版本的(gradle 3.4),发现还是存在问题,应该是本地缓存中还有问题,删了一会没有删干净。于是找了另一个解决办法,在build.gradle中加了这么一句话: classpath "io.spring.gradle:....

shell 入门

  |   0 评论   |   0 浏览

标签(空格分隔): shell 1. 简介 Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。 Linux的Shell种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为#!/bin/bash。 2.举例 #!/bin/bash echo "Hello World !" 保存为test.sh, 执行chmod 777 test.sh赋予执行权限,再执行脚本./test.sh, 注意: 一定要写成./test.sh,而不是test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只....

拉取微信用户信息乱码解决办法

  |   0 评论   |   0 浏览

问题描述 在做拉取微信用户的时候,所有的中文字都是乱码。好郁闷。查找了半天发现微信返回的编码格式是ISO-8859-1,我们需要用ISO-8859-1接收,然后再转成UTF-8。不做转化直接保存就是乱码的。 代码如下: try { if (StringUtils.isEmpty(url)) { return null; } String resStr = doPost(url, postForm, 0, contentType); if(resStr != null) { resStr = new String(resStr.getBytes("ISO-8859-1"), "UTF-8"); } return JSON.parseObject(resStr,clazz); }catch (Exception e){ throw new IOException(e); } 这样。我的问题解决了。

微信客服消息乱码-httpClient

  |   0 评论   |   0 浏览

问题描述 今日测试微信客服消息接口、发过去之后微信发给用户的是乱码,Google了一下,解决办法很多,但是都不能解决我的问题。我用的是Apache的httpClient。 之前一直是乱码的代码: entity = new StringEntity(JSON.toJSONString(postForm)); entity.setContentEncoding(StandardCharsets.UTF_8.toString()); entity.setContentType(ContentType.APPLICATION_JSON.getMimeType()); 我是用了utf-8编码,ContentEncoding是utf-8,但是还是乱码。。。。经过一番尝试,map转json的时候编码可能发生了变化。 我把代码这样写了一下,StringEntity()的时候也加了一下编码。问题解决了。 entity = new StringEntity(JSON.toJSONString(postForm), "UTF-8"); entity.setContentEncoding(StandardC....

mac下jdk安装路径查找

  |   0 评论   |   0 浏览

今天我要在mac下找jre的路径,然后替换一个包,死活没找到。。查找了一下资料,知道了方法。 mac下jdk路径查找 命令如下: /usr/libexec/java_home -V 然后会打印出安装jdk的路径 1.8.0_101, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home jre路径找到了~

微信消息加解密JCE无限制权限策略文件

  |   0 评论   |   0 浏览

今天做微信第三方平台开发,在微信消息加解密的过程中需要遇到一些问题。主要就是JCE无限制权限策略文件。默认的jdk里提供的包是有问题的。进行一些强度较高的加密会报错。 因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。 官方网站提供了JCE无限制权限策略文件的下载: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security下覆盖原来文件,记得先备份。 如果安装了JDK,将两个jar文件也放到%JDK_HOME%\jre\lib\security下。 附录: 由于信息安全在军事等方面极其重要,如在第二次世界大战期间,使用了无线电,若是能够成功解密敌方的机密情报,往往预示着战争的胜利,因....

Spring参数绑定注解

  |   0 评论   |   0 浏览

handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类: 处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解: @PathVariable; 处理request header部分的注解: @RequestHeader, @CookieValue; 处理request body部分的注解:@RequestParam, @RequestBody; 处理attribute类型是注解: @SessionAttributes, @ModelAttribute; 1、 @PathVariable 当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。 Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateContr....

内网网段

  |   0 评论   |   0 浏览

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0~10.255.255.255 172.16.0.0/12:172.16.0.0~172.31.255.255 192.168.0.0/16:192.168.0.0~192.168.255.255 可以看出, 10.xx之后都是内网网段 172.16 ~ 172.31之间都是内网网段 192.168.xx之后都是内网网段 我们的内网网段最常见的就是192.168了

Java正则表达式之Pattern类和Matcher类

  |   0 评论   |   0 浏览

###Pattern类 Pattern类用于创建一个正则表达,或者说是一种匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。 Java代码示例: Pattern p=Pattern.compile("\w+"); p.pattern();//返回 \w+ Pattern.split(CharSequence input) ,用于分隔字符串 Pattern p=Pattern.compile("\d+"); String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com"); 结果:str[0]="我的QQ是:" str[1]="我的电话是:" str[2]="我的邮箱是:aaa@aaa.com" Pattern.matcher(String regex,CharSequence input),快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串. Java代码示例: Pattern.matches("\d+"....

美团网面试回顾

  |   0 评论   |   0 浏览

前几天写了篇面试京东的总结,浏览量比较多,评论也很多,还被黑客派放到了优选里面,深受鼓舞,决定再写一篇,记录面试美团的过程. 0. 前奏 我才工作一年哎,很多大的互联网公司都不愿意招这种经验比较少的人.bat社招基本都是3年以上工作经验.我的简历都过不了.二线互联网公司也是,对我来说,简历关比较难过.美团是我在boss直聘上联系的.我就专门挑技术负责人发的招聘信息跟他联系(hr不懂技术,筛简历不太靠谱),搞技术的一看就知道咋回事,适不适合,最直接的做法.我们在线简单的聊了一会之后他就让hr跟我联系安排面试.后来hr打电话来,约到了第二天的上午十点面试. 早上七点多起来,准备了一下,整理了思绪就出门了.因为比较看重美团,很想进,所以有点小紧张.路上我告诫自己,不要紧张,正常发挥就行.不要看的太在意.通过这么多次面试,现在临场感确实好了很多,不再紧张了.语言表达能力有提高,感觉面试的过程对自己提升也是有很大帮助的.坐到望京站之后要换公交了,望京研发园那里没有地铁直达,不过地铁站出来后,看到了美团网的大巴,直接坐上去了,反正没有查,哈哈,装作美团网的员工,一本正经的坐到了终点站.美团是租了一....

线上问题排查方法

  |   0 评论   |   0 浏览

###1. top命令详解 输入top命令之后,会打印出如下信息 top - 11:50:26 up 167 days, 19:07, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 100 total, 2 running, 98 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1016656 total, 930924 used, 85732 free, 12816 buffers KiB Swap: 0 total, 0 used, 0 free. 50268 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25 root 20 0 0 0 0 R 0.3 0.0 31:48.91 rcuos/0 14326 root 20 0 141092 33868 2336 S 0.3 3.....

Java中的内存泄漏问题

  |   0 评论   |   0 浏览

内存泄漏的对象有这么两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连 其次,这些对象是无用的,即程序以后不会再使用这些对象 代码如下: Vector v=new Vector(10); for (int i=1;i<100; i++) { Object o=new Object(); v.add(o); // 此时,所有的Object对象都没有被释放,因为变量v引用这些对象 o=null; } 画个示意图就是这样子的 在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个Vector中,如果我们仅仅释放引用本身,那么Vector仍然引用该对象,所以这个对象对GC来说是不可回收的。因此,如果对象加入到Vector后,还必须从Vector中删除,最简单的方法就是将Vector对象设置为null。

sql优化常见策略

  |   0 评论   |   0 浏览

常见的优化策略 从最核心的开始说起 1. 选择正确的存储引擎 这个是最核心的了,选错存储引擎那其他的都是白忙活了。那最常用的就是InnoDB了,那如果事务性要求不高的话,可以选择myisam了。 2. 不能用存在null值的列做索引 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 3. where后面的索引不一定100%有效 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 尽量避免null类型的列 使得索引、索引统计、值比较都比较复杂、使用更多的存储空间、null的列为索引时,每个索引记录需要额外一个字节、 datetime timestamp timestamp只使用datetime一半的存储空间。并且会根据时区变化。 整数类型 tinyint、smallint、mediumint、int、bigint分别使用8/16/24、32/64位存储空间 unsigned属性表示不允....

利用redis实现分布式锁

  |   0 评论   |   0 浏览

利用redis来实现分布式锁。一般就用setnx和getset两个命令。 NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists. getset是同步的 java之jedis实现 expireMsecs 锁持有超时,防止线程在入锁以后,无限的执行下去,让锁无法释放 timeoutMsecs 锁等待超时,防止线程饥饿,永远没有入锁执行代码的机会 代码如下: private int timeoutMsecs private String lockKey private static long expireMsecs = 1000 * 60 * 5 // min 锁持有超时 // timeoutMsecs 表示锁等待超时 public JedisLock(Integer timeoutMsecs, String lockKey) { this.timeoutMsecs = timeoutMsecs this.lockKey = lockKey } public synchronized boolean acquire(Jedis jedis) th....