![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础代码整理
文章平均质量分 85
龙骨
这个作者很懒,什么都没留下…
展开
-
volatile适用场景
1.volatile最适用一个线程写,多个线程读的场合。 如果有多个线程并发写操作,仍然需要使用锁或者线程安全的容器或者原子变量来代替。(摘自Netty权威指南) 疑问:如果只是赋值的原子操作,是否可以多个线程写?(答案:可以,但是一般没有这样的必要,即没有这样的应用场景) 最经典的使用案例:volatile boolean shutdownRequested;...转载 2018-01-27 21:02:27 · 516 阅读 · 0 评论 -
StringBuilder在高性能场景下的正确用法
简单使用示例 List assetIp = buildIpLists(); StringBuilder ips = new StringBuilder(128 + assetIp.size() * 15); for (Integer ip : assetIp) { if ( ips.length()>0 ){转载 2017-08-26 19:51:11 · 2689 阅读 · 1 评论 -
深入理解java中的Soft references && Weak references && Phantom reference
转:http://m.blog.csdn.net/xlinsist/引言Ethan Nicholas 在他的一篇文章中说:他面试了20多个Java高级工程师,他们每个人都至少有5年的Java从业经验,当他问这些工程师对于Weak References 的理解时,只有其中的2个人知道Weak References 的存在,而这2个人中,只有1人知道如何去使用Weak Refe转载 2017-09-11 18:34:22 · 426 阅读 · 0 评论 -
Json的简单操作
1、实例化 实例化JSON对象:JSONObject jsonObj = new JSONObject(); 实例化JSON数组:JSONArray jsonArr = new JSONArray();2、2.1字符串与Json转换 String JsonStr="{'id':'01','name':'zhang','sex':'man'}";原创 2017-09-17 15:40:19 · 3216 阅读 · 0 评论 -
正则表达式
近期做项目遇到了正则表达式,再次仔细看了一下他的语法,先分享出来与大家共享1、元字符元字符匹配2、出现频次3、定位符4、范围符5.常见正则表达式原创 2017-05-27 00:45:55 · 324 阅读 · 0 评论 -
Java多线程之线程安全与异步执行
多线程并发修改一个数据结构,很容易破坏这个数据结构,如散列表。锁能够保护共享数据结构,但选择线程安全的实现更好更容易,如阻塞队列就是线程安全的集合。线程安全的集合Vector和HashTable类提供了线程安全的动态数组和散列表,而ArrayList和HashMap却不是线程安全的。java.util.concurrent包提供了映射表、有序集、队列的高效实现,如:转载 2017-08-26 17:54:19 · 1347 阅读 · 0 评论 -
时间复杂度
一个小伙子前几天问道时间复杂度具体怎么计算,哎,太年轻。基本操作,即只有常数项,认为其时间复杂度为O(1)顺序结构,时间复杂度按加法进行计算循环结构,时间复杂度按乘法进行计算分支结构,时间复杂度取最大值判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度原创 2017-08-16 00:03:21 · 532 阅读 · 0 评论 -
String中intern的方法
internpublic String intern()返回字符串对象的规范化表示形式。一个初始时为空的字符串池,它由类 String 私有地维护。当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返转载 2017-09-04 08:53:24 · 205 阅读 · 0 评论 -
线程安全
转:http://blog.csdn.net/zhongguoren666/article/category/1063361http://blog.csdn.net/zhongguoren666/article/category/855957/1什么是线程安全? 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运转载 2017-08-21 18:21:54 · 173 阅读 · 0 评论 -
HashMap操作
有段时间没写java代码,竟然有些生疏,整理一些HashMap操作 Map map = new HashMap(); map.put("1", "a"); map.put("2", "b"); map.put("3", "c"); // 遍历map的第一种方式 Set> entry = map.entrySet(); Iterator> ite = entry.it原创 2017-12-14 21:48:04 · 916 阅读 · 0 评论 -
list转map & Java Stream的使用
一、list ->Map1、有如下表对应表结构,实现1.1、List<RedBagGood> redBagGoodsList ---> List<Long> suSnapIds1.2、List<SuSnapInfo> suSnapInfoList ---> Map<Long,List<SuSnapInfo...原创 2017-12-12 14:35:41 · 403 阅读 · 0 评论 -
Collection
Collection子接口Set,List集合中只能放置对象的引用,不能放置原生数据类型,我们需要使用原生数据类型的封装类才能加入到集合中Ordered与Sorted接口Ordered排序,按照某种由具体情况决定的顺序排序,是后天指定的Sorted排序,按照天然顺序进行排序,是先天指定的List...原创 2017-12-14 16:03:36 · 213 阅读 · 0 评论 -
TreeMap删除第一个倒叙输出
mark一下,有时间整理。之前没有注意,今天在mr中用这个取topN竟然效果更棒。TreeMap map.lastEntry() //获取到treeMap中的第一个Entry或者最后一个Entry map.remove(map.firstKey()) //获取最后一个key map.lastEntry().getValue() //获取最后一个key对应的的值 map.remove(原创 2018-01-18 02:50:19 · 1415 阅读 · 0 评论 -
使用FileChannel实现文件复制
今天在资深开发者交流,遇到了FileChannel,亲测,在进行文件复制时效果比BufferedInputStream速度要快。值得一提的是FileChannel在使用前,必须要打开。需要通过InputStream/OutputStream/RandomAccessFile获取,BufferedReader/BufferedWriter获取不到。 * @see java.io.FileIn原创 2018-01-10 00:05:03 · 3853 阅读 · 1 评论 -
python dict的使用
情景:有 A(parsed_pvlog) B(pdetail) 两个文件,当A.uuid==B.uuid时,将A文件中某一个字段(cpssrc)加到B文件中方法一:A B 文件 读一行全字段转为字典作为值。两层dict嵌套。{uu的值:{一行转为dict}}遍历A的k v ,如果db.get(k),db[k]['cpssrc']=v.get('cpssrc','')A原创 2018-01-31 23:10:32 · 1342 阅读 · 0 评论 -
合并两个有序数组为一个有序数组
import java.util.Arrays; import java.util.LinkedList; /** * 合并两个数组 int a[]={0,1,5,6,7,9,14}; int b[]={2,4,8,10,13}; * */ public class MergeTwoArray { //方法一:原创 2018-01-31 23:05:15 · 1168 阅读 · 0 评论 -
对输入的字符串类型的日期进行一定格式的日期转化
public class Test { static SimpleDateFormat sd1 = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss", Locale.US); static SimpleDateFormat sd2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static原创 2017-12-29 20:45:17 · 1058 阅读 · 0 评论 -
Java8 Stream API使用
Java8面世后,目前工作中使用最多的特性就当是Stream API。Stream API结合lamada表达式带来的是全新的编程体验,以往一些繁琐的数据处理,如今不仅条理清晰,而且代码量至少减少了一半。Stream API使用一段时间后,我就不满足于零碎的一些常用组合方式,希望对Stream有一个轮廓性的认识。因而在参考了官方文档和众多网上资料后,自己对Stream API做了一些小总结,以期达转载 2017-12-15 01:22:35 · 620 阅读 · 0 评论 -
自定义排序
1、TreeSet实现自定义排序规则class Person { String name; int score; public Person(String name, int score) { this.name = name; this.score = score; }}class PersonComparator implements Comparator { p原创 2017-12-14 22:19:18 · 207 阅读 · 0 评论 -
杂谈
1、mysql操作查看日志最近200行cd /usr/csp/coordinator/logs/tail -n 200 csp_coordinator.log登录mysql (Xshell、Cygwin)mysql -uroot "-p123456" csp //P大写不正确use csp;show tables;select * from asset limit 10;原创 2017-08-14 12:45:31 · 253 阅读 · 0 评论 -
快速失败(fail-fast)和安全失败(fail-safe)
一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变原创 2017-08-20 19:50:50 · 5544 阅读 · 0 评论 -
java中的HashTable,HashMap和HashSet
http://blog.csdn.net/SpeedMe/article/details/22485681详细的分析了Java集合《java中Map,List与Set的区别》。同时我们也对HashSet和HashMap的核心方法hashcode进行了详解,见《探索equals()和hashCode()方法》。万事俱备,那么下面我们就对基于hash算法的三个集转载 2017-07-18 20:16:40 · 304 阅读 · 0 评论 -
算法复杂度速查表
数据结构操作数据结构 时间复杂度 空间复杂度 平均 最差 最差 访问 搜索 插入 删除 访问 搜索 插入 删除 Array O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(n) O(n) Stack ...转载 2017-06-26 00:18:57 · 530 阅读 · 0 评论 -
快速排序
package quicksort;public class QuickSort { public static void main(String[] args) { int [] myint=new int[]{4,1,9,2,8,7,3,13,113,12}; show (myint); //输出排序前结果 Qsort(myi原创 2016-12-12 20:03:37 · 324 阅读 · 0 评论 -
冒泡排序
1、对数字进行排序 public static void sortNum(int [] ints){ String[] strs=new String[]{"abc","cba","bcd","zxu","avb"}; for(int i=1;i<ints.length;i++) { for(int原创 2016-12-14 19:36:03 · 268 阅读 · 0 评论 -
简单的IO流总结
IO流分为字符流和字节流。字符流:Wirter-->FileWriter-->BufferedWriter(newLine())Reader-->FileReader-->BufferedReader(readLine())字节流InputStream-->FileInputStream-->BufferedInputStreamOutputStream-->FileOut原创 2016-11-02 21:08:07 · 292 阅读 · 0 评论 -
遍历HashMap和ArrayList
一、遍历HashMap1、第一种方式 :keySet()得到所有键的集合存储在set中,存入set集合,set有迭代器,使用迭代器每次得到一个键,根据键获取值。Map map1=new HashMap();map1.put("04", new User("张一","111",18));map1.put("05", new User("张二","222",19));map1.原创 2016-10-27 22:53:49 · 684 阅读 · 1 评论 -
多线程实现文件(图片)从客户端并行上传到服务器端--多客户端实现文件上传到服务器
多线程实现文件(图片)从客户端并行上传到服务器端--多客户端实现文件上传到服务器原创 2016-09-04 17:55:12 · 2968 阅读 · 0 评论 -
公司财务发工资时,记录了当时发工资的资料Employee.txt 1.定义公司员工类Employee,属性有:工号,姓名,性别,工资(double类型),进行属性的隐藏和封装,重写toString.
公司财务发工资时,记录了当时发工资的资料Employee.txt1.定义公司员工类Employee,属性有:工号,姓名,性别,工资(double类型),进行属性的隐藏和封装,重写toString.2.将D:/Employee.txt文件用程序复制到项目根目录;3.读取项目根目录下的文件Employee.txt内容存入ArrayList<Employee>4.以工号为键,员工姓名为值存入HashMap<String,String>中.再遍历输出Map集合中的内容;5.当公司记录该信息的职员将信息交给原创 2016-09-04 15:40:32 · 12300 阅读 · 3 评论 -
有五个学生,每个学生有3门课的成绩, 从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:如:zhagnsan,30,40,60计算出总成绩, 并把学生的信息和计算出的总分数高低顺序存放在磁盘文
有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括姓名,三门课成绩),输入的格式:如:zhagnsan,30,40,60计算出总成绩,并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。1:定义一个描述学生的类2定义一个操作学生的工具类原创 2016-08-23 18:44:47 · 18412 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2016-08-23 18:43:17 · 187 阅读 · 0 评论 -
二分查找与拉格朗日差值查询
一、我们先写一个主方法:二分查找时间复杂度假使总共有n个元素,那么二分后每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。最坏的情况是K次二分之后,每个区间的大小为1,找到想要的元素令n/2^k=1,可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn). public st...原创 2016-12-12 21:16:03 · 588 阅读 · 0 评论 -
大括号匹配和字体修改
1.大括号风格改变。 Window -> Preferrence -> Java -> Formatter -> a.先new个新配置文件先,因为eclipse的配置文件可以导出,配置完一次后,便可以以后导入再用, 我决定命名为ryan-eclipse,进了edit后弹出一个框,在Braces(大括号)里面全部变成NEXT LINE除了最后一个 Array Initial转载 2016-11-26 13:50:34 · 628 阅读 · 0 评论 -
堆排序
原理:左右节点 大的给父节点,登顶后与相对i最后一个位置的数值进行交换1、堆排序实现由大到小排序 public static void swap(int[] data,int i,int j) { int temp=data[i]; data[i] =data[j]; data[j]=temp; }原创 2016-12-18 15:53:18 · 271 阅读 · 0 评论 -
SimpleDateFormat.format的简单使用小结
format的用法 是将当前时间格式转换为指定格式场景一:将当前时间format为指定日期类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E HH:MM:SS"); //显示系统当前时间 (long):Sat Sep 10 17:13:31 CST 2016 Syste原创 2017-06-29 18:41:13 · 36953 阅读 · 2 评论 -
java实现二叉树遍历
一、数据结构二叉树遍历 1. 前根序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。ABDHECFG2.中根序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。HDBEAFCG3.后根序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。HDEBFGCA二代码实现1.把一个数组的值赋值给一颗二叉树2.具体代码1.树转载 2017-03-27 23:58:50 · 405 阅读 · 0 评论 -
byte类型数据
今儿一个小朋友问我一件事情Java的byte类型的数据范围是从 -128 到 127一直在想为什么不是 -128 到 128呢?首先我们得明白一件事情,那就是运算规则:正数的最高位都是 0 ,正数的值就是二进制表示的值。 负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。原创 2017-01-16 18:40:24 · 2674 阅读 · 1 评论 -
深入源码看数据结构--集合和Map底层实现
转:http://jiadongkai-sina-com.iteye.com/category/152636这篇我准备从源码的高度来看看集合中各个实现类的是如何组织我们存进去的数据的,主要包括Java类库中提供的几个具体的类:LinkedListArrayListHashMapHashSetTreeMapTreeSetPriorityQueue(顺序按下面的讲解转载 2017-01-11 11:39:58 · 502 阅读 · 0 评论 -
字符串中用正则表达式邮箱
1、邮箱判断并提取 @Test public void test() { String line[] = new String[] { "04-|--|-jmyuncker@aol.com-|-r4Vp5iL2VbM=-|-maiden name|--", "06-|--|-fernandograciliano@hotmail.com-|-Cm8mAzxAiwzioxG原创 2016-12-22 10:23:36 · 1402 阅读 · 0 评论 -
常见小问题总结
1、当出现Java heap space时,就可以修改java虚拟机内存大小了 -Xmx6614m原创 2016-12-24 18:30:54 · 296 阅读 · 0 评论