基础
文章平均质量分 93
我小叮当无可奈何
孤独且自由、无欲也无求
展开
-
Netty:基于Nio的学习笔记
netty学习笔记项目地址https://github.com/zz790609619/nettyStudy基本概念channel=数据的通道msg=流动得数据handler=处理数据得工序 可以多个handler处理一条msg 分成inbound(入栈) 和 outbound(出栈)channel 属性有 pipeline=流水线 由多个handler组成pipeline负责发布事件(读写等)传播给每个handler,handler对感兴趣得事件进行处理NioE原创 2021-04-13 11:20:36 · 203 阅读 · 0 评论 -
本地程序通过跳转机访问远程数据库(java和python)
本地程序读取线上数据必备一、需求线上数据库提供了密钥,通过navicate可以正常访问,但是拉取复杂逻辑数据时会很麻烦,所以需要通过跳转机接口转发的方式去实现复杂数据的查询与拉去二、实现Java主要用了JSch,可以通过ssh2方式访问跳转机,并做端口转发,实现功能需求/*** 调用方法*/ private static void search() throws Exception { StringBuffer res = new StringBuffer();原创 2020-12-17 19:26:40 · 488 阅读 · 0 评论 -
JDK1.8(二)---Stream串行流和并行流详解
前序JDK1.8—函数式编程(lambda、方法引用、Stream)Stream流串行流一、执行机制基于pipeline(管道)二、流的特性stream不存储数据stream不改变数据源stream不可重复使用stream串行执行上个节点会影响下个节点三、流的节点中间节点(懒加载): filter、distinct结束节点:toArray、foreach并行流API:parallelStream()利用多线程去处理一批数据,各个线程处理完的结果最后...原创 2020-09-25 15:12:40 · 1797 阅读 · 0 评论 -
@Transaction:Spring事务生效、失效的条件
事务相关由于公司做的是金融支付相关的业务,所以大量使用了事务,将入职以来遇到的事务相关的经验记录一下。一、Spring事务Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。二、@Transaction注解属性原创 2020-09-15 14:24:36 · 2045 阅读 · 0 评论 -
SpringBoot:文件上传至阿里云
正常的项目中通常会有存放文件的需求,例如用户头像,用户简历等,我们需要把它存放在专门存放数据的云服务器上。Spring Boot 项目上传文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma原创 2020-05-09 16:17:49 · 2163 阅读 · 3 评论 -
后台开发者应该需要了解哪些ElasticSearch的知识?
ElasticSearchElasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单。他的功能模块还有:全文检索分布式文件存储,将每个字段都作为索引,可以被搜索可以结合Kinaba做日志分析可以扩展,处理量级大的数据一、使用场景列举...原创 2020-05-08 15:22:44 · 441 阅读 · 0 评论 -
SpringBoot :API接口拦截器验证(Token验证)并将数据存入Request中供接口调用
一、为什么需要拦截器?在前后端分离的现在,项目中的所有的前端的页面都需要通过调用后台的Api进行获取数据接口的功能点不同,就会有很多种情况,比如说涉及敏感数据(登录,获取个人信息,个人金额修改)相关的接口需要token验证获取不敏感数据则不需要进行校验vue等前端调用后台api,如果没有引入(nginx),则有可能有跨域问题所以说需要一个拦截器去区分哪些路径下需要token校验,那...原创 2020-04-29 15:41:20 · 12133 阅读 · 1 评论 -
@ControllerAdvice:全局异常处理示例
全局异常处理用@ControllerAdvice标记全局异常处理的类@ControllerAdvice这是一个增强的 Controller标签。使用这个 ControllerAdvice,可以实现三个方面的功能:全局异常处理设置全局变量,也就是设置完,每个接口能获取到整个参数数据预处理@ControllerAdvice修饰的类package com.example.demo.c...原创 2020-04-28 16:07:52 · 325 阅读 · 0 评论 -
分片查询(sharding-jdbc)以及常见问题解决
新公司使用了自动分库分表的插件(sharding-jdbc),由于有多个数据源,所以结合了durid框架,作为数据库链接管理框架。Sharding jdbcSharding-JDBC是一个开源的分布式数据库中间件,它无需额外部署和依赖,完全兼容JDBC和各种ORM框架。Sharding-JDBC作为面向开发的微服务云原生基础类库,完整的实现了分库分表、读写分离和分布式主键功能,并初步实现了柔...原创 2020-04-23 14:52:19 · 15418 阅读 · 0 评论 -
JDK1.8---函数式编程(lambda、方法引用、Stream)
什么是函数式编程?一切都是数学函数。函数式编程语言里也可以有对象,但通常这些对象都是恒定不变的 —— 要么是函数参数,要什么是函数返回值。函数式编程语言里没有 for/next 循环,因为这些逻辑意味着有状态的改变。相替代的是,这种循环逻辑在函数式编程语言里是通过递归、把函数当成参数传递的方式实现的。一、lambda表达式组成:参数列表、箭头符号(->)和函数体具体展现形式:表达...原创 2020-04-14 18:04:40 · 1118 阅读 · 0 评论 -
LeetCode12-多线程之按序打印
题目如图:第一种解法(信号量)import java.util.concurrent.Semaphore;class Foo { public Semaphore Semaphore_one=new Semaphore(0); public Semaphore Semaphore_two=new Semaphore(0); public Foo() { ...原创 2020-04-13 19:46:25 · 197 阅读 · 1 评论 -
RPC:一个包含Http又不限于Http远程调用方式
RPC(远程过程调用)RPC,即Remote Procedure Call Protocol,多用于一个区域内的不同项目直接的方法调用举个栗子:一个公司(区域)有很多部门,财务部的小王(A项目的某个方法) 通过 电话(远程调用)让人事部的小李 (B项目的某个方法)汇报人员信息一、RPC和Restfull的区别?一般来说,RPC和Restfull其实不是一个相对的概念,无法进行比较,因为Re...原创 2020-03-18 19:47:18 · 408 阅读 · 0 评论 -
多线程---主线程如何在线程池结束后在结束
业务场景:合并服务器数据实现思路:采用多线程去合并不同服务器c下得不同得表,但是主线程需要等到线程池执行完所有线程在执行。保证日志得顺序性采取方法:线程池+CountDownLatch代码实现:public class MergeService { /** * 一个包装器而已,核心仍然是执行外部类中的函数。 */ class ConcurrentMerge implements...原创 2020-03-18 17:43:15 · 1093 阅读 · 0 评论 -
Eclipse项目转idea--tomcat运行/war包包名不对
配置tomcatidea配置tomcat点击下图Edit configurations选择localtomcat具体配置默认生成war包名字不符合预期Deloyment则是修改生成war的名字快捷键alt+ctrl+shift+s打开project structure...原创 2020-01-16 17:12:12 · 654 阅读 · 0 评论 -
Eclipse项目转idea编码问题
IDEA中设置File > Setting > File Encoding 设置成UTF-8File > Setting >Java Compiler,在 Additional comman line parameters 参数新增:-encoding UTF8tips:如果某些类报错 非法字符: ‘\ufeff’ 则将这个类用nodepad++打开 编码改成...原创 2020-01-16 16:30:10 · 429 阅读 · 0 评论 -
两年来遵守的代码风格
养成一个合格的编码风格,有益于自己和阅读你代码的人理解:**** 命名风格 ****不允许任何类名,包名,方法名,变量名以下划线_或者美元符号$开头或者结尾反例:name, name, name, name, $name, name $代码中的命名不允许出现拼音,拼音与英语混合或者中文命名(专有名词除外:alibaba,taobao,suzhou等)反例:dazhe, guan...原创 2019-12-16 14:43:18 · 242 阅读 · 0 评论 -
War包反编译成正常编码的java文件
将war包的带.jar的文件名修改成.zip等可以被解压软件解压的格式,然后解压成文件解压后目录如图所示:打开WEB-INF后,有一个classes文件夹。这个文件就是.java文件反编译成的文件下载工具,在jd-gui官网下载工具,按照自己的系统下载.打开工具的jd-gui.exe,然后将classes文件夹的文件拖进去即可下图即反编译文件内容:...原创 2019-11-21 19:21:06 · 2573 阅读 · 0 评论 -
Jmeter----- java并发测试工具
写的聊天监控接口,有多线程进行处理,现在因为要有个数据需要去数据库中查询获取,且不经常修改,所以打算使用缓存,因为这个数据被修改的地方有很多。无法用缓存去做。所以打算用定时失效的map去处理,但是由于是多线程,再失效的时候的这个map就需要用单例的双重锁去解决并发put会造成数据错乱等问题。在编写好代码后。需要有一款不同于postman的长时间压力测试的测试工具来帮助测试。经过测试同学介绍就有了...原创 2019-11-05 20:49:42 · 2612 阅读 · 0 评论 -
Java 栈类(stack.class)
栈最近刷leetcode,发现栈经常会使用到。是我们常用的一种数据结构。java中的栈类从图中可以发现,栈是属于java.util包的栈是Vector的一个子类,继承于Vector。它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。栈类的方法主要有:方法名返回类型说明...原创 2019-10-23 17:39:02 · 2745 阅读 · 0 评论 -
UrlEncode后的参数如何在请求体中拿到并且转换成字符
由于服务间调用,参数容易乱码,所以在请求的时候将参数encode,然后到被请求方解析成想要的格式 /** * 绿盾 * @param param * @return */ @SuppressWarnings("unused") @RequestMapping(value = "/chatMonitorForLD", method = Reque...原创 2019-10-17 20:11:11 · 841 阅读 · 0 评论 -
枚举:获取变量的值与说明的最好方式
简单的枚举示例代码/** * @Author helloc * @Date 2019/9/12 17:28 * @Version 1.0 */public enum meiju { 白羊座(1), 金牛座(2); private int text; meiju(int text) { this...原创 2019-10-15 13:33:24 · 159 阅读 · 0 评论 -
线程池处理并发接口
由于项目的jdk版本小于1.8 所以用的ThreadPoolExecutor需求:要求用多线程的形式去处理当前接口的插入数据并且调用绿盾方的api实行聊天内容监控controller.class(接口) /** * 绿盾 * @param param * @return */ @RequestMapping("/chatMonitorForL...原创 2019-10-14 20:44:27 · 1377 阅读 · 1 评论 -
windows tomcat端口被占用处理方式
1、首先查找到占用8080端口的进程号PID是多少CMD>netstat -ano | findstr 8080这个命令输出的最后一列表示占用8080端口的进程号是多少,假设为12342、kill掉这个进程CMD>taskkill /F /PID 1234这样8080端口就是释放了。...原创 2019-10-14 19:31:41 · 177 阅读 · 0 评论 -
springboot 封装接口返回类
接口调用或者前后端交互都必不可少一个返回的封装类ResponseMessage.javapackage com.hiqiblog.ViewModel;public class ResponseMessage<T> { private static final String CODE_SUCCESS = "200"; private static final S...原创 2019-07-30 11:13:03 · 4110 阅读 · 2 评论 -
带有失效时间的Map
今天是一个周六还要上班的苦逼孩子今天遇到了一个数据,由于在Socket中会用到,使用比较频繁,但是新增的数据很少,不想每次都需要查询数据库,但是也犯不着也到缓存里(新增数据和查询不是在一个服务里面,没有集成redis)于是想到写到内存里,由于数据表结构比较适合Map存储,于是想写到Map,但是由于新增的数据不是在一个服务里面,需要对这个Map设置失效时间,稍微提升一点数据的准确性。这里展示...原创 2019-07-20 15:08:40 · 3283 阅读 · 0 评论 -
Naga 基于NIO的socket框架
公司游戏端和游戏后台端的通信用的是基于NIO的socket框架。由于从未使用过socket 然后最近要接触到这方面的工作了,拿到代码看了一下流程。整理如下:1.Naga框架中的常用类NIOService :创建NIO流的服务对象NIOServerSocket :相当于IO中ServerSocketNIOSocket 相当于IO中SocketServerSocketObserverAd...原创 2019-07-19 14:03:22 · 509 阅读 · 0 评论 -
Session和Cookies的区分
Session和Cookies的区分防止忘记!!!(1).存取方式Cookies只能存放ascll字符串 如果想要存储Unicode字符需要utf-8转码,可扩展性地Session可以存放各种类型的数据 甚至是后台的实体类(2).隐私安全Cookies存在客户浏览器 容易泄露和被复制或者改写Session存在服务器端 对服务器是透明的 不存在泄露(3).有效期Cookies 可以...原创 2019-03-05 14:22:49 · 105 阅读 · 0 评论 -
一次url访问 经过了什么
url访问1.url是啥URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址。比如 http://www.w3school.com.cn/html/index.asp,遵守以下的语法规则:scheme://host.domain:port/path/filename各部分解释如下:scheme - 定义因特网服务的类型。常见的协议有...原创 2019-04-28 11:15:02 · 624 阅读 · 0 评论 -
WebSocket、HTTP、Socket之间的关系
新接的游戏是c语言的,采用了websocket进行数据传输。为了防止和socket和HTTP互相混淆。记录一下WebSocketWebsocket是一个持久性化的协议,模拟socket的一种服务器端和客户端的双向通信,需要通过HTTP1.1的握手进行连接特点:Html5协议的一部分服务器端可以主动向客户端进行通信基于tcp和Http一样都是应用层的协议只需要连接一次,就可以达到双...原创 2019-08-08 10:21:21 · 479 阅读 · 1 评论 -
spring常用注解
参数绑定注解@ModelAttribute传输格式必须为x-www-form-urlencoded,后台才会自动注入实体类@RequestBody传输格式为json,会自动根据json的格式去匹配接收的实体.一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据,不能处理二进制流的形式。比如说from表单提交(multi...原创 2019-08-14 16:33:07 · 174 阅读 · 0 评论 -
Spring Security、Shiro、JWT权限认证
JWTjwt是什么?JWT又名Json Web Token,基于数字签名,定义了一个紧凑、字包含的方式,用于json在各方之间安全传输信息。使用场景一般用于授权认证和数据交换:Authorization (授权) : 这是使用JWT的最常见场景。一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的JWT的一个特性,因为它的开销很小...原创 2019-08-19 21:04:06 · 11674 阅读 · 4 评论 -
Java面试题(自留)
1.一个“.java”的源文件是否可以包括很多个类(不是内部类)?有什么限制?可以有很多,但是只能有一个public的类,且public的类名和文件名一致。public class test{ pubic static void main(String[] args){ public class A{ //不会报错 因为是内部类 ...原创 2019-08-12 21:01:40 · 293 阅读 · 0 评论 -
后台支持跨域
跨域后台配置import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.Servle...原创 2019-08-12 19:42:26 · 748 阅读 · 0 评论 -
Java中的集合
平常工作的时候只专注了如何实现业务,对java一些基础知识已经仅仅局限于工作中使用的,忘记了许多知识。补一补基础!!!Java中的集合平常工作必不可少的一个类。集合作为容器可以存储任意类型的数据。使我们数据的载体。结构如下Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├Has...原创 2019-08-12 20:18:49 · 169 阅读 · 0 评论 -
HashMap中保证key值正确的100w个方式
重写hashcode和equals方法在我们使用HashMap的时候,正常情况下是Map<String,Object>,key值一般都为String类型,但是无法避免的是key可以为一个可变的实体。例如下列代码package com.example.demo;import org.junit.Test;import org.junit.runner.RunWith;impo...原创 2019-08-28 09:42:36 · 596 阅读 · 0 评论 -
轻松快乐数据结构之红黑树
红黑树红黑树是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态。遵守规则:根节点都是都是黑色得每一个红色节点得子节点都是黑色(包括NULL和NIT)树的叶子节点(树枝末端)都是黑色的每个节点不是黑色就是红色的根节点到末尾节点的所有路径都还含有相同的黑色节点数(保证接近平衡的二叉树)复杂度和查找逻辑时间复杂度为O(lgn)最坏时间...原创 2019-10-14 19:30:44 · 124 阅读 · 0 评论 -
多线程-并发笔记
线程定义线程是该进程的一条执行路径,是程序执行时的最小单位,它是进程的一个执行流,负责CPU调度和分派,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。多线程的创建方法1:继承java.lang.Thread2:实现runna...原创 2019-04-29 09:52:09 · 198 阅读 · 0 评论