自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟修仙记

Stay Hungry, Stay Foolish!

  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 Effective Java的90条建议

Creating and Destroying Objects考虑使用静态工厂方法替代构造方法当构造方法参数过多时使用builder模式使用私有构造方法或枚类实现Singleton属性使用私有构造方法执行非实例化依赖注入优于硬连接资源(hardwiring resources)避免创建不必要的对象消除过期的对象引用避免使用Finalizer和Cleaner机制Methods Common to All Objects使用try-with-resources语句替代try-final

2021-03-12 21:34:18 244

原创 Java校招经验

2019-06-27 17:16:08 5104

原创 如何高效的管理参考文献

Chrome + Kopernio + EndNote写作过程中不免要阅读大量的文献,尤其是英文的。对于阅读过的文章,有些选手选择在浏览器里添加书签,有些会下载下来在本地建文件夹分门别类的保存。这样的做法固然可取,但是当你在写作过程中需要去引用这些文章,并按杂志的要求调整参考文献格式的时候就觉得痛苦了,下面分享的这个组合能为你节省大量的时间。Google Chrome别用IE了,也 bal...

2019-05-03 22:56:40 6628 3

原创 使用Nginx 反向代理,通过域名直接访问Tomcat 8080端口

环境为腾讯云的CentOS 7.5 64位①安装nginx[root@VM_0_14_centos ~]# yum install nginx -y②修改配置文件进入默认配置文件的目录[root@VM_0_14_centos webapp]# cd /etc/nginxvim编辑nginx.conf[root@VM_0_14_centos nginx]# vim ...

2018-12-01 20:04:51 6512 1

原创 c3.js 提取form表单中的数据显示图线

c3.js 的数据源可以为json,参考https://c3js.org/samples/data_json.html方法一:根据form中的数据构建json对象方法二:根据form中的数据拼接json格式字符串,然后var json = JSON.parse(str);c3.generate({ bindto: '#slineChart', ...

2018-11-28 20:30:12 543

原创 SpringMVC接收Form表单中的数组数据

昨天学校项目里要做个功能,是要在前端定义一条折线端,然后提交到后台存进数据库里。折线段的话其实就是不定数量的一些点坐标,第一反应就是用Form提交一个Point 的List,后台也用List接收,然而却发现SpringMVC 不能直接接收List,需要做一点变动。学校的代码不好贴出来,我单独写个例子演示一下前端页面这样写<!DOCTYPE html><html...

2018-11-28 12:36:50 13868 2

原创 JDK源码细节——Long与Integer的缓存问题

也是在道友的面经中看到这个问题,然后去查了一下,也自己去看了源码核实了一下,看的源码版本是jdk1.8,以此做个记录创建长整型的包装类Long的实例时,可以是Long a = 100L;//自动装箱Long b = Long.valueOf(100L);//静态方法Long c = new Long(100L);//构造器我们用“==”来判断一下几个对象Long a = 1...

2018-09-24 14:37:34 482

转载 Java后端架构师技术图谱

当初觉得Java比C++写起来舒服,走了这条路,然后发现除了语言还有一万个东西要学!https://github.com/xingshaocheng/architect-awesome/blob/master/README.md

2018-08-26 16:15:09 1776

原创 深度优先搜索(DFS)

DFS是相对于BFS的另一个中图搜索算法,其与BFS最大的不同在于它是深度优先,它会优先顺着一条路径走到底,一旦某个节点邻接的节点都被发现了,就会回溯到前面一个节点,直到这个点的邻接节点都被发现,然后再回溯到前面一个节点,如此类推。DFS也采用三种颜色来做标记,白色 = 未发现灰色 = 已发现黑色 = 邻接全部已发现这点和BFS一样,BFS的文章见 https://bl...

2018-08-22 20:51:30 191

原创 广度优先搜索(BFS)

BFS是一种图搜索算法,当然这种思想也可以被借鉴到各种其他的算法中。对于图中的所有节点,我们选一个起始点s,然后去发现(遍历)所有从s 点出发能直接到达的点,为了记住这些点的状态,用三种颜色来标记这些点,白色:未发现灰色:已发现黑色:与该节点邻接的点都是灰色(都已被发现) 从s 点出发,此时s 点为灰色,然后去发现与s 邻接的所有点,如果该点为白色,此时它已被发现,...

2018-08-22 20:42:56 256

原创 如何用多线程实现归并排序

等我有时间了,一定要把《算法导论》啃完,这本书的印刷质量实在太好了,滑稽。之前听吴恩达老大说过Python里面的Numpy包的矩阵运算就是多线程的,所以能做到的情况下尽量用矩阵运算代替循环,这样能大大加快运算的速度。为了提高速度,如果不涉及外部资源读取的话,要提高运行速度就要做到并行计算,依赖于处理器的数量;如果需要等待耗时的外部资源读取,就可以通过并发边读边运算。算法导论有一章节提到...

2018-08-09 22:45:17 7516 1

原创 动态规划

等我有时间了,一定要把《算法导论》啃完,这本书的印刷质量实在太好了,就是烧脑子,滑稽。适合应用动态规划求解的最优化问题应该具备两个要素:最优子结构:一个问题的最优解包含其子问题的最优解;子问题重叠:子问题的空间足够小,问题的递归算法会反复求解相同的子问题,而不是一直生成新的子问题。常见的可以用动态规划解决的问题有:① 0-1背包问题② 最长公共子序列③ 最短路径④ ...

2018-08-09 21:10:44 220

原创 Copy-On-Write 机制

“写时复制”——要写的时候复制一份副本,往副本里面写,然后引用到这个副本,在引用到这个副本之前有读操作的话,读的还是之前的老版本,读写分离,写不影响读可以并发读读,读写,但是写写的时候还是冲突的,如果拷贝了N个副本,最后到底引用谁呢,引用某个副本,写到其他副本上的数据就丢失了,所以写要加锁,也就是一个一个来,串行写。Java集合框架里采用CopyOnWrite 机制的就两个类,当然我们...

2018-08-08 21:27:44 1719

原创 为什么应该阅读一下《并发编程实战》

因为:本书作者都是Java Community Process JSR 166专家组(并发工具)的主要成员,并在其他很多JCP专家组里任职。Brian Goetz有20多年的软件咨询行业经验,并著有至少75篇关于Java开发的文章。Tim Peierls是“现代多处理器”的典范,他在BoxPop.biz、唱片艺术和戏剧表演方面也颇有研究。Joseph Bowbeer是一个Java ME...

2018-08-08 20:20:21 223

原创 JAVA内存模型的秘密

提到Java内存模型,相信都会想到一张简单的图堆和栈,栈是线程独有的,堆是线程共享的。这句话一出来就说明这样的设计跟并发脱不了关系。在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。 通信是指线程之间以何种机制来交换信息。 在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。同步是指程序用于控制不同线程之间操作...

2018-08-07 17:05:31 249

原创 初识MySQL

去年开学的时候决定接触下MySQL,买了本书——MySQL从入门到精(fang)通(qi),跟着前面几章,下载安装、建库建表,然后就是增删改查,然后这本书就看不下去了,全书都在“你执行这个语句,然后你就会看到这种结果”,这样然后那样...可能我没选对书,说好的从入门开始呢,感觉书上内容很飘,MySQL到底是啥?有没有人给入门的孩子介绍下MySQL的基本构成?1. MySQL逻辑...

2018-08-05 17:01:56 362

原创 JAVA线程本地存储(ThreadLocal)

今天看书看到这么一句话,“防止任务在共享资源上产生冲突的第二种方式是根除对变量的共享。线程本地存储是一种自动化机制,可以为使用相同变量的每个不同线程都创建不同的存储”。(第一种方式就是进行同步控制,比如加锁喽)那么什么是线程本地存储,个人理解就是,对一个苹果,大家都把苹果放在一个桌子上存放(给域赋值),等你去拿的时候发现拿到的可能不是自己那个苹果了,ThreadLocal的做法就是你的苹果,你...

2018-08-04 20:35:25 8959 1

原创 JAVA继承中的类与对象初始化顺序

在Java类的初始化中,除了构造函数,还有构造块、静态构造块、静态域的初始化,那么在一个继承链中,它们初始化代码的执行顺序又是什么样的呢?我们先做一个简单的测试,假设现在有三个类,你爷爷、你爸爸和你。package dailyprg0801;public class Grandpa { public static int Age = 80; public Grandp...

2018-08-01 16:04:07 632 1

原创 在CentOS6.8上安装mosquitto搭建MQTT服务

这里使用的是安装在VMWare上的CentOS6.8虚拟机,用户是root①首先安装编译工具和依赖库yum install gcc gcc-c++yum install openssl-develyum install c-ares-develyum install libuuid-develyum install cmakeyum install build-essentia...

2018-07-18 22:06:42 2467 3

原创 JAVA网络编程基础

Java为网络支持提供了java.net包,我们来看一下这个这个包里几个主要的类。①InetAddress对网络协议稍微有点了解的同学都知道,网络中IP地址是个重要家伙,可以算是主机的标志符了,通过IP地址我们就知道我们是要跟哪个主机打交道。Java提供了InetAddress类来代表IP地址,它下面还有两个子类:Inet4Address、Inet6Address,很容易就能猜到分...

2018-07-17 22:17:36 191

原创 JAVA内部类浅析

从名字上解释,内部类就是在一个类的内部又定义了一个类,相对来说外面的那个类就是外围类了。为什么要这么做呢,内部类有自己的一些特点,能起到跟外围类不一样的效果:①内部类可以访问定义该类定义所在的作用域中的数据,包括私有数据。前面一句有点拗口,就是内部类跟我们平时定义变量一样,有一个作用域,比如代码块A不能访问代码块B中的变量,内部类也是类似,可以访问自己所在作用域中的所有数据,包括私有,这样...

2018-07-17 17:08:03 311

原创 在Ubuntu16.04虚拟机下快速正确的安装caffe(CPU only)

①安装依赖sudo apt-get install libprotobuf-devsudo apt-get install libleveldb-devsudo apt-get install libsnappy-devsudo apt-get install libopencv-devsudo apt-get install libhdf5-serial-devsudo apt-get...

2018-07-15 21:41:40 501

原创 JAVA反射浅析

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。就是说在运行时,我们可以写一个程序,这个程序能够获取任意一个类的各种信息,对于对象,我们还可以调用它的方法,看起来有点牛逼,上帝之手,不同于通常我们new对象然后调用方法的地方就是这是动态的。Java...

2018-07-14 19:08:02 348

原创 JAVA动态代理浅析

首先要说明的是,Java语言是不支持在运行时对类进行修改的,而支持运行时修改类的语言就可以采用声明式编程了,这里多扯一句跟声明式相对应的就是命令式编程。那要怎么让Java支持动态性呢,在不支持修改类的情况下。答案就是代理,可以运行时生成一个新的类,这个新的类就是我们要修改为的目标类,然后这个代理类代理原先的类,执行相应的功能,就好像原先的类改变了一样。那么Java是怎么实现代理的呢,直白的讲就是怎...

2018-07-13 21:48:26 188

原创 JAVA继承浅析

学校里入门一门编程语言的时候,大都会配合着数据结构和算法来练习,用到继承的地方往往并不多,倒是最近的一些工作中继承接口用的频繁,这里不谈这样做的优点,就简单描述下继承的机制,配合着IDE的调试信息给新手入个门。继承是什么:继承描述的是一个“is-a”关系,比如说学生是人,那么学生这个类就可以继承自人这个类,这里学生就是子类,人就是父类(或者叫超类,有多种说法)。Java只支持单继承,就是说一个父类...

2018-07-12 20:13:55 361

原创 读《码农翻身:用故事给技术加点料》

这是我今年看过的最喜欢的一本书!虽然昨天看到这本书在网上已经满150减50,而我买的时候并没有促销活动,有点心痛;但是,这是我今年看过的最喜欢的一本书!早看早享受!作者用故事的方式向读者展示了JavaWeb开发的一些技术要点和计算机的一些基础知识,虽然在一点底子都没有的情况下去看,不知道这些故事想表达什么,但对于入了半个门的我来说,真的是非常好的故事,作者当时一定很用心去想怎么编一个故事来表达一个...

2018-07-11 18:26:42 2256

原创 《构架探险》第一章勘误

第一章的Hello.jsp,作者提到在webapp目录下创建jsp目录,并在该目录下创建hello.jsp文件。但是在请求转发的时候,代码路径却指向的是WEB-INF目录下的jsp目录,request.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(request,response);新手这里一定要注意了,更正可以把上面的...

2018-07-06 17:36:10 178

原创 javac都干了些什么

最近在回忆自己Java的入门之路,总结点经验,写几篇文章给未来的师弟师妹参考参考,能少走点弯路我就心满意足了。国际惯例我的第一个XXX程序——HelloWorld。假设新手是不使用IDE的哈,当然也不推荐使用,那么为了实现这个HelloWorld程序我们会这个做:①安装JDK②配置环境变量③在文本编辑器里写出如下代码并命名为HelloWorld.java④到控制台执行下面的指令执行完后会发现生成了...

2018-07-04 21:39:21 2924 1

原创 JSP、Servlet和Spring MVC

今年刚接触JavaWeb的时候碰巧认识了一帮老师做后端的哥们,我俩平时用的最多的也都是Java。我:“老哥,我想给我那个项目做一个服务器应用程序,怎么搞啊”老哥:“Spring你知道吗”我:“听说过”老哥:“入下门”我:“好嘞”那会儿我俩在参加一个活动,也没细聊,有些内容我也记不住了,跟我讲了些前端的基本知识,还有就是我记住了Spring这个词。JSP、Servlet和Spring MVC的前世今...

2018-07-02 12:58:20 10699 2

原创 什么是Nginx

前段时间经常听到的一个词是“nginx反向代理”,鉴于自己还没用到也没有特地去查这句话到底是啥意思,有点不符合我的性格啊,前几天买了个腾讯云,按官网例程用Linux+Nginx+MySQL+WordPress搭建个人主页就用到了nginx,这下不得不查了。按这个组合来说,我第一感觉Nginx应该是个应用服务器吧,就像LAMP中的A=Apache服务器,“就像Tomcat”(并不,这里是我的误解哈,...

2018-07-01 16:22:28 1758

原创 什么是Redis

直接点说Redis是一个软件,可以下载安装的那种;具体点说Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。既然是存储系统,那么它跟数据库又有什么异同呢?传统的关系型数据库能够容纳海量数据,功能完善,具有事务一致...

2018-07-01 15:12:07 189

原创 Java常用类——String、StringBuffer 和StringBuilder类

    平常我自己写程序的时候,用到字符串第一反应总是String,然而Java类库里提供的字符串类却不仅仅是String,下面就来做个比较。在不清楚Java类库怎么用的时候最直接的就是百度,但百度到的往往也是个人做的解析,不够官方;官方点的就是看API文档了,就是有点费神;当然,还有最暴力的,看源码    String、StringBuffer 和StringBuilder 都在java.lan...

2018-06-26 16:00:53 238

原创 常用排序算法全解析(Java实现)

这篇博客是我之前做的一些零散笔记的重新整理,有些想不起来了,有新的内容我会更新进来。 为简单起见,假设我们讨论目标只包含整数,当然我们的程序也允许更一般的对象(实现Comparable接口中的compareTo方法)。我们还假设整个排序工作能够在主存中完成,不能在主存中完成的排序叫作外部排序,我们单独讨论。接下来我们会分析一些排序算法的实现原理,时间复杂度,针对特定待排序目标下性能优劣以及...

2018-06-24 21:13:27 354

原创 剑指offer学习(Java)——面试题7:重建二叉树

题目:输入某二叉树的前序遍历和中序遍历结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。牛客题目地址:重建二叉树/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tr...

2018-06-22 15:43:47 151

原创 Java 二叉树的遍历实现

前序遍历:先访问根节点,再访问左子节点,最后访问右子节点(根左右)中序遍历:先访问左子节点,再访问根节点,最后访问右子节点(左根右)后序遍历:先访问左子节点,再访问右子节点,最后访问根节点(左右根)这三种遍历都有递归和循环两种实现方法,每种遍历的递归实现都比循环实现要简洁的多。leetcode练习地址:二叉树的前序遍历    二叉树的中序遍历二叉树的后序遍历前序遍历的递归方法:/** * Def...

2018-06-22 11:42:38 271

原创 剑指offer学习(Java)——面试题6:从尾到头打印链表

题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值。这种要反过来的第一时间肯定想到了用栈,想到了栈也就想到了递归。牛客练习地址:从尾到头打印链表使用栈的话:/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* ...

2018-06-21 21:39:07 174

原创 剑指offer学习(Java)——面试题5:替换字符串中的空格

    题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。这题思路也很清晰,字符串,字符数组,或者其他的数组,涉及到大量移动的时候就从屁股开始牛客练习连接:替换空格代码如下:public class Solution { public String replaceSpace(StringBuff...

2018-06-21 21:16:23 179

原创 剑指offer学习(Java)——面试题4:二维数组中的查找

明天写

2018-06-21 11:44:08 159

原创 Java API中的ArrayList和LinkedList实现

明天写

2018-06-21 11:12:32 773

原创 剑指offer学习(Java)——面试题3.1:数组中的重复数字

    题目:找出数组中的重复数字    在一个长度为n的数组里所有的数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复数字。例如,输入{2,3,1,0,2,5,3},输出2或者3。假设数组中的数都在0~n-1之间解一:先排序再判断相邻数字是否相同import java.util.ArrayList;import j...

2018-06-20 22:02:23 156

altium designer 元件库

altium designer 元件库 包含常见的元件,比如单片机之类的

2011-07-22

altium designer 经典元件库

altium designer 经典元件库

2011-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除