- 博客(171)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 lucence in action读后感
lucence in action今天大致浏览了下《lucence in action》这本书。该书分为三部分: 1. 基础核心包括基本介绍、基本架构和进阶的搜索。 2. lucence的扩展应用的接受和用法。 3. lucence在企业中的应用案例。读后感如下:lucene只处理核心的构建索引和提供搜索算法。 lucene封装了底层算法,如果只是一般的使用只要了了解基本原理和表达式即可
2017-10-23 23:10:06
499
原创 java并发编程实践第二遍笔记(三)20171021
对象的组合浅紫色为自己跟作者的一些不同看法设计线程安全的类: 虽然可以将程序的所有状态都保存在共有的静态域中,但是与那些将状态封装起来的程序相比,这些程序的线程安全性更难以得到验证,并且在修改时也更难以确保其线程安全性。通过使用封装技术,可以使得在不对整个程序进行分析的情况下就可以判断一个类是否线程安全的。 不同看法 不光是共有的静态域,即时共有的非静态域也会有同样的问题,只不过引起问题的范围
2017-10-23 09:03:02
533
原创 多线程基本概念
竞争条件:多个任务并发访问和操作同一数据且执行结果与访问的特定顺序有关,称为竞争条件。(多个任务竞争响应某个条件,因访问顺序不同产生冲突或不一致的情况)。比如“检查再运行”“惰性初始化”。 原子操作:不能被打断的一系列操作。 复合操作:可以被打断的一系列操作。 不变约束(不变性约束):不变式表达了对状态的约束,这些状态应该符合这个约束值的组合。不变式可以代表某些业务规则。比如《java并发编程
2017-10-22 19:03:22
480
原创 java并发编程实践第二遍笔记(二)20171017
对象的共享如何共享和发布对象,使他们能够安全地由多个线程同时访问。 synchronized 可以保证可见性和原子性。 内存的重排序只能保证在单线程中不出问题,在多线程中不能保证。 重排序:在没有同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些调整。 最低安全性在大多数情况下能得到保证,但是存在一个例外:非valatile类型的64位数值变量(double,long)。
2017-10-17 23:24:12
404
原创 java并发编程实践第二遍笔记(-)
一、简介java多线程的问题:线程安全问题,活跃性问题(多线程死锁,单线程无限循环),性能问题(主要是频繁的切换上线文的开销)多线程无处不在,servlet RMI。二、线程安全性修复线程安全问题的方式: 不在线程之间共享该状态变量。 将状态变量修改为不可变的变量。 在访问状态变量时使用同步。尽量编写可维护性高的类。为了保证类的线程安全最好要把同步机制封装在类内部。无状态的类:既不包含任
2017-10-14 22:20:57
461
转载 闭包
PS:该文章引用自廖雪峰的博客 其中橘黄色的部分为自己笔记,红色部分为重点。函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个对Array的求和。通常情况下,求和的函数是这样定义的:function sum(arr) { return arr.reduce(function (x, y) { return x + y; });
2017-10-11 23:28:28
345
原创 redis
1、感觉redis的数据结构跟符合内存中数据结构,而不像关系型数据库,需要转换。所以某些场景下将内存中的数据存到redis中的话会更方便,不用建表,建索引,写xml文件,排序等。对链表结构的数据做push和pop等操作。需要比较复杂操作用redis比如集合,list,消息队列的操作可以用redis,简单的读写操作可以用memcache。memcache比redis 支持的数据结构少一些,不
2017-10-05 11:43:13
325
1
转载 Java集合框架
作者:高明飞原文链接:https://gaomf.cn/2016/09/16/Java%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/Java中提供了丰富的容器类用于存储数据,这些容器类可分为两大类:Collection和Map,Collection用于保存单个元素,而Map则以键值对的形式进行存储,就像一个小型数据库一样。Collection中又可分为List、
2017-10-03 16:48:03
338
原创 java集合
ArraryList 默认容量是10,扩容默是原容量的1.5倍。add和remove除了不带index参数的add方法外其余情况下都要调用System.arraycopy比较消耗性能。不带index参数的add如果不需要扩容就不会调用System.arraycopy。hashset 底层全是调用的hashmap的方法。可以认为是一个值为空的hashmaplinkedhashset 底层调用
2017-10-02 17:04:01
292
原创 java 泛型
1. 泛型解决的问题:解决了由于类型强制转换产生的类型安全问题。避免了类膨胀。如果没有泛型一个List(不一定要限定为list可以是任何有泛型参数的类)。只能装一个中类型比如要装A需要定义一个类ListA,要装B需要定义一个listB。这样会造成类膨胀的问题,还有一种方法是将所有要装入List的对象都向下转型为Object(其实java泛型就是这样实现泛型只是一种语法糖),但这样读取lis
2017-09-26 21:57:05
399
原创 类型安全
类型安全是只同一段内存在不同的地方,会被强制要求使用相同的办法来解释(内存中的数据是用类型来解释的)。java语言是类型安全的,除非强制类型转换。c语言不是类型安全的因为同一段内存可以用不同的数据类型来解释,比如1用int来解释就是1,用boolean来解释就是true。
2017-09-26 20:41:57
990
转载 vim 替换
语法为 :[addr]s/源字符串/目的字符串/[option]全局替换命令为::%s/源字符串/目的字符串/g[addr] 表示检索范围,省略时表示当前行。如:“1,20” :表示从第1行到20行;“%” :表示整个文件,同“1,$”;“. ,$” :从当前行到文件尾;s : 表示替换操作[option] : 表示操作类型如:g 表示全局替换; c 表
2017-07-07 19:14:07
447
原创 vim手册
技巧:快速提高 Vi/Vim 使用效率的原则与途径 shift+g 最后一行 gg第一行 shift+$最后一列 shift+^第一列 ctrl+v竖行编辑
2017-06-20 23:02:55
324
原创 brew 用法
查看软件列表brew cask search | grep vim #安装软件 brew cask install caskroom/cask/macvim
2017-06-20 01:04:20
505
原创 mysql transaction
参考: MySQL 加锁处理分析 mysql官方文档 sql 92隔离级别 隔离级别 脏读 不可重复读 幻读 read uncommitted Y Y Y read committed N Y(sql92)N(mysql InnoDB) Y repeatable read N N Y(sql92)N(mysql InnoDB)
2017-06-04 21:29:37
516
原创 nohup &
Linux/Unix下,通常只有守护进程可在脱离终端的情况下能继续执行,而普通进程在关闭终端时会因收到SIGHUP信号(挂起信号)而退出。当终端退出后,由该终端启动的后台程序自动退出。若想命令在后台运行,则可用 & 指定命令在后台运行;若想终端退出后程序不停止运行,则可用nohup命令启动后台程序。nohup(=no hang up),使命令忽略SIGHUP信号; [语法] nohup Comma
2017-05-17 11:05:36
528
原创 java8 双冒号运算符::
前面的章节我们提及到过双冒号运算符,双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。 例如 表达式: person -> person.getAge(); 可以替换
2017-05-14 10:53:42
10509
转载 java访问控制符
Java中的控制符,用来控制其他类能否访问Java中的某一方法、变量,即控制java类、方法、变量的可见性、可访问性,从而实现数据封装。Java中有两个级别的访问控制符。 类级别:控制其他类能否使用该类。有2中类型: public 和 package-private 成员级别:控制某一方法、变量的访问权限。有4种类型: public , protected, package-private,
2017-05-14 10:02:49
675
原创 charles 抓包
安装网上搜http抓包 设置手机代理ip为电脑ip,默认端口为8888(可以在proxy/proxy settings中修改)https抓包 设置 Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser 根据步骤1操作后的提示在ipho
2017-05-12 16:39:50
405
原创 bashrc 和 profile 的区别
在 UNIX 世界,rc 经常被用作程序之启动脚本的文件名。它是“run commands”(运行命令)的缩写。Shell是一个程序,最常用的就是Bash,这也是登录系统默认会使用的Shell。bashrc和profile都是Shell的启动设置文件(其实这两个文件也是Shell脚本),可以为当前的Shell初始化环境变量等,它们类似Microsoft DOS/Window
2017-04-03 11:34:23
3150
原创 java内存
1、我们说的变量方法类在内存中的地址其实是让jvm来寻找并且计算的。2、java的运行时数据区分为heap、stack和method。3、栈只是存放线程运行时数据存放处,方法逻辑的3、基础数据类型直接在栈空间分配, 方法的形式参数(如非基础类型则为对象在heap中的引用地址,基础类型则为基础类型的值),直接在栈空间分配,当方法调用完成后从栈空间回收。(以后有能力的再理解这部分内容)
2017-03-08 23:57:37
332
原创 linux基础
1、命令列模式里面下达命令时,会有两种主要的情况:一种是该命令会直接显示结果然后回到命令提示字符等待下一个命令的输入;一种是进入到该命令的环境,直到结束该命令才回到命令提示字符的环境。我们以一个简单的图示来说明:2、
2017-03-06 23:09:11
330
转载 使用 Java8 Optional 的正确姿势
转载:https://www.oschina.net/news/76993/java8-optional 我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 NullPointException 的问题, 于是代码就开始这么写了Optional user = ……if (u
2017-03-05 23:19:17
1757
转载 为什么lambda表达式要用final
转自:http://unmi.cc/java-8-lambda-capture-outer-variables/可能会把捕获外部变量的 Lambda 表达式称为闭包,那么 Java 8 的 Lambda 可以捕获什么变量呢?捕获实例或静态变量是没有限制的(可认为是通过 final 类型的局部变量 this 来引用前两者)捕获的局部变量必须显式的声明为 final 或实际效果
2017-03-05 21:53:17
37932
9
原创 项目启动时获取项目中的所有url
@Componentpublic class SpringMvcUrlUtil implements ServletContextListener { @Autowired private RequestMappingHandlerMapping handlerMapping; /** * Receives notification that the web
2017-03-05 09:39:44
1667
转载 lucene(Kibana)搜索规则
kibanna用的是lucene的搜索规则Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html(1) 语法关键字+ - && || ! ( ) { } [ ] ^ " ~ * ? : \如果所要查询的查询词中本身包含关键字,则需要用\进行转义(2) 查询词(Ter
2017-03-04 22:19:59
5659
原创 ubuntu基础设置
1、按转jdk:sudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installer设置环境变量:vim ~/.bashrcexport JAVA_HOME=/usr/lib/jvm/java-8-oracleexpor
2017-03-03 22:57:18
655
原创 idea常见问题
1、当类名的左上边有白色的小×时表明该类被设置成不编译了:setting->builder->compiler->excludes
2017-03-02 16:33:23
568
原创 ssh常识
一、ssh 公钥格式ssh 公钥主要有两种格式PEM 公钥格式PEM 公钥格式也被称为 SECSH 公钥格式---- BEGIN SSH2 PUBLIC KEY ----Comment: "2048-bit RSA, converted by test@test from OpenSSH"AAAAB3NzaC1yc2EAAAADAQABAAABAQDSO
2017-02-27 23:34:29
1144
原创 linux软件安装
根据包的管理方式linux系统可以分 为两类 debian类和redhat类。debian类常用命令:dpkg不解决依赖问题apt-get解决依赖问题apttitude在处理依赖问题上更好一些。aptitude update #更新源如果源是https的休要先安装对方的公钥然后添加源。Install the repository GPG key:
2017-02-21 00:48:09
452
原创 su ,sudo命令
1、su在不退出系统的情况下切换用户。2、sudo临时给权限给某个用户。sudo的优点: a、不需要知道所要代替用户的密码不用把密码泄漏给当前用户。su需要知道其他用户密码。b、只有本次执行有权限。如果把该权限直接分配给用户容易产生危险的操作。c、能记录用户的访问日志。
2017-02-19 23:09:47
433
原创 ubuntu U盘安装
1、下载U按照制作工具 Universal USB Installer。2、bios设置引导顺序第一位为U盘。3、分区大小a、/boot5G b、/(根目录)50G c、/EFI(efi格式)2G efi bios 需要,要不然会安装失败,但是安装成功后没找到改分为。d、swap 2Ge、/usr 剩余空间的一半f、/home 剩余空间的一半。4、bios的...
2017-02-19 16:53:44
530
原创 心得
1、会用和掌握的区别,会用就是按照使用说明说来能使用,掌握就是出现问题大部分能自己解决。举个例子,某块地上有很多陷阱别人告诉你往南走5米,右转走3米,左转走8米就能避开所有陷阱走过去(会使用)。如果你能认识陷阱,就能以多种方法走过去,即是陷阱的位置移动了也能安全的走过去(掌握)。
2017-02-18 15:23:12
375
1
原创 新建maven结构的项目
1、新建父的pom.xml,父pom的module要单独到一个文件夹A,不用把其他module的文件文件夹放到A里面,这样更灵活不容易出现问题。
2017-02-17 15:59:42
341
mysql在什么情况下免费啊
2016-04-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人