- 博客(138)
- 资源 (2)
- 收藏
- 关注
转载 美团点评技术团队文章《工作中如何做好技术积累》阅读笔记
原文链接https://tech.meituan.com/study_vs_work.html目录如何学习贵在坚持重视实践重视交流重视总结和输出重视规划长期规划短期规划那些令人纠结的困惑学无止境吗没有绝对高明的技术,只有真正的高手不做项目就无法成长吗职责真的很小吗一定要当老大吗平台化的传说搞基础技术就一定很牛吗可行性调研的那些...
2018-09-09 22:37:36 2055 1
原创 项目启动流程概述
1. idea根据配置的tomcat地址,找到catalina.bat并运行:D:\apache-tomcat-8.5.16\bin\catalina.bat run2. tomcat启动,使用配置的JVM运行,JVM开启并连接到JMX服务,提供监控功能,可以通过java工具和命令行等监控系统信息Connected to the target VM, address: '127.0.0....
2019-02-13 14:23:37 1743 1
原创 git使用总结
乱码解决create mode 100755 "\350\257\276\347\250\213\350\265\204\346\226\231/\350\256\242\345\215\225\346\250\241\345\235\227\346\216\245\345\217\243\346\226\207\346\241\243/cgs.json"git config --gl...
2019-01-29 21:44:39 284
原创 5、私有协议开发
协议栈功能概述1、异步通信,基于Netty的NIO2、提供消息的编解码3、提供基于IP地址的白名单接入认证机制4、链路的有效性校验机制5、链路的断连重连机制通信模型1、客户端发送握手请求消息,携带节点ID等有效身份认证信息2、服务端对握手请求消息进行合法性校验,包括节点ID有效性校验、节点重复登录校验和IP合法性校验,校验通过后,返回登录成功的握手应答消息3...
2019-01-29 15:17:49 3764
原创 4、WebSocket协议开发
概述:HTTP通信是客户端控制的一请求一应答模式。不适用低延迟应用。如果有新数据可用时,立即将数据发送到客户端。需要通过长轮询等方式实现。 而WebSocket将网络套接字引入客户端和服务端,浏览器和服务器可以通过套接字建立持久的连接,双方随时都可以互发数据给对方。HTTP协议的弊端(1)半双工协议。数据可以在客户端和服务端两个方向上传输,但是同一时刻,只有一个方向上的...
2019-01-29 10:55:08 422
原创 使用nginx配置反向代理服务器
安装ubuntu 系统直接执行下面命令安装:sudo apt-get install nginx查看配置文件位置安装后,查看安装在哪,以及配置文件这些信息,可以使用如下命令:whereis nginx Linux系统下的软件配置一般都在/etc目录下,nginx的配置在/etc/nginx/目录下。修改默认端口我启动的时候,提示端口已经被使用,所以要修改,默认端...
2019-01-27 09:38:52 305
原创 3、Netty HTTP协议开发
关于HTTP的介绍,参见HTTP协议介绍FileServer应用开发Netty HTTP服务端开发:public class HttpFileServer { private static final String DEFAULT_URL = "/src/main/java/com/kim/"; private static String ip = "10.200...
2019-01-25 13:32:44 751 1
原创 HTTP协议介绍
什么是HTTP协议HTTP(超文本传输协议)协议是建立在TCP协议传输协议之上的应用协议。应用层协议。HTTP协议的主要特点:1、支持Client/Server模式2、简单,请求只需要指定URL、参数和请求体3、灵活,HTTP允许传输任意类型的数据对象,传输的内容类型由HTTP消息头中的Content-Type指定4、无状态,无状态是指对事务处理没有记忆功能,如果后续需要处...
2019-01-25 13:32:06 257 1
原创 2、编解码、序列化、Google Protobuf编解码
Java的序列化Java提供的序列化机制,涉及到两个对象输入输出流类,ObjectInputStream,ObjectOutputStream。Java序列化的目的是网络传输和对象持久化。序列化,在网络传输中,将Java对象编码为字节数组或者ByteBuffer对象反序列化,将从远程服务读取到的ByteBuffer对象或者字节数组解码为Java对象。Java序列化的缺点:1...
2019-01-23 22:20:16 1045
原创 Ajax+Spring MVC前后端交互问题
这两天在做导出改造,将以前的导出功能拆分,前后台都要改。现状:要导出的表头我们叫tableMap,是一个JSON字符串,也是用来匹配查询结果集的。项目中有的模块做的导出功能,是后台拼接这个tableMap的,也有的模块做的导出,是前台传过来的tableMap,两种使用方式。前台传过来的tableMap,通过前端jquery,根据台账表头获取到想要导出的字段,拼装成javascrip...
2019-01-23 18:22:44 951
原创 分阶段提示导出和下载
导出分阶段显示进度,两种状态,“查询完成”和“可以下载”(不是下载进度)导出的一般流程:1、用户点击导出,发起导出请求,传入要导出的字段参数2、后台根据传入的参数,去数据库中查询,如果数据量大,会很慢。(多线程查询,然后合并数据返回)3、数据查询后返回结果集,经过service处理,返回controller,再返回给客户端瓶颈发生在第二个阶段,一次性查询所有数据,就会很慢。首先用户...
2019-01-22 08:46:00 331 1
原创 1、解决TCP粘包拆包问题,几种编解码器的应用
粘包拆包问题粘包拆包问题是基于流的协议所特有的,因为基于流的协议不知道传输的内容是什么。TCP协议是一个基于流的协议,一个完整的数据包可能会被TCP拆分成多个包发送,也有可能多个小的数据包被封装成一个大包发送。什么决定了拆包规则?粘包拆包的原因是什么? 粘包:服务端一次接收了多个包,这些包粘合在一起拆包:服务端接收到某个包的一部分内容 很显然,粘包拆包是对业务处理端...
2019-01-21 19:57:56 600
原创 0、一个基本的Netty客户端和服务端程序
前言(可跳过)我觉的学习一个新技术,最开始的开始不是看什么概念,而是直接撸示例代码。在看概念性的内容和实践中找到一种平衡,不要一直连续看概念性的内容,也不要只是埋在代码里。1、自己debug看看,把代码运行的流程仔细的看看,每一行,每一个陌生的类型和方法签名。如果示例代码给的好,让你可以运行,然后debug起来,就已经入门了。2、接着就是看一些其他的特性,对关键的特性或者你感兴趣的...
2019-01-20 21:54:24 918
原创 Netty入门到精通
系统的学习Netty,以源码实战为主,主要参考《Netty权威指南第2版》学习,学习目的是掌握Netty网络开发。源码参考,源码基于4.1.31.Final版本。0、一个基本的Netty客户端和服务端程序1、解决TCP粘包拆包问题,几种编解码器的应用2、编解码、序列化、Google Protobuf编解码3、Netty HTTP协议开发4、WebSocket协议开发5、...
2019-01-20 11:57:35 1255
原创 项目日志优化(一)——优化druid日志打印
说实话,日志难看,在排查问题时会不爽。线上出现问题,经常需要看数据库里面的数据有没有问题,是不是sql查询的时候就查错了,所以需要查看sql语句的日志,但是mybatis打印的日志都是占位符,还有很多换行符,非常不友好,druid默认的statementLogEnabled参数配置也有这个问题。一开始为了解决这个痛点,没想到druid有提供可以打印可执行的sql的配置,功夫花在mybat...
2019-01-19 14:16:27 8586 2
原创 Oracle只查询包含纯数字的记录
看一下代码:<if test="rangeStart != null and rangeStart != ''"> and (LENGTH(t.column) = LENGTH(REGEXP_REPLACE(t.column, '[^0-9]')) and REGEXP_REPLACE(t.column, '[^0-9]') &gt;=#{rangeStart})&l...
2019-01-18 16:19:37 9597
原创 FreeMarker如何比较日期
代码先来看一种正确的写法,然后逐个分析代码:<#assign publishDt="2018-10-19"><div <#if (bean.createDt?date lt publishDt?date('yyyy-MM-dd'))>style="display:none"</#if>></div>这段代码的意
2019-01-18 09:40:32 3446
转载 代码如何分层
原文参见:代码分层的设计之道在复习设计模式的知识点,首先复习的是单一职责原则。这个原则本身理解简单,实践却并不容易,需要在编码和架构设计的过程中,不仅对代码本身做的事了解,还需要对业务有总体了解,这样才知道怎么划分职责,服务化的过程中怎么拆分服务。之前看过梁桂钊写过类似的东西,记不起来了,现在再去看看。我的目标是:弄明白应该如何拆分类或者服务,有没有具体的最佳实践或者指导原则。...
2019-01-17 09:42:54 2731
原创 Solr入门(三)
为自己的数据建立索引创建数据集./bin/solr create -c localDocs -s 2 -rf 2 为本地文件建立索引支持JSON, XML and CSV ,使用 Post Tool 能处理HTML, PDF, Microsoft Office formats (such as MS Word)等等类型的文件。./bin/post -c localDocs ...
2019-01-16 16:56:36 173
原创 Solr入门(二)之Schema API和Facet
Solr入门(二)重启Solrsolr start -c -p 8983 -s ../example/cloud/node1/solrsolr start -c -p 7574 -s ../example/cloud/node2/solr -z localhost:9983创建新数据集即将演示的特性:field guessing。这种field guessing特...
2019-01-16 12:18:44 312
原创 Solr入门(一)
Solr入门本文目标:了解,安装,使用学习资料:https://lucene.apache.org/solr/resources.htmlhttps://lucene.apache.org/solr/guide/7_6/solr-tutorial.html 什么是Solr?Solr is the popular, blazing-fast, open source e...
2019-01-16 08:51:28 192
原创 Ajax学习笔记
什么是Ajax?Asynchronous JavaScript and XML现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax。不用刷新整个页面便可与服务器通讯的方法:FlashJava Applet框架:如果使用一组框架构造了一个网页,可以之更新其中一个框架,而不惊动整个页面隐藏的iframeXMLHttpRequest:该对象是对JavaS...
2019-01-15 22:15:05 111
原创 从libevent库到Dan Kegel的网站
在前面文章从MemCache到一致性哈希算法中,翻阅了MemCache依赖的一个类库libevent,并且探索到大量的有趣的信息,觉得还是单独写一篇记录比较好,于是有了这篇,当然,内容也只是引导性的,后续会通过深入阅读相关内容补充。libevent是一个事件通知的C库,顺便说一下,MemCache是使用C语言开发的。libevent API提供了一种机制,用于在文件描述符上发生特定事件...
2019-01-14 09:37:33 300
原创 从MemCache到一致性哈希算法
MemCache的官方网站为http://memcached.org/源码地址:https://github.com/memcached/memcached依赖libevent, http://www.monkey.org/~provos/libevent/ (libevent-dev) libseccomp, (optional, experimental, linux) - en...
2019-01-14 08:28:30 199
原创 Oracle性能优化二Lock
没有并发就没有锁,为了保证事务的正确逻辑Oracle中锁的分类Enqueues-队列类型的锁,通常和业务相关Latches-系统资源方面的锁,比如内部结构,SQL解析Latches门栓锁的原则只有被修改时,行才会被锁定,查询不锁定 当一条语句修改了一条记录,只有这条记录被锁定,在Oracle数据库中不存在锁升级 当某行被修改时,它将阻塞别人对它的修改 当一个事务修...
2019-01-11 23:55:49 233
原创 关于Mybatis的其他事
百度搜索了关键词mybatis 分库分表 shard希望找到之前用过的mybatis分库分表插件 。找到几篇文章,回去研究下:mybatis三大插件使用方法sharding-jdbc结合mybatis实现分库分表功能Mybatis中分表插件shardbatis使用说明 阿里巴巴微服务分布式事务中间件开源了,下午加了钉钉群,这个也有时间研究下fescar...
2019-01-11 17:34:17 135 1
原创 Oracle性能优化一
性能优化(性能定位)客户对产品的依赖性越强,对产品性能差的忍耐性越低。 性能优化原则性能优化是一种面向客户的主观的感觉,不是所有的数据库都需要(能够)优化 数据库的性能,大多数都不是从数据库层面能够解决的 在不了解业务之前,不可能找到正确的优化思路 优化要有一个度,并不是“没有最优,只有更优”导致性能问题的可能原因表没有正确的创建索引——错误的执行计划 表没有及时的分...
2019-01-10 22:15:35 151
原创 SpringMVC拦截器实践与原理分析
使用场景:统计请求耗时使用姿势:public class LogInterceptor implements HandlerInterceptor { private static final ThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>("ThreadLocal...
2019-01-10 10:46:22 255
原创 从Object.wat()方法看JNI及native方法底层调用逻辑
前言早上debug join方法的时候,其内部调用wait方法,wait是Object中的native方法,但是在ClassLoader类中的findNative中打断点,不会进去断点。然后想了一下,是不是因为Object是Bootstrap类加载器加载的原因。那么怎么才能知道native调用的到底是什么方法呢?在网上搜索"Java如何查看native方法的实现",没有搜到可用的内容。...
2019-01-07 15:07:36 510
原创 记录捣腾虚拟之elementary OS 5.0安装后
晚上把装在机械硬盘上的ubuntu18.04和deepin删掉了。同样的配置,ubuntu比deepin运行IDEA要慢。于是把两个都删掉了,准备在固态硬盘上装一个linux虚拟机。现在在装ElementaryOS。 我为什么要在linux上装IDEA,因为想调试JVM,进入一些平台相关的底层代码的时候,win会进入win的,linux会进入linux的,mac会进入mac的,由于...
2019-01-04 22:43:31 2457
原创 Maven使用技巧
解决新建maven项目速度慢的问题直接修改maven配置参数,在使用mvn archetype:generate命令时,加上-DarchetypeCatalog=internal 关于Maven打包:必须先install parent,否则依赖父模块的子模块会打包失败必须install 公共模块,否则依赖公共模块的子模块会打包失败 使用环境变量配置本地依赖使用m...
2019-01-03 22:35:46 229
原创 JavaAgent源码分析
先上测试代码:业务代码模拟AccountMain.javapackage com.rong.kim.agenttest;import com.rong.kim.common.Lion;public class AccountMain { public static void main(String[] args) throws InterruptedException...
2019-01-03 18:06:59 1354
原创 agentmain 使用过程中的坑,看看你有没有遇到
com.sun.tools.attach.AttachNotSupportedException: no providers installed我出现这个报错,是因为我引的包有问题,本地装了jdk的话,可以这样引用tools.jar<dependency> <groupId>com.sun</groupId> <artifactId>t...
2019-01-03 12:23:48 8789 3
原创 JavaAgent实验
agent使用场景:当类加载时希望对类进行修改或者增强,又不影响类的代码。具体场景:监控,热部署,运行pojie程序 比较agent的使用(参考探秘-Java-热部署三(Java-agent-agentmain)):premain:优点:可以在启动的时候,通过参数指定,在类加载前进行操作缺点:只能在启动的时候指定参数,不够优雅;加载之后修改需要重新创建类加载器。或者在自...
2019-01-02 14:53:26 338
原创 MySQL8环境搭建采坑记录
1、去官网下载deb文件https://dev.mysql.com/downloads/repo/apt/ 2、安装deb包输入root密码后,会有交互式界面如下:不需要动,按tab键移动到第五行中间的OK,回车。回车后报apt-key之类的警告,不用管。 警告如下:3、刷新MySQL源sudo apt-get update4、在虚拟机中安装mysq...
2018-12-29 16:14:25 374
原创 常用lambda写法整理
将list输出为逗号拼接的字符串(使用String的API):List<String> cities = Arrays.asList("Milan", "London", "New York", ...
2018-12-26 15:38:06 2275
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人