18年摄影记录
聚贤亭——西湖十八景之一。刚来杭州那会,经常会在面试完之后的时间来到西湖边坐坐,作为一个刚来杭州的人来说,一切都是新鲜的。虽然当时经常在这里小憩,但是并不知道这个被西湖水环绕的的亭子的名字。第一张照片是17年夏天和朋友路过这里的时候拍摄的,也是那时候才知道了这个亭子叫做聚贤亭。当时就有了一个想法想要记录这里的四季变化和昼夜的不同。聚贤亭—初雪是今年年初正巧赶上了杭州大雪,本来想去看断桥残雪,结果出发途中看到有人发“断桥残(人)雪(满)”的朋友圈后,就直接到了这里,拍下了雪中的聚贤亭。19年争取把当初的想法补齐。
姑且叫他西湖长廊吧,不知道这里具体叫什么,拍摄于18年的三月底,那会刚好换工作就给自己放了几天假。三月底四月初的杭州是一年中杭州最美的时间之一。没记错的话中午从医院出来(那段时间在做腰颈的调理)。一路散步到了太子湾公园,还碰到了一些小学的春游活动。漫无目的的绕着西湖边散步,拍下了这张照片。
还是在换工作的间隙,和罗同学一次去了厦门,然后就有了下面四张照片。不过这里还是要小小的吐槽下自己,整个18年也只和罗同学一起出去过这一次。宅的属性在今年愈发地增长了。直到罗同学说 ...
左耳朵耗子程序员练级攻略(2018)资料整理
目前整理到软件设计文章,高手篇暂未整理
获取详细内容,可扫码购买专栏
文章1.Teach Yourself Programming in Ten Years (中英对照版)2.程序员的谎谬之言还是至理名言?3.The Key To Accelerating Your Coding Skills4.How To Ask Questions The Smart Way(中文版)5.97 Things Every Programmer Should Know
6.What are some of the most basic things every programmer should know(梯子?)7.The XY Problem(作者中文)
8.Code Review Best Practices(梯子?)9.How Google Does Code Review10.LinkedIn’s Tips for Highly Effective Code Review
11.JUnit 5 User Guide(中文版)12.You Still Don’t Know How to ...
腾讯云搭建hexo博客采坑记录
git环境搭建linux下的git环境搭建可以参考:传送门
ssh免密登录注意事项1.修改sshd读取免密公钥路径如果使用git在的.ssh目录,需要在root用户下对shhd_config进行修改,
vim /etc/ssh/sshd_config
在文件内找到AuthorizedKeysFile配置,配置为自己配置的authorized_keys文件路径
2. .ssh路径的权限问题需要对.ssh路径权限设置为700,authorized_keys设置为600
chmod 700 .sshchmod 600 authorized_keys
git初始化以及提交部署问题1. 初始化空仓库远程提交失败问题在仓库路径下使用命令,命令行执行
git config receive.denyCurrentBranch ignore
2.提交到仓库后自动部署在仓库.git目录下的hooks目录下创建post-recieve文件,来设定提交后部署操作,脚本可参考下面的脚本内容’
123#!/bin/shBASE_HOME=<发布路径>git ...
Tomcat源码学习(三)——启动流程之start
上一篇对于load过程进行学习,从Bootstrap的入口类可以看到启动过程主要分为三个流程——init,load和start。之前已经学习了init和load的源码,今天就来一探tomcat启动中最后一个流程start
之前我们看到bootstarp的start方法实际是通过反射调用了Catalina的start方法,接下来就看一下start方法的内容
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849/** * Start a new server instance. */ public void start() { if (getServer() == null) { load(); } if (getServer() == null) { log.fatal("Cannot start server. S ...
Tomcat源码学习(二)——启动流程之load初探
上次对于Bootstrap类进行了学习,并且引出了Tomcat启动过程中一直有调用的Catalina类,今天就对Catalina类进行学习和分析。
根据Bootstrap类的main方法的调用顺序如下图所示:
Bootstrap的实例在执行load方法实际调用的是Catalina的load方法。查看Catalina的源码可以发现有两个load方法。
12public void load(String args[]); //对参数进行解析后在调用load()方法public void load();
load的具体实现是在无参的load方法中,下面来看一下load方法的实现
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410 ...
Tomcat源码学习(一)——Bootstarp入口类
Tomcat作为平时工作中出镜率最高的web容器,今天我们就来对其源码一探究竟。通过github获取了tomcat的最新代码,获取地址如下
https://github.com/apache/tomcat
这里使用idea的git直接从github上拉去了最新源码,同时方便获取最新修改。
获得源码后,首先来探索一下Tomcat的启动过程,那就要来看看他的启动入口类org.apache.catalina.startup.BootStrap。找到了入口类,从main方法开始入手,代码如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465public static void main(String args[]) { // 同步初始化Bootstrap对象,不太理解这里为什么要加同步锁 synchronized (daemonLock) { ...
大麦网数据分析
最近看到很多爬虫到各种各样数据进行分析的文章,于是自己也想小试牛刀一下。最后决定尝试爬一下大麦网的数据。
数据获取决定了要爬去的目标,就开始对目标数据获取进行分析,通过chrome抓包分析接口,发现可以直接通过接口获取售卖信息的json数据,这样就可以省去对html的解析工作。顺便尝试一下python3的urllib3来获取数据。
12345678910import urllib3pool = urllib3.PoolManager()headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36Name', 'Referer': base_page}response = pool.request('POST',url,param,hea ...
AQS源码分析
AQS源码分析AbstractQueuedSynchronizer类结构分析
其中AbstractOwnaleSynchronizer提供了当前资源拥有者相关的操作,AbatractQueuedSynchronizer(下文中简称为AQS)这个抽象类中主要提供了对互斥锁和共享锁相关操作提供了基础功能的实现,以及提供了对于不同场景下的加锁和释放锁的方法定义。
而AQS这个抽象类中主要为我们提供了对于CLH队列的一系列操作,包括无法获得请求资源时的如队列操作和资源释放时怎么通知等待队列中的节点获取资源的操作。这样使得我们在需要自己实现锁功能时,只要需要专注于具体的加锁和释放锁操作。下面来看一下AQS中核心的数据结构CLH队列。
CLH队列上面基础数据结构为Node,Node为一个双向链表结构。CLH中节点数据结实现如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243static final class Node { static final Node SHARE ...
2018读书计划及笔记
2018学习读书记录读书单技术书籍
Java并发编程实战(计划)
Java并发编程艺术(正在阅读)
深入理解java虚拟机(计划)
hadoop权威指南(计划)
Python网络数据采集(已读)
其他书籍
高效能阅读 (finish 2月21)
如何有效阅读(已读)
读书笔记
前端获取实时数据探索
前端获取实时数据探索背景介绍最近在工作中,有个需求是前端需要获取实时展示最新的n条报警数据。使用http的请求响应,一问一答方式获取数据时,就出现可能部分数据获取不到的问题,然后在网上寻找和咨询老同事相关解决方案的时候,发现有使用DWR的方式进行向前端推送的解决方案,
解决思路1.ajax订阅ActiveMQajax订阅activeMQ获取实时数据的流程如下
使用ajax直接获取ActiveMQ topic中的数据,可以在activeMQ 官网中,找到Demo。需要在相应的页面中引入amq.js,amq_jquery_adapter.js以及jquery-1.4.2.min.js三个js文件,并且在后端添加相应的servlet配置。
demo中给出的配置如下:
12345678910111213141516<servlet> <servlet-name>AjaxServlet</servlet-name> <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-cl ...
