技术研究
发布一些技术学习心得。
Lehman_Tong
公众号:技术研究与团队管理(TR_TM_Lehman)
展开
-
JVM核心技术-CMS垃圾收集器
CMS GC 的设计目标是避免在老年代垃圾收集时出现长时间的卡顿,主要通过两种手段来达成:1、不对老年代进行整理,而是使用空闲列表(free-lists)来管理内存空间的回收2、在 mark-and-sweep (标记-清除) 阶段的大部分工作和应用线程一起并发执行。启动参数:#使用CMS垃圾收集器-XX:UseConcMarkSweepGC #每一次FullGC之后进行一次碎片整理(默认开启) Java9废弃参数-XX:+UseCMSCompactAtFullCo原创 2020-10-26 14:15:43 · 324 阅读 · 0 评论 -
Java核心技术-并发编程-同步器
面对大并发场景下,偶尔会出现排队调度相关情况,在Java中有几个比较常见的调度模式,本文将分享这些调度模式:CountDownLatch倒计时门栓CyclicBarrier障栅Semamphore信号量Phaser循环障栅Part-1:CountDownLatch倒计时门栓用来同步一个或多个任务,强制它们等待由其它任务执行的一组操作完成。门栓是一次性的当计数器为0的时候就不能再重用了。public class StudyCountDownLatch { private final原创 2020-10-13 22:05:04 · 278 阅读 · 1 评论 -
Java核心技术-并发编程-锁
日常说到高并发往往针对共享资源进行读写操作很容易得到错误的结果,这个时候就需要应用到各种个样的锁,本文通过4种锁进行分享:synchronizedReentrantLock(可重入锁)ReentrantReadWriteLock(读写锁)StampedLock(戳锁)Part-1:synchronized同步代码块public void testSynchronizedCode() { synchronized (lockObject) { System.out原创 2020-10-10 22:49:10 · 388 阅读 · 2 评论 -
Java核心技术-并发编程-线程与线程池
在现在互联网项目中,经常面对的是高并发的场景,而针对面对高并发的系统架构主要在缓存、分布式数据库、消息队列、分布式部署等进行分享。如何提高单应用的响应能力就跟线程有莫大的关系了。本文将通过以下内容进行分享:任务线程线程状态线程属性线程池Part-1:任务//定义任务:实现Runnable接口public class LiftOff implements Runnable { protected int countDown = 10; private static int原创 2020-10-09 17:06:54 · 169 阅读 · 0 评论 -
Spring Boot 集成RabbitMQ一篇就够
面对日益复杂的信息平台,消息队列使用是解决什么问题呢?初步总结一下可以解决如下场景问题:业务解耦:A系统需要耦合B、C、D系统,在消息队列之前可以通过共享数据、接口调用等方式来实现业务,现在可以通过消息中间件进行解耦。削峰填谷:在互联网经常会出现流量突然飙升的情况,以前很多时候就是通过性能优化、加服务器等方式,可以通过消息中间件缓存相关任务,然后按计划的进行处理。异步:可以通过消息推送及短信发送进行说明,业务平台并不关注具体消息的发送细则,完全可以通过消息队列的方式,直接下发任务,由任务消费者进行处原创 2020-10-09 11:06:22 · 311 阅读 · 0 评论 -
Spring Boot 集成JPA一篇就够
目前市场上Java语言ORM框架有Mybatis、Hibernate、Spring Data JPA,其中JPA底层还是使用Hibernate实现,引用JPQL查询语言,属于Spring整个生态体系的一部分,使用起来比较方便,加快了研发效率。Part-1: Jpa基础知识本章节将通过一些例子让大家对Jpa的日常使用有一个了解。数据库准备CREATE TABLE `user_info` ( `id` bigint NOT NULL AUTO_INCREMENT, `first_name`原创 2020-10-05 16:04:32 · 410 阅读 · 0 评论 -
Android自动化测试Appium:虚拟机(Genymotion)搭建
Part-1:虚拟机管理工具搭建:1、Genymotion安装:https://www.genymotion.com/download/ 软件针对windows版本带VisualBox版本和不带WindowsBox版本,本人在Windos和mac两个平台均有搭建,Windows版本用的是带VisualBox,下文所有截图均为Mac版本。注册Genymotion后进行激活,在最后启动的时候选择Personal UserGenymotion主页面添加Android镜像镜像添加成功可以通过电脑S原创 2020-08-03 14:13:21 · 269 阅读 · 0 评论 -
AlchemySQL实体类生成数据库表
Part-1: 数据库实体声明class AppiumServer(BaseEntity): """ 自动化工具服务信息 """ __tablename__ = 'appiumServer' id = Column(Integer, Sequence("appiumServer_id_seq"), primary_key=True) appium_server_name = Column(String(200)) appium_server_u原创 2020-07-22 20:51:40 · 206 阅读 · 0 评论 -
Android自动化测试Appium:环境搭建
Part-1:环境搭建安装 Appium 下载地址:http://appium.io/安装Android SDK 下载地址:http://tools.android-studio.org/index.php/sdk 更新Android SDK信息,Shell命令:tools/android update sdk --no-ui 配置路径:androidSdk、tools、platform_tools 如下:export ANDROID_HOME=/Applications/Serve原创 2020-05-21 09:26:47 · 148 阅读 · 0 评论