- 博客(42)
- 资源 (27)
- 收藏
- 关注
转载 Java并发编程-无锁CAS与Unsafe类及其并发包Atomic
在前面一篇博文中,我们曾经详谈过有锁并发的典型代表synchronized关键字,通过该关键字可以控制并发执行过程中有且只有一个线程可以访问共享资源,其原理是通过当前线程持有当前对象锁,从而拥有访问权限,而其他没有持有当前对象锁的线程无法拥有访问权限,也就保证了线程安全。但在本篇中,我们将会详聊另外一种反向而行的并发策略,即无锁并发,即不加锁也能保证并发执行的安全性。 本篇的思路是先阐明无锁执
2017-08-31 19:00:25 253
原创 公平锁和非公平锁
公平锁: Threads acquire a fair lock in the order in which they requested it 非公平锁: a nonfair lock permits barging: threads requesting a lock can jump ahead of the queue of waiting threads if the lock h
2017-08-28 10:51:21 555
原创 Hbase集群搭建及Shell使用
准备三台机器node-131 node-132 node-133 这里为主机名,也可写入IP,主机名需要在/etc/hosts文件里加入对应节点信息。Hbase启动依赖于zookeeper集群和Hadoop集群, 在配置Hbase前先搭建好Zookeeper和Hadoop环境 具体搭建请参考前面两篇文章 Zookeeper集群配置 Hadoop集群安装 方便集群启动所机器请先做
2017-08-25 15:09:15 3869
原创 Hadoop集群安装
node-131 node-132 node-133 这里为主机名,也可写入IP,主机名需要在/etc/hosts文件里加入对应节点信息。下载https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz安装1.解压进入/usr/local.hadoop/目录,将下载的文
2017-08-25 14:31:30 4584
原创 Zookeeper集群配置
准备三台机器node-131 node-132 node-133 这里为主机名,也可写入IP,主机名需要在/etc/hosts文件里加入对应节点信息。下载zookeeper包http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.10.tar.gz安装1.解压 进入指定目录,解压命令: Tar -zxvf
2017-08-25 14:07:38 4895
原创 运行shell脚本,错误:-bash: ./xxx.sh: /bin/bash^M: bad interpreter: No such file or directory
今天准备写一个脚本一次性启动zookeeper,hadoop,hbase。发现执行脚本报如下错误: 他报错找不到该文件或者目录,发现明明就有的啊.主要原因是 我在windows下编辑然后上传到Linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。1.首先用vi命令打开文件2.在vi命令模式中使用 :set ff 命令返回的结
2017-08-25 10:28:36 2694 1
原创 Linux服务器间做免密钥登录
Linux服务器间做免密钥登录有三台主机:[email protected]@[email protected] 新建 /root/.ssh目录d到该目录(目录地址可自己定义)1.对每台机器运行ssh-keygen -t rsa指令期间会出现三条需要你输入的选项Enter file i
2017-08-24 15:33:17 4868
原创 Redis 集群搭建
1.创建多个节点,基本配置如下:port 7000 //端口7000,7002,7003 bind 本机ip //默认ip为127.0.0.1 需要改为 其他节点机器可访问的ip 否则创建集群时无法访
2017-08-22 16:31:23 2987
原创 Linux 复制文件
复制文件,只有源文件较目的文件的修改时间新时,才复制文件 cp -u -v file1 file2 .将文件file1复制成文件file2 cp file1 file2 .采用交互方式将文件file1复制成文件file2 cp -i file1 file2 .将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制
2017-08-22 16:27:48 2303
原创 linux解压文件命令
tar -xJf node-v4.4.4-linux-x64.tar.xz 1、*.tar 用 tar -xvf 解压 2、*.gz 用 gzip -d或者gunzip 解压 3、.tar.gz和.tgz 用 tar -xzf 解压 4、*.bz2 用 bzip2 -d或者用bunzip2 解压 5、*.tar.bz2用tar -xjf 解压 6、*.Z 用 uncompress 解压
2017-08-22 16:27:15 1781
原创 ubnntu安装jdk
1.添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update2.安装oracle-java-installer jdk7 sudo apt-get install oracle-java7-installer jdk8 sudo apt-get install oracle-java8-installer
2017-08-22 16:26:19 1634
原创 linux 端口开放
安装iptables apt-get install iptables安装好了之后就可以添加规则了 iptables -I INPUT -p tcp –dport 80 -j ACCEPT然后可以直接保存了 iptables-save持久化iptables 上文那样做只是暂时保存了开放端口的信息,如果服务器重启,保存的信息就掉了,所以我们需要持久化一下端口信息,这里我们使用 iptables
2017-08-22 16:25:28 1498
原创 linux 安装SSH
(1)关闭防火墙,执行sudo ufw disable(不一定需要) (2)安装OpenSSH,执行sudo apt-get install openssh-server openssh-client命令。 (3)执行netstat -tnl命令,查看22端口是否开通。
2017-08-22 16:24:26 781
原创 Linux 常用命令
查看tomcat运行日志 tail -f catalina.out启动tomcat ./startup.sh设置文件可读可写可执行:chmod 777 index.html 或者 chmod -R a+w 目录名linux 查看网速:watch -n 1 “/sbin/ifconfig eth0 | grep bytes”ps 命令用于查看当前正在运行的进程: ps -ef | grep javal
2017-08-22 16:23:44 749
转载 MySQL必知必会知识点总结一二
一、MySQL官方文档地址https://dev.mysql.com/doc/refman/5.7/en/二、MySQL常用命令1、如何登陆MySQL数据库mysql -u username -p2、如何开启/关闭mysql服务service mysql start/stop3、查看mysql的状态service mysql stat
2017-08-18 16:07:52 3512 1
转载 MySQL存储引擎MyISAM与InnoDB区别总结整理
1、MySQL默认存储引擎的变迁在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。2、MyISAM与InnoDB存储引擎的主要特点MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得
2017-08-18 16:06:21 759
转载 mysql数据库分库分表策略的具体实现方案
相关文章:1、 使用Spring AOP实现MySQL数据库读写分离案例分析2、MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解:http://blog.csdn.net/xlgen157387/article/details/513312443、MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结:http:/
2017-08-18 16:04:39 3712
转载 MySQL 清除表空间碎片
碎片产生的原因(1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白、被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大;(2)当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;(3)当MySQL对数据进行扫描时,它扫描的对象实际是列表的容
2017-08-18 16:02:30 784
转载 MySQL开发规范与使用技巧总结
1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_table_names,不可动态更改,Linux系统默认为 0,即库表名以实际情况存储,大小写敏感。如果是1,以小写存储,大小写不敏感。如果是2,以实际情况存储,但以小写比较。 b)如果大小写混合使用,可能存在abc,Abc,ABC等多个表共存,容易导致混乱。 c)字段名显示区分大
2017-08-18 16:01:20 3482
转载 mysql常见面试题
1、如何登陆mysql数据库MySQL -u username -p2、如何开启/关闭mysql服务service mysql start/stop3、查看mysql的状态service mysql status4、如何显示数所有数据库show databases5、如何获取表内所有字段对象的名称和类型describe tab
2017-08-18 16:00:15 3515
转载 并发控制中的乐观锁与悲观锁
为什么需要锁?在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。2典型的冲突类型:(1)丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。(2)脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。例如:用户A,B看
2017-08-18 15:57:46 774
转载 数据库的隔离级别与事务的特性
数据库的隔离级别分类1.Read Uncommited(未提交读):没有提交就可以读取到数据(发出了insert,但没有commit就可以读取到);2.Read Commited(提交读):只有提交后才可以读;3.Repeatable Read(可重复读):MySQL默认级别,必须提交才能看到,读取数据是数据被锁住;4.Serialiazable(序列化读):最高隔
2017-08-18 15:56:55 757
转载 使用mysqlreplicate命令快速搭建 Mysql 主从复制
MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合。与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少。(可参考:http://blog.csdn.net/xlgen157387/article/details/5
2017-08-18 15:53:46 825
转载 mysql查询效率总结
1、数据库设计方面: A. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 B. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:selec
2017-08-18 15:46:09 4753
原创 丑数
题目大致为: 丑数的定义为:只包含因子2,3和5的数。求按从小到大的顺序的第1500个丑数。约定:1当做第一个丑数。 思路: 设置三个指针分别代表该位置2,*3和*5,并将这三个数中的最小值插入数组中,若当前位置的值对应的因子<=刚插入的值,便将该指针后移,直到新的位置上的值*对应的因子>刚插入的值。 Java实现:package com.sun.jojo.datastruc
2017-08-17 18:58:41 761
原创 第一个只出现一次的字符
题目大致为: 在字符串中找出第一个只出现一次的字符。 思路: 在Java中可以把字符串转换成字符数组处理,可以使用HashMap的数据结构存储,其中key为字符,value为对应出现的次数,这样通过两次遍历字符数组就可以找出,其中,第一次是构建HashMap,第二次是对每个字符判断其HashMap中对应的value的值是否为1。 java:package com.su
2017-08-17 18:56:16 747
原创 圆圈中最后剩下的数字(约瑟夫环问题)
题目大致为: 0,1,…,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。从m+1个数重新开始,求出这个圆圈里剩下的最后一个数字。 思路: 第一种办法就是通过环形链表模拟这样的删除过程; Java代码package com.sun.jojo.datastructure;/** * Author sunjiamin * Date 2017/8/1
2017-08-16 16:54:26 939
原创 最小的k个数
题目大致为: 输入n个整数,找出其中最小的k个数。 思路: 使用类似二叉查找树的形式实现,控制好树中的结点个数为k。 Java代码package com.sun.jojo.datastructure;import java.util.Iterator;import java.util.TreeSet;/** * Author sunjiamin * Date 2017/
2017-08-15 16:21:10 927 1
原创 两个链表的第一个公共结点
题目大致为: 输入两个链表,找出它们的第一个公共结点。 思路: 第一个公共结点开始往后都是公共结点,所以在末尾向前遍历,就可以找到第一个公共结点。利用上面的思想,可以先计算两个链表的长度,计算两个链表的长度差,然后先遍历较长的链表,等到剩余长度相等时开始同时遍历,这样就能较快地找到相同的结点,时间复杂度为O(m+n),其中m,n分别为两个链表的长度。package com.sun.jo
2017-08-15 15:51:22 812
原创 TCP三次握手/四次挥手
CP三次握手 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 TCP三次握手的过程为: ● 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; ● 第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置
2017-08-13 16:40:16 2937
原创 spring容器创建对象的3种方式(bean的实例化)
spring容器创建对象的3种方式(bean的实例化) **1,调用默认的构造函数(默认)** 1)指定bean的class属性 2)class需要一个默认的空构造器 <bean id="helloWorld" class="com.jxn.HelloWorld" /> 得到实例对象: H
2017-08-13 16:25:17 5300
原创 Fork/Join框架
什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+100
2017-08-13 16:19:20 2549
转载 Java String面试题
试题一、String s = new String(“abc”)创建了几个对象? String s = new String(“abc”)实际上是”abc”本身就是字符串池中的一个对象,在运行 new String()时,把字符串池的字符串”abc”复制到堆中,并把这个对象的应用交给s,所以创建了两个String对象,一个在字符串池中,一个在堆中。(注:我们假设的是字符串池中默认是没有abc字符串
2017-08-11 10:21:51 1268
原创 Java并发之CountDownLatch、CyclicBarrier和Semaphore
这次说一下 JUC 中的同步器三个主要的成员:CountDownLatch、CyclicBarrier 和 Semaphore(不知道有没有初学者觉得这三个的名字不太好记)。这三个是 JUC 中较为常用的同步器,通过它们可以方便地实现很多线程之间协作的功能。(下面的代码出自 JDK 文档) CountDownLatch 直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门
2017-08-10 13:50:52 1145
原创 java虚拟机规定必须立即初始化类的5种情况
Java类加载机制中,规定了有且仅有5种情况必须立即对类进行初始化(而加载,验证,准备自然再次之前): 1. 遇到new,getstatic,putstatic和invokestatic这4条指令时,如果类没有初始化时,必须初始化类。四条指令对应我们日常所见的 使用new关键字实例化对象,读取一个类的静态字段,设置一个类的静态字段(被final修饰的静态字段除外,因为已在编译期把结果放入常量池
2017-08-09 14:06:42 4024
原创 java MethodHandle解析
简介 java7在JSR 292中增加了对动态类型语言的支持,使Java也可以像C语言那样将方法作为参数传递,其实现在lava.lang.invoke包中。MethodHandle作用类似于反射中的Method类,但它比Method类要更加灵活和轻量级。通过MethodHandle进行方法调用一般需要以下几步: (1)创建MethodType对象,指定方法的签名; (2)在MethodHand
2017-08-09 11:25:22 3118
原创 synchronized和volatile理解
一,volatile关键字的可见性 要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下: 从图中可以看出: ①每个线程都有一个自己的本地内存空间–线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作 ②对该变量操作完后,在某个时间再把变量刷新回主内存 关于JAVA内存模型,更详细的可参考: 深入理解
2017-08-08 15:56:13 3282
原创 String a = "abc" 与String b = new String("abc")的区别
假如我们, String a = “abc”; “abc”存在字符串常量池中 String b = “abc”;if(a == b){} //这里 == 判断的是a b 是否指向”abc”这个字符内存池,在堆区里面的一块相同地址!——-假如我们这样做——- String a = “abc”; String b = “ab” + “c”;if(a == b){} //这里也是相等的,因为只有
2017-08-08 15:50:32 2896
原创 Java中ArrayList和LinkedList区别
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为
2017-08-08 15:46:51 1388
原创 Java中Array与ArrayList的主要区别
1)精辟阐述: 可以将 ArrayList想象成一种“会自动扩增容量的Array”。2)Array([]):最高效;但是其容量固定且无法动态改变; ArrayList: 容量可动态增长;但牺牲效率;3)建议: 基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList! 不过当你试着解决更一般化的问题时,Array的功能就可能过于受限。4)Java中一
2017-08-08 15:44:20 1154
制作登录界面
2011-11-23
制作小动画
2011-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人