- 博客(51)
- 资源 (10)
- 收藏
- 关注
原创 docker+compose在内部搭建应用及测试环境中的应用
概要使用docker很久了,以前只是在单台服务器中安装docker,分别启动公司内部的管理系统,解决服务器资源利用率不高及端口之间相互冲突问题。此次入职新公司,发现公司内部需要处理更复杂的问题,公司内部实体服务器目前有两台,除了安装必要的git、svn、redmine、jenkins等内部开发管理系统外,还要部署多个客户的测试环境,应用多以虚拟机方式部署,耗费太多额外资源,导致服务器很慢。......
2019-06-26 14:36:20 1264 1
转载 JVM调优
年轻代 年老代概念 http://jefferent.iteye.com/blog/1123677JVM的堆的内存,是通过下面面两个参数控制的-Xms最小堆的大小,也就是当你的虚拟机启动后,就会分配这么大的堆内存给你-Xmx是最大堆的大小当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新的对象,那么就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,导致OutOfMemoryError错误提示。实际上,细节不止于此,.........
2022-06-16 14:41:14 284
原创 docker查找信息
docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)docker ps -a --format "table {{ .ID }}\t{{ .Image }} \t{{.CreatedAt }}\t{{.Status}}\t{{.Size }}\t{{.Names}}"删除指定镜像的容器docker rm -f $(docker ps -a.
2022-05-23 11:22:16 429
转载 JAVA性能调优
一、性能调优除了上述内存泄漏外,我们还发现CPU长期不足3%,系统吞吐量不够,针对8core×16G、64bit的Linux服务器来说,是严重的资源浪费。在CPU负载不足的同时,偶尔会有用户反映请求的时间过长,我们意识到必须对程序及JVM进行调优。从以下几个方面进行:线程池:解决用户响应时间长的问题 连接池 JVM启动参数:调整各代的内存比例和垃圾回收算法,提高吞吐量 程序算法:改进程序逻辑算法提高性能 1.Java线程池(java.util.concurrent.ThreadPo...
2022-03-18 09:55:05 610
原创 物联网协议
2.3.2.10 NB-IOT、LoRa、Zigbee、WIFI、蓝牙组网对比 - NB-IOT LoRa Zigbee WIFI 蓝牙 组网方式 现有蜂窝组网 LoRa网关 Zigbee网关 无线路由器 蓝牙Mesh的网关 网络部...
2022-03-14 14:27:59 554
原创 Mysql自带事件
CREATE EVENT IF NOT EXISTS event_delete_aiot_propON SCHEDULE EVERY 5 SECONDON COMPLETION PRESERVECOMMENT '删除AIOT属性数据'DO DELETE FROM smart_building.`aiot_properties` WHERE `timestamp` <= (SELECT `timestamp` FROM (SELECT `timestamp` FROM smart_buildin
2021-12-27 17:42:07 352
原创 并发编程(死锁)
并发三个核心问题:分工、同步、互斥死锁条件1、互斥(不可破坏)2、占有并等待(可破坏:一次申请所有资源)3、不可抢占(可破坏:申请其他资源失败时,主动释放已占有资源)4、循环等待(可破坏:按序申请资源)...
2021-12-26 20:30:42 73
转载 Kafka
消息的保存路径消息发送端发送消息到 broker 上以后,消息是如何持久化的?数据分片kafka 使用日志文件的方式来保存生产者和发送者的消息,每条消息都有一个 offset 值来表示它在分区中的偏移量。Kafka 中存储的一般都是海量的消息数据,为了避免日志文件过大,一个分片 并不是直接对应在一个磁盘上的日志文件,而是对应磁盘上的一个目录,这个目录的命名规则是<topic_name>_<partition_id>。比如创建一个名为firstTopic的topic,其中
2021-12-18 18:06:15 335
原创 Dubbo3
Dubbo3.0变化全新服务发现模型相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于应用粒度的服务发现机制, 新模型带来两方面的巨大优势:进一步提升了 Dubbo3 在大规模集群实践中的性能与稳定性。新模型可大幅提高系统资源利用率,降低 Dubbo 地址的单机内存消耗(50%),降低注册中心集群的存储与推送压力(90%), Dubbo 可支持集群规模步入百万实例层次。 打通与其他异构微服务体系的地址互发现障碍。新模型使得 Dubbo3 能实现与异构微服务体系如Spr
2021-12-16 10:05:41 674
转载 redis哨兵+集群模式详解
哨兵模式哨兵模式是redis高可用的实现方式之一使用一个或者多个哨兵(Sentinel)实例组成的系统,对redis节点进行监控,在主节点出现故障的情况下,能将从节点中的一个升级为主节点,进行故障转义,保证系统的可用性。redis哨兵模式.png哨兵们是怎么感知整个系统中的所有节点(主节点/从节点/哨兵节点)的首先主节点的信息是配置在哨兵(Sentinel)的配置文件中 哨兵节点会和配置的主节点建立起两条连接命令连接和订阅连接 哨兵会通过命令连接每10s发送一次INFO命令,通过.
2021-12-14 09:44:11 3285
原创 docker解决同个网路内连接不上问题
docker容器间可以ping同,访问服务提示No route to hostfirewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.0.0.0/8 accept' firewall-cmd --reload
2020-11-18 11:39:01 793 1
原创 Mysql事务及锁读书笔记
索引主键索引普通索引事务ACID属性,A(atomicity)原子性表示全做全不做,C(consistency)一致性表示事务执行前后不破坏数据库完整性约束,I(isolate)隔离性表示事务间不相互干扰,D(durability)持久性表示事务完成后数据保存到数据库,不会被回滚。redologundomysql采用copyonwrite策略控制并发,undolog不是log,记录事务提交前数据的历史版本,事务提交后可删除,一条记录同时存在多个事务时将产生多个历史记录,多个记录按最新到最老组织
2020-07-24 17:26:07 115
原创 java实现数学表达式计算(采用后缀表达式)
业务中需要根据业务模板自动计算业务数据,采用jsexpression计算性能很差,因此需要自己实现。直接上代码package com.longersoftware.lfcp.modules.basic.utils;import java.math.BigDecimal;import java.util.Objects;import java.util.Stack;import...
2019-12-04 11:07:10 786
原创 mysql并发问题调查
在做一个并发抢购功能,使用并发锁库存逻辑后,发现还有漏网之鱼导致超卖。调查后,发现库存数据锁定成功,但存在几笔失败,即扣完库存后被别的更新覆盖了,出现该问题主要是设计问题,锁库存字段被多方更新,通过更改,使得库存更新只能通过专门方法解决该问题。此处主要想记录解决问题的方法。1、通过日志调查知道库存锁定成功,但何时被谁覆盖未知2、通过mysql的binlog,查看出问题时间对该表的u...
2019-07-26 20:21:38 203
原创 docker搭建sftp踩坑记录
通过docker搭建了sftp,使用后不能登录。创建脚本 sftp: image: atmoz/sftp volumes: - /opt/docker-common/sftp:/home #- /opt/docker-common/sftp/users.conf:/etc/sftp/users.conf:ro environment: ...
2019-07-26 20:16:27 3291 2
转载 Thread中start()和run()的区别
Thread中start()和run()的区别start(): 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程!MyThreadTest.java代码class MyThread extends T...
2019-04-11 17:40:37 324
原创 solr学习笔记
solr作为一款开源的全文检索框架,为业务系统实现全文检索提供了索引支撑,使用solr需要搞清以下几个概念:1、实例实例 - 就像一个tomcat实例或一个jetty实例,这个术语指的是在JVM中运行的应用程序服务器。Solr主目录提供对每个这些Solr实例的引用,一个或多个核心可以配置在每个实例中运行。2、核心核心(core) - 在应用程序中运行多个索引时,可以在每个实例中...
2018-11-07 18:00:08 218
原创 docker服务器异常关机后,docker服务启动不了(xxx already exists)
docker服务器异常关机后,docker服务重新启动,启动跑错:Error response from daemon: container "74fb26b776dba83df4879eb6092944b79a5e826ec7f6ce0953201ae1d2d3825f": already exists该问题是docker服务异常终止导致状态和文件系统不一致,需要通过docker-ctl...
2018-08-08 09:58:53 8795 1
原创 docker中java tomcat等时间不对,一直显示0时区时间
使用docker的tomcat环境部署应用后,系统时间滞后8小时,通过以下启动命令后,docker的系统时间和宿主机一直了,但是java应用中产生的日志、数据库记录等时间依然是时区0的时间。docker run --name tomcat -p 8080:8080 -v /opt/web/webapps:/usr/local/tomcat/webapps -v /opt/web/logs:...
2018-07-26 09:47:22 2591 1
原创 linux下mysql自动备份及保留最新的n份
1、在linux新建文件mysqlbackup.sh/home/mysqlbackup.sh文件内容:#!/bin/bashdbNames=(db1 db2 db3)DATE=`date -d "now" +%Y%m%d_%H%M%S`cd /opt/backup/mysqlfor dbName in ${dbNames[*]}do #echo $dbName ...
2018-07-17 15:23:16 1034
原创 java swing多线程处理情况下UI假死的解决
背景&问题项目中使用java swing做了个多线程处理任务的界面,在界面上显示多线程任务的log信息,为了实时显示log信息,使用了log4j的org.apache.log4j.WriterAppender并单独开了线程。但是log信息只在多线程任务结束后才一次显示。解决方案SwingAPI是非线程安全的,也就是说不能在任意地方调用,它应该只在EDT中调用。Swing的线程安全靠事件队列...
2018-05-15 17:06:50 5878
转载 Thrift 介绍
一. 与 Thrift 的初识也许大多数人接触 Thrift 是从序列化开始的。每次搜索 “java序列化” + “方式”、“对比” 或 “性能” 等关键字时,搜索引擎总是会返回一大堆有关各种序列化方式的使用方法或者性能对比的结果给你,而其中必定少不了 Thrift,并且其性能还不错嘞,至少比那战斗力只有1的渣渣 java 原生序列化要强很多(好吧原谅我的小情绪……)。然而,我最初接触 Thri...
2018-03-12 14:43:37 575
转载 通过aop进行缓存配置
缓存可以说是无处不在,比如 PC 电脑中的内存、CPU 中的二级缓存、HTTP 协议中的缓存控制、CDN 加速技术都是使用了缓存的思想来解决性能问题。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。本文主要是讨论我们经常使用的分布式缓存 Redis 在开发过程中的相关思考。一、 如何将业务逻辑与缓存之间进行解耦?大部分情况,大家都是把缓存操作和业务逻辑之间的
2017-09-29 14:27:54 2383
转载 Netty 实现HTTP文件服务器
Netty 实现HTTP文件服务器一,需求文件服务器使用HTTP协议对外提供服务。用户通过浏览器访问文件服务器,首先对URL进行检查,若失败返回403错误;若通过校验,以链接的方式打开当前目录,每个目录或文件都以超链接的形式展现,可递归访问,并下载文件。 二,关键实现代码①文件服务器启动类需要添加的通道处理器如下:@Override
2017-09-28 12:08:37 1752
原创 项目挣值管理
挣值计算在项目成本控制中,主要采用挣值分析方法。景优软考网的老师进行了相关整理。挣值分析是一种进度和成本测量技术,可用来估计和确定变更的程序和范围,因此,也称为偏差分析法。挣值分析通过测量和计算已完成工作的预算费用、已完成工作的实际费用和计划工作的预算费用,得到有关计划实施的进度和费用偏差,而达到判断项目预算和进度计划执行情况的目的。1、 基本参数(1)计划工作量的预算
2017-09-07 11:08:34 1416
转载 Storm入门教程:构建Topology
Storm集群和Hadoop集群表面上看很类似。但是Hadoop上运行的是MapReduce jobs,而在Storm上运行的是拓扑(topology),这两者之间是非常不一样的。Topology的定义是一个Thrift结构,并且Nimbus就是一个Thrift服务, 你可以提交由任何语言创建的topology。作者:毅山,宋智来源:量子恒道官方博客|2013-08-29 14:28
2017-08-09 10:04:29 907
原创 容器技术与虚拟化技术理解
容器技术与虚拟化技术理解虚拟化技术虚拟化技术即通过hypervisor将OS运行在物理设备或是宿主OS上,此两种虚拟化为裸机虚拟化和宿主虚拟化:裸机虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”型。裸机型在虚拟化中Hypervisor直接管理调用硬件资源,不需要底层操作系统,也可以将Hypervisor看作一个很薄的操作系统。这种方案的性能处于主机虚拟化
2017-07-05 16:01:28 5559
原创 微服务架构学习总结
微服务架构学习总结微服务架构类似于SOA架构,但不同于SOA,SOA面向企业信息化整体架构,是一种系统间交互的模式定义,SOA一般会选择结合ESB进行企业整体架构搭建,以达到企业内部信息化系统互联互通的融合效果。微服务更趋向于信息化子系统构建架构定义,类似于以往的组件化模式,只不过组件局限于系统内部,微服务趋向于将各个业务组件独立为一个个子系统,各个子系统松散耦合,子系统运行在自己的进程内
2017-07-05 10:18:10 1071
转载 这是一篇最通熟易懂的Hadoop HDFS实践攻略
本文主要帮您解决一下几个问题:HDFS是用来解决什么问题?怎么解决的?如何在命令行下操作HDFS?如何使用Java API来操作HDFS?在了解基本思路和操作方法后,进一步深究HDFS具体的读写数据流程学习并实践本文教程后,可以对HDFS有比较清晰的认识,并可以进行熟练操作,为后续学习Hadoop体系打好基础。
2017-05-25 10:39:49 521
转载 NOSQL之旅---HBase
最近因为项目原因,研究了Cassandra,Hbase等几个NOSQL数据库,最终决定采用HBase。在这里,我就向大家分享一下自己对HBase的理解。在说HBase之前,我想再唠叨几句。做互联网应用的哥们儿应该都清楚,互联网应用这东西,你没办法预测你的系统什么时候会被多少人访问,你面临的用户到底有多少,说不定今天你的用户还少,明天系统用户就变多了,结果您的系统应付不过来了了,不干了,这岂
2017-05-25 09:35:21 263
转载 使用html5实现rstp视频流播放
Video Test 10: RTSP Streaming function rotateMe() { i = 0; int = setInterval( function () { video.style.WebkitTransform = 'rotate(' + (i++ %360) + 'deg
2017-02-23 16:30:08 32911 15
原创 react学习笔记
react学习笔记React 是一个用于构建用户界面的 JAVASCRIPT 库,主要用于构建UI。React 特点1.声明式设计 −React采用声明范式,可以轻松描述应用。2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。3.灵活 −React可以与已知的库或框架很好地配合。4.JSX − JSX 是 JavaScrip
2016-10-26 17:12:59 732
原创 NodeJS学习笔记
NodeJS学习笔记nodejs是运行在服务端的 JavaScript,以单线程方式运行。通过事件监听及回调函数方式实现异步请求处理。核心包含:npm,事件处理,模块化管理,回调函数,事件循环等具体教程参考:http://www.runoob.com/nodejs 使用NodeJS实现web开发需要借助以下技术:1.angularJS2.react3.webpa
2016-10-13 09:38:24 280
原创 AngularJS学习笔记
AngularJS学习笔记AngularJS是一个JavaScript 框架。它可通过 标签添加到 HTML 页面。AngularJS通过指令扩展了HTML,且通过表达式绑定数据到HTML。在数据变化或是表单变化时,能够实时同步。$scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。服务是一个函数或对象,可在你的 AngularJS
2016-10-13 09:37:24 465
原创 Linux异常关机后,Mysql启动出错ERROR 2002 (HY000)
Linux异常关机后,Mysql启动或访问时,出错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'解决办法:一处mysql的sock文件,并重启mysql#mv /var/lib/mysql/mysql.sock /var/lib
2015-08-24 10:39:03 1016
原创 github 修改tag
tag属于标记,不可以直接修改,如果要修改tag,需要现在tag上创建分支,再将分支的修改merge到tag上。1.clone 代码到本地 git clone url2.切换到tag git checkout tag_name 3.创建对应tag的分支 git checkout -b branch_name tag_name4.修改你的文件5.提交
2015-08-20 20:32:50 3551
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人