服务端开发
文章平均质量分 55
wuaiqian
这个作者很懒,什么都没留下…
展开
-
AQS解析
AbstractQueuedSynchronizer即抽象队列同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。 它维护了一个volatile int state(代表共享资源)和一个FIFO双端队列(多线程争用阻塞时线程进入此队列尾部,队列头节点是成功获取锁的线程,当头节点释放...原创 2019-02-22 21:46:51 · 134 阅读 · 0 评论 -
git-maven
maven按需打包 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin&am原创 2019-02-18 21:32:52 · 86 阅读 · 0 评论 -
Jedis代码走读
核心类:redis.clients.jedis.Jedis (以set为例) Jedis#set(String, String, SetParams) Client#set(String,String,SetParams) BinaryClient#set(byte[], byte[], redis.clients.jedis.params.set.SetParams) Connection#...原创 2019-02-13 17:58:31 · 160 阅读 · 0 评论 -
JAVA编程问题总结
加密算法打包时出错 Cipher.getInstance(“DES/ECB/NoPadding”); 编码算法选择问题 error_prone_core扫描出来 java.security.InvalidKeyException: Parameters missing Cipher.init(Cipher.DECRYPT_MODE, deskey); 改为 byte[] iv = new sun....原创 2019-02-19 15:58:57 · 417 阅读 · 0 评论 -
Kafka相关
消息发送 producer 采用 push 模式将消息发布到 broker,每条消息都被 append 到 patition 中,属于顺序写磁盘(保障吞吐率)。 日志文件的删除策略:启动一个后台线程定期扫描log file列表,把保存时间超过阀值的文件删除,为避免删除文件时仍然有read操作(consumer消费),采取copy-on-write方式。 producer 发送消息到 brok...原创 2019-02-19 18:01:12 · 156 阅读 · 0 评论 -
HashMap与ConcurrentHashMap
扩容 HashMap 底层新生成一个数组,然后拷贝旧数组里每一个Node链表到新数组,在多线程下有问题,问题在于基于头插法的数据迁移,会有几率造成链表倒置,引发链表循环导致死循环,并吃满CPU。 JDK8里HashMap的底层数据结构变为数组+链表+红黑树,因为在hash冲突严重时链表查询效率是O(n),所以JDK8做了优化,对于单个链表的个数大于8的链表,会直接转为红黑树算是以空间换时间,这样...转载 2019-02-26 15:47:08 · 120 阅读 · 0 评论 -
Collections集合接口
HashMap:数组+单链表维持哈希表,冲突节点头插 LinkedHashMap:继承HashMap,双链表维持哈希表,可保证数据的有序性,冲突节点尾插 ConcurrentHashMap TreeMap:红黑树,支持排序的map,相对于HashMap PriorityQueue:优先队列,内部是一个最小堆,根节点最小 WeakHashMap(常用于缓存):使用同HashMap,不过WeakH...原创 2019-03-04 10:16:05 · 466 阅读 · 0 评论 -
数据结构与算法相关
原子类 Hbase:Hbase中HLog使用AtomicLong作为日志序列号,因为一个RS的多个region会并发写入HLog,使用AtomicLong保证线程安全。 Kafka:生产者消息分发Partition—如果消息有key,使用key的哈希值与分区个数取模;如果没有key,使用AtomicInteger累加的counter与分区个数取模获取要发送的分区。(负载均衡) 特殊数据结构 Mys...原创 2019-02-21 17:26:23 · 98 阅读 · 0 评论 -
idea中常见问题以及操作汇总(更新中)
快捷键 在接口实现类中自动生成Override:con + O 去除无效的import:con + opt + O 重命名:con + T run: con + opt + R debug: con + opt + D 代码块注释:com + sh + / 全文查找:com + sh + F 最近打开的文件:com + E 最近修改的文件:com + sh + E 查看之前的复制记录(便于粘贴):...转载 2018-11-01 12:04:37 · 178 阅读 · 0 评论 -
redis操作总结(更新中)
本地启动redis cd /usr/local/redis/bin ./redis-server //使用默认配置启动(比如默认不加载密码) ./redis-server ../etc/redis.conf //使用配置文件启动 redis-cli -h 127.0.0.1 -p 6379 //登录redis(无密码) redis-cli -h 127.0.0.1 -p 6379 -a XXX...原创 2018-11-01 12:01:48 · 268 阅读 · 0 评论 -
mysql问题汇总
1.org.apache.ibatis.binding.BindingException: Parameter ‘dateBefore’ not found. Available parameters are [arg1, arg0, param1, param2] 解决:mapper接口中参数加@Param注解(多个参数时) int selectAllCount(@Param("date...原创 2018-11-16 10:34:15 · 71 阅读 · 0 评论 -
运维--如何在公网用IP访问阿里云部署的服务
适用于自己使用,已经在阿里云上部署服务,但还没有域名的情况下使用 1. 服务部署(springboot) //1.本地打包 mvn clean install //2.sftp上传到阿里云服务器 sftp root@127.xx.xx.xx put -r ./XX.jar //3.阿里云机器上部署服务(默认8080端口,使用localhost可访问) java -jar -Dservice.t...原创 2018-12-12 14:37:56 · 1258 阅读 · 0 评论 -
Logback阅读
1.设置文件写入 ch.qos.logback.core.rolling.RollingFileAppender ch.qos.logback.core.FileAppender#start(打开日志文件openFile()) ch.qos.logback.core.OutputStreamAppender#start ch.qos.logback.core.UnsynchronizedAppen...原创 2018-12-12 14:58:53 · 300 阅读 · 0 评论 -
Spring--官方文档部分翻译(第一章)
1.6.1 Bean生命周期 控制生命周期的按照方式 InitializingBean 和 DisposableBean回调接口 自定义init() and destroy() 方法 @PostConstruct and @PreDestroy 注解 初始化执行次序: @PostConstruct—InitializingBean接口的afterPropertiesSet()...原创 2018-12-12 19:29:57 · 247 阅读 · 0 评论 -
阿里云服务器部署mysql
https://www.cnblogs.com/xxoome/p/5864912.html https://www.cnblogs.com/fnlingnzb-learner/p/5830622.html yum -y install perl perl-devel autoconf libaio wget http://dev.mysql.com/get/Downloads/MySQL-5.6/...转载 2018-12-09 16:19:44 · 313 阅读 · 0 评论 -
mybatis标签使用
https://blog.csdn.net/weixin_40950778/article/details/78655288 基本标签 select 标签 id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名。注意,如果是集合,那么这里填写的 ...转载 2018-12-09 17:49:06 · 106 阅读 · 0 评论 -
Spring框架源码--顶层初始化
1. 顶层 AbstractApplicationContext#refresh public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { //供子类重写个性化配置使用 prepareRefresh(); /...原创 2018-12-11 16:31:10 · 215 阅读 · 0 评论 -
Spring框架--注解
@Autowired 与@Resource @Autowired是spring自己定义的注解,@Resource是JAVA规范JSR-250的注解,为spring所支持 @Resource的作用相当于@Autowired,都可以用来装配bean,都可以写在字段或setter方法上。只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入 @Compon...原创 2018-12-12 11:33:54 · 97 阅读 · 0 评论 -
Spring--官方文档部分翻译(第五章 面向Aspect的编程-AOP)
AOP通过提供程序设计的另一种思路扩展了OOP,OOP的核心元素是class,而AOP的核心是Aspect。 Aspect使得关注点模块化。 AOP是spring的核心模块。虽然LOC容器不依赖AOP,但AOP通过提供非常有效的中间件解决方案扩展了IOC容器。 Spring2.0引入了 @AspectJ样式(更简洁、有效的书写自定义Aspect) 5.1 AOP概念 这些概念不是spring...原创 2018-12-25 19:36:15 · 138 阅读 · 0 评论 -
【Spring】Event事件机制
事件机制使用监听者模式。包含一个监听者Listener与之对应的事件Event,还有一个事件发布者EventPublish,过程就是EventPublish发布一个事件,被监听者捕获到,然后执行事件相应的方法。 1.事件定义 public class EventDemo extends ApplicationEvent { private String message; publi...原创 2019-01-29 16:43:21 · 415 阅读 · 0 评论 -
guava缓存原理--get操作
V get(K key, CacheLoader<? super K, V> loader) throws ExecutionException { int hash = hash(checkNotNull(key)); //这里使用了分段的hash表,原理参考ConcurrentHashMap return segmentFor(hash).get(key, ...原创 2019-03-07 15:29:32 · 1335 阅读 · 0 评论