自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

八行书

https://wisewong.github.io/

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java8 Collectors.toMap的坑

按照常规思维,往一个map里put一个已经存在的key,会把原有的key对应的value值覆盖,然而通过一次线上问题,发现Java8中的Collectors.toMap反其道而行之,它默认给抛异常,抛异常... 线上业务代码出现Duplicate Key的异常,影响了业务逻辑,查看抛出异常部分的代码,类似以下写法:Map<Integer, String> map = li...

2018-09-13 12:10:55 81036 12

原创 BigDecimal精度与相等比较的坑

先想一下,创建BigDecimal对象的时候一般是怎么创建的?new一个,传进去值BigDecimal.valueOf方法,传进去值 作为一个数字类型,经常有的操作是比较大小,有一种情况是比较是否相等。用equal方法还是compareTo方法?这里就是一个大坑//new 传进去一个doubleBigDecimal newZero = new BigDecimal(0.0);...

2018-09-13 11:41:33 2637

原创 GET、POST编码问题

GET请求、POST经常会出现中文乱码的问题,最好约定前后端的编码,一般为UTF-8。但是这里面也是有坑的。后端设置编码为UTF-8的推荐方式:SpringMVC配置过滤器:<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.spr...

2018-06-25 11:11:09 328

原创 Mybatis插入数据后返回主键id

有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。单条记录插入并返回First, if your database supports auto-generated key fields (e.g. MySQL and SQL Server), then you can simply set useGenerated...

2018-06-25 11:00:19 1884

原创 大数据量下的集合过滤—Bloom Filter

算法背景如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。在响应时间要求比较严格的情况下,如果我们存在内里,那么随着集合中元素的增加,我们需要的存储空间越来越大,以及检索的时间越来越长,导致内存开销...

2018-06-23 18:27:41 3692

原创 Mysql 时间类型精度截取的bug

mysql-connector-java版本升级出现的一次问题。涉及到了时间精度的截取和四舍五入。首先了解一点,timestamp,datetime如果不指定精度,默认的精度是秒。当mysql-connector-java版本<=5.1.22时,db的客户端会将Datetime,Timestamp秒以下的精度丢弃。版本>5.1.22后,秒以下的值将不会截断db的server端会对超出精...

2018-06-23 18:05:07 716

原创 Tomcat NIO

说起Tomcat的NIO,不得不提的就是Connector这个Tomcat组件。Connector是Tomcat的连接器,其主要任务是负责处理收到的请求,并创建一个Request和Response的对象,然后用一个线程用于处理请求,Connector会把Request和Response对象传递给该线程,该线程的具体的处理过程就是Container容器的事了。在tomcat启动过程中,会初始化Con...

2018-04-11 15:00:23 2934 2

原创 Java NIO

了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。BIO常见使用方式传统的BIO是同步阻塞的方式,因此,在服务器中常见的使用方式是:来一个请求创建一个线程,阻塞的等待网络IO的数据。使用一个线程池,来一个请求就从线程池里取出来一个线程,阻塞的等待网络IO...

2018-03-28 14:22:48 640

原创 Java线程的几种状态

java.lang.Thread.State中定义的集中Java线程的状态:/** * A thread state. A thread can be in one of the following states: * <ul> * <li>{@link #NEW}<br> * A thread that has not yet started...

2018-03-20 17:31:20 189

原创 读取含有BOM头的文件遇到的问题

需求是读取一个csv文件,然后解析成对应的数据结构。csv必须包含指定的某些列,通过列名header来进行校验。 解析配置文件的方法。public List<QuestionData> buildConfigData(final MultipartFile file) { CsvReader csvReader = null; List<QuestionData...

2018-03-13 10:22:21 2547 1

原创 @RequestParam加与不加的区别

最简单的两种写法,加或不加@RequestParam注解@RequestMapping("/list")public String test(int userId) { return "list";} @RequestMapping("/list")public String test(@RequestParam int userId) { r...

2018-03-12 15:13:48 16615 1

原创 curl命令踩的坑

使用curl命令执行get请求,带多个参数:curl localhost:8080/user/binding/query?userId=123456&wrapperId=123&from=test[1] 8937[2] 8938{"ver":"1.0.0","status":1,"message":"Required String parameter 'wrapperId' ...

2018-03-08 10:59:27 5742

原创 HTTPS握手

作用内容加密 建立一个信息安全通道,来保证数据传输的安全;身份认证 确认网站的真实性数据完整性 防止内容被第三方冒充或者篡改https的采用了对称加密和非对称加密。握手过程中采用非对称加密,得到一个对称加密的秘钥。数据传输的过程中,采用对称加密。采用非对称加密比较慢,因此只在握手期间采用非对称加密,保证拿到的对称加密的秘钥的安全性,数据传输期间通过对称加密来加密,速度更快。握手:对称加密秘钥的生成...

2018-03-08 10:37:41 4135

原创 Tomcat启动过程源码解读

根据Tomcat源码来看一下Tomcat启动过程都做了什么部分代码为主要流程代码,删去了try-catch以及一些校验逻辑,方便理解主流程先来一张启动过程时序图,了解一下启动顺序Tomcat启动的入口类:org.apache.catalina.startup.Bootstrap#mainmain方法是整个tomcat启动时的入口。在main方法中,使用bootstrap.init()来初始化类加载...

2018-03-07 19:37:56 431

原创 同步/异步,阻塞/非阻塞

什么是同步和异步同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。什么是阻塞和非阻塞阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函...

2018-02-27 21:01:19 251

原创 SpringMVC静态文件过滤

如果在web.xml加了如下配置,那么静态资源文件也会被拦截:<servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>如果要静态资源文件不被过滤,有三种方法。方...

2018-02-26 14:38:23 393

原创 Git总结

git在本地分为三个区域,工作区、暂存区和本地仓库,具体情况如下:git的一般操作就是本地代码的修改提交回滚,以及与远程仓库的拉取、合并、提交等。git fetch   从远程仓库上抓取分支到本机origin的dev分支上git merge  将origin上的分支合并到工作区的dev分支上git pull  相当于前两个命令合在一起

2017-07-24 22:36:13 275

原创 基于深度学习的图像风格转换

距离上次写博客已经好久好久好久了,真是懈怠的生活节奏,整天混吃等死玩游戏,前些日子做毕业设计时总算又学了点新东西。学了一点深度学习和卷积神经网络的知识,附带着详细学习了一下前段时间我觉得比较有意思的图像风格转换。毕竟是初学,顺便把神经网络方面的知识也写在前面了,便于理解。若有不对的地方的话,希望指正。        主要参考的文献有《A Neural Algorithm of Ar

2017-06-21 13:35:56 16475 16

原创 校招碎碎念

前两天拿了去哪儿(Qunar)的offer,不打算接着找了,心累,结束我的校招生涯吧,写写这段时间的经历。        本科生一只,普通一本,非211/985学校,出了省就没人认那种,计算机专业,目前大四。找工作大概从大三下学期开始吧,那时候各大厂开始招实习,接着陆陆续续的有七八月份的内推,九、十月份的校招,一路面试过来,跪了一路。个人是做Java开发的,做过爬虫,做过Web,学

2016-10-25 22:54:14 1250 1

原创 浅谈对Spring Framework的认识

Spring Framework,作为一个应用框架,官方的介绍如下:        The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of dep

2016-09-17 16:22:27 608

原创 LeetCode-70-Climbing Stairs

You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 题意:爬台阶问题。每次能爬一个或两个台阶,问一

2016-06-24 23:14:32 307

原创 LeetCode-66-Plus One

Given a non-negative number represented as an array of digits, plus one to the number.The digits are stored such that the most significant digit is at the head of the list. 题意:给定一个由数组表示的数字

2016-06-24 22:35:22 266

原创 LeetCode-62-Unique Paths

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the

2016-06-23 07:50:46 354

原创 LeetCode-53-Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] ha

2016-06-22 23:29:22 256

原创 LeetCode-15-3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not contain

2016-06-22 22:47:35 226

原创 LeetCode-9-Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space. 判断一个整数是否是回文数。 思路:求出数字abcd的逆序的数值dcba,如果是回文数的话,那么abcd==dcba。 时间复杂度:O(n) python代码:class Soluti

2016-06-22 22:46:41 285

原创 LeetCode-1- Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example:Given nums = [

2016-06-22 22:45:38 268

原创 浅谈Struts2

学过SSH框架很长一段时间了,一直没有很系统的总结一下,这里先简单谈谈Struts2。 为什么要用Struts2? 这里列举一些Servlet的缺点:1、每写一个servlet在web.xml中都要做相应的配置。如果有多很servlet,会导致web.xml内容过于繁多。2、这样的结构不利于分组开发。3、在servlet中,doGet方法和d

2016-05-11 20:09:30 7380

原创 探究JVM——垃圾回收

垃圾回收主要考虑三件事情:哪些内存需要回收?什么时候回收?如何回收? 一、哪些内存需要回收? 堆内存:对于JVM 来说,垃圾回收主要是针对堆内存中的对象实例。方法区:垃圾收集行为在方法区是比较少出现的,一般来说,这个区域的回收“成绩”比较难以令人满意,尤其是类型的卸载,条件相当苛刻,但是这部分区域的回收确实是必要的。  二、什么时候回

2016-05-01 20:58:21 3695

原创 探究JVM——运行时数据区

最近在读《深入理解Java虚拟机》,收获颇丰,记录一下,部分内容摘自原书。 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示:    

2016-04-30 11:51:23 1195

原创 OS存储器管理(三) 虚拟存储器

基本概念与实现 1)局部性原理在一段时间内,运行的作业程序仅访问(涉及到)一部分作业代码,即不会涉及整个地址空间。即在一段时间间隔内,仅装入一部分代码,作业照样能正常运行2)虚拟存储器的引入作业(进程)运行时,仅装入其代码的一部分到物理内存,待需要时再装入其余部分,同时还可将不再运行的部分调出物理内存。变相地扩充了内存容量,即实现了虚拟存储器。

2016-03-14 23:02:59 655

原创 OS存储器管理(二)

离散分配分页(Paging),分段,段页式 一、分页  一个进程的物理地址可以是非连续的; 将物理内存分成固定大小的块,称为块(frame);将逻辑内存分为同样大小的块,称为页(page);将连续的页分配并存放到不连续的若干内存块中;建立页表,记录每一页对应的存储块的块号,将逻辑地址转换为物理地址。将产

2016-03-13 22:46:17 416

原创 sql server存储过程编程

存储过程是一组完成特定功能的SQL 语句集合,经编译后存储在数据库中。 存储过程作为一个单元进行处理并以一个名称来标识。它能向用户返回数据、向数据库表中写入或修改数据等操作。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。  存储过程的作用执行速度快;减少网络流量;作为一种安全机制。通过设置用户只可能使用存储过程访

2016-03-05 11:36:50 1363

原创 sql server 触发器

触发器是一种特殊类型的存储过程。触发器可包含复杂的T-SQL语句。触发器不能通过名称被直接调用,也不允许设置参数。它是建立在触发事件上的。 触发器可以强制执行一定的业务规则,以保持数据完整性、检查数据有效性、实现数据库管理任务和一些附加功能。 触发器的分类: DML、 DDL、 登录触发器  创建触发器需要指定的选项:  1.触发器的名称。 

2016-03-03 22:56:27 741

原创 T-SQL 查询、修改数据表

T-SQL修改表数据 INSERT语句语法:INSERT [TOP(expression) [PERCENT]][INTO]   { | rowset_function_limited     [ WITH ( [ ...n ] ) ] /*指定表提示*/    | view_name } /*视图名*/  {    [(column

2016-03-02 23:13:34 1525

原创 sql server 事务处理

事物处理 事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行。事务有4个属性,称为ACID(原子性、一致性、隔离性和持久性) 原子性   事务必须是原子工作单元。对于其数据修改,要么全都执行,要么全都不执行。一致性  事务在完成时,必须使所有的数据都保持一致状态。隔离性  由并发事务所做

2016-02-18 21:26:15 637

原创 OS存储器管理(一)

存储器的层次:分为寄存器、主存(内存)和 辅存(外存)三个层次。 主存:高速缓冲存储器、主存储器、磁盘缓冲存储器,         主存又称为可执行存储器;辅存:固定磁盘存储器、可移动的外部存储器;         其可长期保存数据,但不能被处理器直接访问。 此处针对的是在OS层面上对主存(内存)的管理。 内(主)存储器管理的主要功能:① 逻辑地址到物理

2016-01-24 02:30:46 668

原创 页面调度算法模拟

模拟实现的算法:FIFO,Optimal(最佳置换),LRU,Clock,改进的Clock算法 一、先入先出(FIFO): 最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内

2016-01-23 23:18:50 1565

原创 处理机进程调度模拟

一、进程调度 无论是在批处理还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。进程调度属于处理机调度。 处理机调度分为三个层次:高级调度:(High-Level Scheduling)又称为长程调度、作业调

2015-12-27 13:53:02 1930

原创 递归与分治之棋盘覆盖问题

在一个2^k * 2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘。显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘。下图所示的特殊棋盘为 k=2 时 16 个特殊棋盘中的一个。                             在棋盘覆盖问题中,要用

2015-11-26 13:02:21 507

飞机订票系统

用windows API开发的飞机订票系统,具有图形化界面。 内附源码以及程序,详见我博客http://blog.csdn.net/u013805360/article/details/41527361

2014-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除