- 博客(36)
- 收藏
- 关注
原创 【netty】reactor模式的演变
详细介绍:https://segmentfault.com/a/1190000019469833个人理解传统基于socket编程的服务端开发模式:(BIO)服务端启动,建立serverSocket,调用accept()等待连接建立。握手成功,这时服务端会新建一个socket,等待客户端输入数据。客户端数据传输完毕,服务端调用read()读取数据,读取完进行数据的处理。处理完调用w...
2019-11-21 02:37:05
172
原创 【netty】IO模式切换以及背后的思想
netty时如何切换IO模式的在学习netty时,会发现netty切换IO模式的方式非常便捷。如下列代码,基于NIO的模式通过netty构架一个服务端。EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup();ServerB...
2019-11-19 02:26:01
262
原创 开源在线分析诊断工具Arthas
ArthasAlibaba开源的Java诊断工具 官方快速入门文档:https://alibaba.github.io/arthas/quick-start.html 1、安装方式操作系统:Linux/Unix/Mac安装方式:脚本安装curl -L https://alibaba.github.io/arthas/install.sh | sh启动方式...
2019-01-23 13:24:14
266
原创 配置redis主从服务器,slave服务器日志显示Error condition on socket for SYNC: Connection refused
Error condition on socket for SYNC: Connection refused,表示redis主服务器拒绝redis从服务器的连接。这样从官方默认的配置文档redis.conf中说起。redis.conf 中 【bind】配置的用法:(一句话:bind配置了什么ip,别人就得访问bind里面配置的ip才访问到redis服务。)# By default, if...
2018-10-02 16:36:59
2394
转载 mybatis generator 自动生成步骤
1、首先下载好mybatis-generator-core-1.3.2.jar包。2、编辑generatorConfig.xml文件。详细如下:[html] view plain copy<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.or...
2018-04-09 10:40:34
220
转载 报错 One or more constraints have not been satisfied.
报错 One or more constraints have not been satisfied.常出现在导入已有标签时。需要在<build/><plugins/>里面追加标签 <plugin> <groupId>org.apache.maven.plugins</groupId>...
2018-04-08 16:16:50
149
转载 MultipartFile 上传文件 文件名乱码问题
上传文件,文件内容正确,文件名却乱码。参考各种博客改了一下午,最后终于通过设置拦截器解决。特此记录下来。原文:1前端到后端我们可以设置拦截器来改变不相同的编码格式(这里我们以springmvc为例,直接在web.xml文件中添加)WEB.xml:[html] view plain copy<filter> <filter-name>CharacterEncodin...
2018-04-08 16:16:41
10416
原创 restTemple访问http请求报错
一、先用postman发送请求看是否成功。如果不成功,可能对方服务器做限制,则试试在httpHeader添加user-agent。二、检查url中是否有特殊字符需要保留的。比如 空格,&,% 等都会在被 restTemple执行的时候进行URLencode。public <T> T execute(String url, HttpMethod method, @Nullable...
2018-03-20 11:59:13
1008
转载 项目start没问题,debug卡住然后超时
情景:项目start没问题,debug卡住然后超时环境:tomcat 7.0,eclipse oxygen原因:debug起服务,读取文件可能会出错,eclipse自动加断点,这时候就卡住了解决办法:eclipse-----》window--------》show view breakpoints---------》remove all,重新启动tomcat
2018-01-04 10:38:53
724
转载 springBoot项目中使用了thymeleaf模板,怎么在html文件中调用外部的.js/css文件
转自 模板在templates下面,js文件在static下面,在模板中引用时不需要加static这个路径。 例如:src └─main ├─java └─resources ├─static │ ├─css │ ├─img │ └─js │ └─test.js
2017-12-12 15:13:54
3306
1
原创 微信支付一些细节
当用户支付完成后,微信支付系统会异步发起一个通知,通知商户支付结果。(10.异步通知商户支付结果) 特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。验证签名 验证签名就是以防他人伪造微信通知。验证支付状态 验证支付状态是以防重复支付验证支付金额 验证数据库中订单的金额是否与支付
2017-11-14 13:27:29
780
原创 两个字符串的最长公共子序列
求两个字符串的最长公共子序列和最长公共子串是两个问题。。 这次先解决子序列的问题。 从一个字符串S中移除零个或者多个字符得到的序列称为S的子序列。 例如”abcde”的子序列有”abe”,”“,”abcde”等。定义LCS(S,T)为字符串S和字符串T最长公共子序列的长度,即一个最长的序列W既是S的子序列也是T的子序列的长度。通用方法是通过动态规划求解。将问题本身化为相同规模的子问题求解。比
2017-09-12 18:08:52
818
原创 剑指offer--栈的压入、弹出序列
import java.util.Stack;/** * 栈的压入,弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序 * ,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不等。例如,序列{1,2,3,4,5}是某栈的压栈顺序,序列{4,5,3,2,1}是该栈 * 序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列 * */public
2017-09-08 18:05:26
186
原创 剑指offer--顺时针打印矩阵
顺时针打印矩阵 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 (注意:矩阵可以是3*3,4*2,6*1)分析:从矩阵[0][0]开始遍历。先遍历到矩阵某个方向上的末端。换下个方向。如果没有可以遍历的位置,结束遍历。如果有可以遍历的位置,继续第2步。问题的关键: 如何判断某个位置是否被遍历过? 创建一个与矩阵同等大小的标记矩阵,每经过一个点,便标记一次
2017-09-07 16:33:38
192
转载 深入理解悲观锁和乐观锁
转自http://www.open-open.com/lib/view/open1452046967245.html在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以
2017-09-07 15:15:52
193
原创 通过BlockingQueue实现生产者和消费者问题
摘自http://wsmajunfeng.iteye.com/blog/1629354import java.util.Random;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;pub
2017-09-07 11:31:08
312
原创 浅谈数据库设计技巧
在阅读了这篇资料之后有感,了解数据库设计时需要有长远的眼光。以商品信息表的设计为例子。(省去其他关联的表) 商品信息表(Wares_info) 名称 类型 约束条件 说明 wares_id int 无重复 商品标识,主键 wares_name char(100)
2017-08-31 17:45:24
220
转载 线程的状态及转换(java多线程基础)
线程间的状态转换: 新建(new):新创建了一个线程对象。可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。阻塞(block):阻塞状态是指线
2017-08-30 13:59:54
195
原创 线程的创建方式--(java多线程基础)
传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。 继承Thread类,重写run方法()public class Mythread extends Thread { private volatile int ticket = 10; @O
2017-08-30 13:30:27
200
原创 剑指offer-数值的整数次方
public class 面试题16 { public static double Power(double base, int exponent) throws Exception { double result = 0.0; if (base == 0.0 && exponent < 0) throw new Exception("非
2017-08-29 01:40:50
284
原创 java类加载机制--《深入理解java虚拟机》
类生命周期:加载验证 准备 解析 初始化 使用卸载 有且只有五种情况立即对类进行初始化:遇到new、getstatic、putstatic或invokestatic这四条字节码指令时,如果类没有进行过初始化,则立即对类进行“初始化”。使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需触发其初始化。当初始化一个类的时候,如果发现其父
2017-08-24 22:16:59
178
转载 快速排序
该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此我的对快速排序作了进一步的说明:挖坑填数+分治法: 先来看实例吧,定义下面再给出(最好能用自己的话来总结定义,这样对实现代
2017-08-23 15:18:39
163
原创 剑指offer-斐波那契数列
斐波那契数列:f(0)=0; f(1)=1; f(n)=f(n-1)+f(n-2); (n>1)public class 面试题10 { static long[] f; public static long method1(int n) { if (f[n] != 0) return f[n]; if (n <=
2017-08-23 13:53:10
183
原创 剑指offer-重建二叉树(java版)
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。 分析:通过前序序列得到根节点的值通过中序序列得到左右子树的长度通过根节点位置和左右子树的长度,能够得到前序序列左右左子树起始位
2017-08-22 17:35:15
327
1
原创 java中单例模式的实现
lazy loaded thread-safe单例模式实现DCL (double checked locking 实现法) double checked locking ,顾名思义,就是双检查法,检查实例INSTANCE是否为null或者已经实例化了。public class DoubleCheckedLockingSingleton { private volatile DoubleChec
2017-08-21 20:10:49
211
原创 java垃圾回收机制相关(出自《深入理解java虚拟机》)
那些内存需要回收?什么时候回收?如何回收?内存运行时区域 程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而有条不絮地执行着出栈和入栈操作。java堆和方法区为线程共享。一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,运行期得知。(需要垃圾回收机制去回收)判断对象是否存活 引用计数算法 给对象中添
2017-08-20 21:52:52
169
原创 java内存区域相关(出自《深入理解java虚拟机》)
运行时数据区域程序计数器(线程私有) 看作当前线程所执行的字节码的行号指示器。在虚拟机的概念模型中,字节码的解释器工作时就是通过改变这个计数器来 选取下一条需要执行的字节码指令。java虚拟机栈(线程私有) 描述的是java方法(字节码)执行的内存模型:每个方法在执行时都会创建一个栈帧用于存取局部变量表、操作数栈、动态链接、方法出口等信息。局部变量表中存放编译期可知的数据类型: 基本数
2017-08-20 20:07:58
192
原创 DetachedCriteria 分页Projection取消聚合条件 (解决方案)
当我们在使用DetachedCriteria进行分页查询时,需要对DetachedCriteria对象设置setProjection(Projections.rowCount()。可此时我们还需要DetachedCriteria对象去查询分页的结果集,而DetachedCriteria给的方法没有像 removeProjection()这样的条件。。而我也不想去拷贝一个DetachedCriteri
2017-07-17 01:57:22
1323
原创 (新手向)用powerdesigner生成测试数据
首先,先创建好物理模型。然后通过属性栏设置要生成的测试数据!第一次用powerdesigner的生成测试数据,还有许多地方没搞太明白,这里只是作下笔记罢了。若有人能有所收获,便知足。
2017-07-04 19:58:35
1095
3
原创 json前后端传输(ajax异步提交)
Insert title here<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> var jsonStr = [ { 'name' : 'jim', 'age' : 20 }, { 'name' : 'king', 'age' : 26 }, { 'name
2017-06-30 11:28:27
278
原创 蓝桥杯 第七届决赛 路径之谜
路径之谜小明冒充X星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。假设城堡地面是 n x n 个方格。【如图1.png】所示。按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不能跳跃。每走到一个新方格,就要向正北方和正西方各射一箭。(城堡的西墙和北墙内各有 n 个靶子)同一个
2017-05-12 14:33:11
491
原创 蓝桥杯 反幻方
反幻方我国古籍很早就记载着2 9 47 5 36 1 8这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。下面考虑一个相反的问题。可不可以用 1~9 的数字填入九宫格。使得:每行每列每个对角线上的数字和都互不相等呢?这应该能做到。比如:9 1 28 4 37 5 6你的任务是搜索所
2017-05-12 11:03:49
661
原创 蓝桥杯 历届试题 分糖果 java
历届试题 分糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为
2017-05-11 15:56:20
492
原创 Matrix Swapping II hdu2830
Matrix Swapping IITime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1931 Accepted Submission(s): 1297Problem DescriptionGiven an N
2017-05-11 15:49:56
353
原创 机器人塔 第七届蓝桥杯javaA组
package 第七届试题;import java.util.Scanner;public class 机器人塔 { public static int m; public static int n; public static char map[][]; public static int count = 0; public static void main(String[]
2017-05-11 14:52:53
390
原创 凑平方数 第七届蓝桥杯决赛javaA组
package 第七届试题;public class 凑平方数 { public static boolean[] used = new boolean[10]; // 判断0-9中用过的数字 static long[] res = new long[10]; public static boolean[] mark; public static int sum = 1; stat
2017-05-11 14:51:10
417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人