- 博客(61)
- 资源 (68)
- 收藏
- 关注
原创 将微信文章保存为PDF文件收藏
有时候,收藏着的微信文章就因为被删除或者和谐的原因不见了,所以我们可以用一些手段来保存成PDF来收藏。在这里我们会用puppeteer作为浏览器加载渲染文章,并且再用其保存成pdf。所以用以下的步骤:创建浏览器对象打开文章页面 因为页面的图片是懒加载的原因,控制puppeteer浏览器缓慢滚动到底部来加载完整页面 调用API直接保存成PDF(当然,也可以保存成图片)const puppeteer = require('puppeteer');(async () => { ...
2022-03-24 12:25:58 1655
原创 Android(TV)下挂载webdav作为普通的文件目录使用
webdav是一个基于http的文件共享协议,怎么搭建就不谈了。 首先我们需要有一个可以访问的webdav服务,当然包括账号密码。在windows下可以用raidrive,linux下可以用rclone。因此本文也是在android采用rclone,不过是叫另外一个名字,rcx(Releases · x0b/rcx (github.com))下载对应版本的app既可以。 安装完app后,选择右下角的+,然后协议选择Webdav,然后next,name、链接(包括http://ip...
2022-03-17 16:48:17 15579 1
原创 mac下,映射esc键为command 退出窗口
之所以有这个需求,源于我刚刚换了macbook,习惯了在win下面按esc退出微信窗口以及qq窗口,然而mac下只能够用command+w,实在习惯不了。目前有两个软件方案可以实现,将esc映射成command+w的需求。首先是收费的BetterTouchTool,功能非常多,支持键盘映射只是小菜一碟,然而收费,而且还不便宜。因此我选择了第二个方案karabiner-element(Karabiner-Elements is a powerful utility for keyboard custo...
2021-04-17 01:47:03 3622 2
原创 macbook m1 big sur 登录forticlient ssl-vpn的方式
不确定是系统还是m1芯片的问题,pc版本客户端无法登录,ios/ipad版本的登录完之后,无法访问内网网络,遍巡许久,在github上看到开源的第三方方案,https://github.com/adrienverge/openfortivpn,安装完之后运行sudo openfortivpn ip:端口--username=用户名 --pppd-use-peerdns=1 运行既可。...
2021-03-09 17:49:00 6948 9
原创 Mybatis-plus中输出组装好的SQL
在本地开发调试过程中,有时候需要输出PreparedStatement 的调用的SQL,也就是将每一个SQL调用语句都输出,按照文档的介绍,可以在配置中添加如下日志输出的配置。# 配置slq打印日志mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 然而,可以观察日志,知道日志是分别输出若干部分带有"?"参数的SQL语句,也就是需要我们人手去替换"?",这样...
2021-01-20 00:52:51 5045 4
原创 java基于browsermob实现代理服务器
在日常应用中,我们希望代理服务器可以拥有可以进行定制的能力,比如在浏览器透明的情况下修改浏览器的请求内容,响应结果,我们可以用browsermob来实现这一功能. <dependency> <groupId>net.lightbody.bmp</groupId> <artifactId>browsermob-core</artifactId> ...
2020-06-29 15:30:19 2601
原创 JSON与CSV相互转换
在这里我使用jackson相关的库来操作。在maven中添加以下依赖。<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-csv</artifactId> <version>2.9.8</version></dependency><de
2020-06-03 18:04:09 1833 1
原创 客户端发起超过6w个连接
在内存、cpu、带宽足够的情况下,当我们编写客户端代码发起socket连接,在连接开到超过6w多之后就会开始出现无法分配地址的错误。因为,socket客户端在发起连接到server的同时也会开启一个端口进行通讯,client在server那边的标记是ip:port。port的上限是65535,没办法突破这个大小,那我们只需要增加ip的选择就可以了,那样可以开的客户端连接的数量=ip数量*6...
2020-04-30 16:04:27 579
原创 Linux ssh允许root远程密码登录
1、设置root密码sudo passwd root2、设置 sshcat /etc/ssh/sshd_configPermitRootLogin yesPasswordAuthentication yessystemctl restart sshd
2020-01-10 17:02:40 1174
原创 springcloud 在Hystrix中出现拒绝服务的熔断异常
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@3f54147b rejected from java.util.concurrent.ThreadPoolExecutor@55407c43[Running, pool size = 10, active thre...
2020-01-07 14:45:09 1693
原创 利用树莓派搭建家庭NAS简要
利用树莓派搭建家庭NAS简要家庭NAS是用OMV来实现的,目前有两种装法,一种是直接刷ovm4Pi 系统,一种是先安装raspbian(树莓派的debian系统),再安装omv 。本文记录的是用第二种方式安装。1、利用内存卡安装raspbian下载 rom系统 https://www.raspberrypi.org/downloads/raspbian/,建议下载full版本,不用后面额外...
2019-02-11 21:27:18 26497 1
原创 使用intelliji调试 Nashorn java js脚本引擎执行的js文件
执行复杂逻辑的代码,debug是避免不了的。在java中引入js脚本用来做业务逻辑的动态定制修改,我们用的是jdk1.8的nashorn引擎。 本文章,参考了http://hevi.info/programming-language/java/java-1-8-javascript-engine-nashorn-debugging-javascript-file/https://bl...
2018-03-14 11:30:38 2301 1
原创 String的连接方式
总是忘记,做做笔记本。String c = a+"."+b;会转化为String c = new StringBuilder(b).append(".").append("c").toString();----------------------------String c= a;c+=".";c+=b;会被翻译为:String c = new StringBuilder(a
2017-07-20 10:58:20 4389
原创 flask下对pc站跟m站进行拦截处理(处理手机访问视图处理)
在java中,我们通常会加一个filter进行过滤拦截,然后通过对request和response的处理,从而针对一些不同的请求场景做处理,比如手机访问pc站,需要拦截跳转的m站去。 在Python flask中,我们用装饰器( decorator)来进行拦截处理。 import refrom functools import wrapsfrom fla
2017-05-27 16:51:28 2530
原创 基于zookeeper的分布式一致性配置中心
当同一个项目部署多个节点,或者多个项目部署在不同的jvm实例上,因为没办法共享内存。那共享项目的配置参数就成了一个问题,当然解决的办法很多,一起读数据库,一起读redis/memcahed,读本地缓存,修改的时候再一个个去触发。这些方案或多或少都会有效率或者时效性比较低的问题。 可能是被人问多了几次,我觉得用zk来实现这种配置中心的方案也是很方便的,不怕效率问题的,就实时去读zk。兼顾效
2017-05-22 22:17:15 1934
原创 总结下自己一路走过的java http客户端
这篇文章主要是用来总结自己写代码以来,使用java http客户端的历程,从最开始的原生方式到 httpclient4再到okhttp到现在的unirest,在此只是记录一些demo,没有按使用习惯进行封装。
2017-02-27 00:07:24 4557 1
原创 装饰器模式以及继承的应用场景
最近,看到有朋友在吐槽,说在用redis的client库jedis的连接池的时候,得到的jedis的实例,调用close方法之后,不能回到池里面,而是真的关闭了连接。为什么大家会觉得调用close方法是回到连接池而不是关闭连接呢?这个还要从最常见的JDBC的连接池说起,几乎常见的jdbc的连接池在构造连接的时候都增强了connection类,将其close方法重写为returnPool之类的,调用
2017-01-22 09:45:14 3056
原创 2016年总结以及2017年展望(工作技术篇)
到2016年年底为止,在目前的公司已经差不多一年半的时间了,在现在的公司,作为开发人员,从最开始的亲手编码,到后来的包括现在的需求分析和任务进度管理,感觉慢慢的消耗着自己的一些热情吧,也可以说收获和失望并存着。 项目,作为一家挂着互联网名号,实际上却是以线下销售为主的公司,作为一个后台的项目,除了所谓的业务,所谓颇为蛋碎复杂的业务。我实在不想谈剩下还有什么技术,说白了无非只是增删改查,谈
2017-01-20 12:50:53 921 1
原创 关于nginx的ngx_http_image_filter_module裁剪图片后方向改变的解决方案
使用nginx的ngx_http_image_filter_module进行图片裁剪的方案是图片裁剪一个非常常见的方案,最近提供给app端的图片,需要在部分进行展示的地方进行图片裁剪再加载,以减少图片的加载流量(原图的尺寸非常大)。然而在进行resize的操作之后,却发现图片被调转了方向,这让我很疑惑,因为我并没有进行rotate的操作。 在看了下模块的代码,发现,如果只是简单的resi
2016-12-03 13:03:58 3370 1
原创 RestFul 采用nginx作为请求审计记录工具
RestFul作为通用的json+http传输请求的规范,越来越多的api采用此形式进行交互。不可避免的,需要对其请求的内容进行审计。然而RestFul的Post请求一般采用以下的方式进行请求。curl -H "Content-Type: application/json" -d '{"key":"value"}' http://localhost:8000/hello 这一形式,是将
2016-10-28 13:58:53 2533
原创 maven插件编写与调试
maven常见的插件有compile插件,deploy插件,jetty插件等等,这些插件有的是主动去执行,有的是在maven特定的生命周期中执行。
2016-03-30 13:34:32 3549 1
原创 IE浏览器在地址栏针对param直接输入中文导致乱码的解决方案
这篇文章算是对我前几年在做搜索引擎项目时候无法解决的一个问题画一个句号吧,用处不大,不过可以弥补下自己的一个遗憾。 当时的场景是这样子的,本来正常人的习惯总是在搜索框输入正常搜索词然后进行搜索,但是总有一些用户会自认为聪明的,从地址栏复制出URL,然后改parameter然后进行访问,类似于http://www.xxx.com/search?keyword =%E4%B8%AD%E6%9
2016-01-23 03:46:47 8578
原创 nginx模块开发-增加nginx内置变量
众所周知,nginx中set $xxx 'hello';就是通过用set指令给变量xxx设置hello的字符串值,在nginx中调用值的话,只需要$xxx就可以使用这个变量。 然而在nginx中,我们还可以直接用下面的变量,直接就可以获取对应的值。$arg_参数名 在location中获取客户端请求的参数xx?name=123 那$arg_name就是对应的值123$args
2016-01-15 11:46:18 8222
原创 nginx模块开发-在handle函数中获取页面请求的参数
可以用下列的函数:ngx_int_tngx_http_arg(ngx_http_request_t *r, u_char *name, size_t len, ngx_str_t *value)具体的实例如下:ngx_http_xxx_handle( ngx_http_request_t *r, ngx_str_t *callback) if (
2016-01-02 14:23:10 2516
原创 windows下采用eclipse与cygwin构建调试nginx插件
nginx在windows下用vc或者是mingw会存在或多或少的问题,它天然适合在linux下开发使用,但是想在windows进行开发使用的话,最好的方式就是采用cygwin进行linux环境的模拟,开发工具的话,可以选用eclipse CDT进行开发调试。 首先要安装cygwin(注意看网站,有国内的源的话,下载起来飞快),cygwin对于编译nginx来说的话,只需要在instal
2015-12-31 16:29:22 3311 2
原创 java String类型的格式化
String类提供了静态方法String.format(String formatContent,Object ... value); 在使用上必须使用%d、%f、%s...等等具体制定类型的格式占位符,比如String str = String.format("%d,%s,%d",1,"2",2);这种写法,感觉上非常的不灵活。 在记录日志的时候,我们习惯了 logger.i
2015-11-27 16:41:22 1362
原创 maven compile的web项目时指定/WEB-INF/lib 目录作为额外的库目录
有一些冷门的jar包,自己又比较懒,不想上传上nexus,就直接放web项目中的/WEB-INF/lib目录了,构建的时候,在编译期出错,因为无法依赖那些jar包,此时用maven的compile插件指定该目录为额外的库目录即可。 maven-compiler-plugin 1.7 1.7
2015-11-16 11:55:47 5721 1
原创 nginx_lua案例分析:动态路由实现
这里的路由指的是在web开发中,访问路径以及具体实现内容的映射。比如,/a映射到某个具体的页面,这个就称之为一个路由。而动态路由,顾名思义就是动态添加这种路由映射关系。 在nginx中,通过rewrite和proxy_pass来实现路由映射或者说反向代理,但是这种关系按照传统的配置必须写死在配置文件中,然后通过快速"无缝"重启nginx。虽说是无缝,但是其繁琐的配置和枯燥的重启操作还是无
2015-08-17 09:28:07 9977 1
原创 nginx proxy-pass简单的应用
proxy-pass在网站部署访问中,最经常与rewrite一起用。一般用rewrite进行url的内部重写(地址栏不会改变),然后再通过proxy-pass将请求代理访问后端的web应用。location ^~ /doc/img/ { rewrite "^/doc/img/(.*)$" /$1 break; proxy_pass http://192.168.1.130:80;
2015-07-28 08:40:04 2108
原创 nginx嵌入lua脚本操作redis
此前稍微提过,用nginx里面执行lua脚本,可以执行一些原有无法实现的必须到后端去控制。目前有个需求,是根据不同的传入id,判断其类型,反向代理到不同的项目后端,如果是采用后端来做的话,基本上很难去实现,然而我们在前端用lua去判断ID的类型就OK了,为了保证前端nginx的速度,所以将id的类型存入redis中,由lua去读取redis的数据进行id类型判断。 目前,用在nginx中
2015-05-22 09:41:15 3123
原创 webservice soap脱离客户端代码单独http调试
webservice soap的实现序列化方式默认也是最通用的是采用xml进行序列化以及http协议进行传输的,也就是文本协议传输调用,这样给了我们脱离客户端代码用工具进行调试或者用HttpClient的代码进行各种测试的方便。 目前需要对webservice soap的server端进行压力测试,然而,每次java这边测试的时候都要启动cxf进行对象的序列化和调用,非常损耗客户端机器的
2015-05-13 11:06:27 1422
原创 记20150430平台预迁移
2015年的第一次通宵献给了公司,作为打杂的我与部门几十个同事留下来通宵测试平台预迁移之后的出现的问题,主要是为了记录下问题,以便接下来真正迁移的时候,可以提前把会出现的问题解决。 为什么是平台迁移呢?因为,公司的老的业务平台积累了太多的用户和数据,肯定没办法直接停掉去使用新的,但是如果新、旧两套平台同事存在,等以后业务量大了,要做调整和维护的话,那个难度太过于大。再者另一个原因,公司的
2015-04-30 14:33:02 902
原创 掌握elasticsearch 搜索引擎开发的一般阶段
本文的内容是根据我对es掌握的一些过程阶段的理解,希望有助于入门。安装运行插件安装使用索引新建和数据导入查询以及相关技巧错误排查集群优化
2015-04-27 10:12:40 1756
原创 intellij 开发调试elasticsearch插件
elasticsearch之所以功能比较强大,更多的是因为其插件机制比较灵活,可以直接不需要改动源码的情况下,被es的节点扫描加载。本篇文章就简单的讲一下如何进行调试插件,其实无论是river、analysis或者是其他的plugin,都是差不多的写法,所以我们用其中一个river的插件来演示下如何进行调试。 首先,在github上git clone对应的elasticsearch的源码
2015-04-14 14:15:50 10631 1
原创 linux下采用ps、jstack命令排查命中java应用中占用CPU高的代码
一般情况下,是因为系统出现瓶颈了,才会去进行调优,而调优则要先找出项目代码中的问题,这次针对java应用占用CPU高的代码进行排查。 假设,目前有一个应用在运行过程中会导致CPU居高不下,而无法知道是哪段代码引起的,这个时候,则可以采用本篇文章说的PS命令和jstack命令进行排查命中相关的代码,对于linux下大名鼎鼎的ps命令就不介绍了,我们直接切入主题,在本篇中,我们需要获得对应的
2015-04-03 15:57:01 3059 2
原创 在nginx中采用lua对请求的url进行hash取模
目前有一个需求,是需要将nginx反向代理的后端响应的内容进行缓存,并且要平均的分配到10个自定义的目录中。一说到,自动分配的需求,采用hash取模是最常用也是最简单的方案,其中选择hash的字段(内容)必须是变化最多的。比如请求头里面的host和request_url,肯定选择是request_url,因为其变化的内容比较大。 查看了nginx的官网文档也没有单独对url进行取模的功能
2015-03-30 15:28:15 7828 1
原创 ELK(Elasticsearch,logstash,kibana)无痛安装教程
elk是目前比较新也发展比较快的一套数据分析套件,其中Elasticsearch是用来作为存储和查询引擎的,kibana则是位于其之上的一个UI(更偏向于聚合汇总分析),而logstash则是属于ETL工具(数据的提取转换插入)。 在具体的使用过程中,目前觉得logstash算是比较鸡肋的,因为适用的场景有限,而且要扩展必须自己实现。个人建议,如果对es比较熟悉的,完全可以不需要用这个。
2015-03-20 10:41:32 3601
原创 springmvc 报无法解析视图异常
最近,前端nginx的日志一直在报一些URL的请求后端响应是500状态码,于是缓存其结果,可以看到一直是报一个 javax.servlet.ServletException: Could not resolve view with name 'xxxx'in servlet with name 'Spring MVC Dispatcher Servlet ‘的异常。 分析这些报这
2015-01-15 10:18:54 14500
java 多线程编程实战指南(核心 + 设计模式 完整版)
2018-03-20
神经网络与深度学习
2018-03-15
Redis开发运维实践指南
2018-03-15
区块链技术指南
2018-03-15
JS 函数式编程指南
2018-03-15
微服务架构与实践
2016-11-09
七周七并发模型
2016-05-05
java版微信公众号开发项目代码和说明
2014-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人