- 博客(157)
- 资源 (7)
- 收藏
- 关注
原创 短信模板替换
public static void main(String[] args) { Pattern regex = Pattern.compile("\\$\\{([^}]*)\\}"); String a ="hello"; String b = "wlow"; Map<String,String> paramData = Maps.newHashMap(); p...
2019-10-29 10:29:43 822
原创 java 协变与逆变
我们首先来看下面这两行代码:Integer a = 1;Number number = a;so easy对吧?那我们再看这两行代码:List<Integer> list1 = new ArrayList<Integer>();List<Number> list = list1;你认为第二行的list编译器会通过么?答案是不会的。要解答这...
2019-01-16 11:56:02 287
原创 锁
很久就想写锁这个主题了,但是一直不敢写,因为自己感觉我的能力还是不足以驾驭锁,没法覆盖锁的内容,后面一想我就先以我粗浅的知识说说自己心中的锁,以后有更多的感悟再加上(当时面试阿里,面试官第一个问题就是说说对锁的认识,不限于语言,不限于软硬件,把你自己知道的说出来,现在回顾当时的回答是多么的2 young 2 simple。哈哈^_^,后来一聊,人家是专门写jvm gc的)。我现在就给锁下一个定义...
2019-01-14 08:28:19 219
转载 一致性hash算法
1为啥会有这种算法的诞生,它解决什么问题?在说这个算法之前,我们看看以前做缓存(一致性hash算法不仅仅局限在做缓存上)的思路。假如现在我们有一个网站,redis上数据已经超过了单机的承受能力,现在就要对其做进行分库分表,则分库分表就意味着要有一个路由规则,假设我们的路由规则是hash取模的方式,根据这个路由规则我们就弄一个redis集群,假设集群中有四个节点,节点A,节点B,节点C,节点D,...
2019-01-13 23:00:22 225
原创 限流策略总结
这段时间开启过年的热身运动,抢票大战。现在是各种加速包满天飞,感觉买到就是赚到,和12306斗智斗勇。今天我就以我的经验来分析加速包在哪种方式有效。要做加速包功能,必须要考虑的是系统的限流,因为系统给你限流了,不处理的请求,你弄再多的加速包也白搭。在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存:它的存在就是加速请求访问,保护后台服务。使用缓存不单单能够提升系统访问速度、提高...
2019-01-11 09:07:09 436
原创 技术杂谈
回顾以前的学习,四个字总结:杂而不精。同一个问题可能会重复解决多次,每次感觉都懂了,但深入不够,对应技术细节还是很模糊,挖的细节还是比较粗糙,比如hashmap的扰动函数等等。现在决定对于有技术深度和源码分析的问题,必须要经过物化形成博客,在写博客的时候进行深化,同时也在梳理思路,如果以后有更深刻的认识,可以方便的在原有博客上进行修改,力求知识正确,全面,深入。同时也在感悟现在技术原理殊途同归,网...
2019-01-09 11:44:32 163
原创 FutureTask源码总结
因为技术原理都是一致的,我就不抄了哈哈,我给亲们链接,自己移步去看,我在这里大致总结一下该类的运行机制,发散一下思维和面试问题。该类的作用:FutureTask 是任务可取消的异步返回结果类。你可以想象你现在在运行一个程序,该程序首先获取到数据库中的用户id,然后根据用户id判断上传的文件是否需要保存。我们可以看到保存上传文件是io操作,那么要保证程序的效率,可使用该类。我们可以把io操作交给F...
2019-01-09 10:30:46 178
原创 lru与lirs
(1)LRULRU算法淘汰最长时间没有读或者写过的数据。就以LinkedHashMap为例来说明怎样实现一个LRU算法。首先先看一下LinkedHashMap怎么用的。package com.demo.bean.zwfz; import java.util.ArrayList;import java.util.Collection;import java.util.Linked...
2019-01-08 14:29:31 716
原创 架构师职责
以前对于架构师这个职位定位比较模糊,一直在探索怎样从一个普通程序员成为一个能力与沟通卓越的架构师,现在我就阐述一下我现在对架构师这个职位的肤浅看法。 最近网上有大量的网上培训机构推出成为架构师的课程,我也听了许多,听过他们的直播课程之后,感觉还是有水平的,这帮人都是一线开发出来的,只因为不想在为kpi和过度开发工作而活着,也想多赚点钱,所以出来做教育。唠叨一句,现在java培训已经...
2019-01-08 10:25:30 990
原创 raft算法
raft算法是用来解决分布式一致性问题,该算法可以看做一个Log日志复制机制的状态机,它的日志是连续的,同时集群中的日志内容始终是从 leader 节点同步到follower节点,是单向的。下面列出有关raft的名词:Term:逻辑时钟,term值和log index(指令id)用于保证时序,term用连续的数字进行表示。Raft算法将Server划分为3种状态:Leader:负责Clie...
2019-01-04 16:22:15 226
原创 netty学习
netty简介:Netty是由JBOSS提供的一个开源的java网络编程框架,作者是Trustin Lee,同时也是事件驱动服务通信框架,那什么是事件驱动服务通信框架?我们以后再说。这个框架是基于java的nio模型进行高度封装的框架。再次说明,netty是网络编程框架。网络通信,server/client 模式通信,长连接都可以用它。为什么要学netty?1很多框架底层通信都使用ne...
2018-12-10 18:10:27 182
原创 idea 类title展示问题
今天遇见idea 的layout展示问题,很烦人,一会debug的控制台悬浮,一会run控制台不见了,maven projects没了,类名一般在idea的上方,现在展示在下方。反正现在瞎弄+百度,找到了一个,其他都瞎弄好了。下面展示类名展示在下方的问题。还有debug的悬浮问题应该是这造成的。...
2018-12-10 15:43:10 1667
原创 oracle 分页 sql
原有sql(查询所有数据):SELECT c. ID, A . NAME AS NAME, A .define_sql AS defineSql, A .use_scene AS useScene , A.config_kind AS configKind, c.examine_status AS...
2018-10-30 11:35:17 189
原创 java递归实现部门(权限)树 自测能用
这段时间开发一个小功能-实现一颗部门树,看着挺容易,但是花费了不少的时间,哎。。。先上代码:public class Dept { @ApiModelProperty(value="部门编号",name="deptId",required=true) private int deptId; @ApiModelProperty(value="部门名称",name=...
2018-08-09 16:15:59 4589
原创 实现模拟自动化来操作桌面
package robot;import java.awt.Robot;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;public class RobotCmd { // 这个工具用于实现模拟自动化来操作桌面 public static void main(String[] args){ t
2016-06-29 20:36:27 2356
原创 mysql连接出错
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets fr
2016-06-04 12:26:32 1180
原创 主线程捕捉线程池中线程抛出的异常
package 线程池;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadFactory;/** * 主线程捕捉线程池中线程抛出的异常 * @author kevin4wang *//** * E
2016-04-24 08:50:51 4537
转载 数组实现队列
import java.util.Arrays;/** * 用数组实现队列 */@SuppressWarnings("unchecked")public class Queue { private int DEFAULT_SIZE = 10; private int capacity; private Object[] elementData; private int fron
2016-04-12 14:21:21 560
原创 js中的==和===区别
alert('55' == 55);//truealert('55' === 55);//false第一个是相等符;第二个全等符
2016-03-22 22:16:27 283
原创 js 省市级联
Document function tm_init_pronince(){ var selectDom = document.getElementById("province"); var arr = [{"id":1001,"name":"湖南省"},{"id":1002,"name":"湖北省"}]; /*var html = "--请选择--"
2016-03-05 17:39:23 410
原创 模拟抽奖
Document div{font-size:16px;font-weight:bold;width:610px;height:200px;border-radius:4px;box-shadow: 0 0 1em #000;border:1px solid #ccc;} span{font-size:32px;} 中奖的号码是: 当前中奖号码是: v
2016-03-05 14:00:08 405
原创 js、 数组
Document /* javascript---数组Array 定义方式如下: var arr = [];//初始化一个空长度的数组 var arr = new Array();//内存 1:数组下标都是从0开始,也就是说数组里面的第一个元素就是 2:数组的长度是:.length 3:第一个元素:arr[0] = "xxx"; 最后一个元素:
2016-03-05 13:49:14 351
原创 js中的对象
js中的对象 /* 对象的定义: 如:var book = {};//定义一个空对象 var book2 = {key:value};//HashMap var book2 = {"name":"Javascript进阶","price":10,"date":"2012-12-12"}; */ //var age = 20;//numbe
2016-03-04 23:42:56 308
原创 探针
/** * 父进程,用来调用子进程,打印子进程的输出到控制台,这里的输出可以写入一个文件等方式。 * */public class Tcollector { public static void main(String[] args) throws IOException { Runtime run = Runtime.getRuntime();//获得运行的环境 Proces
2016-02-29 17:40:59 693
原创 position:absolute :fixed区别
absolute:当浏览器大小改变时,悬浮层随着浏览器上下移动fixed:当浏览器大小改变时,悬浮层只会悬浮在浏览器的正上方
2016-02-11 17:00:59 557
原创 获取ip地址-自定义标签
String address = TmIpUtil.ipLocation(request);//获取当前的ip地址tmiputilpublic static String ipLocation(String ip) { String ipLocation = ""; TmIPSeeker ipSeeker = new TmIPSeeker("qqwry.dat","E:/Java
2016-02-11 08:07:36 674
原创 自定义标签
作用:把页面上常用/通用的功能改为标签形式来引用第一步:在web-info下建立文件夹,分别管理自定义标签第二步:在文件夹中建立.tld文件,写入通用的功能tz.tld:<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi
2016-02-11 07:39:44 451
原创 jquery的checkbox
选择上一级元素: parent选择所有上级元素:parents选择下一级元素 :children选择所有后台元素:find选择同级元素 :siblings选择前一个元素:prev选择后一个元素:next$(this).attr("checked",true)//选中,false为取消$(this).siblings("ul").find("input").attr(
2016-02-04 22:13:53 378
原创 时钟完整版
canvas{ background:#eee; margin:30px 400px; } 时钟完整版 window.onload=function () { var canvas=document.getElementById("canvas"); var cobj=canvas.getContext("2d"); v
2016-01-30 21:06:00 405
原创 html5 时钟
canvas{ background:#eee; } 时钟 window.onload=function () { var canvas=document.getElementById("canvas"); var cobj=canvas.getContext("2d"); var originx=200; v
2016-01-30 17:33:47 395
原创 canvas 心跳和捕鱼炮台
canvas{ background:#ccc; } 心跳 window.onload=function () { var canvas=document.getElementById("canvas"); var cobj=canvas.getContext("2d"); cobj.arc(200
2016-01-30 15:45:56 899
原创 canvas 画线条
canvas{ background:#ccc; } noTitle window.onload=function () { var canvas=document.getElementById("canvas"); var cobj=canvas.getContext("2d");// cobj.strokeSty
2016-01-30 13:12:52 444
原创 canvas
canvas{ background:#ccc; } noTitle window.onload=function () { var canvas=document.getElementById("canvas");//获取canvas对象 var cobj=canvas.getContext("2d");//
2016-01-30 06:02:23 430 1
原创 svg
svg的一些形状:矩形:<rect x="20" y="20" width="250" height="250"style="fill:blue;stroke:pink;stroke-width:5;fill-opacity:0.1;stroke-opacity:0.9"/>圆形:<circle cx="100" cy="50" r="40" stroke="black"st
2016-01-30 05:29:56 457
原创 文字提示效果-显示和隐藏
无标题文档$(document).ready(function(){ var x = 10; var y = 20; $(".box").mouseover(function(e){ var hdw = ""+this.title+""; $("body").append(hdw); $("#two") .css({ "le
2016-01-29 15:33:06 543
转载 html5桌面通知
if(window.webkitNotifications){ window.webkitNotifications.requestPermission(); if(window.webkitNotifications.checkPermission()==0){ var obj=window.webkitNotifications.createNotificat
2016-01-29 09:19:08 409
转载 html5异步上传文件
#box{ width:150px;height:150px;border:1px dashed red; font-size:13px;line-height:150px;text-align:center; } window.onload=function () { var box=document.getElementById("box");
2016-01-26 06:46:14 308
原创 html5拖拽
dragenter:当拖拽对象进入投放区时触发;.dragover:拖拽对象在投放区内移动时触发;.dragleave:拖拽对象没有投放到投放区,离开投放区的时候触发;.drop:拖拽对象投放在投放区时触发。.dragstart:当元素拖拽开始触发;drag:在元素拖拽过程中触发;.dragend:元素拖拽结束时触发。使用dataTransfer传递数据data
2016-01-26 06:23:16 382
原创 二分法 冒泡
二分法public class MyArrays{ public static void main(String[] args){ int[] a = {1,3,4,5,7,8,9,10,23,25,29}; // 取得23在数组中的位置 int flag = 53; int index = binarySearch(a,flag); if(index
2016-01-26 05:28:38 375
重命名某个目录下的文件
2018-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人