学习Maven遇到的一些坑
学习Maven遇到的一些坑Maven新建webapp项目index.jsp报错
解决办法:直接在pom.xml文件中添加jar包支持
12345<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version></dependency>
maven 不再支持源选项 1.5。请使用 1.6 或更高版本
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent![INFO] Compiling 11 source files to D:\JAVA\JavaWorkspace\IdeaProjects\test2\target\classes[INFO] ————— ...
大数据01
1、大数据
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。[1]
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》[2] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)
2、数据仓库
企业的数据处理大致分为两类。一类是操作型处理,也叫联机事务处理(OnLine Transaction Processing,OLTP),它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。另一类是分析型处理,一般针对某些主题的历史数据进行分析,支持管理决策。
(1)处理性能。日常业务涉及频繁、简单的数据存取,因 ...
JavaScript继承方式
原型链继承
原型链的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。
12345678910111213141516var A = { name:'A', color:['red','green'], sayA:function(){ console.log('from A'); }};//使用Object.create方法先复制一个对象var B = Object.create(A,{ name:{ value:'B' }});console.log(B)//Object{name:'B'}B.sayA()//'from A'
寄生式继承
创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后返回对象。
123456789101112131415 ...
Java7/8/9语法新特性
Java7/8/9语法新特性Java7
Java7的新特性是相对于Java6而言的,增加的特性如下:
二进制变量的表示,支持将整数类型用二进制来表示,用0b开头。123456789101112131415161718// 所有整数 int, short,long,byte都可以用二进制表示 // An 8-bit 'byte' value: byte aByte = (byte) 0b00100001; // A 16-bit 'short' value: short aShort = (short) 0b1010000101000101; // Some 32-bit 'int' values: intanInt1 = 0b10100001010001011010000101000101; intanInt2 = 0b101; intanInt3 = 0B101; // The B can be upper or lower case. // A ...
Linux Shell脚本工具实践
Linux Shell脚本工具实践Cut
在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
用法cut [选项参数] filename
说明:默认分隔符是制表符
参数说明
参数
功能
-f
列号,提取第几列
-d
分隔符,按照指定分隔符分割列
样例123456[root@localhost ~]# vim cut.txtdong shenguan zhenwo wolai laile le
切割cut.txt第一列
123456[root@localhost ~]# cut -d " " -f 1 cut.txtdongguanwolaile
切割cut.txt第二、三列
123456[root@localhost ~]# cut -d " " -f 2,3 cut.txtshenzhen wo lai le
在cut.txt文件中切割出guan
12[root@localhost ~]# cat cut.txt | grep "guan ...
手撸一个ORM框架
手撸一个ORM框架
ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。
只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有五种:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink,JFinal。
手写一个简单的ORM框架来实现CRUD功能,主要用到Java的反射和注解功能.大致步骤如下:
数据库连接配置,包括配置文件,数据源连接池的实现
实现注解功能,注解解析
实体类与表字段映射
实现crud,结果处理
数据库连接1234driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/orm?useUnicode=true&characterEncoding=utf-8&useSSL=trueusername=rootpassword=123456
数据源配置12345678 ...
Zookeeper实现分布式锁
Zookeeper实现分布式锁Zookeeper节点节点是zookeeper中数据存储的基础结构,zk的数据模型就是基于好多个节点的树结构,但zk规定每个节点的引用规则是路径引用。每个节点中包含子节点引用、存储数据、访问权限以及节点元数据等四部分。 zookeeper对于自身节点的监听者提供事件通知功能 。
节点类型Zookeeper中提供了四种类型的节点,各种类型节点及其区别如下:
持久节点(PERSISTENT):节点创建后,就一直存在,直到有删除操作来主动清除这个节点
持久顺序节点(PERSISTENT_SEQUENTIAL):保留持久节点的特性,额外的特性是,每个节点会为其第一层子节点维护一个顺序,记录每个子节点创建的先后顺序,ZK会自动为给定节点名加上一个数字后缀(自增的),作为新的节点名。
临时节点(EPHEMERAL):和持久节点不同的是,临时节点的生命周期和客户端会话绑定,当然也可以主动删除。
临时顺序节点(EPHEMERAL_SEQUENTIAL):保留临时节点的特性,额外的特性如持久顺序节点的额外特性。
zookeeper具备了实现分布式锁的基础条件:多进程 ...
Curator框架应用实现Zookeeper分布式锁
Curator框架应用实现Zookeeper分布式锁CuratorFramework
Curator框架提供了一套高级的API, 简化了ZooKeeper的操作。 它增加了很多使用ZooKeeper开发的特性,可以处理ZooKeeper集群复杂的连接管理和重试机制。
Curator主要解决了三类问题:
封装ZooKeeper client与ZooKeeper
server之间的连接处理 提供了一套Fluent风格的操作API
提供ZooKeeper各种应用场景(recipe, 比如共享锁服务, 集群领导选举机制)的抽象封装
组成部分
Client: 是ZooKeeper客户端的一个替代品, 提供了一些底层处理和相关的工具方法
Framework: 用来简化ZooKeeper高级功能的使用, 并增加了一些新的功能, 比如管理到ZooKeeper集群的连接, 重试处理 Recipes: 实现了通用ZooKeeper的
recipe, 该组件建立在Framework的基础之上
Utilities:各种ZooKeeper的工具类
Errors: 异常处理, 连接, 恢复等 ...
Redis分布式锁实现高并发控制实践
Redis分布式锁实现高并发控制实践分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
分布式锁基本功能
1.同一时刻只能存在一个锁
2.需要解决意外死锁问题,也就是锁能超时自动释放
3.支持主动释放锁
分布式锁解决什么问题
多进程并发执行任务时,需要保证任务的有序性或者唯一性
分布式锁适用场景
场景一:从前端界面发起一笔支付请求,如果前端没有做防重处理,那么可能在某一个时刻会有二笔一样的单子同时到达系统后台。
场景二:在App中下订单的时候,点击确认之后,没反应,就又点击了几次。在这种情况下,如果无法保证该接口的幂等性,那么将会出现重复下单问题。在接收消息的时候,消息推送重复。如果处理消息的接口无法保证幂等,那么重复消费消息产生的影响可能会非常大
场景三:秒杀场景,数据库里有一张表,column分别是商品ID,和商品ID对应的库存量,秒杀成功就将此商品库 ...