- 博客(54)
- 资源 (6)
- 收藏
- 关注
原创 自研RPC框架
最初demo版本,不断完善中ing,注册中心还没做,服务治理不打算做了…技术介绍:底层传输框架为netty,基于springboot-starter,自定义注解注入FactoryBean动态代理类…consumer端 自定义注解@RpcReference注入bean的元数据,rpc.starter.consumer为true的时候开启注解扫描provider端 自定义注解@RpcComponent 暴露服务netty客户端服务端之间使用rpcInvocation和rpcResult对象来传输数据
2020-06-17 01:53:06 374
原创 2020 JAVA后端面试总结
面试情况经历了8次阿里技术面试第一个部门 1 ,2,3面过,4面过,offer流程中第二个部门 1面过 2面表现不好挂了 重新安排的2面过了 等3面的流程中锁P6HC第三个部门 1面过,2面技术得到肯定,但是业务不符合,挂了某部门 刚内推就通知锁P6 HC了经历了3次字节跳动技术面试,1,2,3面每轮一个算法题,分别是middle,middle,hard.HR面结果尚未出区别总的来说,阿里的面试更偏向应用业务,大部分面试官喜欢问方案。对于Java基础(P6)是浅尝则止,遇到
2020-06-09 02:32:03 1064
原创 如何部分从BlockingQueue的同步中解脱
凡是阻塞队列,皆有同步有人的地方就有江湖,有竞争的地方就要同步.同步也许是通过AQS实现,也许是通过synchronized实现,也许是通过XXX实现,反正皆有同步,没有同步兜底的阻塞队列都是fake news(川普口气)/屠龙之术中的取巧之术in my opinion,我觉得阻塞队列确实是非常有用的,我觉得其是屠龙之术,能解决基本上所有问题,但是在一些特殊的情况下,我们其实不用屠龙之术,我们可以取巧.当然基于AQS的同步其实已经帮我们取巧了一些,类似于轻量级锁的cas让我们如沐春风.但是当竞争确实存
2020-06-03 16:27:35 223
原创 浅析mysql redis rocketmq的持久化机制
触类旁通据我的学习经验,优秀的源码里面无非就是一些通用经验,通用设计模式,通用算法,通用操作系统知识,通用数据结构的组合。既然是通,其实大可以触类旁通,就看其组装的怎么样了,组装得好就是3A佳作,组装得不好甚至用地摊货就是泰坦陨落(仙6风评被害)。误杀(翻拍自误杀瞒天记)电影里面有一句话是:如果你看过1000部电影,就会知道这世界本没有什么离奇的事情。我觉得可以说:如果你看过1000份优秀源码,就会知道这世界并没有什么难懂的源码。------虽然我阅历尚浅,并未看过多少源代码,只是一个练习时长两年半的
2020-05-18 05:03:13 425
原创 数组内部元素无法保证可见性
volatile确实可以保证一个引用变量的可见性,但是volatile的数组只针对数组的引用具有volatile的语义,而不是它的元素.于是可以预见的是类似disruptor这样的实现最好还是不要用long数组padding的方式来防止false sharing问题,这样反而会导致可见性问题.所以,padding方式还是选择前后8个long类型的方式...
2020-04-15 16:53:36 249
原创 JAVA 实体类批量插入
依赖这个LogSaveApplication。然后直接save就行了,save的时候做的是插入队列的操作。定时或者插入数据达标,线程会从队列拿出一定量的数据(可配置).然后Spring里面拿出class对应的mapper,调用insertList操作。如果mapper不存在,则不会做任何操作。@Component@Slf4jpublic class LogSaveApplication {...
2019-10-17 17:39:41 1494
原创 Bean生命周期与三级缓存解决循环依赖
搜索Bean生命周期有很多种解释,有些还是错的。最近我看了源码,仔细了解了下,先上图:获取Bean这个时候InstantiationAwareBeanPostProcessor有机会通过postProcessBeforeInstantiation方法(执行后执行applyBeanPostProcessorsAfterInitialization方法)直接返回一个Bean对象,不走下面的流程。...
2019-09-06 18:37:30 374
原创 下载openshift上的container文件到windows
公司部署在国外的服务器用的openshift。运维小哥哥给我了一个oc client 可以在windows本地登录。然后我想下载container上的日志文件到本地看看,分析错误。百度不行,没找到相关的东西,这东西国外用的多,然后谷歌吧没想到真的找到了文章https://blog.openshift.com/transferring-files-in-and-out-of-containe...
2019-07-22 10:59:53 432
原创 16瓶水问题
有16瓶水,其中一瓶有毒,小白鼠喝一滴有毒的水一小时后会死,要在一小时找出来哪瓶水有毒最少需要几只小白鼠?对于这道题,每只老鼠在1小时后会有两种状态,死去或者活着。其实就对应了二进制的0和1。四个二进制恰好就可以有16种状态,如果说每种状态对应一瓶水,出现哪种状态就是哪瓶水有毒。1111就是全部活着,说明没有被使用的那瓶水有毒。0000就是全部死去,说明被4只老鼠喝掉的那瓶水有毒。01...
2019-06-19 15:37:59 1733
原创 [LeetCode][Word Search]思路没错,写法大误
Word Search今天练习了一道leetcode,一看,就是暴力解法就行了嗷,利用DFS的思想遍历遍历,从四个方向进发。然后我真的从四个方向都出发了,结果运行显然就超时了。以下为超时代码class leetCode79 {public static void main(String[] args) { char[][] a = {{'a','a','a','a','a','a...
2019-06-11 18:52:21 150
原创 Octave学习
1.A =[1 2; 3 4; 5 6]2.size(A) 返回矩阵的sizesize(A,1)返回矩阵第一维度的大小,size(A,2)返回矩阵第二维度的大小3.length(A) 返回矩阵的最大维度的大小4.pwd cd ls5.load featuresX.dat ,同 load(‘featuresX.dat’) 载入文件6.who 显示所有的变量名7.whos 显示变量名和...
2019-05-14 18:16:54 293
原创 日志,实体类批量入库,生产消费者实现
如果每步的mysql日志都入库,进行一次DB操作,不仅会影响操作的速度和响应,还会造成db操作过多.因为,可以采用日志入库队列的形式.形成一个生产消费者,批量入库日志.这样做会获得很好的操作响应.而且有时入库的时候,需要入库的消息种类很多,所以呢,重复代码会比较多.下面贴出我的日志处理方式,这是一个抽象类.里面封装了队列和获取入库数据的方法. @Slf4j public abstract...
2019-05-08 17:56:45 558
原创 手写归并排序流程
手写归并还是比较简单的,按照下面三步走:分解成两个子问题解决子问题合并子问题解得到问题解分解成两个子问题void mergeSort(int start,int end,int[] array){if(start==end){return;//边界值}int middle = (start+end)/2;mergeSort(start,middle,array); // 解决...
2019-03-26 14:06:00 384
原创 快速排序-JAVA实现
public class FastSort {public static void main(String[] args) { int[] ints = {3, 4, 1, 5, 9, 6, 7, 2, 10, 6, 12, 1}; fastSort(ints, 0, ints.length - 1); System.out.println(Arrays.toStrin...
2019-03-11 15:29:56 154
原创 二分法选择中间值正确选取,避免死循环
在分治(比如归并排序)和二分法这种算法的时候,中位数要选择正确,一般是start,middle,end,三个值。sort(int[] ins,start,end){ if(start<end){ //代码逻辑 }}如果选得不太正确,就会在两个数的时候造成死循环。规定,index是从0开始。边界值是在两个数的时候,那么就拿两个数来分析吧如果middle选取 (star...
2019-03-10 20:50:53 3742 1
原创 记一次电脑没有声音,修复的问题
微星迫击炮主板好像有个毛病,出现了较多人没有声音,声卡上面有感叹号。经过我查询,需要bios恢复出厂设置。可以取掉主板电池5分钟再装回去(还有显卡卡在那里,很麻烦),或者对准主板上jbat1 ‘电一电’(使用跳线帽上去5-10s即可),由于我并没有跳线帽,我就拿了钥匙搞了下,有效。这个时候,开机,缺少winload.efi,这个时候我看网上的解决方案都不行。我瞎猜了了下。首先进入advan...
2019-03-06 00:54:45 1222
原创 记录一次new与clone方法复制对象效率测试
测试clone和new方法的效率差别,首先来反面教材.public class TestCloneAndNewMain {public static void main(String[] args) throws CloneNotSupportedException { TestClone original = new TestClone("1", "2&a
2019-02-20 17:53:32 572
原创 System.identityHashCode 会冲突吗
会的HotSpot VM默认使用一个伪随机数生成器来实现identityHashCode@Test// 测试identityHashCode重复情况public void test5() { HashMap<Integer, Object> map = new HashMap<>(); int count = 0; while (true)...
2019-02-14 16:48:09 1125 1
原创 [源码分析]随便分析一下HashMap代码
环境介绍jdk1.8ideaHashMap本质上就是一个数组,根据Hash值来确定一个key在哪个hash桶(哪个数组元素)而数组元素可能为空,可能为一个单元素,可能为一个元素(后面带链表的那种),可能为一个红黑树先来看看put方法吧 public V put(K key, V value) { return putVal(hash(key), key, value, fals...
2019-02-13 14:44:51 159
原创 PTA 1013 Battle Over Cities
这段代码有个测试点超时了,咋看没啥问题,就是dfs的时候,一个顶点会检查所有和他有关联的顶点.然而当我把一个点的所有关联点组成一个列表之后,依然会超时.这个时候复杂度其实已经比较低了.那么为啥呢?我找了下网上的代码,一些也是超时,有一个没有超时,逻辑跟我也没啥差距.只是我用的cin cout,他用的scanf,printfcin的效率确实比scanf效率差不少,而且这个操作也是o(n)个的...
2018-12-24 11:12:30 223
原创 PTA 1012 The Best Rank (25 分)
开始用java写的,仅仅是答案应该能过全部测试点,但是不可避免地有个测试点超时了hhhhhhhhh于是找了网上的更多答案,就找了2个结果都是超时的,而且有个超时全军覆没,有个仅仅过了一个测试点(1/5),还不如我…emmmm,我还是用C++写吧先贴java代码import java.util.ArrayList;import java.util.Collections;import j...
2018-12-21 16:58:22 405
原创 [pat 1003] Emergency
已过测试用例的java代码如下利用了dfs的思想.对于每条路,深度优先搜索其通往的道路.visited在遍历中设置为true,在遍历此节点过后设置为falsepublic class PAT1003 {private static int shortestPath = Integer.MAX_VALUE;private static int shortCount = 0;priva...
2018-11-22 17:35:22 109
原创 分析下ReentrantLock调用lock的fairSync版本
reentrantLock调用lock的fairSync版本1 reentrantLock调用lockpublic void lock() { sync.lock(); -> 2 :调用sync的lock方法,选的fairsync作为例子}2 调用acquire方法,尝试获取锁final void lock() { acquire(1); -&g...
2018-11-19 18:19:28 310
原创 java获取唯一时间戳Id.多线程保证唯一性
调用了unsafe类,cas原子性操作获得了绝对唯一的时间戳(纳秒版本).单机有效,不能分布式调用.public class AtomicTimeStamp {private volatile long timeMill;private volatile Unsafe unsafe;private long offset;private long timeStampOffset;...
2018-11-05 17:36:22 9256
原创 Controller内注入的Service为null
这是controller,Service写好了注解@service,但是调用l /hi/hi 的时候发生空指针异常,按理说IOC容器在初始化testController这个Bean对象的时候就已经注入了 helloSerivce,我查看了beanFactory里面的所有beanDefination.没错,testController和helloService都在里面了.@RestControl...
2018-10-18 14:23:26 3023 3
原创 凭什么,为什么每次登录要手动 source /etc/profile,一定是有问题的
学艺不精,多难受啊特别生气,特别难受。。。linux技能并不咋样,所以一般都是百度来安软件的JDK以及MAVEN环境也是这样的。环境变量的问题今天遇到个问题就是每次必须登录 source /etc/profile 才能使java -version命令有效.但是 /etc/profile 是每次登录自动加载的啊(这个一定是对的),而我在里面写了java的环境变量,为什么呢?我登录之后...
2018-10-10 02:12:17 10716 3
原创 linux部署Redis
Linux部署Redis以前都是使用的公司测试服务器上面的Redis,并未深入Redis,今天买了自己的服务器,开始自己玩首先登陆了SecurtCrt (破解版的,下载地址 http://www.xue51.com/soft/1510.html ,下载下来是一个下载软件,小心翼翼去除那些打勾的小安装软件,把压缩包下好之后傻瓜式安装破解)然后我要选择一个目录安装软件,那么应该装在哪里呢...
2018-09-22 18:47:09 127
原创 将对象转化为帧(tcp协议传输的byte数组).根据字节序和字节数 通用方法
最近做一个将对象转换成tcp数据的功能,将对象按一定规律转换为byte数组,可以分类去解析,但是太麻烦了,代码冗长.决定采取使用一个通用的方法去实现对象转数组的功能TcpTransfer transfer object (with annotation ) to tcp byte array 将带有注解的对象转换为tcp协议传输的byte数组@Retention(RetentionPo...
2018-09-13 12:32:14 856
原创 记录pat甲级做题中遇到的一些坑(JAVA)
1002 A+B for Polynomials (25)(25 分) This time, you are supposed to find A+B where A and B are two polynomials. Input Each input file contains one test case. Each case occupies 2 lines, a...
2018-08-08 13:10:46 1464
原创 JVM一些参数
-XX:+PrintGCDetails -Xms20M java堆初始大小 -Xmx20M java堆最大 -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold 大于这个值直接在老年代分配 -XX:MaxTenuringThreshold=1 年龄大于这个值分配至老年代 (当同龄对象大于survivor大小一半,大于等于该年龄大小的直接进入老...
2018-07-23 11:17:20 117
原创 java中的数量级
Integer家族Integer.MaxValue = 2^(31) - 1 Integer.MinValue = -2^(31) Integer.MaxValue + 1 = Integer.MinValue (值相等)HashMap,java1.8MAX_CAPACITY = 2^(30) 即是Node数组长度hash方法取的高位参与hash为2^(16) ...
2018-07-16 19:00:14 662
原创 服务端JAVA接口特别慢
线上服务端服务器腾讯云 数据库服务器阿里云有些接口访问数据库,由腾讯到阿里,数据传输时间过长,然而一个接口常常不止一个接口,数个接口因为这个原因,最后导致了接口的速度很慢。另外数据库连接池上限是固定的,连接时间过长,导致高并发下 :一旦连接未被回收就有新的连接需要处理,就会有不少的sql在等待队列中。本地ping腾讯云服务器30ms,本地ping阿里云服务器5ms数据库和服务端最...
2018-07-04 17:27:52 6777
原创 python自动化
chromedriver在使用的时候报错selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing ‘value’我用的chromedriver2.40 chromedriver版本67 按照版本对应关系是可以运行的但是仍然报错了换个版本试...
2018-07-04 09:48:03 256
原创 从leetcode学到更多
4sum代码class Solution {public List<List<Integer>> fourSum(int[] num, int target) {ArrayList<List<Integer>> ans = new ArrayList&a
2018-05-07 11:40:14 189
原创 阅读源码收获和最近发现的小知识
收获一些以前没怎么用的方法 1. List<String> ret = new ArrayList(); ret.add("1"); ret.add("2"); ret.add("3"); ...
2018-05-04 14:58:53 207
原创 学习vue.js
最近除了我在优化以及测服务端并发,还有mq的优化其他人在用vue.js写项目的前端我 真的是一点也不会 才懒得看虽然主要做服务端,还是学习下,不好前端怪尴尬的,万一以后面试招全站呢? 欢声笑语打出GG 要有后端服务端工程师的坚持v-bind属性<div id="app"><div v-html="message"></div>...
2018-04-17 16:50:41 130
原创 ThreadLocal搭配线程池使用
ThreadLocal根据我的理解,ThreadLocal就是为每个Thread(线程)创建一个对象的copy,根据ThreadLocal的引用在map中获得相应的对象值,这样在多个线程同时操作同一个ThreadLocal对象的时候,其并不是操作的原始的对象,而是复制的对象,所以多个线程就不会相互影响了。 注意,主线程和new出来的线程其实是不同的线程,所以主线程对于ThreadLocal的...
2018-04-10 16:18:35 2130 1
原创 业余学习python小笔记
学习python第一天1.缩进很重要,不能随便在前面加空格number = int(input(&quot;请输入一个数字&quot;)) #这个和java里面的强转不一样,java里面是int打括号if number &amp;lt;= 100: print(&quot;smaller equal&quot;)else: print(&quot;bigger&am
2018-04-08 19:17:38 281
原创 最近搭netty框架的一点心得
打算做个云平台,已有的mina框架并发这快肯定不行了 组长让我做个netty框架(其实我内心是拒绝的 刚毕业,没接触过netty,怎么能让我干这种事情呢?我只想默默敲代码玩玩)搭了个netty框架,拿着别人的框架改了很多 功能都实现了开始有内存泄漏的问题,压力测试个1小时就BOOM了。。。 最后发现是bytebuf没有释放bytebuf一定要释放跑了2...
2018-03-30 10:23:45 846 2
深入理解MySQL核心技术
2019-02-27
深入理解Java虚拟机
2019-02-27
数据结构与算法分析—Java语言描述
2019-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人