redis安装

I. redis安装

centos安装并后台启动redis记录过程

18年4月18日离杭小记

    从15年7月1日到18年4月18日,恍惚之间,来杭州已经度过1023天,将近三年的时光,有过满含激情充满朝气的时候,也有过浑浑噩噩每天无所事事的时候,这里是迈入社会的第一站,拉开了一段新的旅程序幕,于此驻足三年,却收益余生.

    这几天杭州的天气不错,阳光明媚,虽然能见度不怎么样,坐在蘑菇街大厦的11层,望向窗外,远处依然是雾蒙蒙的,没有蓝蓝的天,也看不到飘零的云,但就这么看着,也觉得有别样的风景。杭州,最忆是西湖。曾在古诗文中无数次憧憬着的人间天堂,依稀记得初次到西湖前的画面。粼粼的湖光、和煦的风,两条横插湖中的苏堤、白堤,却让我感受到完全不一样的风景。从没有想过,西湖会是这样的场景;和印象中《新白娘子传奇》里的小湖、断桥、微雨和油纸伞的水墨画完全不同;带上了浓厚的现代风之后的西湖,好像也只有那千古继承的湖波和岸边的依依杨柳,才是最出的风光,也才能给人更多的古韵遐想。

西湖

Java 借助ImageMagic实现图片编辑服务

java原生对于图片的编辑处理并没有特别友好,而且问题也有不少,那么作为一个java后端,如果要提供图片的编辑服务可以怎么办?也得想办法去支持业务需求,本片博文基于此进行展开

CSS图片点击拷贝

I. CSS图片点击拷贝

点击实现文本or图片的复制, 主要利用 document.execCommand('Copy')来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">
function copy2board()
{
var Url2=document.getElementById("biao1");
Url2.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
alert("已复制好,可贴粘。");
}

function copyimg(e) {
var range = document.createRange();
range.selectNode(e); //selectable为下面页面中DIV中的id
window.getSelection().addRange(range);
document.execCommand("Copy");
alert("复制ok");
}
</script>
<textarea cols="20" rows="10" id="biao1">用户定义的代码区域</textarea>
<input type="button" onClick="copy2board()" value="点击复制代码" />



<img src="http://a.hiphotos.baidu.com/image/pic/item/8326cffc1e178a82112604dffa03738da977e8b3.jpg" width=200 height=200 onclick="copyimg(this)"></img>

II. 其他

个人博客: 一灰灰Blog

基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

声明

尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正

扫描关注

QrCode

生产环境分库分表的实际操作全记录

一次分库分表全过程记录

实际操刀过一次线上的分库分表,距离现在时间有点久了,现在想一想,发现还是有不少有意思的东西,所以来一个迟到的记录

Mybatis框架学习之使用篇二:标签语法

Mybatis框架学习之使用篇二:标签语法

常用标签的使用姿势小结及参数绑定的三种方式

  • select
  • update
  • delete
  • insert
  • choose, when, otherwise
  • if
  • bind
  • foreach
  • trim
  • set
  • where

Mybatis框架学习之使用篇一:基本环境

Mybatis框架学习之使用篇

主要介绍如何使用mybatis,来实现db的增删改查,通常mybatis一般是结合spring来使用,因此我们也不脱离这个大环境

主要内容将包括以下:

  • 环境配置相关
  • Dao文件与xml的映射(接口绑定有两种,xml和注解方式,这里以xml方式进行说明)
  • 增删改查的写法
  • 常用命令 choose, if, set, ….
  • #,$两种方式的区别

Java实现邮件发送

Java实现邮件发送

在日常工作中,通过邮件或短信做报警或者信息推送的场景还是挺多的,而java中,常用的就是JavaMail来做这个事情了,到网上搜索了一把,发现apache有个commons email 的开源包,现在借助它来尝鲜一把

基于ForkJoin构建一个简单易用的并发组件

基于ForkJoin构建一个简单易用的并发组件

在实际的业务开发中,需要用到并发编程的知识,实际使用线程池来异步执行任务的场景并不是特别多,而且一般真的遇到了需要并发使用的时候,可能更加常见的就是直接实现Runnable/Callable接口,丢到Thread中执行了;或者更高级一点,定义一个线程池,扔进去执行;本片博文,将从另一个角度,借助JDK提供的ForkJoin,来设计一个简单易用的并发框架

Css实战训练之图片点击放大

Css实战训练之图片点击放大

I. 背景

非常常见的一个功能了,一般网站上显示的都是缩略图,等你点击缩略图之后,会在一个弹框中显示放大的图片

那么这个功能是怎么实现的呢? 正好学习了下css的基础知识,现在可以来实际的操作一把

Css学习手册之基本篇

Css学习手册之基本篇

每次写前端都是一个痛苦的过程,总是静不下来,彻底的研究下前端的技术,导致每次套页面都是直接采用一些封装好的控件,而有时对这些样式不满意时,又得百度一下该怎么用,低效且不愉快,强制自己好好的学习下基本功

mysql之锁与事务详解

Mysql之锁与事务

平时的业务中,顶多也就是写写简单的sql,连事务都用的少,对锁这一块的了解就更加欠缺了,之前一个大神分享了下mysql的事务隔离级别,感觉挺有意思的,正好发现一个很棒的博文,然后也收集了一些相关知识,正好来学习下,mysql中锁与事务的神秘面纱,主要内容包括

  1. 共享锁和排它锁的区别以及适合范围
  2. mysql的表锁和行锁的区别
  3. 怎么判断一个sql是否执行了锁,执行的是表锁还是行锁
  4. 事务是什么,怎么用
  5. 事务的特性ACID
  6. 事务的隔离级别 (RU, RC, RR, SER)
  7. 如何查看mysql使用的隔离级别

mysql之索引的工作机制

mysql之高性能索引

当db的量达到一定数量级之后,每次进行全表扫描效率就会很低,因此一个常见的方案是建立一些必要的索引作为优化手段,那么问题就来了:

  • 那么什么是索引呢?
  • 索引的实现原理是怎样的?
  • 我们通常说的聚集索引,非聚集索引的区别是什么?
  • 如何创建和使用索引呢?

mysql基本语法学习小结

本篇将主要集中在mysql的使用上,包括如何创建标,如何进行insert,update,select,delete,以及一些常见的sql中关键字的使用姿势

常用Alfred工具

I. Alfred工具

alfred可以说是mac上必备的一个app了,可以极大的提高工作效率,再加上它支持自定义实现各种扩展,完全可以满足大部分的需求场景了

1. 安装

首先下载安装包,推荐一个神奇的网站,下载各种mac的破解软件,工具下载链接: http://xclient.info/s/alfred.html

破解方式:

  • 点击下载包里面的keygen
  • 点击patch,会打开目录,选择alfred,点击激活
  • 重启alfred即可

2. 几个插件

下载包内直接包含了所有的流程和源码,也没什么好具体说的,下载完毕之后双击即可

a. 日期与时间戳

点击下载:time.alfredworkflow

demo: time

b. md5

点击下载: md5.alfredworkflow

demo: md5

c. url编码

点击下载: URL编码.alfredworkflow

demo: url

d. 分库分表

点击下载: table.alfredworkflow

demo: md5

II. 其他

个人博客: Z+|blog

基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

声明

尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正

扫描关注

QrCode

常用Popclip工具

I. PopClip工具

PopClip是mac上的一个工具集,最大的特点就是扩展,复制一段文本,然后根据你的需求写插件,把赋值的文本作为输出,做一些你想干的事

基于PopClip,也写了一些小工具,主要是php写的,写插件的教程还是比较简单的,一个配置文件Config.plist和一个脚本文件xxx.php即可

1. 实现一个插件流程

以JSON格式序列化为demo进行演示,如何从0到1创建一个popclip插件,先看一下最终的成品

img

一个插件的文件比较简单,主要有两个

  • Config.plist
  • 具体的脚本文件

a. 配置文件

下面是一个实际的配置,里面指定了两个脚本:

  • 第一个是 json2str.php,这个脚本实现将json转换为单行字符串,在插件上显示的名字就是 JsonStr, 采用的php编写实现
  • 第二个是 str2json.php

需要注意的是里面正则规则,这个主要是用来表示当你划中一段文本之后,是否会出现这个插件的规则(比如时间戳和日期的相互转换,只有选中纯数字时,才支持时间戳转日期)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Actions</key>
<array>
<dict>
<key>After</key>
<string>paste-result</string>
<key>Regular Expression</key>
<!-- 正则匹配规则,*号表示任意选中的内容都会激活这个插件 -->
<string>*</string>
<key>Script Interpreter</key>
<string>/usr/bin/php</string>
<key>Shell Script File</key>
<!-- 执行具体逻辑的脚本名 -->
<string>json2str.php</string>
<key>Title</key>
<!-- 插件的name -->
<string>JsonStr</string>
</dict>
<dict>
<key>After</key>
<string>paste-result</string>
<key>Regular Expression</key>
<string>*</string>
<key>Script Interpreter</key>
<string>/usr/bin/php</string>
<key>Shell Script File</key>
<string>str2json.php</string>
<key>Title</key>
<string>StrJson</string>
</dict>
</array>
<key>Extension Description</key>
<!-- 描述 -->
<string>remove json space or stringfy json str</string>
<key>Extension Name</key>
<string>JSON</string>
<key>Credits</key>
<array>
<dict>
<key>Link</key>
<string>mailto:bangzewu@126.com</string>
<key>Name</key>
<string>Json序列化</string>
</dict>
</array>
<key>Extension Identifier</key>
<string>popclip.extension.json-covert</string>
<key>Required Software Version</key>
<integer>695</integer>
</dict>
</plist>

b. 脚本文件

这个里面就是写具体的业务逻辑,一般是将粘贴板中的内容作为输入,然后进行一段业务逻辑,然后输出到粘贴板内

如str2json.php

1
2
3
4
5
6
7
8
<?php
$input=getenv("POPCLIP_TEXT");
if(empty($input)) {
echo '';
} else {
$param = json_decode($input);
echo json_encode($param, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
}

注意第一行,获取输入 $input=getenv("POPCLIP_TEXT");, 不同的脚本有不同的获取方式

输出就比较简单了,传统的输出方法,会重写到粘贴板内 echo 'xxx';

c. 打包

上面完成之后,就是打包安装了,流程如下:

  • 新建一个文件夹,后缀为.popclipext,将.plist和脚本文件拷贝到新的文件夹下
  • 压缩: zip -r xxx.popclipextz xxx.popclipext/
  • 双击上面生成的文件,确认安装即可

说明: 上面新建的文件夹,一定要以.popclipext结尾

2. 我的插件

a. base64编码

作用:实现base64编码解码

源码地址: base64

demo: base64

b. 日期&时间戳

作用:实现日期和时间戳的相互转换

源码地址: date

demo: deom

c. unicode字符转中文

源码 : unicode

d. json格式化

源码: json

e. url编码解码

源码: url


II. 其他

工程地址

所有的插件都可以访问: PopClip

个人博客: Z+|blog

基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

声明

尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正

扫描关注

QrCode

常用Chrome工具

I. Chrome常用插件

记录下使用到的Chrome插件,有些挺有意思的东西

1. Website IP

在网页的右下角(or左下角)显示当前网页的服务器IP,用来判断当前的系统的工作环境非常有用,特别是在线下、预发和生产环境的切换时,判断host是否切换的时候

2. Adblock Plus

拦截小广告

3. Adkill and Media download

拦截视频广告,我常逛的优酷,腾讯视频,爱奇艺,芒果的视频广告都被可以被吃掉,节省两分钟的等待时间

4. GitCodeTree

码云提供的gitee,侧边栏提供一个直接查看代码的树状结构

5. JSON Editor

写json的插件

6. Json Handler

json结构化,针对请求直接返回json串的场景用起来比较爽,除了结构化输出之外,还可以修改json串内容,个人感觉比JSONView好用

7. Octotree

github源码视图工具,和前面的 GitCodeTree 差不多

8. Postman

模拟各种http请求

9. Vimium

以vim的方式操作浏览器页面,实现真正的无鼠标全键盘操作

10. 二维码(QR码)生成器(QR Code Generator)

当前网页生成一个二维码,方便手机打开

11. 捕捉网页截图 - FireShot

网页截图工具,可以截长图文,但是在网页特别长时,截取失败,有些时候用起来还可以

12. 掘金

覆盖默认的新打开标签页,显示一些有意思的git项目和掘金上的优秀博文

13. Encoder(自定义实现)

自己写的一个插件,主要是为了提供一些常见的转换, 源码&下载地址: Chrome-Coder

  • 时间戳和日期的相互转换
  • url编码解码
  • base64编码解码
  • unicode编码解码

14. Chrome-ImgRender

自己写的插件,源码&下载地址: Chrome-ImgRender

选择网页中的dom结构,输出图片的小工具,使用演示如:

II. 其他

个人博客: Z+|blog

基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

声明

尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正

扫描关注

QrCode

Java学习之NIO相关

Java NIO学习小结

前面一篇主要学习了下IO的流式操作,接下来就是重头戏了,NIO,又称为New IO

当然也是得抱着问题来学习这个东西了,希望可以通过本文,可以学习到:

  • 什么是NIO
  • NIO相比较与IO有什么特点
  • 同步,非同步,阻塞,非阻塞是什么鬼
  • 几种IO模型

Java学习之IO相关

Java IO学习小结

IO操作算是java的一个基本知识点了,比如我们常见的网络IO,文件读写等,而且这一块基本上大家并不会频繁的来操作,大多会用一些封装得好用的工具来代替,某些时候真的需要做的时候,基本上也很难一下子很顺利的写完

本篇将主要集中在:

  • 几种IO分类
  • 字节IO和字符IO的转换
  • 装饰类IO是什么
  • 序列化的实现机制

JVM学习之垃圾回收机制

jvm的垃圾回收算法,除了我们熟悉的引用计数判断对象是否活着之外,其他还有那些有意思的东西呢?

总是听到的年轻代年老代又是啥?

传说中的YoungGC(MinorGC) 和 FullGC的时机是什么,又干了些啥?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×