技术
zhaomaoer
这个作者很懒,什么都没留下…
展开
-
JAVA-Lambda
LambdaReferenceWhy函数式编程,简化写法。可以看作匿名类的简化写法WhatLambda:可以被认为是一种匿名函数,可以看做从匿名类一步步演化而来。How结构:(int a, int b) -> { return a + b; }参数类型:一个或者多个参数主体: 一条或者多条语句线程//旧方法:new Thread(new Runnable() {@Overridepublic void run() { System.out.println("He原创 2020-08-19 17:13:54 · 137 阅读 · 0 评论 -
JAVA范型
JAVA泛型ReferenceWhy不使用范型带来的危害:当我们将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。取出集合元素时需要人为的强制类型转化到具体的目标类型,且很容易出现“java.lang.ClassCastException”异常。范型可以提供编译时类型安全监测机制。What泛型,即“参数化类型”, 类似于方法中的变量参数。定义方法时有形参,然后调用此方法时传递实参。泛型只在编译阶原创 2020-08-19 16:37:44 · 185 阅读 · 0 评论 -
消息队列
详细内容:http://www.cnblogs.com/itfly8/p/5155983.html概要介绍如下一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,R转载 2017-05-06 15:50:10 · 357 阅读 · 0 评论 -
java 多线程概要
详细内容 : http://blog.csdn.net/lonelyroamer/article/details/7948329一、概念 1、进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存) 线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源) 在Java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程。 区别:转载 2017-04-10 20:35:16 · 357 阅读 · 0 评论 -
java泛型概要
详细内容:http://blog.csdn.net/lonelyroamer/article/details/7927212概要: 一、泛型即“参数化类型”。所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。 这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。泛型类:class Pair<T> { private T value;转载 2017-04-10 19:26:56 · 591 阅读 · 0 评论 -
JVM相关面试题及答案
1. 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序 答:先静态、先父后子。 先静态:父静态 > 子静态 优先级:父类 > 子类 静态代码块 > 非静态代码块 > 构造函数 一个类的实例化过程: 1,父类中的static代码块,当前类的static 2,顺序执行父类的普通代码块 3,父类的构造函数 4,子类普通代码块 5,子原创 2017-03-20 15:47:37 · 116905 阅读 · 8 评论 -
java基础面试题及答案
题目链接:http://www.jsondream.com/2016/12/04/java-interview-question.html答案: 1. Arrays.sort实现原理和Collection实现原理 答:Arrays.sort():快排 Collections.sort() :MergeSort,后来变成了TimSort2. foreach和while的区别(编译之原创 2017-03-20 09:45:54 · 7114 阅读 · 1 评论 -
nginx + tomcat应用分布式
nginx的作用:内容服务器(反向代理):以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个内容服务器负载均衡器:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。表现为一个负载均衡器项目部署nginx + 多个tomcat,进行服务分布原创 2017-03-19 19:24:57 · 803 阅读 · 0 评论 -
网站后台的权限模块
未完…….1、判断用户对某个模块的某操作是否允许授权:根据用户的授权情况,决定是否显示“增加”删除、修改等按钮或链接。2、 判断用户对某个模块是否允许授权在用户登录系统之后,需要根据用户的授权情况,获得用户的授权列表,并根据用户的授权列表,在后台界面大导航菜单上显示出用户拥有权限的模块,允许用户对这些模块进行操作。3、数据库设计:原创 2017-03-19 17:43:46 · 3322 阅读 · 0 评论 -
个人博客系统中的评论功能设计
1、效果如下,盖楼形式,第一条是评论,下面是对评论的回复 2、数据库设计 remark表存储对博客的评论 外键:blog_id reply表存储对remark的回复 外键:remark_id3、remark和reply连接查询原创 2017-03-19 17:09:51 · 6315 阅读 · 0 评论 -
Leetcode 分治&递归
1、Permutations 链接:https://leetcode.com/problems/permutations/ 思路一:交互数组中的两个数,递归实现 思路二: public List<List<Integer>> permute(int[] nums) { int length = nums.length; if(length == 0)原创 2017-01-13 21:23:40 · 454 阅读 · 0 评论 -
java IO概要
详细地址:http://blog.csdn.net/lihuapiao/article/details/507314051、概念 输入输出是相对于内存设备而言的。 输入流:把能够读取一个字节序列的对象称为输入流; 输出流:把能够写一个字节序列的对象称为输出流 输入流和输出流中间连接着内存,输入流和输出流将读写分离开来进行操作,先从外设读入内存,然后再写出内存转移到其他外设2、字节流 用字节转载 2017-04-10 21:10:54 · 329 阅读 · 0 评论 -
消息推送
1、WebSocket协议是基于TCP的一种新的网络协议。 它实现了浏览器与服务器全双工(full-duplex)通信——服务器主动发送信息给客户端。 Websocket是一个持久化的协议2、产生原因 HTTP协议只能实现单向的通信。有一种技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统原创 2017-04-20 21:47:34 · 514 阅读 · 2 评论 -
Guava Cache
文章目录缓存使用场景缓存类型Local CacheGoogle Guava Cache优点适用场景内存结构常用方法创建加载缓存回收刷新过期统计移除监听器获取cache附录缓存使用场景计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存。缓存类型分布式缓存本地缓存(local cache) / 内存缓存(memory cache)Local Cac...原创 2019-05-09 18:22:57 · 215 阅读 · 0 评论 -
LeetCode: Array
Container with most waterNum 11: https://leetcode.com/problems/container-with-most-water/submissions/思路: 最大成水量决定因素:Min(num[i], num[j]) 和间距(j - i)决定。首尾指针,两者中值较小的向中间移动,用变量保存当前最大盛水量。矩阵理解,覆盖了全部可能的case。...原创 2019-05-03 19:24:59 · 150 阅读 · 0 评论 -
Java- Optional使用
OptionalJava8引入的新特性解决的痛点问题空指针异常(NullPointerException),任何访问对象方法或属性的调用都可能导致 NullPointerException特性创建Optional实例对象不为 null 的时候使用 of()。如果对象即可能是 null 也可能是非 null,你就应该使用 ofNullable() 方法 public sta...转载 2019-03-10 22:54:33 · 158 阅读 · 0 评论 -
Guice入门
Guice官方资料:https://github.com/google/guice解决的痛点问题代码中的factory(解耦client和实现类)过多new的使用Unit Test难依赖不明显,隐藏在代码中优势减少了factory,采用bind方式修改方便 :注入的object内部发生变化,当前类不需要修改便于UT:UT和prod注入的object可以不同,便于测试。...原创 2019-03-05 18:40:58 · 578 阅读 · 0 评论 -
Lombok入门
Lombok解决的痛点问题原始的java object(POJO)private fields,每一个field都需要有setter/getter方法constructortoString() methodfinally bock这些代码都是可以优化的优势通过注解方式,优化了冗余代码和主流的IDE结合的很好主要内容check for Nulls@NonNull @...原创 2019-03-01 20:27:48 · 134 阅读 · 0 评论 -
oc
变量定义:https://blog.csdn.net/shenjie12345678/article/details/39052659消息传递和转发机制:http://www.cnblogs.com/zhanggui/p/7731394.html*转载 2018-05-17 15:40:57 · 236 阅读 · 0 评论 -
单链表排序
1、归并排序: 将链表拆分成两个链表,递归,归并,将两个已排序链表合并public ListNode sortList(ListNode head) { // write your code here if (head == null || head.next == null) return head; ListNode slow = head,原创 2017-06-05 10:44:09 · 595 阅读 · 0 评论 -
leetcode图
leetcode图的相关题目解析: 对图的遍历就是两个经典的方法DFS和BFS。BFS经常用Queue实现,DFS经常用递归实现(可改为栈实现)。1、Clone Graph 题意:给定图中一个节点,克隆图 思路:用HashMap,key存lable值,value存新clone的node,用BFS方法遍历帮助拷贝neighbors的值。给定给一个节点,若lable在map中有,则表示已经clon原创 2017-05-07 23:01:04 · 1007 阅读 · 0 评论 -
leetcode二分排序 & 查找:
1、Search a 2D Matrix 链接:http://oj.leetcode.com/problems/search-a-2d-matrix/求解思路:从左下、右上进行查找,避免重复比较public boolean searchMatrix(int[][] matrix, int target) { int leni = matrix.length, lenj = matr原创 2016-11-25 17:45:19 · 353 阅读 · 0 评论 -
LeetCode 贪心
1、题目:Best Time to Buy and Sell Stock 链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ 思路:这里写代码片原创 2017-02-26 13:58:42 · 298 阅读 · 0 评论 -
LeetCode 动态规划
一、动态规划问题的特点: 1) 问题具有最优子结构性质。如果问题的最优解所包含的 子问题的解也是最优的,我们就称该问题具有最优子结 构性质。2)无后效性。当前的若干个状态值一旦确定,则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪条路径演变到当前的这若干个状态,没有关系。二、求解思路: 1. 将原问题分解为子问题2.确定状态和子问题相关的各个变量的一组取值,称之为一个“状原创 2017-02-25 13:16:28 · 423 阅读 · 0 评论 -
leetcode数组遍历技巧
1、Container With Most Water 链接:https://leetcode.com/problems/container-with-most-water/ 思路:从数组头尾向中间移动。取较小的那边移动,因为隔板盛水的最大值,在距离极可能大的情况下,另一边>=当前高度 时取得。 public int maxArea(int[] height) { int原创 2016-12-08 20:24:51 · 557 阅读 · 0 评论 -
leetcode数组(一)
1、Remove Element 链接:https://leetcode.com/problems/remove-element/ 思路:将i,j分别指向头尾,nums[i] == val 且nums[j] != val, 用j的值覆盖i处的值public int removeElement(int[] nums, int val) { int len = nums.length原创 2016-12-05 09:18:23 · 430 阅读 · 0 评论 -
leetcode字符串(二)
1、Longest Palindromic Substring 链接:https://leetcode.com/problems/longest-palindromic-substring/ 思路:马拉车算法private static String preProcess(String s){ int n = s.length(); if (n == 0) ret原创 2016-12-04 11:43:34 · 295 阅读 · 0 评论 -
Manacher马拉车算法总结
http://blog.csdn.net/dyx404514/article/details/42061017转载 2016-12-03 11:53:42 · 720 阅读 · 0 评论 -
leetcode 字符串问题(一)
1、Count and Say 链接:https://leetcode.com/problems/count-and-say/ 思路:注意一点,java中String类型改变耗时长,使用StringBuffer来代替Stringpublic String countAndSay(int n) { if(n <= 0) return "";原创 2016-12-01 22:39:01 · 599 阅读 · 0 评论 -
leetcode标记数组
1、Valid Sudoku 链接:https://leetcode.com/problems/valid-sudoku/ 思路:一次遍历行、列、小格子public boolean isValidSudoku(char[][] board) { if(board==null || board.length!=9 || board[0].length!=9) return原创 2016-12-10 12:13:27 · 608 阅读 · 0 评论 -
一次完整的HTTP事务
转载地址:http://www.linux178.com/web/httprequest.html 感谢作者的分享,以下是简要内容,如需详细解释,请访问上述网址当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html转载 2016-08-30 15:10:26 · 300 阅读 · 0 评论 -
mybatis多表查询
generator只能生成简单的单表查询语句,若需要多表查询,需要自己修改一些文件1、修改model 将以javebean的形式体现表连接:package com.bupt.blog.model;import java.util.Date;import java.util.List;public class Blog { // 一系列属性和setter、getter方法 priv原创 2016-07-28 11:26:57 · 1039 阅读 · 1 评论 -
mybatis分页插件PageHelper的使用
1、添加jar包<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.5</version> </dependency>2、后台分页 int pageNum = 1; int原创 2016-07-09 21:56:56 · 15774 阅读 · 1 评论 -
leetcode 堆栈
1、Evaluate Reverse Polish Notation 链接:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/思路:使用栈,数字进栈,符号出栈,注意数字可能有负数,注意判断条件public int evalRPN(String[] tokens) { Stack stack = new原创 2016-11-26 22:02:54 · 348 阅读 · 0 评论 -
Leetcode 链表
1、Linked List Cycle 链接:https://leetcode.com/problems/linked-list-cycle/ 思路:fast、slow两个指针,fast走两步,slow走一步,若有环,fast和slow都进入环,必然相遇;若fast == null || fast.next == null,无环 public boolean hasCycle(ListNo原创 2016-12-23 19:50:55 · 221 阅读 · 0 评论 -
LeetCode 回溯(试错法)
1、题目:Combinations 链接:http://oj.leetcode.com/problems/combinations/ 思路:题目中要求数字的组合,使用深度优先DFS,然后回溯。 public List<List<Integer>> combine(int n, int k) { List<List<Integer>> result = new ArrayLi原创 2017-02-24 18:43:46 · 440 阅读 · 0 评论 -
《剑指Offer》java 2.4 算法和数据操作
No.8 旋转数组的最小数字 翻转的数组,总有一边是有序的 eg[2,3,4,5,6,1];采用二分查找,注意{1,0,1,1,1,1,1},则不能缩小问题规模,需要依次遍历//特例{1,0,1,1,1,1,1} public int minOrder(int[] array, int left, int right){ int min = array[left];原创 2017-02-28 10:34:03 · 287 阅读 · 0 评论 -
《剑指Offer》2.3数据结构 java版
No.3 二维数组中查找数字 思路:从右上角(左下角)开始比较 public boolean Find(int target, int [][] array) { if(array == null) return false; int row = array.length, column = array[0].length;原创 2017-02-27 16:15:23 · 314 阅读 · 0 评论 -
Leetcode 树遍历 应用
1、Binary Tree Maximum Path Sum 链接:https://leetcode.com/problems/binary-tree-maximum-path-sum/ 思路:递归,求左右子树深度,看深度差是否小于1 public boolean isBalanced(TreeNode root) { if(root == null)原创 2017-01-09 15:10:31 · 239 阅读 · 0 评论 -
leetcode 树遍历变种
1、Sum Root to Leaf Numbers 链接:https://leetcode.com/problems/sum-root-to-leaf-numbers/ 思路:递归,改层的和 = 上层和* 10 +当前val public int sumNumbers(TreeNode root) { return sumDFS(root, 0); } p原创 2017-01-01 14:33:46 · 420 阅读 · 0 评论